Merge branch 'master' of git://git.eclipse.org/gitroot/amp/org.eclipse.amp

Conflicts:
	org.eclipse.amp.agf.test/src/org/eclipse/amp/agf/chart/test/ResourceManagerTest.java
	org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/test/org/eclipse/amp/agf/chart/ResourceManagerTest.java
	org.eclipse.amp.agf/tests/org.eclipse.amp.agf.chart.test/src/org/eclipse/amp/agf/chart/ResourceManagerTest.java
diff --git a/amp/documentation/contents/Installation_Guide.html b/amp/documentation/contents/Installation_Guide.html
new file mode 100644
index 0000000..c8f2e61
--- /dev/null
+++ b/amp/documentation/contents/Installation_Guide.html
@@ -0,0 +1,349 @@
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter&nbsp;6.&nbsp;Installation Guide</title>
+<link href="book.css" type="text/css" rel="stylesheet">
+<meta content="DocBook XSL Stylesheets V1.76.0" name="generator">
+<link rel="home" href="index.html" title="Agent Modeling Guide">
+<link rel="up" href="index.html" title="Agent Modeling Guide">
+<link rel="prev" href="Programer_Guide.html" title="Chapter&nbsp;5.&nbsp;Programer Guide">
+<link rel="next" href="New_and_Noteworthy.html" title="Chapter&nbsp;7.&nbsp;New and Noteworthy">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="navheader">
+<table summary="Navigation header" width="100%">
+<tr>
+<th align="center" colspan="3">Chapter&nbsp;6.&nbsp;Installation Guide</th>
+</tr>
+<tr>
+<td align="left" width="20%"><a accesskey="p" href="Programer_Guide.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="New_and_Noteworthy.html">Next</a></td>
+</tr>
+</table>
+<hr>
+</div>
+<div class="chapter" title="Chapter&nbsp;6.&nbsp;Installation Guide">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title">
+<a name="Installation_Guide"></a>Chapter&nbsp;6.&nbsp;Installation Guide</h2>
+</div>
+</div>
+</div>
+<div class="toc">
+<dl>
+<dt>
+<span class="section"><a href="Installation_Guide.html#Tools">Tools</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Installation_Guide.html#Complete_IDE">Complete IDE</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Installation_Guide.html#Eclipse_and_the_Agent_Modeling_Tools">Eclipse and the Agent Modeling Tools</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Installation_Guide.html#Extensions">Extensions</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Installation_Guide.html#Ascape">Ascape</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Installation_Guide.html#Repast">Repast</a></span>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Installation_Guide.html#Models">Models</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Installation_Guide.html#Obtaining_Example_Models">Obtaining Example Models</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Installation_Guide.html#Team_Project_Sets">Team Project Sets</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Installation_Guide.html#From_Version_Control_Systems">From Version Control Systems</a></span>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+</dl>
+</div>
+<div class="section" title="Tools">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Tools"></a>Tools</h2>
+</div>
+</div>
+</div>
+<div class="section" title="Complete IDE">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Complete_IDE"></a>Complete IDE</h3>
+</div>
+</div>
+</div>
+<p>You may already have obtained a complete IDE bundled with AMP and other modeling tools. The project contributors offer open source and commercial versions of the AMP tools, which you can find at their sites. If so, you can mostly ignore this chapter unless you want to install an optional component like Repast.</p>
+</div>
+<div class="section" title="Eclipse and the Agent Modeling Tools">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Eclipse_and_the_Agent_Modeling_Tools"></a>Eclipse and the Agent Modeling Tools</h3>
+</div>
+</div>
+</div>
+<p>You can find more detailed instructions 
+					<a class="ulink" href="http://eclipse.org/amp/installing/" target="_new">here</a>, but here are the basic steps.
+				</p>
+<div class="orderedlist">
+<ol class="orderedlist" type="1">
+<li class="listitem">
+<p>Install the latest version of Eclipse from 
+							<a class="ulink" href="http://www.eclipse.org/downloads/" target="_new">here</a>. AMP requires version 3.5.x (Gallieo) or higher. Version 3.6 (Hellos) which is currently a development (beta) release works well too. We recommend the "Classic" release at the bottom of the page as the other releases have a bunch of stuff you wont' need.
+						</p>
+</li>
+<li class="listitem">
+<p>Add update sites for AMP and AMP dependencies. See the screenshot below and the 
+							<a class="ulink" href="http://help.eclipse.org/galileo/topic/org.eclipse.platform.doc.user/tasks/tasks-124.htm" target="_new">Eclipse Documentation</a>. There are different versions of the update sites, depending on whether you want to use the most stable version of the toolset or the "latest and greatest". The update sites are listed below.
+						</p>
+</li>
+<li class="listitem">
+<p>(Optional) If you install and AMP extensions, add Update Sites for them -- they're also listed below.</p>
+</li>
+<li class="listitem">
+<p>Select the features that you want to install.</p>
+</li>
+<li class="listitem">
+<p>Click the 
+							<span class="bold"><strong>Next</strong></span> button, review the licenses, and then click 
+							<span class="bold"><strong>Finish</strong></span>.
+						</p>
+</li>
+</ol>
+</div>
+<p>Agent Modeling Platform update sites:</p>
+<div class="literallayout">
+<p>Milestones&nbsp;(recommended):&nbsp;http://download.eclipse.org/amp/updates/milestones<br>
+Interim&nbsp;(newer):&nbsp;http://download.eclipse.org/amp/updates/interim<br>
+Nightly&nbsp;(bleeding&nbsp;edge):&nbsp;http://download.eclipse.org/amp/updates/nightly<br>
+
+</p>
+</div>
+<p>Update sites for AMP Extensions</p>
+<div class="literallayout">
+<p>AGF&nbsp;3D&nbsp;(recommended):&nbsp;http://lwjgl.org/update<br>
+AMF&nbsp;for&nbsp;Ascape&nbsp;(recommended&nbsp;for&nbsp;Java&nbsp;developers):&nbsp;http://ascape.sourceforge.net/eclipse<br>
+AMF&nbsp;for&nbsp;Repast&nbsp;(for&nbsp;people&nbsp;using&nbsp;Repast):&nbsp;http://mirror.anl.gov/pub/repastsimphony/site.xml&nbsp;(non&nbsp;P2)<br>
+
+</p>
+</div>
+<p>In the following screenshot, we've added the LWJGL site (not shown) as well as the Ascape site (not shown), but not the Repast site, and we're about to install the respective features. </p>
+<p>
+					
+</p>
+<div class="mediaobject">
+<img src="images/resources/AMPUpdateSite.png"></div>
+<p>
+				
+</p>
+<p>Once you've done that, select the 
+					<span class="bold"><strong>Help &gt; Help Contents</strong></span> menu, find the Agent Modeling Guide and open this overview page within that guide.
+				</p>
+</div>
+<div class="section" title="Extensions">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Extensions"></a>Extensions</h3>
+</div>
+</div>
+</div>
+<div class="section" title="Ascape">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Ascape"></a>Ascape</h4>
+</div>
+</div>
+</div>
+<p>For licensing and copyright reasons we can't provide all of the Ascape tools and manual on the Eclipse hosted Agent Modeling Project site. None of these tools are necessary to use AMP (the core Ascape support is an IP approved part of the AMP distribution) but they're highly recommended. The Ascape tools include:</p>
+<div class="orderedlist">
+<ol class="orderedlist" type="1">
+<li class="listitem">
+<p>An excellent Manual covering programming Java models in Ascape and Escape. (The API is the same.)</p>
+</li>
+<li class="listitem">
+<p>Support for creating Ascape Java projects and executing the Swing-based Java Applications. Swing deployed Ascape Java Applications can be as small as 10MB and can be deployed to the web.</p>
+</li>
+<li class="listitem">
+<p>Eclipse based IDE support for plain Java Ascape projects.</p>
+</li>
+</ol>
+</div>
+<p>The Ascape update site is at:</p>
+<div class="literallayout">
+<p>http://ascape.sourceforge.net/eclipse<br>
+
+</p>
+</div>
+<p>To install Ascape, use the update manager. Select 
+						<span class="bold"><strong>Help &gt; Install New Software..."</strong></span>, add the Ascape update site, select the Ascape category and click the 
+						<span class="bold"><strong>Finish</strong></span> button.
+					</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/resources/AscapeUpdateSite.png"></div>
+<p>
+					
+</p>
+</div>
+<div class="section" title="Repast">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Repast"></a>Repast</h4>
+</div>
+</div>
+</div>
+<p>The Repast update site is at:</p>
+<div class="literallayout">
+<p>http://mirror.anl.gov/pub/repastsimphony/site.xml<br>
+
+</p>
+</div>
+<p>More information on downloading and installing repast can be found 
+						<a class="ulink" href="http://repast.sourceforge.net/docs/development.html" target="_new">here</a>. Follow the instrucitons for "Configuration B".
+					</p>
+</div>
+</div>
+</div>
+<div class="section" title="Models">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Models"></a>Models</h2>
+</div>
+</div>
+</div>
+<div class="section" title="Obtaining Example Models">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Obtaining_Example_Models"></a>Obtaining Example Models</h3>
+</div>
+</div>
+</div>
+<p>There is a cheat-sheet available for obtaining the example models. If you would rather obtain them yourself, here is the CVS information:</p>
+<div class="section" title="Team Project Sets">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Team_Project_Sets"></a>Team Project Sets</h4>
+</div>
+</div>
+</div>
+<p>You can use the following team project sets. See 
+						<a class="ulink" href="http://help.eclipse.org/galileo/topic/org.eclipse.platform.doc.user/tasks/tasks-cvs-project-set.htm" target="_new">this document</a> for more information about using project sets.
+					</p>
+<div class="literallayout">
+<p>http://eclipse.org/amp/project-sets/ascape.psf<br>
+http://eclipse.org/amp/project-sets/escapeAMFExamples.psf<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="From Version Control Systems">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="From_Version_Control_Systems"></a>From Version Control Systems</h4>
+</div>
+</div>
+</div>
+<p>Import the CVS projects from the AMP project repository. For help, see 
+						<a class="ulink" href="http://help.eclipse.org/help32/index.jsp?topic=/org.eclipse.platform.doc.user/reference/ref-40a.htm" target="_new">this page</a>. Here are the details for CVS Access:
+					</p>
+<p>CVS Repository:</p>
+<div class="literallayout">
+<p>Connection&nbsp;type:	pserver<br>
+User:	anonymous<br>
+Password:	[none]<br>
+Host:	dev.eclipse.org<br>
+Path:	/cvsroot/modeling<br>
+Module:	/org.eclipse.amp<br>
+
+</p>
+</div>
+<p>AMF Escape Models:</p>
+<div class="literallayout">
+<p>org.eclipse.amp/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape&nbsp;<br>
+
+</p>
+</div>
+<p>AMF Ascape and Repast Models:</p>
+<div class="literallayout">
+<p>org.eclipse.amp/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.ascape&nbsp;<br>
+org.eclipse.amp/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.repast&nbsp;<br>
+
+</p>
+</div>
+<p>The Ascape example projects are available at the Sourceforge SVN server. You can get them at the following locations. See the 
+						<a class="ulink" href="/wiki/http://www.eclipse.org/subversive/documentation/teamSupport/find_check_wiz.php_Subversive_User_Guide" target="_new">http://www.eclipse.org/subversive/documentation/teamSupport/find_check_wiz.php Subversive User Guide</a> for more information about using SVN. (You'll need to install Subversion if you don't already have it.)
+					</p>
+<p>Escape Java Models:</p>
+<div class="literallayout">
+<p>https://ascape.svn.sourceforge.net/svnroot/ascape/org.ascape.models.brook<br>
+https://ascape.svn.sourceforge.net/svnroot/ascape/org.ascape.models.examples<br>
+
+</p>
+</div>
+<p>Ascape (Swing-based) Java Models:</p>
+<div class="literallayout">
+<p>https://ascape.svn.sourceforge.net/svnroot/ascape/org.ascape.escape.models.examples<br>
+https://ascape.svn.sourceforge.net/svnroot/ascape/org.ascape.escape.models.brook<br>
+
+</p>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="navfooter">
+<hr>
+<table summary="Navigation footer" width="100%">
+<tr>
+<td align="left" width="40%"><a accesskey="p" href="Programer_Guide.html">Prev</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="New_and_Noteworthy.html">Next</a></td>
+</tr>
+<tr>
+<td valign="top" align="left" width="40%">Chapter&nbsp;5.&nbsp;Programer Guide&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;Chapter&nbsp;7.&nbsp;New and Noteworthy</td>
+</tr>
+</table>
+</div>
+</body>
+</html>
diff --git a/amp/documentation/contents/Introduction.html b/amp/documentation/contents/Introduction.html
new file mode 100644
index 0000000..a4cb610
--- /dev/null
+++ b/amp/documentation/contents/Introduction.html
@@ -0,0 +1,381 @@
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter&nbsp;1.&nbsp;Introduction</title>
+<link href="book.css" type="text/css" rel="stylesheet">
+<meta content="DocBook XSL Stylesheets V1.76.0" name="generator">
+<link rel="home" href="index.html" title="Agent Modeling Guide">
+<link rel="up" href="index.html" title="Agent Modeling Guide">
+<link rel="prev" href="index.html" title="Agent Modeling Guide">
+<link rel="next" href="Modeler_Guide.html" title="Chapter&nbsp;2.&nbsp;Modeler Guide">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="navheader">
+<table summary="Navigation header" width="100%">
+<tr>
+<th align="center" colspan="3">Chapter&nbsp;1.&nbsp;Introduction</th>
+</tr>
+<tr>
+<td align="left" width="20%"><a accesskey="p" href="index.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="Modeler_Guide.html">Next</a></td>
+</tr>
+</table>
+<hr>
+</div>
+<div class="chapter" title="Chapter&nbsp;1.&nbsp;Introduction">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title">
+<a name="Introduction"></a>Chapter&nbsp;1.&nbsp;Introduction</h2>
+</div>
+</div>
+</div>
+<div class="toc">
+<dl>
+<dt>
+<span class="section"><a href="Introduction.html#Quick_Start">Quick Start</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Introduction.html#Install">Install</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Introduction.html#Welcome.21">Welcome!</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Introduction.html#Cheat.21">Cheat!</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Introduction.html#Follow_the_Tutorial">Follow the Tutorial</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Introduction.html#Follow_your_Interest">Follow your Interest</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Introduction.html#ABM_Researchers">ABM Researchers</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Introduction.html#ABM_Modelers">ABM Modelers</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Introduction.html#ABM_Java_Developers">ABM Java Developers</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Introduction.html#Eclipse_Plugin_Developers">Eclipse Plugin Developers</a></span>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Introduction.html#Agent-Based_Modeling">Agent-Based Modeling</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Introduction.html#Other_Domains">Other Domains</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Introduction.html#The_Agent_Modeling_Platform_.28AMP.29">The Agent Modeling Platform (AMP)</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Introduction.html#Agent_Modeling_Framework_.28AMF.29">Agent Modeling Framework (AMF)</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Introduction.html#Agent_Execution_Framework_.28AXF.29">Agent Execution Framework (AXF)</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Introduction.html#Agent_Graphics_Framework_.28AGF.29">Agent Graphics Framework (AGF)</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Introduction.html#Escape">Escape</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Introduction.html#Credits">Credits</a></span>
+</dt>
+</dl>
+</div>
+<p>In this manual we provide an in-depth understanding of what goes into an Agent Model, how you can use the Agent Modeling Framework and related tools to design one and present tutorials to get you started. But before going into details, let's take a quick overview at what agent-based modeling is is and how the Agent Modeling Framework can help you to develop models for ABM or other problem domains.</p>
+<p>We hope you enjoy using the tool, and we look forward to your comments and feedback and most of all participation!</p>
+<div class="section" title="Quick Start">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Quick_Start"></a>Quick Start</h2>
+</div>
+</div>
+</div>
+<p>If you're the kind of person who likes to jump right in, here are the basics.</p>
+<div class="section" title="Install">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Install"></a>Install</h3>
+</div>
+</div>
+</div>
+<p>If you've already installed a complete Agent Modeling IDE, such as one offered by the project contributors, or you have already installed AMP from the Eclipse update sites, you can obviously ignore this step. Otherwise, refer to the Installation Guide at the end of this manual.</p>
+</div>
+<div class="section" title="Welcome!">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Welcome.21"></a>Welcome!</h3>
+</div>
+</div>
+</div>
+<p>When you first open the IDE (or you first install the tools form an update site), you will see a welcome screen. If the screen isn't showing, select the 
+					<span class="bold"><strong>Help &gt; Welcome</strong></span> menu. Click on the "Overview", "Samples" or "Tutorials" buttons to begin your exploration.
+				</p>
+</div>
+<div class="section" title="Cheat!">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Cheat.21"></a>Cheat!</h3>
+</div>
+</div>
+</div>
+<p>The Agent Modeling tools come with a number of "Cheat Sheets" to help get you started. You can access them by selecting 
+					<span class="bold"><strong>Help &gt; Cheat Sheets...</strong></span>. Then under the "Agent Modeling" category, select a cheat sheet, such as "Load Sample Projects".
+				</p>
+</div>
+<div class="section" title="Follow the Tutorial">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Follow_the_Tutorial"></a>Follow the Tutorial</h3>
+</div>
+</div>
+</div>
+<p>The tools also come with extensive tutorials. See the "Tutorials" section for more help on that.</p>
+</div>
+<div class="section" title="Follow your Interest">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Follow_your_Interest"></a>Follow your Interest</h3>
+</div>
+</div>
+</div>
+<p>AMP has many potential facets and use cases. Check out the following sections of the manual for more information about..</p>
+<div class="section" title="ABM Researchers">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="ABM_Researchers"></a>ABM Researchers</h4>
+</div>
+</div>
+</div>
+<p>Run an example model using the "Run an Example Model" cheat sheet.</p>
+</div>
+<div class="section" title="ABM Modelers">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="ABM_Modelers"></a>ABM Modelers</h4>
+</div>
+</div>
+</div>
+<p>Create Agent-Based models using simple visual tools and deploy them to a number of popular ABM platforms, including Escape. Follow the tutorial section of the Modeler's guide.</p>
+</div>
+<div class="section" title="ABM Java Developers">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="ABM_Java_Developers"></a>ABM Java Developers</h4>
+</div>
+</div>
+</div>
+<p>Write "Plain Old Java" models within a full-featured agent-based modeling framework. Read Programmers Guide and then try the "Create an Escape Java Model" cheat sheet.</p>
+</div>
+<div class="section" title="Eclipse Plugin Developers">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Eclipse_Plugin_Developers"></a>Eclipse Plugin Developers</h4>
+</div>
+</div>
+</div>
+<p>AXF and AGF provide a number of features based around Eclipse technologies such as GEF, GEF3D, BIRT Charts and Zest. For example, AGF supports dynamic visualization of objects in space, and AXF supports managed UI and headless execution for models of any kind. There isn't currently any general documentation for these features, but we encourage you to look at the APIs and at Escape's implementation of them. They're straightforward and can be useful for a variety of general science platform needs.</p>
+</div>
+</div>
+</div>
+<div class="section" title="Agent-Based Modeling">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Agent-Based_Modeling"></a>Agent-Based Modeling</h2>
+</div>
+</div>
+</div>
+<p>The primary focus of the Agent Modeling Platform tools is "Agent-Based Modeling" (ABM). ABM is an innovative technique used to explore complex phenomenon in many domains, including economics, social sciences, biomedicine, ecology and business operations. ABMs share characteristics with object models, but are:</p>
+<div class="variablelist">
+<dl>
+<dt>
+<span class="term">Spatial</span>
+</dt>
+<dd>
+<p>Models have explicit environment(s) in which agents interact. (An environment need not be a physical landscape; other examples of spatial relationships include social networks or positions within a logic system.)</p>
+</dd>
+<dt>
+<span class="term">Temporal</span>
+</dt>
+<dd>
+<p>Models change over discrete units of time.</p>
+</dd>
+<dt>
+<span class="term">Autonomous</span>
+</dt>
+<dd>
+<p>Agent behaviors are activated independently from other object requests.</p>
+</dd>
+<dt>
+<span class="term">Heterogeneous</span>
+</dt>
+<dd>
+<p>Agents may share behavior definitions but have apparent and distinct states and behaviors.</p>
+</dd>
+<dt>
+<span class="term">Collective</span>
+</dt>
+<dd>
+<p>Models contain large communities of agents which exhibit collaborative and competitive behaviors.</p>
+</dd>
+<dt>
+<span class="term">Emergent</span>
+</dt>
+<dd>
+<p>Agents have collective macro-behaviors that are non-obvious from agent micro-specifications.</p>
+</dd>
+</dl>
+</div>
+<p>Existing scientific models are very good at representing relatively simple systems, but generally speaking aren't very good at representing complex systems. The world is full of complex systems, and our misunderstanding of these systems has prevented us from addressing many of the key challenges facing the world, including the global financial crisis and climate change -- in fact once could argue that our misunderstanding of these systems has strongly contributed to these crises.</p>
+<p>Agent-Based Models (ABMs) seek to represent important real-world dynamics by designing communities of software agents that mimic real entities. Rather than make simplifying assumptions about such systems and then representing them in equation form or as off the shelf algorithmic constructs, the ABM researcher aims to identify key agent state, interaction spaces, and behaviors. Agents are then "let loose" on our computers and we explore what happens next. The computational horsepower exists today to simulate large numbers (e.g. &gt;&gt;10) of interacting, adaptive and autonomous agents but often desktop computers are all we need to explore significant domains. ABMs have been designed to represent all kinds of important natural systems, at scales reaching from cellular mechanics to international trade and are being used to solve truly hard problems in government, business, and academia. ABMs are not a solution to every problem, but they can help us to appreciate and gain unique insight into many systems, and often they can help us to come up with better practical decisions than we might using classic approaches.</p>
+</div>
+<div class="section" title="Other Domains">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Other_Domains"></a>Other Domains</h2>
+</div>
+</div>
+</div>
+<p>Many kinds of objects share characteristics of ABM agents -- after all, software agents are used in many other contexts. The Agent Modeling Framework meta-modeling support is potentially suitable (or extendible) for a number of approaches outside of ABM; for example business rules, object interactions, systems dynamics models and traditional discrete event models. Similarly, AMP execution and graphic support can be used for modeling natural systems but could also be used to manage other software agents -- for example independent reasoning tasks or dynamic visualization support.</p>
+</div>
+<div class="section" title="The Agent Modeling Platform (AMP)">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="The_Agent_Modeling_Platform_.28AMP.29"></a>The Agent Modeling Platform (AMP)</h2>
+</div>
+</div>
+</div>
+<p>The Eclipse Agent Modeling Project (Incubation) or "AMP" provides the core support for both open source and commercial modeling tools. AMP in turn is built upon Elipse, the most powerful, well-supported and popular Integrated Development Platform (IDE) available anywhere.</p>
+<p>AMP provides extensible frameworks and exemplary tools for representing, editing, generating, executing and visualizing ABMs and any other domain requiring spatial, behavioral and functional features. AMP has two main themes that complement but don't depend on one another, modeling of agent systems (AMF) and execution and exploration of those systems (AXF, AGF and Escape).</p>
+<p>The overall AMP architecture and project dependencies are summarized in the architectural diagram below:</p>
+<p>
+				
+</p>
+<div class="mediaobject">
+<img src="images/AMPArchitectureDiagram.jpg"></div>
+<p>
+			
+</p>
+<div class="section" title="Agent Modeling Framework (AMF)">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Agent_Modeling_Framework_.28AMF.29"></a>Agent Modeling Framework (AMF)</h3>
+</div>
+</div>
+</div>
+<p>AMF provides an ABM meta-model representation, editor, generator and development environment. The AMF Acore meta-model is similar to EMF Ecore and defined in Ecore, but provides high-level support for complex agents.AMF generates complete executable models for Escape, Ascape and Repast Simphony, as well as Java Skeletons and Interfaces, JUnit test cases and documentation and is easily extensible to support additional targets. For more on AMF, see the Modeler Guide.</p>
+</div>
+<div class="section" title="Agent Execution Framework (AXF)">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Agent_Execution_Framework_.28AXF.29"></a>Agent Execution Framework (AXF)</h3>
+</div>
+</div>
+</div>
+<p>The execution framework provides services and UI for model management, execution, and views. Arbitrary toolkits can easily integrate with Eclipse and AXF by implementing pluggable providers like engines, agents and view parts. AXF is not just for ABM -- anyone who needs support for executing, managing and visualizing collections of objects may find it useful. AXF user tools are covered extensively in the User Guide, and the forthcoming Platform Developers Guide will provide information about integrating AXF in your own tools.</p>
+</div>
+<div class="section" title="Agent Graphics Framework (AGF)">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Agent_Graphics_Framework_.28AGF.29"></a>Agent Graphics Framework (AGF)</h3>
+</div>
+</div>
+</div>
+<p>The graphics framework extends GEF, GEF3D, Zest, and the BIRT charting engine to support real-time visualization of and interaction with agent models. AGF currently provides support for 2D, 2 1/2 D. and graph structures, and will be extended to 3-D, GIS and others. As with other AMP components, the AGF design focus is to provide an extensible infrastructure so that platform adopters can easily create their own view and editor parts. AGF user tools are covered extensively in the User Guide, and the forthcoming Platform Developers Guide will provide information about integrating and extending AGF in your own tools.</p>
+</div>
+<div class="section" title="Escape">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Escape"></a>Escape</h3>
+</div>
+</div>
+</div>
+<p>Escape is an exemplar ABM toolset. It's based on Ascape, which has been in use for more than 10 years. The core API is very stable, and that should give users a way to explore the features of AMP without concerns about keeping in synch with the rapidly evolving AXF /AGF API. It allows modelers to code in Java and/or generate models with AMF and then execute those models within the same development environment. Escape is the primary target for most of the models in this guide. Those users interested in writing code directly to the Escape API can refer to the Programmer Guide.</p>
+</div>
+</div>
+<div class="section" title="Credits">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Credits"></a>Credits</h2>
+</div>
+</div>
+</div>
+<p>Miles Parker is a consultant and software developer with over ten years of experience in the agent-based modeling field and twenty years developing object-oriented tools and frameworks and is the architect and project lead for the Eclipse Agent Modeling Platform (Incubation).</p>
+<p>Metascape, LLC is the primary contributor to AMP and provides Agent-Based Modeling tools, including sophisticated tools based on the AMF platform, and comprehensive consulting services. For more information on Metascape products and services visit 
+				<a class="ulink" href="http://metascapeabm.com" target="_new">http://metascapeabm.com</a>.
+			</p>
+<p>The AMF meta-model started life in 2007 as 
+				<a class="ulink" href="/wiki/http://www.agent2005.anl.gov/2006procpdf/Parker_Agent_2006.pdf" target="_new">"score"</a>, a component of the Repast Simphony environment and was contributed under the EPL by Argonne National Labs. AMF was further developed by Metascape starting in 2007 as the MetaABM project, and it along with what becase AMP where was contributed by Metascape to Eclipse in 2009. Metascape continues to be the primary sponsor and contributor to the project.
+			</p>
+<p>The AMP logo was inspired by the 
+				<a class="ulink" href="/wiki/http://swarm.org_Swarm_logo" target="_new">http://swarm.org Swarm logo</a> and is used with their kind permission.
+			</p>
+</div>
+</div>
+<div class="navfooter">
+<hr>
+<table summary="Navigation footer" width="100%">
+<tr>
+<td align="left" width="40%"><a accesskey="p" href="index.html">Prev</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="Modeler_Guide.html">Next</a></td>
+</tr>
+<tr>
+<td valign="top" align="left" width="40%">Agent Modeling Guide&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;Chapter&nbsp;2.&nbsp;Modeler Guide</td>
+</tr>
+</table>
+</div>
+</body>
+</html>
diff --git a/amp/documentation/contents/Modeler_Guide.html b/amp/documentation/contents/Modeler_Guide.html
new file mode 100644
index 0000000..874f1f3
--- /dev/null
+++ b/amp/documentation/contents/Modeler_Guide.html
@@ -0,0 +1,4237 @@
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter&nbsp;2.&nbsp;Modeler Guide</title>
+<link href="book.css" type="text/css" rel="stylesheet">
+<meta content="DocBook XSL Stylesheets V1.76.0" name="generator">
+<link rel="home" href="index.html" title="Agent Modeling Guide">
+<link rel="up" href="index.html" title="Agent Modeling Guide">
+<link rel="prev" href="Introduction.html" title="Chapter&nbsp;1.&nbsp;Introduction">
+<link rel="next" href="User_Guide.html" title="Chapter&nbsp;3.&nbsp;User Guide">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="navheader">
+<table summary="Navigation header" width="100%">
+<tr>
+<th align="center" colspan="3">Chapter&nbsp;2.&nbsp;Modeler Guide</th>
+</tr>
+<tr>
+<td align="left" width="20%"><a accesskey="p" href="Introduction.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="User_Guide.html">Next</a></td>
+</tr>
+</table>
+<hr>
+</div>
+<div class="chapter" title="Chapter&nbsp;2.&nbsp;Modeler Guide">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title">
+<a name="Modeler_Guide"></a>Chapter&nbsp;2.&nbsp;Modeler Guide</h2>
+</div>
+</div>
+</div>
+<div class="toc">
+<dl>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Overview">Overview</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Agent_Modeling_Framework">Agent Modeling Framework</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Structure">Structure</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Overview_2">Overview</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Details">Details</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#General">General</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Agents">Agents</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Attributes_2">Attributes</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Spaces_2">Spaces</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Reference">Reference</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Diagrams">Diagrams</a></span>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Actions_2">Actions</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Overview_3">Overview</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Concepts">Concepts</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Kinds_of_Actions">Kinds of Actions</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Flow">Flow</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Selections">Selections</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Weaving">Weaving</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Details_3">Details</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Selections_2">Selections</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Root_Actions">Root Actions</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Builders">Builders</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Commands">Commands</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Other">Other</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Query_and_Evaluation_Inputs">Query and Evaluation Inputs</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Reference_2">Reference</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Diagrams_2">Diagrams</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Example">Example</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Functions">Functions</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Overview_4">Overview</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Details_5">Details</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#General_Functions">General Functions</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Logical_Operators">Logical Operators</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Numeric_Operators">Numeric Operators</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Spatial">Spatial</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Random">Random</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Graphic">Graphic</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Time">Time</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Math">Math</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#List">List</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Distribution">Distribution</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Examples">Examples</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Spatial_2">Spatial</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Graphic_2">Graphic</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Distribution_2">Distribution</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Reference_3">Reference</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Diagrams_3">Diagrams</a></span>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+</dl>
+</div>
+<div class="section" title="Overview">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Overview"></a>Overview</h2>
+</div>
+</div>
+</div>
+<p>In this section we present the design of the Agent Modeling Framework and explain how it can be used to create models that are transparent, composable and adaptable. Fundamentally, an agent-based model, or "ABM", is composed of five pieces: Agents and Context Agents, Attributes, Spaces, and Actions. The first three refer to structural components, whereas Actions define behavior. Agent models also have styles, which are a special kind of Action used to determine how to portray an agent in a visualization. Finally Actions make use of Functions. We'll describe of these components in a separate section.</p>
+<div class="section" title="Agent Modeling Framework">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Agent_Modeling_Framework"></a>Agent Modeling Framework</h3>
+</div>
+</div>
+</div>
+<p>The Eclipse Platform provides many unique features that make it ideal for an ABM platform. AMF provides easy to use and powerful tools and techniques for designing Agent-Based Models, including a common representation, editors, generators and development environment.</p>
+<p>The Agent Modeling Framework (AMF) provides high level representations for common ABM constructs, and introduces novel ways of representing agents and their behaviors. As detailed in other documentation sections, the Agent Modeling Framework and related tools have been designed to allow researchers to explore complex models in an intuitive way. One of our major design goals has been to create tools that non-programmers can use to create sophisticated models. It has been our experience that using Model-Driven Software Development (MDSD) techniques increase productivity for all developers regardless of skill level. </p>
+<p>The foundation of the Agent Modeling Framework is "Acore". The current version uses an interim version of Acore called "MetaABM". We refer to the AMF models as "meta-models" because they are used to define 
+					<span class="italic">how</span> Agent-Based Models are themselves modeled. For those familiar with Eclipse Model-Driven Development tools, AMF is analogous to EMF but is targeted toward the design and execution of models composed of agents. Acore and MetaABM are defined in Ecore but provide a more direct and high-level ABM representation of agents, including spatial, behavioral and functional features sufficient to generate complete executable models for the target platforms. AMF is fully integrated with the Eclipse IDE platform, but Acore models themselves need have no dependencies on any particular technology beyond XML/XSD.
+				</p>
+<p>Models designed in AMF are transparently converted to Java code for leading Agent-Based Modeling tools, such as the Escape tools which are included in AMP and allow direct execution of models within the AMP environment, and Repast Simphony, another popular Java based ABM tool. These tools create Java code that can then be compiled, executed and event modified in these environments just as with any other Java program. AMF's generative capability is designed to be pluggable and modular so that other developers can create AMF generators for their own tools. In fact, targets can be designed that have no inherent dependencies on Eclipse or even on a traditional platform.</p>
+<p>The Acore / MetaABM meta-model is made up of three main packages. This is all based on MetaABM, and while names and important details will change for Acore, the core design should be quite similar.</p>
+</div>
+</div>
+<div class="section" title="Structure">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Structure"></a>Structure</h2>
+</div>
+</div>
+</div>
+<div class="section" title="Overview">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Overview_2"></a>Overview</h3>
+</div>
+</div>
+</div>
+<p>The basic structure of an agent-based model can be quite simple. While there are many subtle complexities  -- beyond the scope of this manual -- we can construct most models following some straightforward and elegant design principles. And in fact, one of the main goals of the Agent Modeling Framework is to provide a consistent framework that can support using those principles to support the creation of models that can be easily understood, shared, and that can be used interchangeably as components in other models.</p>
+<p>Unlike the approach of a traditional Object Oriented environment, the dominant organizing principal for agents within AMF follows a compositional hierarchical model, not an inheritance model. (Inheritance-like behavior will be supported in forthcoming versions of Acore, but in a more sophisticated, flexible and dynamic way than is supported by traditional programming languages such as Java.) Contexts -- also referred to as "Swarms" or "Scapes", are simply Agents that are capable of containing other agents. With this basic construct -- known as a Composition in design pattern language -- agents are able to contain other agents.</p>
+</div>
+<div class="section" title="Details">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Details"></a>Details</h3>
+</div>
+</div>
+</div>
+<div class="section" title="General">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="General"></a>General</h4>
+</div>
+</div>
+</div>
+<p>Everything represented in an Acore model needs to be referred to in some way. Just as software classes have names, Acore provides a way to label and describe every entity, but in a richer and more maintainable way. All entities in Acore -- including Actions and Functions which we describe in the next two sections -- have a number of shared values.</p>
+<div class="section" title="Named Entities">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Named_Entities"></a>Named Entities</h5>
+</div>
+</div>
+</div>
+<div class="section" title="Label">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Label"></a>Label</h6>
+</div>
+</div>
+</div>
+<p>A reasonably short, human readable name for the agent. For example, "Timber Wolf", "Exchange Trader" or "Movement Probability". These should be defined so that they fit in well with auto-generated documentation. Note that Labels must be unique throughout the model. (This may change in future releases for Action names.) If you try to provide an object with a name that is already in use, "Copy" will be appended to the end of the name. </p>
+</div>
+<div class="section" title="ID">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="ID"></a>ID</h6>
+</div>
+</div>
+</div>
+<p>An ID is an identifier that can be used to represent the object in a software program. This means that it must follow certain rules such as no-spaces or non alpha-numeric characters. The editing tools will help make sure that this value is legal. Note that when you enter a label, a legal ID is automatically created for you! Usually you won't need to change this, but you might if for example you want the value to match up with some database or other external representation. So reasonable values here might be "timberWolf" or perhaps "MVMNT_PRB" if say you're trying to match up to some old statistics records you have. (Note that currently IDs by default use "camel case", i.e. "thisIsAnExampleOfCamelCase" to match with Java variable naming conventions, but this is likely to change.) Like labels, IDs need to be unique across the model, and the editing tools will assign a different id if you attempt to give two entities the same id.</p>
+<p>And most entities also define:</p>
+</div>
+<div class="section" title="Description">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Description"></a>Description</h6>
+</div>
+</div>
+</div>
+<p>A complete textual description of the object. Don't overlook this -- it is the most important part of your model. The description will show up in your auto-generated html documentation, software documentation and even in your running model. You should include enough information that model users will understand what the entity is for and what it does without referring elsewhere. This is also where any attributions and references should go. You can put html tags in here -- such as href's to external papers, but keep those to a minimum as they won't be rendered as html in all contexts.</p>
+</div>
+<div class="section" title="Plural Label">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Plural_Label"></a>Plural Label</h6>
+</div>
+</div>
+</div>
+<p>The plural representation of an entity. This can be a surprisingly useful thing to have in generated documentation and software code, so it's worth maintaining. The editor will automatically add an "s" at the end of the label you've entered above, but you change it to whatever is appropriate. For example "Person", or "Timber Wolves".</p>
+</div>
+</div>
+</div>
+<div class="section" title="Agents">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Agents"></a>Agents</h4>
+</div>
+</div>
+</div>
+<div class="section" title="Simple Agents">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Simple_Agents"></a>Simple Agents</h5>
+</div>
+</div>
+</div>
+<p>An Agent is simply a software object that has autonomous behavior and (generally speaking) exists within some set of spaces. By autonomous, we mean that agents make the choice about when and how to execute a behavior, as opposed to have that controlled from "above", so to speak. Like any software objects, agents have attributes (fields) and actions (methods) associated with them.</p>
+<div class="section" title="Attributes">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Attributes"></a>Attributes</h6>
+</div>
+</div>
+</div>
+<p>As described in the attribute sections above.</p>
+</div>
+<div class="section" title="Actions">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Actions"></a>Actions</h6>
+</div>
+</div>
+</div>
+<p>Described in the "Actions" section.</p>
+</div>
+<div class="section" title="Styles">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Styles"></a>Styles</h6>
+</div>
+</div>
+</div>
+<p>Special actions that are used to define how to draw an agent graphically as also described in the "Actions" section and detailed in the "Functions" section.</p>
+</div>
+</div>
+<div class="section" title="Context Agents (Contexts)">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Context_Agents_.28Contexts.29"></a>Context Agents (Contexts)</h5>
+</div>
+</div>
+</div>
+<p>As detailed above, agents also form the basic structural component of an agent-based model. To get an idea for how this works, have a look at the "EpidemicRegional.metaabm" model. Note that in future releases, we will probably refer to Contexts as "Scapes".</p>
+<div class="section" title="Agents">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Agents_2"></a>Agents</h6>
+</div>
+</div>
+</div>
+<p>The agents that are contained within this context. For example, a context representing a city might contain an Individual Agent for defining all individuals in the model, and a Vehicle agent defining all vehicles. Note that when we refer to an agent in this context, we mean a general type or class of agent, not the agent itself.</p>
+</div>
+<div class="section" title="Spaces">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Spaces"></a>Spaces</h6>
+</div>
+</div>
+</div>
+<p>The set of all spaces contained or subsumed by the agent. For example, a context representing a city might contain a geographical space and a transportation network space.</p>
+</div>
+</div>
+</div>
+<div class="section" title="Attributes">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Attributes_2"></a>Attributes</h4>
+</div>
+</div>
+</div>
+<p>Agents need some way to represent their internal state. For example, an agent in an economic model might have a wealth attribute, and an agent in an ecology model might have a quantity of food and a particular vision range. These states are represented as attributes just as all software objects do. In an agent model, we keep richer information about these attributes and generally represent them at a higher level. For example, rather than specify that a real value is a "double", a "float" or a "big number", we represent them as "Reals" so that they can be implemented and tested in different environments. This might allow us for instance to ensure that a model's behavior is not dependent on a particular machine implementation of floating point arithmetic. Also, note that attributes only represent so-called "primitive" values -- that is, actual measurable features of a particular agent but not an agent's relationship to other agents or objects. See the discussion about networks for more on this key topic.</p>
+<p>Here are the basic types of attributes available in Acore models:</p>
+<div class="section" title="Basic Attributes">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Basic_Attributes"></a>Basic Attributes</h5>
+</div>
+</div>
+</div>
+<p>Attributes are single values that a given agent contains. For example, an agent might have an "Age" attribute. In this section we go over the values you can set for the attributes. For those with a tecnical bent, note that we are technically describing the meta-attributes for the meta-class "SAttribute". But it is far too confusing to refer to the attributes of attributes! So we'll just refer to the attributes that any of our model components as "values".</p>
+<div class="section" title="Type">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Type"></a>Type</h6>
+</div>
+</div>
+</div>
+<p>These can be anyone of the following: </p>
+<div class="variablelist">
+<dl>
+<dt>
+<span class="term">
+										<span class="bold"><strong>Boolean</strong></span>
+									</span>
+</dt>
+<dd>
+<p>A value that is simply true or false. Note that unless this value really is a simple binary value, you should consider using state instead. (See details below.) For example, rather than representing gender as a 'Female' boolean value, define a 'Gender' state with values 'Male' and "Female'. Generated artifacts and documentation will be much clearer, and you'll be able to easily modify the model later if for example you discover that there are more than two potential gender categories that are relevant to your model.</p>
+</dd>
+<dt>
+<span class="term">
+										<span class="bold"><strong>Integer</strong></span>
+									</span>
+</dt>
+<dd>
+<p>A discrete whole number value, such as "100", "-1", "10029920". It's generally a good idea to represent any value that can never have a decimal value as an integer.</p>
+</dd>
+<dt>
+<span class="term">
+										<span class="bold"><strong>Real</strong></span>
+									</span>
+</dt>
+<dd>
+<p>A continuous number value. While these are typically represented in software as floating point numbers, they can conceivably represent numbers at any arbitrary precision and in any scheme. Note that while technically speaking we should be representing irrational numbers, this is not currently supported for default values and users should simply use the closest decimal approximation.</p>
+</dd>
+<dt>
+<span class="term">
+										<span class="bold"><strong>Symbol</strong></span>
+									</span>
+</dt>
+<dd>
+<p>A string representing some state. More precisely, a computationally arbitrary value with contextual meaning. This could be any kind of identifier. For example, you might use it to store some kind of input coding from data that is then converted into an object state. Or it could simply be an agent's name. But theoretically (though this is not currently supported) one could imagine a symbol using an idiogram, an icon or even a sound that identifies or represents the agent in question.</p>
+</dd>
+</dl>
+</div>
+<p>(Undefined and Numeric types should not be used within a well-defined model.)</p>
+</div>
+<div class="section" title="Default Value">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Default_Value"></a>Default Value</h6>
+</div>
+</div>
+</div>
+<p>The value that should be assigned to the attribute at the beginning of any model run. The attribute may of course be assigned a different value in an Initialize rule, but its a good idea to specify one here. It's OK to leave it blank, in which case a sensible 'empty' value will be assigned, i.e. false for Boolean, 0 for Integers and Reals, and an empty string for Symbol.</p>
+</div>
+<div class="section" title="Gather Data">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Gather_Data"></a>Gather Data</h6>
+</div>
+</div>
+</div>
+<p>Here you can specify whether executing models should collect aggregate values for the data. For example, if you select this value as true for a 'Wealth' attribute, Escape will automatically keep track of minimum, maximum, average, sum and optionally standard deviation and variance across all agents for each model execution period. All of these statistics will then be selectable with a mouse click to appear in your model charts at runtime.</p>
+</div>
+<div class="section" title="Immutable">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Immutable"></a>Immutable</h6>
+</div>
+</div>
+</div>
+<p>This value indicates whether you expect the model value to change. If you know that it won't or shouldn't, this value should be true.</p>
+</div>
+<div class="section" title="Derived">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Derived"></a>Derived</h6>
+</div>
+</div>
+</div>
+<p>A derived attribute is one whose value is detemrined solely based on other agent attributes. A derived value is always associated with a Derive root action which is created automatically by the editor. See the documentation on the Derive action for more details. An attribute cannot be both derived and immutable.</p>
+</div>
+<div class="section" title="Units">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Units"></a>Units</h6>
+</div>
+</div>
+</div>
+<p>Specifies what the attribute is actually measuring. For example, if you're defining an attribute for "Wealth" in the context of a model of the world economy, you might specify "USD". If you're defining "Age", you might specify "Years", for "Mass" "Kg". Like description, this value is often overlooked, but can be critically important to allowing yourself and others to understand and correctly calibrate a model. Note that this will also allow you to simplify variable names -- instead of using "Age in Years", you can simply specify "Age" and the appropriate unit. It may be obvious to you that your model is concerned with age in years, but a user who needs to specify a different granularity will be grateful for more clarity.</p>
+</div>
+</div>
+<div class="section" title="Arrays">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Arrays"></a>Arrays</h5>
+</div>
+</div>
+</div>
+<p>Arrays are simply attributes with zero or more entries. For example, you might have an array of three Real numbers representing the Red Green and Blue color components for an object. Note that if you find yourself defining very complex sets of arrays, its likely that what you really want to define is a new agent with attributes for each array. In addition to what is defined above, arrays specify:</p>
+<div class="section" title="Size">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Size"></a>Size</h6>
+</div>
+</div>
+</div>
+<p>The number of values that the array attribute will contain.</p>
+</div>
+</div>
+<div class="section" title="States">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="States"></a>States</h5>
+</div>
+</div>
+</div>
+<p>States represent any agent quality that may take on one of a number of well defined values. For example, an "Ice Cream Consumer" Agent might contain a state of "Ice Cream Preference" with options of "Chocolate", "Vanilla" and "Ginger".</p>
+<div class="section" title="State Options">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="State_Options"></a>State Options</h6>
+</div>
+</div>
+</div>
+<p>Create new options for states by adding them to the state node. States are simple described items. Don't forget to provide a description! States also have</p>
+</div>
+<div class="section" title="Default Option">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Default_Option"></a>Default Option</h6>
+</div>
+</div>
+</div>
+<p>unlike for regular attributes, this option is not optional! Simply pick a state option to be assigned that the agent will take if no other option has been assigned.</p>
+</div>
+</div>
+</div>
+<div class="section" title="Spaces">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Spaces_2"></a>Spaces</h4>
+</div>
+</div>
+</div>
+<p>All contexts can contain spaces. Spaces provide an environment in which agents can have a physical or notional location and upon which they can interact with one another and their environment. Agents can exist in more than one space at a time, and a given agent need not exist in every space. (Note that this is different from the Repast Simphony notion of projections, though the two representational approaches are generally compatible.) Agents need not represent explicit, "real" spatial structures such as a landscape, though this is of course the most common use. They can also represent relational and state information, such as a belief space or a social network. There are four kinds of space represented:</p>
+<div class="section" title="Space (Continuous)">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Space_.28Continuous.29"></a>Space (Continuous)</h5>
+</div>
+</div>
+</div>
+<p>In the modeling tools, we simply refer to this as a "Space" as it is represents the general concept of a space. A space is simply something that contains objects with certain locations and extents and has a certain number of dimensions. The space is continuous, in the sense that objects can be placed anywhere with arbitrary position. Spaces hold attributes, which simply define their dimensions-- see below.</p>
+<div class="section" title="Border Rule">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Border_Rule"></a>Border Rule</h6>
+</div>
+</div>
+</div>
+<p>A value representing what happens to an agent when that agent is asked to move beyond its extent.</p>
+<div class="variablelist">
+<dl>
+<dt>
+<span class="term">
+										<span class="bold"><strong>Periodic</strong></span>
+									</span>
+</dt>
+<dd>
+<p>When encountering an edge, the agent will treat the space as wrapping around to the other side of the space. For example, if the agent at location {1,2} (0-based) within a Moore space (see grid discussion below) of size {10,10} is asked to find some other agent within distance 3, the agent look in the square defined between {8,9} and {4,5}. An agent asked to move beyond the confines of the space will simply stop when it reaches the edge. You can imagine this as taking a piece of graph paper and connecting the opposite edges. You can't actually do that with paper, but if you could you would have a toroidal (donut) shape in three dimensions defining the shape in two.</p>
+</dd>
+<dt>
+<span class="term">
+										<span class="bold"><strong>APeriodic</strong></span>
+									</span>
+</dt>
+<dd>
+<p>When encountering an edge, the agent treats it as the edge of the space. For example, if the agent at location {1,2} is asked to find some other agent within distance 3, the agent look between {0,0} and {4,5}. An agent asked to move beyond the confines of the space will simply stop when it reaches the edge.</p>
+</dd>
+</dl>
+</div>
+<p>The "Strict" and "Bouncy" values are obsolete and should not be used.</p>
+</div>
+<div class="section" title="Dimensionality">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Dimensionality"></a>Dimensionality</h6>
+</div>
+</div>
+</div>
+<p>The number of dimensions that the space has. After selecting a dimensionality, attributes will be added to represent each dimension. For example, if you enter 3 here, you will have an attribute for X, Y, and Z. Be sure to enter default values here, as they will be used to specify the actual size of the space.</p>
+</div>
+</div>
+<div class="section" title="Grid">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Grid"></a>Grid</h5>
+</div>
+</div>
+</div>
+<p>A grid is technically a regular lattice structure. Currently, only rectilinear structures are supported, i.e. a One-dimensional vector, a two-dimensional grid, a three-dimensional cube and so on. (Though none of the current target platforms support n-d spaces yet.) </p>
+<p>Like continuous spaces, a grid has a border rule and dimensionality. A grid has a couple of other important values:</p>
+<div class="section" title="Multi-Occupant">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Multi-Occupant"></a>Multi-Occupant</h6>
+</div>
+</div>
+</div>
+<p>Does the grid allow more than one agent to occupy it at a time? This value may be replaced with another mechanism in future releases.</p>
+</div>
+<div class="section" title="Neighborhood">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Neighborhood"></a>Neighborhood</h6>
+</div>
+</div>
+</div>
+<p>This value determines what constitutes a region within a particular distance from the agent. The value for this is often critical in obtaining particular behavior from a model, and shouldn't be overlooked. There are three possible values:</p>
+<div class="variablelist">
+<dl>
+<dt>
+<span class="term">
+										<span class="bold"><strong>Euclidean</strong></span>
+									</span>
+</dt>
+<dd>
+<p>The distance between any two cells is taken to be the "real" distance. For example, if an agent was within a chess board, and we wanted to find all agents within distance three of it, we could determine that by taking a string of length 3, tacking it to the center of the source square, and including all cells whose centers we can reach with the other string end. Note that although Euclidean space may seem the most reasonable neighborhood configuration to choose, this really isn't the case. Euclidean space is continuous whereas grid space is discrete, and mapping the two to each other can create unexpected issues. Still, this is a good choice for models representing notional real spaces.</p>
+</dd>
+<dt>
+<span class="term">
+										<span class="bold"><strong>Moore</strong></span>
+									</span>
+</dt>
+<dd>
+<p>Here, the distance between any two cells is defined by the number of edge 
+											<span class="italic">or</span> corner adjacent cells crossed to get between them. To continue the chess board analogy, this is the set of moves that a king can make. Note that this does not map well to real space at all, as a cell at distance 1 in a moore space is at distance sqrt(2) in "real" space.
+										</p>
+</dd>
+<dt>
+<span class="term">
+										<span class="bold"><strong>Von-Neumann</strong></span>
+									</span>
+</dt>
+<dd>
+<p>Here, the distance between any two cells is defined by the number of edge adjacent cells crossed to get between them. This is the set of moves that a rook might make on a chess board -- if a rook could only move one square at a time. It is also often referred to as a Manhattan distance for the self-evident reason.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="section" title="Network">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Network"></a>Network</h5>
+</div>
+</div>
+</div>
+<p>A network represents a set of relationships between agents, in a graph structure. The concept is pretty simple, but note that a network is actually a critical part of many AMF models. This is because we use networks to represent any kind of references between agents. You may have noticed in the discussion about attributes that there is no generic "object" type for an attribute. In fact, attributes only contain primitive values. So we will use networks to do the kinds of things that we would often use object references for in a traditional Object-Oriented model. For example, if an agent is a member of a family, rather than have that agent have a member attribute of "family" with a reference to the "Family" object, the modeler would create a "Family Members" network and connect agent's to their families as appropriate. This implies that network members can contain members of many different types.</p>
+<p>A network has only one value to specify:</p>
+<div class="section" title="Directed">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Directed"></a>Directed</h6>
+</div>
+</div>
+</div>
+<p>This indicates whether connections between agents are one-way or two-way. If this value is false, then if a connection is made between an agent A and an agent B, and agent B searches within distance 1, agent B will find agent A. If this value is true, agent A can find agent B, but agent B can not find agent A. (Unless of course some other path leads B to A.)</p>
+</div>
+</div>
+<div class="section" title="Geography">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Geography"></a>Geography</h5>
+</div>
+</div>
+</div>
+<p>A geography represents a physical landscape. Here we assume that that landscape is going to be defined by an external data source and representational scheme -- typically a Geographical Information System. We'll describe how to work with GIS in more detail when we discuss builder actions.</p>
+</div>
+</div>
+</div>
+<div class="section" title="Reference">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Reference"></a>Reference</h3>
+</div>
+</div>
+</div>
+<div class="section" title="Diagrams">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Diagrams"></a>Diagrams</h4>
+</div>
+</div>
+</div>
+<p>For readers familiar with UML and meta-modeling, the following diagrams give more detail on the structural design.</p>
+<div class="section" title="Meta-Classes">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Meta-Classes"></a>Meta-Classes</h5>
+</div>
+</div>
+</div>
+<p>Our first diagram depicts the core structural design of the model. </p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/structure/StructureComplexDiagram.png"></div>
+<p> 
+						
+</p>
+<div class="literallayout">
+<p>There&nbsp;seems&nbsp;to&nbsp;be&nbsp;a&nbsp;lot&nbsp;going&nbsp;on&nbsp;here,&nbsp;but&nbsp;the&nbsp;basic&nbsp;components&nbsp;are&nbsp;pretty&nbsp;straightforward&nbsp;as&nbsp;we&nbsp;can&nbsp;see&nbsp;in&nbsp;the&nbsp;next&nbsp;diagram.<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Key Collaborations">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Key_Collaborations"></a>Key Collaborations</h5>
+</div>
+</div>
+</div>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/structure/StructureSimpleDiagram.png"></div>
+<p>
+						
+</p>
+<div class="literallayout">
+<p>Core&nbsp;interactions&nbsp;are&nbsp;in&nbsp;Red.&nbsp;The&nbsp;meta-model&nbsp;structure&nbsp;is&nbsp;essentially&nbsp;a&nbsp;Composite&nbsp;pattern.&nbsp;<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Details">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Details_2"></a>Details</h5>
+</div>
+</div>
+</div>
+<div class="orderedlist">
+<ol class="orderedlist" type="1">
+<li class="listitem">
+<p>Every model has at its root a Context (Scape). Contexts are Agents that are capable of containing other Agents (including other contexts, naturally). </p>
+</li>
+<li class="listitem">
+<p>(Meta-level) Contexts contain (meta-level) Agents at the model (design-time) level.  At runtime, (model-level) Context instances defined in a (meta-level) SContext will contain (model-level) agent instances of the defined (meta-level) SAgent. This sounds more complicated than it is, so let's look at a simple example. Suppose we create a new Context, and give it a label of "Wiki Example". Within that Context, we create an Agent and give it a label of "Individual" and another Agent with the label "Block". At runtime when we are actually executing the model we will have one WikiExample model instance  which contains a number of Individuals.</p>
+</li>
+<li class="listitem">
+<p>Agents contain Attributes, such as Vision and Age. Context attributes often represent input parameters for contained agents. For example, our Wiki Agent Context might contain an Individual Count as well as a Minimum Age and Maximum Age.</p>
+</li>
+<li class="listitem">
+<p>Contexts can contain Projections (Spaces), which represent some kind of spatial or structural interaction space for the agents; either a grid, a continuous (euclidean) space, or a network (graph) or geographic space of some kind. For example, we might want to have a City that contains Blocks and that an Individual can move around within.</p>
+</li>
+<li class="listitem">
+<p>Agents are Actable and thus can contain any number of behaviors called "Actions", described in detail in the next section. Actions can describe individual behavior, and at the Context (Scape) level can define how member Agents and Projections are created.</p>
+</li>
+<li class="listitem">
+<p>Styles provide a mechanism for defining generic visualization behavior for Agents and so are also Actable. For example, an Agent might have an Action that says effectively "draw a red circle shaded red for the wealth of the agent".</p>
+</li>
+</ol>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="section" title="Actions">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Actions_2"></a>Actions</h2>
+</div>
+</div>
+</div>
+<p>Actions are the most important part of an agent model. While Agents, Attributes and Spaces define what we're modeling, it is Actions that give the models life.</p>
+<div class="section" title="Overview">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Overview_3"></a>Overview</h3>
+</div>
+</div>
+</div>
+<p>Actions allow the definition of behavior for agents at a very high level. You can think of actions as being analogous to methods in a traditional object-oriented model but that analogy only goes so far. In the same way that methods are defined as part of objects, actions belong to particular agents. (Though even more expressive ways of defining actions are contemplated in future releases.) In the next section we go into detail about what Actions are and how they can be used to define all agent behavior. They are also conceptually more challenging as unlike with structure they have no direct analogies to past agent representations.</p>
+<p>An action provides simple, well-defined details that a model can use to determine what steps to take in model execution. That definition seems general enough to be almost useless, but its important to understand that an action is not equivalent to an instruction, a method or a query. In fact, actions can have aspects of all of these. But an action is not in itself an instruction specifying exactly 
+					<span class="italic">how</span> the modeling engine should do something -- instead an action represents 
+					<span class="italic">what</span> the modeler intends for the agents to do. (Technically, we might say that Actions takes a "declarative" approach instead of an 'imperative' approach, but that's not quite true, because actions do allow us to define behavior in a richer way than most declarative approaches, and many action constructs map directly to imperative approaches.)
+				</p>
+<p>Actions are connected together in a series of sources and targets. (Technically, an acyclic directed graph.) In an abstract sense that is similar to the way any programming language is defined although that structure isn't usually obvious because of the constraints of textual representations. But unlike a typical programming language, in Actions it is not the execution thread (the processor) that moves from one instruction to the next, but the result of the previous action. In this way, action results "flow" from the output of one action into the next action.</p>
+<p>Why are these distinctions between traditional Object-Oriented and the Action approaches important? They give us the advantages of simplicity, clarity and flexibility that 
+					<a class="ulink" href="/wiki/http://en.wikipedia.org/wiki/Dataflow_programming" target="_new">data-flow approaches</a> like spreadsheets and some query languages have, but with less restrictions. At the same time, they can bring us much of the power and expressiveness of 
+					<a class="ulink" href="/wiki/http://en.wikipedia.org/wiki/Functional_programming" target="_new">functional languages</a> like Lisp or 
+					<a class="ulink" href="/wiki/http://en.wikipedia.org/wiki/Logical_programming" target="_new">logical languages</a> like Prolog, but without the level of complexity and obscurity that such languages can have.
+				</p>
+<p>We can get a better idea for how Actions work by thinking about how a spreadsheet works. In a spreadsheet, we might define a cell A that adds up a row of data, say "Income". We might define another cell C ("Profit") that takes A and adds it to another cell B that adds up another row of data ("Expenses"). Now, if we change a value in any of the rows, all of the other rows are added up and we get the results in A and B updated automatically. We never had to write code that said something like "for each cell in row X, where...". In fact, we don't really care 
+					<span class="italic">how</span> our Spreadsheet program adds up the numbers -- it could have added them all up at once but in backward order, or stored a running total somewhere and updated just the difference in value for the cell we changed -- what we care about is 
+					<span class="italic">what</span> the result is, and whether it is correct.
+				</p>
+<p>But Actions are much more powerful than a spreadsheet, because what is flowing from Action A to Action B is not just a number, but any model component such as a space or a set of agents that we need to use in target actions.</p>
+</div>
+<div class="section" title="Concepts">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Concepts"></a>Concepts</h3>
+</div>
+</div>
+</div>
+<p>In this section, we'll describe how modelers can assemble actions into sets of behavior that accomplish complex tasks on interrelated agents and spaces over time.</p>
+<div class="section" title="Kinds of Actions">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Kinds_of_Actions"></a>Kinds of Actions</h4>
+</div>
+</div>
+</div>
+<table id="N102B9">
+<tr>
+							
+<td>Before getting into the details of how each Actions work together, or the various kinds of Actions, it will be helpful to take a broad overview of how they all fit together. As discussed above, actions are strung together in a sequence or flow. They're always composed of two parts, though those parts can be assembled and intermixed in many different ways. First, we search for a collection of agents, and then we do something with that selection. We refer to these two parts as Selections and Commands. (For the technically minded, another useful way of looking at the Actions approach is as a Query Transformation language, as with SQL and Stored Procedures.  Except again, the results of the queries along with the transformations flow through from one query to the next.) Selections find the agents we want to do something with, and the commands do it. We need some way to start the whole chain of actions off, and so we have a kind of Selection called a Root Selection, or simply a Root. Secondly, we need some way to actually make the agents exist in the model in the first place, so we have a Create Agents action. Finally, we have special commands called builders that allow us to create the spaces that the agents will occupy. The various actions are discussed in depth in the Details section. The diagram at the right depicts how actions relate to one another -- it does not include some actions that have been added more recently.</td>
+							<td>
+								
+<div class="mediaobject">
+<img src="images/actions/ActionsBlocks.png"></div> 
+							
+</td>
+						
+</tr>
+</table>
+</div>
+<div class="section" title="Flow">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Flow"></a>Flow</h4>
+</div>
+</div>
+</div>
+<p>First, let's look at how actions define the basic path that agents take during a model run. As with any programming language, the path we take through the program specification is what determines our state when we get there. In a pure object oriented program, the path just defines the control flow -- what we are doing. The actual state of our model is defined within the object itself. If we call a method B from another method A, we'll be relying on method A to set the values that we need into the object state itself. In a purely functional program the path defines how we are going to deal with whatever has been explicitly passed in to a function that has been called, that is the function parameters. In fact, most languages such as Java combine aspects of both approaches.</p>
+<p>In Actions, the path itself implicitly carries all of the context of prior execution with it. This means that we don't have to worry about storing context in the object -- as we would in an object-oriented language -- or passing the correct values from one method call to the next as we would in a functional language. Instead, Actions can use the implicit context of the path of flow to determine what the current state of execution is.
+						An important aspect of the Actions design is that loop structures are not allowed -- that is, flows are acyclic. An action can never have an ancestor target (that is targets, targets of targets, etc..) that has as one of its ancestors that same action. As you'll see, actions don't typically 
+						<span class="italic">need</span> loop structures. By far the most common use of loops in conventional programming langauges is to loop through collections of objects. As selections (see below) refer to the entire collection of agents, any actions on a selection apply to all members of that collection. Recursive structures are needed for some particular usages and will be supported in future releases, but not through an explicit looping construct.
+					</p>
+<table id="N102D7">
+<tr>
+							
+<td>Again, behaviors in Actions are always defined by a set of 
+								<span class="italic">selections</span> and 
+								<span class="italic">queries</span>. In the diagram to the right, we can see the pattern. First, we define a Root Selection for a Rule, Schedule or other triggering event. Then, we might add a series of Query and Logic Actions to define the specific agents that we are interested in. These are all part of the Selection. Next, we might define a series of Commands to determine what to do with those agents. Or, we could use the result of that selection to immediately define another selection, for example if we are searching for an agent that is near another agent.
+							</td>
+							<td>
+								
+<div class="mediaobject">
+<img src="images/actions/ActionsSequence.png"></div>
+							
+</td>
+						
+</tr>
+</table>
+<table id="N102F1">
+<tr>
+							
+<td>The diagram to the right depicts a simple example. Here, we create a rule, and then check the results of two queries. For any agents that meet those criteria, we'll evaluate some function based on their state, and then set some value on them.</td>
+							<td>
+								
+<div class="mediaobject">
+<img src="images/actions/ActionsSimpleSequence.png"></div>
+							
+</td>
+						
+</tr>
+</table>
+<table id="N10303">
+<tr>
+							
+<td>In this next example, we'll first create the rule, and then create a new selection with a set of criteria. Finally, we'll do a move based on those queries.</td>
+							<td>
+								
+<div class="mediaobject">
+<img src="images/actions/ActionsSimpleSequence2.png"></div>
+							
+</td>
+						
+</tr>
+</table>
+<p>In the following example, we've defined a set of actions and their relationships. We have a selection, a few queries and a couple of logic operators leading to a Set Action. We'll describe in detail below how Logic Actions are used in conjunction with other actions to assemble any kind of query structure needed. But for now, we'll focus on the control flow itself.</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/actions/ActionsFlowSimple.png"></div>
+<p>
+					
+</p>
+<p>As you have probably already guessed, the agents that have the Set Action applied to them could take one of two paths through the Action flow. Readers with experience with programming or formal logic will note that this looks just like a parse tree, and while that's basically what it is, there are important differences. For example, if we looked at the following structure as a definition of control flow for a single agent we'd take them to be equivalent. Both would evaluate the statement (Query 1 AND Query 2) OR Query 3 for each agent.</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/actions/ActionsFlowUnion.png"></div>
+<p>
+					
+</p>
+<p>Within Actions in many cases these two approaches will also act equivalently. If we are simply setting a value, it doesn't matter how an agent gets to that Set Action, as long as it gets there. All sources that flow into a given target Action act like a logical union since any of the paths might reach that target. But note that we have two flows moving in parallel in the flow on the right. What happens when the conditions for 
+						<span class="italic">both</span> branches are true? As the set of agents flow through each branch the Set Action on the left will be evaluated once, while the one on the right will be evaluated twice. Again, this often ends up with the same behavior, but not always. If for example, the evaluate Action uses the value of the attribute that we are setting as input, we can get different results. Of course, you can write code in any language that accomplishes the same thing, but the code will look quite different. For example, if we wrote the same basic logic in Java, in the first case we'd have something like:
+					</p>
+<div class="literallayout">
+<p>if&nbsp;((query1.evaluate()&nbsp;&amp;&amp;&nbsp;query2.evaluate())&nbsp;||&nbsp;query3.evaluate())&nbsp;{<br>
+&nbsp;&nbsp;&nbsp;&nbsp;doSomething();<br>
+}<br>
+
+</p>
+</div>
+<p>In the second we'd have:</p>
+<div class="literallayout">
+<p>if&nbsp;(query1.evaluate()&nbsp;&amp;&amp;&nbsp;query2.evaluate())&nbsp;{<br>
+&nbsp;&nbsp;&nbsp;&nbsp;doSomething();<br>
+}<br>
+if&nbsp;(query3.evaluate())&nbsp;{<br>
+&nbsp;&nbsp;&nbsp;&nbsp;doSomething();<br>
+}<br>
+
+</p>
+</div>
+<p>This is a simple example, but with multiple branches such code design issues can quickly grow complex. The flow approach allows us to express things in a way that is often more natural and expressive. The important thing to keep in mind when desiging action flows is to see the flow as representing a selection of agents moving through streams independently. In the Actions example we expressed both approaches in nearly the same way, except in the case on the left we used a Union Action to bring the two branches of flow back together.</p>
+</div>
+<div class="section" title="Selections">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Selections"></a>Selections</h4>
+</div>
+</div>
+</div>
+<p>Selections are a key concept in Actions. Put simply, selections define what we are searching for and where. They are defined by a combination of Select, Query and Logic Actions. Each time we create a new Select Action, we define a new selection. Queries can be used to further refine selections either immediately after or later in the Action flow, as described in the next section. Logic Actions are used to combine and organize the Action flow defined by Query Actions. In order to understand how these three pieces work together, we need to understand the idea of selection boundaries.</p>
+<table id="N1033F">
+<tr>
+							
+<td>A selection boundary determines the set of selection actions that are used to determine what agents to apply target actions to. For example, in the following diagram, we can see the extent of the boundary for a straightforward selection.</td>
+							<td>
+								
+<div class="mediaobject">
+<img src="images/actions/ActionsSelBoundarySimple.png"></div>
+							
+</td>
+						
+</tr>
+</table>
+<table id="N10351">
+<tr>
+							
+<td>Each time we create a new selection, we define a new set of boundaries. In the diagram to the right, Selection 1 and Selection 2 eaach start with a new Select Action. </td>
+							<td>
+								
+<div class="mediaobject">
+<img src="images/actions/ActionsSelBoundary2Parts.png"></div> 
+							
+</td>
+						
+</tr>
+</table>
+<p>But boundaries can be defined for a group of actions by a Query Actions as well. This is because Query Actions can be directly part of a selection definition, but they can also refine selections. We'll see how that works below. So where does one selection boundary end and the next one begin? The simple rule is that the end of the boundary is defined for a given Action by the place where:</p>
+<div class="orderedlist">
+<ol class="orderedlist" type="1">
+<li class="listitem">
+<p>A Query Action is not followed by a Logic Action, or</p>
+</li>
+<li class="listitem">
+<p>A Logic Action is not followed by another Logic Action</p>
+</li>
+</ol>
+</div>
+<table id="N1036E">
+<tr>
+							
+<td>In other words, as soon as a Logic Action occurs in a path leading to an Action, any following Query will define a new boundary, as shown in the example to the right. </td>
+							<td>
+								
+<div class="mediaobject">
+<img src="images/actions/ActionsSelBoundary11A.png"></div>
+							
+</td>
+						
+</tr>
+</table>
+<p>Note that we refer to "Selection 1" and Selection 1A". This is because Selection 1A is a refinement of Selection 1 along its particular path of flow. When a query appears for the same selection but past a particular boundary, you can think of it as a sort of filter on the selection contents. We don't have a "Selection 2" here because any Actions that refer to "Selection 1" along the current path of flow will be acting on the selection defined by Selection 1 and Selection 1A.</p>
+<p>These rules allow actions to be defined in the simplest possible way, but it is important to understand their implication as they result in behavior that can be different from what someone used to and imperative programming environment such as Java might expect. In a simple case the distinction might not matter. For example, if we are using a Query 1 to test whether an agent's attribute a == x and attribute b == y, we would get the same outcome if we placed intersected the queries as if we simply put them in sequence. Internally we would actually be searching for agents with a == x, and 
+						<span class="italic">then</span> taking those agents and choosing those agents with b==y, but the outcome would be the same. But consider a more sophisticated case, where we are searching for neighboring available cells.
+					</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/actions/ActionsSelBoundaryComplex.png"></div>
+<p>
+					
+</p>
+<p>In the first case, we execute a search for all agents that meet the two criteria. This means that if there are 
+						<span class="italic">any</span> neighboring cells which are available, we're guaranteed to find one (random) cell. In the second case, we first search for all cells that are neighbors. This will match any agents that include both available and non available agents. Now, at this point since our search returns one agent (in the current AMF design -- richer behavior will be supported in the future) the randomly selected agent could be either available or not. So in the second case, we might end up with no cell to move to, and thus make no move at all. This then becomes an important aspect of model design. For example, if one were defining a model where neighbors played a game with each other, one might want to instruct agents to play the game only with neighbors that have a certain wealth threshold. In the real-world situation that we are modeling, we might simply search for neighbors who are over a given wealth threshold and then play the game with them. This would imply that information about other agent's wealth is open knowledge. Or, we might simply select a random neighbor, and ask that neighbor to play a game with us. Upon discovering that our neighbor does not meet our wealth criteria, we would then choose not to play with them. Here we are modeling a cost in time to obtain information about another agent's wealth, because we might miss an opportunity to play the game with another agent on that round.
+					</p>
+</div>
+<div class="section" title="Weaving">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Weaving"></a>Weaving</h4>
+</div>
+</div>
+</div>
+<table id="N10399">
+<tr>
+							
+<td>Now, let's put the concepts of Actions sequences and boundaries together to see how we can easily define complex interactions between multiple selections. When we define a Select, the state of its selection flows through and with any subsequent selections. So for example, if we have a Root Action rule, and then do a selection based on it, we'll have access to the agent from the original context as well as all of the subsequent selections. We can refer to any previous selection for any subsequent action. For example, instead of setting the value for the rule agent, we might instead set a value for an agent we've found in a target selection.</td>
+							<td>
+								
+<div class="mediaobject">
+<img src="images/actions/ActionsWeavingSetAnother.png"></div>
+							
+</td>
+						
+</tr>
+</table>
+<table id="N103AB">
+<tr>
+							
+<td>Inputs to functions also use selections. (We'll discuss more details in the functions section.) In the following example, we're adding the wealth of the Selection 1 agent to the wealth of the Selection 2 agent and using that value to set some other value. (Here, perhaps we are modeling an agent in a winner takes all game, in which case we'd also add a Set Action on Selection 2 and set the second agent's wealth to 0.)</td>
+							<td>
+								
+<div class="mediaobject">
+<img src="images/actions/ActionsWeavingEvaluate.png"></div>
+							
+</td>
+						
+</tr>
+</table>
+<table id="N103BD">
+<tr>
+							
+<td>But we can also use selections in defining Query Actions themselves. So in the following example, we select a neighbor agent and then compare the age of our Rule agent with the age of the Selection 2 agent. If and only if those ages are the same will we execute the target Set Action. This example also demonstrates why we refer to the data flow as weaving. Query Actions can be used to refine selections at any point in the data flow. Selections and their uses are interwoven throughout an action sequence.</td>
+							<td>
+								
+<div class="mediaobject">
+<img src="images/actions/ActionsWeaving1A.png"></div>
+							
+</td>
+						
+</tr>
+</table>
+<table id="N103CF">
+<tr>
+							
+<td>Finally, we can put all of these concepts together by weaving selections together with flows. As we discussed in the flow section, if we use multiple paths in the Query, the agents that flow through from any prior Query can follow multiple paths at once. And as we discussed in the selection section, the selection and its boundaries determine what agents we will be working with at any given evaluation point in the flow. Consider the example to the right. As we'll see in the detailed explanation of each Action below, Transformation Actions such as Move or Connect take multiple selections. The first selection defines the set of agents that will be performing the action. In the case of a Move agent, this refers to the mover. The second selection, which for Move we call "destination", refers to the selection that will be receiving the action. In the case of movement this is the agent or location that the Rule agent will be moving to. If we follow the flows through, we can note two important outcomes of our model design -- a Rule agent might move twice if it meets the criteria for both the blue path and the red path and that it might move to a different location each time.</td>
+							<td>
+								
+<div class="mediaobject">
+<img src="images/actions/ActionsWeaving2.png"></div>
+							
+</td>
+						
+</tr>
+</table>
+</div>
+</div>
+<div class="section" title="Details">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Details_3"></a>Details</h3>
+</div>
+</div>
+</div>
+<table id="N103E5">
+<tr>
+						
+<td>In this section, we'll dig into the specific role of each of the Actions. From the design discussion we hopefully have some sense of how these all fit together in general. Again, the block diagram to the right provides an overview of how the various actions are related, but it is missing some of the more recent actions such as Diffusion, Perform, Derive and Cause. You might want to take a look at the meta-class diagrams in the reference section as well.</td>
+						<td>
+							
+<div class="mediaobject">
+<img src="images/actions/ActionsBlocks.png"></div> 
+						
+</td>
+					
+</tr>
+</table>
+<div class="section" title="Selections">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Selections_2"></a>Selections</h4>
+</div>
+</div>
+</div>
+<p>A selection defines a particular set of agents that we want to do something with. Selections are made up of the Select action itself, along with Query and Logic actions. When we refer to a selection in any target command, we are referring to the selection in the context of where we have defined the behavior.</p>
+<div class="section" title="Select">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Select"></a>Select</h5>
+</div>
+</div>
+</div>
+<p>As we discussed above, when we refer to a Select, we're actually referring to the selection as a whole leading up to the current action. The Select Action itself is used to define what we are searching for (Agent), where we are searching for it (Space), and from whose perspective we are doing it (Selection). Create Actions are a special kind of Select Action that are used to create agents. See the description in the Builders section below for more information.</p>
+<div class="section" title="Selection">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Selection"></a>Selection</h6>
+</div>
+</div>
+</div>
+<p>The selection that we are searching "from". This seems to be the concept that new users have the most difficulty with, but it is key to understanding how Actions works. Just as with any other Action -- a Move command for example -- a selection needs to know what set of agents that it is working with. For example, if we want to define a selection B that finds the cells neighboring a rule B's agent, we would set selection B's selection to A.</p>
+</div>
+<div class="section" title="Agent">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Agent"></a>Agent</h6>
+</div>
+</div>
+</div>
+<p>Here we define what agent we will be looking for. In order for this to make sense, the agent has to be related in some meaningful way to the agent whose behavior we are defining. For example, it might be a partner agent or a location that we might want to move to. An agent must be specified unless we are searching within a continuous space, in which case this value should be empty, and the result of the selection will represent some location in that space. In the current version of the framework, we treat destination cell locations as agents, and require that location to be specified as a target agent, but in a future version we'll allow searches without defining an agent within grid spaces as well.</p>
+</div>
+<div class="section" title="Space">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Space"></a>Space</h6>
+</div>
+</div>
+</div>
+<p>The space that we want to search within. Of course, this must be specified if we use any spatial query terms (see below), but if we simply want to search across all agents it should not be specified.</p>
+<p>Represent Queries (Controls) on agents and Transformations, or Commands, on the result of those queries. Queries, Transformations and other  in which each child target carries the execution and data context for it's particular path.</p>
+</div>
+<div class="section" title="For">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="For"></a>For</h6>
+</div>
+</div>
+</div>
+<p>This value is obsolete and will be replaced with a different mechanism in the next version of the modeling environment.</p>
+</div>
+</div>
+<div class="section" title="Query">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Query"></a>Query</h5>
+</div>
+</div>
+</div>
+<p>A Query represents a concrete criteria for our search. The name is a bit confusing because of potential for confusion with a generic query. Queries -- along with their cousin Evaluators -- define a function that is evaluated and that can take Agent attributes and the results of other Actions as input. Queries are combined with each other and with the logic actions to determine the results of a selection for their direct target actions. </p>
+<div class="section" title="Selection">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Selection_2"></a>Selection</h6>
+</div>
+</div>
+</div>
+<p>As with all other actions, evaluations specify a selection, and just as with the other actions, this determines the set of agents that the evaluation occurs for, but the input selections determine what agent is used for the calculation itself.</p>
+</div>
+<div class="section" title="Function">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Function"></a>Function</h6>
+</div>
+</div>
+</div>
+<p>A query function is evaluated to determine the results of a particular selection. Functions can represent very simple search criteria such as "My Age == Your Age", but they can also represent complex and inter-related concepts such as spatial relationships. They must return logical values. See the functions section for more information on specific functions.</p>
+</div>
+<div class="section" title="Inputs">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Inputs"></a>Inputs</h6>
+</div>
+</div>
+</div>
+<p>The set of values that will be used to determine the result, in the order specified by the function prototype. Inputs can specify any source evaluation and any agent state or agent parent context state. They can also be literal values -- see the section on literals below. The selection determines which agent's will be used to determine the value, and different inputs can specify different selections.</p>
+</div>
+</div>
+<div class="section" title="Logic">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Logic"></a>Logic</h5>
+</div>
+</div>
+</div>
+<p>These Actions provide us with the ability to combine queries with one another, and follow the basic rules of set logic. But as we've seen above, it is important to understand that there are important differences between Logic Actions and typical programming logic. Most importantly, they apply not to individual agents per se, but to the set of agents that move through them. Also, there is not neccesarily short circuit execution (it's not needed) and much richer criteria can be joined together because of the action flow design.</p>
+</div>
+<div class="section" title="Intersection">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Intersection"></a>Intersection</h5>
+</div>
+</div>
+</div>
+<p>An intersection contains only those agents that match all of its source actions. This is essentially equivalent to a logical AND statement and has similarities to an &amp;&amp; operator in a java "if" statement. An agent must be able to flow through all incoming actions in order to flow out of an Intersection Action.</p>
+</div>
+<div class="section" title="Union">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Union"></a>Union</h5>
+</div>
+</div>
+</div>
+<p>A union contains all agents that match any of its source actions. This shares similiarities to a logical OR statement and the || operator in a java "if" statement. It does mroe than that however, as it acts to join multiple flows of action. That is, as set logic implies, an agent will never appear in the result of a union more than once.</p>
+</div>
+<div class="section" title="Difference">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Difference"></a>Difference</h5>
+</div>
+</div>
+</div>
+<p>A difference contains all agents that do not match any of its source actions. This essentially equivalent to a logical NOT statement, and has similarities to the Java else statement. Like the Union Action, difference implies that a given agent will only appear once in any subsequent targets. No agents that reach a Difference Action will flow through to the next action(s), and all agents (that meet the definition of the Select Action) that cannot reach that action will.</p>
+</div>
+</div>
+<div class="section" title="Root Actions">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Root_Actions"></a>Root Actions</h4>
+</div>
+</div>
+</div>
+<p>Root actions are a special case of a selection. These represent behaviors that are defined for all members of agents; these are the highest granularity of an agent's behavior, such as "Find Partners" or "Eat" or "Reproduce". When you want to create a new set of Actions, you have the following choices.</p>
+<div class="section" title="Build">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Build"></a>Build</h5>
+</div>
+</div>
+</div>
+<p>The Build Action is a specialized action that allow the construction of member agents and spaces within a parent context. A Build Action executes once for each context before any initialization actions occur for any children agents of that context. Currently it is undefined whether a context's own Initialize Action is executed before the Build Action occurs, so implementors should not rely on any initialized values being available at build time.</p>
+</div>
+<div class="section" title="Initialize">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Initialize"></a>Initialize</h5>
+</div>
+</div>
+</div>
+<p>An Initialize action is executed once and only once for every agent when the model is first started -- at time 0. Initialize Actions are guaranteed to execute before any other non-builder action occurs.</p>
+</div>
+<div class="section" title="Rule">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Rule"></a>Rule</h5>
+</div>
+</div>
+</div>
+<p>A Rule executes once for every agent for every iteration of the model. An important note is that the actual sequence of rules is technically undefined. An implementor should not rely on the fact that a rule occurs before another rule in the list of agent actions though typically the order in which the rules were actually created is respected.</p>
+</div>
+<div class="section" title="Schedule">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Schedule"></a>Schedule</h5>
+</div>
+</div>
+</div>
+<p>A schedule is executed on a recurring basis, according to the values detailed below. Note that schedules are often overused. In most agent-based models it makes sense to have any behaviors occur at the same granularity using a Rule. Please note that Schedules are not currently supported in the Escap target, but that support should be available soon. In the following descriptions we refer to period as the current iteration of the model, that is where time == t.</p>
+<div class="section" title="Start">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Start"></a>Start</h6>
+</div>
+</div>
+</div>
+<p>The period that the schedule will first be invoked. For example, if this value is 100, and interval is 1, the schedue will be executed at times 100,101,102..</p>
+</div>
+<div class="section" title="Interval">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Interval"></a>Interval</h6>
+</div>
+</div>
+</div>
+<p>How often the schedule is invoked. For example, if this value is 3 and start is 1, the schedule will be executed at times 1,4,7..</p>
+</div>
+<div class="section" title="Priority">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Priority"></a>Priority</h6>
+</div>
+</div>
+</div>
+<p>Where the rule will be placed in the execution queue for a given time period. For example, if Schedule A's priority is set to 3 and Schedule B's is set to 2, Schedule B will be executed for all agents before Schedule B is executed for any agents.</p>
+</div>
+<div class="section" title="Pick">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Pick"></a>Pick</h6>
+</div>
+</div>
+</div>
+<p>Controls how many agents to execute the schedule against. While this value will have an effect on the Repast target, it is not recommended to be used for general models and is likely to be replaced by another approach.</p>
+</div>
+</div>
+<div class="section" title="Watch">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Watch"></a>Watch</h5>
+</div>
+</div>
+</div>
+<p>A Watch is executed any time the watched value is set for any agent. Note that the Action will be triggerred even if the state is simply set back to the value that it already has. It is important to be careful about creating Watches that might set the values of other Watch actions which might in turn trigger this watch. To clarify, if a modeler creates a Watch A for attribute a, and creates a target Set for it for attribute b, and Watch B is watching attribute b, then if Watch B has a target Set for attribute A, a circular execution could occur. This would cause the model to get stuck in its current iteration. To help model developers avoid this case, a warning will be provided if such a set of circular watch dependencies is created.</p>
+<div class="section" title="Attribute">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Attribute"></a>Attribute</h6>
+</div>
+</div>
+</div>
+<p>The attribute that will be monitored for change.</p>
+</div>
+</div>
+<div class="section" title="Derive">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Derive"></a>Derive</h5>
+</div>
+</div>
+</div>
+<p>A Derive action is a unique kind of root that is used to determine that value of a derived attribute. There can be one and only one Derive action for each such attribute. One of the benefits of a derived action is that unlike a standard attribute, it only needs to be calculated when the value is actually needed and its inputs have also been changes -- allowing signifcant performance optimizations to be made. Derived actions can also make model behavior much more clear. Derive actions are especially useful for calculating dependent measures for model agents. These in turn can be used directly in charting and data output tools -- leaving no need to configure your chart view calculations seperatly. Developers need not worry about overhead and should feel free to create as many derived attributes as might be neccessary. The "gather data" value of the derived attribute can always be set to false to prevent data collection overhead when they aren't needed.</p>
+<p>The derived value will always simply be the value of the last evaluation in a particular flow. You can mix queries and even selections on seperate agents into a derived value. The only restriction is that the type of the last Evaluate actions(s) must match the type of the value. If there is no path leading to an Evalutate action for a particular agent state, the attributes default value will be used.</p>
+<div class="section" title="Attribute">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Attribute_2"></a>Attribute</h6>
+</div>
+</div>
+</div>
+<p>The attribute that will be derived.</p>
+</div>
+</div>
+<div class="section" title="Diffuse">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Diffuse"></a>Diffuse</h5>
+</div>
+</div>
+</div>
+<p>The diffuse action provides high level support for the common behavior of diffusing some value across some lattice space. For example, heat may spread over time from one grid cell to the next. (There are actually significant issues involved in implementing this through lower level actions.) To specify that a value should diffuse through a space you simply need to provide the following values. This action does not need and shouldn't include target actions. The "Heatbugs" model in the org.eclipse.amp.amf.examples.escape project provides a good example for how diffusion can be easily implemented into any grid model.</p>
+<div class="section" title="Diffused">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Diffused"></a>Diffused</h6>
+</div>
+</div>
+</div>
+<p>The attribute whose value is to be diffused.</p>
+</div>
+<div class="section" title="Diiffusion Rate=">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Diiffusion_Rate.3D"></a>Diiffusion Rate=</h6>
+</div>
+</div>
+</div>
+<p>The rate at which any given cell's attribute value is transferred to surrounding cells.</p>
+</div>
+<div class="section" title="Evaporation Rate">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Evaporation_Rate"></a>Evaporation Rate</h6>
+</div>
+</div>
+</div>
+<p>An optional rate by which each cells value is reduced for each period. This is useful for a model where agents are creating energy within the environment.</p>
+</div>
+</div>
+<div class="section" title="Perform">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Perform"></a>Perform</h5>
+</div>
+</div>
+</div>
+<p>A Perform root action simply defines a set of actions that have no independent trigger. The only way Perform actions can occur is if a Cause action specifes one as a result. Performs then are similar to sub-calls or helper methods within a traditonal procedural or OO language, and can be very helpful in organizing and simlplifying code. Note that whenever you use a Perform instead of directly specifying a set of targets you lose the context of the selection. You couldn't use a Perform to directly trigger a move as the selection source for the move would not be available.</p>
+</div>
+</div>
+<div class="section" title="Builders">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Builders"></a>Builders</h4>
+</div>
+</div>
+</div>
+<p>Builders are a special category of actions that are used to create spaces. They should not be confused with the Build Action itself which is a root selection that defines the time at which builder actions should occur. Generally speaking, specific Builder Actions for spaces and Create Actions for agents are targets of Build Actions.</p>
+<div class="section" title="Create Agents">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Create_Agents"></a>Create Agents</h5>
+</div>
+</div>
+</div>
+<p>Agents are crete using the Create Agent action. The Create Agent Action is actually a special kind of Select Action that is used to actually create agents rather than simply search for them. Other than this capability, a Create Agent action can be used just like any other action except that Query and Logic actions aren't needed or genrally appropriate as this action defines a set number of agents to perform an action against. Create Agent actions have the special feature of being usable from the containing context, so that contexts can create initial agent populations before any agents exist within the context to perform actions against. But they can also be used directly within agent rules, for example to create a child agent as the result of a reproducation rule. Note that Initialize Actions are 
+							<span class="italic">not</span> performed on agents that have been created within a model during regular (non-initialization time) execution. If the model creates actions during the regular model run, any state initialization should be handled by the targets of this action directly. (Naturally, if the enclosing context is used to create agents at the beginning of a model run, then the Initialize action is used as part of the normal model life-cycle.)
+						</p>
+<div class="section" title="Agent">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Agent_2"></a>Agent</h6>
+</div>
+</div>
+</div>
+<p>The kind of agent to create.</p>
+</div>
+<div class="section" title="Selection">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Selection_3"></a>Selection</h6>
+</div>
+</div>
+</div>
+<p>The selection to use as the basic for this selection. This is generally not important except to define control flow.</p>
+</div>
+<div class="section" title="Space">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Space_2"></a>Space</h6>
+</div>
+</div>
+</div>
+<p>Not generally relevant for agent actions, as agents are not placed into a space unless explicitly moved to that space. Potential associations between agents and spaces are defined by the space building actions.</p>
+</div>
+<div class="section" title="Agent Count">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Agent_Count"></a>Agent Count</h6>
+</div>
+</div>
+</div>
+<p>The number of agents to create. If used as part of an enclosing context's Initialize Action(s) an Attribute parameter will automatically be created. If not, then an evaluation or agent attribute should be used to define this number.</p>
+</div>
+<div class="section" title="For">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="For_2"></a>For</h6>
+</div>
+</div>
+</div>
+<p>Deprected. Should not be used.</p>
+</div>
+</div>
+<div class="section" title="Create Shaped Agent">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Create_Shaped_Agent"></a>Create Shaped Agent</h5>
+</div>
+</div>
+</div>
+<p>Creates an agent that has a particular shape extent within some continuous (i.e. vector as opposed to raster) space. This action performs just like a Create Action except for the following attribute:</p>
+<div class="section" title="Shape">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Shape"></a>Shape</h6>
+</div>
+</div>
+</div>
+<p>Determines how each agent's spatial extent will be defined. The actual form of that shape is implementation specific. For example, in a GIS space (the immediate rationale for this Action) a polygon represents a region on a map and the extent of that shape might be determined by a .shape file. The available shape types are:</p>
+<div class="variablelist">
+<dl>
+<dt>
+<span class="term">Point</span>
+</dt>
+<dd>
+<p>A simple point in space, fully equivalent to a standard continuous space location.</p>
+</dd>
+<dt>
+<span class="term">Line</span>
+</dt>
+<dd>
+<p>A single line within a continuous space. Technically this represents a line segment as it is expected to have a beginning and ending point. In the future, this might refer more generically to planes in three dimensional space and hypersurfaces in n-dimensional spaces, but this is currently not supported by any AMF target implementations.</p>
+</dd>
+<dt>
+<span class="term">Polygon</span>
+</dt>
+<dd>
+<p>A region within a space defined by an arbitrarily large set of line segments. Potentially this could be used to refer to polyhedrons in three-dimeensional space, or even more genrally as polytopes, but this is currently not supported by any AMF target implementations.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="section" title="Load Agents">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Load_Agents"></a>Load Agents</h5>
+</div>
+</div>
+</div>
+<p>Imports and creates a set of agents from some input file. The actual form and manner of the import is implementation specific but should be inferrable from any source file based on the URL provided, assuming that the target platform or the AMF platform supports the appropriate imput type. For example, a Tab-CR delimited file might be used to populate a set of agents with various attributes. Additional meta-data could be provided by the URL, but we will likely add additional extensible meta-data to this action to better support the definition of expected input types and routines from within an AMF model itself. This action is equivalent to the Create Agents action except for:</p>
+<div class="section" title="Source URL">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Source_URL"></a>Source URL</h6>
+</div>
+</div>
+</div>
+<p>The location of the input file or set of meta-data used to determine the location and type of the input file.</p>
+</div>
+</div>
+<div class="section" title="Load Shaped Agents">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Load_Shaped_Agents"></a>Load Shaped Agents</h5>
+</div>
+</div>
+</div>
+<p>Combines the properties of the Create Shaped Agent and Load Agent Actions. The source url should of course specify an input format that supports the shape type specified. See the descriptions of the related actions for more details.</p>
+</div>
+<div class="section" title="Build Network">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Build_Network"></a>Build Network</h5>
+</div>
+</div>
+</div>
+<p>Creates a network, i.e. a graph structure, supporting the establishment of edges between arbitrary nodes.</p>
+<div class="section" title="Agents">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Agents_3"></a>Agents</h6>
+</div>
+</div>
+</div>
+<p>Specifies the set of agents that can exist within this network. Agents must be included here in order for them to make connections within the network but agents included here are not required to have connections within the network, nor are such connections created for them. (See important note regarding network types below.)</p>
+</div>
+<div class="section" title="Attributes">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Attributes_3"></a>Attributes</h6>
+</div>
+</div>
+</div>
+<p>Not currently used for networks.</p>
+</div>
+<div class="section" title="Network Type">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Network_Type"></a>Network Type</h6>
+</div>
+</div>
+</div>
+<p>Deprecated. This feature is only currently supported for Repast targets and is likely to be removed from future versions of the AMF meta-model. Future AMF implementations are likely will provide a different mechanism for instantiating and importing network structures either within the network defintion or through other Action definitions. Instead of using this feature, modelers should create specific networks by building them up with Connect Actions for indivdual agents. For example to create a small world netowrk, a modeler might create random links between agents and then replace or augment those connections.</p>
+</div>
+<div class="section" title="Selection">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Selection_4"></a>Selection</h6>
+</div>
+</div>
+</div>
+<p>Not relevant for network builders except as part of normal control flow.</p>
+</div>
+</div>
+<div class="section" title="Build Grid">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Build_Grid"></a>Build Grid</h5>
+</div>
+</div>
+</div>
+<p>Creates a grid space.</p>
+<div class="section" title="Agents">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Agents_4"></a>Agents</h6>
+</div>
+</div>
+</div>
+<p>The set of agents that might exist as occupants of this grid; that is, members of individual cells within a given grid. Agents must be included here in order for instances to exist within the space, but agents included here do not actually have to exist within the space. (In the Repast implementation, all agents technically are memebers of the spatial projection, but are not required to have valid coordinates within that space.) For example, in an agriculture model these might represent agents moving about and harvesting plots of land.</p>
+</div>
+<div class="section" title="Fill Agent">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Fill_Agent"></a>Fill Agent</h6>
+</div>
+</div>
+</div>
+<p>The agent that will be used to populate the grid itself. A gird is guranteed to contain one and only one fill agent within each grid locaiton. The grid will be populated with instances of the specified agent and these agents cannot move, leave or die within this space. This value need not be specified -- if left blank a default cell without any state will be used. For example, in an agriculture model, this agent might represent a single plot of land.</p>
+</div>
+<div class="section" title="Space Type">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Space_Type"></a>Space Type</h6>
+</div>
+</div>
+</div>
+<p>Deprecated. Should not be used.</p>
+</div>
+<div class="section" title="Selection">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Selection_5"></a>Selection</h6>
+</div>
+</div>
+</div>
+<p>Not relevant for builders except as part of normal control flow.</p>
+</div>
+<div class="section" title="Attributes">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Attributes_4"></a>Attributes</h6>
+</div>
+</div>
+</div>
+<p>Not currently used for spaces.</p>
+</div>
+</div>
+<div class="section" title="Build Space">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Build_Space"></a>Build Space</h5>
+</div>
+</div>
+</div>
+<p>Creates a continous space. The actual dimensionality and other qualities of the space are currently defined in the space itself though this might change in future versions. All other values are used in the same way as for the gird and other builder actions.</p>
+<div class="section" title="Agents">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Agents_5"></a>Agents</h6>
+</div>
+</div>
+</div>
+<p>The set of agents that might be a part of this space. Agents must be included here in order for instances to exist within the space, but agents included here do not actually have to exist within the space. (In the Repast implementation, all agents technically are memebers of the spatial projection, but are not required to have valid coordinates within that space.)</p>
+</div>
+</div>
+<div class="section" title="Build Geography">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Build_Geography"></a>Build Geography</h5>
+</div>
+</div>
+</div>
+<p>Constructs a geographical space. All details of this space are specfied by the implementation, i.e. a specific geographical imported space. Generally these would be defined by a Create Agents action; that is a set of imported agents representing US states would also represent the overall space of interest.</p>
+</div>
+</div>
+<div class="section" title="Commands">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Commands"></a>Commands</h4>
+</div>
+</div>
+</div>
+<div class="section" title="Evaluate">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Evaluate"></a>Evaluate</h5>
+</div>
+</div>
+</div>
+<p>Evaluate Actions define some calculation on a function based on the model state and a set of input(s). The inputs that an Evaluate Action can take is determined by its functions and can be either agent attributes, prior evaluations or literals. The result is then determined based on those inputs. In some cases Evaluate functions can be used to determine some action indirectly, such as with a graphics fill, but they can never be used to directly change model state.</p>
+<div class="section" title="Selection">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Selection_6"></a>Selection</h6>
+</div>
+</div>
+</div>
+<p>As with all other actions, evaluations specify a selection, and just as with the other actions, this determines the set of agents that the evaluation occurs for, but the input selections determine what agent is used for the calculation itself.</p>
+</div>
+<div class="section" title="Function">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Function_2"></a>Function</h6>
+</div>
+</div>
+</div>
+<p>A with queries, a function is evaluated against its input set. Functions can represent simple operators as well as complex functions. See the functions section for more information on specific functions.</p>
+</div>
+<div class="section" title="Inputs">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Inputs_2"></a>Inputs</h6>
+</div>
+</div>
+</div>
+<p>The set of values that will be used to determine the result, in the order of the function prototype. Inputs can specify any source evaluation and any agent state or agent parent context state. They can also be literal values -- see the discussion in the Tools section. The selection determines which agent's will be used to determine the value, and different inputs can specify different selections.</p>
+</div>
+</div>
+<div class="section" title="Set">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Set"></a>Set</h5>
+</div>
+</div>
+</div>
+<p>The Set Action assigns some value to another value.</p>
+<div class="section" title="Selection">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Selection_7"></a>Selection</h6>
+</div>
+</div>
+</div>
+<p>Here the selection refers to the agent that we want to change. This does not have to be the immediatly preceeding selection but can be any accessible selection.</p>
+</div>
+<div class="section" title="Attribute">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Attribute_3"></a>Attribute</h6>
+</div>
+</div>
+</div>
+<p>The attribute to modify. It must be a member of this action's agent or of that agent's parent context.</p>
+</div>
+<div class="section" title="Parameter">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Parameter"></a>Parameter</h6>
+</div>
+</div>
+</div>
+<p>The value to assign to the attribute. Here, we can use either another agent attribute, or the results of a source evaluation. </p>
+</div>
+</div>
+<div class="section" title="Cause">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Cause"></a>Cause</h5>
+</div>
+</div>
+</div>
+<p>A Cause Action "causes" some Root Action to occur upon the specified selection. This action can be extremely useful for organizing model behavior and preventing the need for creating duplicate action definitions.</p>
+<p>Cause actions also support recursive functionality and "WHILE" behavior. These can be used to mimic loop strucutres. For example, you might want an agent to execute some behavior as long as that agent has energy remaining. To accomplish this, you could create a query for "energy &gt; 0" and then create a Cause target with the root action as its results.</p>
+<p>Note that you should be cautious and thoughtful when using the Cause action. Remember that selections represent sets of agents and thus get rid of the need for collection loop strucutures -- such as Java "for each" -- common in traditional programming languages. You should be able to do almost anything that might require a loop strucutre using the selection mechanism itself. Also, just as with a traditional language, you should be careful about defining cause actions that trigger their own root actions or that cause other actions to in turn trigger the orginal root action. You can easily end up defining infinite loops in this way. (In the current implementation this will eventually trigger a stack overflow error as cause invocations are recursive, but future implementations will be able to infer target language loop strcutures to prevent stack depth issues.)</p>
+<div class="section" title="Result">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Result"></a>Result</h6>
+</div>
+</div>
+</div>
+<p>The root aciton that should be trigerred for every memeber of the current selection. This is typically a Perform action but it can be any kind of root action except for "Derived". (Which doesn't make any sense to do.)</p>
+</div>
+</div>
+<div class="section" title="Move">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Move"></a>Move</h5>
+</div>
+</div>
+</div>
+<p>The Move Action causes an agent to change its location in some space or network. The agent will leave whatever location it was in before within the selection space, and move to its new destination.</p>
+<div class="section" title="Selection">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Selection_8"></a>Selection</h6>
+</div>
+</div>
+</div>
+<p>As in any other action, the selection determines what agent is affected -- in this case the agent that is being moved.</p>
+</div>
+<div class="section" title="Destination">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Destination"></a>Destination</h6>
+</div>
+</div>
+</div>
+<p>Specifies the target agent or location for the movement.</p>
+</div>
+</div>
+<div class="section" title="Leave">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Leave"></a>Leave</h5>
+</div>
+</div>
+</div>
+<p>Causes the agent to leave a particular space.</p>
+<div class="section" title="Selection">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Selection_9"></a>Selection</h6>
+</div>
+</div>
+</div>
+<p>The selection determines what agent will be leaving and what space the agent will be leaving. If the agent doesn't exist in that space nothing will happen.</p>
+</div>
+<div class="section" title="Destination">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Destination_2"></a>Destination</h6>
+</div>
+</div>
+</div>
+<p>The destination is irrelevant for a leave action and should not be specified.</p>
+</div>
+</div>
+<div class="section" title="Die">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Die"></a>Die</h5>
+</div>
+</div>
+</div>
+<p>Causes the agent to cease to exist within the model as a whole.</p>
+<div class="section" title="Selection">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Selection_10"></a>Selection</h6>
+</div>
+</div>
+</div>
+<p>The selection determines what space the agent to remove.</p>
+</div>
+<div class="section" title="Destination">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Destination_3"></a>Destination</h6>
+</div>
+</div>
+</div>
+<p>The destination is irrelevant in this case and will probably be removed.</p>
+</div>
+</div>
+<div class="section" title="Connect">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Connect"></a>Connect</h5>
+</div>
+</div>
+</div>
+<p>Connects two agents within a network space. This Action is not applicable for any other kinds of spaces. Note that unlike with other transformational commands, we do not use the destination space to determine the space that will be impacted by the Action. This provides a more efficient representation without any loss in generality, because it allows us to search for a source and target agent within other spaces and then create a connection without creating a separate selection. As the important structural feature of networks are the relationships themselves, not the nodes this provides a more direct way to specify these relationships.</p>
+<div class="section" title="Selection">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Selection_11"></a>Selection</h6>
+</div>
+</div>
+</div>
+<p>The selection determines the agent that will be connected to another agent. In the case of a directed graph, this is the source node.</p>
+</div>
+<div class="section" title="=Destination">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name=".3DDestination"></a>=Destination</h6>
+</div>
+</div>
+</div>
+<p>The destination determines the agent that the selection agent will be connected to. In the case of a directed graph, this is the target node.</p>
+</div>
+<div class="section" title="Within">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Within"></a>Within</h6>
+</div>
+</div>
+</div>
+<p>Specifies the network that the connection will be created within.</p>
+</div>
+</div>
+<div class="section" title="Directed">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Directed_2"></a>Directed</h5>
+</div>
+</div>
+</div>
+<p>Determines whether the connection made is directed or not. If true, selections from source agents will include the target, but target agent selections will not include the source agents (unless they are connected through some other path).</p>
+</div>
+<div class="section" title="Disconnect">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Disconnect"></a>Disconnect</h5>
+</div>
+</div>
+</div>
+<p>Removes the connection between agents within a network space. See the description of the Connect Action for important details.</p>
+<div class="section" title="Selection">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Selection_12"></a>Selection</h6>
+</div>
+</div>
+</div>
+<p>The selection determines one side of the agent relationship that will be disconnected.</p>
+</div>
+<div class="section" title="Destination">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Destination_4"></a>Destination</h6>
+</div>
+</div>
+</div>
+<p>The selection determines one other side of the agent relationship that will be disconnected.</p>
+</div>
+<div class="section" title="Within">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Within_2"></a>Within</h6>
+</div>
+</div>
+</div>
+<p>Specifies the network that the connection will be created within.</p>
+</div>
+</div>
+<div class="section" title="Replace">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Replace"></a>Replace</h5>
+</div>
+</div>
+</div>
+<p>Functions in the same way as a Connect Action excepth that all other connections to other agents will first be removed.</p>
+<div class="section" title="Selection">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Selection_13"></a>Selection</h6>
+</div>
+</div>
+</div>
+<p>The selection determines the agent that will be connected to another agent. In the case of a directed graph, this is the source node.</p>
+</div>
+<div class="section" title="Destination">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Destination_5"></a>Destination</h6>
+</div>
+</div>
+</div>
+<p>The destination determines the agent that the selection agent will be connected to. In the case of a directed graph, this is the target node.</p>
+</div>
+<div class="section" title="Within">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Within_3"></a>Within</h6>
+</div>
+</div>
+</div>
+<p>Specifies the network that the connection will be created within.</p>
+</div>
+</div>
+<div class="section" title="Directed">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Directed_3"></a>Directed</h5>
+</div>
+</div>
+</div>
+<p>Determines whether the connection made is directed or not. See the Connect description for more details.</p>
+</div>
+</div>
+<div class="section" title="Other">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Other"></a>Other</h4>
+</div>
+</div>
+</div>
+<div class="section" title="Method">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Method"></a>Method</h5>
+</div>
+</div>
+</div>
+<p>The Method action supports inclusion of arbitrary code within a generated method. Generally, this will be Java code as all of the current target platforms are Java-based but there is no technical requirement that it must be. For example, if a target has been developed to produce code for Swarm running on an iPad (and no, there are no current plans to support such a thing, though it would certainly be cool!) then the modeler could define Objective C code for the method.</p>
+<p>Please note that the Method Action should be avoided whenever possible. You should consider using it only in the case where there doesn't appear to be a way to construct equivalent functionality using the native Actions framework, such as when interfacing with third party APIs.  The aim of Actions is to provide the most general support for Agent Modeling possible without compromising the core design. Any use of native Java code strongly limits the set of platforms that your model will be able to generate code for and prevents you from using the AMF edit tools to explore the model behavior. In the case where you wish to construct a model feature and believe that it isn't possible or practical to do it with Actions, please contact us (see support section) so that we can suggest how you can accomplish what you want within Actions. If that is not possible, we'll consider developing new features that will support what you want to do.</p>
+<p>On the other hand, you may simply wish to use the Agent Modeling Framework to build a scaffolding for your model -- perhaps using your own custom Java framework for example -- and Method would be a good way to accomplish that. Also, note there are a number of other approaches to mixing hand-crafted Java together with AMF generated code. Please see the Programmer's Guide section "Integrating Java and AMF Models" for more on that.</p>
+<p>If you do decide to use the Method Action, keep in mind the following design practice recommendations:</p>
+<div class="orderedlist">
+<ol class="orderedlist" type="1">
+<li class="listitem">
+<p>Keep your usage of external API references to a minimum. If you can use only code provied by the core Java classes as well as the Apache Collections library, your code should work on every current Java target. On the other hand, if you make use of a specific ABM platform APIs your code will obviously only compile and run against that target.</p>
+</li>
+<li class="listitem">
+<p>Code should be in the form of a method body, excluding the signature. A single Java method is created using this code body. There is no support for input parameters -- if you need access to evaluated values from source actions, create agent attributes for them, set their values for the selected agents, and use them as sources for your Method Action.</p>
+</li>
+<li class="listitem">
+<p>All Java class references should be fully qualified. For example, if you wish to use the eclipse Draw2D Graphics class, you should refer to "org.eclipse.draw2d.Graphics", not simply "Graphics". If classes are not fully qualified, you will recieve compile errors. You can usually easily fix these by selecting your source code directory and choosing 
+									<span class="bold"><strong>Source &gt; Organize Imports..</strong></span> but it prevents automatic code generation.
+								</p>
+</li>
+<li class="listitem">
+<p>The method interface has no support for code completion, syntax checking or other common Java development environment features. You can avoid code maintenance and even support targetting multiple APIs by using the following technique. From your method body, call a helper method in a seperate class. The referred class could use a static method call, or you could instantiate the class and call a method against it, passing in the agent class so that the helper class can reference the agent's state. For example, if you wanted to use some custom java code to import agents from a specialized input file, you could put the following code in the Method Action body for the root Context:</p>
+</li>
+</ol>
+</div>
+<div class="literallayout">
+<p>(new&nbsp;org.me.SpecialFileLoader()).load(this);<br>
+
+</p>
+</div>
+<p>Then create a new source directory in your project called "src" (
+							<span class="bold"><strong>New &gt; Source Folder...</strong></span>) and create the class for the specialized file loader including the following method:
+						</p>
+<div class="literallayout">
+<p>public&nbsp;void&nbsp;load(MyRootModel&nbsp;model)&nbsp;{...}<br>
+
+</p>
+</div>
+<p>This approach allows you to a) maintain the working code using the Java Development Environment, b) avoid changes to the Method Action within the model, and most importantly, c) allow other implementations of the code using multiple APIs. For example, if you need to create a specialized graphics routine, you could create seperate implementations for your Escape (Eclipse Draw 2D), Ascape (Java Swing), and Repast (Simphony API) and place them in the appropriate projects. As long as the different Java source files have the same names and signatures, they will all compile correctly and execute the appropriate behavior.</p>
+<div class="section" title="Selection">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Selection_14"></a>Selection</h6>
+</div>
+</div>
+</div>
+<p>The selection determines what Agent class the code will be created within and the set of agents the method will be called upon.</p>
+</div>
+<div class="section" title="Body">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Body"></a>Body</h6>
+</div>
+</div>
+</div>
+<p>The actual code to insert in the method body. See the detailed recommendations for code use above.</p>
+</div>
+<div class="section" title="Generate">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Generate"></a>Generate</h6>
+</div>
+</div>
+</div>
+<p>Determines wether the code is actually inserted. If this is false, a bare method body will be constructed instead. This can be useful if you wish to turn off method generation in certain model implementaitons without removing the actual code.</p>
+</div>
+</div>
+</div>
+<div class="section" title="Query and Evaluation Inputs">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Query_and_Evaluation_Inputs"></a>Query and Evaluation Inputs</h4>
+</div>
+</div>
+</div>
+<p>Query and Evaluation Actions are both "Sinks" which means that they are capable of containing inputs. When you select a function, the appropriate number of inputs will be created. After selecting a function, you can view and select the inputs. The choices for the inputs will be constrained by the type of the function and the other operands you've selected.</p>
+<div class="section">
+<div class="titlepage"></div>
+<div class="section" title="Input Literals">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="N10689"></a>Input Literals</h6>
+</div>
+</div>
+</div>
+<p>Inputs can take literal values; that is values that you specify simply by entering them directly into the query. In general it is useful to think of literals as similar to local variables in a conventional programming language, whereas attributes are analogous to member variables. (And this is how they are represented in the generated Java code.) As with local variables in model code, literals are not recommended for any values that can change model behavior. The value cannot be easily accessed or changed by other model users. For greater transparency, you should instead create an Attribute with an appropriate default value, setting the "immutable" value to true. Still, literals can be useful for values that are special cases related to the evaluation or query, such as an input code, and for quickly prototyping functionality.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="section" title="Reference">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Reference_2"></a>Reference</h3>
+</div>
+</div>
+</div>
+<div class="section" title="Diagrams">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Diagrams_2"></a>Diagrams</h4>
+</div>
+</div>
+</div>
+<p>The following diagram may be helpful to readers familiar with UML and Meta-modeling:</p>
+<div class="section" title="Meta-Classes">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Meta-Classes_2"></a>Meta-Classes</h5>
+</div>
+</div>
+</div>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/actions/ActionsDiagram.png"></div>
+<p>
+						
+</p>
+</div>
+<div class="section" title="Details">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Details_4"></a>Details</h5>
+</div>
+</div>
+</div>
+<p>In the diagram above, all meta-objects except for Input, Literal, and the enumerators (lists of options) are Actions. Blue meta-classes are concrete (you can create and use them directly). Red meta-classes are key collaborations.</p>
+<div class="orderedlist">
+<ol class="orderedlist" type="1">
+<li class="listitem">
+<p>An Act is anything that might happen during the execution of an Agent-Based Model.</p>
+</li>
+<li class="listitem">
+<p>All Actions have as their root-most source action a Root. These are added first to any agent behavior and act as triggers for all target behavior. For example, a Watch will execute any time the watched attribute is modified. (As the diagrams do not refer to elements outside of the current package, we cannot see here that Accessor includes a reference to some Attribute, but it does. To see these kinds of relationships you will want to refer to the metaabm.ecore file itself.)#Actions are targets and sources of one another, but an Act can never have itself as a source. (That is, Actions are acyclic, but branches can re-converge. When we refer to an Act source or target, we typically mean to include all ancestors or descendants, not just the immediately connected Act.)</p>
+</li>
+<li class="listitem">
+<p>All Actions (except for root Actions) reference a Select, referred to as the "selected" relation. An ASelect represents the model aspects that the Act is working within; that is, the spatial, temporal and type (agent) "world" that is currently being selected.</p>
+</li>
+<li class="listitem">
+<p>Commands trigger some model state change (Set) or spatial transformation (Transform).</p>
+</li>
+<li class="listitem">
+<p>Controls determine whether target Actions are executed and against what agents. They are in some sense query terms and include Query actions and Logic Actions.</p>
+</li>
+<li class="listitem">
+<p>Transforms also specify a "destination" Select. This represents aspects that the selected agent(s) will transform to. For example, a Move may use a Rule to select all SugarAgents (type) in the SugarGrid (space) every period (time) and move them to a destination of a neighboring SugarCell (type) in the SugarGrid (space, with time implicit).</p>
+</li>
+<li class="listitem">
+<p>Sinks are Actions which use some Function (see next section) to interpret state in the form of Inputs. Inputs can come from selected agent attributes, other Actions, or literal values.</p>
+</li>
+</ol>
+</div>
+</div>
+</div>
+</div>
+<div class="section" title="Example">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Example"></a>Example</h3>
+</div>
+</div>
+</div>
+<p>In this section, we'll look at an example that should make clear how the basic Actions approach works in a model. Say we want to define a behavior like:</p>
+<div class="literallayout">
+<p>"Search&nbsp;for&nbsp;a&nbsp;random&nbsp;agent&nbsp;within&nbsp;my&nbsp;vision&nbsp;that&nbsp;is&nbsp;the&nbsp;same&nbsp;age&nbsp;as&nbsp;I&nbsp;am.&nbsp;Find&nbsp;a&nbsp;location&nbsp;next&nbsp;to&nbsp;that&nbsp;agent&nbsp;that&nbsp;is&nbsp;not&nbsp;already&nbsp;occupied&nbsp;and&nbsp;move&nbsp;to&nbsp;it."<br>
+
+</p>
+</div>
+<p>Here, we create a sequence of actions like so:</p>
+<div class="orderedlist">
+<ol class="orderedlist" type="1">
+<li class="listitem">
+<p>Select every agent for every period of the model. ("Find Partner" Rule)</p>
+</li>
+<li class="listitem">
+<p>For every member of that selection, search for other agents of the same age within vision distance. ("Partner" selection.)</p>
+</li>
+<li class="listitem">
+<p>From "Partners" find a random member and search for a neighboring locations. ("Partner Neighbor" selection.)</p>
+</li>
+<li class="listitem">
+<p>Finally, move the agent in "Find Partner" to the "Partner Neighbor" location.</p>
+</li>
+</ol>
+</div>
+<p>Now, notice that although it's convenient to speak as if there is only one "Find Partner" and one "Partner Neighbor" in step 4 above, in fact selections are flowing through for each of the results of each of the previous action sequences, and we can refer to each of the directly. We could represent these behaviors in many different ways. For example, we might want to specify the model in a (hand-drawn) graphical language or in a (made-up) textual language:</p>
+<p>
+					
+</p>
+<div class="mediaobject">
+<img src="images/actions/ActionsExample.png"></div>
+<p>
+				
+</p>
+<p>This is how it looks in an actual model:</p>
+<p>
+					
+</p>
+<div class="mediaobject">
+<img src="images/actions/ActionsExampleNew.png"></div>
+<p>
+				
+</p>
+<p>And here is how this works in detail:</p>
+<div class="orderedlist">
+<ol class="orderedlist" type="1">
+<li class="listitem">
+<p>Create a Rule that will trigger the behavior. In this case, we want this rule to apply to all "Individual" agents within the model. (Space isn't relevant in this case.</p>
+</li>
+<li class="listitem">
+<p>Create a child Select Action that will find our partner. Two important things to note here:</p>
+<div class="orderedlist">
+<ol class="orderedlist" type="a">
+<li class="listitem">
+<p>The selection occurs based on the "Find Partner" selection. This means that for each Individual in the model, we'll be searching from the point of view of that agent to some other selection of agents.</p>
+</li>
+<li class="listitem">
+<p>We also need to define what type of agent we want and in this case the space does matter. We want to find an agent that is nearby within the City space. If instead we wanted to find a partner in a social network, we'd specify that instead.</p>
+</li>
+</ol>
+</div>
+</li>
+<li class="listitem">
+<p>Create two child Query Actions:</p>
+<div class="orderedlist">
+<ol class="orderedlist" type="a">
+<li class="listitem">
+<p>We want to search for someone who is the same age as us. This highlights the importance of the idea of the Selection in the Actions design. We're qualifying Age by the rule agent's partner for the first input and by the rule agent for the second. The selection carries throughout the flow of execution and this context is an explicit part of the entire structure. Note that this is very different from the way control flow works in a traditional imperative language such as Java.</p>
+</li>
+<li class="listitem">
+<p>We also want to search using a function for nearness, "within", which takes a parameter of vision. Note that the spatial functions are all polymorphic -- if we decided later on that we would rather search within say "Kevin Bacon space", that is a graph structure representation of space, we would only need to change the space we've defined in Select Partner.</p>
+</li>
+</ol>
+</div>
+</li>
+<li class="listitem">
+<p>Intersect the results of these two query components. This delineates the end of the selection definition for any target Actions.</p>
+</li>
+<li class="listitem">
+<p>Select a neighbor. Again, we can see the importance of Selections. Here, we are selecting from the point of view of the partner, not the initial agent that the current Rule is being executed for. Note that this time our target agent is a "Block", that is, a location within the city.</p>
+</li>
+<li class="listitem">
+<p>As above, define some queries. This time we want only those agents that are:</p>
+<div class="orderedlist">
+<ol class="orderedlist" type="a">
+<li class="listitem">
+<p>available, and</p>
+</li>
+<li class="listitem">
+<p>neighbors of our partner.</p>
+</li>
+</ol>
+</div>
+</li>
+<li class="listitem">
+<p>And another intersection..</p>
+</li>
+<li class="listitem">
+<p>Finally, we move to the location we've found. All that's required at this point is to specify:</p>
+<div class="orderedlist">
+<ol class="orderedlist" type="a">
+<li class="listitem">
+<p>The movement selection, or those agents that are moving, which in this case is the original agent we're executing the rule for, and</p>
+</li>
+<li class="listitem">
+<p>The destination, which is the cell that we've found. Note that the framework infers from the space definition that the Block agent is capable of hosting the Individual.</p>
+</li>
+</ol>
+</div>
+</li>
+</ol>
+</div>
+</div>
+</div>
+<div class="section" title="Functions">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Functions"></a>Functions</h2>
+</div>
+</div>
+</div>
+<div class="section" title="Overview">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Overview_4"></a>Overview</h3>
+</div>
+</div>
+</div>
+<p>Functions are relatively simple in terms of model design, but we need to understand how particular functions work in order to develop models. Functions are divided in two ways. By type:</p>
+<div class="orderedlist">
+<ol class="orderedlist" type="1">
+<li class="listitem">
+<p>Operators are simple calculations sharing the same type.</p>
+</li>
+<li class="listitem">
+<p>Functions that can represent any general function that takes some well-defined input(s) and returns some well-defined output(s).</p>
+</li>
+</ol>
+</div>
+<p>And by usage:</p>
+<div class="orderedlist">
+<ol class="orderedlist" type="1">
+<li class="listitem">
+<p>Generics can return any value and are used in Evaluate actions.</p>
+</li>
+<li class="listitem">
+<p>Logicals return some boolean result and are used by Query actions to decide whether target Actions apply to a particular selection, and by Evaluate actions just as with any other functions. Input types should be defined as generally as possible.</p>
+</li>
+</ol>
+</div>
+<p>These overlap, so we have operators, logical operators, functions and logical functions. Functions are also divided into categories. We'll go through each of these in depth below.</p>
+<p>The most important thing to point out about functions is that - as we've seen with other Acore concepts -- they provide richer sets of functionality than traditional approaches. Many functions are designed to collaborate with one another as we'll see when looking at Spatial and Graphical functions. Functions can also trigger the creation of related model artifacts as we'll see with the Distribution functions.</p>
+<p>A technical note: conceptually, functions can return multi-values, but that is not currently implemented in the reference targets because of limitations of the target language Java.</p>
+</div>
+<div class="section" title="Details">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Details_5"></a>Details</h3>
+</div>
+</div>
+</div>
+<div class="section" title="General Functions">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="General_Functions"></a>General Functions</h4>
+</div>
+</div>
+</div>
+<p>Naturally, the Modeling tools provide general functions for performing calculations, comparisons and more complex mathematical expressions. The function library can be easily extended, and we'll be adding additional capabilities over time. As always, we welcome feedback and we'd like to hear what functions you need that aren't covered here.</p>
+</div>
+<div class="section" title="Logical Operators">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Logical_Operators"></a>Logical Operators</h4>
+</div>
+</div>
+</div>
+<p>Logical operators allow comparison between values. They are typically used in Query terms but may be used in Evaluate actions as well.</p>
+<div class="section" title="Not">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Not"></a>Not</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression !X.</p>
+</div>
+<div class="section" title="Equal">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Equal"></a>Equal</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression X==Y.</p>
+</div>
+<div class="section" title="Identical">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Identical"></a>Identical</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression X==Y.</p>
+</div>
+<div class="section" title="Greater">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Greater"></a>Greater</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression X&gt;Y.</p>
+</div>
+<div class="section" title="Lesser">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Lesser"></a>Lesser</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression X&lt;Y.</p>
+</div>
+<div class="section" title="Greater or Equal">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Greater_or_Equal"></a>Greater or Equal</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression X&gt;=Y.</p>
+</div>
+<div class="section" title="Lesser or Equal">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Lesser_or_Equal"></a>Lesser or Equal</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression X&lt;=Y.</p>
+</div>
+<div class="section" title="True">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="True"></a>True</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression true.</p>
+</div>
+<div class="section" title="False">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="False"></a>False</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression false.</p>
+</div>
+<div class="section" title="Identity">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Identity"></a>Identity</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression X.</p>
+</div>
+<div class="section" title="Different">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Different"></a>Different</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression X!=Y.</p>
+</div>
+</div>
+<div class="section" title="Numeric Operators">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Numeric_Operators"></a>Numeric Operators</h4>
+</div>
+</div>
+</div>
+<p>Numeric operators support all of the basic operators used in evaluations.</p>
+<div class="section" title="Negative Value">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Negative_Value"></a>Negative Value</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression -X.</p>
+</div>
+<div class="section" title="Add">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Add"></a>Add</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression X+Y.</p>
+</div>
+<div class="section" title="Subtract">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Subtract"></a>Subtract</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression X-Y.</p>
+</div>
+<div class="section" title="Multiply">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Multiply"></a>Multiply</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression X*Y.</p>
+</div>
+<div class="section" title="Divide">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Divide"></a>Divide</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression X/Y.</p>
+</div>
+<div class="section" title="Power">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Power"></a>Power</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression X^Y.</p>
+</div>
+<div class="section" title="Modulo">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Modulo"></a>Modulo</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression X%Y.</p>
+</div>
+<div class="section" title="Increment">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Increment"></a>Increment</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression ++X.</p>
+</div>
+<div class="section" title="Decrement">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Decrement"></a>Decrement</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression --X.</p>
+</div>
+<div class="section" title="Unit Value">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Unit_Value"></a>Unit Value</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression 1.</p>
+</div>
+<div class="section" title="Zero Value">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Zero_Value"></a>Zero Value</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression 0.</p>
+</div>
+<div class="section" title="Original Value">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Original_Value"></a>Original Value</h5>
+</div>
+</div>
+</div>
+<p>The result of the expression o.</p>
+</div>
+</div>
+<div class="section" title="Spatial">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Spatial"></a>Spatial</h4>
+</div>
+</div>
+</div>
+<p>Spatial functions provide the core functionality for Agent Models. Spatial functions are polymorphic, which basically means that they don't care what space they are operating on as long as that space is suitable for them. Spatial functions are designed to collaborate with one another. For example, by intersecting the "Neighbor", "Available" and "Toward" functions, we can design a rule that causes the agent to move to the next neighboring cell that get's it closer to some target agent. See the function details for more information.</p>
+<div class="section" title="Nearest">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Nearest"></a>Nearest</h5>
+</div>
+</div>
+</div>
+<p>Represents the nearest agents (including gird cells) or locations to this agent. If more than one agent or location is the same distance away they will all be considered. Note that while this function is defined for the selection of an agent, the result of this function is defined by the context within which it is used. If the selection specifies another agent within a space, this function will represent the nearest agent in that space. If the selection specifies a Cell within a grid space, this function will represent that cell.</p>
+</div>
+<div class="section" title="Toward">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Toward"></a>Toward</h5>
+</div>
+</div>
+</div>
+<p>Represents a location that is on the shortest path to a particular agent or location from the source agent (that is, the selection's selection's agent). This function collaborates with the within and neighbor functions to allow the agent to move in a particular direction towards some objective.</p>
+</div>
+<div class="section" title="Within">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Within_4"></a>Within</h5>
+</div>
+</div>
+</div>
+<p>Represents a limit to the distance of a spatial search. When used in combination with other spatial functions such as "nearest" requires that all agents or locations must be within the distance specified by the input value.</p>
+<div class="literallayout">
+<p>Inputs:<br>
+[Numeral]&nbsp;<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Neighbor">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Neighbor"></a>Neighbor</h5>
+</div>
+</div>
+</div>
+<p>Represents any agents that are nearest neighbors to the agent, that is nominally of distance 1. This function is only relevant in discrete spaces -- grids and networks -- where there are immediate neighboring cells as defined by the geometry of the selection's space.</p>
+</div>
+<div class="section" title="Include Self">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Include_Self"></a>Include Self</h5>
+</div>
+</div>
+</div>
+<p>Specifies whether the agent that we are searching from -- that is, the agent of the selection for this Query Action's selection -- is included in the results of the search.</p>
+</div>
+<div class="section" title="Within 2D Boundary">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Within_2D_Boundary"></a>Within 2D Boundary</h5>
+</div>
+</div>
+</div>
+<p>Represents agents or locations that exist within the boundary specified by the inputs.</p>
+<div class="literallayout">
+<p>Inputs:<br>
+[Numeral]&nbsp;<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Here">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Here"></a>Here</h5>
+</div>
+</div>
+</div>
+<p>Represents the location of the searching agent. For example, if a selection is defined for an agent cell, and that selection's selection's agent is an occupant of a cell, the cell that the agent is occupying will be used. </p>
+</div>
+<div class="section" title="Available">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Available"></a>Available</h5>
+</div>
+</div>
+</div>
+<p>Represents cells which are not currently occupied. This function is only relevant for grids which are not multi-occupant.</p>
+</div>
+<div class="section" title="Distance">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Distance"></a>Distance</h5>
+</div>
+</div>
+</div>
+<p>The distance between the source agent and an agent represented by this selection. If more than one agent is represented by the other functions in the selection, this function will the distance to an arbitrary (randomly selected) agent as defined by those other functions.</p>
+<div class="literallayout">
+<p>Outputs:<br>
+[Real]&nbsp;<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Away">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Away"></a>Away</h5>
+</div>
+</div>
+</div>
+<p>Represents a location that is on the path that will take the source agent (that is, the selection's selection's agent) the farthest distance from the agent(s) represented by the search. This function collaborates with the within and neighbor functions to allow the agent to move in a particular direction away from some location or agent.</p>
+</div>
+<div class="section" title="Minimize">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Minimize"></a>Minimize</h5>
+</div>
+</div>
+</div>
+<p>Finds the agent with the lowest value for the specified input. For example, if we created a Select for HeatCell, created a Minimize Query Term with Heat as the input Query Term, created Neighbor and Available Query Terms and set an Intersect as the target for all of those Queries, the result would be the the neighboring available cell with the lowest heat level.</p>
+<div class="literallayout">
+<p>Inputs:<br>
+[Real]&nbsp;The&nbsp;value&nbsp;we&nbsp;will&nbsp;minimize&nbsp;for.<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Maximize">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Maximize"></a>Maximize</h5>
+</div>
+</div>
+</div>
+<p>Finds the agent with the highest value for the specified input. For example, if we created a Select for HeatCell, created a Maximize Query Term with Heat as the input Query Term, created Neighbor and Available Query Terms and set an Intersect as the target for all of those Queries, the result would be the the neighboring available cell with the highest heat level.</p>
+<div class="literallayout">
+<p>Inputs:<br>
+[Real]&nbsp;The&nbsp;value&nbsp;we&nbsp;will&nbsp;maximize&nbsp;for.<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Location 2D">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Location_2D"></a>Location 2D</h5>
+</div>
+</div>
+</div>
+<p>Represents the location of the current agent for use in subsequent selections.</p>
+<div class="literallayout">
+<p>Inputs:<br>
+[Real]&nbsp;<br>
+[Real]&nbsp;<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Boundary 2D">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Boundary_2D"></a>Boundary 2D</h5>
+</div>
+</div>
+</div>
+<p>Represents a two-dimensional boundary within a space. (Not currently relevant for any general usages.)</p>
+<div class="literallayout">
+<p>Outputs:<br>
+[Real]&nbsp;<br>
+[Real]&nbsp;<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="All">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="All"></a>All</h5>
+</div>
+</div>
+</div>
+<p>Causes all agents that meet the other query terms to be included in a selection. Without this query term, a single random agent is picked out of all agents matching the query terms.</p>
+</div>
+</div>
+<div class="section" title="Random">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Random"></a>Random</h4>
+</div>
+</div>
+</div>
+<p>Random functions are especially significant for agent models. Of particular interest are the weighted membership and random state and boolean value functions. You should be familiar with these functions so that you don't have to create more complex Action flows to accomplish the same thing.</p>
+<p>Note that we only have support for uniform distributions as of this release. We're working on a collaborative design for evaluations that allow easy mixing and matching of random functions and distributions.</p>
+<div class="section" title="Random In Range">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Random_In_Range"></a>Random In Range</h5>
+</div>
+</div>
+</div>
+<p>A pseudo-random value within that numeric range specified as drawn from a uniform distribution. The minimum values are inclusive. The maximum values are inclusive for integer inputs and exclusive for Real inputs.</p>
+<div class="literallayout">
+<p>Inputs:<br>
+[Numeral]&nbsp;The&nbsp;minimum&nbsp;value&nbsp;(inclusive).<br>
+[Numeral]&nbsp;The&nbsp;maximum&nbsp;value&nbsp;(inclusive).<br>
+Outputs:<br>
+[Numeral]&nbsp;The&nbsp;random&nbsp;number.<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Random To Limit">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Random_To_Limit"></a>Random To Limit</h5>
+</div>
+</div>
+</div>
+<p>A pseudo-random value between zero and the value specified by the (non-zero) input and drawn from a uniform range. That value is inclusive for Integers and exclusive for Reals. (Note that as with the random in range function in the context of real numbers the distinction between an exclusive and inclusive limit is essentially meaningless.)</p>
+<div class="literallayout">
+<p>Inputs:<br>
+[Numeral]&nbsp;The&nbsp;maximum&nbsp;value&nbsp;(inclusive).<br>
+Outputs:<br>
+[Numeral]&nbsp;The&nbsp;result.<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Random Unit">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Random_Unit"></a>Random Unit</h5>
+</div>
+</div>
+</div>
+<p>A pseudo-random Real value between 0 and 1 drawn from a uniform distribution. (The distinction between inclusive and exclusive range is essentially meaningless in this context and we can assume that the result will never be greater or equal to 1.)</p>
+<div class="literallayout">
+<p>Outputs:<br>
+[Real]&nbsp;<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Random Boolean">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Random_Boolean"></a>Random Boolean</h5>
+</div>
+</div>
+</div>
+<p>A value that is randomly true or false, i.e. a fair coin toss.</p>
+</div>
+<div class="section" title="Random Weighted">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Random_Weighted"></a>Random Weighted</h5>
+</div>
+</div>
+</div>
+<p>An indexed value weighted against a probability distribution. The total probability must sum to 1.0. For example, an input of {.1,.2,.7} under a uniform distribution would would have 10% probability of producing "0" , 20%  for "1" and 70% for "2". This function can then be used with Item to return a biased result from another list.</p>
+<div class="literallayout">
+<p>Inputs:<br>
+[Real]&nbsp;A&nbsp;list&nbsp;of&nbsp;values&nbsp;that&nbsp;will&nbsp;determine&nbsp;the&nbsp;resulting&nbsp;weighted&nbsp;index.<br>
+Outputs:<br>
+[Integer]&nbsp;A&nbsp;resulting&nbsp;indexed&nbsp;value&nbsp;bounded&nbsp;by&nbsp;0&nbsp;and&nbsp;the&nbsp;length&nbsp;of&nbsp;the&nbsp;input&nbsp;list&nbsp;-&nbsp;1.<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Random Member">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Random_Member"></a>Random Member</h5>
+</div>
+</div>
+</div>
+<p>Represents a random value drawn from the set of Real values specified.</p>
+<div class="literallayout">
+<p>Inputs:<br>
+[Real]&nbsp;Returns&nbsp;a&nbsp;random&nbsp;member&nbsp;of&nbsp;the&nbsp;supplied&nbsp;list&nbsp;of&nbsp;numbers.<br>
+Outputs:<br>
+[Generic]&nbsp;The&nbsp;value&nbsp;of&nbsp;the&nbsp;item&nbsp;at&nbsp;a&nbsp;random&nbsp;index.<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Random State">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Random_State"></a>Random State</h5>
+</div>
+</div>
+</div>
+<p>A random specified value (option) from the specified state.</p>
+<div class="literallayout">
+<p>Inputs:<br>
+[Generic]&nbsp;The&nbsp;state&nbsp;to&nbsp;select&nbsp;items&nbsp;from.&nbsp;All&nbsp;items&nbsp;are&nbsp;included.<br>
+Outputs:<br>
+[Integer]&nbsp;The&nbsp;resulting&nbsp;option.&nbsp;<br>
+
+</p>
+</div>
+</div>
+</div>
+<div class="section" title="Graphic">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Graphic"></a>Graphic</h4>
+</div>
+</div>
+</div>
+<p>Graphic functions are combined within Style Evaluate Actions to determine how to draw an agent within a visualization. One nice aspect of this approach is that the same style definition can be used in multiple places without changing any code. For example, the same style could be used to draw an agent on a two-dimensional grid within Escape, a three-dimensional shape within Escape, a Java Swing based visualization in Ascape, and an XML configured visualizaiton in Repast Simphony.</p>
+<p>To define a graphic style for an agent, design a flow in which you create Evaluate Actions for color and shape, and then create an Evaluate Action with the graphic fill or outline function as a target of these.</p>
+<div class="section" title="Shape Oval">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Shape_Oval"></a>Shape Oval</h5>
+</div>
+</div>
+</div>
+<p>Draw a generic oval.</p>
+</div>
+<div class="section" title="Shape Rectangle">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Shape_Rectangle"></a>Shape Rectangle</h5>
+</div>
+</div>
+</div>
+<p>Draws a rectangular shape.</p>
+</div>
+<div class="section" title="Shape Inset">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Shape_Inset"></a>Shape Inset</h5>
+</div>
+</div>
+</div>
+<p>Shrinks the current shape by the input amount. (The overall scale is currently unspecified, but in most implementations should be 20.)</p>
+<div class="literallayout">
+<p>Inputs:<br>
+[Integer]&nbsp;Number&nbsp;of&nbsp;nominal&nbsp;pixels&nbsp;to&nbsp;inset.<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Shape Marker">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Shape_Marker"></a>Shape Marker</h5>
+</div>
+</div>
+</div>
+<p>Draw a marker, that is a graphical indicator that can be used to add an additional que about the object state. For example, in a two-dimensional graphics representation this might be a small shape drawn inset at the corner of the larger shape. </p>
+</div>
+<div class="section" title="Shape Marker 2">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Shape_Marker_2"></a>Shape Marker 2</h5>
+</div>
+</div>
+</div>
+<p>Represents a marker placed in a different location from the other shape markers.</p>
+</div>
+<div class="section" title="Shape Marker 3">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Shape_Marker_3"></a>Shape Marker 3</h5>
+</div>
+</div>
+</div>
+<p>Represents a marker placed in a different location from the other shape markers.</p>
+</div>
+<div class="section" title="Color RGB">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Color_RGB"></a>Color RGB</h5>
+</div>
+</div>
+</div>
+<p>A color specified by the three inputs for Red, Green and Blue color components. Those inputs are expected to be in the range 0..1.</p>
+<div class="literallayout">
+<p>Inputs:<br>
+[Real]&nbsp;A&nbsp;value&nbsp;from&nbsp;0.0&nbsp;to&nbsp;1.0.<br>
+[Real]&nbsp;A&nbsp;value&nbsp;from&nbsp;0.0&nbsp;to&nbsp;1.0.<br>
+[Real]&nbsp;A&nbsp;value&nbsp;from&nbsp;0.0&nbsp;to&nbsp;1.0.<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Color Red">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Color_Red"></a>Color Red</h5>
+</div>
+</div>
+</div>
+<p>The color red.</p>
+</div>
+<div class="section" title="Color Yellow">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Color_Yellow"></a>Color Yellow</h5>
+</div>
+</div>
+</div>
+<p>The color yellow.</p>
+</div>
+<div class="section" title="Color Blue">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Color_Blue"></a>Color Blue</h5>
+</div>
+</div>
+</div>
+<p>The color blue.</p>
+</div>
+<div class="section" title="Color Orange">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Color_Orange"></a>Color Orange</h5>
+</div>
+</div>
+</div>
+<p>The color orange.</p>
+</div>
+<div class="section" title="Color Green">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Color_Green"></a>Color Green</h5>
+</div>
+</div>
+</div>
+<p>The color green.</p>
+</div>
+<div class="section" title="Color Purple">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Color_Purple"></a>Color Purple</h5>
+</div>
+</div>
+</div>
+<p>The color purple.</p>
+</div>
+<div class="section" title="Color Black">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Color_Black"></a>Color Black</h5>
+</div>
+</div>
+</div>
+<p>The color black.</p>
+</div>
+<div class="section" title="Color White">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Color_White"></a>Color White</h5>
+</div>
+</div>
+</div>
+<p>The color white.</p>
+</div>
+<div class="section" title="Color Gray">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Color_Gray"></a>Color Gray</h5>
+</div>
+</div>
+</div>
+<p>The color gray.</p>
+</div>
+<div class="section" title="Graphic Outline">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Graphic_Outline"></a>Graphic Outline</h5>
+</div>
+</div>
+</div>
+<p>Draws an outline of the last evaluated shape, using the last specified color or the default color (usually black) if none has been specified.</p>
+</div>
+<div class="section" title="Graphic Fill">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Graphic_Fill"></a>Graphic Fill</h5>
+</div>
+</div>
+</div>
+<p>Fills the last evaluated shape with the last specified color or the default color (usually black) if none has been specified.</p>
+</div>
+</div>
+<div class="section" title="Time">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Time"></a>Time</h4>
+</div>
+</div>
+</div>
+<p>Time functions return values related to model execution time. </p>
+<div class="section" title="Now">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Now"></a>Now</h5>
+</div>
+</div>
+</div>
+<p>The current simulation period, that is the number of iterations that the model has gone through, or in the case of models with callibrarted time, the number of iterations added to the model's nominal start time.</p>
+<div class="literallayout">
+<p>Outputs:<br>
+[Integer]&nbsp;The&nbsp;current&nbsp;period.<br>
+
+</p>
+</div>
+</div>
+</div>
+<div class="section" title="Math">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Math"></a>Math</h4>
+</div>
+</div>
+</div>
+<p>The math functions use the extremely well specified and tested routines form the Java Math library. (Because of copyright restrictions, we aren't able to include the exact definitions here. Click on the links to get more details on each function.)</p>
+<div class="section" title="Sine">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Sine"></a>Sine</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#sin(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#sin(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Cosine">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Cosine"></a>Cosine</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#cos(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#cos(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Tangent">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Tangent"></a>Tangent</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#tan(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#tan(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Arc Sine">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Arc_Sine"></a>Arc Sine</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#asin(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#asin(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Arc Cosine">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Arc_Cosine"></a>Arc Cosine</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#acos(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#acos(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Arc Tangent">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Arc_Tangent"></a>Arc Tangent</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#atan(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#atan(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Convert Degree to Radians">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Convert_Degree_to_Radians"></a>Convert Degree to Radians</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#toRadians(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#toRadians(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Convert Radians to Degrees">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Convert_Radians_to_Degrees"></a>Convert Radians to Degrees</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#toDegrees(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#toDegrees(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Exp">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Exp"></a>Exp</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#exp(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#exp(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Log">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Log"></a>Log</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#log(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#log(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Log b10">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Log_b10"></a>Log b10</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#log10(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#log10(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Square Root">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Square_Root"></a>Square Root</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#squareRoot(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#squareRoot(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Cube Root">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Cube_Root"></a>Cube Root</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#cbrt(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#cbrt(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Remainder">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Remainder"></a>Remainder</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#iEEEremainder(double,%20double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#iEEEremainder(double,%20double)</a>
+						
+</p>
+</div>
+<div class="section" title="Ceiling">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Ceiling"></a>Ceiling</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#ceil(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#ceil(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Floor">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Floor"></a>Floor</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#floor(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#floor(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Rount">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Rount"></a>Rount</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#rint(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#rint(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Arc Tangent Rectangular">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Arc_Tangent_Rectangular"></a>Arc Tangent Rectangular</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#atan2(double,%20double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#atan2(double,%20double)</a>
+						
+</p>
+</div>
+<div class="section" title="Power">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Power_2"></a>Power</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#pow(double,%20double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#pow(double,%20double)</a>
+						
+</p>
+</div>
+<div class="section" title="Absolute Value">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Absolute_Value"></a>Absolute Value</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#abs(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#abs(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Maximum">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Maximum"></a>Maximum</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#max(double,%20double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#max(double,%20double)</a>
+						
+</p>
+</div>
+<div class="section" title="Minimum">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Minimum"></a>Minimum</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#min(double,%20double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#min(double,%20double)</a>
+						
+</p>
+</div>
+<div class="section" title="ULP">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="ULP"></a>ULP</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#ulp(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#ulp(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Sign">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Sign"></a>Sign</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#signum(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#signum(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Hyperbolic Sine">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Hyperbolic_Sine"></a>Hyperbolic Sine</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#sinh(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#sinh(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Hyperbolic Cosine">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Hyperbolic_Cosine"></a>Hyperbolic Cosine</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#cosh(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#cosh(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Hyperbolic Tan">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Hyperbolic_Tan"></a>Hyperbolic Tan</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#tanh(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#tanh(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Hypotuneuse">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Hypotuneuse"></a>Hypotuneuse</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#hypotuneuse(double,%20double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#hypotuneuse(double,%20double)</a>
+						
+</p>
+</div>
+<div class="section" title="Expm1">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Expm1"></a>Expm1</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#expm1(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#expm1(double)</a>
+						
+</p>
+</div>
+<div class="section" title="Log1p">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Log1p"></a>Log1p</h5>
+</div>
+</div>
+</div>
+<p>See JavaDoc: 
+							<a class="ulink" href="http://java.sun.com/javase/6/docs/api/java/lang/Math.html#log1p(double)" target="_new">http://java.sun.com/javase/6/docs/api/java/lang/Math.html#log1p(double)</a>
+						
+</p>
+</div>
+</div>
+<div class="section" title="List">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="List"></a>List</h4>
+</div>
+</div>
+</div>
+<p>List functions are used for working with arrays and other functions that have lists as output.</p>
+<div class="section" title="Item">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Item"></a>Item</h5>
+</div>
+</div>
+</div>
+<p>Returns the item at the specified index from the list of items provided. Those items will typically be input primitives such as Integer or Real values.</p>
+<div class="literallayout">
+<p>Inputs:<br>
+[Generic]&nbsp;<br>
+[Integer]&nbsp;<br>
+Outputs:<br>
+[Generic]&nbsp;<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Length">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Length"></a>Length</h5>
+</div>
+</div>
+</div>
+<p>The number of items in the provided list of items.</p>
+<div class="literallayout">
+<p>Inputs:<br>
+[Generic]&nbsp;<br>
+Outputs:<br>
+[Integer]&nbsp;<br>
+
+</p>
+</div>
+</div>
+</div>
+<div class="section" title="Distribution">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Distribution"></a>Distribution</h4>
+</div>
+</div>
+</div>
+<p>One of the most common tasks in the Agent Modeling process is the creation of agents with particular states drawn from a distribution. For example, you might want to create a number of agents with wealth randomly distributed between some minimum and maximum values. The distribution functions greatly ease the process of setting up those initializations and their associated parameters.</p>
+<div class="section" title="Uniform Cross Distribution">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Uniform_Cross_Distribution"></a>Uniform Cross Distribution</h5>
+</div>
+</div>
+</div>
+<p>A random number taken from a distribution of values as defined by a cross of all values. (See Cross Distribution.) This funciton then returns a value drawn from the minimum and maximum values as determined by the current agent state. In the cross distribution, each of the values is treated independently so that an input attribute is created for every potential combination of states.</p>
+<div class="literallayout">
+<p>Inputs:<br>
+[Generic]&nbsp;The&nbsp;list&nbsp;of&nbsp;states&nbsp;to&nbsp;factor&nbsp;into&nbsp;the&nbsp;distribution.&nbsp;This&nbsp;is&nbsp;a&nbsp;multi-argument,&nbsp;which&nbsp;means&nbsp;that&nbsp;you&nbsp;can&nbsp;specify&nbsp;any&nbsp;number&nbsp;of&nbsp;attributes&nbsp;as&nbsp;arguments.<br>
+[Real]&nbsp;The&nbsp;set&nbsp;of&nbsp;attributes&nbsp;that&nbsp;will&nbsp;determine&nbsp;the&nbsp;minimum&nbsp;value&nbsp;of&nbsp;the&nbsp;function&nbsp;result&nbsp;based&nbsp;on&nbsp;the&nbsp;current&nbsp;state&nbsp;of&nbsp;the&nbsp;agent.&nbsp;Note&nbsp;that&nbsp;this&nbsp;list&nbsp;is&nbsp;automatically&nbsp;created&nbsp;and&nbsp;maintained.&nbsp;These&nbsp;values&nbsp;don't&nbsp;need&nbsp;to&nbsp;be&nbsp;and&nbsp;should&nbsp;not&nbsp;be&nbsp;manually&nbsp;edited.<br>
+[Real]&nbsp;The&nbsp;set&nbsp;of&nbsp;attributes&nbsp;that&nbsp;will&nbsp;determine&nbsp;the&nbsp;maximum&nbsp;value&nbsp;of&nbsp;the&nbsp;function&nbsp;result&nbsp;based&nbsp;on&nbsp;the&nbsp;current&nbsp;state&nbsp;of&nbsp;the&nbsp;agent.&nbsp;Note&nbsp;that&nbsp;this&nbsp;list&nbsp;is&nbsp;automatically&nbsp;created&nbsp;and&nbsp;maintained.&nbsp;These&nbsp;values&nbsp;don't&nbsp;need&nbsp;to&nbsp;be&nbsp;and&nbsp;should&nbsp;not&nbsp;be&nbsp;manually&nbsp;edited.<br>
+Outputs:<br>
+[Real]&nbsp;The&nbsp;resulting&nbsp;random&nbsp;number&nbsp;based&nbsp;on&nbsp;the&nbsp;current&nbsp;agent&nbsp;state&nbsp;and&nbsp;the&nbsp;input&nbsp;parameters.<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Uniform Additive Distribution">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Uniform_Additive_Distribution"></a>Uniform Additive Distribution</h5>
+</div>
+</div>
+</div>
+<p>A random number taken from a distribution of values in which each of the minimum and maximum values are added to determine a total minimum and maximum value. (See Additive Distribution.) In the additive distribution, each of the values is treated as dependent on the others so that an input attribute is only created for each seperate state.</p>
+<div class="literallayout">
+<p>Inputs:<br>
+[Generic]&nbsp;The&nbsp;list&nbsp;of&nbsp;states&nbsp;to&nbsp;factor&nbsp;into&nbsp;the&nbsp;distribution.&nbsp;This&nbsp;is&nbsp;a&nbsp;multi-argument,&nbsp;which&nbsp;means&nbsp;that&nbsp;you&nbsp;can&nbsp;specify&nbsp;any&nbsp;number&nbsp;of&nbsp;attributes&nbsp;as&nbsp;arguments.<br>
+[Real]&nbsp;The&nbsp;set&nbsp;of&nbsp;attributes&nbsp;that&nbsp;will&nbsp;determine&nbsp;the&nbsp;minimum&nbsp;value&nbsp;of&nbsp;the&nbsp;function&nbsp;result&nbsp;based&nbsp;on&nbsp;the&nbsp;current&nbsp;state&nbsp;of&nbsp;the&nbsp;agent.&nbsp;Note&nbsp;that&nbsp;this&nbsp;list&nbsp;is&nbsp;automatically&nbsp;created&nbsp;and&nbsp;maintained.&nbsp;These&nbsp;values&nbsp;don't&nbsp;need&nbsp;to&nbsp;be&nbsp;and&nbsp;should&nbsp;not&nbsp;be&nbsp;manually&nbsp;edited.<br>
+[Real]&nbsp;The&nbsp;set&nbsp;of&nbsp;attributes&nbsp;that&nbsp;will&nbsp;determine&nbsp;the&nbsp;maximum&nbsp;value&nbsp;of&nbsp;the&nbsp;function&nbsp;result&nbsp;based&nbsp;on&nbsp;the&nbsp;current&nbsp;state&nbsp;of&nbsp;the&nbsp;agent.&nbsp;Note&nbsp;that&nbsp;this&nbsp;list&nbsp;is&nbsp;automatically&nbsp;created&nbsp;and&nbsp;maintained.&nbsp;These&nbsp;values&nbsp;don't&nbsp;need&nbsp;to&nbsp;be&nbsp;and&nbsp;should&nbsp;not&nbsp;be&nbsp;manually&nbsp;edited.<br>
+Outputs:<br>
+[Real]&nbsp;The&nbsp;resulting&nbsp;random&nbsp;number&nbsp;based&nbsp;on&nbsp;the&nbsp;current&nbsp;agent&nbsp;state&nbsp;and&nbsp;the&nbsp;input&nbsp;parameters.<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Cross Distribution">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Cross_Distribution"></a>Cross Distribution</h5>
+</div>
+</div>
+</div>
+<p>A value taken from a set of (auto-generated) attributes based on the value of each state included. For example, if the multi-values included a state X with values A and B and a state Y with values I and II, this distribution would create separate input attributes for AI, AII, BI and BII. Then for an agent with States A and II this function would return the value specified by the AII input attribute.</p>
+<div class="literallayout">
+<p>Inputs:<br>
+[Generic]&nbsp;The&nbsp;list&nbsp;of&nbsp;states&nbsp;to&nbsp;factor&nbsp;into&nbsp;the&nbsp;distribution.&nbsp;This&nbsp;is&nbsp;a&nbsp;multi-argument,&nbsp;which&nbsp;means&nbsp;that&nbsp;you&nbsp;can&nbsp;specify&nbsp;any&nbsp;number&nbsp;of&nbsp;attributes&nbsp;as&nbsp;arguments.<br>
+[Real]&nbsp;The&nbsp;set&nbsp;of&nbsp;attributes&nbsp;that&nbsp;when&nbsp;multiplied&nbsp;against&nbsp;each&nbsp;other&nbsp;will&nbsp;determine&nbsp;the&nbsp;value&nbsp;of&nbsp;the&nbsp;function&nbsp;result&nbsp;based&nbsp;on&nbsp;the&nbsp;current&nbsp;state&nbsp;of&nbsp;the&nbsp;agent.&nbsp;Note&nbsp;that&nbsp;this&nbsp;list&nbsp;is&nbsp;automatically&nbsp;created&nbsp;and&nbsp;maintained.&nbsp;These&nbsp;values&nbsp;don't&nbsp;need&nbsp;to&nbsp;be&nbsp;and&nbsp;should&nbsp;not&nbsp;be&nbsp;manually&nbsp;edited.<br>
+Outputs:<br>
+[Real]&nbsp;The&nbsp;resulting&nbsp;value&nbsp;based&nbsp;on&nbsp;the&nbsp;current&nbsp;agent&nbsp;state&nbsp;and&nbsp;the&nbsp;input&nbsp;parameters.<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Additive Distribution">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Additive_Distribution"></a>Additive Distribution</h5>
+</div>
+</div>
+</div>
+<p>A value taken from a set of (auto-generated) attributes based on the combined values of the states provided. For example, if the multi-values included a state X with values A and B and a state Y with values I and II, this distribution would create input attributes for A, B, I and II. Those values would then be added together, so that for an Agent with state A and II this function would return A + II.</p>
+<div class="literallayout">
+<p>Inputs:<br>
+[Generic]&nbsp;The&nbsp;states&nbsp;to&nbsp;include&nbsp;in&nbsp;the&nbsp;distribution.&nbsp;This&nbsp;is&nbsp;a&nbsp;multi-argument,&nbsp;which&nbsp;means&nbsp;that&nbsp;you&nbsp;can&nbsp;specify&nbsp;any&nbsp;number&nbsp;of&nbsp;attributes&nbsp;as&nbsp;arguments.<br>
+[Real]&nbsp;The&nbsp;set&nbsp;of&nbsp;attributes&nbsp;that&nbsp;when&nbsp;combined&nbsp;with&nbsp;each&nbsp;other&nbsp;determine&nbsp;the&nbsp;value&nbsp;of&nbsp;the&nbsp;function&nbsp;result&nbsp;based&nbsp;on&nbsp;the&nbsp;current&nbsp;state&nbsp;of&nbsp;the&nbsp;agent.&nbsp;Note&nbsp;that&nbsp;this&nbsp;list&nbsp;is&nbsp;automatically&nbsp;created&nbsp;and&nbsp;maintained.&nbsp;These&nbsp;values&nbsp;don't&nbsp;need&nbsp;to&nbsp;be&nbsp;and&nbsp;should&nbsp;not&nbsp;be&nbsp;manually&nbsp;edited.<br>
+Outputs:<br>
+[Real]&nbsp;The&nbsp;resulting&nbsp;value&nbsp;based&nbsp;on&nbsp;the&nbsp;current&nbsp;agent&nbsp;state&nbsp;and&nbsp;the&nbsp;input&nbsp;parameters.<br>
+
+</p>
+</div>
+</div>
+</div>
+</div>
+<div class="section" title="Examples">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Examples"></a>Examples</h3>
+</div>
+</div>
+</div>
+<div class="section" title="Spatial">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Spatial_2"></a>Spatial</h4>
+</div>
+</div>
+</div>
+<p>For examples of how spatial functions can be used within action flows to provide agents with complex movement behaviors, see the Modelers Guide actions examples. In the following example from that section, we define an action that causes a partner agent to move to an available neighboring space.</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/actions/ActionsExampleNew.png"></div>
+<p>
+					
+</p>
+</div>
+<div class="section" title="Graphic">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Graphic_2"></a>Graphic</h4>
+</div>
+</div>
+</div>
+<p>In the following action flow for the epidemic style, we've create Query Actions to determine each agent's current state, picked a color based on that, and then used a shared target to select a shape for the agent style and fill it:</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/functions/GraphicsFunctionExampleDesign.png"></div>
+<p>
+					
+</p>
+<p>After saving the model we can execute the two and three dimensional visualizations. Note something really nice -- even the charts have used the colors we've defined!</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/functions/GraphicsFunctionExampleRun.png"></div>
+<p>
+					
+</p>
+</div>
+<div class="section" title="Distribution">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Distribution_2"></a>Distribution</h4>
+</div>
+</div>
+</div>
+<p>In the following example, we walk through the process of using a distribution functions, demonstrating how we can easily modify the Epidemic model so that instead of simply setting an initial exposed population, we can define factors that take together will determine an individuals initial exposure state. We simply:</p>
+<div class="orderedlist">
+<ol class="orderedlist" type="1">
+<li class="listitem">
+<p>Create an Evaluate Action called "Initial Status". </p>
+</li>
+<li class="listitem">
+<p>Set the function to "Cross Distribution"</p>
+</li>
+<li class="listitem">
+<p>Opened the "Multiple Value" node in the editor, and clicked the "Multiple Values" item within it.</p>
+</li>
+<li class="listitem">
+<p>Selected the "Status" attribute.</p>
+</li>
+</ol>
+</div>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/functions/DistributionDesignChoice.png"></div>
+<p> 
+					
+</p>
+<p>The appropriate attributes are automatically added to the model, as you can see below.</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/functions/DistributionDesign.png"></div>
+<p> 
+					
+</p>
+<p>In order to assign these values to the agent, we'd simply need to assign the results of this Evaluate Action to the agent.</p>
+</div>
+</div>
+<div class="section" title="Reference">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Reference_3"></a>Reference</h3>
+</div>
+</div>
+</div>
+<div class="section" title="Diagrams">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Diagrams_3"></a>Diagrams</h4>
+</div>
+</div>
+</div>
+<p>The following diagram may be helpful to readers familiar with UML and Meta-modeling:</p>
+<div class="section" title="Meta-Classes">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Meta-Classes_3"></a>Meta-Classes</h5>
+</div>
+</div>
+</div>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/functions/FunctionsDiagram.png"></div>
+<p>
+						
+</p>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="navfooter">
+<hr>
+<table summary="Navigation footer" width="100%">
+<tr>
+<td align="left" width="40%"><a accesskey="p" href="Introduction.html">Prev</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="User_Guide.html">Next</a></td>
+</tr>
+<tr>
+<td valign="top" align="left" width="40%">Chapter&nbsp;1.&nbsp;Introduction&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;Chapter&nbsp;3.&nbsp;User Guide</td>
+</tr>
+</table>
+</div>
+</body>
+</html>
diff --git a/amp/documentation/contents/New_and_Noteworthy.html b/amp/documentation/contents/New_and_Noteworthy.html
new file mode 100644
index 0000000..6b2f5a4
--- /dev/null
+++ b/amp/documentation/contents/New_and_Noteworthy.html
@@ -0,0 +1,403 @@
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter&nbsp;7.&nbsp;New and Noteworthy</title>
+<link href="book.css" type="text/css" rel="stylesheet">
+<meta content="DocBook XSL Stylesheets V1.76.0" name="generator">
+<link rel="home" href="index.html" title="Agent Modeling Guide">
+<link rel="up" href="index.html" title="Agent Modeling Guide">
+<link rel="prev" href="Installation_Guide.html" title="Chapter&nbsp;6.&nbsp;Installation Guide">
+<link rel="next" href="Resources.html" title="Chapter&nbsp;8.&nbsp;Resources">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="navheader">
+<table summary="Navigation header" width="100%">
+<tr>
+<th align="center" colspan="3">Chapter&nbsp;7.&nbsp;New and Noteworthy</th>
+</tr>
+<tr>
+<td align="left" width="20%"><a accesskey="p" href="Installation_Guide.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="Resources.html">Next</a></td>
+</tr>
+</table>
+<hr>
+</div>
+<div class="chapter" title="Chapter&nbsp;7.&nbsp;New and Noteworthy">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title">
+<a name="New_and_Noteworthy"></a>Chapter&nbsp;7.&nbsp;New and Noteworthy</h2>
+</div>
+</div>
+</div>
+<div class="toc">
+<dl>
+<dt>
+<span class="section"><a href="New_and_Noteworthy.html#Release_0.8.0">Release 0.8.0</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="New_and_Noteworthy.html#Model_Visualization">Model Visualization</a></span>
+</dt>
+<dt>
+<span class="section"><a href="New_and_Noteworthy.html#Modeling_Framework">Modeling Framework</a></span>
+</dt>
+<dt>
+<span class="section"><a href="New_and_Noteworthy.html#Model_Editing">Model Editing</a></span>
+</dt>
+<dt>
+<span class="section"><a href="New_and_Noteworthy.html#Modeling_Tools">Modeling Tools</a></span>
+</dt>
+<dt>
+<span class="section"><a href="New_and_Noteworthy.html#User_Experience">User Experience</a></span>
+</dt>
+</dl>
+</dd>
+</dl>
+</div>
+<div class="section" title="Release 0.8.0">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Release_0.8.0"></a>Release 0.8.0</h2>
+</div>
+</div>
+</div>
+<p>The first official release of AMP includes many new or expanded features in addition to overall quality and usability improvements. The highlights are listed below.</p>
+<div class="section" title="Model Visualization">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Model_Visualization"></a>Model Visualization</h3>
+</div>
+</div>
+</div>
+<table id="N114D7">
+<tr>
+						
+<td>
+							<span class="bold"><strong>Graph Visualization</strong></span>
+						</td>
+						<td>Built in support for visualization and generation (as always with AMF, no code to write!) of graph models.</td>
+					
+</tr>
+<tr>
+						
+<td>&nbsp;</td>
+						<td>
+							
+<div class="mediaobject">
+<img src="images/execution/ViewGraph.png"></div>
+						
+</td>
+					
+</tr>
+<tr>
+						
+<td>
+							<span class="bold"><strong>3D View Improvements</strong></span>
+						</td>
+						<td>2 1/2 visualizations now support interpolated positions for agents. You can't see that here, but it means that the agents move smoothly through space, even if they are on a fixed grid. You can turn that feature on and off and you can change perspective easily.</td>
+					
+</tr>
+<tr>
+						
+<td>&nbsp;</td>
+						<td>
+							
+<div class="mediaobject">
+<img src="images/execution/View3D.png"></div>
+						
+</td>
+					
+</tr>
+<tr>
+						
+<td>
+							<span class="bold"><strong>API Improvements</strong></span>
+						</td>
+						<td>There have been significant changes to the APIs. As always, we've followed common Eclipse and EMF idioms, which means that to customize model visualization you typically only need to implement figure, shape or color providers and then adapt them to your model. And of course all of your existing models will generate code for the new APIs.</td>
+					
+</tr>
+<tr>
+						
+<td>
+							<span class="bold"><strong>More Legacy Views</strong></span>
+						</td>
+						<td>In addition, we've supported all existing Ascape views (not all of these are supported through AMF generated code..yet!).</td>
+					
+</tr>
+</table>
+</div>
+<div class="section" title="Modeling Framework">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Modeling_Framework"></a>Modeling Framework</h3>
+</div>
+</div>
+</div>
+<table id="N1153E">
+<tr>
+						
+<td>
+							<span class="bold"><strong>New Actions</strong></span>
+						</td>
+						<td>Some key new Actions have just been introduced. These provide support for recursion (Cause and Perform), minimization and maximization queries, diffusion (Diffuse) and derived (Derive) values and give the framework a much more general purpose flavor while preserving model generality. You should be able to build many more kinds of models without resorting to custom coding. See the Modeler's guide Actions section for the details.</td>
+					
+</tr>
+<tr>
+						
+<td>
+							<span class="bold"><strong>Improved Model Representation and Generation</strong></span>
+						</td>
+						<td>There have been many improvements to how models can be designed and the code that is generated from those designs. As just one example, you can now search for agents within a model without having to specify an explicit space. As with model editing improvements, many of these changes have been driven by user input. If there is something you'd like to be able to do with AMF but can't, let us know by filing a feature request or posting to the newsgroup.</td>
+					
+</tr>
+<tr>
+						
+<td>
+							<span class="bold"><strong>Multiscale Support</strong></span>
+						</td>
+						<td>Support for modeling across scales has been greatly improved. For the Escape target it is very easy to define models with enclosing hierarchies. For example in the EpidemicRegion model, we've defined Regions which contain Cities which contain Individuals.</td>
+					
+</tr>
+<tr>
+						
+<td>&nbsp;</td>
+						<td>
+							
+<div class="mediaobject">
+<img src="images/examples/EpidemicRegional.png"></div>
+						
+</td>
+					
+</tr>
+<tr>
+						
+<td>&nbsp;</td>
+						<td>When the model is executed, views are automatically created for each member Scape (context) and data is collected for each level of scale.</td>
+					
+</tr>
+<tr>
+						
+<td>&nbsp;</td>
+						<td>
+							
+<div class="mediaobject">
+<img src="images/examples/EpidemicRegionalRun.png"></div>
+						
+</td>
+					
+</tr>
+</table>
+</div>
+<div class="section" title="Model Editing">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Model_Editing"></a>Model Editing</h3>
+</div>
+</div>
+</div>
+<table id="N115A1">
+<tr>
+						
+<td>
+							<span class="bold"><strong>Overall Usability</strong></span>
+						</td>
+						<td>Significant effort has gone into improving the overall user interface for editing models. User feedback has been enormously helpful here -- please keep letting us know what works and what doesn't! In addition to the obvious changes, a lot of work has been done under the covers to provide a more seamless model building experience. We've fixed some glitches, but we've also added a number of things to help simplify and automate the model building process. As an example, when you create an agent, a style is automatically created along with default color, shape and paint actions.</td>
+					
+</tr>
+<tr>
+						
+<td>
+							<span class="bold"><strong>New Icons</strong></span>
+						</td>
+						<td>Most of the existing icons have been replaced or custom designed (which has incidentally required a lot of documentation to be recreated) to provide a better and more consistent user interface.</td>
+					
+</tr>
+<tr>
+						
+<td>
+							<span class="bold"><strong>Action Lists</strong></span>
+						</td>
+						<td>Actions are now displayed in lists, not in a tree structure. As the actual Actions are graph structures, the tree structure never matched well with this representation. Taking a simpler approach has made the action definition process much more transparent.</td>
+					
+</tr>
+<tr>
+						
+<td>&nbsp;</td>
+						<td>
+							
+<div class="mediaobject">
+<img src="images/tools/ActionsExample.png"></div>
+						
+</td>
+					
+</tr>
+</table>
+</div>
+<div class="section" title="Modeling Tools">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Modeling_Tools"></a>Modeling Tools</h3>
+</div>
+</div>
+</div>
+<table id="N115E7">
+<tr>
+						
+<td>
+							<span class="bold"><strong>Parameter Management Support</strong></span>
+						</td>
+						<td>AMP now has full support for editing and launching of parameter files, including code completion and all of the other editor niceties.</td>
+					
+</tr>
+<tr>
+						
+<td>&nbsp;</td>
+						<td>
+							
+<div class="mediaobject">
+<img src="images/params/Edit.png"></div>
+						
+</td>
+					
+</tr>
+<tr>
+						
+<td>
+							<span class="bold"><strong>Test-Driven Modeling and Simulation</strong></span>
+						</td>
+						<td>Tests can now easily be defined and analyzed.</td>
+					
+</tr>
+<tr>
+						
+<td>&nbsp;</td>
+						<td>
+							
+<div class="mediaobject">
+<img src="images/params/TestResults.png"></div>
+						
+</td>
+					
+</tr>
+<tr>
+						
+<td>
+							<span class="bold"><strong>Automated Data Export</strong></span>
+						</td>
+						<td>Data can now be easily generated to a common EMF based (adata) data format.</td>
+					
+</tr>
+</table>
+</div>
+<div class="section" title="User Experience">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="User_Experience"></a>User Experience</h3>
+</div>
+</div>
+</div>
+<table id="N1163E">
+<tr>
+						
+<td>
+							<span class="bold"><strong>Overall</strong></span>
+						</td>
+						<td>Last but certainly not least, a lot of effort has gone into making it easier to get into AMP as well as to understand how to work with its more powerful features. Eclipse supports a number of sophisticated User Assistance features, and we've taken advantage of most of them.</td>
+					
+</tr>
+<tr>
+						
+<td>
+							<span class="bold"><strong>Documentation</strong></span>
+						</td>
+						<td>Over a 100 pages of documentation, plus another 100 pages of Ascape documentation converted to Eclipse Help and PDF.</td>
+					
+</tr>
+<tr>
+						
+<td>
+							<span class="bold"><strong>Welcome and Intro</strong></span>
+						</td>
+						<td>When starting AMP you'll be met by a custom welcome screen providing an easy path into Agent Modeling on Eclipse.</td>
+					
+</tr>
+<tr>
+						
+<td>&nbsp;</td>
+						<td>
+							
+<div class="mediaobject">
+<img src="images/users/WelcomeScreen.png"></div>
+						
+</td>
+					
+</tr>
+<tr>
+						
+<td>
+							<span class="bold"><strong>Cheat Sheets</strong></span>
+						</td>
+						<td>Helpful guides walk you through initial steps.</td>
+					
+</tr>
+<tr>
+						
+<td>&nbsp;</td>
+						<td>
+							
+<div class="mediaobject">
+<img src="images/users/CheatSheets.png"></div>
+						
+</td>
+					
+</tr>
+<tr>
+						
+<td>
+							<span class="bold"><strong>Integrated Models</strong></span>
+						</td>
+						<td>You can run example Ascape models directly from the documentation!</td>
+					
+</tr>
+<tr>
+						
+<td>&nbsp;</td>
+						<td>
+							
+<div class="mediaobject">
+<img src="images/users/IntegratedModels.png"></div>
+						
+</td>
+					
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="navfooter">
+<hr>
+<table summary="Navigation footer" width="100%">
+<tr>
+<td align="left" width="40%"><a accesskey="p" href="Installation_Guide.html">Prev</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="Resources.html">Next</a></td>
+</tr>
+<tr>
+<td valign="top" align="left" width="40%">Chapter&nbsp;6.&nbsp;Installation Guide&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;Chapter&nbsp;8.&nbsp;Resources</td>
+</tr>
+</table>
+</div>
+</body>
+</html>
diff --git a/amp/documentation/contents/Programer_Guide.html b/amp/documentation/contents/Programer_Guide.html
new file mode 100644
index 0000000..acda65e
--- /dev/null
+++ b/amp/documentation/contents/Programer_Guide.html
@@ -0,0 +1,650 @@
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter&nbsp;5.&nbsp;Programer Guide</title>
+<link href="book.css" type="text/css" rel="stylesheet">
+<meta content="DocBook XSL Stylesheets V1.76.0" name="generator">
+<link rel="home" href="index.html" title="Agent Modeling Guide">
+<link rel="up" href="index.html" title="Agent Modeling Guide">
+<link rel="prev" href="Tutorials.html" title="Chapter&nbsp;4.&nbsp;Tutorials">
+<link rel="next" href="Installation_Guide.html" title="Chapter&nbsp;6.&nbsp;Installation Guide">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="navheader">
+<table summary="Navigation header" width="100%">
+<tr>
+<th align="center" colspan="3">Chapter&nbsp;5.&nbsp;Programer Guide</th>
+</tr>
+<tr>
+<td align="left" width="20%"><a accesskey="p" href="Tutorials.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="Installation_Guide.html">Next</a></td>
+</tr>
+</table>
+<hr>
+</div>
+<div class="chapter" title="Chapter&nbsp;5.&nbsp;Programer Guide">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title">
+<a name="Programer_Guide"></a>Chapter&nbsp;5.&nbsp;Programer Guide</h2>
+</div>
+</div>
+</div>
+<div class="toc">
+<dl>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Overview_6">Overview</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Documentation">Documentation</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Online">Online</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Update_Site">Update Site</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Installation">Installation</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Example_Java_Models">Example Java Models</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Exploring_Example_ABM_Models">Exploring Example ABM Models</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Installing_Models">Installing Models</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Generating_Models">Generating Models</a></span>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Developing_Models">Developing Models</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Cheatsheet">Cheatsheet</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Steps">Steps</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Executing_Models">Executing Models</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Tutorial">Tutorial</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Extending_and_Customizing_AMP">Extending and Customizing AMP</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Integrating_Java_and_AMF_Models">Integrating Java and AMF Models</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Method_Action">Method Action</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Protected_Code_Regions">Protected Code Regions</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Interface_and_Base_Class_Generation">Interface and Base Class Generation</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Converting_Existing_Ascape_Models">Converting Existing Ascape Models</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Model">Model</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#View">View</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Convert_the_low-level_imports_from_AWT_and_Swing_to_SWT">Convert the low-level imports from AWT and Swing to SWT</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Convert_color_features">Convert color features</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Change_agent_color_getters">Change agent color getters</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Get_rid_of_image_features">Get rid of image features</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Modify_usages_of_DrawFeatures">Modify usages of DrawFeatures</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Configuration">Configuration</a></span>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+</dl>
+</div>
+<div class="section" title="Overview">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Overview_6"></a>Overview</h2>
+</div>
+</div>
+</div>
+<p>Escape is a full-featured Agent-Based Modeling (ABM) integrated development environment (IDE) with a Java based API and end user modeling tools. It's based on Ascape, which has been in use for more than 10 years. The core API is very stable, and that should give users a way to explore the features of AMP without concerns about keeping in synch with the rapidly evolving AXF /AGF API. It allows modelers to code in Java and/or generate models with AMF and then execute those models within the same development environment.</p>
+<p>
+				
+</p>
+<div class="mediaobject">
+<img src="images/EscapeExecutionScreenshot.png"></div>
+<p>
+			
+</p>
+<p>A primary purpose of the Escape project -- apart from the obvious goal of providing a nice Eclipse hosted ABM toolkit -- is to provide an exemplar to demonstrate how any arbitrary agent modeling framework can be integrated within the AMP environment. A cool aspect of this is that AMP has no dependencies on Escape, but also that the underlying ABM modeling framework for Escape has no dependencies on AMP -- instead Escape simply provides the runtime glue between AMP and the ABM framework. The underlying ABM framework uses the Ascape API, an API that first began development more than ten years ago and that has not been modified at all in order for it to work within the AMP environment.</p>
+</div>
+<div class="section" title="Documentation">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Documentation"></a>Documentation</h2>
+</div>
+</div>
+</div>
+<p>In addition to this documentation, there are a number of other resources available related to Escape development. Because it's API is based on Ascape, a lot of resources developed for Ascape are equally applicable to Ascape. The Ascape documentation is bundled with some distributions of the AMP tools, but if you are using the Eclipse AMP download, you can access it online or install it from the Ascape update site.</p>
+<div class="section" title="Online">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Online"></a>Online</h3>
+</div>
+</div>
+</div>
+<p>There is a complete 
+					<a class="ulink" href="http://ascape.sourceforge.net/api/index.html" target="_new">Javadoc</a> as well as an 
+					<a class="ulink" href="http://ascape.sourceforge.net/docs/TheAscapeManual5.pdf" target="_new">excellent manual</a> and other web resources. See the 
+					<a class="ulink" href="http://ascape.sourceforge.net" target="_new">Ascape Website</a> for general information.
+				</p>
+</div>
+<div class="section" title="Update Site">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Update_Site"></a>Update Site</h3>
+</div>
+</div>
+</div>
+<p>Or, you can install the Ascape Manual into the eclipse help system by adding the following update site and selecting the "Documentations and Source Code" feature. See the Installation Guide for more information.</p>
+<div class="literallayout">
+<p>http://ascape.sourceforge.net/eclipse<br>
+
+</p>
+</div>
+</div>
+</div>
+<div class="section" title="Installation">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Installation"></a>Installation</h2>
+</div>
+</div>
+</div>
+<p>See the Installation Guide for Detailed Information -- that all applies to general Escape usage as well.</p>
+<p>Note that there are no dependendencies on AMF, and therefore EMF or any other modeling technologies to do Java development for Escape or for running generated models within Escape. The deployment environment can be quite light-weight. Simply install the AXF, AGF, and AMP Escape features. You can build from source but in that case you'l need to launch a self-hosted runtime, so it's best to simply install from the update site if you're not actually doing AMP development.</p>
+<p>Escape is 
+				<a class="ulink" href="http://eclipse.org/amp/installing/" target="_new">installed</a> by default with the other model components. If you want to do 3D (really 2 1/2) visualizations, you will want AGF3D and the LWJGL dependency.
+			</p>
+</div>
+<div class="section" title="Example Java Models">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Example_Java_Models"></a>Example Java Models</h2>
+</div>
+</div>
+</div>
+<div class="section" title="Exploring Example ABM Models">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Exploring_Example_ABM_Models"></a>Exploring Example ABM Models</h3>
+</div>
+</div>
+</div>
+<p>The first thing most people will want to do in AMP is to play with the example models. You can explore AMF models as well as some really interesting classic ABM models.</p>
+<div class="section" title="Installing Models">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Installing_Models"></a>Installing Models</h4>
+</div>
+</div>
+</div>
+<p>See the Installation Guide to find out how to get the example models.</p>
+<div class="section" title="AMF Models">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="AMF_Models"></a>AMF Models</h5>
+</div>
+</div>
+</div>
+<p>All AMF models produce pure Java code so they can be used like any other Escape Java model.</p>
+<div class="literallayout">
+<p>org.eclipse.amp/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape<br>
+
+</p>
+</div>
+<p>To understand the capabilities of AMF in producing other kinds of Java models, you might also want to try out running the same models automatically generated for Ascape or Repast. These are located at dev.eclipse.org in cvsroot/modeling:</p>
+<div class="literallayout">
+<p>org.eclipse.amp/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.ascape<br>
+org.eclipse.amp/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.repast<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Classic Escape / Ascape Java Models">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Classic_Escape_.2F_Ascape_Java_Models"></a>Classic Escape / Ascape Java Models</h5>
+</div>
+</div>
+</div>
+<p>Many models have been created using Ascape over the years, including all of the classic models created at Brookings and some other cool models such as Craig Reynold's Boids and a pretty cool little traffic model, and they've all been converted to run in Escape. They're in Java but you can execute and explore them in exactly the same way as the Epidemic model above. All of the Ascape example models have been converted (a straightforward process) from their intial Ascape incarnations. For licensing reasons (they're BSD, not EPL) we can't host them directly on the Eclipse site.  You can get the projects in two ways:</p>
+<p>Once you've downloaded the projects, open up the src folder and navigate to the Java files for the actual models. For example, to run Conway's Life, you'll want src/edu.brook.life.ConwayLife. Right-click on the Java file and select "Execute". There are many models to explore! (It's not always obvious which Java files are for models, so you may have to poke around a bit. We need to put together a catalog here. Another nice opportunity for user contributions.)</p>
+<p>These are SVN projects in the sourceforge SVN. For help, see 
+							<a class="ulink" href="/wiki/http://www.eclipse.org/subversive/documentation/teamSupport/find_check_wiz.php_this_page" target="_new">http://www.eclipse.org/subversive/documentation/teamSupport/find_check_wiz.php this page</a>.
+						</p>
+<div class="literallayout">
+<p>http://ascape.svn.sourceforge.net/svnroot/ascape/org.ascape.escape.models.brook<br>
+http://ascape.svn.sourceforge.net/svnroot/ascape/org.ascape.escape.models.examples<br>
+
+</p>
+</div>
+</div>
+</div>
+<div class="section" title="Generating Models">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Generating_Models"></a>Generating Models</h4>
+</div>
+</div>
+</div>
+<p>And of course, you can always use the AMF tools to generate models and then customize them from there. See the following section on integrating AMF with Java for more on that. There are a number of models developed with AMF that can automatically generate example models to run in Escape. There are two ways to run the example models:</p>
+<div class="section" title="Creating a New Escape Project">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Creating_a_New_Escape_Project"></a>Creating a New Escape Project</h5>
+</div>
+</div>
+</div>
+<p>The best option is to simply create a new Escape project and drag the models into it!</p>
+<div class="orderedlist">
+<ol class="orderedlist" type="1">
+<li class="listitem">
+<p>If you're not already there, open the Agent Modeling Perspective. Select Window &gt; Open Perspective &gt; Other.. and then Agent Modeling. (Or you can choose Window &gt; Reset Perspective and the Agent Modeling perspective should appear in the Open Perspective list itself.)</p>
+</li>
+<li class="listitem">
+<p>Create the project where we'll place our model. Select File &gt; New &gt; Escape AMF Project. Give it a name like "escape.tutorial", then click Finish.</p>
+</li>
+<li class="listitem">
+<p>Finally grab the Epidemic.metaabm model at 
+									<a class="ulink" href="http://download.eclipse.org/amp/models/Epidemic.metaabm" target="_new">http://download.eclipse.org/amp/models/Epidemic.metaabm</a> and drag it into the project. (Depending on your browser the file may load as text directly into your browser, in which case just right-click on the link and save it to a file.)
+								</p>
+</li>
+</ol>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="section" title="Developing Models">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Developing_Models"></a>Developing Models</h2>
+</div>
+</div>
+</div>
+<p>The easiest way for Java developers to get started doing agent-based modeling in Eclipse is to begin to write programs using it. To develop new models, you can:</p>
+<div class="section" title="Cheatsheet">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Cheatsheet"></a>Cheatsheet</h3>
+</div>
+</div>
+</div>
+<p>By far the simplest way to get started is with the cheatsheet. This walks you through the complete process of creating a Java based model. 
+					<span class="bold"><strong>Help &gt; Cheat Sheets...</strong></span> and then select "Create an Escape Java Model" from within the "Agent Modeling" category.
+				</p>
+</div>
+<div class="section" title="Steps">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Steps"></a>Steps</h3>
+</div>
+</div>
+</div>
+<div class="orderedlist">
+<ol class="orderedlist" type="1">
+<li class="listitem">
+<p>Create a new Escape project. The Escape projects are actually configured for AMF code generation so there are dependencies and builders in there that you don't need; you can remove all of the escape builders and any of the kitchen sink items. The "Create an Escape Java Model" cheat sheet will walk you through the process of creating a new Java based project and model.</p>
+</li>
+<li class="listitem">
+<p>Or for more experienced Eclipse users, you can simply to just create a new Plug-in Project and add the necessary dependencies there. Have a look at the example escape project to see what you need. Note that you will likely need more dependencies then you need to simply build -- this is because the class loader uses the classes from the project path and so runtime classes have to be there as well. We may simply package an Eclipse runtime convenience plug-in to gather these dependencies up a bit. Then just create new Java classes for your root model scape and agents just as you would for an Ascape project.</p>
+</li>
+</ol>
+</div>
+</div>
+</div>
+<div class="section" title="Executing Models">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Executing_Models"></a>Executing Models</h2>
+</div>
+</div>
+</div>
+<p>See the User Guide Execution Section for information on launching and controling models.</p>
+<p>We have a complete cheat sheet supporting this tutorial. Simply go to 
+				<span class="bold"><strong>Help &gt; Cheat Sheets...</strong></span> and then select "Run an Example Model" from within the "Agent Modeling" category.
+			</p>
+<div class="section" title="Tutorial">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Tutorial"></a>Tutorial</h3>
+</div>
+</div>
+</div>
+<p>We've developer have a complete cheat sheet supporting this tutorial. Simply go to 
+					<span class="bold"><strong>Help &gt; Cheat Sheets...</strong></span> and then select "Run an Example Model" from within the "Agent Modeling" category.
+				</p>
+</div>
+</div>
+<div class="section" title="Extending and Customizing AMP">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Extending_and_Customizing_AMP"></a>Extending and Customizing AMP</h2>
+</div>
+</div>
+</div>
+<p>This subject is beyond the scope of this Agent Modeling manual. A future Agent Modeling Platform Guide will discuss these issues in detail. For now, please keep an eye on the Wiki and committer blogs. And of course please ask questions on the AMP forum and developer mailing list. Letting us know you're interested in doing something is the best way to get it documented!</p>
+</div>
+<div class="section" title="Integrating Java and AMF Models">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Integrating_Java_and_AMF_Models"></a>Integrating Java and AMF Models</h2>
+</div>
+</div>
+</div>
+<p>If you're like many Java developers, you might find point-and-click interfaces a bit lame. Personally, I've changed my tune in this, and I now define all of my ABM models from the editor, saving Java for truly specialized tasks. But even without generation of agent behavior, Acore can be a really valuable tool, as the GIS example shows. The way to look at metaABM is as a way to compose your overall model and automate the tedious parts. Apart from Java generated code, the AMF meta-model maintains a number of very useful artifacts. For example, the Repast Simphony target maintains model.score and all of the model.rs component. Generally, AMF should save time and hassle while making your models far more transparent even if you never use the Actions component to define agent behavior.</p>
+<div class="section" title="Method Action">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Method_Action"></a>Method Action</h3>
+</div>
+</div>
+</div>
+<p>As explained in the action section, you can simply create a "Method" act with hand-written Java code. This option is nice because all code is contained within the AMF file. But it can be difficult to maintain large blocks of Java code as you aren't using a Java editor to edit the Java code itself. One way to get around this is to create your code in the generated Java method and then copy it into the Method action. Note one imporant issue here -- you'll generally have to fully qualify your Java references as you won't be able to change the imports statements directly. </p>
+</div>
+<div class="section" title="Protected Code Regions">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Protected_Code_Regions"></a>Protected Code Regions</h3>
+</div>
+</div>
+</div>
+<p>You can mix and match Action behavior with Java and generated code with POJOs. One way to do this is through using protected regions. Select the agent you want to create protected methods for and then select "Generate Protected" from the "Mode" property. Now, create actions just as you have before, or use your existing ones. On code generation, open up the relevant java file and examine the methods that have been created. </p>
+<p>
+					
+</p>
+<div class="mediaobject">
+<img src="images/pojo/ProgrammingPojoGenerateProps.png"></div>
+<p>
+				
+</p>
+<p>You can put whatever you want within the PROTECTED REGION comments and those changes will be preserved when the model is regenerated. You can create a schedule, rule or watcher, maintain custom code for the actual implementations, and still have the model adapt to changes in the underlying data structure -- if for example you want to import a modified shape file.</p>
+<p>
+					
+</p>
+<div class="mediaobject">
+<img src="images/pojo/ProgrammingPojoGenerateCode.png"></div>
+<p>
+				
+</p>
+</div>
+<div class="section" title="Interface and Base Class Generation">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Interface_and_Base_Class_Generation"></a>Interface and Base Class Generation</h3>
+</div>
+</div>
+</div>
+<p>Another approach which can be more robust is to generate the basic model stubs (like an abstract base class except that it isn't abstract) and then override your model with implementations. AMF provides support for generic skeletons and interfaces.</p>
+<p>
+					
+</p>
+<div class="mediaobject">
+<img src="images/pojo/ProgrammingPojoGenerate.png"></div>
+<p>
+				
+</p>
+</div>
+</div>
+<div class="section" title="Converting Existing Ascape Models">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Converting_Existing_Ascape_Models"></a>Converting Existing Ascape Models</h2>
+</div>
+</div>
+</div>
+<p>There are only a few changes should have to make to existing Ascape models or to use existing Ascape documentation to develop Escape models.</p>
+<div class="section" title="Model">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Model"></a>Model</h3>
+</div>
+</div>
+</div>
+<p>The core model is completely API compatible. No changes!</p>
+</div>
+<div class="section" title="View">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="View"></a>View</h3>
+</div>
+</div>
+</div>
+<p>Because Escape uses SWT and Ascape uses Swing, there are a few unavoidable incompatibilities. Most of these we avoid by using higher level APIs but here are the key changes that you're likely to have to make:</p>
+<div class="section" title="Convert the low-level imports from AWT and Swing to SWT">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Convert_the_low-level_imports_from_AWT_and_Swing_to_SWT"></a>Convert the low-level imports from AWT and Swing to SWT</h4>
+</div>
+</div>
+</div>
+<p>The simplest way to accomplish this is to remove all of the imports and then organize imports. For example:</p>
+<div class="literallayout">
+<p>java.awt.Color&nbsp;=&gt;&nbsp;org.eclipse.swt.graphics.Color<br>
+java.awt.Graphics&nbsp;=&gt;&nbsp;org.eclipse.draw2d.Graphics<br>
+
+</p>
+</div>
+<p>Then just do a global find for all of the imports and replace them with nothing. This is a great place for a regexp. Try:</p>
+<div class="literallayout">
+<p>find:&nbsp;import&nbsp;java\.awt\.(.*);<br>
+replace:&nbsp;[nothing]<br>
+
+</p>
+</div>
+<p>You don't have to replace these with the SWT equivalents, just click on the project, right-click and choose "Source:Organize Imports.."
+						By the way, a great way to avoid having to select the right entries in optimize imports and to alert you when you have missed anything is to prevent the awt and swing classes from being used at all. Right-click on project, choose "Build Path:Configure Build Path", go to Libraries tab, open JRE System Library, choose "Access Rules", edit, and then add entries for java/awt/** and javax/swing/**. The code will regenerate and you'll have error markers for all of the stuff that won't work with Escape and Eclipse.</p>
+</div>
+<div class="section" title="Convert color features">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Convert_color_features"></a>Convert color features</h4>
+</div>
+</div>
+</div>
+<p>You can't use AWT colors either so you'll need to replace any colors. AMP provides a convenience classes for Colors called ColorFeature and ColorFeatureConcrete. You can use these or any of the other ways to define SWT colors. For example:</p>
+<div class="literallayout">
+<p>Color.lightGray&nbsp;=&gt;&nbsp;ColorFeature.LIGHT_GRAY<br>
+new&nbsp;Color(Math.min(1.0f,&nbsp;(float)&nbsp;(redEnergy&nbsp;+&nbsp;orangeEnergy)),&nbsp;(float)&nbsp;orangeEnergy&nbsp;*&nbsp;.8f,&nbsp;(float)&nbsp;blueEnergy)&nbsp;=&gt;&nbsp;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;ColorFeatureConcrete.create(Math.min(1.0f,&nbsp;(float)&nbsp;(redEnergy&nbsp;+&nbsp;orangeEnergy)),&nbsp;(float)&nbsp;orangeEnergy&nbsp;*&nbsp;.8f,&nbsp;(float)&nbsp;blueEnergy)<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Change agent color getters">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Change_agent_color_getters"></a>Change agent color getters</h4>
+</div>
+</div>
+</div>
+<p>If you've defined colors through overriding Agents as in most models, you'll need to change the method signature. You could just do a global replace for this one.</p>
+<div class="literallayout">
+<p>public&nbsp;Color&nbsp;getColor(&nbsp;=&gt;&nbsp;public&nbsp;Object&nbsp;getPlatformColor(<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Get rid of image features">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Get_rid_of_image_features"></a>Get rid of image features</h4>
+</div>
+</div>
+</div>
+<p>Escape doesn't support them. In practice they haven't been used a lot. At some point perhaps we'll have nice sprite support instead. :)</p>
+<div class="literallayout">
+<p>public&nbsp;Image&nbsp;getImage()&nbsp;{**}&nbsp;=&gt;&nbsp;""<br>
+
+</p>
+</div>
+</div>
+<div class="section" title="Modify usages of DrawFeatures">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Modify_usages_of_DrawFeatures"></a>Modify usages of DrawFeatures</h4>
+</div>
+</div>
+</div>
+<p>If you've created any of your own draw features, you'll need to change them slightly to accommodate the differences between the AWT and SWT / Draw2D APIs. This should be pretty straightforwrd. For example:</p>
+<div class="literallayout">
+<p>g.setColor(...<br>
+g.fillOval(..<br>
+becomes:<br>
+g.setBackgroundColor(<br>
+g.fillOval(..<br>
+
+</p>
+</div>
+<p>That's about it, though it's probable that we've missed something. Please post a message on the amp newsgroup if you run into any other conversion issues.</p>
+</div>
+<div class="section" title="Configuration">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Configuration"></a>Configuration</h4>
+</div>
+</div>
+</div>
+<p>Instead of using Ant, Escape has really nice support for parameterizing and testing models. See 
+						<a class="ulink" href="/wiki/Experimenting_and_Testing" target="_new">Experimenting and Testing</a> (todo). If you do want to work with ant you will need to install the plugins from the Sourceforge download site. (These have dependencies that I didn't want to bother with going through the Eclipse IP process to get in. If for some reason you think these should be part of core Escape let Miles know and I'll take care of it.) Ant has not been tested for Escape so it's not even clear it will work.
+					</p>
+</div>
+</div>
+</div>
+</div>
+<div class="navfooter">
+<hr>
+<table summary="Navigation footer" width="100%">
+<tr>
+<td align="left" width="40%"><a accesskey="p" href="Tutorials.html">Prev</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="Installation_Guide.html">Next</a></td>
+</tr>
+<tr>
+<td valign="top" align="left" width="40%">Chapter&nbsp;4.&nbsp;Tutorials&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;Chapter&nbsp;6.&nbsp;Installation Guide</td>
+</tr>
+</table>
+</div>
+</body>
+</html>
diff --git a/amp/documentation/contents/Resources.html b/amp/documentation/contents/Resources.html
new file mode 100644
index 0000000..101148f
--- /dev/null
+++ b/amp/documentation/contents/Resources.html
@@ -0,0 +1,100 @@
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter&nbsp;8.&nbsp;Resources</title>
+<link href="book.css" type="text/css" rel="stylesheet">
+<meta content="DocBook XSL Stylesheets V1.76.0" name="generator">
+<link rel="home" href="index.html" title="Agent Modeling Guide">
+<link rel="up" href="index.html" title="Agent Modeling Guide">
+<link rel="prev" href="New_and_Noteworthy.html" title="Chapter&nbsp;7.&nbsp;New and Noteworthy">
+<link rel="next" href="Support.html" title="Chapter&nbsp;9.&nbsp;Support">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="navheader">
+<table summary="Navigation header" width="100%">
+<tr>
+<th align="center" colspan="3">Chapter&nbsp;8.&nbsp;Resources</th>
+</tr>
+<tr>
+<td align="left" width="20%"><a accesskey="p" href="New_and_Noteworthy.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="Support.html">Next</a></td>
+</tr>
+</table>
+<hr>
+</div>
+<div class="chapter" title="Chapter&nbsp;8.&nbsp;Resources">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title">
+<a name="Resources"></a>Chapter&nbsp;8.&nbsp;Resources</h2>
+</div>
+</div>
+</div>
+<div class="toc">
+<dl>
+<dt>
+<span class="section"><a href="Resources.html#Websites">Websites</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Resources.html#Papers">Papers</a></span>
+</dt>
+</dl>
+</div>
+<div class="section" title="Websites">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Websites"></a>Websites</h2>
+</div>
+</div>
+</div>
+<p>
+				
+<a class="ulink" href="http://www.eclipse.org/amp" target="_new">Eclipse Agent Modeling Project (Incubation)</a>
+			
+</p>
+<p>
+				
+<a class="ulink" href="http://ascape.sourceforge.net" target="_new">Ascape</a>
+			
+</p>
+<p>
+				
+<a class="ulink" href="http://metascapeabm.com" target="_new">Metascape, LLC</a>
+			
+</p>
+</div>
+<div class="section" title="Papers">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Papers"></a>Papers</h2>
+</div>
+</div>
+</div>
+<p>
+				
+<a class="ulink" href="http://www.pnas.org/content/99/suppl.3/7304.full" target="_new">Ascape</a>
+
+				<a class="ulink" href="http://www.pnas.org/content/99/suppl.3/7280.full" target="_new">Agent-Based Modeling</a>
+
+				<a class="ulink" href="http://jasss.soc.surrey.ac.uk/11/4/12.html" target="_new">Why Model?</a>
+			
+</p>
+</div>
+</div>
+<div class="navfooter">
+<hr>
+<table summary="Navigation footer" width="100%">
+<tr>
+<td align="left" width="40%"><a accesskey="p" href="New_and_Noteworthy.html">Prev</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="Support.html">Next</a></td>
+</tr>
+<tr>
+<td valign="top" align="left" width="40%">Chapter&nbsp;7.&nbsp;New and Noteworthy&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;Chapter&nbsp;9.&nbsp;Support</td>
+</tr>
+</table>
+</div>
+</body>
+</html>
diff --git a/amp/documentation/contents/Support.html b/amp/documentation/contents/Support.html
new file mode 100644
index 0000000..381a1be
--- /dev/null
+++ b/amp/documentation/contents/Support.html
@@ -0,0 +1,234 @@
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter&nbsp;9.&nbsp;Support</title>
+<link href="book.css" type="text/css" rel="stylesheet">
+<meta content="DocBook XSL Stylesheets V1.76.0" name="generator">
+<link rel="home" href="index.html" title="Agent Modeling Guide">
+<link rel="up" href="index.html" title="Agent Modeling Guide">
+<link rel="prev" href="Resources.html" title="Chapter&nbsp;8.&nbsp;Resources">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="navheader">
+<table summary="Navigation header" width="100%">
+<tr>
+<th align="center" colspan="3">Chapter&nbsp;9.&nbsp;Support</th>
+</tr>
+<tr>
+<td align="left" width="20%"><a accesskey="p" href="Resources.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;</td>
+</tr>
+</table>
+<hr>
+</div>
+<div class="chapter" title="Chapter&nbsp;9.&nbsp;Support">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title">
+<a name="Support"></a>Chapter&nbsp;9.&nbsp;Support</h2>
+</div>
+</div>
+</div>
+<div class="toc">
+<dl>
+<dt>
+<span class="section"><a href="Support.html#Issues">Issues</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Support.html#General_Support.2C_Questions_and_Discussion">General Support, Questions and Discussion</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Support.html#View_Existing_Bugs_and_Feature_Requests">View Existing Bugs and Feature Requests</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Support.html#File_a_Bug">File a Bug</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Support.html#Discuss_AMP_Development_and_Project">Discuss AMP Development and Project</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Support.html#Other_Contacts">Other Contacts</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Support.html#Professional_Support">Professional Support</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Support.html#Media_and_Private_Communications">Media and Private Communications</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Support.html#Get_Involved">Get Involved</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Support.html#Improve_this_Documentation.21">Improve this Documentation!</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Support.html#Contribute_to_AMP">Contribute to AMP</a></span>
+</dt>
+</dl>
+</dd>
+</dl>
+</div>
+<div class="section" title="Issues">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Issues"></a>Issues</h2>
+</div>
+</div>
+</div>
+<p>Eclipse and the AMP project have a mandate for open communication. Please note that unless you are a customer of an AMP project contributor we will not respond to direct requests for support. We 
+				<span class="italic">will</span> make every effort to support your use of AMP in the following ways:
+			</p>
+<div class="section" title="General Support, Questions and Discussion">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="General_Support.2C_Questions_and_Discussion"></a>General Support, Questions and Discussion</h3>
+</div>
+</div>
+</div>
+<p>The 
+					<a class="ulink" href="http://www.eclipse.org/forums/index.php?t=thread&amp;frm_id=17&amp;S=f4fa6cb31327772a3b626dc409db409b" target="_new">Agent Modeling Platform Newsgroup</a> is the place to discuss or get support for any of the Eclipse AMP tools. Don't hesitate to ask questions about model implementation or bring up more general topics for discussion.
+				</p>
+</div>
+<div class="section" title="View Existing Bugs and Feature Requests">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="View_Existing_Bugs_and_Feature_Requests"></a>View Existing Bugs and Feature Requests</h3>
+</div>
+</div>
+</div>
+<p>If you have a problem or idea for improvement, there's a good chance that its already been discovered. To avoid duplication, please check the current bugs before filing a new bug report or feature request.</p>
+<p>
+					
+<a class="ulink" href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;product=AMP&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;keywords_type=allwords&amp;keywords=&amp;emailtype1=substring&amp;email1=&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=" target="_new">Search Existing Bugs</a>
+				
+</p>
+</div>
+<div class="section" title="File a Bug">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="File_a_Bug"></a>File a Bug</h3>
+</div>
+</div>
+</div>
+<p>This may sound obvious, but if something doesn't work as it should, the only way that we're going to find out is if someone reports it. All AMP related bugs or feature requests should use the Eclipse Bugzilla.</p>
+<p>
+					
+<a class="ulink" href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=AMP&amp;rep_platform=All&amp;op_sys=All" target="_new">File a Bug or Feature Request</a>
+				
+</p>
+</div>
+<div class="section" title="Discuss AMP Development and Project">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Discuss_AMP_Development_and_Project"></a>Discuss AMP Development and Project</h3>
+</div>
+</div>
+</div>
+<p>All discussion about software development, design and project management issues take place on the AMP dev-list. If you're interested in contributing to the AMP project, this is a good place to contact us. 
+					<a class="ulink" href="https://dev.eclipse.org/mailman/listinfo/amp-dev" target="_new">https://dev.eclipse.org/mailman/listinfo/amp-dev</a>.
+				</p>
+</div>
+</div>
+<div class="section" title="Other Contacts">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Other_Contacts"></a>Other Contacts</h2>
+</div>
+</div>
+</div>
+<div class="section" title="Professional Support">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Professional_Support"></a>Professional Support</h3>
+</div>
+</div>
+</div>
+<p>The AMP project developers -- among the most experienced developers of agent models and tools anywhere -- are naturally the best source for Agent Modeling development, support and training. Please feel free to contact the project lead or other project contributors directly to discuss professional support options.</p>
+</div>
+<div class="section" title="Media and Private Communications">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Media_and_Private_Communications"></a>Media and Private Communications</h3>
+</div>
+</div>
+</div>
+<p>For project related but non-public communications such as media enquires or potential project sponsorship, please contact Miles Parker, the Eclipse AMP project lead, at amp_enquiry@metascapeabm.com. (Requests for support and other communications to this address will be ignored.)</p>
+</div>
+</div>
+<div class="section" title="Get Involved">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Get_Involved"></a>Get Involved</h2>
+</div>
+</div>
+</div>
+<p>If you find this tool valuable, please be aware that most of its development occurred through volunteer contributions from individuals and companies that have received no direct funding. You can support continual development efforts financially by purchasing related software tools from companies and organizations that help develop it, including funding for developer time in grant proposals. You can support the Eclipse platform in general by becoming a member organization of Eclipse. But the most important thing that you can contribute is your own time and enthusiasm, either through directly contributing to AMP or by promoting its use in blogs and other social media. For more detailed information about contributing to AMP, the following sections.</p>
+<div class="section" title="Improve this Documentation!">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Improve_this_Documentation.21"></a>Improve this Documentation!</h3>
+</div>
+</div>
+</div>
+<p>This documentation was produced using the excellent Eclispe integrated Mylyn documentation tools. Please see 
+					<a class="ulink" href="http://wiki.eclipse.org/AMP/Building" target="_new">this page</a> for how to help with documentation.
+				</p>
+</div>
+<div class="section" title="Contribute to AMP">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Contribute_to_AMP"></a>Contribute to AMP</h3>
+</div>
+</div>
+</div>
+<p>Please see this document for some things that we could use help on: 
+					<a class="ulink" href="http://wiki.eclipse.org/AMP/Getting_Involved" target="_new">our wiki</a>. But the best thing is to look at the bugzilla. Find bugs that you can help with, or add your own ideas for helpful features.
+				</p>
+</div>
+</div>
+</div>
+<div class="navfooter">
+<hr>
+<table summary="Navigation footer" width="100%">
+<tr>
+<td align="left" width="40%"><a accesskey="p" href="Resources.html">Prev</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;</td>
+</tr>
+<tr>
+<td valign="top" align="left" width="40%">Chapter&nbsp;8.&nbsp;Resources&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;</td>
+</tr>
+</table>
+</div>
+</body>
+</html>
diff --git a/amp/documentation/contents/Tutorials.html b/amp/documentation/contents/Tutorials.html
new file mode 100644
index 0000000..1a811bf
--- /dev/null
+++ b/amp/documentation/contents/Tutorials.html
@@ -0,0 +1,896 @@
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter&nbsp;4.&nbsp;Tutorials</title>
+<link href="book.css" type="text/css" rel="stylesheet">
+<meta content="DocBook XSL Stylesheets V1.76.0" name="generator">
+<link rel="home" href="index.html" title="Agent Modeling Guide">
+<link rel="up" href="index.html" title="Agent Modeling Guide">
+<link rel="prev" href="User_Guide.html" title="Chapter&nbsp;3.&nbsp;User Guide">
+<link rel="next" href="Programer_Guide.html" title="Chapter&nbsp;5.&nbsp;Programer Guide">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="navheader">
+<table summary="Navigation header" width="100%">
+<tr>
+<th align="center" colspan="3">Chapter&nbsp;4.&nbsp;Tutorials</th>
+</tr>
+<tr>
+<td align="left" width="20%"><a accesskey="p" href="User_Guide.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="Programer_Guide.html">Next</a></td>
+</tr>
+</table>
+<hr>
+</div>
+<div class="chapter" title="Chapter&nbsp;4.&nbsp;Tutorials">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title">
+<a name="Tutorials"></a>Chapter&nbsp;4.&nbsp;Tutorials</h2>
+</div>
+</div>
+</div>
+<div class="toc">
+<dl>
+<dt>
+<span class="section"><a href="Tutorials.html#Designing_a_Model">Designing a Model</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Tutorials.html#Model_Goals">Model Goals</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Tutorials.html#Model_Implementation">Model Implementation</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Tutorials.html#Setup">Setup</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Tutorials.html#Open_Agent_Modeling_Perspective">Open Agent Modeling Perspective</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Tutorials.html#Create_Project">Create Project</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Tutorials.html#Name_project">Name project</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Tutorials.html#Create_Model">Create Model</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Tutorials.html#Structure_3">Structure</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Tutorials.html#Bug_Agent">Bug Agent</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Tutorials.html#Grid_Space">Grid Space</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Tutorials.html#Actions_Part_I">Actions Part I</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Tutorials.html#Create_Initialize_Rule">Create Initialize Rule</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Tutorials.html#Run_Initial_Model">Run Initial Model</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Tutorials.html#Styles_2">Styles</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Tutorials.html#Create_Bug_Style">Create Bug Style</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Tutorials.html#Actions_Part_II">Actions Part II</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Tutorials.html#Create_Select_and_Query_Actions"></a></span>
+</dt>
+<dt>
+<span class="section"><a href="Tutorials.html#Run_Final_Model">Run Final Model</a></span>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+</dl>
+</div>
+<div class="section" title="Designing a Model">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Designing_a_Model"></a>Designing a Model</h2>
+</div>
+</div>
+</div>
+<p>In this tutorial, we'll walk through the creation of a complete model. While the tutorial seems lengthy, that's because we've tried to be thorough in describing each step. As we demonstrate in an online video, the actual model can be created in just a couple of minutes.</p>
+<div class="section" title="Model Goals">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Model_Goals"></a>Model Goals</h3>
+</div>
+</div>
+</div>
+<p>Before beginning a modeling project it is important to have a clear idea of what is being modeled and how it should be modeled. We need to know a bit about where we are going before we start. For our target, we'll use a model described in a paper written by Railsback, Lytien and Grimm. They describe "Stupid Model", a model that could be used to provide a common standard to demonstrated features of different Agent-Based Modeling platforms. See 
+					<a class="ulink" href="http://condor.depaul.edu/~slytinen/abm/StupidModelFormulation.pdf" target="_new">http://condor.depaul.edu/~slytinen/abm/StupidModelFormulation.pdf</a> for the complete specification. Here are the key specifications for the basic model.
+				</p>
+<div class="orderedlist">
+<ol class="orderedlist" type="1">
+<li class="listitem">
+<p>The space is a two-dimensional grid of dimensions 100 x 100. The space is toroidal, meaning that if bugs move off one edge of the grid they appear on the opposite edge.</p>
+</li>
+<li class="listitem">
+<p>100 bug agents are created. They have one behavior: moving to a randomly chosen grid location within +/- 4 cells of their current location, in both the X and Y directions. If there already is a bug at the location (including the moving bug itself, bugs are not allowed to stay at their current location unless none of the neighborhood cells are vacant), then another new location is chosen. This action is executed once per time step.</p>
+</li>
+<li class="listitem">
+<p>The bugs are displayed on the space. Bugs are drawn as red circles. The display is updated at the end of each time step.</p>
+</li>
+</ol>
+</div>
+</div>
+</div>
+<div class="section" title="Model Implementation">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Model_Implementation"></a>Model Implementation</h2>
+</div>
+</div>
+</div>
+<div class="section" title="Setup">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Setup"></a>Setup</h3>
+</div>
+</div>
+</div>
+<div class="section" title="Open Agent Modeling Perspective">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Open_Agent_Modeling_Perspective"></a>Open Agent Modeling Perspective</h4>
+</div>
+</div>
+</div>
+<p>A special Agent Modeling 
+						<span class="bold"><strong>Perspective</strong></span> can be used to setup your 
+						<span class="bold"><strong>Workspace</strong></span> for modeling. Depending on your how you installed the agent modeling tools, you can simply pick the perspective from the choices in the upper-right hand of your workbench:
+					</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial0Perspective.png"></div>
+<p>
+					
+</p>
+<p>Or, if you can't see it there, you can access it by selecting the menu '''Open Perspective &gt; Other... and then selecting the Agent Modeling perspective from the provided options:</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial0Perspective2.png"></div>
+<p>
+					
+</p>
+</div>
+<div class="section" title="Create Project">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Create_Project"></a>Create Project</h4>
+</div>
+</div>
+</div>
+<p>Before doing anything else, we need a project -- a folder to organize our models within. Right-click in the Package Explorer and select 
+						<span class="bold"><strong>New &gt; Agent Modeling Escape Project</strong></span>.
+					</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial1.png"></div>
+<p>
+					
+</p>
+</div>
+<div class="section" title="Name project">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Name_project"></a>Name project</h4>
+</div>
+</div>
+</div>
+<p>We'll get a dialog allowing us to name the project. Let's call it something simple.</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial2.png"></div>
+<p>
+					
+</p>
+</div>
+<div class="section" title="Create Model">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Create_Model"></a>Create Model</h4>
+</div>
+</div>
+</div>
+<p>We'll need a model as well. This is the container for all of the the agents and behaviors we'll be defining. Right-click on the project folder and choose 
+						<span class="bold"><strong>New &gt; Agent Model</strong></span>.
+					</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial3CreateModel.png"></div>
+<p>
+					
+</p>
+<p>You'll see a model creation wizard from which you can name the model. Just give it the name "StupidModel1.metaabm".</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial4CreateModel.png"></div>
+<p>
+					
+</p>
+<p>Click 
+						<span class="bold"><strong>Next</strong></span> to see some other options. We don't need to change any of this:
+					</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial5CreatePage2.png"></div>
+<p>
+					
+</p>
+<p>So just click the 
+						<span class="bold"><strong>Finish</strong></span> button and we're ready to move on with the tutorial.
+					</p>
+</div>
+</div>
+<div class="section" title="Structure">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Structure_3"></a>Structure</h3>
+</div>
+</div>
+</div>
+<div class="section" title="Bug Agent">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Bug_Agent"></a>Bug Agent</h4>
+</div>
+</div>
+</div>
+<div class="section" title="Create New Agent">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Create_New_Agent"></a>Create New Agent</h5>
+</div>
+</div>
+</div>
+<p>Our first step is to create an agent. The root contexts and a number of neccessary model components were already created automatically. So right-click on the root "StupidModel1" context and select 
+							<span class="bold"><strong>Create Member &gt; Agent</strong></span>.
+						</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial6Createagent.png"></div>
+<p>
+						
+</p>
+</div>
+<div class="section" title="Name Agent">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Name_Agent"></a>Name Agent</h5>
+</div>
+</div>
+</div>
+<p>Let's call it "Bug". In the lower left-hand corner you should see the 
+							<span class="bold"><strong>Properties</strong></span> View. This is where you'll edit model values when working with the tree editor. The properties view -- as with any other view--- can be moved anywhere within the workbench and if you can't find it -- or any other views -- you can always lcoate it through 
+							<span class="bold"><strong>Window &gt; Show View &gt; Other</strong></span>. Find the "Label" property and type our new name into it. You'll see that all of the related name properites are also updated.
+						</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial6NameBug.png"></div>
+<p>
+						
+</p>
+</div>
+<div class="section" title="The Create Agent Action">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="The_Create_Agent_Action"></a>The Create Agent Action</h5>
+</div>
+</div>
+</div>
+<p>While we've been making these changes, the modeling framework has also been doing some work behind the scenes. For example, it has created an attribute and a rule to create the agents. Open the Actions node and the Attributes node to see these changes. If we look at the attributes for the model, we can see that an attribute specifying the number of agents has been created called "Bug Count". Select it, then enter "100" as the default value. The default value is the value the model will use if no value is specified anywhere else (like in the parameter launcher).</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial10AgentCount.png"></div>
+<p>
+						
+</p>
+<p>You might want to take a look at the Create Bugs rule, but there isn't anything we need to change there.</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial11BuildAgents.png"></div>
+<p>
+						
+</p>
+</div>
+</div>
+<div class="section" title="Grid Space">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Grid_Space"></a>Grid Space</h4>
+</div>
+</div>
+</div>
+<div class="section" title="Create Grid">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Create_Grid"></a>Create Grid</h5>
+</div>
+</div>
+</div>
+<p>Next, we'll create a grid for the Bugs to move around upon. Right-click on the StupidModel1 context and choose 
+							<span class="bold"><strong>New &gt; Grid</strong></span>.
+						</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial7CreateGrid.png"></div>
+<p>
+						
+</p>
+</div>
+<div class="section" title="Set Grid Parameters">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Set_Grid_Parameters"></a>Set Grid Parameters</h5>
+</div>
+</div>
+</div>
+<p>Now, looking at the properties for the Grid we've just created, we can see that there are a number of properties to set. We want to make a number of changes.</p>
+<div class="orderedlist">
+<ol class="orderedlist" type="1">
+<li class="listitem">
+<p>Set the space's "Border Rule" property to be "Periodic" -- the edges wrap around from one ege to the other.</p>
+</li>
+<li class="listitem">
+<p>Set the "Neighborhood" property to be "Moore" -- that's how we are going to interpret the statement "in the X and Y directions".</p>
+</li>
+<li class="listitem">
+<p>Set the dimensionality to "2". (You might need to enlarge the Property view or use the scroll bar to see the Dimensionality property.)</p>
+</li>
+</ol>
+</div>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial8GridParameters.png"></div>
+<p>
+						
+</p>
+<p>Again, the framework has taken care of some things for us automatically. If we now open the Grid node, we can see that "Width" and "Height" attributes have been created based on the dimensionality we've just defined. We'll set each of them to "100", so that we end up with a 100 x 100 grid. (Which is pretty large for a model of this kind, but we want to go with the basic specification.)</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial9GridDims.png"></div>
+<p>
+						
+</p>
+</div>
+<div class="section" title="The Build Grid Action">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="The_Build_Grid_Action"></a>The Build Grid Action</h5>
+</div>
+</div>
+</div>
+<p>The Agent Modeling Framework has also created a Build Gird Action for us. If you navigate to the StupidModel1 context Actions node again, you can see the Action. If you click on it you should see the following properties set:</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial14BuildGridParams.png"></div>
+<p>
+						
+</p>
+<p>If you click on the 
+							<span class="bold"><strong>...</strong></span> button next to the "Agents" property you'll see see the Bug, which is the agent that will be moving around upon the grid.
+						</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial13BuildGridAgents.png"></div>
+<p>
+						
+</p>
+</div>
+</div>
+</div>
+<div class="section" title="Actions Part I">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Actions_Part_I"></a>Actions Part I</h3>
+</div>
+</div>
+</div>
+<div class="section" title="Create Initialize Rule">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Create_Initialize_Rule"></a>Create Initialize Rule</h4>
+</div>
+</div>
+</div>
+<p>Now we can make these bugs do something. Let's create our first rule. In this case we're going to create a special Initialize Action that executes once when the model is first created for each agent. All Actions begin from the agent (or style) Actions list and there are only a few Actions that can serve as roots. See the Design section of this guide for much more on that. Open the Bug node by clicking the triangle icon, right-click on the Actions node and select the '''Create Member &gt; Initialize Action.</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial15CreateInitialize.png"></div>
+<p>
+					
+</p>
+<div class="section" title="Create Select Action">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Create_Select_Action"></a>Create Select Action</h5>
+</div>
+</div>
+</div>
+<p>Next, right click on the new Initialize node and choose 
+							<span class="bold"><strong>Create Member &gt; Select</strong></span> to create a Select target.
+						</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial16CreateSelect.png"></div>
+<p>
+						
+</p>
+<p>Selects are the central building blocks of model actions and define the basis for Query and Logic Actions that can be modified and used in subsequent targets. Targets are actions that "follow from" other actions. With this Select we are going to be searching for places for the Bug to move to at the very start of the model run. Here we need to specify the space we will be looking for cells within, so we set the Space property to "Grid 2D". Normally, we'd specify an agent as well, but as the Grid 2D cells don't have any attributes, we don't need to define them explicitly. So we just need to make sure that the Agent property is null (blank).</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial165Select2.png"></div>
+<p>
+						
+</p>
+</div>
+<div class="section" title="Create Query Action">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Create_Query_Action"></a>Create Query Action</h5>
+</div>
+</div>
+</div>
+<p>Next, we create a Query Action. A query is really a query term; we're specifying some aspect of the search that we're interested in.</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial17CreateQuery.png"></div>
+<p>
+						
+</p>
+<p>In this case we want a special kind of query, a query within space for any agents that are available; that is unoccupied by another agent. So we select "Spatial: Available" form the drop down list of query functions.</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial18QueryFunction.png"></div>
+<p>
+						
+</p>
+</div>
+<div class="section" title="Create Move Action">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Create_Move_Action"></a>Create Move Action</h5>
+</div>
+</div>
+</div>
+<p>Finally, as the last part of the initial action specification, we'll create a Move Action using 
+							<span class="bold"><strong>Create Member &gt; Move</strong></span>. (Not shown.) The properties should be correct, but check to make sure that the selection property is "Initialize" (the root), and the destination property is "Bug" (the Select Action we've defined above). Like this:
+						</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial19Move.png"></div>
+<p>
+						
+</p>
+</div>
+</div>
+<div class="section" title="Run Initial Model">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Run_Initial_Model"></a>Run Initial Model</h4>
+</div>
+</div>
+</div>
+<p>That's all we have to do to create our first working model! Now, go to the 
+						<span class="bold"><strong>Package Explorer</strong></span> and select the StupidModel1.metaabm file. Right-click on it and select 
+						<span class="bold"><strong>Execute</strong></span>. Or click on the first "m" button in the toolbar. (Again, we've simplified the toolbar for this tutorial, so you may have more buttons appearing then we're showing here.
+					</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial20ExecuteModel.png"></div>
+<p>
+					
+</p>
+<p>A new perspective for "Agent Execution" will automatically open up and you can see that the agents have placed themselves in the grid. They don't do anything else yet.</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial21Execute2.png "></div>
+<p>
+					
+</p>
+</div>
+</div>
+<div class="section" title="Styles">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Styles_2"></a>Styles</h3>
+</div>
+</div>
+</div>
+<div class="section" title="Create Bug Style">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Create_Bug_Style"></a>Create Bug Style</h4>
+</div>
+</div>
+</div>
+<div class="section" title="Create Style">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Create_Style"></a>Create Style</h5>
+</div>
+</div>
+</div>
+<p>While Escape assigns a default color of black for the agents, we'll want something more interesting -- so let's make the Bugs red. Agent visualization is accomplished using the same mechanism as ordinary agent rules. So first, let's create a new Style. Right click on the "Styles" node and select '''</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial22CreateStyle.png "></div>
+<p>
+						
+</p>
+<p>By default the style will be called BugStyle2D. Open the Style to the Actions node and create a rule.</p>
+</div>
+<div class="section" title="Create Style Rule">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Create_Style_Rule"></a>Create Style Rule</h5>
+</div>
+</div>
+</div>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial23CreateStyleRule.png "></div>
+<p>
+						
+</p>
+<p>Now we need to create a series of evaluations. An Evaluation is like a Query in that it performs some kind of function in the broadest sense, but unlike a Query, it does not affect whether target (downstream) Acts are performed. For Styles we have a set of Graphic functions that we will chain together to draw a figure. First we create the Evaluation.</p>
+</div>
+<div class="section" title="Create Evaluations">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Create_Evaluations"></a>Create Evaluations</h5>
+</div>
+</div>
+</div>
+<p>We make the first Evaluation define a Color of "Red". Right click on the new Rule, and select 
+							<span class="bold"><strong>New &gt; Command &gt; Evaluate</strong></span> (not shown) to create an Evaluation. Then in the function property, select "Graphic: Color Red".
+						</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial24EvaluationFunction.png "></div>
+<p>
+						
+</p>
+<p>We'll create two more evaluation targets. Right-click on the "Color Red" evaluation and create an Evaluation. Pick the "Graphic: Draw Oval" fill. For the last part of our style, we need to actually draw the figure. To do this we create a last Evaluation target for "Draw Oval" and give it the "Graphic: Fill Shape" function. By now it should be clear how to do this. "Fill" or "Outline" will always come last in a chain of graphic evaluations, but otherwise the order shouldn't matter. See the Demographic Prisoner's Dilemma model for an example of how this can be used to selectively pick Colors and or Shapes. You should end up with something like this:</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial25FinishStyle.png "></div>
+<p>
+						
+</p>
+</div>
+</div>
+</div>
+<div class="section" title="Actions Part II">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Actions_Part_II"></a>Actions Part II</h3>
+</div>
+</div>
+</div>
+<p>To make our agents move randomly every iteration, we will create a Rule. (For those familiar with Repast or other scheduling oriented AM platforms, a rule is just a schedule that gets activated each and every period for all agents.) At this point in the tutorial, we'll show screenshots only for aspects of the modeling process that haven't already been covered.</p>
+<div class="section">
+<div class="titlepage"></div>
+<div class="section" title="Create Select and Query Actions">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="N11208"></a>Create Select and Query Actions</h5>
+</div>
+</div>
+</div>
+<p>The first part of the Bug Rule is exactly the same as the Initialize rule. Create a Selection Action. As before, we'll make the Select statement "Agent" property blank, as we want to move to a cell. As before, we want to make sure the Cell is free before we try to move in, so we'll select a "Spatial: Available" Query function.(By the way, to make scrolling through the list easier, you can type the first letters of the selection, in this case "SP".)</p>
+<p>But now, instead of moving 
+							<span class="italic">anywhere</span> we want to move nearby. So now, we create a 
+							<span class="italic">parallel</span> or "sibling" Query from the same Select root. Because this new Query Action is a child of the Select Action and not the "Space Available" Query we've just created, we'll right-click on the 
+							<span class="italic">Select</span> Action and choose 
+							<span class="bold"><strong>Create Target &gt; Select &gt; Query</strong></span>. Like so:
+						</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial26CreateQuery2.png "></div>
+<p>
+						
+</p>
+<p>Often, we would pick the "Spatial: Neighbor" function to take a random walk, but according to the specification, we actually want to move into some random Cell within distance four (4). So we will pick "Spatial: Within" from the list of functions.</p>
+</div>
+<div class="section" title="Fixing Model Errors">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Fixing_Model_Errors"></a>Fixing Model Errors</h5>
+</div>
+</div>
+</div>
+<p>Instead of specifying the actual distance now, let's see how the Agent Modeling Framework error checking capabilities can help us in model development. Save the model by selecting 
+							<span class="bold"><strong>File &gt; Save</strong></span> from the application menu. Notice that a red marker appears next to the StupidModel1.metaabm file. If you reveal the 
+							<span class="bold"><strong>Problems View</strong></span> you'll see a list of current errors and warnings and if you open the errors node in that list, you'll see an item reporting that the input has no value. If you double-click on that item, you'll be taken to the input for the Within query and you'll be able to edit it.
+						</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial27NoValue.png "></div>
+<p>
+						
+</p>
+<p>In addition to error markers, metaABM provides warnings designed to help you avoid common design mistakes. For example, a warning will be issued if you attempt to move an agent from its selection to the same selection; this is not strictly speaking an error, but it doesn't make much sense. You'll also receive a warning for default values that have not been specified. You might notice that the Demographic Prisonner's Dilemma model has warning markers, this is because we were happy with the '0' default values for the attributes and didn't provide any. (By the way, you might also notice a number of Java warnings. By default the Eclipse IDE is very conservative when it comes to warnings, and expects the usage of language constructs that we choose not to use. A full discussion of all of this is beyond the scope of the tutorial, but see the Eclipse documentation on problem views for more ideas about how to customize these views.)</p>
+<p>To fix this error we just need to assign a value for search distance. We 
+							<span class="bold"><strong>could</strong></span> simply create a literal for the Spatial: Within Query but that isn't really good practice. (Originally the Agent Modeling Framework didn't even support Literal values, but we added them for convenience.) Now, we will create our first Attribute. In this case, we want the Attribute to belong to the Stupid Model as it will be the same value for all Agents for now. So right-click on the Stupid Model context Attributes node and create a new one.
+						</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial28CreateAttribute.png "></div>
+<p>
+						
+</p>
+<p>Name the Attribute -- "Bug Vision" seems descriptive -- give it a type of Integer, and assign it a default value of 4. This will allow most ABM platforms to provide the ability to change vision at runtime or through batch definitions, something we couldn't do if we had used a literal value.</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial29AttributeValues.png "></div>
+<p>
+						
+</p>
+<p>Finally, we assign the Vision attribute to the "Input" node in our Spatial: Within Query.</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial30AttributeInput.png "></div>
+<p>
+						
+</p>
+</div>
+<div class="section" title="Create Intersection Action">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Create_Intersection_Action"></a>Create Intersection Action</h5>
+</div>
+</div>
+</div>
+<p>Now, we need to combine the requirement that the cell be available with the requirement that it be within 4 cell's distance. To accomplish this, we'll add an Intersection Action. The Logical Actions, including "Intersection", "Union" and "None" define how Query Actions work together. The Intersection Action needs to be a target of 
+							<span class="italic">both</span> the Available and Within targets. This means that the action has two sources. See the Modeler's Guide for more information about how action flow works.
+						</p>
+<p>Editing actions with multiple sources and targets is the most complex aspect of the model editor so you may need to work with this example a bit in order to get a feel for how it should work. First, we create the Intersection Action as a target of the Spatial Available Query. (Not the Within Query).</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial31Intersect.png "></div>
+<p>
+						
+</p>
+<p>Then we need to make the Intersection Action a target of the Within Query as well. To accomplish this, we drag the Intersection Action over the Within Query while holding down the ctrl-key. Depending on your environment, you may need to begin dragging before you click the control key -- otherwise, your initial control click will bring up the context menu. It's a bit hard to see this in a static image, but you simply need to click on the Intersection Action, begin dragging, hold down the ctrl key, move the mouse so that it is over the Within target, and release the mouse. It sounds more complicated then it is!</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial32IntersectAdd.png "></div>
+<p>
+						
+</p>
+</div>
+<div class="section" title="Add Move Action">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Add_Move_Action"></a>Add Move Action</h5>
+</div>
+</div>
+</div>
+<p>Finally, add a Move target to the Intersection.</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial33Move.png "></div>
+<p>
+						
+</p>
+<p>A few notes on the screenshot above. To make things a bit clearer, we've edited the names for the final panel. Also, the Intersection node might not appear in the same place. We've expanded the nodes so that you can see that while the actions are all listed together, they are actually defined as a tree structure internally. You can follow that tree to see all of the actions that might be the result of any of the actions in the list. To help understand the structure at a glance, the labels include an &lt;- indicator showing the immediate sources of each of the nodes. 
+							<span class="italic">Note especially than while the targets for actions often appear immediately following their source actions, this is not always the case.</span>
+						
+</p>
+</div>
+</div>
+<div class="section" title="Run Final Model">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Run_Final_Model"></a>Run Final Model</h4>
+</div>
+</div>
+</div>
+<p>Now, we can select the model in the 
+						<span class="bold"><strong>Package Navigator</strong></span> again, and run the model. It doesn't look much different in a snapshot, but those agents should now be moving around. We have built a complete Ascape model from our model.
+					</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial34RunFinal.png "></div>
+<p>
+					
+</p>
+<p>We hope this tutorial has enabled you to get up and running and given you some familiarity with the basic Agent Modeling Framework approach. The example models include the other "stupid models" from the paper, as well as a number of other interesting models.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="navfooter">
+<hr>
+<table summary="Navigation footer" width="100%">
+<tr>
+<td align="left" width="40%"><a accesskey="p" href="User_Guide.html">Prev</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="Programer_Guide.html">Next</a></td>
+</tr>
+<tr>
+<td valign="top" align="left" width="40%">Chapter&nbsp;3.&nbsp;User Guide&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;Chapter&nbsp;5.&nbsp;Programer Guide</td>
+</tr>
+</table>
+</div>
+</body>
+</html>
diff --git a/amp/documentation/contents/User_Guide.html b/amp/documentation/contents/User_Guide.html
new file mode 100644
index 0000000..8700053
--- /dev/null
+++ b/amp/documentation/contents/User_Guide.html
@@ -0,0 +1,1876 @@
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Chapter&nbsp;3.&nbsp;User Guide</title>
+<link href="book.css" type="text/css" rel="stylesheet">
+<meta content="DocBook XSL Stylesheets V1.76.0" name="generator">
+<link rel="home" href="index.html" title="Agent Modeling Guide">
+<link rel="up" href="index.html" title="Agent Modeling Guide">
+<link rel="prev" href="Modeler_Guide.html" title="Chapter&nbsp;2.&nbsp;Modeler Guide">
+<link rel="next" href="Tutorials.html" title="Chapter&nbsp;4.&nbsp;Tutorials">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="navheader">
+<table summary="Navigation header" width="100%">
+<tr>
+<th align="center" colspan="3">Chapter&nbsp;3.&nbsp;User Guide</th>
+</tr>
+<tr>
+<td align="left" width="20%"><a accesskey="p" href="Modeler_Guide.html">Prev</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="Tutorials.html">Next</a></td>
+</tr>
+</table>
+<hr>
+</div>
+<div class="chapter" title="Chapter&nbsp;3.&nbsp;User Guide">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title">
+<a name="User_Guide"></a>Chapter&nbsp;3.&nbsp;User Guide</h2>
+</div>
+</div>
+</div>
+<div class="toc">
+<dl>
+<dt>
+<span class="section"><a href="User_Guide.html#Overview_5">Overview</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Modeling">Modeling</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="User_Guide.html#Perspective">Perspective</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Creating_Projects_and_Models">Creating Projects and Models</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Menus.2C_Popups_and_Toolbar">Menus, Popups and Toolbar</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Views">Views</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="User_Guide.html#Editor">Editor</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Default_Views">Default Views</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Diagnostic_Views">Diagnostic Views</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="User_Guide.html#Modeling_Tree_Editor">Modeling Tree Editor</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="User_Guide.html#Opening_the_Editor">Opening the Editor</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Structure_2">Structure</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Actions_3">Actions</a></span>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="User_Guide.html#Building">Building</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="User_Guide.html#Building_Models">Building Models</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Generating_Specialized_Model_Artifacts">Generating Specialized Model Artifacts</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="User_Guide.html#Platform_Targets">Platform Targets</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Interfaces">Interfaces</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Skeleton">Skeleton</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Test_Cases">Test Cases</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Text_Documents">Text Documents</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Generate_Key_Graphics">Generate Key Graphics</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Function_Docs">Function Docs</a></span>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="User_Guide.html#Executing">Executing</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="User_Guide.html#Launching_a_Model_.28AMF.29">Launching a Model (AMF)</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="User_Guide.html#Execute">Execute</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Execute_Headless">Execute Headless</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Execute_Headless_.28Data.29">Execute Headless (Data)</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="User_Guide.html#Executing_a_Model_.28Java_.2F_3D.29">Executing a Model (Java / 3D)</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Controlling_Models">Controlling Models</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="User_Guide.html#Model_Execution_Controls"></a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#The_Active_Model">The Active Model</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="User_Guide.html#Views_2">Views</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="User_Guide.html#Properties_2">Properties</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Agent_Navigator">Agent Navigator</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Model_Manager">Model Manager</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="User_Guide.html#Visualization">Visualization</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="User_Guide.html#2D_Views">2D Views</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#3D_Views">3D Views</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Graph_Views">Graph Views</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Charts">Charts</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="User_Guide.html#Launching_Other_Targets">Launching Other Targets</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Model_Parameterization">Model Parameterization</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="User_Guide.html#Syntax">Syntax</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Example_2">Example</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="User_Guide.html#Model_Testing">Model Testing</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="User_Guide.html#Syntax_2">Syntax</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Example_3">Example</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Model_Data">Model Data</a></span>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+</dl>
+</div>
+<p>In this section of the guide, we'll discuss specific aspects of the Agent Modeling tools and show you how to use them in your day to day agent development activities. We discuss only tools specific to Agent Modeling itself. For more general information about the tools, such as how to customize editors, views, and perspectives, see the 
+			<span class="bold"><strong>Workbench User Guide</strong></span>.
+		</p>
+<div class="section" title="Overview">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Overview_5"></a>Overview</h2>
+</div>
+</div>
+</div>
+<p>The Agent Modeling Platform provides two general modes or "perspectives" for working with Agent Models.</p>
+<p>
+				
+</p>
+<div class="mediaobject">
+<img src="images/tools/Perspectives.png"></div>
+<p>
+			
+</p>
+<p>
+				
+<span class="bold"><strong>Agent Modeling</strong></span> supports all aspects of working with models, including editing models and automatically generating all the of your code and documentation. 
+				<span class="bold"><strong>Agent Execution</strong></span> supports running and exploring those models. A key feature of the Agent Modeling Platform is the ability to execute models within the same environment that they are developed within -- you don't need to launch a separate environment in order to run a model. Agent Execution automatically activates when you launch a model. We'll discuss the agent modeling tools first, and then turn to agent execution.
+			</p>
+</div>
+<div class="section" title="Modeling">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Modeling"></a>Modeling</h2>
+</div>
+</div>
+</div>
+<div class="section" title="Perspective">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Perspective"></a>Perspective</h3>
+</div>
+</div>
+</div>
+<p>The Provides a custom layout menus and tools specific to working with agent models. Because the agent modeling process also often involves Java and Eclipse Plugin development we include easy access to many of those tools here as well.</p>
+</div>
+<div class="section" title="Creating Projects and Models">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Creating_Projects_and_Models"></a>Creating Projects and Models</h3>
+</div>
+</div>
+</div>
+<p>You can create projects and project components using the Popup menu. Just click in a blank space within the Package Explorer. Any installed project targets are displayed in this menu. For example, if you've installed the Simphony target, you'd see that displayed in this menu as well.</p>
+<p>
+					
+</p>
+<div class="mediaobject">
+<img src="images/edit_tutorial/SimpleTutorial3CreateModel.png"></div>
+<p>
+				
+</p>
+</div>
+<div class="section" title="Menus, Popups and Toolbar">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Menus.2C_Popups_and_Toolbar"></a>Menus, Popups and Toolbar</h3>
+</div>
+</div>
+</div>
+<p>The popup menus and application menus provide access to various model features and are context sensitive.  Throughout these screenshots, we've customized the toolbar in order to only show the agent Modeling specific features.</p>
+</div>
+<div class="section" title="Views">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Views"></a>Views</h3>
+</div>
+</div>
+</div>
+<p>By default the workbench includes a number of views. See the Workbench documentation for more details on how they can be customized accessed and used.</p>
+<p>
+					
+</p>
+<div class="mediaobject">
+<img src="images/tools/Workbench.png"></div>
+<p>
+				
+</p>
+<div class="section" title="Editor">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Editor"></a>Editor</h4>
+</div>
+</div>
+</div>
+<p>This is not technically a view in itself. It is the major focus of the workbench and contains any edit models or other files such as Java source or parameters.</p>
+</div>
+<div class="section" title="Default Views">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Default_Views"></a>Default Views</h4>
+</div>
+</div>
+</div>
+<p>The default modeling views are visible by default.</p>
+<div class="section" title="Package Explorer">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Package_Explorer"></a>Package Explorer</h5>
+</div>
+</div>
+</div>
+<p>Supports navigation within projects.</p>
+</div>
+<div class="section" title="Properties">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Properties"></a>Properties</h5>
+</div>
+</div>
+</div>
+<p>The properties allows you to view and edit specific details for the currently selected object. For example, if you select a model context, you'll be able to edit its attributes here.</p>
+</div>
+<div class="section" title="Outline">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Outline"></a>Outline</h5>
+</div>
+</div>
+</div>
+<p>The outline view supports easy navigation within the edited files. See the model editing sections for more on how the outline can be used to assist exploration of Agent Models.</p>
+</div>
+</div>
+<div class="section" title="Diagnostic Views">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Diagnostic_Views"></a>Diagnostic Views</h4>
+</div>
+</div>
+</div>
+<p>There are a number of views that can be used to explore issues that might come up during the modeling process. You can see them on the lower left-hand corner of the screenshot above. Click on one of the icons to view their contents.</p>
+<div class="section" title="Problems">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Problems"></a>Problems</h5>
+</div>
+</div>
+</div>
+<p>This view is one that you'll become very familiar with. It is used to display specific about problems with any of the artifacts (files) in your modeling project. If you see a red or yellow marker on a file, opening the view will present a list of the issues that are currently being reported. For a usage example, please see the Tutorial.</p>
+</div>
+<div class="section" title="Console">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Console"></a>Console</h5>
+</div>
+</div>
+</div>
+<p>This view displays text (console) output for appropriate processes. For example, if you launch an Ascape project, this will display any output that would go to the Java console.</p>
+</div>
+<div class="section" title="Errors">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Errors"></a>Errors</h5>
+</div>
+</div>
+</div>
+<p>This is another view that you will find valuable in your day to day modeling activities. The error log lists everything important that happens during model execution. It's the first place to look if something mysterious goes wrong, and when you report problems it's always helpful to include anything that could be relevant in the log. Despite its name, the Errors view is not just for reporting errors -- it is also used to report progress on normal operations. For example, when models are automatically generated that is reported to the log, as we can see in the following example:</p>
+</div>
+</div>
+</div>
+<div class="section" title="Modeling Tree Editor">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Modeling_Tree_Editor"></a>Modeling Tree Editor</h3>
+</div>
+</div>
+</div>
+<p>The Eclipse Agent Modeling Framework includes a full-featured model editor based on the Eclipse Modeling Framework's Edit tools. All aspects of an AMF model can be managed from within this tool. Note that the tree editor is only one of many ways of editing a model. Other editors of AMF models include textual languages and custom editors that are part of commercial offerings.</p>
+<div class="section" title="Opening the Editor">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Opening_the_Editor"></a>Opening the Editor</h4>
+</div>
+</div>
+</div>
+<p>To open a model in the editor, simply double-click on it. If the model doesn't open in the model editor (if for example it had been previously opened using another editor), you can always access the editor using 
+						<span class="bold"><strong>Open With &gt; Other...</strong></span> and selecting "MetaABM Editor". The editor has two pages, an Editor page that we'll focus on first and a "description" page that we'll discuss at the end of this section.
+					</p>
+</div>
+<div class="section" title="Structure">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Structure_2"></a>Structure</h4>
+</div>
+</div>
+</div>
+<p>The model is composed of nodes representing specific model entities such as agents, actions and spaces. For details about any of these entities, see the Concepts section.</p>
+<div class="section" title="Opening Components">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Opening_Components"></a>Opening Components</h5>
+</div>
+</div>
+</div>
+<p>After opening a model, you can see the contents by clicking the Triangle symbol to the left of an item. For example, opening the root context node, we see:</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/tools/Editor.png"></div>
+<p>
+						
+</p>
+</div>
+<div class="section" title="Creating Components">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Creating_Components"></a>Creating Components</h5>
+</div>
+</div>
+</div>
+<p>You add nodes by right-clicking on a node, like so:</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/tools/EditorAdd.png"></div>
+<p>
+						
+</p>
+</div>
+<div class="section" title="Editing Components">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Editing_Components"></a>Editing Components</h5>
+</div>
+</div>
+</div>
+<p>To edit components, select the node you want to modify. The 
+							<span class="bold"><strong>Properties View</strong></span> will be updated with the agent details. Use the properties view to modify the values. In the screenshot below, we're editing the values for the City space.
+						</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/tools/EditorEditing.png"></div>
+<p>
+						
+</p>
+</div>
+<div class="section" title="Moving Components">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Moving_Components"></a>Moving Components</h5>
+</div>
+</div>
+</div>
+<p>You can often rearrange model components by dragging them from one place to another. In the following example, we're creating a model of a regional epidemic by creating a City sub-context and moving the agent into it: </p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/tools/EditorMoving.png"></div>
+<p>
+						
+</p>
+</div>
+<div class="section" title="Removing Components">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Removing_Components"></a>Removing Components</h5>
+</div>
+</div>
+</div>
+<p>You can remove actions by deleting or cutting them using the popup menu. When you delete an entity, all of its children are deleted as well, except in some special cases (such as with actions) where other paths to that entity still exist.</p>
+</div>
+<div class="section" title="Copying Components">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Copying_Components"></a>Copying Components</h5>
+</div>
+</div>
+</div>
+<p>To make a copy of an entity and place it in a new location, option-drag the entity to the destination. You can make a copy in the existing location by dragging it into the same parent. The name will automatically be updated with "copy" appended to it.</p>
+</div>
+<div class="section" title="Editing Attributes">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Editing_Attributes"></a>Editing Attributes</h5>
+</div>
+</div>
+</div>
+<p>The attributes node -- along with the actions and styles nodes -- represents a group of components rather than an entity itself. It contains all of the attributes for the parent agent or context. In the examples below, we can see the attributes for the Epidemic route model. Note that the top level attributes in a root context act as the parameters for the model itself.</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/tools/EditorAttributes.png"></div>
+<p>
+						
+</p>
+</div>
+<div class="section" title="Editing Styles">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Editing_Styles"></a>Editing Styles</h5>
+</div>
+</div>
+</div>
+<p>The Styles node is another group node, in this case representing a set of styles that can be used to visualize the agents. When creating a style, you will need to create a Rule for each style as well, like so:</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/tools/EditorStyles.png"></div>
+<p>
+						
+</p>
+</div>
+</div>
+<div class="section" title="Actions">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Actions_3"></a>Actions</h4>
+</div>
+</div>
+</div>
+<p>Actions are a key and relatively complex aspect of the model editor. Because actions are actually related in a graph structure, a tree-based editor will not be able to represent a the underlying structure of action relationships directly. (This is actually no different from most development environments -- for example, Java code is edited in a text based editor, but the call structure represents a complex graph. Advance tools developed by AMP contributors do support more sophisticated methods for action browsing and we'll have simple versions of them available in future releases of the AMF edit tools.) Therefore, it's helpful to take time to understand how action relationships appear in the editor.</p>
+<p>Like attributes and styles, every agent has a single Actions nodes which contains its Root Action(s).</p>
+<div class="section" title="Creating Actions">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Creating_Actions"></a>Creating Actions</h5>
+</div>
+</div>
+</div>
+<p>You create actions as with any other component, by right-clicking on the source action and choosing the new action. The menu is organized by usage.</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/tools/EditorActionMenu.png"></div>
+<p>
+						
+</p>
+</div>
+<div class="section" title="Editing Actions">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Editing_Actions"></a>Editing Actions</h5>
+</div>
+</div>
+</div>
+<p>Actions and their inputs are edited just like any other model component. Click on the action or input you want to edit and then make changes to it in the properties editor.</p>
+</div>
+<div class="section" title="Order">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Order"></a>Order</h5>
+</div>
+</div>
+</div>
+<p>Generally, action sources will appear above their targets. In the case where there is only one source for a given target, and that target has no other sources, they will appear directly above one another. Its important to note however that 
+							<span class="italic">the order of the nodes does not indicate a specific source and target relationship</span>. For example, in the case where there are multiple targets for a source, they will typically follow that source immediately. To make the relationships clear, every action lists its source actions as part of the action label. Agent selections also appear as part of the label.
+						</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/tools/ActionsExample.png"></div>
+<p>
+						
+</p>
+<p>In the above example, the Initialize Location "Initialize Action" is straightforward. We simply define a Select Action, a Query Action target for that selection, and then a Move Action target for the query. The "Transmission" Rule is more complicated. Note for example that the "Infectious" Union Action is the target of both the "Asymptomatic Infectious" and  "Symptomatic Infectious" Query Actions. The "Vulnerable Neighbor" action has the label "Vulnerable Neighbor [Potential Exposure] &lt;- [Potential Exposure]" indicating that the "Potential Exposure" action serves as its selection as well as its source.</p>
+</div>
+<div class="section" title="Initial Order">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Initial_Order"></a>Initial Order</h5>
+</div>
+</div>
+</div>
+<p>A new action's initial target will be the action that you clicked on when creating it. For an action that should always act within a given root action (i.e. Rule, Schedule, etc..), add it to the root action. A root action can have more than one target.</p>
+</div>
+<div class="section" title="Changing Sources and Targets (Reordering)">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Changing_Sources_and_Targets_.28Reordering.29"></a>Changing Sources and Targets (Reordering)</h5>
+</div>
+</div>
+</div>
+<p>An action's target can be changed by dragging it over the new target action. Note that this is a different behavior from that of standard entity movement. You cannot make an action a target of an action that is itself a source of the modified action! (See the concepts section for why.) Using the default tree editor you cannot change an action's targets directly; instead select the action's target and move that. </p>
+</div>
+<div class="section" title="Adding Sources and Targets">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Adding_Sources_and_Targets"></a>Adding Sources and Targets</h5>
+</div>
+</div>
+</div>
+<p>As discussed earlier, actions often have multiple sources and targets. To make an action the target of an additional action, click on target action, hold down the control key, and drag the action to its new destination. See the tutorial for a complete example.</p>
+</div>
+<div class="section" title="Removing Sources and Targets">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Removing_Sources_and_Targets"></a>Removing Sources and Targets</h5>
+</div>
+</div>
+</div>
+<p>You cannot remove single sources from targets directly using the tree editor. Instead, first drag the agent to a source nodes that will be part of its changed set of sources. That will remove all existing actions sources but for the one you have just dragged it to. Then add back any of the other source and target nodes you wish to retain.</p>
+</div>
+<div class="section" title="Removing Actions">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Removing_Actions"></a>Removing Actions</h5>
+</div>
+</div>
+</div>
+<p>You can remove actions in the same way as with structural model components. Note that just as when you delete an agent, all of that agent's attributes, actions and styles are also deleted form the model, when you delete an Action, any of its targets will also be removed, unless there is some other source action path that connects it to the root action. And of course, any targets of such targets will be affected in the same way and so on. If you remove a node from high in the action tree a lot of nodes could disappear at once! If you have actions that you want to retain as part of the flow, you should first make them targets of a new action before deleting their parent action.</p>
+</div>
+<div class="section" title="Copying Actions">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Copying_Actions"></a>Copying Actions</h5>
+</div>
+</div>
+</div>
+<p>Copying actions works just as with other entities, and copies will become targets of their option-drag destination. </p>
+</div>
+<div class="section" title="Query and Evaluation Inputs">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Query_and_Evaluation_Inputs_2"></a>Query and Evaluation Inputs</h5>
+</div>
+</div>
+</div>
+<p>The number of inputs is determined by the selected functions. (In rare cases where a function can take an arbitrary number of arguments you may need to create additional values or delete existing ones.) In the following example, we're picking the Symptom Infectious status for a query that will affect the potentially exposed agents. Note that is instead you wanted to compare another kind of value -- for example an Integer value -- you would need to change the first input listed before changing the second input so that you will be able to get the appropriate options for the second.</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/tools/Inputs.png"></div>
+<p>
+						
+</p>
+</div>
+<div class="section" title="Input Literals">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Input_Literals_2"></a>Input Literals</h5>
+</div>
+</div>
+</div>
+<p>To create an input value, right click on the input and select 
+							<span class="bold"><strong>Create Member &gt; Literal</strong></span>. Then specify the actual value in the Value property in the 
+							<span class="bold"><strong>Properties View</strong></span>.
+						</p>
+</div>
+</div>
+</div>
+</div>
+<div class="section" title="Building">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Building"></a>Building</h2>
+</div>
+</div>
+</div>
+<div class="section" title="Building Models">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Building_Models"></a>Building Models</h3>
+</div>
+</div>
+</div>
+<p>If you've used other development environments, you're probably used to a separate build step. For example, if you edit a set of Java files, you might invoke a compile command. Eclipse and the Agent Modeling Platform support automatic building. This means that in order to build your code, you simply save the model and the environment takes care of the rest. What gets built is defined by the project. For example, if you save a model that is contained within an Agent Modeling Escape Project, the following steps occur automatically:</p>
+<div class="orderedlist">
+<ol class="orderedlist" type="1">
+<li class="listitem">
+<p>The Escape builder generates Java code for the Escape API, including support for specialized graphics and (if enabled) 3D visualization.</p>
+</li>
+<li class="listitem">
+<p>The Documentation builder generates custom html documentation for the model.</p>
+</li>
+<li class="listitem">
+<p>The Java builder takes the Java code generated above and compiles it.</p>
+</li>
+<li class="listitem">
+<p>The Manifest and Schema builders package the project for use as part of the Eclipse plugin environment.</p>
+</li>
+</ol>
+</div>
+<p>So what do you do if you want to generate code for a different target, such as Repast? Here, you simply create another project and drag the model into it. You can also edit the builders for a given project (see the Workbench Documentation) but you'll only want to do that if you're making permanent changes to the project itself.</p>
+</div>
+<div class="section" title="Generating Specialized Model Artifacts">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Generating_Specialized_Model_Artifacts"></a>Generating Specialized Model Artifacts</h3>
+</div>
+</div>
+</div>
+<p>You can also manually generate code for models. This is useful if you want to create code for a model in a non target project and don't want the automatic build capabilities. There are also specialized targets that can be generated manually that are bundled with the tools -- AMP plugin developers can easily add custom generation targets for this menu. To generate custom artifacts, right-click on a model and select 
+					<span class="bold"><strong>Generate</strong></span>.
+				</p>
+<p>
+					
+</p>
+<div class="mediaobject">
+<img src="images/tools/GenerateMenu.png"></div>
+<p>
+				
+</p>
+<p>Targets include:</p>
+<div class="section" title="Platform Targets">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Platform_Targets"></a>Platform Targets</h4>
+</div>
+</div>
+</div>
+<p>Creates code for one of the installed targets, such as Ascape, Escape, and Simphony. (Again, these generators are unnecessary for projects that already have target specific builders configured.)</p>
+</div>
+<div class="section" title="Interfaces">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Interfaces"></a>Interfaces</h4>
+</div>
+</div>
+</div>
+<p>Creates a complete set of interfaces for the model classes. These can be very useful for development and integration in enterprise environments. Generated classes are placed in the src directory with "I" added to the name. For example, if you generate interfaces for a model with an "Individual" agent, this target will create an "IIndividual" interface that includes getters, setters and methods for all of the agent's attributes and actions.</p>
+</div>
+<div class="section" title="Skeleton">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Skeleton"></a>Skeleton</h4>
+</div>
+</div>
+</div>
+<p>Creates a base class for the model. This is essentially a complete implementation, but without the action implementations. Again, these classes can be useful when generating code for use in enterprise and other specialized environments.</p>
+</div>
+<div class="section" title="Test Cases">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Test_Cases"></a>Test Cases</h4>
+</div>
+</div>
+</div>
+<p>Generates base support (needing customization) test cases for use in JUnit tests.</p>
+</div>
+<div class="section" title="Text Documents">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Text_Documents"></a>Text Documents</h4>
+</div>
+</div>
+</div>
+<p>Creates simple text documentation for use in other documents.</p>
+</div>
+<div class="section" title="Generate Key Graphics">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Generate_Key_Graphics"></a>Generate Key Graphics</h4>
+</div>
+</div>
+</div>
+<p>This specialized target supports the creation of graphic keys for the model. To use this target:</p>
+<div class="orderedlist">
+<ol class="orderedlist" type="1">
+<li class="listitem">
+<p>Generate the code.</p>
+</li>
+<li class="listitem">
+<p>Add a dependency to the Manifest for "org.eclipse.amp.amf.gen.extras".</p>
+</li>
+<li class="listitem">
+<p>In the srcutil directory find the Java source code for the calss {RootContext}GraphicsWriter. For example, for the Epidemic model, this would be srcutil/name.milesparker.epi/EpidemicGraphicsWriter.java.</p>
+</li>
+<li class="listitem">
+<p>Right-click, and select 
+								<span class="bold"><strong>Run As &gt; Java Application</strong></span>.
+							</p>
+</li>
+<li class="listitem">
+<p>Refresh the project by right-clicking on it and selecting 
+								<span class="bold"><strong>Refresh</strong></span>.
+							</p>
+</li>
+<li class="listitem">
+<p>The Doc directory will now contain a number of new files, including</p>
+<div class="orderedlist">
+<ol class="orderedlist" type="a">
+<li class="listitem">
+<p>{RootContext}Key.png</p>
+</li>
+<li class="listitem">
+<p>{RootContext}GraphicsKey.html</p>
+</li>
+</ol>
+</div>
+</li>
+</ol>
+</div>
+<p>Both files contain graphic representations of the model using the definitions defined by the model styles, very useful artifacts for inclusion in papers and web pages describing your model. For example, here is the EpidemicKey.png:</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/tools/EpidemicKey.png"></div>
+<p>
+					
+</p>
+</div>
+<div class="section" title="Function Docs">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Function_Docs"></a>Function Docs</h4>
+</div>
+</div>
+</div>
+<p>Generates WikiText documentation for function libraries. We use it to create the function documentation in this guide!</p>
+</div>
+</div>
+</div>
+<div class="section" title="Executing">
+<div class="titlepage">
+<div>
+<div>
+<h2 class="title" style="clear: both">
+<a name="Executing"></a>Executing</h2>
+</div>
+</div>
+</div>
+<div class="section" title="Launching a Model (AMF)">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Launching_a_Model_.28AMF.29"></a>Launching a Model (AMF)</h3>
+</div>
+</div>
+</div>
+<table id="N10D13">
+<tr>
+						
+<td>Launching AMF and Escape models is easy. When an AMF file is selected -- in any of the perspectives -- the toolbar and Application menus are updated to reflect the file you've selected and provide convenient access to other functions. For example, when we click on a metaabm file in the package explorer, model execution buttons appear in the toolbar.</td>
+						<td>
+							
+<div class="mediaobject">
+<img src="images/tools/EditorToolbar.png"></div>
+						
+</td>
+					
+</tr>
+<tr>
+						
+<td>If you right-click on a file a pop-up menu appears like the one to the far right -- in this case we're selecting the "Execute Headless" option. To launch a model, just select one of the options. (Note that the execution framework doesn't know whether your code exists in an Escape project or another target project. If you attempt to execute a .metaabm model in an Ascape project for example, you will get an error.)</td>
+						<td>
+							
+<div class="mediaobject">
+<img src="images/tools/EditorMenu.png"></div>
+						
+</td>
+					
+</tr>
+</table>
+<p>One a model has been launched, the Agent Execution Perspective automatically becomes active. The Provides a custom layout menus and tools specific to executing agent models.</p>
+<p>
+					
+</p>
+<div class="mediaobject">
+<img src="images/execution/EpidemicExecNew.png"></div>
+<p>
+				
+</p>
+<p>The execution options are:</p>
+<div class="section" title="Execute">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Execute"></a>Execute</h4>
+</div>
+</div>
+</div>
+<p>Launches the model using default graphics, opening the Agent Execution perspective.</p>
+</div>
+<div class="section" title="Execute Headless">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Execute_Headless"></a>Execute Headless</h4>
+</div>
+</div>
+</div>
+<p>Launches the model without graphics, opening the Agent Execution perspective.</p>
+</div>
+<div class="section" title="Execute Headless (Data)">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Execute_Headless_.28Data.29"></a>Execute Headless (Data)</h4>
+</div>
+</div>
+</div>
+<p>Launches the model with an observer that collects data into the AMF adata model representation.</p>
+</div>
+</div>
+<div class="section" title="Executing a Model (Java / 3D)">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Executing_a_Model_.28Java_.2F_3D.29"></a>Executing a Model (Java / 3D)</h3>
+</div>
+</div>
+</div>
+<p>You can execute any Escape model directly from its Java file by right-clicking on it. This is used for models that have been written directly in Java, or that you have created or that have been automatically generated, such as the 3D versions of AMF models. In order for the model to launch correctly, it must have as a superclass the Escape "Scape" class. In the following screenshot, we've launched a 3D version of the Epidemic model. The 3D models are automatically generated for all .metaabm models. You can also launch a model into 3D by clicking on the model file and clicking the second (Execute Model with 3D) execute button.</p>
+<p>
+					
+</p>
+<div class="mediaobject">
+<img src="images/execution/Epidemic3D.png"></div>
+<p>
+				
+</p>
+</div>
+<div class="section" title="Controlling Models">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Controlling_Models"></a>Controlling Models</h3>
+</div>
+</div>
+</div>
+<p>Once a model has been launched, the toolbar buttons allow you to control model execution.</p>
+<p>
+					
+</p>
+<div class="mediaobject">
+<img src="images/execution/ExecControl.png"></div>
+<p>
+				
+</p>
+<div class="section">
+<div class="titlepage"></div>
+<div class="section" title="Model Execution Controls">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="N10D6F"></a>Model Execution Controls</h5>
+</div>
+</div>
+</div>
+<p>From right to left, you can start, restart, pause, step, stop and close a model. You can even run multiple models and control them independently. You can also move views around, close them and so on as with any other Eclipse views. Here we're running two separate models for comparison.</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/execution/EpidemicModelComparison.png"></div>
+<p>
+						
+</p>
+</div>
+<div class="section" title="Speed Slider">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Speed_Slider"></a>Speed Slider</h5>
+</div>
+</div>
+</div>
+<p>A special feature of the modeling tools is the "Speed Slider". This allows you to dynamically "speed up" and "slow down" the model execution. You can see where you've set the current speed in the status bar in the lower left hand corner of the environment.</p>
+<p>Actually, you're not controlling the speed of model 
+							<span class="italic">execution</span> at all. Agent models are almost always constrained not by the time of model execution -- a typical model can execute many thousands of iterations a second -- but by the time it takes to draw visualizations. By updating the views less frequently we allow the model to run at full speed until the next visualization period. This gives the illusion that we're speeding up the model. When we slow the model down, we're inserting a wait period between each model iteration.
+						</p>
+<p>To increase model execution speed, move the slider to the right. Here we're only updating the model every 56 iterations.</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/execution/SliderRight.png"></div>
+<p>
+						
+</p>
+<p>To decrease speed, move the slider to the left. Here, we're pausing between each iteration for 1.65 seconds.</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/execution/SliderLeft.png"></div>
+<p>
+						
+</p>
+</div>
+</div>
+<div class="section" title="The Active Model">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="The_Active_Model"></a>The Active Model</h4>
+</div>
+</div>
+</div>
+<p>An important concept in the execution workbench is the "active model". The active model is the model that is controlled by the toolbar buttons. As discussed, the Escape environment supports more than one running model at any given time. The active model is the current "focused" or front-most model, there can be only one active model at any given time and whenever any models are running one of them will be active. To make a model become the active model, you simply select a view of that model or select the model in the model manager (see below). When a model is closed, another model is automatically activated.</p>
+</div>
+</div>
+<div class="section" title="Views">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Views_2"></a>Views</h3>
+</div>
+</div>
+</div>
+<p>There are many views specific to the Agent Execution environment that will enable you to explore and control running models.</p>
+<div class="section" title="Properties">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Properties_2"></a>Properties</h4>
+</div>
+</div>
+</div>
+<p>If you want to find out more about an agent, show the properties view, and click on agent in the 2D view or any other views that support agent selection such as the tree view.</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/execution/EpidemicModelAgentProperties.png"></div>
+<p>
+					
+</p>
+<p>You can experiment with different parameters (settings) for models by then clicking on the model in the Model Manager or by selecting a general mode area such as the gray area enclosing the 2D view.</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/execution/EpidemicModelProperties.png"></div>
+<p>
+					
+</p>
+</div>
+<div class="section" title="Agent Navigator">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Agent_Navigator"></a>Agent Navigator</h4>
+</div>
+</div>
+</div>
+<p>The 
+						<span class="bold"><strong>Agent Navigator</strong></span> allows you to select agents from a tree view. The agent selection is coordinated across views so that for example when you select an agent in the navigator it is also selected in the 2D view. In the following screenshot you can see an agent selected in both views as well as the properties editor.
+					</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/execution/AgentNavigator.png"></div>
+<p>
+					
+</p>
+</div>
+<div class="section" title="Model Manager">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Model_Manager"></a>Model Manager</h4>
+</div>
+</div>
+</div>
+<p>The 
+						<span class="bold"><strong>'Model Manager</strong></span>' allows you to examine and control the status of all running models. In the following screenshot, we've launched four separate models so that we can compare the typical model state at different periods.
+					</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/execution/ModelManager.png"></div>
+<p>
+					
+</p>
+<p>The manager shows that two of the models are running and two are paused. By opening the model node, we can see the views that are currently being displayed. Note that we mean something different by "Views" in this context. Here "Views" are any thing that is monitoring the state of a running model. A view may not have a graphical component at all.</p>
+<p>You can make any model the current active model by clicking on its node in this view.</p>
+<div class="section" title="&quot;About this Model&quot;">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name=".22About_this_Model.22"></a>"About this Model"</h5>
+</div>
+</div>
+</div>
+<p>The 
+							<span class="bold"><strong>'About this Model</strong></span>' view displays information about a (AMF or Java based) model if it has been provided by the developer. In order to appear in this dialog, create a file named "About[MyModel].html" where "MyModel" is the model's Scape Class Name (not the AMF model file name). The file should be placed in a "res" source folder in the model project directory in a parallel directory path to the root scape's Java class package. For example, an about file for a model defined by the scape "edu.brook.norms.Norms" should be placed at "res/edu/brook/norms/AboutNorms.html". The file should be an html fragment -- that is, without body and head tags -- and can include any valid html tags, including links.
+						</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/execution/AboutView.png"></div>
+<p>
+						
+</p>
+</div>
+</div>
+</div>
+<div class="section" title="Visualization">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Visualization"></a>Visualization</h3>
+</div>
+</div>
+</div>
+<p>The Agent Modeling Environment is designed to support many kinds of 2D or 3D visualization. AMP includes the following views for generated models. The Escape API supports a number of additional visualization to support Ascape models that aren't shown here. Look at the example org.ascape.escape.models.examples and org.ascape.escape.models.brook for examples of those.</p>
+<div class="section" title="2D Views">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="2D_Views"></a>2D Views</h4>
+</div>
+</div>
+</div>
+<p>The 
+						<span class="bold"><strong>Graphic 2D</strong></span> view is the most common view way to work with an Agent Model and is automatically generated and displayed for executing models.
+					</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/execution/Epidemic2DView.png"></div>
+<p>
+					
+</p>
+<p>There are a number of view widgets in the upper-right hand corner that you can use to modify the view. You can:</p>
+<div class="section" title="Scaling">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Scaling"></a>Scaling</h5>
+</div>
+</div>
+</div>
+<div class="orderedlist">
+<ol class="orderedlist" type="1">
+<li class="listitem">
+<p>Enter or select a specific scale in the combo menu.</p>
+</li>
+<li class="listitem">
+<p>Select a button to have the model scale either:</p>
+<div class="orderedlist">
+<ol class="orderedlist" type="a">
+<li class="listitem">
+<p>Freely</p>
+</li>
+<li class="listitem">
+<p>Within the bounds of the view</p>
+</li>
+<li class="listitem">
+<p>Within the vertical bounds of the view</p>
+</li>
+<li class="listitem">
+<p>Within the horizontal bounds of the view</p>
+</li>
+</ol>
+</div>
+</li>
+<li class="listitem">
+<p>Zoom In</p>
+</li>
+<li class="listitem">
+<p>Zoom Out</p>
+</li>
+</ol>
+</div>
+</div>
+</div>
+<div class="section" title="3D Views">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="3D_Views"></a>3D Views</h4>
+</div>
+</div>
+</div>
+<p>The 3D views provide a three-dimensional representation of a running model. Currently they support 2D models only, which makes them 2 1/2 D views.</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/execution/View3D.png"></div>
+<p>
+					
+</p>
+<p>You can navigate and customize the model with the following controls:</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/execution/View3DMenuBar.png"></div>
+<p>
+					
+</p>
+<p>From left to right, they are:</p>
+<div class="section" title="Animation">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Animation"></a>Animation</h5>
+</div>
+</div>
+</div>
+<p>Turns on and off the interpolated (smooth) movement of agents from one cell to another. This is a unique feature of AMP and provides a very nice visualization, but it does slow down model execution. For very large models, you can switch it off -- visualization will be "jerky" but much quicker.</p>
+</div>
+<div class="section" title="Perspectives">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Perspectives"></a>Perspectives</h5>
+</div>
+</div>
+</div>
+<p>The three perspectives are used to control the camera location -- in other words the perspective from which the movie is being made. Note that if the camera is currently moving to a given perspective and you select a new perspective the camera may become confused! It is best to wait until the camera comes to a stop before choosing a different perspective. You can speed up camera movement by pausing the model temporarily.</p>
+<div class="section" title="First Person">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="First_Person"></a>First Person</h6>
+</div>
+</div>
+</div>
+<p>Moves the point of view to ground level, as if the observer were in the space itself.</p>
+</div>
+<div class="section" title="Overhead">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Overhead"></a>Overhead</h6>
+</div>
+</div>
+</div>
+<p>Moves the point of view to overhead, giving a similar view as you have with the 2D view. Note that in many cases the 3D view is actually faster than the 2D view, so this is a good way to observe any kind of 2D model.</p>
+</div>
+<div class="section" title="Helicopter">
+<div class="titlepage">
+<div>
+<div>
+<h6 class="title">
+<a name="Helicopter"></a>Helicopter</h6>
+</div>
+</div>
+</div>
+<p>Moves the point to an oblique perspective. This is useful for getting an overall sense of model behavior.</p>
+</div>
+</div>
+</div>
+<div class="section" title="Graph Views">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Graph_Views"></a>Graph Views</h4>
+</div>
+</div>
+</div>
+<p>Graph views allow you to undestand the network relationships between various agents in the model. By default, a graph is creaed for all relationships, but you can customize that behavior programmatically. Graphs are also super-imposed on 2D models, as we can see in the following example running the EpidemicContact model.</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/execution/ViewGraph.png"></div>
+<p>
+					
+</p>
+<p>Note that complex models can take a long time to visualize and we'll be looking for opportuntites to optimize performance further in the future. If you think the visualization is stuck it is likely that it is simply calculating the next visualization step -- wait a bit before canceling the model or closing it.</p>
+<p>Graph views can be customized with the following controls:</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/execution/View3DMenuBar.png"></div>
+<p>
+					
+</p>
+<p>From left to right, they are:</p>
+<div class="section" title="Layout">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Layout"></a>Layout</h5>
+</div>
+</div>
+</div>
+<p>The layout buttons control how the nodes are placed within the graph. You can swithc between layout dynamically to gain insight into network relationships.</p>
+<table id="N10E83">
+<tr>
+								
+<td>
+									
+<div class="mediaobject">
+<img src="images/execution/ViewGraphDown.png"></div>
+								
+</td>
+								<td>
+									
+<div class="mediaobject">
+<img src="images/execution/ViewGraphRight.png"></div>
+								
+</td>
+							
+</tr>
+<tr>
+								
+<td>
+									<span class="bold"><strong>Tree (Down):</strong></span> Places the graph nodes into a downward oriented tree formation. You'll find that the tree views are more effecient at visualizing, and can be very ood at representing models with an inherent hierarchical structure such as kinship diagrams, but don't always give the best insight into the model for complex network relations.
+								</td>
+								<td>
+									<span class="bold"><strong>Tree (Right):</strong></span> The same tree layout oriented from the root-most nodes rightward.
+								</td>
+							
+</tr>
+<tr>
+								
+<td>
+									
+<div class="mediaobject">
+<img src="images/execution/ViewGraphRadial.png"></div>
+								
+</td>
+								<td>
+									
+<div class="mediaobject">
+<img src="images/execution/ViewGraphSpring.png"></div>
+								
+</td>
+							
+</tr>
+<tr>
+								
+<td>
+									<span class="bold"><strong>Radial:</strong></span> Places the nodes in a radial layout with the root-most nodes at the center. This is a great way to represent semi-hierarchical models with complex structure, but is a little slower than the tree layouts.
+								</td>
+								<td>
+									<span class="bold"><strong>Spring:</strong></span> This layout uses a spring and strain approach that allows nodes to find their own location within the visualization. It can provide beautiful and insightful diagrams, but it is also slower than the other layouts. For more complex models it often works well to use the radial layout and then switch to the Spring layout when examining relationships in depth.
+								</td>
+							
+</tr>
+</table>
+</div>
+<div class="section" title="Spring Layout Customization">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Spring_Layout_Customization"></a>Spring Layout Customization</h5>
+</div>
+</div>
+</div>
+<p>You can customize how the Spring by clicking on the customization button. This allows you to change a number of values that determine how nodes are layed out. While the default settings work well with many graph structures it can be helpful (and fun) to play with different settings to get the best visualization.
+							|
+							</p>
+<div class="mediaobject">
+<img src="images/execution/ViewGraphSpringDialog.png"></div>
+<p>
+						
+</p>
+</div>
+</div>
+<div class="section" title="Charts">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Charts"></a>Charts</h4>
+</div>
+</div>
+</div>
+<p>A 
+						<span class="bold"><strong>Chart</strong></span> view is automatically created and displayed for executing models. It can display aggregate values for any of the agent attributes you have set the "gather data" value to true for. Charts can be easily modified. While the built-in view is not meant to be the sole tool for Escape model data analysis, it provides an easy to use and powerful way to explore models interactively. The Chart view widgets allow you to modify the chart with the click of a button.
+					</p>
+<p>
+						
+</p>
+<div class="mediaobject">
+<img src="images/execution/EpidemicChartOptions.png"></div>
+<p>
+					
+</p>
+<div class="section" title="Chart Type">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Chart_Type"></a>Chart Type</h5>
+</div>
+</div>
+</div>
+<p>Several chart types are supported: The line, area, bar and pie chart. Click on one of the icons to select that type.</p>
+<table id="N10EFA">
+<tr>
+								
+<td>
+									
+<div class="mediaobject">
+<img src="images/execution/LineChart.png"></div>
+								
+</td>
+								<td>
+									
+<div class="mediaobject">
+<img src="images/execution/AreaChart.png"></div>
+								
+</td>
+							
+</tr>
+<tr>
+								
+<td>
+									<span class="bold"><strong>Line</strong></span>
+								</td>
+								<td>
+									<span class="bold"><strong>Area</strong></span>
+								</td>
+							
+</tr>
+<tr>
+								
+<td>
+									
+<div class="mediaobject">
+<img src="images/execution/BarChart.png"></div>
+								
+</td>
+								<td>
+									
+<div class="mediaobject">
+<img src="images/execution/PieChart.png"></div>
+								
+</td>
+							
+</tr>
+<tr>
+								
+<td>
+									<span class="bold"><strong>Bar</strong></span>
+								</td>
+								<td>
+									<span class="bold"><strong>Pie</strong></span>
+								</td>
+							
+</tr>
+</table>
+</div>
+<div class="section" title="Chart Legend">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Chart_Legend"></a>Chart Legend</h5>
+</div>
+</div>
+</div>
+<p>Turn the legend on and off by selecting the "T" icon.</p>
+</div>
+<div class="section" title="Chart Data">
+<div class="titlepage">
+<div>
+<div>
+<h5 class="title">
+<a name="Chart_Data"></a>Chart Data</h5>
+</div>
+</div>
+</div>
+<p>To select the statistics to display, show the 
+							<span class="bold"><strong>Chart Customizer</strong></span> view. When the customizer has been selected, select a chart to customize. The customizer presents the possible choices in a 2D format. On one axis are the attributes that have data being collected, and on the other are the measurements collected on those axes, i.e. Count, Minimum, Maximum, Variance, Standard Deviation, Sum and Average. To clear all selections, click the Gray "X" button.
+						</p>
+<p>
+							
+</p>
+<div class="mediaobject">
+<img src="images/execution/EpidemicChartCustomize.png"></div>
+<p>
+						
+</p>
+<p>There are a number of other things to play around with, such as zooming the agent view or selecting other chart series to display using the Chart Customizer, so just explore. You can always close an active model by clicking on the close toolbar button. Or if you can't access the models controls for some reason, you can open the progress view and close projects form there.</p>
+</div>
+</div>
+</div>
+<div class="section" title="Launching Other Targets">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Launching_Other_Targets"></a>Launching Other Targets</h3>
+</div>
+</div>
+</div>
+<p>To execute applications for other targets such as Ascape or Simphony, just right-click on the metaabm model, select Run As.. and pick the target you want to launch. In the example below, we're launching Ascape from within an ..ascape project.</p>
+<p>
+					
+</p>
+<div class="mediaobject">
+<img src="images/execution/LaunchAscape.png"></div>
+<p>
+				
+</p>
+<p>The external tool you've selected will then open into a separate Java application.</p>
+<p>
+					
+</p>
+<div class="mediaobject">
+<img src="images/execution/AscapeRunning.png"></div>
+<p>
+				
+</p>
+<p>
+					
+<span class="italic">Note:</span> remember that the menu options are active regardless of whether the target is actually supported within a given project. If you attempt to Run (external targets) or Execute (internal targets) models from a project that does not support that target you will get an error! 
+				</p>
+</div>
+<div class="section" title="Model Parameterization">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Model_Parameterization"></a>Model Parameterization</h3>
+</div>
+</div>
+</div>
+<p>Escape provides full support for parameterization of models. This allows you to create many sets of parameters for a given model, allowing you to decouple model runtime settings from the model itself. (Support for parameter sweeps is forthcoming.) To create a new parameterization, right-click in the location you want to create the parameter file, and select 
+					<span class="bold"><strong>New &gt; Parameters File</strong></span>.
+				</p>
+<p>
+					
+</p>
+<div class="mediaobject">
+<img src="images/params/Create.png"></div>
+<p>
+				
+</p>
+<p>In the wizard that follows, give your parameter file a name:</p>
+<p>
+					
+</p>
+<div class="mediaobject">
+<img src="images/params/Wizard.png"></div>
+<p>
+				
+</p>
+<p>The edit the file. See below for file syntax. The parameter editor has built-in support for code-completion, syntax high-lighting and other editor features.</p>
+<p>
+					
+</p>
+<div class="mediaobject">
+<img src="images/params/Edit.png"></div>
+<p>
+				
+</p>
+<p>In the example below, we've created two separate parameter files for the epidemic model with different values for contact transmission probability.</p>
+<p>
+					
+</p>
+<div class="mediaobject">
+<img src="images/params/Example.png"></div>
+<p>
+				
+</p>
+<p>As with other runnable files, you can launch a parameter file simply by selecting execute in the popup menu, application menu or toolbar.</p>
+<p>
+					
+</p>
+<div class="mediaobject">
+<img src="images/params/Execute.png"></div>
+<p>
+				
+</p>
+<div class="section" title="Syntax">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Syntax"></a>Syntax</h4>
+</div>
+</div>
+</div>
+<p>Parameter files are quite simple. Every parameter file specifies the "model" that will be executed.The "incorporates" keyword supports including parameter values from other files. File locations are relative to the location of the parameter file, but it is usually more flexible to refer to model files relative to their project location. You can do that by inserting a "|" character at the beginning of the file name.</p>
+<p>Attribute values are specified by the attribute ID (with the first character in upper-case) followed by "=" and the desired value.</p>
+</div>
+<div class="section" title="Example">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Example_2"></a>Example</h4>
+</div>
+</div>
+</div>
+<p>We can create a base parameters file called "EpiBase.apar".</p>
+<div class="literallayout">
+<p>model&nbsp;"|Epidemic.metaabm"<br>
+StopPeriod=500<br>
+
+</p>
+</div>
+<p>This means that we expect the Epidemic.metaabm model to be at the root of the project, and we want the model to stop at period 500. Then -- in this overly simple example -- we could create two other files, EpiHighTransmission.apar:</p>
+<div class="literallayout">
+<p>model&nbsp;"|Epidemic.metaabm"<br>
+incorporates&nbsp;"EpiBase.apar"<br>
+MinContactTransmissionProbability=0.05<br>
+MaxContactTransmissionProbability=0.2<br>
+
+</p>
+</div>
+<p>and EpiLowTransmission.apar:</p>
+<div class="literallayout">
+<p>model&nbsp;"|Epidemic.metaabm"<br>
+incorporates&nbsp;"EpiBase.apar"<br>
+MinContactTransmissionProbability=0.0<br>
+MaxContactTransmissionProbability=0.15<br>
+
+</p>
+</div>
+<p>Both of which reference the base set of parameters we've just defined and add run specific variables. Note that the incorporates reference is a parameter file relative reference so that we can easily move the set of parameter files to any location we want. With these two files defined we can click on both of them at once, select the Execute button and immediately compare the two values. (Not shown.)</p>
+</div>
+</div>
+<div class="section" title="Model Testing">
+<div class="titlepage">
+<div>
+<div>
+<h3 class="title">
+<a name="Model_Testing"></a>Model Testing</h3>
+</div>
+</div>
+</div>
+<p>One of the most important and over-looked aspects of modeling is verification. Very loosely speaking, model 
+					<span class="italic">validation</span> is the process of determining whether a model matches up to the "real world". Model 
+					<span class="italic">verification</span> is the process of determining whether your model specification matches up to the model you've actually implemented. In other words, does the model do what you say it does?
+				</p>
+<p>To help you answer this important question, the modeling tools include unique support for an approach to validation and verification called "unit testing". A thorough discussion is far beyond the scope of this manual, but this guide should give you enough information to get testing your own models. Testing might seem tedious ut its actually a real time saver, because you can quickly run a set of tests to ensure that you a new model change hasn't broken existing functionality. This peace of mind is priceless, and once you start testing, you won't know how you lived without it!</p>
+<p>To create a new test, right-click at the location you want to put the test files. (Not shown.) Then we can edit the test file using the syntax shown below. It's helpful to keep them organized in sets of folders. To execute a test or set of tests, simply select the test files and click "Test Once" or "Test 5 times" to run a set of identical tests. The latter is useful for stochastic tests in which tests may create significantly different results for the same random seeds. (We'll provide more options in a future release.) If you select an entire folder, the framework will run all of the tests in the folder. This process is very similar to that for parameter files, so we won't show it here.</p>
+<p>Once a test is complete, an "ares" file is created in the "test-results" folder. To see how your tests faired, open the .ares file. For the example test file below, we should see something like this:</p>
+<p>
+					
+</p>
+<div class="mediaobject">
+<img src="images/params/TestResults.png"></div>
+<p>
+				
+</p>
+<p>Notice that we can view the expected values and where our results actually fall.</p>
+<div class="section" title="Syntax">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Syntax_2"></a>Syntax</h4>
+</div>
+</div>
+</div>
+<p>Test files are also pretty simple. It's a good idea to provide a description of the test so you can understand why you created it and what feature you're testing. Just put quote characters around your description. Then, use the "tests" keyword to specify what parameter file you'll be using. Again you can use file or project relative references. You don not specify a model here -- that's defined by the parameter file. You can use the "contains" keyword just like the incorporates keyword for parameter files, to specify a set of test constraints that you want to include with the new tests you've defined. This is useful for including a series of "sanity checks" with other tests. Then you specify the test constraints themselves. This uses the following form:</p>
+<div class="literallayout">
+<p>{Measure}({TestedAttribute})&nbsp;=&nbsp;[{MinimumConstraint},&nbsp;{MaximumConstraint}]<br>
+
+</p>
+</div>
+<p>The measures available are Average, Minimum, Maximum Count and Sum. In order for an attribute to be tested the "gather data" value must be set for that attribute. All Measures are not appropriate for all attribute types. Booleans, Symbols and States should only use the Count measure as they represent discrete values that can either meet some condition or not.</p>
+<p>The tested attributes are qualified by their model agent definition. The constraint definition is inclusive, as implied by the square brackets. Future implementations are expected to provide richer expressions and constraints but a very wide range of cases are supported by this construct, especially when combined with derived attributes. Tested Attributes are again specified by the attribute ID (with the first character in upper-case) followed by "=" and the desired value.</p>
+</div>
+<div class="section" title="Example">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Example_3"></a>Example</h4>
+</div>
+</div>
+</div>
+<p>In the following simple example we want to make sure that an epidemic can't occur without disease transmission taking place. Here we're just looking to make sure that we have some very basic logic right. (This might be almost too simple for a real-world design, depending on how rigorous we want to be.) Note that some individuals are infected at the beginning of the model run so we need to account for that in our expected results. So first we have defined the EpiZeroTransmission.apar file like the other transmission rate parameterizations above except with these settings:</p>
+<div class="literallayout">
+<p>MinContactTransmissionProbability=0.0<br>
+MaxContactTransmissionProbability=0.0<br>
+
+</p>
+</div>
+<p>Then we define our ZeroTransmission.atest file:</p>
+<div class="literallayout">
+<p>"Test&nbsp;that&nbsp;no&nbsp;disease&nbsp;transmission&nbsp;occurs&nbsp;with&nbsp;contact&nbsp;transmission&nbsp;set&nbsp;to&nbsp;0."<br>
+tests&nbsp;"|params/EpiZeroTransmission.apar"<br>
+Count(Individual.Status=Dead)&nbsp;=&nbsp;[0,5]<br>
+Count(Individual.Status=Exposed)&nbsp;=&nbsp;[0,10]<br>
+Count(Individual.Status=SymptomInfectious)=[0,0]<br>
+
+</p>
+</div>
+<p>Here we have a nice description, a reference to the parameterization we want to use, and then the set of constraints we will apply to them. After running this test, a test result file like the one above will be created and placed in our "test-results" directory.</p>
+</div>
+<div class="section" title="Model Data">
+<div class="titlepage">
+<div>
+<div>
+<h4 class="title">
+<a name="Model_Data"></a>Model Data</h4>
+</div>
+</div>
+</div>
+<table id="N1101A">
+<tr>
+							
+<td>As discussed above, you can collect data for any model by selecting it or a paramters file and clicking the "Execute Model with data collection" button. If you use a parameters file setting the StopPeriod parameter will cause the model to stop executing and save the model at the specified time. Or you can stop the model manually. The model data will be collected into an "adata" file and stored in the "output" directory in your project. A new run entry will be created for each execution of a model. We are currently developing tools for exporting this data to various file formats as well as providing more seemless integration to sophisticated Eclipse hosted charting and report tools. You can use BIRT to interact with the data set using an XML schema data source and there is also an Ecore driver available. Model data can also be produced by writing custom views for data output. See the Ascape programmer guide for more information on how to do that.</td>
+							<td>
+								
+<div class="mediaobject">
+<img src="images/data/Editor.png"></div>
+							
+</td>
+						
+</tr>
+</table>
+</div>
+</div>
+</div>
+</div>
+<div class="navfooter">
+<hr>
+<table summary="Navigation footer" width="100%">
+<tr>
+<td align="left" width="40%"><a accesskey="p" href="Modeler_Guide.html">Prev</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="Tutorials.html">Next</a></td>
+</tr>
+<tr>
+<td valign="top" align="left" width="40%">Chapter&nbsp;2.&nbsp;Modeler Guide&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td valign="top" align="right" width="40%">&nbsp;Chapter&nbsp;4.&nbsp;Tutorials</td>
+</tr>
+</table>
+</div>
+</body>
+</html>
diff --git a/amp/documentation/contents/amp.html b/amp/documentation/contents/amp.html
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/amp/documentation/contents/amp.html
@@ -0,0 +1 @@
+
diff --git a/amp/documentation/contents/book.css b/amp/documentation/contents/book.css
new file mode 100644
index 0000000..ce9503d
--- /dev/null
+++ b/amp/documentation/contents/book.css
@@ -0,0 +1,256 @@
+.literallayout .code {
+	display: block;
+	border: 1px solid gray;
+	margin: 1em;
+	padding: 1em;
+	background-color: #F0F0F0;
+}
+
+code {
+	display: inline;
+}
+
+pre.programlisting {
+	display: block;
+	text-align: left;
+	text-indent: 0.00pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 0.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 15pt;
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #4444CC;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Courier New";
+}
+
+P.Code {
+	display: block;
+	text-align: left;
+	text-indent: 0.00pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 0.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 15pt;
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #4444CC;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Courier New";
+}
+
+H6.CaptionFigColumn {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 3.000000pt;
+	margin-bottom: 11.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 9.000000pt;
+	font-weight: medium;
+	font-style: Italic;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+
+P.Note {
+	display: block;
+	text-align: left;
+	text-indent: 0pt;
+	margin-top: 19.500000pt;
+	margin-bottom: 19.500000pt;
+	margin-right: 0.000000pt;
+	margin-left: 30pt;
+	font-size: 11.000000pt;
+	font-weight: medium;
+	font-style: Italic;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+
+EM.UILabel {
+	font-weight: Bold;
+	font-style: Regular;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+}
+
+EM.CodeName {
+	font-weight: Bold;
+	font-style: Regular;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Courier New";
+}
+
+SPAN.NoWrap {
+	white-space: nowrap;
+}
+
+/* following font face declarations need to be removed for DBCS */
+body,h1,h2,h3,h4,h5,h6,p,table,td,caption,th,ul,ol,dl,li,dd,dt {
+	font-family: Arial, Helvetica, sans-serif;
+	color: #000000
+}
+
+pre {
+	font-family: Courier, monospace
+}
+
+/* end font face declarations */
+	/* following font size declarations should be OK for DBCS */
+body,h1,h2,h3,h4,h5,h6,p,table,td,caption,th,ul,ol,dl,li,dd,dt {
+	font-size: 10pt;
+}
+
+pre {
+	font-size: 10pt
+}
+
+/* end font size declarations */
+body {
+	background: #FFFFFF
+}
+
+h1 {
+	font-size: 18pt;
+	margin-top: 5;
+	margin-bottom: 1
+}
+
+h2 {
+	font-size: 15pt;
+	margin-top: 25;
+	margin-bottom: 3
+}
+
+h3 {
+	font-size: 13pt;
+	margin-top: 20;
+	margin-bottom: 3
+}
+
+h4 {
+	font-size: 11pt;
+	margin-top: 20;
+	margin-bottom: 3;
+	font-style: italic
+}
+
+h5 {
+	font-size: 9pt;
+	margin-top: 20;
+	margin-bottom: 3;
+}
+
+h6 {
+	font-size: 8pt;
+	margin-top: 20;
+	margin-bottom: 3;
+	color: #0F0FA1
+}
+
+p {
+	margin-top: 10px;
+	margin-bottom: 10px
+}
+
+pre {
+	margin-left: 6;
+	font-size: 9pt
+}
+
+a:link {
+	color: #0000FF
+}
+
+a:hover {
+	color: #000080
+}
+
+a:visited {
+	text-decoration: underline
+}
+
+ul {
+	margin-top: 0;
+	margin-bottom: 10
+}
+
+li {
+	margin-top: 0;
+	margin-bottom: 0
+}
+
+li p {
+	margin-top: 0;
+	margin-bottom: 0
+}
+
+ol {
+	margin-top: 0;
+	margin-bottom: 10
+}
+
+dl {
+	margin-top: 0;
+	margin-bottom: 10
+}
+
+dt {
+	margin-top: 0;
+	margin-bottom: 0;
+	font-weight: bold
+}
+
+dd {
+	margin-top: 0;
+	margin-bottom: 0
+}
+
+strong {
+	font-weight: bold
+}
+
+em {
+	font-style: italic
+}
+
+var {
+	font-style: italic
+}
+
+div.revision {
+	border-left-style: solid;
+	border-left-width: thin;
+	border-left-color: #7B68EE;
+	padding-left: 5
+}
+
+th {
+	font-weight: bold
+}
+
+td {
+	vertical-align: top
+}
+
+xxtd{
+	border-top:2px solid black;
+}
\ No newline at end of file
diff --git a/amp/documentation/contents/images/600px-MetaABMStructure.png b/amp/documentation/contents/images/600px-MetaABMStructure.png
new file mode 100644
index 0000000..b131898
--- /dev/null
+++ b/amp/documentation/contents/images/600px-MetaABMStructure.png
Binary files differ
diff --git a/amp/documentation/contents/images/AMPArchitectureDiagram.jpg b/amp/documentation/contents/images/AMPArchitectureDiagram.jpg
new file mode 100644
index 0000000..e25d065
--- /dev/null
+++ b/amp/documentation/contents/images/AMPArchitectureDiagram.jpg
Binary files differ
diff --git a/amp/documentation/contents/images/AMPLogo.png b/amp/documentation/contents/images/AMPLogo.png
new file mode 100644
index 0000000..06d5262
--- /dev/null
+++ b/amp/documentation/contents/images/AMPLogo.png
Binary files differ
diff --git a/amp/documentation/contents/images/EscapeExecutionScreenshot.png b/amp/documentation/contents/images/EscapeExecutionScreenshot.png
new file mode 100644
index 0000000..f03a242
--- /dev/null
+++ b/amp/documentation/contents/images/EscapeExecutionScreenshot.png
Binary files differ
diff --git a/amp/documentation/contents/images/WikiExample.png b/amp/documentation/contents/images/WikiExample.png
new file mode 100644
index 0000000..9f00f95
--- /dev/null
+++ b/amp/documentation/contents/images/WikiExample.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsBlocks.png b/amp/documentation/contents/images/actions/ActionsBlocks.png
new file mode 100644
index 0000000..8dda80a
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsBlocks.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsComplexLogic.png b/amp/documentation/contents/images/actions/ActionsComplexLogic.png
new file mode 100644
index 0000000..5374ce3
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsComplexLogic.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsComplexLogicNoOr.png b/amp/documentation/contents/images/actions/ActionsComplexLogicNoOr.png
new file mode 100644
index 0000000..ff23606
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsComplexLogicNoOr.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsDiagram.png b/amp/documentation/contents/images/actions/ActionsDiagram.png
new file mode 100644
index 0000000..05b1499
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsDiagram.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsDiagram800.png b/amp/documentation/contents/images/actions/ActionsDiagram800.png
new file mode 100644
index 0000000..cc9336b
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsDiagram800.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsExample.png b/amp/documentation/contents/images/actions/ActionsExample.png
new file mode 100644
index 0000000..c5f907d
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsExample.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsExampleNew.png b/amp/documentation/contents/images/actions/ActionsExampleNew.png
new file mode 100644
index 0000000..9b81255
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsExampleNew.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsFlowSimple.png b/amp/documentation/contents/images/actions/ActionsFlowSimple.png
new file mode 100644
index 0000000..f4baf4e
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsFlowSimple.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsFlowUnion.png b/amp/documentation/contents/images/actions/ActionsFlowUnion.png
new file mode 100644
index 0000000..68ae5b4
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsFlowUnion.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsSelBoundary11A.png b/amp/documentation/contents/images/actions/ActionsSelBoundary11A.png
new file mode 100644
index 0000000..e8c745f
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsSelBoundary11A.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsSelBoundary2.png b/amp/documentation/contents/images/actions/ActionsSelBoundary2.png
new file mode 100644
index 0000000..d8a9e63
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsSelBoundary2.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsSelBoundary2Parts.png b/amp/documentation/contents/images/actions/ActionsSelBoundary2Parts.png
new file mode 100644
index 0000000..c0ffd39
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsSelBoundary2Parts.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsSelBoundaryComplex.png b/amp/documentation/contents/images/actions/ActionsSelBoundaryComplex.png
new file mode 100644
index 0000000..5e3a328
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsSelBoundaryComplex.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsSelBoundarySimple.png b/amp/documentation/contents/images/actions/ActionsSelBoundarySimple.png
new file mode 100644
index 0000000..bafb515
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsSelBoundarySimple.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsSequence.png b/amp/documentation/contents/images/actions/ActionsSequence.png
new file mode 100644
index 0000000..709b35a
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsSequence.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsSimpleMultiple.png b/amp/documentation/contents/images/actions/ActionsSimpleMultiple.png
new file mode 100644
index 0000000..e73296b
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsSimpleMultiple.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsSimpleSequence.png b/amp/documentation/contents/images/actions/ActionsSimpleSequence.png
new file mode 100644
index 0000000..0dd71af
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsSimpleSequence.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsSimpleSequence2.png b/amp/documentation/contents/images/actions/ActionsSimpleSequence2.png
new file mode 100644
index 0000000..4f897c5
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsSimpleSequence2.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsWeaving1A.png b/amp/documentation/contents/images/actions/ActionsWeaving1A.png
new file mode 100644
index 0000000..1c8d22c
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsWeaving1A.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsWeaving2.png b/amp/documentation/contents/images/actions/ActionsWeaving2.png
new file mode 100644
index 0000000..a16466f
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsWeaving2.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsWeavingComplexQuery.png b/amp/documentation/contents/images/actions/ActionsWeavingComplexQuery.png
new file mode 100644
index 0000000..11a61d9
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsWeavingComplexQuery.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsWeavingEvaluate.png b/amp/documentation/contents/images/actions/ActionsWeavingEvaluate.png
new file mode 100644
index 0000000..092983d
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsWeavingEvaluate.png
Binary files differ
diff --git a/amp/documentation/contents/images/actions/ActionsWeavingSetAnother.png b/amp/documentation/contents/images/actions/ActionsWeavingSetAnother.png
new file mode 100644
index 0000000..28a2caa
--- /dev/null
+++ b/amp/documentation/contents/images/actions/ActionsWeavingSetAnother.png
Binary files differ
diff --git a/amp/documentation/contents/images/data/Editor.png b/amp/documentation/contents/images/data/Editor.png
new file mode 100644
index 0000000..7566c3e
--- /dev/null
+++ b/amp/documentation/contents/images/data/Editor.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial0Perspective.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial0Perspective.png
new file mode 100644
index 0000000..5051459
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial0Perspective.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial0Perspective2.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial0Perspective2.png
new file mode 100644
index 0000000..996209f
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial0Perspective2.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial1.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial1.png
new file mode 100644
index 0000000..8689548
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial1.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial10AgentCount.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial10AgentCount.png
new file mode 100644
index 0000000..79a5f8b
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial10AgentCount.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial11BuildAgents.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial11BuildAgents.png
new file mode 100644
index 0000000..b056821
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial11BuildAgents.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial12BuildGrid.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial12BuildGrid.png
new file mode 100644
index 0000000..0c103bb
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial12BuildGrid.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial13BuildGridAgents.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial13BuildGridAgents.png
new file mode 100644
index 0000000..9285491
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial13BuildGridAgents.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial14BuildGridParams.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial14BuildGridParams.png
new file mode 100644
index 0000000..452dc15
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial14BuildGridParams.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial15CreateInitialize.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial15CreateInitialize.png
new file mode 100644
index 0000000..e14c4d5
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial15CreateInitialize.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial165Select2.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial165Select2.png
new file mode 100644
index 0000000..011c989
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial165Select2.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial16CreateSelect.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial16CreateSelect.png
new file mode 100644
index 0000000..45c8f53
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial16CreateSelect.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial17CreateQuery.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial17CreateQuery.png
new file mode 100644
index 0000000..a35553d
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial17CreateQuery.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial18QueryFunction.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial18QueryFunction.png
new file mode 100644
index 0000000..e46de94
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial18QueryFunction.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial19Move.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial19Move.png
new file mode 100644
index 0000000..b123be5
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial19Move.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial2.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial2.png
new file mode 100644
index 0000000..f31a19b
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial2.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial20ExecuteModel.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial20ExecuteModel.png
new file mode 100644
index 0000000..2f325d6
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial20ExecuteModel.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial21Execute2.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial21Execute2.png
new file mode 100644
index 0000000..9e2afbf
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial21Execute2.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial22CreateStyle.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial22CreateStyle.png
new file mode 100644
index 0000000..3be03e0
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial22CreateStyle.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial23CreateStyleRule.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial23CreateStyleRule.png
new file mode 100644
index 0000000..804e681
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial23CreateStyleRule.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial24EvaluationFunction.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial24EvaluationFunction.png
new file mode 100644
index 0000000..497d69f
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial24EvaluationFunction.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial25FinishStyle.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial25FinishStyle.png
new file mode 100644
index 0000000..39eb8c1
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial25FinishStyle.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial26CreateQuery2.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial26CreateQuery2.png
new file mode 100644
index 0000000..1b34bcc
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial26CreateQuery2.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial27NoValue.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial27NoValue.png
new file mode 100644
index 0000000..a94a868
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial27NoValue.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial28CreateAttribute.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial28CreateAttribute.png
new file mode 100644
index 0000000..d282250
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial28CreateAttribute.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial29AttributeValues.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial29AttributeValues.png
new file mode 100644
index 0000000..479becb
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial29AttributeValues.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial30AttributeInput.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial30AttributeInput.png
new file mode 100644
index 0000000..bb752a6
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial30AttributeInput.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial31Intersect.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial31Intersect.png
new file mode 100644
index 0000000..cffca86
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial31Intersect.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial32IntersectAdd.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial32IntersectAdd.png
new file mode 100644
index 0000000..752d21f
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial32IntersectAdd.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial33Move.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial33Move.png
new file mode 100644
index 0000000..d0c0fca
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial33Move.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial34RunFinal.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial34RunFinal.png
new file mode 100644
index 0000000..baef45d
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial34RunFinal.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial3CreateModel.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial3CreateModel.png
new file mode 100644
index 0000000..8adf4bf
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial3CreateModel.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial4CreateModel.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial4CreateModel.png
new file mode 100644
index 0000000..1eb2da0
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial4CreateModel.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial5CreatePage2.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial5CreatePage2.png
new file mode 100644
index 0000000..138967a
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial5CreatePage2.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial6CreateAgent.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial6CreateAgent.png
new file mode 100644
index 0000000..19d2a49
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial6CreateAgent.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial6NameBug.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial6NameBug.png
new file mode 100644
index 0000000..dfaaef3
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial6NameBug.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial7CreateGrid.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial7CreateGrid.png
new file mode 100644
index 0000000..203a2af
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial7CreateGrid.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial8GridParameters.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial8GridParameters.png
new file mode 100644
index 0000000..2b7ee0a
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial8GridParameters.png
Binary files differ
diff --git a/amp/documentation/contents/images/edit_tutorial/SimpleTutorial9GridDims.png b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial9GridDims.png
new file mode 100644
index 0000000..e215f84
--- /dev/null
+++ b/amp/documentation/contents/images/edit_tutorial/SimpleTutorial9GridDims.png
Binary files differ
diff --git a/amp/documentation/contents/images/examples/EpidemicRegional.png b/amp/documentation/contents/images/examples/EpidemicRegional.png
new file mode 100644
index 0000000..3da8c63
--- /dev/null
+++ b/amp/documentation/contents/images/examples/EpidemicRegional.png
Binary files differ
diff --git a/amp/documentation/contents/images/examples/EpidemicRegionalRun.png b/amp/documentation/contents/images/examples/EpidemicRegionalRun.png
new file mode 100644
index 0000000..d7c5acd
--- /dev/null
+++ b/amp/documentation/contents/images/examples/EpidemicRegionalRun.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/AboutView.png b/amp/documentation/contents/images/execution/AboutView.png
new file mode 100644
index 0000000..b3d072d
--- /dev/null
+++ b/amp/documentation/contents/images/execution/AboutView.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/AgentNavigator.png b/amp/documentation/contents/images/execution/AgentNavigator.png
new file mode 100644
index 0000000..00f156b
--- /dev/null
+++ b/amp/documentation/contents/images/execution/AgentNavigator.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/AreaChart.png b/amp/documentation/contents/images/execution/AreaChart.png
new file mode 100644
index 0000000..8d44180
--- /dev/null
+++ b/amp/documentation/contents/images/execution/AreaChart.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/AscapeRunning.png b/amp/documentation/contents/images/execution/AscapeRunning.png
new file mode 100644
index 0000000..79bd51d
--- /dev/null
+++ b/amp/documentation/contents/images/execution/AscapeRunning.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/BarChart.png b/amp/documentation/contents/images/execution/BarChart.png
new file mode 100644
index 0000000..016271c
--- /dev/null
+++ b/amp/documentation/contents/images/execution/BarChart.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/Epidemic2DView.png b/amp/documentation/contents/images/execution/Epidemic2DView.png
new file mode 100644
index 0000000..76f3c6b
--- /dev/null
+++ b/amp/documentation/contents/images/execution/Epidemic2DView.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/Epidemic3D.png b/amp/documentation/contents/images/execution/Epidemic3D.png
new file mode 100644
index 0000000..09d690b
--- /dev/null
+++ b/amp/documentation/contents/images/execution/Epidemic3D.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/EpidemicChartCustomize.png b/amp/documentation/contents/images/execution/EpidemicChartCustomize.png
new file mode 100644
index 0000000..4e3f2fe
--- /dev/null
+++ b/amp/documentation/contents/images/execution/EpidemicChartCustomize.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/EpidemicChartOptions.png b/amp/documentation/contents/images/execution/EpidemicChartOptions.png
new file mode 100644
index 0000000..d14ade9
--- /dev/null
+++ b/amp/documentation/contents/images/execution/EpidemicChartOptions.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/EpidemicExecNew.png b/amp/documentation/contents/images/execution/EpidemicExecNew.png
new file mode 100644
index 0000000..0dc133e
--- /dev/null
+++ b/amp/documentation/contents/images/execution/EpidemicExecNew.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/EpidemicModelAgentProperties.png b/amp/documentation/contents/images/execution/EpidemicModelAgentProperties.png
new file mode 100644
index 0000000..4960cf3
--- /dev/null
+++ b/amp/documentation/contents/images/execution/EpidemicModelAgentProperties.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/EpidemicModelComparison.png b/amp/documentation/contents/images/execution/EpidemicModelComparison.png
new file mode 100644
index 0000000..c22e564
--- /dev/null
+++ b/amp/documentation/contents/images/execution/EpidemicModelComparison.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/EpidemicModelControls.png b/amp/documentation/contents/images/execution/EpidemicModelControls.png
new file mode 100644
index 0000000..658b37a
--- /dev/null
+++ b/amp/documentation/contents/images/execution/EpidemicModelControls.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/EpidemicModelProperties.png b/amp/documentation/contents/images/execution/EpidemicModelProperties.png
new file mode 100644
index 0000000..8ce9cd7
--- /dev/null
+++ b/amp/documentation/contents/images/execution/EpidemicModelProperties.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/EpidemicModelRunning.png b/amp/documentation/contents/images/execution/EpidemicModelRunning.png
new file mode 100644
index 0000000..f830965
--- /dev/null
+++ b/amp/documentation/contents/images/execution/EpidemicModelRunning.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/ExecControl.png b/amp/documentation/contents/images/execution/ExecControl.png
new file mode 100644
index 0000000..0d2b089
--- /dev/null
+++ b/amp/documentation/contents/images/execution/ExecControl.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/LaunchAscape.png b/amp/documentation/contents/images/execution/LaunchAscape.png
new file mode 100644
index 0000000..7277326
--- /dev/null
+++ b/amp/documentation/contents/images/execution/LaunchAscape.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/LineChart.png b/amp/documentation/contents/images/execution/LineChart.png
new file mode 100644
index 0000000..20c4273
--- /dev/null
+++ b/amp/documentation/contents/images/execution/LineChart.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/ModelManager.png b/amp/documentation/contents/images/execution/ModelManager.png
new file mode 100644
index 0000000..401308a
--- /dev/null
+++ b/amp/documentation/contents/images/execution/ModelManager.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/PieChart.png b/amp/documentation/contents/images/execution/PieChart.png
new file mode 100644
index 0000000..baf6afe
--- /dev/null
+++ b/amp/documentation/contents/images/execution/PieChart.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/SliderLeft.png b/amp/documentation/contents/images/execution/SliderLeft.png
new file mode 100644
index 0000000..2219715
--- /dev/null
+++ b/amp/documentation/contents/images/execution/SliderLeft.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/SliderRight.png b/amp/documentation/contents/images/execution/SliderRight.png
new file mode 100644
index 0000000..cc94f08
--- /dev/null
+++ b/amp/documentation/contents/images/execution/SliderRight.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/View3D.png b/amp/documentation/contents/images/execution/View3D.png
new file mode 100644
index 0000000..5d90024
--- /dev/null
+++ b/amp/documentation/contents/images/execution/View3D.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/View3DMenuBar.png b/amp/documentation/contents/images/execution/View3DMenuBar.png
new file mode 100644
index 0000000..5f41c7a
--- /dev/null
+++ b/amp/documentation/contents/images/execution/View3DMenuBar.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/ViewGraph.png b/amp/documentation/contents/images/execution/ViewGraph.png
new file mode 100644
index 0000000..ddb87b2
--- /dev/null
+++ b/amp/documentation/contents/images/execution/ViewGraph.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/ViewGraphDown.png b/amp/documentation/contents/images/execution/ViewGraphDown.png
new file mode 100644
index 0000000..c867c57
--- /dev/null
+++ b/amp/documentation/contents/images/execution/ViewGraphDown.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/ViewGraphMenuBar.png b/amp/documentation/contents/images/execution/ViewGraphMenuBar.png
new file mode 100644
index 0000000..c2b7d81
--- /dev/null
+++ b/amp/documentation/contents/images/execution/ViewGraphMenuBar.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/ViewGraphRadial.png b/amp/documentation/contents/images/execution/ViewGraphRadial.png
new file mode 100644
index 0000000..9bed7c6
--- /dev/null
+++ b/amp/documentation/contents/images/execution/ViewGraphRadial.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/ViewGraphRight.png b/amp/documentation/contents/images/execution/ViewGraphRight.png
new file mode 100644
index 0000000..0ebef6c
--- /dev/null
+++ b/amp/documentation/contents/images/execution/ViewGraphRight.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/ViewGraphSpring.png b/amp/documentation/contents/images/execution/ViewGraphSpring.png
new file mode 100644
index 0000000..2d7d031
--- /dev/null
+++ b/amp/documentation/contents/images/execution/ViewGraphSpring.png
Binary files differ
diff --git a/amp/documentation/contents/images/execution/ViewGraphSpringDialog.png b/amp/documentation/contents/images/execution/ViewGraphSpringDialog.png
new file mode 100644
index 0000000..7f6e8d6
--- /dev/null
+++ b/amp/documentation/contents/images/execution/ViewGraphSpringDialog.png
Binary files differ
diff --git a/amp/documentation/contents/images/functions/DistributionDesign.png b/amp/documentation/contents/images/functions/DistributionDesign.png
new file mode 100644
index 0000000..2398ec5
--- /dev/null
+++ b/amp/documentation/contents/images/functions/DistributionDesign.png
Binary files differ
diff --git a/amp/documentation/contents/images/functions/DistributionDesignChoice.png b/amp/documentation/contents/images/functions/DistributionDesignChoice.png
new file mode 100644
index 0000000..68762ce
--- /dev/null
+++ b/amp/documentation/contents/images/functions/DistributionDesignChoice.png
Binary files differ
diff --git a/amp/documentation/contents/images/functions/FunctionsDiagram.png b/amp/documentation/contents/images/functions/FunctionsDiagram.png
new file mode 100644
index 0000000..274a7de
--- /dev/null
+++ b/amp/documentation/contents/images/functions/FunctionsDiagram.png
Binary files differ
diff --git a/amp/documentation/contents/images/functions/GraphicsFunctionExampleDesign.png b/amp/documentation/contents/images/functions/GraphicsFunctionExampleDesign.png
new file mode 100644
index 0000000..646526d
--- /dev/null
+++ b/amp/documentation/contents/images/functions/GraphicsFunctionExampleDesign.png
Binary files differ
diff --git a/amp/documentation/contents/images/functions/GraphicsFunctionExampleRun.png b/amp/documentation/contents/images/functions/GraphicsFunctionExampleRun.png
new file mode 100644
index 0000000..10b304c
--- /dev/null
+++ b/amp/documentation/contents/images/functions/GraphicsFunctionExampleRun.png
Binary files differ
diff --git a/amp/documentation/contents/images/params/Create.png b/amp/documentation/contents/images/params/Create.png
new file mode 100644
index 0000000..7ea3564
--- /dev/null
+++ b/amp/documentation/contents/images/params/Create.png
Binary files differ
diff --git a/amp/documentation/contents/images/params/Edit.png b/amp/documentation/contents/images/params/Edit.png
new file mode 100644
index 0000000..129d56b
--- /dev/null
+++ b/amp/documentation/contents/images/params/Edit.png
Binary files differ
diff --git a/amp/documentation/contents/images/params/Example.png b/amp/documentation/contents/images/params/Example.png
new file mode 100644
index 0000000..9ba3a6c
--- /dev/null
+++ b/amp/documentation/contents/images/params/Example.png
Binary files differ
diff --git a/amp/documentation/contents/images/params/Execute.png b/amp/documentation/contents/images/params/Execute.png
new file mode 100644
index 0000000..4668f70
--- /dev/null
+++ b/amp/documentation/contents/images/params/Execute.png
Binary files differ
diff --git a/amp/documentation/contents/images/params/TestResults.png b/amp/documentation/contents/images/params/TestResults.png
new file mode 100644
index 0000000..8a98424
--- /dev/null
+++ b/amp/documentation/contents/images/params/TestResults.png
Binary files differ
diff --git a/amp/documentation/contents/images/params/Wizard.png b/amp/documentation/contents/images/params/Wizard.png
new file mode 100644
index 0000000..3c766bb
--- /dev/null
+++ b/amp/documentation/contents/images/params/Wizard.png
Binary files differ
diff --git a/amp/documentation/contents/images/pojo/ProgrammingPojoGenerate.png b/amp/documentation/contents/images/pojo/ProgrammingPojoGenerate.png
new file mode 100644
index 0000000..9c7f2e6
--- /dev/null
+++ b/amp/documentation/contents/images/pojo/ProgrammingPojoGenerate.png
Binary files differ
diff --git a/amp/documentation/contents/images/pojo/ProgrammingPojoGenerateCode.png b/amp/documentation/contents/images/pojo/ProgrammingPojoGenerateCode.png
new file mode 100644
index 0000000..187e35e
--- /dev/null
+++ b/amp/documentation/contents/images/pojo/ProgrammingPojoGenerateCode.png
Binary files differ
diff --git a/amp/documentation/contents/images/pojo/ProgrammingPojoGenerateProps.png b/amp/documentation/contents/images/pojo/ProgrammingPojoGenerateProps.png
new file mode 100644
index 0000000..f6110bc
--- /dev/null
+++ b/amp/documentation/contents/images/pojo/ProgrammingPojoGenerateProps.png
Binary files differ
diff --git a/amp/documentation/contents/images/resources/AMPUpdateSite.png b/amp/documentation/contents/images/resources/AMPUpdateSite.png
new file mode 100644
index 0000000..d320a7c
--- /dev/null
+++ b/amp/documentation/contents/images/resources/AMPUpdateSite.png
Binary files differ
diff --git a/amp/documentation/contents/images/resources/AscapeUpdateSite.png b/amp/documentation/contents/images/resources/AscapeUpdateSite.png
new file mode 100644
index 0000000..58cbe07
--- /dev/null
+++ b/amp/documentation/contents/images/resources/AscapeUpdateSite.png
Binary files differ
diff --git a/amp/documentation/contents/images/structure/StructureComplexDiagram.png b/amp/documentation/contents/images/structure/StructureComplexDiagram.png
new file mode 100644
index 0000000..f14b699
--- /dev/null
+++ b/amp/documentation/contents/images/structure/StructureComplexDiagram.png
Binary files differ
diff --git a/amp/documentation/contents/images/structure/StructureSimpleDiagram.png b/amp/documentation/contents/images/structure/StructureSimpleDiagram.png
new file mode 100644
index 0000000..b131898
--- /dev/null
+++ b/amp/documentation/contents/images/structure/StructureSimpleDiagram.png
Binary files differ
diff --git a/amp/documentation/contents/images/tools/ActionsExample.png b/amp/documentation/contents/images/tools/ActionsExample.png
new file mode 100644
index 0000000..657f1aa
--- /dev/null
+++ b/amp/documentation/contents/images/tools/ActionsExample.png
Binary files differ
diff --git a/amp/documentation/contents/images/tools/Editor.png b/amp/documentation/contents/images/tools/Editor.png
new file mode 100644
index 0000000..0c55db5
--- /dev/null
+++ b/amp/documentation/contents/images/tools/Editor.png
Binary files differ
diff --git a/amp/documentation/contents/images/tools/EditorActionMenu.png b/amp/documentation/contents/images/tools/EditorActionMenu.png
new file mode 100644
index 0000000..ab3b231
--- /dev/null
+++ b/amp/documentation/contents/images/tools/EditorActionMenu.png
Binary files differ
diff --git a/amp/documentation/contents/images/tools/EditorAdd.png b/amp/documentation/contents/images/tools/EditorAdd.png
new file mode 100644
index 0000000..72095ec
--- /dev/null
+++ b/amp/documentation/contents/images/tools/EditorAdd.png
Binary files differ
diff --git a/amp/documentation/contents/images/tools/EditorAttributes.png b/amp/documentation/contents/images/tools/EditorAttributes.png
new file mode 100644
index 0000000..59e9a41
--- /dev/null
+++ b/amp/documentation/contents/images/tools/EditorAttributes.png
Binary files differ
diff --git a/amp/documentation/contents/images/tools/EditorEditing.png b/amp/documentation/contents/images/tools/EditorEditing.png
new file mode 100644
index 0000000..5d841ec
--- /dev/null
+++ b/amp/documentation/contents/images/tools/EditorEditing.png
Binary files differ
diff --git a/amp/documentation/contents/images/tools/EditorMenu.png b/amp/documentation/contents/images/tools/EditorMenu.png
new file mode 100644
index 0000000..a998e2c
--- /dev/null
+++ b/amp/documentation/contents/images/tools/EditorMenu.png
Binary files differ
diff --git a/amp/documentation/contents/images/tools/EditorMoving.png b/amp/documentation/contents/images/tools/EditorMoving.png
new file mode 100644
index 0000000..979ad2d
--- /dev/null
+++ b/amp/documentation/contents/images/tools/EditorMoving.png
Binary files differ
diff --git a/amp/documentation/contents/images/tools/EditorStyles.png b/amp/documentation/contents/images/tools/EditorStyles.png
new file mode 100644
index 0000000..7fca559
--- /dev/null
+++ b/amp/documentation/contents/images/tools/EditorStyles.png
Binary files differ
diff --git a/amp/documentation/contents/images/tools/EditorToolbar.png b/amp/documentation/contents/images/tools/EditorToolbar.png
new file mode 100644
index 0000000..f9b1d5d
--- /dev/null
+++ b/amp/documentation/contents/images/tools/EditorToolbar.png
Binary files differ
diff --git a/amp/documentation/contents/images/tools/EpidemicKey.png b/amp/documentation/contents/images/tools/EpidemicKey.png
new file mode 100644
index 0000000..c86926d
--- /dev/null
+++ b/amp/documentation/contents/images/tools/EpidemicKey.png
Binary files differ
diff --git a/amp/documentation/contents/images/tools/GenerateMenu.png b/amp/documentation/contents/images/tools/GenerateMenu.png
new file mode 100644
index 0000000..4c41f63
--- /dev/null
+++ b/amp/documentation/contents/images/tools/GenerateMenu.png
Binary files differ
diff --git a/amp/documentation/contents/images/tools/Inputs.png b/amp/documentation/contents/images/tools/Inputs.png
new file mode 100644
index 0000000..984ba4e
--- /dev/null
+++ b/amp/documentation/contents/images/tools/Inputs.png
Binary files differ
diff --git a/amp/documentation/contents/images/tools/Perspectives.png b/amp/documentation/contents/images/tools/Perspectives.png
new file mode 100644
index 0000000..006745d
--- /dev/null
+++ b/amp/documentation/contents/images/tools/Perspectives.png
Binary files differ
diff --git a/amp/documentation/contents/images/tools/Workbench.png b/amp/documentation/contents/images/tools/Workbench.png
new file mode 100644
index 0000000..9cdea2e
--- /dev/null
+++ b/amp/documentation/contents/images/tools/Workbench.png
Binary files differ
diff --git a/amp/documentation/contents/images/users/CheatSheets.png b/amp/documentation/contents/images/users/CheatSheets.png
new file mode 100644
index 0000000..5152ab8
--- /dev/null
+++ b/amp/documentation/contents/images/users/CheatSheets.png
Binary files differ
diff --git a/amp/documentation/contents/images/users/IntegratedModels.png b/amp/documentation/contents/images/users/IntegratedModels.png
new file mode 100644
index 0000000..296f15d
--- /dev/null
+++ b/amp/documentation/contents/images/users/IntegratedModels.png
Binary files differ
diff --git a/amp/documentation/contents/images/users/WelcomeScreen.png b/amp/documentation/contents/images/users/WelcomeScreen.png
new file mode 100644
index 0000000..514da7f
--- /dev/null
+++ b/amp/documentation/contents/images/users/WelcomeScreen.png
Binary files differ
diff --git a/amp/documentation/contents/index.html b/amp/documentation/contents/index.html
new file mode 100644
index 0000000..92af0a5
--- /dev/null
+++ b/amp/documentation/contents/index.html
@@ -0,0 +1,516 @@
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Agent Modeling Guide</title>
+<link href="book.css" type="text/css" rel="stylesheet">
+<meta content="DocBook XSL Stylesheets V1.76.0" name="generator">
+<link rel="home" href="index.html" title="Agent Modeling Guide">
+<link rel="next" href="Introduction.html" title="Chapter&nbsp;1.&nbsp;Introduction">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="navheader">
+<table summary="Navigation header" width="100%">
+<tr>
+<th align="center" colspan="3">Agent Modeling Guide</th>
+</tr>
+<tr>
+<td align="left" width="20%">&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="Introduction.html">Next</a></td>
+</tr>
+</table>
+<hr>
+</div>
+<div class="book" title="Agent Modeling Guide">
+<div class="titlepage">
+<div>
+<div>
+<h1 class="title">
+<a name="N10001"></a>Agent Modeling Guide</h1>
+</div>
+</div>
+<hr>
+</div>
+<div class="toc">
+<p>
+<b>Table of Contents</b>
+</p>
+<dl>
+<dt>
+<span class="chapter"><a href="Introduction.html">1. Introduction</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Introduction.html#Quick_Start">Quick Start</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Introduction.html#Install">Install</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Introduction.html#Welcome.21">Welcome!</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Introduction.html#Cheat.21">Cheat!</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Introduction.html#Follow_the_Tutorial">Follow the Tutorial</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Introduction.html#Follow_your_Interest">Follow your Interest</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Introduction.html#Agent-Based_Modeling">Agent-Based Modeling</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Introduction.html#Other_Domains">Other Domains</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Introduction.html#The_Agent_Modeling_Platform_.28AMP.29">The Agent Modeling Platform (AMP)</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Introduction.html#Agent_Modeling_Framework_.28AMF.29">Agent Modeling Framework (AMF)</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Introduction.html#Agent_Execution_Framework_.28AXF.29">Agent Execution Framework (AXF)</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Introduction.html#Agent_Graphics_Framework_.28AGF.29">Agent Graphics Framework (AGF)</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Introduction.html#Escape">Escape</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Introduction.html#Credits">Credits</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="chapter"><a href="Modeler_Guide.html">2. Modeler Guide</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Overview">Overview</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Agent_Modeling_Framework">Agent Modeling Framework</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Structure">Structure</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Overview_2">Overview</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Details">Details</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Reference">Reference</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Actions_2">Actions</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Overview_3">Overview</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Concepts">Concepts</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Details_3">Details</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Reference_2">Reference</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Example">Example</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Functions">Functions</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Overview_4">Overview</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Details_5">Details</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Examples">Examples</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Modeler_Guide.html#Reference_3">Reference</a></span>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+<dt>
+<span class="chapter"><a href="User_Guide.html">3. User Guide</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="User_Guide.html#Overview_5">Overview</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Modeling">Modeling</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="User_Guide.html#Perspective">Perspective</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Creating_Projects_and_Models">Creating Projects and Models</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Menus.2C_Popups_and_Toolbar">Menus, Popups and Toolbar</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Views">Views</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Modeling_Tree_Editor">Modeling Tree Editor</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="User_Guide.html#Building">Building</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="User_Guide.html#Building_Models">Building Models</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Generating_Specialized_Model_Artifacts">Generating Specialized Model Artifacts</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="User_Guide.html#Executing">Executing</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="User_Guide.html#Launching_a_Model_.28AMF.29">Launching a Model (AMF)</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Executing_a_Model_.28Java_.2F_3D.29">Executing a Model (Java / 3D)</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Controlling_Models">Controlling Models</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Views_2">Views</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Visualization">Visualization</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Launching_Other_Targets">Launching Other Targets</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Model_Parameterization">Model Parameterization</a></span>
+</dt>
+<dt>
+<span class="section"><a href="User_Guide.html#Model_Testing">Model Testing</a></span>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+<dt>
+<span class="chapter"><a href="Tutorials.html">4. Tutorials</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Tutorials.html#Designing_a_Model">Designing a Model</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Tutorials.html#Model_Goals">Model Goals</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Tutorials.html#Model_Implementation">Model Implementation</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Tutorials.html#Setup">Setup</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Tutorials.html#Structure_3">Structure</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Tutorials.html#Actions_Part_I">Actions Part I</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Tutorials.html#Styles_2">Styles</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Tutorials.html#Actions_Part_II">Actions Part II</a></span>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+<dt>
+<span class="chapter"><a href="Programer_Guide.html">5. Programer Guide</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Overview_6">Overview</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Documentation">Documentation</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Online">Online</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Update_Site">Update Site</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Installation">Installation</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Example_Java_Models">Example Java Models</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Exploring_Example_ABM_Models">Exploring Example ABM Models</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Developing_Models">Developing Models</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Cheatsheet">Cheatsheet</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Steps">Steps</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Executing_Models">Executing Models</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Tutorial">Tutorial</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Extending_and_Customizing_AMP">Extending and Customizing AMP</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Integrating_Java_and_AMF_Models">Integrating Java and AMF Models</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Method_Action">Method Action</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Protected_Code_Regions">Protected Code Regions</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Interface_and_Base_Class_Generation">Interface and Base Class Generation</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Converting_Existing_Ascape_Models">Converting Existing Ascape Models</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Programer_Guide.html#Model">Model</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Programer_Guide.html#View">View</a></span>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+<dt>
+<span class="chapter"><a href="Installation_Guide.html">6. Installation Guide</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Installation_Guide.html#Tools">Tools</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Installation_Guide.html#Complete_IDE">Complete IDE</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Installation_Guide.html#Eclipse_and_the_Agent_Modeling_Tools">Eclipse and the Agent Modeling Tools</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Installation_Guide.html#Extensions">Extensions</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Installation_Guide.html#Models">Models</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Installation_Guide.html#Obtaining_Example_Models">Obtaining Example Models</a></span>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+<dt>
+<span class="chapter"><a href="New_and_Noteworthy.html">7. New and Noteworthy</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="New_and_Noteworthy.html#Release_0.8.0">Release 0.8.0</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="New_and_Noteworthy.html#Model_Visualization">Model Visualization</a></span>
+</dt>
+<dt>
+<span class="section"><a href="New_and_Noteworthy.html#Modeling_Framework">Modeling Framework</a></span>
+</dt>
+<dt>
+<span class="section"><a href="New_and_Noteworthy.html#Model_Editing">Model Editing</a></span>
+</dt>
+<dt>
+<span class="section"><a href="New_and_Noteworthy.html#Modeling_Tools">Modeling Tools</a></span>
+</dt>
+<dt>
+<span class="section"><a href="New_and_Noteworthy.html#User_Experience">User Experience</a></span>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+<dt>
+<span class="chapter"><a href="Resources.html">8. Resources</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Resources.html#Websites">Websites</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Resources.html#Papers">Papers</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="chapter"><a href="Support.html">9. Support</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Support.html#Issues">Issues</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Support.html#General_Support.2C_Questions_and_Discussion">General Support, Questions and Discussion</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Support.html#View_Existing_Bugs_and_Feature_Requests">View Existing Bugs and Feature Requests</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Support.html#File_a_Bug">File a Bug</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Support.html#Discuss_AMP_Development_and_Project">Discuss AMP Development and Project</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Support.html#Other_Contacts">Other Contacts</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Support.html#Professional_Support">Professional Support</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Support.html#Media_and_Private_Communications">Media and Private Communications</a></span>
+</dt>
+</dl>
+</dd>
+<dt>
+<span class="section"><a href="Support.html#Get_Involved">Get Involved</a></span>
+</dt>
+<dd>
+<dl>
+<dt>
+<span class="section"><a href="Support.html#Improve_this_Documentation.21">Improve this Documentation!</a></span>
+</dt>
+<dt>
+<span class="section"><a href="Support.html#Contribute_to_AMP">Contribute to AMP</a></span>
+</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+</dl>
+</div>
+</div>
+<div class="navfooter">
+<hr>
+<table summary="Navigation footer" width="100%">
+<tr>
+<td align="left" width="40%">&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="Introduction.html">Next</a></td>
+</tr>
+<tr>
+<td valign="top" align="left" width="40%">&nbsp;</td><td align="center" width="20%">&nbsp;</td><td valign="top" align="right" width="40%">&nbsp;Chapter&nbsp;1.&nbsp;Introduction</td>
+</tr>
+</table>
+</div>
+</body>
+</html>
diff --git a/dependencies/plugins/org.apache.ant/.classpath b/dependencies/plugins/org.apache.ant/.classpath
deleted file mode 100755
index c12f63b..0000000
--- a/dependencies/plugins/org.apache.ant/.classpath
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry exported="true" kind="lib" path="lib/ant.jar" sourcepath="lib/antsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-antlr.jar" sourcepath="lib/ant-antlrsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-apache-bcel.jar" sourcepath="lib/ant-apache-bcelsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-apache-bsf.jar" sourcepath="lib/ant-apache-bsfsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-apache-log4j.jar" sourcepath="lib/ant-apache-log4jsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-apache-oro.jar" sourcepath="lib/ant-apache-orosrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-apache-regexp.jar" sourcepath="lib/ant-apache-regexpsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-apache-resolver.jar" sourcepath="lib/ant-apache-resolversrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-commons-logging.jar" sourcepath="lib/ant-commons-loggingsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-commons-net.jar" sourcepath="lib/ant-commons-netsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-jai.jar" sourcepath="lib/ant-jaisrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-javamail.jar" sourcepath="lib/ant-javamailsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-jdepend.jar" sourcepath="lib/ant-jdependsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-jmf.jar" sourcepath="lib/ant-jmfsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-jsch.jar" sourcepath="lib/ant-jschsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-junit.jar" sourcepath="lib/ant-junitsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-launcher.jar" sourcepath="lib/ant-launchersrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-netrexx.jar" sourcepath="lib/ant-netrexxsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-nodeps.jar" sourcepath="lib/ant-nodepssrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-starteam.jar" sourcepath="lib/ant-starteamsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-stylebook.jar" sourcepath="lib/ant-stylebooksrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-swing.jar" sourcepath="lib/ant-swingsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-trax.jar" sourcepath="lib/ant-traxsrc.zip"/>
-	<classpathentry exported="true" kind="lib" path="lib/ant-weblogic.jar" sourcepath="lib/ant-weblogicsrc.zip"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.2"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="javaBin"/>
-</classpath>
diff --git a/dependencies/plugins/org.apache.ant/.cvsignore b/dependencies/plugins/org.apache.ant/.cvsignore
deleted file mode 100755
index c94d033..0000000
--- a/dependencies/plugins/org.apache.ant/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-javaBin
\ No newline at end of file
diff --git a/dependencies/plugins/org.apache.ant/.project b/dependencies/plugins/org.apache.ant/.project
deleted file mode 100755
index 57cd455..0000000
--- a/dependencies/plugins/org.apache.ant/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.apache.ant</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-	</natures>
-</projectDescription>
diff --git a/dependencies/plugins/org.apache.ant/META-INF/MANIFEST.MF b/dependencies/plugins/org.apache.ant/META-INF/MANIFEST.MF
deleted file mode 100755
index 8a5bd08..0000000
--- a/dependencies/plugins/org.apache.ant/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,107 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.apache.ant
-Bundle-Version: 1.7.0.qualifier
-Bundle-ClassPath: lib/ant.jar,
- lib/ant-antlr.jar,
- lib/ant-apache-bcel.jar,
- lib/ant-apache-bsf.jar,
- lib/ant-apache-log4j.jar,
- lib/ant-apache-oro.jar,
- lib/ant-apache-regexp.jar,
- lib/ant-apache-resolver.jar,
- lib/ant-commons-logging.jar,
- lib/ant-commons-net.jar,
- lib/ant-jai.jar,
- lib/ant-javamail.jar,
- lib/ant-jdepend.jar,
- lib/ant-jmf.jar,
- lib/ant-jsch.jar,
- lib/ant-junit.jar,
- lib/ant-launcher.jar,
- lib/ant-netrexx.jar,
- lib/ant-nodeps.jar,
- lib/ant-starteam.jar,
- lib/ant-stylebook.jar,
- lib/ant-swing.jar,
- lib/ant-trax.jar,
- lib/ant-weblogic.jar
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Export-Package: images,
- org.apache.tools.ant,
- org.apache.tools.ant.dispatch,
- org.apache.tools.ant.filters,
- org.apache.tools.ant.filters.util,
- org.apache.tools.ant.helper,
- org.apache.tools.ant.input,
- org.apache.tools.ant.launch,
- org.apache.tools.ant.listener,
- org.apache.tools.ant.loader,
- org.apache.tools.ant.taskdefs,
- org.apache.tools.ant.taskdefs.compilers,
- org.apache.tools.ant.taskdefs.condition,
- org.apache.tools.ant.taskdefs.cvslib,
- org.apache.tools.ant.taskdefs.email,
- org.apache.tools.ant.taskdefs.optional,
- org.apache.tools.ant.taskdefs.optional.ccm,
- org.apache.tools.ant.taskdefs.optional.clearcase,
- org.apache.tools.ant.taskdefs.optional.depend,
- org.apache.tools.ant.taskdefs.optional.depend.constantpool,
- org.apache.tools.ant.taskdefs.optional.dotnet,
- org.apache.tools.ant.taskdefs.optional.ejb,
- org.apache.tools.ant.taskdefs.optional.extension,
- org.apache.tools.ant.taskdefs.optional.extension.resolvers,
- org.apache.tools.ant.taskdefs.optional.i18n,
- org.apache.tools.ant.taskdefs.optional.image,
- org.apache.tools.ant.taskdefs.optional.j2ee,
- org.apache.tools.ant.taskdefs.optional.javacc,
- org.apache.tools.ant.taskdefs.optional.javah,
- org.apache.tools.ant.taskdefs.optional.jdepend,
- org.apache.tools.ant.taskdefs.optional.jlink,
- org.apache.tools.ant.taskdefs.optional.jsp,
- org.apache.tools.ant.taskdefs.optional.jsp.compilers,
- org.apache.tools.ant.taskdefs.optional.junit,
- org.apache.tools.ant.taskdefs.optional.junit.xsl,
- org.apache.tools.ant.taskdefs.optional.native2ascii,
- org.apache.tools.ant.taskdefs.optional.net,
- org.apache.tools.ant.taskdefs.optional.perforce,
- org.apache.tools.ant.taskdefs.optional.pvcs,
- org.apache.tools.ant.taskdefs.optional.scm,
- org.apache.tools.ant.taskdefs.optional.script,
- org.apache.tools.ant.taskdefs.optional.sos,
- org.apache.tools.ant.taskdefs.optional.sound,
- org.apache.tools.ant.taskdefs.optional.splash,
- org.apache.tools.ant.taskdefs.optional.ssh,
- org.apache.tools.ant.taskdefs.optional.starteam,
- org.apache.tools.ant.taskdefs.optional.unix,
- org.apache.tools.ant.taskdefs.optional.vss,
- org.apache.tools.ant.taskdefs.optional.windows,
- org.apache.tools.ant.taskdefs.rmic,
- org.apache.tools.ant.types,
- org.apache.tools.ant.types.conditions,
- org.apache.tools.ant.types.mappers,
- org.apache.tools.ant.types.optional,
- org.apache.tools.ant.types.optional.depend,
- org.apache.tools.ant.types.optional.image,
- org.apache.tools.ant.types.resolver,
- org.apache.tools.ant.types.resources,
- org.apache.tools.ant.types.resources.comparators,
- org.apache.tools.ant.types.resources.selectors,
- org.apache.tools.ant.types.selectors,
- org.apache.tools.ant.types.selectors.modifiedselector,
- org.apache.tools.ant.types.spi,
- org.apache.tools.ant.util,
- org.apache.tools.ant.util.depend,
- org.apache.tools.ant.util.depend.bcel,
- org.apache.tools.ant.util.facade,
- org.apache.tools.ant.util.java15,
- org.apache.tools.ant.util.optional,
- org.apache.tools.ant.util.regexp,
- org.apache.tools.bzip2,
- org.apache.tools.mail,
- org.apache.tools.tar,
- org.apache.tools.zip
-Require-Bundle: org.eclipse.osgi
-Bundle-RequiredExecutionEnvironment: J2SE-1.2
diff --git a/dependencies/plugins/org.apache.ant/META-INF/eclipse.inf b/dependencies/plugins/org.apache.ant/META-INF/eclipse.inf
deleted file mode 100755
index 41cc185..0000000
--- a/dependencies/plugins/org.apache.ant/META-INF/eclipse.inf
+++ /dev/null
@@ -1 +0,0 @@
-jarprocessor.exclude.children.sign=true
\ No newline at end of file
diff --git a/dependencies/plugins/org.apache.ant/about.html b/dependencies/plugins/org.apache.ant/about.html
deleted file mode 100755
index c256f84..0000000
--- a/dependencies/plugins/org.apache.ant/about.html
+++ /dev/null
@@ -1,62 +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>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>April 16, 2007</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was 
-provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
-
-<h3>Third Party Content</h3>
-
-<p>The Content includes items that have been sourced from third parties as set out below. If you 
-did not receive this Content directly from the Eclipse Foundation, the following is provided 
-for informational purposes only, and you should look to the Redistributor&rsquo;s license for 
-terms and conditions of use.</p>
-
-<h4>Ant 1.7.0</h4>
-<p>The plug-in includes software developed by The Apache Software Foundation as part of the Ant project.</p>
-
-<p>The Ant binary code in ant.jar and the scripts ant, ant.bat, ant.cmd, antenv.cmd, antRun, antRun.bat, antRun.pl, complete-ant-cmd.pl, envset.cmd, lcp.bat, runant.pl, runant.py and runrc.cmd are included with the plug-in with no modifications.
-The Ant source code is located in the zip files named ant-*src.zip.</p>
-
-<p>Your use of the Ant code and the scripts is subject to the terms and conditions of the Apache License, Version 2.0.  A copy of the license is contained
-in the file <a href="about_files/asl-v20.txt" target="_blank">asl-v20.txt</a> and is also available at <a href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">http://www.apache.org/licenses/LICENSE-2.0.html</a>.
-
-<p>The names &quot;Ant&quot; and &quot;Apache Software Foundation&quot; must not be used to endorse or promote products derived from this 
-software without prior written permission.  For written permission, please contact <a href="mailto:apache@apache.org">apache@apache.org</a>.</p>
-
-<p>The Apache attribution <a href="about_files/NOTICE" target="_blank">NOTICE</a> file is included with the Content in accordance with 4d of the Apache License, Version 2.0.</p>
-
-<p>Ant includes the following software:</p>
-
-<blockquote>
-	<h4>DOM</h4>
-	<p>DOM is developed by the World Wide Web Consortium.  Your use of DOM is subject to the terms and conditions of the license found in the
-	file <a href="about_files/LICENSE.dom.html" target="_blank">LICENSE.dom.html</a> which is included with this plug-in and can also be found at
-	<a href="http://www.w3.org/Consortium/Legal/copyright-software-19980720" target="_blank">http://www.w3.org/Consortium/Legal/copyright-software-19980720</a>.</p>
-	
-	<h4>SAX</h4>
-	
-	<p>SAX is developed by the SAX project (<a href="http://www.saxproject.org" target="_blank">http://www.saxproject.org</a>).  Your use of SAX is subject to the
-	terms and conditions of the license found in the file <a href="about_files/LICENSE.sax.txt" target="_blank">LICENSE.sax.txt</a> which is included with this plug-in.</p>
-</blockquote>
-</body>
-</html>
\ No newline at end of file
diff --git a/dependencies/plugins/org.apache.ant/about_files/LICENSE.dom.html b/dependencies/plugins/org.apache.ant/about_files/LICENSE.dom.html
deleted file mode 100755
index 97e7898..0000000
--- a/dependencies/plugins/org.apache.ant/about_files/LICENSE.dom.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<title>License</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-<body lang="EN-US">
-<p>This license came from:<br>
-<a href="http://www.w3.org/Consortium/Legal/copyright-software-19980720">http://www.w3.org/Consortium/Legal/copyright-software-19980720</a></p>
-
-<p>
-W3C® SOFTWARE NOTICE AND LICENSE<br>
-Copyright © 1994-2001 <a href="http://www.w3.org/">World Wide Web Consortium</a>, (<a href="http://www.lcs.mit.edu/">Massachusetts Institute of Technology</a>, 
-<a href="http://www.inria.fr/">Institut National de Recherche en Informatique et en Automatique</a>, <a href="http://www.keio.ac.jp/">Keio University</a>). All Rights Reserved.<br>
-<a href="http://www.w3.org/Consortium/Legal/">http://www.w3.org/Consortium/Legal/</a></p>
-
-<p>
-This W3C work (including software, documents, or other related<br>
-items) is being provided by the copyright holders under the<br>
-following license. By obtaining, using and/or copying this work,<br>
-you (the licensee) agree that you have read, understood, and will<br>
-comply with the following terms and conditions:<br>
-Permission to use, copy, modify, and distribute this software<br>
-and its documentation, with or without modification, for any<br>
-purpose and without fee or royalty is hereby granted, provided that<br>
-you include the following on ALL copies of the software and<br>
-documentation or portions thereof, including modifications, that<br>
-you make:</p>
-
-<p>
-The full text of this NOTICE in a location viewable to users of<br>
-the redistributed or derivative work.</p>
-
-<p>
-Any pre-existing intellectual property disclaimers, notices, or<br>
-terms and conditions. If none exist, a short notice of the<br>
-following form (hypertext is preferred, text is permitted) should<br>
-be used within the body of any redistributed or derivative code:<br>
-"Copyright © [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of<br>
-Technology, Institut National de<br>
-Recherche en Informatique et en Automatique, Keio University). All Rights Reserved.<br>
-http://www.w3.org/Consortium/Legal/"</p>
-
-<p>
-Notice of any changes or modifications to the W3C files,<br>
-including the date changes were made. (We recommend you provide <br>
-URIs to the location from which the code is derived.)</p>
-
-<p>
-THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND<br>
-COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR<br>
-IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF<br>
-MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE<br>
-USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD<br>
-PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.<br>
-COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT,<br>
-SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE<br>
-SOFTWARE OR DOCUMENTATION.</p>
-
-<p>
-The name and trademarks of copyright holders may NOT be used in<br>
-advertising or publicity pertaining to the software without<br>
-specific, written prior permission. Title to copyright in this<br>
-software and any associated documentation will at all times remain<br>
-with copyright holders.</p>
-
-<p>
-____________________________________<br>
-This formulation of W3C's notice and license became active on<br>
-August 14 1998 so as to improve compatibility with GPL. This<br>
-version ensures that W3C software licensing terms are no more<br>
-restrictive than GPL and consequently W3C software may be<br>
-distributed in GPL packages. See the older formulation for the<br>
-policy prior to this date. Please see our Copyright FAQ for common <br>
-questions about using materials from<br>
-our site, including specific terms and conditions for packages like<br>
-libwww, Amaya, and Jigsaw. <br>
-Other questions about this notice can be<br>
-directed to site-policy@w3.org.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/dependencies/plugins/org.apache.ant/about_files/LICENSE.sax.txt b/dependencies/plugins/org.apache.ant/about_files/LICENSE.sax.txt
deleted file mode 100755
index d46b3dc..0000000
--- a/dependencies/plugins/org.apache.ant/about_files/LICENSE.sax.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-This license came from: http://www.megginson.com/SAX/copying.html
-  However please note future versions of SAX may be covered 
-  under http://saxproject.org/?selected=pd
-
-
-This page is now out of date -- see the new SAX site at 
-http://www.saxproject.org/ for more up-to-date
-releases and other information. Please change your bookmarks.
-
-
-SAX2 is Free!
-
-I hereby abandon any property rights to SAX 2.0 (the Simple API for
-XML), and release all of the SAX 2.0 source code, compiled code, and
-documentation contained in this distribution into the Public Domain.
-SAX comes with NO WARRANTY or guarantee of fitness for any
-purpose.
-
-David Megginson, david@megginson.com
-2000-05-05
diff --git a/dependencies/plugins/org.apache.ant/about_files/NOTICE b/dependencies/plugins/org.apache.ant/about_files/NOTICE
deleted file mode 100755
index 1fb6dde..0000000
--- a/dependencies/plugins/org.apache.ant/about_files/NOTICE
+++ /dev/null
@@ -1,15 +0,0 @@
-   =========================================================================
-   ==  NOTICE file corresponding to the section 4 d of                    ==
-   ==  the Apache License, Version 2.0,                                   ==
-   ==  in this case for the Apache Ant distribution.                      ==
-   =========================================================================
-
-   This product includes software developed by
-   The Apache Software Foundation (http://www.apache.org/).
-
-   This product includes also software developed by :
-     - the W3C consortium (http://www.w3c.org) ,
-     - the SAX project (http://www.saxproject.org)
-
-   Please read the different LICENSE files present in the root directory of
-   this distribution.
diff --git a/dependencies/plugins/org.apache.ant/about_files/asl-v20.txt b/dependencies/plugins/org.apache.ant/about_files/asl-v20.txt
deleted file mode 100755
index d645695..0000000
--- a/dependencies/plugins/org.apache.ant/about_files/asl-v20.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/dependencies/plugins/org.apache.ant/build.properties b/dependencies/plugins/org.apache.ant/build.properties
deleted file mode 100755
index 2c7d6fe..0000000
--- a/dependencies/plugins/org.apache.ant/build.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials 
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = lib/*.jar,\
-               bin/*,\
-               plugin.properties,\
-               about.html,\
-               META-INF/,\
-               about_files/,\
-               etc/
-src.includes = lib/*.zip,\
-               about.html,\
-               about_files/,\
-               etc/
\ No newline at end of file
diff --git a/dependencies/plugins/org.apache.ant/etc/changelog.xsl b/dependencies/plugins/org.apache.ant/etc/changelog.xsl
deleted file mode 100755
index cd0d117..0000000
--- a/dependencies/plugins/org.apache.ant/etc/changelog.xsl
+++ /dev/null
@@ -1,147 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<xsl:stylesheet
-    xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
-    version='1.0'>
-
-<!--
-    Copyright  2002,2004-2005 The Apache Software Foundation
-   
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-   
-         http://www.apache.org/licenses/LICENSE-2.0
-   
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
-   
--->
-  <xsl:param name="title"/>
-  <xsl:param name="module"/>
-  <xsl:param name="cvsweb"/>
-
-  <xsl:output method="html" indent="yes" encoding="US-ASCII"
-              doctype-public="-//W3C//DTD HTML 4.01//EN"
-              doctype-system="http://www.w3.org/TR/html401/strict.dtd"/>
-
-  <!-- Copy standard document elements.  Elements that
-       should be ignored must be filtered by apply-templates
-       tags. -->
-  <xsl:template match="*">
-    <xsl:copy>
-      <xsl:copy-of select="attribute::*[. != '']"/>
-      <xsl:apply-templates/>
-    </xsl:copy>
-  </xsl:template>
-
-  <xsl:template match="changelog">
-    <html>
-      <head>
-        <title><xsl:value-of select="$title"/></title>
-        <style type="text/css">
-          body, p {
-            font-family: Verdana, Arial, Helvetica, sans-serif;
-            font-size: 80%;
-            color: #000000;
-            background-color: #ffffff;
-          }
-          tr, td {
-            font-family: Verdana, Arial, Helvetica, sans-serif;
-            background: #eeeee0;
-          }
-          td {
-            padding-left: 20px;
-          }
-      .dateAndAuthor {
-            font-family: Verdana, Arial, Helvetica, sans-serif;
-            font-weight: bold;
-            text-align: left;
-            background: #a6caf0;
-            padding-left: 3px;
-      }
-          a {
-            color: #000000;
-          }
-          pre {
-            font-weight: bold;
-          }
-        </style>
-      </head>
-      <body>
-        <h1>
-          <a name="top"><xsl:value-of select="$title"/></a>
-        </h1>
-        <p style="text-align: right">Designed for use with <a href="http://ant.apache.org/">Apache Ant</a>.</p>
-        <hr/>
-        <table border="0" width="100%" cellspacing="1">
-          
-          <xsl:apply-templates select=".//entry">
-            <xsl:sort select="date" data-type="text" order="descending"/>
-            <xsl:sort select="time" data-type="text" order="descending"/>
-          </xsl:apply-templates>
-          
-        </table>
-        
-      </body>
-    </html>
-  </xsl:template>
-  
-  <xsl:template match="entry">
-    <tr>
-      <td class="dateAndAuthor">
-        <xsl:value-of select="date"/><xsl:text> </xsl:text><xsl:value-of select="time"/><xsl:text> </xsl:text><xsl:value-of select="author"/>
-      </td>
-    </tr>
-    <tr>
-      <td>
-        <pre>
-<xsl:apply-templates select="msg"/></pre>
-        <ul>
-          <xsl:apply-templates select="file"/>
-        </ul>
-      </td>
-    </tr>
-  </xsl:template>
-
-  <xsl:template match="date">
-    <i><xsl:value-of select="."/></i>
-  </xsl:template>
-
-  <xsl:template match="time">
-    <i><xsl:value-of select="."/></i>
-  </xsl:template>
-
-  <xsl:template match="author">
-    <i>
-      <a>
-        <xsl:attribute name="href">mailto:<xsl:value-of select="."/></xsl:attribute>
-        <xsl:value-of select="."/></a>
-    </i>
-  </xsl:template>
-
-  <xsl:template match="file">
-    <li>
-      <a>
-        <xsl:choose>
-          <xsl:when test="string-length(prevrevision) = 0 ">
-            <xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" />?rev=<xsl:value-of select="revision" />&amp;content-type=text/x-cvsweb-markup</xsl:attribute>
-          </xsl:when>
-          <xsl:otherwise>
-            <xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" />?r1=<xsl:value-of select="revision" />&amp;r2=<xsl:value-of select="prevrevision"/></xsl:attribute>
-          </xsl:otherwise>
-        </xsl:choose>
-        <xsl:value-of select="name" /> (<xsl:value-of select="revision"/>)</a>
-    </li>
-  </xsl:template>
-
-  <!-- Any elements within a msg are processed,
-       so that we can preserve HTML tags. -->
-  <xsl:template match="msg">
-    <xsl:apply-templates/>
-  </xsl:template>
-  
-</xsl:stylesheet>
diff --git a/dependencies/plugins/org.apache.ant/etc/checkstyle/checkstyle-frames.xsl b/dependencies/plugins/org.apache.ant/etc/checkstyle/checkstyle-frames.xsl
deleted file mode 100755
index dcaa8b7..0000000
--- a/dependencies/plugins/org.apache.ant/etc/checkstyle/checkstyle-frames.xsl
+++ /dev/null
@@ -1,293 +0,0 @@
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-    xmlns:lxslt="http://xml.apache.org/xslt"
-    xmlns:redirect="org.apache.xalan.lib.Redirect"
-    extension-element-prefixes="redirect">
-
-<!--
-    Copyright  2002-2004 The Apache Software Foundation
-   
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-   
-         http://www.apache.org/licenses/LICENSE-2.0
-   
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
-   
--->
-
-    <xsl:output method="html" indent="yes" encoding="US-ASCII"/>
-    <xsl:decimal-format decimal-separator="." grouping-separator="," />
-
-    <xsl:param name="output.dir" select="'.'"/>
-    <xsl:param name="basedir" select="'.'"/>
-
-    <xsl:template match="checkstyle">
-        <!-- create the index.html -->
-        <redirect:write file="{$output.dir}/index.html">
-            <xsl:call-template name="index.html"/>
-        </redirect:write>
-
-        <!-- create the stylesheet.css -->
-        <redirect:write file="{$output.dir}/stylesheet.css">
-            <xsl:call-template name="stylesheet.css"/>
-        </redirect:write>
-
-        <!-- create the overview-summary.html at the root -->
-        <redirect:write file="{$output.dir}/overview-frame.html">
-            <xsl:apply-templates select="." mode="overview"/>
-        </redirect:write>
-
-        <!-- create the all-classes.html at the root -->
-        <redirect:write file="{$output.dir}/allclasses-frame.html">
-            <xsl:apply-templates select="." mode="all.classes"/>
-        </redirect:write>
-
-        <!-- process all files -->
-        <xsl:apply-templates select="file[count(error) != 0]"/>
-    </xsl:template>
-
-    <xsl:template name="index.html">
-        <html>
-            <head>
-                <title>CheckStyle Audit</title>
-            </head>
-            <frameset cols="20%,80%">
-                <frame src="allclasses-frame.html" name="fileListFrame"/>
-                <frame src="overview-frame.html" name="fileFrame"/>
-            </frameset>
-            <noframes>
-                <h2>Frame Alert</h2>
-                <p>
-                    This document is designed to be viewed using the frames feature.
-                    If you see this message, you are using a non-frame-capable web client.
-                </p>
-            </noframes>
-        </html>
-    </xsl:template>
-
-    <xsl:template name="pageHeader">
-        <table border="0" cellpadding="0" cellspacing="0" width="100%">
-            <tr>
-                <td class="text-align:right"><h2>CheckStyle Audit</h2></td>
-            </tr>
-            <tr>
-                <td class="text-align:right">Designed for use with
-                  <a href='http://checkstyle.sourceforge.net/'>CheckStyle</a> and
-                  <a href='http://ant.apache.org/'>Ant</a>.</td>
-            </tr>
-        </table>
-        <hr size="1"/>
-    </xsl:template>
-
-    <xsl:template match="checkstyle" mode="overview">
-        <html>
-            <head>
-                <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
-            </head>
-            <body>
-                <!-- page header -->
-                <xsl:call-template name="pageHeader"/>
-
-                <!-- Summary part -->
-                <xsl:apply-templates select="." mode="summary"/>
-                <hr size="1" width="100%" align="left"/>
-
-                <!-- File list part -->
-                <xsl:apply-templates select="." mode="filelist"/>
-            </body>
-        </html>
-    </xsl:template>
-
-    <xsl:template name="stylesheet.css">
-        .bannercell {
-        border: 0px;
-        padding: 0px;
-        }
-        body {
-        margin-left: 10;
-        margin-right: 10;
-        font:normal 80% arial,helvetica,sanserif;
-        background-color:#FFFFFF;
-        color:#000000;
-        }
-        .oddrow td {
-        background: #efefef;
-        }
-        .evenrow td {
-        background: #fff;
-        }
-        th, td {
-        text-align: left;
-        vertical-align: top;
-        }
-        th {
-        font-weight:bold;
-        background: #ccc;
-        color: black;
-        }
-        table, th, td {
-        font-size:100%;
-        border: none
-        }
-        table.log tr td, tr th {
-
-        }
-        h2 {
-        font-weight:bold;
-        font-size:140%;
-        margin-bottom: 5;
-        }
-        h3 {
-        font-size:100%;
-        font-weight:bold;
-        background: #525D76;
-        color: white;
-        text-decoration: none;
-        padding: 5px;
-        margin-right: 2px;
-        margin-left: 2px;
-        margin-bottom: 0;
-        }
-    </xsl:template>
-
-    <!--
-    Creates an all-classes.html file that contains a link to all files.
-    -->
-    <xsl:template match="checkstyle" mode="all.classes">
-        <html>
-            <head>
-                <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
-            </head>
-            <body>
-                <h2>Files</h2>
-                <p>
-                    <table width="100%">
-                        <!-- For each file create its part -->
-                        <xsl:apply-templates select="file[count(error) != 0]" mode="all.classes">
-                            <xsl:sort select="substring-after(@name, $basedir)"/>
-                        </xsl:apply-templates>
-                    </table>
-                </p>
-            </body>
-        </html>
-    </xsl:template>
-
-    <xsl:template match="checkstyle" mode="filelist">
-        <h3>Files</h3>
-        <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
-            <tr>
-                <th>Name</th>
-                <th>Errors</th>
-            </tr>
-            <xsl:apply-templates select="file[count(error) != 0]" mode="filelist">
-                <xsl:sort select="count(error)" order="descending" data-type="number"/>
-            </xsl:apply-templates>
-        </table>
-    </xsl:template>
-
-    <xsl:template match="file" mode="filelist">
-        <tr>
-            <xsl:call-template name="alternated-row"/>
-            <td nowrap="nowrap">
-                <a>
-                    <xsl:attribute name="href">
-                        <xsl:text>files/</xsl:text><xsl:value-of select="substring-after(@name, $basedir)"/><xsl:text>.html</xsl:text>
-                    </xsl:attribute>
-                    <xsl:value-of select="substring-after(@name, $basedir)"/>
-                </a>
-            </td>
-            <td><xsl:value-of select="count(error)"/></td>
-        </tr>
-    </xsl:template>
-
-    <xsl:template match="file" mode="all.classes">
-        <tr>
-            <td nowrap="nowrap">
-                <a target="fileFrame">
-                    <xsl:attribute name="href">
-                        <xsl:text>files/</xsl:text><xsl:value-of select="substring-after(@name, $basedir)"/><xsl:text>.html</xsl:text>
-                    </xsl:attribute>
-                    <xsl:value-of select="substring-after(@name, $basedir)"/>
-                </a>
-            </td>
-        </tr>
-    </xsl:template>
-
-    <!--
-    transform string like a/b/c to ../../../
-    @param path the path to transform into a descending directory path
-    -->
-    <xsl:template name="path">
-        <xsl:param name="path"/>
-        <xsl:if test="contains($path,'/')">
-            <xsl:text>../</xsl:text>
-            <xsl:call-template name="path">
-                <xsl:with-param name="path"><xsl:value-of select="substring-after($path,'/')"/></xsl:with-param>
-            </xsl:call-template>
-        </xsl:if>
-        <xsl:if test="not(contains($path,'/')) and not($path = '')">
-            <xsl:text>../</xsl:text>
-        </xsl:if>
-    </xsl:template>
-
-    <xsl:template match="file">
-        <redirect:write file="{$output.dir}/files/{substring-after(@name, $basedir)}.html">
-            <html>
-                <head>
-                    <link rel="stylesheet" type="text/css">
-                        <xsl:attribute name="href"><xsl:call-template name="path"><xsl:with-param name="path" select="substring-after(@name, $basedir)"/></xsl:call-template><xsl:text>stylesheet.css</xsl:text></xsl:attribute>
-                    </link>
-                </head>
-                <body>
-                    <xsl:call-template name="pageHeader"/>
-                    <h3>File <xsl:value-of select="substring-after(@name, $basedir)"/></h3>
-                    <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
-                        <tr>
-                            <th>Error Description</th>
-                            <th>Line:Column</th>
-                        </tr>
-                        <xsl:for-each select="error">
-                            <tr>
-                                <xsl:call-template name="alternated-row"/>
-                                <td><a title="{@source}"><xsl:value-of select="@message"/></a></td>
-                                <td align="center"><xsl:value-of select="@line"/><xsl:if test="@column">:<xsl:value-of select="@column"/></xsl:if></td>
-                            </tr>
-                        </xsl:for-each>
-                    </table>
-                </body>
-            </html>
-        </redirect:write>
-    </xsl:template>
-
-    <xsl:template match="checkstyle" mode="summary">
-        <h3>Summary</h3>
-        <xsl:variable name="fileCount" select="count(file)"/>
-        <xsl:variable name="errorCount" select="count(file/error)"/>
-        <xsl:variable name="fileErrorCount" select="count(file[count(error) != 0])"/>
-        <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
-            <tr>
-                <th>Total Files</th>
-                <th>Files With Errors</th>
-                <th>Errors</th>
-            </tr>
-            <tr>
-                <xsl:call-template name="alternated-row"/>
-                <td><xsl:value-of select="$fileCount"/></td>
-                <td><xsl:value-of select="$fileErrorCount"/></td>
-                <td><xsl:value-of select="$errorCount"/></td>
-            </tr>
-        </table>
-    </xsl:template>
-
-    <xsl:template name="alternated-row">
-        <xsl:attribute name="class">
-            <xsl:if test="position() mod 2 = 1">oddrow</xsl:if>
-            <xsl:if test="position() mod 2 = 0">evenrow</xsl:if>
-        </xsl:attribute>
-    </xsl:template>
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/dependencies/plugins/org.apache.ant/etc/checkstyle/checkstyle-text.xsl b/dependencies/plugins/org.apache.ant/etc/checkstyle/checkstyle-text.xsl
deleted file mode 100755
index 91d496c..0000000
--- a/dependencies/plugins/org.apache.ant/etc/checkstyle/checkstyle-text.xsl
+++ /dev/null
@@ -1,33 +0,0 @@
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-<!--
-    Copyright  2003-2004 The Apache Software Foundation
-   
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-   
-         http://www.apache.org/licenses/LICENSE-2.0
-   
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
-   
--->
-
-    <xsl:strip-space elements="checkstyle"/>
-    <xsl:preserve-space elements="file"/>
-    <xsl:output method="text"/>
-    <xsl:template match="checkstyle/file/error">
-        <xsl:value-of select="../@name"/>
-        <xsl:text>:</xsl:text>
-        <xsl:value-of select="@line"/>
-        <xsl:text>:</xsl:text>
-        <xsl:value-of select="@column"/>
-        <xsl:text> </xsl:text>
-        <xsl:value-of select="@message"/>
-    </xsl:template>
-</xsl:stylesheet>
-
diff --git a/dependencies/plugins/org.apache.ant/etc/checkstyle/checkstyle-xdoc.xsl b/dependencies/plugins/org.apache.ant/etc/checkstyle/checkstyle-xdoc.xsl
deleted file mode 100755
index d23ac0e..0000000
--- a/dependencies/plugins/org.apache.ant/etc/checkstyle/checkstyle-xdoc.xsl
+++ /dev/null
@@ -1,129 +0,0 @@
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-    xmlns:lxslt="http://xml.apache.org/xslt"
-    xmlns:redirect="org.apache.xalan.lib.Redirect"
-    extension-element-prefixes="redirect">
-
-<!--
-    Copyright  2003-2004 The Apache Software Foundation
-   
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-   
-         http://www.apache.org/licenses/LICENSE-2.0
-   
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
-   
--->
-
-    <xsl:output method="xml" indent="yes"/>
-    <xsl:decimal-format decimal-separator="." grouping-separator="," />
-
-    <xsl:param name="output.dir" select="'.'"/>
-    <xsl:param name="basedir" select="'.'"/>
-
-    <xsl:template match="checkstyle">
-      <document>
-        <properties>
-          <title>Checkstyle Audit</title>
-        </properties>
-
-        <body>
-          <xsl:apply-templates select="." mode="summary"/>
-          <!-- File list part -->
-          <xsl:apply-templates select="." mode="filelist"/>
-          <xsl:apply-templates select="file[count(error) != 0]"/>
-        </body>
-      </document>
-    </xsl:template>
-
-    <xsl:template match="checkstyle" mode="filelist">
-      <section name="Files">
-        <table>
-            <tr>
-                <th>Name</th>
-                <th>Errors</th>
-            </tr>
-            <xsl:apply-templates select="file[count(error) != 0]" mode="filelist">
-                <xsl:sort select="count(error)" order="descending" data-type="number"/>
-            </xsl:apply-templates>
-        </table>
-      </section>
-    </xsl:template>
-
-    <xsl:template match="file" mode="filelist">
-        <tr>
-            <xsl:call-template name="alternated-row"/>
-            <td nowrap="nowrap">
-                <a>
-                    <xsl:attribute name="href">
-                        <xsl:text>files</xsl:text><xsl:value-of select="substring-after(@name, $basedir)"/><xsl:text>.html</xsl:text>
-                    </xsl:attribute>
-                    <xsl:value-of select="substring-after(@name, $basedir)"/>
-                </a>
-            </td>
-            <td><xsl:value-of select="count(error)"/></td>
-        </tr>
-    </xsl:template>
-
-    <xsl:template match="file">
-      <redirect:write file="{$output.dir}/files{substring-after(@name, $basedir)}.xml">
-        <document>
-          <properties>
-            <title>Checkstyle Audit</title>
-          </properties>
-
-          <body>
-            <section name="Details for {substring-after(@name, $basedir)}">
-              <table>
-                  <tr>
-                      <th>Error Description</th>
-                      <th>Line</th>
-                  </tr>
-                  <xsl:for-each select="error">
-                      <tr>
-                          <xsl:call-template name="alternated-row"/>
-                          <td><a title="{@source}"><xsl:value-of select="@message"/></a></td>
-                          <td><xsl:value-of select="@line"/></td>
-                      </tr>
-                  </xsl:for-each>
-              </table>
-            </section>
-          </body>
-        </document>
-      </redirect:write>
-    </xsl:template>
-
-    <xsl:template match="checkstyle" mode="summary">
-      <section name="Summary">
-        <xsl:variable name="fileCount" select="count(file)"/>
-        <xsl:variable name="errorCount" select="count(file/error)"/>
-        <xsl:variable name="fileErrorCount" select="count(file[count(error) != 0])"/>
-        <table>
-            <tr>
-                <th>Files</th>
-                <th>Files With Errors</th>
-                <th>Errors</th>
-            </tr>
-            <tr>
-                <xsl:call-template name="alternated-row"/>
-                <td><xsl:value-of select="$fileCount"/></td>
-                <td><xsl:value-of select="$fileErrorCount"/></td>
-                <td><xsl:value-of select="$errorCount"/></td>
-            </tr>
-        </table>
-      </section>
-    </xsl:template>
-
-    <xsl:template name="alternated-row">
-        <xsl:attribute name="class">
-            <xsl:if test="position() mod 2 = 1">oddrow</xsl:if>
-            <xsl:if test="position() mod 2 = 0">evenrow</xsl:if>
-        </xsl:attribute>
-    </xsl:template>
-</xsl:stylesheet>
-
diff --git a/dependencies/plugins/org.apache.ant/etc/coverage-frames.xsl b/dependencies/plugins/org.apache.ant/etc/coverage-frames.xsl
deleted file mode 100755
index f808908..0000000
--- a/dependencies/plugins/org.apache.ant/etc/coverage-frames.xsl
+++ /dev/null
@@ -1,496 +0,0 @@
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-    xmlns:lxslt="http://xml.apache.org/xslt"
-    xmlns:redirect="org.apache.xalan.lib.Redirect"
-    extension-element-prefixes="redirect">
-<xsl:output method="html" indent="yes"/>
-<xsl:decimal-format decimal-separator="." grouping-separator="," />
-<!--
-    Copyright  2001-2004 The Apache Software Foundation
-   
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-   
-         http://www.apache.org/licenses/LICENSE-2.0
-   
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
-   
--->
-
-<!--
-
- Sample stylesheet to be used with JProbe 3.0 XML output.
-
- It creates a set of HTML files a la javadoc where you can browse easily
- through all packages and classes.
-
- It is best used with JProbe Coverage Ant task that gives you the benefit
- of a reference classpath so that you have the list of classes/methods
- that are not used at all in a given classpath.
-
- @author Stephane Bailliez <a href="mailto:sbailliez@apache.org"/>
-
--->
-
-<!-- default output directory is current directory -->
-<xsl:param name="output.dir" select="'.'"/>
-
-<!-- ======================================================================
-    Root element
-    ======================================================================= -->
-<xsl:template match="/snapshot">
-    <!-- create the index.html -->
-    <redirect:write file="{$output.dir}/index.html">
-        <xsl:call-template name="index.html"/>
-    </redirect:write>
-
-    <!-- create the stylesheet.css -->
-    <redirect:write file="{$output.dir}/stylesheet.css">
-        <xsl:call-template name="stylesheet.css"/>
-    </redirect:write>
-
-    <!-- create the overview-packages.html at the root -->
-    <redirect:write file="{$output.dir}/overview-summary.html">
-        <xsl:apply-templates select="." mode="overview.packages"/>
-    </redirect:write>
-
-    <!-- create the all-packages.html at the root -->
-    <redirect:write file="{$output.dir}/overview-frame.html">
-        <xsl:apply-templates select="." mode="all.packages"/>
-    </redirect:write>
-
-    <!-- create the all-classes.html at the root -->
-    <redirect:write file="{$output.dir}/allclasses-frame.html">
-        <xsl:apply-templates select="." mode="all.classes"/>
-    </redirect:write>
-
-    <!-- process all packages -->
-    <xsl:apply-templates select="./package" mode="write"/>
-</xsl:template>
-
-<!-- =======================================================================
-    Frameset definition. Entry point for the report.
-    3 frames: packageListFrame, classListFrame, classFrame
-    ======================================================================= -->
-<xsl:template name="index.html">
-<html>
-    <head><title>Coverage Results.</title></head>
-    <frameset cols="20%,80%">
-        <frameset rows="30%,70%">
-            <frame src="overview-frame.html" name="packageListFrame"/>
-            <frame src="allclasses-frame.html" name="classListFrame"/>
-        </frameset>
-        <frame src="overview-summary.html" name="classFrame"/>
-    </frameset>
-    <noframes>
-        <h2>Frame Alert</h2>
-        <p>
-        This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
-        </p>
-    </noframes>
-</html>
-</xsl:template>
-
-<!-- =======================================================================
-    Stylesheet CSS used
-    ======================================================================= -->
-<!-- this is the stylesheet css to use for nearly everything -->
-<xsl:template name="stylesheet.css">
-    .bannercell {
-      border: 0px;
-      padding: 0px;
-    }
-    body {
-      margin-left: 10;
-      margin-right: 10;
-      font:normal 80% arial,helvetica,sanserif;
-      background-color:#FFFFFF;
-      color:#000000;
-    }
-    .a td {
-      background: #efefef;
-    }
-    .b td {
-      background: #fff;
-    }
-    th, td {
-      text-align: left;
-      vertical-align: top;
-    }
-    th {
-      font-weight:bold;
-      background: #ccc;
-      color: black;
-    }
-    table, th, td {
-      font-size:100%;
-      border: none
-    }
-    table.log tr td, tr th {
-
-    }
-    h2 {
-      font-weight:bold;
-      font-size:140%;
-      margin-bottom: 5;
-    }
-    h3 {
-      font-size:100%;
-      font-weight:bold;
-      background: #525D76;
-      color: white;
-      text-decoration: none;
-      padding: 5px;
-      margin-right: 2px;
-      margin-left: 2px;
-      margin-bottom: 0;
-    }
-</xsl:template>
-
-<!-- =======================================================================
-    List of all classes in all packages
-    This will be the first page in the classListFrame
-    ======================================================================= -->
-<xsl:template match="snapshot" mode="all.classes">
-    <html>
-        <head>
-            <xsl:call-template name="create.stylesheet.link"/>
-        </head>
-        <body>
-            <h2>Classes</h2>
-            <table width="100%">
-                <xsl:for-each select="package/class">
-                    <xsl:sort select="@name"/>
-                    <xsl:variable name="package.name" select="(ancestor::package)[last()]/@name"/>
-                    <xsl:variable name="link">
-                        <xsl:if test="not($package.name='')">
-                            <xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
-                        </xsl:if><xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
-                    </xsl:variable>
-                    <tr>
-                        <td nowrap="nowrap">
-                            <a target="classFrame" href="{$link}"><xsl:value-of select="@name"/></a>
-                        </td>
-                    </tr>
-                </xsl:for-each>
-            </table>
-        </body>
-    </html>
-</xsl:template>
-
-<!-- list of all packages -->
-<xsl:template match="snapshot" mode="all.packages">
-    <html>
-        <head>
-            <xsl:call-template name="create.stylesheet.link"/>
-        </head>
-        <body>
-            <h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
-            <h2>Packages</h2>
-            <table width="100%">
-                <xsl:for-each select="package">
-                    <xsl:sort select="@name" order="ascending"/>
-                    <tr>
-                        <td nowrap="nowrap">
-                            <a href="{translate(@name,'.','/')}/package-summary.html" target="classFrame">
-                                <xsl:value-of select="@name"/>
-                            </a>
-                        </td>
-                    </tr>
-                </xsl:for-each>
-            </table>
-        </body>
-    </html>
-</xsl:template>
-
-<!-- overview of statistics in packages -->
-<xsl:template match="snapshot" mode="overview.packages">
-    <html>
-        <head>
-            <xsl:call-template name="create.stylesheet.link"/>
-        </head>
-        <body onload="open('allclasses-frame.html','classListFrame')">
-        <xsl:call-template name="pageHeader"/>
-        <h3>Summary</h3>
-        <table class="log" cellpadding="5" cellspacing="2" width="100%">
-            <tr>
-                <!--th width="10%" nowrap="nowrap">Date</th>
-                <th width="10%" nowrap="nowrap">Elapsed time</th-->
-                <th width="10%" nowrap="nowrap">Reported Classes</th>
-                <th width="10%" nowrap="nowrap">Methods Hit</th>
-                <th width="10%" nowrap="nowrap">Lines Hit</th>
-            </tr>
-            <tr class="a">
-                <!--td nowrap="nowrap"><xsl:value-of select="execution_log/@program_start"/></td>
-                <td><xsl:value-of select="format-number(execution_log/@elapsed_time div 1000,'0.0')"/>secs</td-->
-                <td><xsl:value-of select="count(package/class)"/></td>
-                <td><xsl:value-of select="format-number(cov.data/@hit_methods div cov.data/@total_methods,'0.0%')"/></td>
-                <td><xsl:value-of select="format-number(cov.data/@hit_lines div cov.data/@total_lines,'0.0%')"/></td>
-            </tr>
-        </table>
-        <table border="0" width="100%">
-        <tr>
-        <td style="text-align: justify;">
-        To ensure accurate test runs on Java applications, developers need to know how much of
-        the code has been tested, and where to find any untested code. Coverage helps you
-        locate untested code, and measure precisely how much code has been exercised.
-        The result is a higher quality application in a shorter period of time.
-        <p/>
-        </td>
-        </tr>
-        </table>
-
-        <h3>Packages</h3>
-        <table class="log" cellpadding="5" cellspacing="2" width="100%">
-            <xsl:apply-templates select="package[1]" mode="stats.header"/>
-            <!-- display packages and sort them via their coverage rate -->
-            <xsl:for-each select="package">
-                <xsl:sort data-type="number" select="cov.data/@hit_lines div cov.data/@total_lines"/>
-                <tr>
-                  <xsl:call-template name="alternate-row"/>
-                    <td><a href="{translate(@name,'.','/')}/package-summary.html"><xsl:value-of select="@name"/></a></td>
-                    <td><xsl:value-of select="format-number(cov.data/@hit_methods div cov.data/@total_methods,'0.0%')"/></td>
-                    <td><xsl:value-of select="format-number(cov.data/@hit_lines div cov.data/@total_lines,'0.0%')"/></td>
-                </tr>
-            </xsl:for-each>
-        </table>
-        <xsl:call-template name="pageFooter"/>
-        </body>
-        </html>
-</xsl:template>
-
-<!--
- detailed info for a package. It will output the list of classes
-, the summary page, and the info for each class
--->
-<xsl:template match="package" mode="write">
-    <xsl:variable name="package.dir">
-        <xsl:if test="not(@name = '')"><xsl:value-of select="translate(@name,'.','/')"/></xsl:if>
-        <xsl:if test="@name = ''">.</xsl:if>
-    </xsl:variable>
-
-    <!-- create a classes-list.html in the package directory -->
-    <redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
-        <xsl:apply-templates select="." mode="classes.list"/>
-    </redirect:write>
-
-    <!-- create a package-summary.html in the package directory -->
-    <redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
-        <xsl:apply-templates select="." mode="package.summary"/>
-    </redirect:write>
-
-    <!-- for each class, creates a @name.html -->
-    <xsl:for-each select="class">
-        <redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
-            <xsl:apply-templates select="." mode="class.details"/>
-        </redirect:write>
-    </xsl:for-each>
-</xsl:template>
-
-<!-- list of classes in a package -->
-<xsl:template match="package" mode="classes.list">
-    <html>
-        <HEAD>
-            <xsl:call-template name="create.stylesheet.link">
-                <xsl:with-param name="package.name" select="@name"/>
-            </xsl:call-template>
-        </HEAD>
-        <BODY>
-            <table width="100%">
-                <tr>
-                    <td nowrap="nowrap">
-                        <H2><a href="package-summary.html" target="classFrame"><xsl:value-of select="@name"/></a></H2>
-                    </td>
-                </tr>
-            </table>
-
-            <H2>Classes</H2>
-            <TABLE WIDTH="100%">
-                <xsl:for-each select="class">
-                    <xsl:sort select="@name"/>
-                    <tr>
-                        <td nowrap="nowrap">
-                            <a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
-                        </td>
-                    </tr>
-                </xsl:for-each>
-            </TABLE>
-        </BODY>
-    </html>
-</xsl:template>
-
-<!-- summary of a package -->
-<xsl:template match="package" mode="package.summary">
-    <HTML>
-        <HEAD>
-            <xsl:call-template name="create.stylesheet.link">
-                <xsl:with-param name="package.name" select="@name"/>
-            </xsl:call-template>
-        </HEAD>
-        <!-- when loading this package, it will open the classes into the frame -->
-        <BODY onload="open('package-frame.html','classListFrame')">
-            <xsl:call-template name="pageHeader"/>
-            <h3>Package <xsl:value-of select="@name"/></h3>
-            <table class="log" cellpadding="5" cellspacing="2" width="100%">
-                <xsl:apply-templates select="." mode="stats.header"/>
-                <xsl:apply-templates select="." mode="stats"/>
-            </table>
-
-            <xsl:if test="count(class) &gt; 0">
-                <H3>Classes</H3>
-                <table class="log" cellpadding="5" cellspacing="2" width="100%">
-                    <xsl:apply-templates select="." mode="stats.header"/>
-                    <xsl:apply-templates select="class" mode="stats">
-                        <xsl:sort data-type="number" select="cov.data/@hit_lines div cov.data/@total_lines"/>
-                    </xsl:apply-templates>
-                </table>
-            </xsl:if>
-            <xsl:call-template name="pageFooter"/>
-        </BODY>
-    </HTML>
-</xsl:template>
-
-<!-- details of a class -->
-<xsl:template match="class" mode="class.details">
-    <xsl:variable name="package.name" select="(ancestor::package)[last()]/@name"/>
-    <HTML>
-        <HEAD>
-            <xsl:call-template name="create.stylesheet.link">
-                <xsl:with-param name="package.name" select="$package.name"/>
-            </xsl:call-template>
-        </HEAD>
-        <BODY>
-            <xsl:call-template name="pageHeader"/>
-            <H3>Class <xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></H3>
-
-            <!-- class summary -->
-            <table class="log" cellpadding="5" cellspacing="2" width="100%">
-                <xsl:apply-templates select="." mode="stats.header"/>
-                <xsl:apply-templates select="." mode="stats"/>
-            </table>
-
-            <!-- details of methods -->
-            <H3>Methods</H3>
-            <table class="log" cellpadding="5" cellspacing="2" width="100%">
-                <xsl:apply-templates select="method[1]" mode="stats.header"/>
-                <xsl:apply-templates select="method" mode="stats">
-                    <xsl:sort data-type="number" select="cov.data/@hit_lines div cov.data/@total_lines"/>
-                </xsl:apply-templates>
-            </table>
-            <xsl:call-template name="pageFooter"/>
-        </BODY>
-    </HTML>
-
-</xsl:template>
-
-<!-- Page Header -->
-<xsl:template name="pageHeader">
-  <!-- jakarta logo -->
-  <table border="0" cellpadding="0" cellspacing="0" width="100%">
-  <tr>
-    <td class="bannercell" rowspan="2">
-      <a href="http://jakarta.apache.org/">
-      <img src="http://jakarta.apache.org/images/jakarta-logo.gif" alt="http://jakarta.apache.org" align="left" border="0"/>
-      </a>
-    </td>
-        <td style="text-align:right"><h2>Source Code Coverage</h2></td>
-        </tr>
-        <tr>
-        <td style="text-align:right">Designed for use with <a href='http://www.sitraka.com/jprobe'>Sitraka JProbe</a> and <a href='http://jakarta.apache.org'>Ant</a>.</td>
-        </tr>
-  </table>
-    <hr size="1"/>
-</xsl:template>
-
-<!-- Page Footer -->
-<xsl:template name="pageFooter">
-    <table width="100%">
-      <tr><td><hr noshade="yes" size="1"/></td></tr>
-      <tr><td>
-      <div align="center"><font color="#525D76" size="-1"><em>
-      Copyright &#169; 1999-2001, Apache Software Foundation
-      </em></font></div>
-      </td></tr>
-    </table>
-</xsl:template>
-
-
-<xsl:template name="table.header">
-    <tr>
-        <th width="80%">Name</th>
-        <th width="10%" nowrap="nowrap">Methods Hit</th>
-        <th width="10%" nowrap="nowrap">Lines Hit</th>
-    </tr>
-</xsl:template>
-
-<xsl:template match="method" mode="stats.header">
-    <tr>
-        <th width="90%">Name</th>
-        <th width="10%" nowrap="nowrap">Lines Hit</th>
-    </tr>
-</xsl:template>
-<xsl:template match="method" mode="stats">
-    <tr>
-      <xsl:call-template name="alternate-row"/>
-        <td><xsl:value-of select="@name"/></td>
-        <td>
-        <xsl:value-of select="format-number(cov.data/@hit_lines div cov.data/@total_lines,'0.0%')"/>
-        </td>
-    </tr>
-</xsl:template>
-
-<xsl:template match="package|class" mode="stats.header">
-    <tr>
-        <th width="80%">Name</th>
-        <th width="10%" nowrap="nowrap">Methods Hit</th>
-        <th width="10%" nowrap="nowrap">Lines Hit</th>
-    </tr>
-</xsl:template>
-<xsl:template match="package|class" mode="stats">
-    <tr>
-      <xsl:call-template name="alternate-row"/>
-        <td><xsl:value-of select="@name"/></td>
-        <td><xsl:value-of select="format-number(cov.data/@hit_methods div cov.data/@total_methods,'0.0%')"/></td>
-        <td><xsl:value-of select="format-number(cov.data/@hit_lines div cov.data/@total_lines,'0.0%')"/></td>
-    </tr>
-</xsl:template>
-
-<!--
-    transform string like a.b.c to ../../../
-    @param path the path to transform into a descending directory path
--->
-<xsl:template name="path">
-    <xsl:param name="path"/>
-    <xsl:if test="contains($path,'.')">
-        <xsl:text>../</xsl:text>
-        <xsl:call-template name="path">
-            <xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
-        </xsl:call-template>
-    </xsl:if>
-    <xsl:if test="not(contains($path,'.')) and not($path = '')">
-        <xsl:text>../</xsl:text>
-    </xsl:if>
-</xsl:template>
-
-
-<!-- create the link to the stylesheet based on the package name -->
-<xsl:template name="create.stylesheet.link">
-    <xsl:param name="package.name"/>
-    <LINK REL ="stylesheet" TYPE="text/css" TITLE="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></LINK>
-</xsl:template>
-
-<!-- alternated row style -->
-<xsl:template name="alternate-row">
-<xsl:attribute name="class">
-  <xsl:if test="position() mod 2 = 1">a</xsl:if>
-  <xsl:if test="position() mod 2 = 0">b</xsl:if>
-</xsl:attribute>
-</xsl:template>
-
-</xsl:stylesheet>
-
-
diff --git a/dependencies/plugins/org.apache.ant/etc/jdepend-frames.xsl b/dependencies/plugins/org.apache.ant/etc/jdepend-frames.xsl
deleted file mode 100755
index 7a2a8ae..0000000
--- a/dependencies/plugins/org.apache.ant/etc/jdepend-frames.xsl
+++ /dev/null
@@ -1,485 +0,0 @@
-<xsl:stylesheet  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-  xmlns:lxslt="http://xml.apache.org/xslt"
-  xmlns:redirect="org.apache.xalan.lib.Redirect"
-  extension-element-prefixes="redirect">
-<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
-<!--
-    Copyright  2002-2004 The Apache Software Foundation
-   
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-   
-         http://www.apache.org/licenses/LICENSE-2.0
-   
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
-   
--->
-<!--
-
- Sample stylesheet to be used with JDepend XML output.
-
- It creates a set of HTML files a la javadoc where you can browse easily
- through all packages and classes.
-
- @author <a href="mailto:jtulley@novell.com">Jeff Tulley</a>
-
-  -->
-<xsl:param name="output.dir" select="'.'"/>
-
-<xsl:template match="JDepend">
-   <!-- create the index.html -->
-   <redirect:write file="{$output.dir}/index.html">
-      <xsl:call-template name="index.html"/>
-   </redirect:write>
-
-  <!-- create the stylesheet.css -->
-  <redirect:write file="{$output.dir}/stylesheet.css">
-    <xsl:call-template name="stylesheet.css"/>
-   </redirect:write>
-
-   <!-- create the overview-packages.html at the root -->
-  <redirect:write file="{$output.dir}/overview-summary.html">
-    <xsl:apply-templates select="." mode="overview.packages"/>
-  </redirect:write>
-
-   <!-- create the overview-packages.html at the root -->
-   <redirect:write file="{$output.dir}/overview-packages.html">
-    <xsl:apply-templates select="." mode="packages.details"/>
-  </redirect:write>
-
-   <!-- create the overview-cycles.html at the root -->
-   <redirect:write file="{$output.dir}/overview-cycles.html">
-    <xsl:apply-templates select="." mode="cycles.details"/>
-  </redirect:write>
-
-   <!-- create the overview-cycles.html at the root -->
-   <redirect:write file="{$output.dir}/overview-explanations.html">
-    <xsl:apply-templates select="." mode="explanations"/>
-  </redirect:write>
-
-  <!-- create the all-packages.html at the root -->
-   <redirect:write file="{$output.dir}/all-packages.html">
-    <xsl:apply-templates select="Packages" mode="all.packages"/>
-  </redirect:write>
-
-  <!-- create the all-cycles.html at the root -->
-  <redirect:write file="{$output.dir}/all-cycles.html">
-    <xsl:apply-templates select="Cycles" mode="all.cycles"/>
-  </redirect:write>
-</xsl:template>
-
-
-<xsl:template name="index.html">
-<html>
-   <head>
-      <title>JDepend Analysis</title>
-   </head>
-      <frameset cols="20%,80%">
-         <frameset rows="30%,70%">
-            <frame src="all-packages.html" name="packageListFrame"/>
-            <frame src="all-cycles.html" name="classListFrame"/>
-         </frameset>
-         <frame src="overview-summary.html" name="classFrame"/>
-      </frameset>
-      <noframes>
-         <h2>Frame Alert</h2>
-         <p>
-            This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
-         </p>
-      </noframes>
-</html>
-</xsl:template>
-
-<!-- this is the stylesheet css to use for nearly everything -->
-<xsl:template name="stylesheet.css">
-   <style type="text/css">
-    body {
-    font:normal 68% verdana,arial,helvetica;
-    color:#000000;
-    }
-    table tr td, tr th {
-      font-size: 68%;
-    }
-    table.details tr th{
-    font-weight: bold;
-    text-align:left;
-    background:#a6caf0;
-    }
-    table.details tr td{
-    background:#eeeee0;
-    }
-
-    p {
-    line-height:1.5em;
-    margin-top:0.5em; margin-bottom:1.0em;
-    margin-left:2em;
-    margin-right:2em;
-    }
-    h1 {
-    margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
-    }
-    h2 {
-    margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
-    }
-    h3 {
-    margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
-    }
-    h4 {
-    margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
-    }
-    h5 {
-    margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
-    }
-    h6 {
-    margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
-    }
-    .Error {
-    font-weight:bold; color:red;
-    }
-    .Failure {
-    font-weight:bold; color:purple;
-    }
-    .Properties {
-    text-align:right;
-    }
-  </style>
-</xsl:template>
-
-<xsl:template match="JDepend" mode="overview.packages">
-   <html>
-      <head>
-         <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
-      </head>
-      <body>
-         <xsl:call-template name="pageHeader"/>
-  <table width="100%"><tr align="left"><h2>Summary</h2><td>
-  </td><td align="right">
-  [summary]
-  [<a href="overview-packages.html">packages</a>]
-  [<a href="overview-cycles.html">cycles</a>]
-  [<a href="overview-explanations.html">explanations</a>]
-   </td></tr></table>
-         <table width="100%" class="details">
-            <tr>
-               <th>Package</th>
-               <th>Total Classes</th>
-               <th><a href="overview-explanations.html#EXnumber">Abstract Classes</a></th>
-               <th><a href="overview-explanations.html#EXnumber">Concrete Classes</a></th>
-               <th><a href="overview-explanations.html#EXafferent">Afferent Couplings</a></th>
-               <th><a href="overview-explanations.html#EXefferent">Efferent Couplings</a></th>
-               <th><a href="overview-explanations.html#EXabstractness">Abstractness</a></th>
-               <th><a href="overview-explanations.html#EXinstability">Instability</a></th>
-               <th><a href="overview-explanations.html#EXdistance">Distance</a></th>
-
-            </tr>
-            <xsl:for-each select="./Packages/Package">
-               <xsl:if test="count(error) = 0">
-                  <tr>
-                     <td align="left">
-                        <a>
-                           <xsl:attribute name="href">overview-packages.html#PK<xsl:value-of select="@name"/>
-                           </xsl:attribute>
-                           <xsl:value-of select="@name"/>
-                        </a>
-                     </td>
-                     <td align="right"><xsl:value-of select="Stats/TotalClasses"/></td>
-                     <td align="right"><xsl:value-of select="Stats/AbstractClasses"/></td>
-                     <td align="right"><xsl:value-of select="Stats/ConcreteClasses"/></td>
-                     <td align="right"><xsl:value-of select="Stats/Ca"/></td>
-                     <td align="right"><xsl:value-of select="Stats/Ce"/></td>
-                     <td align="right"><xsl:value-of select="Stats/A"/></td>
-                     <td align="right"><xsl:value-of select="Stats/I"/></td>
-                     <td align="right"><xsl:value-of select="Stats/D"/></td>
-                  </tr>
-               </xsl:if>
-            </xsl:for-each>
-            <xsl:for-each select="./Packages/Package">
-               <xsl:if test="count(error) &gt; 0">
-                  <tr>
-                     <td align="left">
-                        <xsl:value-of select="@name"/>
-                     </td>
-                     <td align="left" colspan="8"><xsl:value-of select="error"/></td>
-                  </tr>
-               </xsl:if>
-            </xsl:for-each>
-         </table>
-      </body>
-   </html>
-</xsl:template>
-
-<xsl:template match="JDepend" mode="packages.details">
-   <html>
-      <head>
-          <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
-      </head>
-      <body>
-         <xsl:call-template name="pageHeader"/>
-  <table width="100%"><tr align="left"><h2>Packages</h2><td>
-  </td><td align="right">
-  [<a href="overview-summary.html">summary</a>]
-  [packages]
-  [<a href="overview-cycles.html">cycles</a>]
-  [<a href="overview-explanations.html">explanations</a>]
-   </td></tr></table>
-
-  <xsl:for-each select="./Packages/Package">
-    <xsl:if test="count(error) = 0">
-      <h3><a><xsl:attribute name="name">PK<xsl:value-of select="@name"/></xsl:attribute>
-      <xsl:value-of select="@name"/></a></h3>
-
-      <table width="100%"><tr>
-        <td><a href="overview-explanations.html#EXafferent">Afferent Couplings</a>: <xsl:value-of select="Stats/Ca"/></td>
-        <td><a href="overview-explanations.html#EXefferent">Efferent Couplings</a>: <xsl:value-of select="Stats/Ce"/></td>
-        <td><a href="overview-explanations.html#EXabstractness">Abstractness</a>: <xsl:value-of select="Stats/A"/></td>
-        <td><a href="overview-explanations.html#EXinstability">Instability</a>: <xsl:value-of select="Stats/I"/></td>
-        <td><a href="overview-explanations.html#EXdistance">Distance</a>: <xsl:value-of select="Stats/D"/></td>
-      </tr></table>
-
-      <table width="100%" class="details">
-        <tr>
-          <th>Abstract Classes</th>
-          <th>Concrete Classes</th>
-          <th>Used by Packages</th>
-          <th>Uses Packages</th>
-        </tr>
-        <tr>
-          <td valign="top" width="25%">
-          <xsl:if test="count(AbstractClasses/Class)=0">
-              <i>None</i>
-            </xsl:if>
-            <xsl:for-each select="AbstractClasses/Class">
-              <xsl:value-of select="node()"/><br/>
-            </xsl:for-each>
-          </td>
-          <td valign="top" width="25%">
-            <xsl:if test="count(ConcreteClasses/Class)=0">
-              <i>None</i>
-            </xsl:if>
-            <xsl:for-each select="ConcreteClasses/Class">
-              <xsl:value-of select="node()"/><br/>
-            </xsl:for-each>
-          </td>
-          <td valign="top" width="25%">
-            <xsl:if test="count(UsedBy/Package)=0">
-              <i>None</i>
-            </xsl:if>
-            <xsl:for-each select="UsedBy/Package">
-              <a>
-                        <xsl:attribute name="href">overview-packages.html#PK<xsl:value-of select="node()"/></xsl:attribute>
-                <xsl:value-of select="node()"/>
-              </a><br/>
-            </xsl:for-each>
-          </td>
-          <td valign="top" width="25%">
-            <xsl:if test="count(DependsUpon/Package)=0">
-              <i>None</i>
-            </xsl:if>
-            <xsl:for-each select="DependsUpon/Package">
-              <a>
-                        <xsl:attribute name="href">overview-packages.html#PK<xsl:value-of select="node()"/></xsl:attribute>
-                <xsl:value-of select="node()"/>
-              </a><br/>
-            </xsl:for-each>
-          </td>
-        </tr>
-      </table>
-    </xsl:if>
-  </xsl:for-each>
-  <!-- this is often a long listing; provide a lower navigation table also -->
-  <table width="100%"><tr align="left"><td></td><td align="right">
-  [<a href="overview-summary.html">summary</a>]
-  [packages]
-  [<a href="overview-cycles.html">cycles</a>]
-  [<a href="overview-explanations.html">explanations</a>]
-   </td></tr></table>
-      </body>
-   </html>
-</xsl:template>
-
-<xsl:template match="JDepend" mode="cycles.details">
-   <html>
-      <head>
-         <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
-      </head>
-      <body>
-         <xsl:call-template name="pageHeader"/>
-  <table width="100%"><tr align="left"><h2>Cycles</h2><td>
-  </td><td align="right">
-  [<a href="overview-summary.html">summary</a>]
-  [<a href="overview-packages.html">packages</a>]
-  [cycles]
-  [<a href="overview-explanations.html">explanations</a>]
-   </td></tr></table>
-  <!--<table width="100%"><tr><td>
-  </td><td align="right">
-    [<a href="#NVsummary">summary</a>]
-  [<a href="#NVpackages">packages</a>]
-  [<a href="#NVcycles">cycles</a>]
-   [<a href="#NVexplanations">explanations</a>]
-  </td></tr></table> -->
-
-  <xsl:if test="count(Cycles/Package) = 0">
-    <p>There are no cyclic dependancies.</p>
-  </xsl:if>
-  <xsl:for-each select="Cycles/Package">
-     <h3><a><xsl:attribute name="name">#CY<xsl:value-of select="@Name"/></xsl:attribute><xsl:value-of select="@Name"/></a></h3><p>
-    <xsl:for-each select="Package">
-      <xsl:value-of select="."/><br/>
-    </xsl:for-each></p>
-  </xsl:for-each>
-  <!-- this is often a long listing; provide a lower navigation table also -->
-  <table width="100%"><tr align="left"><td></td><td align="right">
-  [<a href="overview-summary.html">summary</a>]
-  [<a href="overview-packages.html">packages</a>]
-  [cycles]
-  [<a href="overview-explanations.html">explanations</a>]
-   </td></tr></table>
-  </body>
-  </html>
-</xsl:template>
-
-<xsl:template match="JDepend" mode="explanations">
-   <html>
-      <head>
-         <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
-      </head>
-      <body>
-         <xsl:call-template name="pageHeader"/>
-
-  <table width="100%"><tr align="left"><h2>Explanations</h2><td>
-  </td><td align="right">
-  [<a href="overview-summary.html">summary</a>]
-  [<a href="overview-packages.html">packages</a>]
-  [<a href="overview-cycles.html">cycles</a>]
-  [explanations]
-   </td></tr></table>
-
-  <p>The following explanations are for quick reference and are lifted directly from the original <a href="http://www.clarkware.com/software/JDepend.html">JDepend documentation</a>.</p>
-
-  <h3><a name="EXnumber">Number of Classes</a></h3>
-    <p>The number of concrete and abstract classes (and interfaces) in the package is an indicator of the extensibility of the package.</p>
-  <h3><a name="EXafferent">Afferent Couplings</a></h3>
-    <p>The number of other packages that depend upon classes within the package is an indicator of the package's responsibility. </p>
-  <h3><a name="EXefferent">Efferent Couplings</a></h3>
-    <p>The number of other packages that the classes in the package depend upon is an indicator of the package's independence. </p>
-  <h3><a name="EXabstractness">Abstractness</a></h3>
-    <p>The ratio of the number of abstract classes (and interfaces) in the analyzed package to the total number of classes in the analyzed package. </p>
-    <p>The range for this metric is 0 to 1, with A=0 indicating a completely concrete package and A=1 indicating a completely abstract package. </p>
-  <h3><a name="EXinstability">Instability</a></h3>
-    <p>The ratio of efferent coupling (Ce) to total coupling (Ce / (Ce + Ca)). This metric is an indicator of the package's resilience to change. </p>
-    <p>The range for this metric is 0 to 1, with I=0 indicating a completely stable package and I=1 indicating a completely instable package. </p>
-  <h3><a name="EXdistance">Distance</a></h3>
-    <p>The perpendicular distance of a package from the idealized line A + I = 1. This metric is an indicator of the package's balance between abstractness and stability. </p>
-    <p>A package squarely on the main sequence is optimally balanced with respect to its abstractness and stability. Ideal packages are either completely abstract and stable (x=0, y=1) or completely concrete and instable (x=1, y=0). </p>
-    <p>The range for this metric is 0 to 1, with D=0 indicating a package that is coincident with the main sequence and D=1 indicating a package that is as far from the main sequence as possible. </p>
-
-      </body>
-   </html>
-</xsl:template>
-
-
-<!--
-Creates an html file that contains a link to all package links in overview-packages.html.
-  @bug there will be a problem here, I don't know yet how to handle unnamed package :(
--->
-<xsl:template match="JDepend/Packages" mode="all.packages">
-  <html>
-    <head>
-      <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
-    </head>
-    <body>
-  <table width="100%"><tr align="left"><td></td><td nowrap="nowrap" align="right">
-  [<a href="overview-summary.html" target="classFrame">summary</a>]
-  [<a href="overview-packages.html" target="classFrame">packages</a>]
-  [<a href="overview-cycles.html" target="classFrame">cycles</a>]
-  [<a href="overview-explanations.html" target="classFrame">explanations</a>]
-   </td></tr></table>
-      <h2>Packages</h2>
-        <table width="100%">
-          <xsl:apply-templates select="Package[count(error)=0]" mode="all.packages.link">
-            <xsl:sort select="@name"/>
-          </xsl:apply-templates>
-          <xsl:apply-templates select="Package[count(error) &gt; 0]" mode="all.packages.nolink">
-            <xsl:sort select="@name"/>
-          </xsl:apply-templates>
-        </table>
-    </body>
-  </html>
-</xsl:template>
-
-<xsl:template match="JDepend/Packages/Package" mode="all.packages.link">
-  <tr>
-    <td nowrap="nowrap">
-         <a href="overview-packages.html#PK{@name}" target="classFrame">
-        <xsl:value-of select="@name"/>
-      </a>
-    </td>
-  </tr>
-</xsl:template>
-
-<!--
-I do not know JDepend enough to know if every error results in a non-analyzed package,
-but that is how I am presenting it to the viewer.  This may need to change.
-  @bug there will be a problem here, I don't know yet how to handle unnamed package :(
--->
-<xsl:template match="JDepend/Packages/Package" mode="all.packages.nolink">
-  <tr>
-    <td nowrap="nowrap">
-       Not Analyzed: <xsl:value-of select="@name"/>
-    </td>
-  </tr>
-</xsl:template>
-
-<!--
-Creates an html file that contains a link to all package links in overview-cycles.html.
-  @bug there will be a problem here, I don't know yet how to handle unnamed package :(
--->
-<xsl:template match="JDepend/Cycles" mode="all.cycles">
-  <html>
-    <head>
-      <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
-    </head>
-    <body>
-  <table width="100%"><tr align="left"><td></td><td nowrap="nowrap" align="right">
-  [<a href="overview-summary.html" target="classFrame">summary</a>]
-  [<a href="overview-packages.html" target="classFrame">packages</a>]
-  [<a href="overview-cycles.html" target="classFrame">cycles</a>]
-  [<a href="overview-explanations.html" target="classFrame">explanations</a>]
-   </td></tr></table>
-      <h2>Cycles</h2>
-        <table width="100%">
-           <xsl:apply-templates select="Package" mode="all.cycles">
-            <xsl:sort select="@Name"/>
-          </xsl:apply-templates>
-        </table>
-    </body>
-  </html>
-</xsl:template>
-
-<xsl:template match="JDepend/Cycles/Package" mode="all.cycles">
-  <tr>
-    <td nowrap="nowrap">
-         <a href="overview-cycles.html#CY{@Name}" target="classFrame"><xsl:value-of select="@Name"/></a>
-    </td>
-  </tr>
-</xsl:template>
-
-<!-- Page HEADER -->
-<xsl:template name="pageHeader">
-   <h1>JDepend Analysis</h1>
-  <table width="100%">
-  <tr>
-    <td align="left"></td>
-      <td align="right">Designed for use with <a href="http://www.clarkware.com/software/JDepend.html">JDepend</a> and <a href="http://jakarta.apache.org">Ant</a>.</td>
-  </tr>
-  </table>
-  <hr size="1"/>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/dependencies/plugins/org.apache.ant/etc/jdepend.xsl b/dependencies/plugins/org.apache.ant/etc/jdepend.xsl
deleted file mode 100755
index e1e5e2d..0000000
--- a/dependencies/plugins/org.apache.ant/etc/jdepend.xsl
+++ /dev/null
@@ -1,275 +0,0 @@
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-<!--
-    Copyright  2002,2004 The Apache Software Foundation
-   
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-   
-         http://www.apache.org/licenses/LICENSE-2.0
-   
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
-   
--->
-
-<xsl:output method="html" indent="yes"  encoding="US-ASCII"/>
-
-<xsl:template match="JDepend">
-    <html>
-    <head>
-        <title>JDepend Analysis</title>
-        
-    <style type="text/css">
-      body {
-        font:normal 68% verdana,arial,helvetica;
-        color:#000000;
-      }
-      table tr td, tr th {
-          font-size: 68%;
-      }
-      table.details tr th{
-        font-weight: bold;
-        text-align:left;
-        background:#a6caf0;
-      }
-      table.details tr td{
-        background:#eeeee0;
-      }
-      
-      p {
-        line-height:1.5em;
-        margin-top:0.5em; margin-bottom:1.0em;
-        margin-left:2em;
-        margin-right:2em;
-      }
-      h1 {
-        margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
-      }
-      h2 {
-        margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
-      }
-      h3 {
-        margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
-      }
-      h4 {
-        margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
-      }
-      h5 {
-        margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
-      }
-      h6 {
-        margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
-      }
-      .Error {
-        font-weight:bold; color:red;
-      }
-      .Failure {
-        font-weight:bold; color:purple;
-      }
-      .Properties {
-        text-align:right;
-      }
-      </style>
-        
-        
-    </head>
-    <body>
-    <!--h1>JDepend Report</h1>
-    <ul>
-    <xsl:for-each select="./Packages/Package">
-                <xsl:sort select="@name"/>
-        <li><xsl:value-of select="@name"/></li>
-    </xsl:for-each>
-    </ul-->
-    
-    <h1><a name="top">JDepend Analysis</a></h1>
-    <p align="right">Designed for use with <a href="http://www.clarkware.com/software/JDepend.html">JDepend</a> and <a href="http://jakarta.apache.org">Ant</a>.</p>
-    <hr size="2" />
-    
-    <table width="100%"><tr><td>
-    <a name="NVsummary"><h2>Summary</h2></a>
-    </td><td align="right">
-    [<a href="#NVsummary">summary</a>]
-    [<a href="#NVpackages">packages</a>]
-    [<a href="#NVcycles">cycles</a>]
-    [<a href="#NVexplanations">explanations</a>]
-    </td></tr></table>
-    
-    <table width="100%" class="details">
-        <tr>
-            <th>Package</th>
-            <th>Total Classes</th>
-            <th><a href="#EXnumber">Abstract Classes</a></th>
-            <th><a href="#EXnumber">Concrete Classes</a></th>
-            <th><a href="#EXafferent">Afferent Couplings</a></th>
-            <th><a href="#EXefferent">Efferent Couplings</a></th>
-            <th><a href="#EXabstractness">Abstractness</a></th>
-            <th><a href="#EXinstability">Instability</a></th>
-            <th><a href="#EXdistance">Distance</a></th>
-            
-        </tr>
-    <xsl:for-each select="./Packages/Package">
-        <xsl:if test="count(error) = 0">
-            <tr>
-                <td align="left">
-                    <a>
-                    <xsl:attribute name="href">#PK<xsl:value-of select="@name"/>
-                    </xsl:attribute>
-                    <xsl:value-of select="@name"/>
-                    </a>
-                </td>
-                <td align="right"><xsl:value-of select="Stats/TotalClasses"/></td>
-                <td align="right"><xsl:value-of select="Stats/AbstractClasses"/></td>
-                <td align="right"><xsl:value-of select="Stats/ConcreteClasses"/></td>
-                <td align="right"><xsl:value-of select="Stats/Ca"/></td>
-                <td align="right"><xsl:value-of select="Stats/Ce"/></td>
-                <td align="right"><xsl:value-of select="Stats/A"/></td>
-                <td align="right"><xsl:value-of select="Stats/I"/></td>
-                <td align="right"><xsl:value-of select="Stats/D"/></td>
-                
-
-            </tr>
-        </xsl:if>
-    </xsl:for-each>
-    <xsl:for-each select="./Packages/Package">
-        <xsl:if test="count(error) &gt; 0">
-            <tr>
-                <td align="left">
-                    <xsl:value-of select="@name"/>
-                </td>
-                <td align="left" colspan="8"><xsl:value-of select="error"/></td>
-            </tr>
-        </xsl:if>
-    </xsl:for-each>
-    </table>
-    
-    <table width="100%"><tr><td>
-    <a name="NVpackages"><h2>Packages</h2></a>
-    </td><td align="right">
-    [<a href="#NVsummary">summary</a>]
-    [<a href="#NVpackages">packages</a>]
-    [<a href="#NVcycles">cycles</a>]
-    [<a href="#NVexplanations">explanations</a>]
-    </td></tr></table>
-    
-    <xsl:for-each select="./Packages/Package">
-        <xsl:if test="count(error) = 0">
-            <h3><a><xsl:attribute name="name">PK<xsl:value-of select="@name"/></xsl:attribute>
-            <xsl:value-of select="@name"/></a></h3>
-            
-            <table width="100%"><tr>
-                <td><a href="#EXafferent">Afferent Couplings</a>: <xsl:value-of select="Stats/Ca"/></td>
-                <td><a href="#EXefferent">Efferent Couplings</a>: <xsl:value-of select="Stats/Ce"/></td>
-                <td><a href="#EXabstractness">Abstractness</a>: <xsl:value-of select="Stats/A"/></td>
-                <td><a href="#EXinstability">Instability</a>: <xsl:value-of select="Stats/I"/></td>
-                <td><a href="#EXdistance">Distance</a>: <xsl:value-of select="Stats/D"/></td>
-            </tr></table>
-            
-            <table width="100%" class="details">
-                <tr>
-                    <th>Abstract Classes</th>
-                    <th>Concrete Classes</th>
-                    <th>Used by Packages</th>
-                    <th>Uses Packages</th>
-                </tr>
-                <tr>
-                    <td valign="top" width="25%">
-                    <xsl:if test="count(AbstractClasses/Class)=0">
-                            <i>None</i>
-                        </xsl:if>
-                        <xsl:for-each select="AbstractClasses/Class">
-                            <xsl:value-of select="node()"/><br/>
-                        </xsl:for-each>
-                    </td>
-                    <td valign="top" width="25%">
-                        <xsl:if test="count(ConcreteClasses/Class)=0">
-                            <i>None</i>
-                        </xsl:if>
-                        <xsl:for-each select="ConcreteClasses/Class">
-                            <xsl:value-of select="node()"/><br/>
-                        </xsl:for-each>
-                    </td>
-                    <td valign="top" width="25%">
-                        <xsl:if test="count(UsedBy/Package)=0">
-                            <i>None</i>
-                        </xsl:if>
-                        <xsl:for-each select="UsedBy/Package">
-                            <a>
-                                <xsl:attribute name="href">#PK<xsl:value-of select="node()"/></xsl:attribute>
-                                <xsl:value-of select="node()"/>
-                            </a><br/>
-                        </xsl:for-each>
-                    </td>
-                    <td valign="top" width="25%">
-                        <xsl:if test="count(DependsUpon/Package)=0">
-                            <i>None</i>
-                        </xsl:if>
-                        <xsl:for-each select="DependsUpon/Package">
-                            <a>
-                                <xsl:attribute name="href">#PK<xsl:value-of select="node()"/></xsl:attribute>
-                                <xsl:value-of select="node()"/>
-                            </a><br/>
-                        </xsl:for-each>
-                    </td>
-                </tr>
-            </table>
-        </xsl:if>
-    </xsl:for-each>
-    
-    <table width="100%"><tr><td>
-    <a name="NVcycles"><h2>Cycles</h2></a>
-    </td><td align="right">
-    [<a href="#NVsummary">summary</a>]
-    [<a href="#NVpackages">packages</a>]
-    [<a href="#NVcycles">cycles</a>]
-    [<a href="#NVexplanations">explanations</a>]
-    </td></tr></table>
-    
-    <xsl:if test="count(Cycles/Package) = 0">
-        <p>There are no cyclic dependancies.</p>
-    </xsl:if>
-    <xsl:for-each select="Cycles/Package">
-        <h3><xsl:value-of select="@Name"/></h3><p>
-        <xsl:for-each select="Package">
-            <xsl:value-of select="."/><br/>
-        </xsl:for-each></p>
-    </xsl:for-each>
-    
-    <table width="100%"><tr><td>
-    <a name="NVexplanations"><h2>Explanations</h2></a>
-    </td><td align="right">
-    [<a href="#NVsummary">summary</a>]
-    [<a href="#NVpackages">packages</a>]
-    [<a href="#NVcycles">cycles</a>]
-    [<a href="#NVexplanations">explanations</a>]
-    </td></tr></table>
-    
-    <p>The following explanations are for quick reference and are lifted directly from the original <a href="http://www.clarkware.com/software/JDepend.html">JDepend documentation</a>.</p>
-    
-    <h3><a name="EXnumber">Number of Classes</a></h3>
-        <p>The number of concrete and abstract classes (and interfaces) in the package is an indicator of the extensibility of the package.</p>
-    <h3><a name="EXafferent">Afferent Couplings</a></h3>
-        <p>The number of other packages that depend upon classes within the package is an indicator of the package's responsibility. </p>
-    <h3><a name="EXefferent">Efferent Couplings</a></h3>
-        <p>The number of other packages that the classes in the package depend upon is an indicator of the package's independence. </p>
-    <h3><a name="EXabstractness">Abstractness</a></h3> 
-        <p>The ratio of the number of abstract classes (and interfaces) in the analyzed package to the total number of classes in the analyzed package. </p>
-        <p>The range for this metric is 0 to 1, with A=0 indicating a completely concrete package and A=1 indicating a completely abstract package. </p>
-    <h3><a name="EXinstability">Instability</a></h3>
-        <p>The ratio of efferent coupling (Ce) to total coupling (Ce / (Ce + Ca)). This metric is an indicator of the package's resilience to change. </p>
-        <p>The range for this metric is 0 to 1, with I=0 indicating a completely stable package and I=1 indicating a completely instable package. </p>
-    <h3><a name="EXdistance">Distance</a></h3>
-        <p>The perpendicular distance of a package from the idealized line A + I = 1. This metric is an indicator of the package's balance between abstractness and stability. </p>
-        <p>A package squarely on the main sequence is optimally balanced with respect to its abstractness and stability. Ideal packages are either completely abstract and stable (x=0, y=1) or completely concrete and instable (x=1, y=0). </p>
-        <p>The range for this metric is 0 to 1, with D=0 indicating a package that is coincident with the main sequence and D=1 indicating a package that is as far from the main sequence as possible. </p>
-    
-    </body>
-    </html>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/dependencies/plugins/org.apache.ant/etc/junit-frames-xalan1.xsl b/dependencies/plugins/org.apache.ant/etc/junit-frames-xalan1.xsl
deleted file mode 100755
index 114e459..0000000
--- a/dependencies/plugins/org.apache.ant/etc/junit-frames-xalan1.xsl
+++ /dev/null
@@ -1,716 +0,0 @@
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-    xmlns:lxslt="http://xml.apache.org/xslt"
-    xmlns:redirect="org.apache.xalan.lib.Redirect"
-    xmlns:stringutils="xalan://org.apache.tools.ant.util.StringUtils"
-    extension-element-prefixes="redirect">
-<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
-<xsl:decimal-format decimal-separator="." grouping-separator=","/>
-<!--
-   Copyright 2001-2004 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
- -->
-
-<!--
-
- Sample stylesheet to be used with Ant JUnitReport output.
-
- It creates a set of HTML files a la javadoc where you can browse easily
- through all packages and classes.
-
--->
-<xsl:param name="output.dir" select="'.'"/>
-
-
-<xsl:template match="testsuites">
-    <!-- create the index.html -->
-    <redirect:write file="{$output.dir}/index.html">
-        <xsl:call-template name="index.html"/>
-    </redirect:write>
-
-    <!-- create the stylesheet.css -->
-    <redirect:write file="{$output.dir}/stylesheet.css">
-        <xsl:call-template name="stylesheet.css"/>
-    </redirect:write>
-
-    <!-- create the overview-packages.html at the root -->
-    <redirect:write file="{$output.dir}/overview-summary.html">
-        <xsl:apply-templates select="." mode="overview.packages"/>
-    </redirect:write>
-
-    <!-- create the all-packages.html at the root -->
-    <redirect:write file="{$output.dir}/overview-frame.html">
-        <xsl:apply-templates select="." mode="all.packages"/>
-    </redirect:write>
-
-    <!-- create the all-classes.html at the root -->
-    <redirect:write file="{$output.dir}/allclasses-frame.html">
-        <xsl:apply-templates select="." mode="all.classes"/>
-    </redirect:write>
-
-    <!-- process all packages -->
-    <xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
-        <xsl:call-template name="package">
-            <xsl:with-param name="name" select="@package"/>
-        </xsl:call-template>
-    </xsl:for-each>
-</xsl:template>
-
-
-<xsl:template name="package">
-    <xsl:param name="name"/>
-    <xsl:variable name="package.dir">
-        <xsl:if test="not($name = '')"><xsl:value-of select="translate($name,'.','/')"/></xsl:if>
-        <xsl:if test="$name = ''">.</xsl:if>
-    </xsl:variable>
-    <!--Processing package <xsl:value-of select="@name"/> in <xsl:value-of select="$output.dir"/> -->
-    <!-- create a classes-list.html in the package directory -->
-    <redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
-        <xsl:call-template name="classes.list">
-            <xsl:with-param name="name" select="$name"/>
-        </xsl:call-template>
-    </redirect:write>
-
-    <!-- create a package-summary.html in the package directory -->
-    <redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
-        <xsl:call-template name="package.summary">
-            <xsl:with-param name="name" select="$name"/>
-        </xsl:call-template>
-    </redirect:write>
-
-    <!-- for each class, creates a @name.html -->
-    <!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
-    <xsl:for-each select="/testsuites/testsuite[@package = $name]">
-        <redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
-            <xsl:apply-templates select="." mode="class.details"/>
-        </redirect:write>
-        <xsl:if test="string-length(./system-out)!=0">
-            <redirect:write file="{$output.dir}/{$package.dir}/{@name}-out.txt">
-                <xsl:value-of select="./system-out" />
-            </redirect:write>
-        </xsl:if>
-        <xsl:if test="string-length(./system-err)!=0">
-            <redirect:write file="{$output.dir}/{$package.dir}/{@name}-err.txt">
-                <xsl:value-of select="./system-err" />
-            </redirect:write>
-        </xsl:if>
-    </xsl:for-each>
-</xsl:template>
-
-<xsl:template name="index.html">
-<html>
-    <head>
-        <title>Unit Test Results.</title>
-    </head>
-    <frameset cols="20%,80%">
-        <frameset rows="30%,70%">
-            <frame src="overview-frame.html" name="packageListFrame"/>
-            <frame src="allclasses-frame.html" name="classListFrame"/>
-        </frameset>
-        <frame src="overview-summary.html" name="classFrame"/>
-        <noframes>
-            <h2>Frame Alert</h2>
-            <p>
-                This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
-            </p>
-        </noframes>
-    </frameset>
-</html>
-</xsl:template>
-
-<!-- this is the stylesheet css to use for nearly everything -->
-<xsl:template name="stylesheet.css">
-body {
-    font:normal 68% verdana,arial,helvetica;
-    color:#000000;
-}
-table tr td, table tr th {
-    font-size: 68%;
-}
-table.details tr th{
-    font-weight: bold;
-    text-align:left;
-    background:#a6caf0;
-}
-table.details tr td{
-    background:#eeeee0;
-}
-
-p {
-    line-height:1.5em;
-    margin-top:0.5em; margin-bottom:1.0em;
-}
-h1 {
-    margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
-}
-h2 {
-    margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
-}
-h3 {
-    margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
-}
-h4 {
-    margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
-}
-h5 {
-    margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
-}
-h6 {
-    margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
-}
-.Error {
-    font-weight:bold; color:red;
-}
-.Failure {
-    font-weight:bold; color:purple;
-}
-.Properties {
-  text-align:right;
-}
-</xsl:template>
-
-
-<!-- ======================================================================
-    This page is created for every testsuite class.
-    It prints a summary of the testsuite and detailed information about
-    testcase methods.
-     ====================================================================== -->
-<xsl:template match="testsuite" mode="class.details">
-    <xsl:variable name="package.name" select="@package"/>
-    <xsl:variable name="class.name"><xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></xsl:variable>
-    <html>
-        <head>
-          <title>Unit Test Results: <xsl:value-of select="$class.name"/></title>
-            <xsl:call-template name="create.stylesheet.link">
-                <xsl:with-param name="package.name" select="$package.name"/>
-            </xsl:call-template>
-       <script type="text/javascript" language="JavaScript">
-        var TestCases = new Array();
-        var cur;
-        <xsl:apply-templates select="properties"/>
-       </script>
-       <script type="text/javascript" language="JavaScript"><![CDATA[
-        function displayProperties (name) {
-          var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
-          var doc = win.document.open();
-          doc.write("<html><head><title>Properties of " + name + "</title>");
-          doc.write("<style type=\"text/css\">");
-          doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
-          doc.write("table tr td, table tr th { font-size: 68%; }");
-          doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
-          doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
-          doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
-          doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
-          doc.write("</style>");
-          doc.write("</head><body>");
-          doc.write("<h3>Properties of " + name + "</h3>");
-          doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
-          doc.write("<table class='properties'>");
-          doc.write("<tr><th>Name</th><th>Value</th></tr>");
-          for (prop in TestCases[name]) {
-            doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
-          }
-          doc.write("</table>");
-          doc.write("</body></html>");
-          doc.close();
-          win.focus();
-        }
-      ]]>
-      </script>
-        </head>
-        <body>
-            <xsl:call-template name="pageHeader"/>
-            <h3>Class <xsl:value-of select="$class.name"/></h3>
-
-
-            <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
-                <xsl:call-template name="testsuite.test.header"/>
-                <xsl:apply-templates select="." mode="print.test"/>
-            </table>
-
-            <h2>Tests</h2>
-            <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
-        <xsl:call-template name="testcase.test.header"/>
-              <!--
-              test can even not be started at all (failure to load the class)
-              so report the error directly
-              -->
-                <xsl:if test="./error">
-                    <tr class="Error">
-                        <td colspan="4"><xsl:apply-templates select="./error"/></td>
-                    </tr>
-                </xsl:if>
-                <xsl:apply-templates select="./testcase" mode="print.test"/>
-            </table>
-            <div class="Properties">
-                <a>
-                    <xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
-                    Properties &#187;
-                </a>
-            </div>
-            <xsl:if test="string-length(./system-out)!=0">
-                <div class="Properties">
-                    <a>
-                        <xsl:attribute name="href">./<xsl:value-of select="@name"/>-out.txt</xsl:attribute>
-                        System.out &#187;
-                    </a>
-                </div>
-            </xsl:if>
-            <xsl:if test="string-length(./system-err)!=0">
-                <div class="Properties">
-                    <a>
-                        <xsl:attribute name="href">./<xsl:value-of select="@name"/>-err.txt</xsl:attribute>
-                        System.err &#187;
-                    </a>
-                </div>
-            </xsl:if>
-        </body>
-    </html>
-</xsl:template>
-
-  <!--
-   Write properties into a JavaScript data structure.
-   This is based on the original idea by Erik Hatcher (ehatcher@apache.org)
-   -->
-  <xsl:template match="properties">
-    cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
-    <xsl:for-each select="property">
-    <xsl:sort select="@name"/>
-        cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
-    </xsl:for-each>
-  </xsl:template>
-
-
-<!-- ======================================================================
-    This page is created for every package.
-    It prints the name of all classes that belongs to this package.
-    @param name the package name to print classes.
-     ====================================================================== -->
-<!-- list of classes in a package -->
-<xsl:template name="classes.list">
-    <xsl:param name="name"/>
-    <html>
-        <head>
-            <title>Unit Test Classes: <xsl:value-of select="$name"/></title>
-            <xsl:call-template name="create.stylesheet.link">
-                <xsl:with-param name="package.name" select="$name"/>
-            </xsl:call-template>
-        </head>
-        <body>
-            <table width="100%">
-                <tr>
-                    <td nowrap="nowrap">
-                        <h2><a href="package-summary.html" target="classFrame">
-                            <xsl:value-of select="$name"/>
-                            <xsl:if test="$name = ''">&lt;none&gt;</xsl:if>
-                        </a></h2>
-                    </td>
-                </tr>
-            </table>
-
-            <h2>Classes</h2>
-            <table width="100%">
-                <xsl:for-each select="/testsuites/testsuite[./@package = $name]">
-                    <xsl:sort select="@name"/>
-                    <tr>
-                        <td nowrap="nowrap">
-                            <a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
-                        </td>
-                    </tr>
-                </xsl:for-each>
-            </table>
-        </body>
-    </html>
-</xsl:template>
-
-
-<!--
-    Creates an all-classes.html file that contains a link to all package-summary.html
-    on each class.
--->
-<xsl:template match="testsuites" mode="all.classes">
-    <html>
-        <head>
-            <title>All Unit Test Classes</title>
-            <xsl:call-template name="create.stylesheet.link">
-                <xsl:with-param name="package.name"/>
-            </xsl:call-template>
-        </head>
-        <body>
-            <h2>Classes</h2>
-            <table width="100%">
-                <xsl:apply-templates select="testsuite" mode="all.classes">
-                    <xsl:sort select="@name"/>
-                </xsl:apply-templates>
-            </table>
-        </body>
-    </html>
-</xsl:template>
-
-<xsl:template match="testsuite" mode="all.classes">
-    <xsl:variable name="package.name" select="@package"/>
-    <tr>
-        <td nowrap="nowrap">
-            <a target="classFrame">
-                <xsl:attribute name="href">
-                    <xsl:if test="not($package.name='')">
-                        <xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
-                    </xsl:if><xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
-                </xsl:attribute>
-                <xsl:value-of select="@name"/>
-            </a>
-        </td>
-    </tr>
-</xsl:template>
-
-
-<!--
-    Creates an html file that contains a link to all package-summary.html files on
-    each package existing on testsuites.
-    @bug there will be a problem here, I don't know yet how to handle unnamed package :(
--->
-<xsl:template match="testsuites" mode="all.packages">
-    <html>
-        <head>
-            <title>All Unit Test Packages</title>
-            <xsl:call-template name="create.stylesheet.link">
-                <xsl:with-param name="package.name"/>
-            </xsl:call-template>
-        </head>
-        <body>
-            <h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
-            <h2>Packages</h2>
-            <table width="100%">
-                <xsl:apply-templates select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]" mode="all.packages">
-                    <xsl:sort select="@package"/>
-                </xsl:apply-templates>
-            </table>
-        </body>
-    </html>
-</xsl:template>
-
-<xsl:template match="testsuite" mode="all.packages">
-    <tr>
-        <td nowrap="nowrap">
-            <a href="./{translate(@package,'.','/')}/package-summary.html" target="classFrame">
-                <xsl:value-of select="@package"/>
-                <xsl:if test="@package = ''">&lt;none&gt;</xsl:if>
-            </a>
-        </td>
-    </tr>
-</xsl:template>
-
-
-<xsl:template match="testsuites" mode="overview.packages">
-    <html>
-        <head>
-            <title>Unit Test Results: Summary</title>
-            <xsl:call-template name="create.stylesheet.link">
-                <xsl:with-param name="package.name"/>
-            </xsl:call-template>
-        </head>
-        <body>
-        <xsl:attribute name="onload">open('allclasses-frame.html','classListFrame')</xsl:attribute>
-        <xsl:call-template name="pageHeader"/>
-        <h2>Summary</h2>
-        <xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
-        <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
-        <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
-        <xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
-        <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
-        <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
-        <tr valign="top">
-            <th>Tests</th>
-            <th>Failures</th>
-            <th>Errors</th>
-            <th>Success rate</th>
-            <th>Time</th>
-        </tr>
-        <tr valign="top">
-            <xsl:attribute name="class">
-                <xsl:choose>
-                    <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
-                    <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
-                    <xsl:otherwise>Pass</xsl:otherwise>
-                </xsl:choose>
-            </xsl:attribute>
-            <td><xsl:value-of select="$testCount"/></td>
-            <td><xsl:value-of select="$failureCount"/></td>
-            <td><xsl:value-of select="$errorCount"/></td>
-            <td>
-                <xsl:call-template name="display-percent">
-                    <xsl:with-param name="value" select="$successRate"/>
-                </xsl:call-template>
-            </td>
-            <td>
-                <xsl:call-template name="display-time">
-                    <xsl:with-param name="value" select="$timeCount"/>
-                </xsl:call-template>
-            </td>
-        </tr>
-        </table>
-        <table border="0" width="95%">
-        <tr>
-        <td style="text-align: justify;">
-        Note: <em>failures</em> are anticipated and checked for with assertions while <em>errors</em> are unanticipated.
-        </td>
-        </tr>
-        </table>
-
-        <h2>Packages</h2>
-        <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
-            <xsl:call-template name="testsuite.test.header"/>
-            <xsl:for-each select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
-                <xsl:sort select="@package" order="ascending"/>
-                <!-- get the node set containing all testsuites that have the same package -->
-                <xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = current()/@package]"/>
-                <tr valign="top">
-                    <!-- display a failure if there is any failure/error in the package -->
-                    <xsl:attribute name="class">
-                        <xsl:choose>
-                            <xsl:when test="sum($insamepackage/@errors) &gt; 0">Error</xsl:when>
-                            <xsl:when test="sum($insamepackage/@failures) &gt; 0">Failure</xsl:when>
-                            <xsl:otherwise>Pass</xsl:otherwise>
-                        </xsl:choose>
-                    </xsl:attribute>
-                    <td><a href="./{translate(@package,'.','/')}/package-summary.html">
-                        <xsl:value-of select="@package"/>
-                        <xsl:if test="@package = ''">&lt;none&gt;</xsl:if>
-                    </a></td>
-                    <td><xsl:value-of select="sum($insamepackage/@tests)"/></td>
-                    <td><xsl:value-of select="sum($insamepackage/@errors)"/></td>
-                    <td><xsl:value-of select="sum($insamepackage/@failures)"/></td>
-                    <td>
-                    <xsl:call-template name="display-time">
-                        <xsl:with-param name="value" select="sum($insamepackage/@time)"/>
-                    </xsl:call-template>
-                    </td>
-                    <td><xsl:value-of select="$insamepackage/@timestamp"/></td>
-                    <td><xsl:value-of select="$insamepackage/@hostname"/></td>
-                </tr>
-            </xsl:for-each>
-        </table>
-        </body>
-        </html>
-</xsl:template>
-
-
-<xsl:template name="package.summary">
-    <xsl:param name="name"/>
-    <html>
-        <head>
-            <xsl:call-template name="create.stylesheet.link">
-                <xsl:with-param name="package.name" select="$name"/>
-            </xsl:call-template>
-        </head>
-        <body>
-            <xsl:attribute name="onload">open('package-frame.html','classListFrame')</xsl:attribute>
-            <xsl:call-template name="pageHeader"/>
-            <h3>Package <xsl:value-of select="$name"/></h3>
-
-            <!--table border="0" cellpadding="5" cellspacing="2" width="95%">
-                <xsl:call-template name="class.metrics.header"/>
-                <xsl:apply-templates select="." mode="print.metrics"/>
-            </table-->
-
-            <xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = $name]"/>
-            <xsl:if test="count($insamepackage) &gt; 0">
-                <h2>Classes</h2>
-                <p>
-                <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
-                    <xsl:call-template name="testsuite.test.header"/>
-                    <xsl:apply-templates select="$insamepackage" mode="print.test">
-                        <xsl:sort select="@name"/>
-                    </xsl:apply-templates>
-                </table>
-                </p>
-            </xsl:if>
-        </body>
-    </html>
-</xsl:template>
-
-
-<!--
-    transform string like a.b.c to ../../../
-    @param path the path to transform into a descending directory path
--->
-<xsl:template name="path">
-    <xsl:param name="path"/>
-    <xsl:if test="contains($path,'.')">
-        <xsl:text>../</xsl:text>
-        <xsl:call-template name="path">
-            <xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
-        </xsl:call-template>
-    </xsl:if>
-    <xsl:if test="not(contains($path,'.')) and not($path = '')">
-        <xsl:text>../</xsl:text>
-    </xsl:if>
-</xsl:template>
-
-
-<!-- create the link to the stylesheet based on the package name -->
-<xsl:template name="create.stylesheet.link">
-    <xsl:param name="package.name"/>
-    <link rel="stylesheet" type="text/css" title="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></link>
-</xsl:template>
-
-
-<!-- Page HEADER -->
-<xsl:template name="pageHeader">
-    <h1>Unit Test Results</h1>
-    <table width="100%">
-    <tr>
-        <td align="left"></td>
-        <td align="right">Designed for use with <a href="http://www.junit.org/">JUnit</a> and <a href="http://jakarta.apache.org/">Ant</a>.</td>
-    </tr>
-    </table>
-    <hr size="1"/>
-</xsl:template>
-
-<!-- class header -->
-<xsl:template name="testsuite.test.header">
-    <tr valign="top">
-        <th width="80%">Name</th>
-        <th>Tests</th>
-        <th>Errors</th>
-        <th>Failures</th>
-        <th nowrap="nowrap">Time(s)</th>
-        <th nowrap="nowrap">Time Stamp</th>
-        <th>Host</th>
-    </tr>
-</xsl:template>
-
-<!-- method header -->
-<xsl:template name="testcase.test.header">
-    <tr valign="top">
-        <th>Name</th>
-        <th>Status</th>
-        <th width="80%">Type</th>
-        <th nowrap="nowrap">Time(s)</th>
-    </tr>
-</xsl:template>
-
-
-<!-- class information -->
-<xsl:template match="testsuite" mode="print.test">
-    <tr valign="top">
-        <xsl:attribute name="class">
-            <xsl:choose>
-                <xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
-                <xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
-                <xsl:otherwise>Pass</xsl:otherwise>
-            </xsl:choose>
-        </xsl:attribute>
-        <td><a href="{@name}.html"><xsl:value-of select="@name"/></a></td>
-        <td><xsl:apply-templates select="@tests"/></td>
-        <td><xsl:apply-templates select="@errors"/></td>
-        <td><xsl:apply-templates select="@failures"/></td>
-        <td><xsl:call-template name="display-time">
-                <xsl:with-param name="value" select="@time"/>
-            </xsl:call-template>
-        </td>
-        <td><xsl:apply-templates select="@timestamp"/></td>
-        <td><xsl:apply-templates select="@hostname"/></td>
-    </tr>
-</xsl:template>
-
-<xsl:template match="testcase" mode="print.test">
-    <tr valign="top">
-        <xsl:attribute name="class">
-            <xsl:choose>
-                <xsl:when test="error">Error</xsl:when>
-                <xsl:when test="failure">Failure</xsl:when>
-                <xsl:otherwise>TableRowColor</xsl:otherwise>
-            </xsl:choose>
-        </xsl:attribute>
-        <td><xsl:value-of select="@name"/></td>
-        <xsl:choose>
-            <xsl:when test="failure">
-                <td>Failure</td>
-                <td><xsl:apply-templates select="failure"/></td>
-            </xsl:when>
-            <xsl:when test="error">
-                <td>Error</td>
-                <td><xsl:apply-templates select="error"/></td>
-            </xsl:when>
-            <xsl:otherwise>
-                <td>Success</td>
-                <td></td>
-            </xsl:otherwise>
-        </xsl:choose>
-        <td>
-            <xsl:call-template name="display-time">
-                <xsl:with-param name="value" select="@time"/>
-            </xsl:call-template>
-        </td>
-    </tr>
-</xsl:template>
-
-
-<!-- Note : the below template error and failure are the same style
-            so just call the same style store in the toolkit template -->
-<xsl:template match="failure">
-    <xsl:call-template name="display-failures"/>
-</xsl:template>
-
-<xsl:template match="error">
-    <xsl:call-template name="display-failures"/>
-</xsl:template>
-
-<!-- Style for the error and failure in the testcase template -->
-<xsl:template name="display-failures">
-    <xsl:choose>
-        <xsl:when test="not(@message)">N/A</xsl:when>
-        <xsl:otherwise>
-            <xsl:value-of select="@message"/>
-        </xsl:otherwise>
-    </xsl:choose>
-    <!-- display the stacktrace -->
-    <br/><br/>
-    <code>
-        <xsl:call-template name="br-replace">
-            <xsl:with-param name="word" select="."/>
-        </xsl:call-template>
-    </code>
-    <!-- the latter is better but might be problematic for non-21" monitors... -->
-    <!--pre><xsl:value-of select="."/></pre-->
-</xsl:template>
-
-<xsl:template name="JS-escape">
-    <xsl:param name="string"/>
-    <xsl:param name="tmp1" select="stringutils:replace(string($string),'\','\\')"/>
-    <xsl:param name="tmp2" select="stringutils:replace(string($tmp1),&quot;'&quot;,&quot;\&apos;&quot;)"/>
-    <xsl:value-of select="$tmp2"/>
-</xsl:template>
-
-
-<!--
-    template that will convert a carriage return into a br tag
-    @param word the text from which to convert CR to BR tag
--->
-<xsl:template name="br-replace">
-    <xsl:param name="word"/>
-    <xsl:param name="br"><br/></xsl:param>
-    <xsl:value-of select='stringutils:replace(string($word),"&#xA;",$br)'/>
-</xsl:template>
-
-<xsl:template name="display-time">
-    <xsl:param name="value"/>
-    <xsl:value-of select="format-number($value,'0.000')"/>
-</xsl:template>
-
-<xsl:template name="display-percent">
-    <xsl:param name="value"/>
-    <xsl:value-of select="format-number($value,'0.00%')"/>
-</xsl:template>
-</xsl:stylesheet>
diff --git a/dependencies/plugins/org.apache.ant/etc/junit-frames.xsl b/dependencies/plugins/org.apache.ant/etc/junit-frames.xsl
deleted file mode 100755
index 229e8dd..0000000
--- a/dependencies/plugins/org.apache.ant/etc/junit-frames.xsl
+++ /dev/null
@@ -1,712 +0,0 @@
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-    xmlns:lxslt="http://xml.apache.org/xslt"
-    xmlns:redirect="http://xml.apache.org/xalan/redirect"
-    xmlns:stringutils="xalan://org.apache.tools.ant.util.StringUtils"
-    extension-element-prefixes="redirect">
-<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
-<xsl:decimal-format decimal-separator="." grouping-separator=","/>
-<!--
-   Copyright 2001-2005 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
- -->
-
-<!--
-
- Sample stylesheet to be used with Ant JUnitReport output.
-
- It creates a set of HTML files a la javadoc where you can browse easily
- through all packages and classes.
-
--->
-<xsl:param name="output.dir" select="'.'"/>
-
-
-<xsl:template match="testsuites">
-    <!-- create the index.html -->
-    <redirect:write file="{$output.dir}/index.html">
-        <xsl:call-template name="index.html"/>
-    </redirect:write>
-
-    <!-- create the stylesheet.css -->
-    <redirect:write file="{$output.dir}/stylesheet.css">
-        <xsl:call-template name="stylesheet.css"/>
-    </redirect:write>
-
-    <!-- create the overview-packages.html at the root -->
-    <redirect:write file="{$output.dir}/overview-summary.html">
-        <xsl:apply-templates select="." mode="overview.packages"/>
-    </redirect:write>
-
-    <!-- create the all-packages.html at the root -->
-    <redirect:write file="{$output.dir}/overview-frame.html">
-        <xsl:apply-templates select="." mode="all.packages"/>
-    </redirect:write>
-
-    <!-- create the all-classes.html at the root -->
-    <redirect:write file="{$output.dir}/allclasses-frame.html">
-        <xsl:apply-templates select="." mode="all.classes"/>
-    </redirect:write>
-
-    <!-- process all packages -->
-    <xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
-        <xsl:call-template name="package">
-            <xsl:with-param name="name" select="@package"/>
-        </xsl:call-template>
-    </xsl:for-each>
-</xsl:template>
-
-
-<xsl:template name="package">
-    <xsl:param name="name"/>
-    <xsl:variable name="package.dir">
-        <xsl:if test="not($name = '')"><xsl:value-of select="translate($name,'.','/')"/></xsl:if>
-        <xsl:if test="$name = ''">.</xsl:if>
-    </xsl:variable>
-    <!--Processing package <xsl:value-of select="@name"/> in <xsl:value-of select="$output.dir"/> -->
-    <!-- create a classes-list.html in the package directory -->
-    <redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
-        <xsl:call-template name="classes.list">
-            <xsl:with-param name="name" select="$name"/>
-        </xsl:call-template>
-    </redirect:write>
-
-    <!-- create a package-summary.html in the package directory -->
-    <redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
-        <xsl:call-template name="package.summary">
-            <xsl:with-param name="name" select="$name"/>
-        </xsl:call-template>
-    </redirect:write>
-
-    <!-- for each class, creates a @name.html -->
-    <!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
-    <xsl:for-each select="/testsuites/testsuite[@package = $name]">
-        <redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}.html">
-            <xsl:apply-templates select="." mode="class.details"/>
-        </redirect:write>
-        <xsl:if test="string-length(./system-out)!=0">
-            <redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}-out.txt">
-                <xsl:value-of select="./system-out" />
-            </redirect:write>
-        </xsl:if>
-        <xsl:if test="string-length(./system-err)!=0">
-            <redirect:write file="{$output.dir}/{$package.dir}/{@id}_{@name}-err.txt">
-                <xsl:value-of select="./system-err" />
-            </redirect:write>
-        </xsl:if>
-    </xsl:for-each>
-</xsl:template>
-
-<xsl:template name="index.html">
-<html>
-    <head>
-        <title>Unit Test Results.</title>
-    </head>
-    <frameset cols="20%,80%">
-        <frameset rows="30%,70%">
-            <frame src="overview-frame.html" name="packageListFrame"/>
-            <frame src="allclasses-frame.html" name="classListFrame"/>
-        </frameset>
-        <frame src="overview-summary.html" name="classFrame"/>
-        <noframes>
-            <h2>Frame Alert</h2>
-            <p>
-                This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
-            </p>
-        </noframes>
-    </frameset>
-</html>
-</xsl:template>
-
-<!-- this is the stylesheet css to use for nearly everything -->
-<xsl:template name="stylesheet.css">
-body {
-    font:normal 68% verdana,arial,helvetica;
-    color:#000000;
-}
-table tr td, table tr th {
-    font-size: 68%;
-}
-table.details tr th{
-    font-weight: bold;
-    text-align:left;
-    background:#a6caf0;
-}
-table.details tr td{
-    background:#eeeee0;
-}
-
-p {
-    line-height:1.5em;
-    margin-top:0.5em; margin-bottom:1.0em;
-}
-h1 {
-    margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
-}
-h2 {
-    margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
-}
-h3 {
-    margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
-}
-h4 {
-    margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
-}
-h5 {
-    margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
-}
-h6 {
-    margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
-}
-.Error {
-    font-weight:bold; color:red;
-}
-.Failure {
-    font-weight:bold; color:purple;
-}
-.Properties {
-  text-align:right;
-}
-</xsl:template>
-
-
-<!-- ======================================================================
-    This page is created for every testsuite class.
-    It prints a summary of the testsuite and detailed information about
-    testcase methods.
-     ====================================================================== -->
-<xsl:template match="testsuite" mode="class.details">
-    <xsl:variable name="package.name" select="@package"/>
-    <xsl:variable name="class.name"><xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></xsl:variable>
-    <html>
-        <head>
-          <title>Unit Test Results: <xsl:value-of select="$class.name"/></title>
-            <xsl:call-template name="create.stylesheet.link">
-                <xsl:with-param name="package.name" select="$package.name"/>
-            </xsl:call-template>
-       <script type="text/javascript" language="JavaScript">
-        var TestCases = new Array();
-        var cur;
-        <xsl:apply-templates select="properties"/>
-       </script>
-       <script type="text/javascript" language="JavaScript"><![CDATA[
-        function displayProperties (name) {
-          var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
-          var doc = win.document.open();
-          doc.write("<html><head><title>Properties of " + name + "</title>");
-          doc.write("<style type=\"text/css\">");
-          doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
-          doc.write("table tr td, table tr th { font-size: 68%; }");
-          doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
-          doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
-          doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
-          doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
-          doc.write("</style>");
-          doc.write("</head><body>");
-          doc.write("<h3>Properties of " + name + "</h3>");
-          doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
-          doc.write("<table class='properties'>");
-          doc.write("<tr><th>Name</th><th>Value</th></tr>");
-          for (prop in TestCases[name]) {
-            doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
-          }
-          doc.write("</table>");
-          doc.write("</body></html>");
-          doc.close();
-          win.focus();
-        }
-      ]]>
-      </script>
-        </head>
-        <body>
-            <xsl:call-template name="pageHeader"/>
-            <h3>Class <xsl:value-of select="$class.name"/></h3>
-
-
-            <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
-                <xsl:call-template name="testsuite.test.header"/>
-                <xsl:apply-templates select="." mode="print.test"/>
-            </table>
-
-            <h2>Tests</h2>
-            <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
-        <xsl:call-template name="testcase.test.header"/>
-              <!--
-              test can even not be started at all (failure to load the class)
-              so report the error directly
-              -->
-                <xsl:if test="./error">
-                    <tr class="Error">
-                        <td colspan="4"><xsl:apply-templates select="./error"/></td>
-                    </tr>
-                </xsl:if>
-                <xsl:apply-templates select="./testcase" mode="print.test"/>
-            </table>
-            <div class="Properties">
-                <a>
-                    <xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
-                    Properties &#187;
-                </a>
-            </div>
-            <xsl:if test="string-length(./system-out)!=0">
-                <div class="Properties">
-                    <a>
-                        <xsl:attribute name="href">./<xsl:value-of select="@id"/>_<xsl:value-of select="@name"/>-out.txt</xsl:attribute>
-                        System.out &#187;
-                    </a>
-                </div>
-            </xsl:if>
-            <xsl:if test="string-length(./system-err)!=0">
-                <div class="Properties">
-                    <a>
-                        <xsl:attribute name="href">./<xsl:value-of select="@id"/>_<xsl:value-of select="@name"/>-err.txt</xsl:attribute>
-                        System.err &#187;
-                    </a>
-                </div>
-            </xsl:if>
-        </body>
-    </html>
-</xsl:template>
-
-  <!--
-   Write properties into a JavaScript data structure.
-   This is based on the original idea by Erik Hatcher (ehatcher@apache.org)
-   -->
-  <xsl:template match="properties">
-    cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
-    <xsl:for-each select="property">
-    <xsl:sort select="@name"/>
-        cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
-    </xsl:for-each>
-  </xsl:template>
-
-
-<!-- ======================================================================
-    This page is created for every package.
-    It prints the name of all classes that belongs to this package.
-    @param name the package name to print classes.
-     ====================================================================== -->
-<!-- list of classes in a package -->
-<xsl:template name="classes.list">
-    <xsl:param name="name"/>
-    <html>
-        <head>
-            <title>Unit Test Classes: <xsl:value-of select="$name"/></title>
-            <xsl:call-template name="create.stylesheet.link">
-                <xsl:with-param name="package.name" select="$name"/>
-            </xsl:call-template>
-        </head>
-        <body>
-            <table width="100%">
-                <tr>
-                    <td nowrap="nowrap">
-                        <h2><a href="package-summary.html" target="classFrame">
-                            <xsl:value-of select="$name"/>
-                            <xsl:if test="$name = ''">&lt;none&gt;</xsl:if>
-                        </a></h2>
-                    </td>
-                </tr>
-            </table>
-
-            <h2>Classes</h2>
-            <table width="100%">
-                <xsl:for-each select="/testsuites/testsuite[./@package = $name]">
-                    <xsl:sort select="@name"/>
-                    <tr>
-                        <td nowrap="nowrap">
-                            <a href="{@id}_{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
-                        </td>
-                    </tr>
-                </xsl:for-each>
-            </table>
-        </body>
-    </html>
-</xsl:template>
-
-
-<!--
-    Creates an all-classes.html file that contains a link to all package-summary.html
-    on each class.
--->
-<xsl:template match="testsuites" mode="all.classes">
-    <html>
-        <head>
-            <title>All Unit Test Classes</title>
-            <xsl:call-template name="create.stylesheet.link">
-                <xsl:with-param name="package.name"/>
-            </xsl:call-template>
-        </head>
-        <body>
-            <h2>Classes</h2>
-            <table width="100%">
-                <xsl:apply-templates select="testsuite" mode="all.classes">
-                    <xsl:sort select="@name"/>
-                </xsl:apply-templates>
-            </table>
-        </body>
-    </html>
-</xsl:template>
-
-<xsl:template match="testsuite" mode="all.classes">
-    <xsl:variable name="package.name" select="@package"/>
-    <tr>
-        <td nowrap="nowrap">
-            <a target="classFrame">
-                <xsl:attribute name="href">
-                    <xsl:if test="not($package.name='')">
-                        <xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
-                    </xsl:if><xsl:value-of select="@id"/>_<xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
-                </xsl:attribute>
-                <xsl:value-of select="@name"/>
-            </a>
-        </td>
-    </tr>
-</xsl:template>
-
-
-<!--
-    Creates an html file that contains a link to all package-summary.html files on
-    each package existing on testsuites.
-    @bug there will be a problem here, I don't know yet how to handle unnamed package :(
--->
-<xsl:template match="testsuites" mode="all.packages">
-    <html>
-        <head>
-            <title>All Unit Test Packages</title>
-            <xsl:call-template name="create.stylesheet.link">
-                <xsl:with-param name="package.name"/>
-            </xsl:call-template>
-        </head>
-        <body>
-            <h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
-            <h2>Packages</h2>
-            <table width="100%">
-                <xsl:apply-templates select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]" mode="all.packages">
-                    <xsl:sort select="@package"/>
-                </xsl:apply-templates>
-            </table>
-        </body>
-    </html>
-</xsl:template>
-
-<xsl:template match="testsuite" mode="all.packages">
-    <tr>
-        <td nowrap="nowrap">
-            <a href="./{translate(@package,'.','/')}/package-summary.html" target="classFrame">
-                <xsl:value-of select="@package"/>
-                <xsl:if test="@package = ''">&lt;none&gt;</xsl:if>
-            </a>
-        </td>
-    </tr>
-</xsl:template>
-
-
-<xsl:template match="testsuites" mode="overview.packages">
-    <html>
-        <head>
-            <title>Unit Test Results: Summary</title>
-            <xsl:call-template name="create.stylesheet.link">
-                <xsl:with-param name="package.name"/>
-            </xsl:call-template>
-        </head>
-        <body>
-        <xsl:attribute name="onload">open('allclasses-frame.html','classListFrame')</xsl:attribute>
-        <xsl:call-template name="pageHeader"/>
-        <h2>Summary</h2>
-        <xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
-        <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
-        <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
-        <xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
-        <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
-        <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
-        <tr valign="top">
-            <th>Tests</th>
-            <th>Failures</th>
-            <th>Errors</th>
-            <th>Success rate</th>
-            <th>Time</th>
-        </tr>
-        <tr valign="top">
-            <xsl:attribute name="class">
-                <xsl:choose>
-                    <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
-                    <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
-                    <xsl:otherwise>Pass</xsl:otherwise>
-                </xsl:choose>
-            </xsl:attribute>
-            <td><xsl:value-of select="$testCount"/></td>
-            <td><xsl:value-of select="$failureCount"/></td>
-            <td><xsl:value-of select="$errorCount"/></td>
-            <td>
-                <xsl:call-template name="display-percent">
-                    <xsl:with-param name="value" select="$successRate"/>
-                </xsl:call-template>
-            </td>
-            <td>
-                <xsl:call-template name="display-time">
-                    <xsl:with-param name="value" select="$timeCount"/>
-                </xsl:call-template>
-            </td>
-
-        </tr>
-        </table>
-        <table border="0" width="95%">
-        <tr>
-        <td style="text-align: justify;">
-        Note: <em>failures</em> are anticipated and checked for with assertions while <em>errors</em> are unanticipated.
-        </td>
-        </tr>
-        </table>
-
-        <h2>Packages</h2>
-        <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
-            <xsl:call-template name="testsuite.test.header"/>
-            <xsl:for-each select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
-                <xsl:sort select="@package" order="ascending"/>
-                <!-- get the node set containing all testsuites that have the same package -->
-                <xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = current()/@package]"/>
-                <tr valign="top">
-                    <!-- display a failure if there is any failure/error in the package -->
-                    <xsl:attribute name="class">
-                        <xsl:choose>
-                            <xsl:when test="sum($insamepackage/@errors) &gt; 0">Error</xsl:when>
-                            <xsl:when test="sum($insamepackage/@failures) &gt; 0">Failure</xsl:when>
-                            <xsl:otherwise>Pass</xsl:otherwise>
-                        </xsl:choose>
-                    </xsl:attribute>
-                    <td><a href="./{translate(@package,'.','/')}/package-summary.html">
-                        <xsl:value-of select="@package"/>
-                        <xsl:if test="@package = ''">&lt;none&gt;</xsl:if>
-                    </a></td>
-                    <td><xsl:value-of select="sum($insamepackage/@tests)"/></td>
-                    <td><xsl:value-of select="sum($insamepackage/@errors)"/></td>
-                    <td><xsl:value-of select="sum($insamepackage/@failures)"/></td>
-                    <td>
-                    <xsl:call-template name="display-time">
-                        <xsl:with-param name="value" select="sum($insamepackage/@time)"/>
-                    </xsl:call-template>
-                    </td>
-                </tr>
-            </xsl:for-each>
-        </table>
-        </body>
-        </html>
-</xsl:template>
-
-
-<xsl:template name="package.summary">
-    <xsl:param name="name"/>
-    <html>
-        <head>
-            <xsl:call-template name="create.stylesheet.link">
-                <xsl:with-param name="package.name" select="$name"/>
-            </xsl:call-template>
-        </head>
-        <body>
-            <xsl:attribute name="onload">open('package-frame.html','classListFrame')</xsl:attribute>
-            <xsl:call-template name="pageHeader"/>
-            <h3>Package <xsl:value-of select="$name"/></h3>
-
-            <!--table border="0" cellpadding="5" cellspacing="2" width="95%">
-                <xsl:call-template name="class.metrics.header"/>
-                <xsl:apply-templates select="." mode="print.metrics"/>
-            </table-->
-
-            <xsl:variable name="insamepackage" select="/testsuites/testsuite[./@package = $name]"/>
-            <xsl:if test="count($insamepackage) &gt; 0">
-                <h2>Classes</h2>
-                <p>
-                <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
-                    <xsl:call-template name="testsuite.test.header"/>
-                    <xsl:apply-templates select="$insamepackage" mode="print.test">
-                        <xsl:sort select="@name"/>
-                    </xsl:apply-templates>
-                </table>
-                </p>
-            </xsl:if>
-        </body>
-    </html>
-</xsl:template>
-
-
-<!--
-    transform string like a.b.c to ../../../
-    @param path the path to transform into a descending directory path
--->
-<xsl:template name="path">
-    <xsl:param name="path"/>
-    <xsl:if test="contains($path,'.')">
-        <xsl:text>../</xsl:text>
-        <xsl:call-template name="path">
-            <xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
-        </xsl:call-template>
-    </xsl:if>
-    <xsl:if test="not(contains($path,'.')) and not($path = '')">
-        <xsl:text>../</xsl:text>
-    </xsl:if>
-</xsl:template>
-
-
-<!-- create the link to the stylesheet based on the package name -->
-<xsl:template name="create.stylesheet.link">
-    <xsl:param name="package.name"/>
-    <link rel="stylesheet" type="text/css" title="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></link>
-</xsl:template>
-
-
-<!-- Page HEADER -->
-<xsl:template name="pageHeader">
-    <h1>Unit Test Results</h1>
-    <table width="100%">
-    <tr>
-        <td align="left"></td>
-        <td align="right">Designed for use with <a href="http://www.junit.org/">JUnit</a> and <a href="http://jakarta.apache.org/">Ant</a>.</td>
-    </tr>
-    </table>
-    <hr size="1"/>
-</xsl:template>
-
-<!-- class header -->
-<xsl:template name="testsuite.test.header">
-    <tr valign="top">
-        <th width="80%">Name</th>
-        <th>Tests</th>
-        <th>Errors</th>
-        <th>Failures</th>
-        <th nowrap="nowrap">Time(s)</th>
-    </tr>
-</xsl:template>
-
-<!-- method header -->
-<xsl:template name="testcase.test.header">
-    <tr valign="top">
-        <th>Name</th>
-        <th>Status</th>
-        <th width="80%">Type</th>
-        <th nowrap="nowrap">Time(s)</th>
-    </tr>
-</xsl:template>
-
-
-<!-- class information -->
-<xsl:template match="testsuite" mode="print.test">
-    <tr valign="top">
-        <xsl:attribute name="class">
-            <xsl:choose>
-                <xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
-                <xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
-                <xsl:otherwise>Pass</xsl:otherwise>
-            </xsl:choose>
-        </xsl:attribute>
-        <td><a href="{@id}_{@name}.html"><xsl:value-of select="@name"/></a></td>
-        <td><xsl:apply-templates select="@tests"/></td>
-        <td><xsl:apply-templates select="@errors"/></td>
-        <td><xsl:apply-templates select="@failures"/></td>
-        <td><xsl:call-template name="display-time">
-                <xsl:with-param name="value" select="@time"/>
-            </xsl:call-template>
-        </td>
-    </tr>
-</xsl:template>
-
-<xsl:template match="testcase" mode="print.test">
-    <tr valign="top">
-        <xsl:attribute name="class">
-            <xsl:choose>
-                <xsl:when test="error">Error</xsl:when>
-                <xsl:when test="failure">Failure</xsl:when>
-                <xsl:otherwise>TableRowColor</xsl:otherwise>
-            </xsl:choose>
-        </xsl:attribute>
-        <td><xsl:value-of select="@name"/></td>
-        <xsl:choose>
-            <xsl:when test="failure">
-                <td>Failure</td>
-                <td><xsl:apply-templates select="failure"/></td>
-            </xsl:when>
-            <xsl:when test="error">
-                <td>Error</td>
-                <td><xsl:apply-templates select="error"/></td>
-            </xsl:when>
-            <xsl:otherwise>
-                <td>Success</td>
-                <td></td>
-            </xsl:otherwise>
-        </xsl:choose>
-        <td>
-            <xsl:call-template name="display-time">
-                <xsl:with-param name="value" select="@time"/>
-            </xsl:call-template>
-        </td>
-    </tr>
-</xsl:template>
-
-
-<!-- Note : the below template error and failure are the same style
-            so just call the same style store in the toolkit template -->
-<xsl:template match="failure">
-    <xsl:call-template name="display-failures"/>
-</xsl:template>
-
-<xsl:template match="error">
-    <xsl:call-template name="display-failures"/>
-</xsl:template>
-
-<!-- Style for the error and failure in the testcase template -->
-<xsl:template name="display-failures">
-    <xsl:choose>
-        <xsl:when test="not(@message)">N/A</xsl:when>
-        <xsl:otherwise>
-            <xsl:value-of select="@message"/>
-        </xsl:otherwise>
-    </xsl:choose>
-    <!-- display the stacktrace -->
-    <br/><br/>
-    <code>
-        <xsl:call-template name="br-replace">
-            <xsl:with-param name="word" select="."/>
-        </xsl:call-template>
-    </code>
-    <!-- the latter is better but might be problematic for non-21" monitors... -->
-    <!--pre><xsl:value-of select="."/></pre-->
-</xsl:template>
-
-<xsl:template name="JS-escape">
-    <xsl:param name="string"/>
-    <xsl:param name="tmp1" select="stringutils:replace(string($string),'\','\\')"/>
-    <xsl:param name="tmp2" select="stringutils:replace(string($tmp1),&quot;'&quot;,&quot;\&apos;&quot;)"/>
-    <xsl:value-of select="$tmp2"/>
-</xsl:template>
-
-
-<!--
-    template that will convert a carriage return into a br tag
-    @param word the text from which to convert CR to BR tag
--->
-<xsl:template name="br-replace">
-    <xsl:param name="word"/>
-    <xsl:param name="br"><br/></xsl:param>
-    <xsl:value-of select='stringutils:replace(string($word),"&#xA;",$br)'/>
-</xsl:template>
-
-<xsl:template name="display-time">
-    <xsl:param name="value"/>
-    <xsl:value-of select="format-number($value,'0.000')"/>
-</xsl:template>
-
-<xsl:template name="display-percent">
-    <xsl:param name="value"/>
-    <xsl:value-of select="format-number($value,'0.00%')"/>
-</xsl:template>
-</xsl:stylesheet>
-
diff --git a/dependencies/plugins/org.apache.ant/etc/junit-noframes.xsl b/dependencies/plugins/org.apache.ant/etc/junit-noframes.xsl
deleted file mode 100755
index 25487f8..0000000
--- a/dependencies/plugins/org.apache.ant/etc/junit-noframes.xsl
+++ /dev/null
@@ -1,461 +0,0 @@
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-	xmlns:lxslt="http://xml.apache.org/xslt"
-	xmlns:stringutils="xalan://org.apache.tools.ant.util.StringUtils">
-<xsl:output method="html" indent="yes" encoding="US-ASCII"
-  doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
-<xsl:decimal-format decimal-separator="." grouping-separator="," />
-<!--
-   Copyright 2001-2004 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
- -->
- 
-<!--
- 
- Sample stylesheet to be used with Ant JUnitReport output.
- 
- It creates a non-framed report that can be useful to send via
- e-mail or such.
- 
- @author Stephane Bailliez <a href="mailto:sbailliez@apache.org"/>
- @author Erik Hatcher <a href="mailto:ehatcher@apache.org"/>
- 
--->
-<xsl:template match="testsuites">
-    <html>
-        <head>
-            <title>Unit Test Results</title>
-    <style type="text/css">
-      body {
-        font:normal 68% verdana,arial,helvetica;
-        color:#000000;
-      }
-      table tr td, table tr th {
-          font-size: 68%;
-      }
-      table.details tr th{
-        font-weight: bold;
-        text-align:left;
-        background:#a6caf0;
-      }
-      table.details tr td{
-        background:#eeeee0;
-      }
-      
-      p {
-        line-height:1.5em;
-        margin-top:0.5em; margin-bottom:1.0em;
-      }
-      h1 {
-        margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
-      }
-      h2 {
-        margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
-      }
-      h3 {
-        margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
-      }
-      h4 {
-        margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
-      }
-      h5 {
-        margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
-      }
-      h6 {
-        margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
-      }
-      .Error {
-        font-weight:bold; color:red;
-      }
-      .Failure {
-        font-weight:bold; color:purple;
-      }
-      .Properties {
-        text-align:right;
-      }
-      </style>
-      <script type="text/javascript" language="JavaScript">
-        var TestCases = new Array();
-        var cur;
-        <xsl:for-each select="./testsuite">      
-            <xsl:apply-templates select="properties"/>
-        </xsl:for-each>
-
-       </script>
-       <script type="text/javascript" language="JavaScript"><![CDATA[
-        function displayProperties (name) {
-          var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
-          var doc = win.document.open();
-          doc.write("<html><head><title>Properties of " + name + "</title>");
-          doc.write("<style>")
-          doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
-          doc.write("table tr td, table tr th { font-size: 68%; }");
-          doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
-          doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
-          doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
-          doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
-          doc.write("</style>");
-          doc.write("</head><body>");
-          doc.write("<h3>Properties of " + name + "</h3>");
-          doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
-          doc.write("<table class='properties'>");
-          doc.write("<tr><th>Name</th><th>Value</th></tr>");
-          for (prop in TestCases[name]) {
-            doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
-          }
-          doc.write("</table>");
-          doc.write("</body></html>");
-          doc.close();
-          win.focus();
-        }
-      ]]>  
-      </script>
-        </head>
-        <body>
-            <a name="top"></a>
-            <xsl:call-template name="pageHeader"/>  
-            
-            <!-- Summary part -->
-            <xsl:call-template name="summary"/>
-            <hr size="1" width="95%" align="left"/>
-            
-            <!-- Package List part -->
-            <xsl:call-template name="packagelist"/>
-            <hr size="1" width="95%" align="left"/>
-            
-            <!-- For each package create its part -->
-            <xsl:call-template name="packages"/>
-            <hr size="1" width="95%" align="left"/>
-            
-            <!-- For each class create the  part -->
-            <xsl:call-template name="classes"/>
-            
-        </body>
-    </html>
-</xsl:template>
-    
-    
-    
-    <!-- ================================================================== -->
-    <!-- Write a list of all packages with an hyperlink to the anchor of    -->
-    <!-- of the package name.                                               -->
-    <!-- ================================================================== -->
-    <xsl:template name="packagelist">   
-        <h2>Packages</h2>
-        Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.
-        <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
-            <xsl:call-template name="testsuite.test.header"/>
-            <!-- list all packages recursively -->
-            <xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
-                <xsl:sort select="@package"/>
-                <xsl:variable name="testsuites-in-package" select="/testsuites/testsuite[./@package = current()/@package]"/>
-                <xsl:variable name="testCount" select="sum($testsuites-in-package/@tests)"/>
-                <xsl:variable name="errorCount" select="sum($testsuites-in-package/@errors)"/>
-                <xsl:variable name="failureCount" select="sum($testsuites-in-package/@failures)"/>
-                <xsl:variable name="timeCount" select="sum($testsuites-in-package/@time)"/>
-                
-                <!-- write a summary for the package -->
-                <tr valign="top">
-                    <!-- set a nice color depending if there is an error/failure -->
-                    <xsl:attribute name="class">
-                        <xsl:choose>
-                            <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
-                            <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
-                        </xsl:choose>
-                    </xsl:attribute>
-                    <td><a href="#{@package}"><xsl:value-of select="@package"/></a></td>
-                    <td><xsl:value-of select="$testCount"/></td>
-                    <td><xsl:value-of select="$errorCount"/></td>
-                    <td><xsl:value-of select="$failureCount"/></td>
-                    <td>
-                    <xsl:call-template name="display-time">
-                        <xsl:with-param name="value" select="$timeCount"/>
-                    </xsl:call-template>
-                    </td>
-                </tr>
-            </xsl:for-each>
-        </table>        
-    </xsl:template>
-    
-    
-    <!-- ================================================================== -->
-    <!-- Write a package level report                                       -->
-    <!-- It creates a table with values from the document:                  -->
-    <!-- Name | Tests | Errors | Failures | Time                            -->
-    <!-- ================================================================== -->
-    <xsl:template name="packages">
-        <!-- create an anchor to this package name -->
-        <xsl:for-each select="/testsuites/testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
-            <xsl:sort select="@package"/>
-                <a name="{@package}"></a>
-                <h3>Package <xsl:value-of select="@package"/></h3>
-                
-                <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
-                    <xsl:call-template name="testsuite.test.header"/>
-            
-                    <!-- match the testsuites of this package -->
-                    <xsl:apply-templates select="/testsuites/testsuite[./@package = current()/@package]" mode="print.test"/>
-                </table>
-                <a href="#top">Back to top</a>
-                <p/>
-                <p/>
-        </xsl:for-each>
-    </xsl:template>
-    
-    <xsl:template name="classes">
-        <xsl:for-each select="testsuite">
-            <xsl:sort select="@name"/>
-            <!-- create an anchor to this class name -->
-            <a name="{@name}"></a>
-            <h3>TestCase <xsl:value-of select="@name"/></h3>
-            
-            <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
-              <xsl:call-template name="testcase.test.header"/>
-              <!--
-              test can even not be started at all (failure to load the class)
-              so report the error directly
-              -->
-                <xsl:if test="./error">
-                    <tr class="Error">
-                        <td colspan="4"><xsl:apply-templates select="./error"/></td>
-                    </tr>
-                </xsl:if>
-                <xsl:apply-templates select="./testcase" mode="print.test"/>
-            </table>
-            <div class="Properties">
-                <a>
-                    <xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
-                    Properties &#187;
-                </a>
-            </div>
-            <p/>
-            
-            <a href="#top">Back to top</a>
-        </xsl:for-each>
-    </xsl:template>
-    
-    <xsl:template name="summary">
-        <h2>Summary</h2>
-        <xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
-        <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
-        <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
-        <xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
-        <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
-        <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
-        <tr valign="top">
-            <th>Tests</th>
-            <th>Failures</th>
-            <th>Errors</th>
-            <th>Success rate</th>
-            <th>Time</th>
-        </tr>
-        <tr valign="top">
-            <xsl:attribute name="class">
-                <xsl:choose>
-                    <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
-                    <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
-                </xsl:choose>
-            </xsl:attribute>
-            <td><xsl:value-of select="$testCount"/></td>
-            <td><xsl:value-of select="$failureCount"/></td>
-            <td><xsl:value-of select="$errorCount"/></td>
-            <td>
-                <xsl:call-template name="display-percent">
-                    <xsl:with-param name="value" select="$successRate"/>
-                </xsl:call-template>
-            </td>
-            <td>
-                <xsl:call-template name="display-time">
-                    <xsl:with-param name="value" select="$timeCount"/>
-                </xsl:call-template>
-            </td>
-
-        </tr>
-        </table>
-        <table border="0" width="95%">
-        <tr>
-        <td style="text-align: justify;">
-        Note: <i>failures</i> are anticipated and checked for with assertions while <i>errors</i> are unanticipated.
-        </td>
-        </tr>
-        </table>
-    </xsl:template>
-    
-  <!--
-   Write properties into a JavaScript data structure.
-   This is based on the original idea by Erik Hatcher (ehatcher@apache.org)
-   -->
-  <xsl:template match="properties">
-    cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
-    <xsl:for-each select="property">
-    <xsl:sort select="@name"/>
-        cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
-    </xsl:for-each>
-  </xsl:template>
-    
-<!-- Page HEADER -->
-<xsl:template name="pageHeader">
-    <h1>Unit Test Results</h1>
-    <table width="100%">
-    <tr>
-        <td align="left"></td>
-        <td align="right">Designed for use with <a href='http://www.junit.org'>JUnit</a> and <a href='http://jakarta.apache.org/ant'>Ant</a>.</td>
-    </tr>
-    </table>
-    <hr size="1"/>
-</xsl:template>
-
-<xsl:template match="testsuite" mode="header">
-    <tr valign="top">
-        <th width="80%">Name</th>
-        <th>Tests</th>
-        <th>Errors</th>
-        <th>Failures</th>
-        <th nowrap="nowrap">Time(s)</th>
-    </tr>
-</xsl:template>
-
-<!-- class header -->
-<xsl:template name="testsuite.test.header">
-    <tr valign="top">
-        <th width="80%">Name</th>
-        <th>Tests</th>
-        <th>Errors</th>
-        <th>Failures</th>
-        <th nowrap="nowrap">Time(s)</th>
-    </tr>
-</xsl:template>
-
-<!-- method header -->
-<xsl:template name="testcase.test.header">
-    <tr valign="top">
-        <th>Name</th>
-        <th>Status</th>
-        <th width="80%">Type</th>
-        <th nowrap="nowrap">Time(s)</th>
-    </tr>
-</xsl:template>
-
-
-<!-- class information -->
-<xsl:template match="testsuite" mode="print.test">
-    <tr valign="top">
-        <!-- set a nice color depending if there is an error/failure -->
-        <xsl:attribute name="class">
-            <xsl:choose>
-                <xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
-                <xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
-            </xsl:choose>
-        </xsl:attribute>
-    
-        <!-- print testsuite information -->
-        <td><a href="#{@name}"><xsl:value-of select="@name"/></a></td>
-        <td><xsl:value-of select="@tests"/></td>
-        <td><xsl:value-of select="@errors"/></td>
-        <td><xsl:value-of select="@failures"/></td>
-        <td>
-            <xsl:call-template name="display-time">
-                <xsl:with-param name="value" select="@time"/>
-            </xsl:call-template>
-        </td>
-    </tr>
-</xsl:template>
-
-<xsl:template match="testcase" mode="print.test">
-    <tr valign="top">
-        <xsl:attribute name="class">
-            <xsl:choose>
-                <xsl:when test="failure | error">Error</xsl:when>
-            </xsl:choose>
-        </xsl:attribute>
-        <td><xsl:value-of select="@name"/></td>
-        <xsl:choose>
-            <xsl:when test="failure">
-                <td>Failure</td>
-                <td><xsl:apply-templates select="failure"/></td>
-            </xsl:when>
-            <xsl:when test="error">
-                <td>Error</td>
-                <td><xsl:apply-templates select="error"/></td>
-            </xsl:when>
-            <xsl:otherwise>
-                <td>Success</td>
-                <td></td>
-            </xsl:otherwise>
-        </xsl:choose>
-        <td>
-            <xsl:call-template name="display-time">
-                <xsl:with-param name="value" select="@time"/>
-            </xsl:call-template>
-        </td>
-    </tr>
-</xsl:template>
-
-
-<xsl:template match="failure">
-    <xsl:call-template name="display-failures"/>
-</xsl:template>
-
-<xsl:template match="error">
-    <xsl:call-template name="display-failures"/>
-</xsl:template>
-
-<!-- Style for the error and failure in the tescase template -->
-<xsl:template name="display-failures">
-    <xsl:choose>
-        <xsl:when test="not(@message)">N/A</xsl:when>
-        <xsl:otherwise>
-            <xsl:value-of select="@message"/>
-        </xsl:otherwise>
-    </xsl:choose>
-    <!-- display the stacktrace -->
-    <code>
-        <br/><br/>
-        <xsl:call-template name="br-replace">
-            <xsl:with-param name="word" select="."/>
-        </xsl:call-template>
-    </code>
-    <!-- the later is better but might be problematic for non-21" monitors... -->
-    <!--pre><xsl:value-of select="."/></pre-->
-</xsl:template>
-
-<xsl:template name="JS-escape">
-    <xsl:param name="string"/>
-    <xsl:param name="tmp1" select="stringutils:replace(string($string),'\','\\')"/>
-    <xsl:param name="tmp2" select="stringutils:replace(string($tmp1),&quot;'&quot;,&quot;\&apos;&quot;)"/>
-    <xsl:value-of select="$tmp2"/>
-</xsl:template>
-
-
-<!--
-    template that will convert a carriage return into a br tag
-    @param word the text from which to convert CR to BR tag
--->
-<xsl:template name="br-replace">
-    <xsl:param name="word"/>
-    <xsl:param name="br"><br/></xsl:param>
-    <xsl:value-of select='stringutils:replace(string($word),"&#xA;",$br)'/>
-</xsl:template>
-
-<xsl:template name="display-time">
-    <xsl:param name="value"/>
-    <xsl:value-of select="format-number($value,'0.000')"/>
-</xsl:template>
-
-<xsl:template name="display-percent">
-    <xsl:param name="value"/>
-    <xsl:value-of select="format-number($value,'0.00%')"/>
-</xsl:template>
-
-</xsl:stylesheet>
-
diff --git a/dependencies/plugins/org.apache.ant/etc/log.xsl b/dependencies/plugins/org.apache.ant/etc/log.xsl
deleted file mode 100755
index 2272790..0000000
--- a/dependencies/plugins/org.apache.ant/etc/log.xsl
+++ /dev/null
@@ -1,210 +0,0 @@
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
-<!--
-    Copyright  2000-2004 The Apache Software Foundation
-   
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-   
-         http://www.apache.org/licenses/LICENSE-2.0
-   
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT 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 purpose have this XSL is to provide a nice way to look at the output
-  from the Ant XmlLogger (ie: ant -listener org.apache.tools.ant.XmlLogger )
-  
-  @author <a href="mailto:sbailliez@apache.org">Stephane Bailliez</a>
-  
--->
-<xsl:decimal-format decimal-separator="." grouping-separator="," />
-
-<xsl:template match="/">
-<html>
-  <head>
-    <style type="text/css">
-    .bannercell {
-      border: 0px;
-      padding: 0px;
-    }
-    body {
-      margin: 0;
-      font:normal 100% arial,helvetica,sanserif;
-      background-color:#FFFFFF;
-      color:#000000;
-    }
-    table.status {
-      font:bold 80% arial,helvetica,sanserif;
-      background-color:#525D76;
-      color:#ffffff;
-    }
-    table.log tr td, tr th {
-      font-size: 80%;
-    }
-    .error {
-      color:red;
-    }
-    .warn {
-      color:brown;
-    }
-    .info {
-      color:gray;
-    }
-    .debug{
-      color:gray;
-    }
-    .failed {
-      font-size:80%;
-      background-color: red;
-      color:#FFFFFF;
-      font-weight: bold
-    }
-    .complete {
-      font-size:80%;
-      background-color: #525D76;
-      color:#FFFFFF;
-      font-weight: bold
-    }
-    .a td { 
-      background: #efefef;
-    }
-    .b td { 
-      background: #fff;
-    }
-    th, td {
-      text-align: left;
-      vertical-align: top;
-    }
-    th {
-      background: #ccc;
-      color: black;
-    }
-    table, th, td {
-      border: none
-    }
-    h3 {
-      font:bold 80% arial,helvetica,sanserif;
-      background: #525D76;
-      color: white;
-      text-decoration: none;
-      padding: 5px;
-      margin-right: 2px;
-      margin-left: 2px;
-      margin-bottom: 0;
-    }
-    </style>
-  </head>
-  <body>
-    <!-- jakarta logo -->
-    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-    <tr>
-      <td valign="top" class="bannercell">
-        <a href="http://jakarta.apache.org/">
-        <img src="http://jakarta.apache.org/images/jakarta-logo.gif" alt="http://jakarta.apache.org" align="left" border="0"/>
-        </a>
-      </td>
-      <td style="text-align:right;vertical-align:bottom">
-        <a href="http://jakarta.apache.org/ant">Apache Ant</a>
-      </td>
-    </tr>
-    </table>
-      
-    <table border="0" width="100%">
-    <tr><td><hr noshade="yes" size="1"/></td></tr>
-    </table>
-
-    <xsl:apply-templates select="build"/>
-
-    <!-- FOOTER -->
-    <table width="100%">
-      <tr><td><hr noshade="yes" size="1"/></td></tr>
-      <tr><td>
-      <div align="center"><font color="#525D76" size="-1"><em>
-      Copyright &#169; 2000-2002, Apache Software Foundation
-      </em></font></div>
-      </td></tr>
-    </table>
-  </body>
-</html>
-</xsl:template>
-
-<xsl:template match="build">
-  <!-- build status -->
-  <table width="100%">
-    <xsl:attribute name="class">
-      <xsl:if test="@error">failed</xsl:if>
-      <xsl:if test="not(@error)">complete</xsl:if>
-    </xsl:attribute>
-    <tr>
-      <xsl:if test="@error">
-        <td nowrap="yes">Build Failed</td> 
-      </xsl:if>
-      <xsl:if test="not(@error)">
-        <td nowrap="yes">Build Complete</td>
-      </xsl:if>
-        <td style="text-align:right" nowrap="yes">Total Time: <xsl:value-of select="@time"/></td>
-    </tr>
-    <tr>
-      <td colspan="2">
-        <xsl:if test="@error">
-          <tt><xsl:value-of select="@error"/></tt><br/>
-          <i style="font-size:80%">See the <a href="#stacktrace" alt="Click for details">stacktrace</a>.</i>
-        </xsl:if>
-      </td>
-    </tr>
-  </table>
-  <table border="1" cellspacing="2" cellpadding="3" width="100%" style="font-size:80%">
-    <tr class="a"><td width="1">ant.file</td><td><xsl:value-of select="substring-after(//message[contains(text(),'ant.file')], '->')"/></td></tr>
-    <tr class="b"><td width="1">ant.version</td><td><xsl:value-of select="substring-after(//message[contains(text(),'ant.version')], '->')"/></td></tr>
-    <tr class="a"><td width="1">java.version</td><td><xsl:value-of select="substring-after(//message[contains(text(),'java.vm.version')], '->')"/></td></tr>
-    <tr class="b"><td width="1">os.name</td><td><xsl:value-of select="substring-after(//message[contains(text(),'os.name')], '->')"/></td></tr>
-  </table>
-  <!-- build information -->
-  <h3>Build events</h3>
-  <table class="log" border="1" cellspacing="2" cellpadding="3" width="100%">
-  <tr>
-    <th nowrap="yes" align="left" width="1%">target</th>
-    <th nowrap="yes" align="left" width="1%">task</th>
-    <th nowrap="yes" align="left">message</th>
-  </tr>
-  <xsl:apply-templates select=".//message[@priority != 'debug']"/>
-  </table>
-  <p>
-  <!-- stacktrace -->
-  <xsl:if test="stacktrace">
-  <a name="stacktrace"/>
-  <h3>Error details</h3>
-  <table width="100%">
-    <tr><td>
-      <pre><xsl:value-of select="stacktrace"/></pre>
-    </td></tr>
-  </table>
-  </xsl:if>
-  </p>
-</xsl:template>
-
-<!-- report every message but those with debug priority -->
-<xsl:template match="message[@priority!='debug']">
-  <tr valign="top">
-    <!-- alternated row style -->
-    <xsl:attribute name="class">
-      <xsl:if test="position() mod 2 = 1">a</xsl:if>
-      <xsl:if test="position() mod 2 = 0">b</xsl:if>
-    </xsl:attribute>
-    <td nowrap="yes" width="1%"><xsl:value-of select="../../@name"/></td>
-    <td nowrap="yes" style="text-align:right" width="1%">[ <xsl:value-of select="../@name"/> ]</td>
-    <td class="{@priority}" nowrap="yes">
-            <xsl:value-of select="text()"/>
-    </td>
-  </tr>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/dependencies/plugins/org.apache.ant/etc/maudit-frames.xsl b/dependencies/plugins/org.apache.ant/etc/maudit-frames.xsl
deleted file mode 100755
index eaaf180..0000000
--- a/dependencies/plugins/org.apache.ant/etc/maudit-frames.xsl
+++ /dev/null
@@ -1,510 +0,0 @@
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-    xmlns:lxslt="http://xml.apache.org/xslt"
-    xmlns:redirect="org.apache.xalan.lib.Redirect"
-    extension-element-prefixes="redirect">
-<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
-<xsl:decimal-format decimal-separator="." grouping-separator="," />
-<!--
-    Copyright  2001-2004 The Apache Software Foundation
-   
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-   
-         http://www.apache.org/licenses/LICENSE-2.0
-   
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
-   
--->
-<!--
-
-    Stylesheet to transform an XML file generated by the Ant MAudit task into
-    a set of JavaDoc-like HTML page to make pages more convenient to be browsed.
-
-    It use the Xalan redirect extension to write to multiple output files.
-
-    @author Stephane Bailliez <a href="mailto:sbailliez@apache.org"/>
--->
-
-<xsl:param name="output.dir" select="'.'"/>
-
-
-<xsl:template match="classes">
-    <!-- create the index.html -->
-    <redirect:write file="{$output.dir}/index.html">
-        <xsl:call-template name="index.html"/>
-    </redirect:write>
-
-    <!-- create the stylesheet.css -->
-    <redirect:write file="{$output.dir}/stylesheet.css">
-        <xsl:call-template name="stylesheet.css"/>
-    </redirect:write>
-
-    <!-- create the overview-packages.html at the root -->
-    <redirect:write file="{$output.dir}/overview-summary.html">
-        <xsl:apply-templates select="." mode="overview.packages"/>
-    </redirect:write>
-
-    <!-- create the all-packages.html at the root -->
-    <redirect:write file="{$output.dir}/overview-frame.html">
-        <xsl:apply-templates select="." mode="all.packages"/>
-    </redirect:write>
-
-    <!-- create the all-classes.html at the root -->
-    <redirect:write file="{$output.dir}/allclasses-frame.html">
-        <xsl:apply-templates select="." mode="all.classes"/>
-    </redirect:write>
-
-    <!-- process all packages -->
-    <xsl:for-each select="./class[not(./@package = preceding-sibling::class/@package)]">
-        <xsl:call-template name="package">
-            <xsl:with-param name="name" select="@package"/>
-        </xsl:call-template>
-    </xsl:for-each>
-</xsl:template>
-
-
-<xsl:template name="package">
-    <xsl:param name="name"/>
-    <xsl:variable name="package.dir">
-        <xsl:if test="not($name = '')"><xsl:value-of select="translate($name,'.','/')"/></xsl:if>
-        <xsl:if test="$name = ''">.</xsl:if>
-    </xsl:variable>
-    <!--Processing package <xsl:value-of select="@name"/> in <xsl:value-of select="$output.dir"/> -->
-    <!-- create a classes-list.html in the package directory -->
-    <redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
-        <xsl:call-template name="classes.list">
-            <xsl:with-param name="name" select="$name"/>
-        </xsl:call-template>
-    </redirect:write>
-
-    <!-- create a package-summary.html in the package directory -->
-    <redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
-        <xsl:call-template name="package.summary">
-            <xsl:with-param name="name" select="$name"/>
-        </xsl:call-template>
-    </redirect:write>
-
-    <!-- for each class, creates a @name.html -->
-    <!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
-    <xsl:for-each select="/classes/class[@package = $name]">
-        <redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
-            <xsl:apply-templates select="." mode="class.details"/>
-        </redirect:write>
-    </xsl:for-each>
-</xsl:template>
-
-<xsl:template name="index.html">
-<HTML>
-    <HEAD><TITLE>Audit Results.</TITLE></HEAD>
-    <FRAMESET cols="20%,80%">
-        <FRAMESET rows="30%,70%">
-            <FRAME src="overview-frame.html" name="packageListFrame"/>
-            <FRAME src="allclasses-frame.html" name="classListFrame"/>
-        </FRAMESET>
-        <FRAME src="overview-summary.html" name="classFrame"/>
-    </FRAMESET>
-    <noframes>
-        <H2>Frame Alert</H2>
-        <P>
-        This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
-        </P>
-    </noframes>
-</HTML>
-</xsl:template>
-
-
-<!-- this is the stylesheet css to use for nearly everything -->
-<xsl:template name="stylesheet.css">
-    .bannercell {
-      border: 0px;
-      padding: 0px;
-    }
-    body {
-      margin-left: 10;
-      margin-right: 10;
-      font:normal 80% arial,helvetica,sanserif;
-      background-color:#FFFFFF;
-      color:#000000;
-    }
-    .a td {
-      background: #efefef;
-    }
-    .b td {
-      background: #fff;
-    }
-    th, td {
-      text-align: left;
-      vertical-align: top;
-    }
-    th {
-      font-weight:bold;
-      background: #ccc;
-      color: black;
-    }
-    table, th, td {
-      font-size:100%;
-      border: none
-    }
-    table.log tr td, tr th {
-
-    }
-    h2 {
-      font-weight:bold;
-      font-size:140%;
-      margin-bottom: 5;
-    }
-    h3 {
-      font-size:100%;
-      font-weight:bold;
-      background: #525D76;
-      color: white;
-      text-decoration: none;
-      padding: 5px;
-      margin-right: 2px;
-      margin-left: 2px;
-      margin-bottom: 0;
-    }
-</xsl:template>
-
-
-<!-- print the violations of the class -->
-<xsl:template match="class" mode="class.details">
-    <xsl:variable name="package.name" select="@package"/>
-    <HTML>
-        <HEAD>
-            <xsl:call-template name="create.stylesheet.link">
-                <xsl:with-param name="package.name" select="$package.name"/>
-            </xsl:call-template>
-        </HEAD>
-        <BODY>
-            <xsl:call-template name="pageHeader"/>
-            <H3>Class <xsl:if test="not($package.name = '')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></H3>
-
-            <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
-                <xsl:call-template name="class.audit.header"/>
-                <xsl:apply-templates select="." mode="print.audit"/>
-            </table>
-
-            <H3>Violations</H3>
-            <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
-                <xsl:call-template name="violation.audit.header"/>
-                <xsl:apply-templates select="./violation" mode="print.audit">
-                    <xsl:sort data-type="number" select="@line"/>
-                </xsl:apply-templates>
-            </table>
-            <xsl:call-template name="pageFooter"/>
-        </BODY>
-    </HTML>
-</xsl:template>
-
-
-<!-- list of classes in a package -->
-<xsl:template name="classes.list">
-    <xsl:param name="name"/>
-    <HTML>
-        <HEAD>
-            <xsl:call-template name="create.stylesheet.link">
-                <xsl:with-param name="package.name" select="$name"/>
-            </xsl:call-template>
-        </HEAD>
-        <BODY>
-            <table width="100%">
-                <tr>
-                    <td nowrap="nowrap">
-                        <H2><a href="package-summary.html" target="classFrame"><xsl:value-of select="$name"/></a></H2>
-                    </td>
-                </tr>
-            </table>
-
-            <h2>Classes</h2>
-            <TABLE WIDTH="100%">
-                <xsl:apply-templates select="/classes/class[./@package = $name]" mode="classes.list">
-                    <xsl:sort select="@name"/>
-                </xsl:apply-templates>
-            </TABLE>
-        </BODY>
-    </HTML>
-</xsl:template>
-<!-- the class to list -->
-<xsl:template match="class" mode="classes.list">
-    <tr>
-        <td nowrap="nowrap">
-            <!-- @bug naming to fix for inner classes -->
-            <a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
-        </td>
-    </tr>
-</xsl:template>
-
-
-<!--
-    Creates an all-classes.html file that contains a link to all package-summary.html
-    on each class.
--->
-<xsl:template match="classes" mode="all.classes">
-    <html>
-        <head>
-            <xsl:call-template name="create.stylesheet.link">
-                <xsl:with-param name="package.name"/>
-            </xsl:call-template>
-        </head>
-        <body>
-            <h2>Classes</h2>
-            <table width="100%">
-                <xsl:apply-templates select=".//class" mode="all.classes">
-                    <xsl:sort select="@name"/>
-                </xsl:apply-templates>
-            </table>
-        </body>
-    </html>
-</xsl:template>
-
-<xsl:template match="class" mode="all.classes">
-    <!-- (ancestor::package)[last()] is buggy in MSXML3 ? -->
-    <xsl:variable name="package.name" select="@package"/>
-    <tr>
-        <td nowrap="nowrap">
-            <a target="classFrame">
-                <xsl:attribute name="href">
-                    <xsl:if test="not($package.name='')">
-                        <xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
-                    </xsl:if><xsl:value-of select="@name"/><xsl:text>.html</xsl:text>
-                </xsl:attribute>
-                <xsl:value-of select="@name"/>
-            </a>
-        </td>
-    </tr>
-</xsl:template>
-
-
-<!--
-    Creates an html file that contains a link to all package-summary.html files on
-    each package existing on testsuites.
-    @bug there will be a problem here, I don't know yet how to handle unnamed package :(
--->
-<xsl:template match="classes" mode="all.packages">
-    <html>
-        <head>
-            <xsl:call-template name="create.stylesheet.link">
-                <xsl:with-param name="package.name"/>
-            </xsl:call-template>
-        </head>
-        <body>
-            <h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
-            <h2>Packages</h2>
-                <table width="100%">
-                    <xsl:apply-templates select="class[not(./@package = preceding-sibling::class/@package)]" mode="all.packages">
-                        <xsl:sort select="@package" order="ascending"/>
-                    </xsl:apply-templates>
-                </table>
-        </body>
-    </html>
-</xsl:template>
-
-<xsl:template match="class" mode="all.packages">
-    <tr>
-        <td nowrap="nowrap">
-            <a href="{translate(@package,'.','/')}/package-summary.html" target="classFrame">
-                <xsl:value-of select="@package"/>
-            </a>
-        </td>
-    </tr>
-</xsl:template>
-
-
-<xsl:template match="classes" mode="overview.packages">
-    <html>
-        <head>
-            <xsl:call-template name="create.stylesheet.link">
-                <xsl:with-param name="package.name"/>
-            </xsl:call-template>
-        </head>
-        <body onload="open('allclasses-frame.html','classListFrame')">
-        <xsl:call-template name="pageHeader"/>
-        <h3>Summary</h3>
-        <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
-        <tr>
-            <th>Audited classes</th>
-            <th>Reported classes</th>
-            <th>Violations</th>
-        </tr>
-        <tr class="a">
-            <td><xsl:value-of select="@audited"/></td>
-            <td><xsl:value-of select="@reported"/></td>
-            <td><xsl:value-of select="@violations"/></td>
-        </tr>
-        </table>
-        <table border="0" width="100%">
-        <tr>
-        <td style="text-align: justify;">
-        Note: Rules checked have originated from style guidelines suggested by the language designers,
-        experience from the Java development community and insite experience. Violations are generally
-        reported with a reference to the <a href="http://java.sun.com/docs/books/jls/second_edition/html/jTOC.doc.html">Java Language Specifications</a> (JLS x.x.x)
-        and Metamata Audit rules (x.x).
-        Please consult these documents for additional information about violations.
-        <p/>
-        Rules checked also enforce adherence to <a href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html">Sun Java coding guidelines</a> in use at Jakarta.
-        <p/>
-        One should note that these violations do not necessary underline errors but should be used
-        as an indication for <i>possible</i> errors. As always, use your best judgment and review
-        them carefully, it might save you hours of debugging.
-        </td>
-        </tr>
-        </table>
-
-        <h3>Packages</h3>
-        <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
-            <xsl:call-template name="class.audit.header"/>
-            <xsl:for-each select="class[not(./@package = preceding-sibling::class/@package)]">
-                <xsl:sort select="@package" order="ascending"/>
-                <tr>
-          <xsl:call-template name="alternate-row"/>
-                    <td><a href="{translate(@package,'.','/')}/package-summary.html"><xsl:value-of select="@package"/></a></td>
-                    <td><xsl:value-of select="sum(/classes/class[./@package = current()/@package]/@violations)"/></td>
-                </tr>
-            </xsl:for-each>
-        </table>
-        <xsl:call-template name="pageFooter"/>
-        </body>
-        </html>
-</xsl:template>
-
-
-<xsl:template name="package.summary">
-    <xsl:param name="name"/>
-    <HTML>
-        <HEAD>
-            <xsl:call-template name="create.stylesheet.link">
-                <xsl:with-param name="package.name" select="$name"/>
-            </xsl:call-template>
-        </HEAD>
-        <BODY>
-            <xsl:attribute name="onload">open('package-frame.html','classListFrame')</xsl:attribute>
-            <xsl:call-template name="pageHeader"/>
-            <h3>Package <xsl:value-of select="$name"/></h3>
-
-            <!--table border="0" cellpadding="5" cellspacing="2" width="100%">
-                <xsl:call-template name="class.metrics.header"/>
-                <xsl:apply-templates select="." mode="print.metrics"/>
-            </table-->
-
-            <xsl:if test="count(/classes/class[./@package = $name]) &gt; 0">
-                <H3>Classes</H3>
-                <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
-                    <xsl:call-template name="class.audit.header"/>
-                    <xsl:apply-templates select="/classes/class[./@package = $name]" mode="print.audit">
-                        <xsl:sort select="@name"/>
-                    </xsl:apply-templates>
-                </table>
-            </xsl:if>
-            <xsl:call-template name="pageFooter"/>
-        </BODY>
-    </HTML>
-</xsl:template>
-
-
-<!--
-    transform string like a.b.c to ../../../
-    @param path the path to transform into a descending directory path
--->
-<xsl:template name="path">
-    <xsl:param name="path"/>
-    <xsl:if test="contains($path,'.')">
-        <xsl:text>../</xsl:text>
-        <xsl:call-template name="path">
-            <xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
-        </xsl:call-template>
-    </xsl:if>
-    <xsl:if test="not(contains($path,'.')) and not($path = '')">
-        <xsl:text>../</xsl:text>
-    </xsl:if>
-</xsl:template>
-
-
-<!-- create the link to the stylesheet based on the package name -->
-<xsl:template name="create.stylesheet.link">
-    <xsl:param name="package.name"/>
-    <LINK REL ="stylesheet" TYPE="text/css" TITLE="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></LINK>
-</xsl:template>
-
-<!-- Page HEADER -->
-<xsl:template name="pageHeader">
-
-  <!-- jakarta logo -->
-  <table border="0" cellpadding="0" cellspacing="0" width="100%">
-  <tr>
-    <td class="bannercell" rowspan="2">
-      <a href="http://jakarta.apache.org/">
-      <img src="http://jakarta.apache.org/images/jakarta-logo.gif" alt="http://jakarta.apache.org" align="left" border="0"/>
-      </a>
-    </td>
-        <td style="text-align:right"><h2>Source Code Audit</h2></td>
-        </tr>
-        <tr>
-        <td style="text-align:right">Designed for use with <a href='http://www.webgain.com/products/quality_analyzer/'>Webgain QA/Metamata Audit</a> and <a href='http://jakarta.apache.org'>Ant</a>.</td>
-        </tr>
-  </table>
-    <hr size="1"/>
-</xsl:template>
-
-<!-- Page HEADER -->
-<xsl:template name="pageFooter">
-    <table width="100%">
-      <tr><td><hr noshade="yes" size="1"/></td></tr>
-      <tr><td>
-      <div align="center"><font color="#525D76" size="-1"><em>
-      Copyright &#169; 1999-2001, Apache Software Foundation
-      </em></font></div>
-      </td></tr>
-    </table>
-</xsl:template>
-
-
-<!-- class header -->
-<xsl:template name="class.audit.header">
-    <tr>
-        <th width="80%">Name</th>
-        <th>Violations</th>
-    </tr>
-</xsl:template>
-
-<!-- method header -->
-<xsl:template name="violation.audit.header">
-    <tr>
-        <th>Line</th>
-        <th>Message</th>
-    </tr>
-</xsl:template>
-
-
-<!-- class information -->
-<xsl:template match="class" mode="print.audit">
-    <tr>
-    <xsl:call-template name="alternate-row"/>
-        <td><a href="{@name}.html"><xsl:value-of select="@name"/></a></td>
-        <td><xsl:apply-templates select="@violations"/></td>
-    </tr>
-</xsl:template>
-
-<xsl:template match="violation" mode="print.audit">
-    <tr>
-    <xsl:call-template name="alternate-row"/>
-        <td><xsl:value-of select="@line"/></td>
-        <td><xsl:apply-templates select="@message"/></td>
-    </tr>
-</xsl:template>
-
-<!-- alternated row style -->
-<xsl:template name="alternate-row">
-<xsl:attribute name="class">
-  <xsl:if test="position() mod 2 = 1">a</xsl:if>
-  <xsl:if test="position() mod 2 = 0">b</xsl:if>
-</xsl:attribute>
-</xsl:template>
-
-</xsl:stylesheet>
-
diff --git a/dependencies/plugins/org.apache.ant/etc/mmetrics-frames.xsl b/dependencies/plugins/org.apache.ant/etc/mmetrics-frames.xsl
deleted file mode 100755
index f105ea8..0000000
--- a/dependencies/plugins/org.apache.ant/etc/mmetrics-frames.xsl
+++ /dev/null
@@ -1,1033 +0,0 @@
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
-  xmlns:lxslt="http://xml.apache.org/xslt"
-  xmlns:xalan="http://xml.apache.org/xalan"
-  xmlns:redirect="org.apache.xalan.lib.Redirect"
-  exclude-result-prefixes="xalan"
-  extension-element-prefixes="redirect">
-<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
-<xsl:decimal-format decimal-separator="." grouping-separator="," />
-<!--
-    Copyright  2001-2004 The Apache Software Foundation
-   
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-   
-         http://www.apache.org/licenses/LICENSE-2.0
-   
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
-   
--->
-<!--
-  @author Stephane Bailliez <a href="mailto:sbailliez@apache.org"/>
-  -->
-<xsl:param name="output.dir" select="'.'"/>
-
-<!-- default max value for the metrics -->
-<xsl:param name="vg.max" select="10"/>
-<xsl:param name="loc.max" select="1000"/>
-<xsl:param name="dit.max" select="10"/>
-<xsl:param name="noa.max" select="250"/>
-<xsl:param name="nrm.max" select="50"/>
-<xsl:param name="nlm.max" select="250"/>
-<xsl:param name="wmc.max" select="250"/>
-<xsl:param name="rfc.max" select="50"/>
-<xsl:param name="dac.max" select="10"/>
-<xsl:param name="fanout.max" select="10"/>
-<xsl:param name="cbo.max" select="15"/>
-<xsl:param name="lcom.max" select="10"/>
-<xsl:param name="nocl.max" select="10"/>
-
-
-<!-- create a tree fragment to speed up processing -->
-<xsl:variable name="doctree.var">
-  <xsl:element name="classes">
-    <xsl:for-each select=".//class">
-      <xsl:element name="class">
-        <xsl:attribute name="package">
-          <xsl:value-of select="(ancestor::package)[last()]/@name"/>
-        </xsl:attribute>
-        <xsl:copy-of select="@*"/>
-        <xsl:attribute name="name">
-          <xsl:apply-templates select="." mode="class.name"/>
-        </xsl:attribute>
-        <xsl:copy-of select="method"/>
-      </xsl:element>
-    </xsl:for-each>
-  </xsl:element>
-</xsl:variable>
-
-<xsl:variable name="doctree" select="xalan:nodeset($doctree.var)"/>
-
-<xsl:template match="metrics">
-
-  <!-- create the index.html -->
-  <redirect:write file="{$output.dir}/index.html">
-    <xsl:call-template name="index.html"/>
-  </redirect:write>
-
-  <!-- create the stylesheet.css -->
-  <redirect:write file="{$output.dir}/stylesheet.css">
-    <xsl:call-template name="stylesheet.css"/>
-  </redirect:write>
-
-  <redirect:write file="{$output.dir}/metrics-reference.html">
-    <xsl:call-template name="metrics-reference.html"/>
-  </redirect:write>
-
-  <!-- create the overview-packages.html at the root -->
-  <redirect:write file="{$output.dir}/overview-summary.html">
-    <xsl:apply-templates select="." mode="overview.packages"/>
-  </redirect:write>
-
-  <!-- create the all-packages.html at the root -->
-  <redirect:write file="{$output.dir}/overview-frame.html">
-    <xsl:apply-templates select="." mode="all.packages"/>
-  </redirect:write>
-
-  <!-- create the all-classes.html at the root -->
-  <redirect:write file="{$output.dir}/allclasses-frame.html">
-    <xsl:apply-templates select="." mode="all.classes"/>
-  </redirect:write>
-
-  <!-- process all packages -->
-  <xsl:apply-templates select=".//package"/>
-</xsl:template>
-
-
-<xsl:template match="package">
-  <xsl:variable name="package.name" select="@name"/>
-  <xsl:variable name="package.dir">
-    <xsl:if test="not($package.name = 'unnamed package')"><xsl:value-of select="translate($package.name,'.','/')"/></xsl:if>
-    <xsl:if test="$package.name = 'unnamed package'">.</xsl:if>
-  </xsl:variable>
-  <!-- create a classes-list.html in the package directory -->
-  <redirect:write file="{$output.dir}/{$package.dir}/package-frame.html">
-    <xsl:apply-templates select="." mode="classes.list"/>
-  </redirect:write>
-
-  <!-- create a package-summary.html in the package directory -->
-  <redirect:write file="{$output.dir}/{$package.dir}/package-summary.html">
-    <xsl:apply-templates select="." mode="package.summary"/>
-  </redirect:write>
-
-  <!-- for each class, creates a @name.html -->
-  <!-- @bug there will be a problem with inner classes having the same name, it will be overwritten -->
-  <xsl:for-each select="$doctree/classes/class[@package = current()/@name]">
-      <!--Processing <xsl:value-of select="$class.name"/><xsl:text>&#10;</xsl:text> -->
-    <redirect:write file="{$output.dir}/{$package.dir}/{@name}.html">
-      <xsl:apply-templates select="." mode="class.details"/>
-    </redirect:write>
-  </xsl:for-each>
-</xsl:template>
-
-<!-- little trick to compute the classname for inner and non inner classes -->
-<!-- this is all in one line to avoid CRLF in the name -->
-<xsl:template match="class" mode="class.name">
-    <xsl:if test="parent::class"><xsl:apply-templates select="parent::class" mode="class.name"/>.<xsl:value-of select="@name"/></xsl:if><xsl:if test="not(parent::class)"><xsl:value-of select="@name"/></xsl:if>
-</xsl:template>
-
-
-<xsl:template name="index.html">
-<HTML>
-  <HEAD><TITLE>Metrics Results.</TITLE></HEAD>
-  <FRAMESET cols="20%,80%">
-    <FRAMESET rows="30%,70%">
-      <FRAME src="overview-frame.html" name="packageListFrame"/>
-      <FRAME src="allclasses-frame.html" name="classListFrame"/>
-    </FRAMESET>
-    <FRAME src="overview-summary.html" name="classFrame"/>
-  </FRAMESET>
-  <noframes>
-    <H2>Frame Alert</H2>
-    <P>
-    This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
-    </P>
-  </noframes>
-</HTML>
-</xsl:template>
-
-<!-- this is the stylesheet css to use for nearly everything -->
-<xsl:template name="metrics-reference.html">
-<html>
-<head>
-<link title="Style" type="text/css" rel="stylesheet" href="stylesheet.css"/>
-</head>
-<body style="text-align:justify;">
-<h2>Metrics Reference</h2>
-<a href="#V(G)">V(G)</a> |
-<a href="#LOC">LOC</a> |
-<a href="#DIT">DIT</a> |
-<a href="#NOA">NOA</a> |
-<a href="#NRM">NRM</a> |
-<a href="#NLM">NLM</a> |
-<a href="#WMC">WMC</a> |
-<a href="#RFC">RFC</a> |
-<a href="#DAC">DAC</a> |
-<a href="#FANOUT">FANOUT</a> |
-<a href="#CBO">CBO</a> |
-<a href="#LCOM">LCOM</a> |
-<a href="#NOC">NOC</a>
-
-<a name="V(G)"/>
-<h3>Cyclomatic Complexity - V(G)</h3>
-This metric was introduced in the 1970s to measure the amount of control
-flow complexity or branching complexity in a module such as a
-subroutine. It gives the number of paths that may be taken through the
-code, and was initially developed to give some measure of the cost of
-producing a test case for the module by executing each path.
-<p/>
-Methods with a high cyclomatic complexity tend to be more difficult to
-understand and maintain. In general the more complex the methods of an
-application, the more difficult it will be to test it, and this will adversely
-affect its reliability.
-<p/>
-V(G) is a measure of the control flow complexity of a method or
-constructor.  It counts the number of branches in the body of the method,
-defined as:
-<ul>
-<li>while statements;</li>
-<li>if statements;</li>
-<li>for statements.</li>
-</ul>
-
-The metric can also be configured to count each case of a switch
-statement as well.
-
-<a name="LOC"/>
-<h3>Lines of Code - LOC</h3>
-
-This is perhaps the simplest of all the metrics to define and compute.
-Counting lines has a long history as a software metric dating from before
-the rise of structured programming, and it is still in widespread use today.
-The size of a method affects the ease with which it can be understood, its
-reusability and its maintainability. There are a variety of ways that the size
-can be calculated. These include counting all the lines of code, the number
-of statements, the blank lines of code, the lines of commentary, and the
-lines consisting only of syntax such as block delimiters.
-<p/>
-This metric can also be used for sizing other constructs as well, for
-example, the overall size of a Java class or package can be measured by
-counting the number of source lines it consists of.
-<p/>
-LOC can be used to determine the size of a compilation unit (source file),
-class or interface, method, constructor, or field.  It can be configured to
-ignore:
-<ul>
-<li>blank lines;</li>
-<li>lines consisting only of comments;</li>
-<li>lines consisting only of opening and closing braces.</li>
-</ul>
-
-<a name="DIT"/>
-<h3>Depth of Inheritance Hierarchy - DIT</h3>
-
-This metric calculates how far down the inheritance hierarchy a class is
-declared. In Java all classes have java.lang.Object as their ultimate
-superclass, which is defined to have a depth of 1. So a class that
-immediately extends java.lang.Object has a metric value of 2; any of its
-subclasses will have a value of 3, and so on.
-<p/>
-A class that is deep within the tree inherits more methods and state
-variables, thereby increasing its complexity and making it difficult to
-predict its behavior. It can be harder to understand a system with many
-inheritance layers.
-<p/>
-DIT is defined for classes and interfaces:
-<ul>
-<li>all interface types have a depth of 1;</li>
-<li>the class java.lang.Object has a depth of 1;</li>
-<li>all other classes have a depth of 1 + the depth of their super class.</li>
-</ul>
-
-<a name="NOA"/>
-<h3>Number of Attributes - NOA</h3>
-
-The number of distinct state variables in a class serves as one measure of
-its complexity. The more state a class represents the more difficult it is to
-maintain invariants for it. It also hinders comprehensibility and reuse.
-<p/>
-In Java, state can be exposed to subclasses through protected fields, which
-entails that the subclass also be aware of and maintain any invariants. This
-interference with the class's data encapsulation can be a source of defects
-and hidden dependencies between the state variables.
-<p/>
-NOA is defined for classes and interfaces.  It counts the number of fields
-declared in the class or interface.
-
-<a name="NRM"/>
-<h3>Number of Remote Methods - NRM</h3>
-
-NRM is defined for classes.  A remote method call is defined as an
-invocation of a method that is not declared in any of:
-<ul>
-<li>the class itself;</li>
-<li>a class or interface that the class extends or implements;</li>
-<li>a class or method that extends the class.</li>
-</ul>
-
-The value is the count of all the remote method calls in all of the methods
-and constructors of the class.
-
-<a name="NLM"/>
-<h3>Number of Local Methods - NLM</h3>
-
-NLM is defined for classes and interfaces.  A local method is defined as a
-method that is declared in the class or interface. NLM can be configured to
-include the local methods of all of the class's superclasses.  Methods with
-public, protected, package and private visibility can be independently
-counted by setting configuration parameters.
-
-<a name="WMC"/>
-<h3>Weighted Methods per Class - WMC</h3>
-
-If the number of methods in a class can be determined during the design
-and modeling phase of a project, it can be used as a predictor of how
-much time and effort is needed to develop, debug and maintain it. This
-metric can be further refined by incorporating a weighting for the
-complexity of each method. The usual weighting is given by the cyclomatic
-complexity of the method.
-<p/>
-The subclasses of a class inherit all of its public and protected methods,
-and possibly its package methods as well, so the number of methods a
-class has directly impacts the complexity of its subclasses. Classes with
-large numbers of methods are often specific to a particular application,
-reducing the ability to reuse them.
-<p/>
-The definition of WMC is based upon NLM, and it provides the same
-configuration parameters for counting inherited methods and of varying
-visibility. The main difference is that NLM always counts each method as 1,
-whereas WMC will weight each method. There are two weighting schemes:
-<ul>
-<li>V(G) the cyclomatic complexity of the method is used as its weight.
-   Methods from class files are given a V(G) of 1.</li>
-<li>the arity, or the number of parameters of the method are used to
-   determine the weight.</li>
-</ul>
-
-<a name="RFC"/>
-<h3>Response For Class - RFC</h3>
-
-The response set of a class is the set of all methods that can be invoked as
-a result of a message sent to an object of the class. This includes methods
-in the class's inheritance hierarchy and methods that can be invoked on
-other objects. The Response For Class metric is defined to be size of the
-response set for the class. A class which provides a larger response set is
-considered to be more complex than one with a smaller response set.
-<p/>
-One reason for this is that if a method call on a class can result in a large
-number of different method calls on the target and other classes, then it
-can be harder to test the behavior of the class and debug problems. It will
-typically require a deeper understanding of the potential interactions that
-objects of the class can have with the rest of the system.
-<p/>
-RFC is defined as the sum of NLM and NRM for the class.  The local methods
-include all of the public, protected, package and private methods, but not
-methods declared only in a superclass.
-
-<a name="DAC"/>
-<h3>Data Abstraction Coupling - DAC</h3>
-
-DAC is defined for classes and interfaces.  It counts the number of reference
-types that are used in the field declarations of the class or interface.  The
-component types of arrays are also counted.  Any field with a type that is
-either a supertype or a subtype of the class is not counted.
-
-<a name="FANOUT"/>
-<h3>Fan Out - FANOUT</h3>
-
-FANOUT is defined for classes and interfaces, constructors and methods. It
-counts the number of reference types that are used in:
-<ul>
-<li>field declarations;</li>
-<li>formal parameters and return types;</li>
-<li>throws declarations;</li>
-<li>local variables.</li>
-</ul>
-
-The component types of arrays are also counted. Any type that is either a
-supertype or a subtype of the class is not counted.
-
-<a name="CBO"/>
-<h3>Coupling Between Objects - CBO</h3>
-
-When one object or class uses another object or class they are said to be
-coupled. One major source of coupling is that between a superclass and a
-subclass. A coupling is also introduced when a method or field in another
-class is accessed, or when an object of another class is passed into or out
-of a method invocation. Coupling Between Objects is a measure of the
-non-inheritance coupling between two objects.
-<p/>
-A high value of coupling reduces the modularity of the class and makes
-reuse more difficult. The more independent a class is the more likely it is
-that it will be possible to reuse it in another part of the system. When a
-class is coupled to another class it becomes sensitive to changes in that
-class, thereby making maintenance for difficult. In addition, a class that is
-overly dependent on other classes can be difficult to understand and test in
-isolation.
-<p/>
-CBO is defined for classes and interfaces, constructors and methods. It
-counts the number of reference types that are used in:
-<ul>
-<li>field declarations</li>
-<li>formal parameters and return types</li>
-<li>throws declarations</li>
-<li>local variables</li>
-</ul>
-
-It also counts:
-<ul>
-<li>types from which field and method selections are made</li>
-</ul>
-
-The component types of arrays are also counted. Any type that is either a
-supertype or a subtype of the class is not counted.
-
-<a name="LCOM"/>
-<h3>Lack of Cohesion Of Methods - LCOM</h3>
-
-The cohesion of a class is the degree to which its methods are related to
-each other. It is determined by examining the pattern of state variable
-accesses within the set of methods. If all the methods access the same state
-variables then they have high cohesion; if they access disjoint sets of
-variables then the cohesion is low. An extreme example of low cohesion
-would be if none of the methods accessed any of the state variables.
-
-If a class exhibits low method cohesion it indicates that the design of the
-class has probably been partitioned incorrectly, and could benefit by being
-split into more classes with individually higher cohesion. On the other
-hand, a high value of cohesion (a low lack of cohesion) implies that the
-class is well designed. A cohesive class will tend to provide a high degree
-of encapsulation, whereas a lack of cohesion decreases encapsulation and
-increases complexity.
-<p/>
-Another form of cohesion that is useful for Java programs is cohesion
-between nested and enclosing classes. A nested class that has very low
-cohesion with its enclosing class would probably better designed as a peer
-class rather than a nested class.
-<p/>
-LCOM is defined for classes. Operationally, LCOM takes each pair of
-methods in the class and determines the set of fields they each access. If
-they have disjoint sets of field accesses increase the count P by one. If they
-share at least one field access then increase Q by one. After considering
-each pair of methods,
-LCOM = (P > Q) ? (P - Q) : 0
-<p/>
-Indirect access to fields via local methods can be considered by setting a
-metric configuration parameter.
-
-<a name="NOC"/>
-<h3>Number Of Classes - NOC</h3>
-
-The overall size of the system can be estimated by calculating the number
-of classes it contains. A large system with more classes is more complex
-than a smaller one because the number of potential interactions between
-objects is higher. This reduces the comprehensibility of the system which
-in turn makes it harder to test, debug and maintain.
-<p/>
-If the number of classes in the system can be projected during the initial
-design phase of the project it can serve as a base for estimating the total
-effort and cost of developing, debugging and maintaining the system.
-<p/>
-The NOC metric can also usefully be applied at the package and class level
-as well as the total system.
-<p/>
-NOCL is defined for class and interfaces. It counts the number of classes or
-interfaces that are declared. This is usually 1, but nested class declarations
-will increase this number.
-</body>
-</html>
-</xsl:template>
-
-<!-- this is the stylesheet css to use for nearly everything -->
-<xsl:template name="stylesheet.css">
-    .bannercell {
-      border: 0px;
-      padding: 0px;
-    }
-    body {
-      margin-left: 10;
-      margin-right: 10;
-      font:normal 80% arial,helvetica,sanserif;
-      background-color:#FFFFFF;
-      color:#000000;
-    }
-    .a td {
-      background: #efefef;
-    }
-    .b td {
-      background: #fff;
-    }
-    th, td {
-      text-align: left;
-      vertical-align: top;
-    }
-    th {
-      font-weight:bold;
-      background: #ccc;
-      color: black;
-    }
-    table, th, td {
-      font-size:100%;
-      border: none
-    }
-    table.log tr td, tr th {
-
-    }
-    h2 {
-      font-weight:bold;
-      font-size:140%;
-      margin-bottom: 5;
-    }
-    h3 {
-      font-size:100%;
-      font-weight:bold;
-      background: #525D76;
-      color: white;
-      text-decoration: none;
-      padding: 5px;
-      margin-right: 2px;
-      margin-left: 2px;
-      margin-bottom: 0;
-    }
-    .Error {
-      font-weight:bold; color:red;
-    }
-
-</xsl:template>
-
-<!-- print the metrics of the class -->
-<xsl:template match="class" mode="class.details">
-  <!--xsl:variable name="package.name" select="(ancestor::package)[last()]/@name"/-->
-  <xsl:variable name="package.name" select="@package"/>
-  <HTML>
-    <HEAD>
-      <xsl:call-template name="create.stylesheet.link">
-        <xsl:with-param name="package.name" select="$package.name"/>
-      </xsl:call-template>
-    </HEAD>
-    <BODY>
-      <xsl:call-template name="pageHeader"/>
-
-      <H3>Class <xsl:if test="not($package.name = 'unnamed package')"><xsl:value-of select="$package.name"/>.</xsl:if><xsl:value-of select="@name"/></H3>
-      <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
-        <xsl:call-template name="all.metrics.header"/>
-        <xsl:apply-templates select="." mode="print.metrics"/>
-      </table>
-
-      <H3>Methods</H3>
-      <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
-        <xsl:call-template name="method.metrics.header"/>
-        <xsl:apply-templates select="method" mode="print.metrics"/>
-      </table>
-
-      <xsl:call-template name="pageFooter"/>
-    </BODY>
-  </HTML>
-</xsl:template>
-
-
-<!-- list of classes in a package -->
-<xsl:template match="package" mode="classes.list">
-  <HTML>
-    <HEAD>
-      <xsl:call-template name="create.stylesheet.link">
-        <xsl:with-param name="package.name" select="@name"/>
-      </xsl:call-template>
-    </HEAD>
-    <BODY>
-      <table width="100%">
-        <tr>
-          <td nowrap="nowrap">
-            <H2><a href="package-summary.html" target="classFrame"><xsl:value-of select="@name"/></a></H2>
-          </td>
-        </tr>
-      </table>
-
-      <H2>Classes</H2>
-      <TABLE WIDTH="100%">
-        <!-- xalan-nodeset:nodeset for Xalan 1.2.2 -->
-            <xsl:for-each select="$doctree/classes/class[@package = current()/@name]">
-                <xsl:sort select="@name"/>
-          <tr>
-            <td nowrap="nowrap">
-              <a href="{@name}.html" target="classFrame"><xsl:value-of select="@name"/></a>
-            </td>
-          </tr>
-            </xsl:for-each>
-      </TABLE>
-    </BODY>
-  </HTML>
-</xsl:template>
-
-
-<!--
-  Creates an all-classes.html file that contains a link to all package-summary.html
-  on each class.
--->
-<xsl:template match="metrics" mode="all.classes">
-  <html>
-    <head>
-      <xsl:call-template name="create.stylesheet.link">
-        <xsl:with-param name="package.name" select="''"/>
-      </xsl:call-template>
-    </head>
-    <body>
-      <h2>Classes</h2>
-      <table width="100%">
-          <xsl:for-each select="$doctree/classes/class">
-              <xsl:sort select="@name"/>
-              <xsl:apply-templates select="." mode="all.classes"/>
-          </xsl:for-each>
-      </table>
-    </body>
-  </html>
-</xsl:template>
-
-<xsl:template match="class" mode="all.classes">
-    <xsl:variable name="package.name" select="@package"/>
-    <xsl:variable name="class.name" select="@name"/>
-  <tr>
-    <td nowrap="nowrap">
-      <a target="classFrame">
-        <xsl:attribute name="href">
-          <xsl:if test="not($package.name='unnamed package')">
-            <xsl:value-of select="translate($package.name,'.','/')"/><xsl:text>/</xsl:text>
-          </xsl:if>
-          <xsl:value-of select="$class.name"/><xsl:text>.html</xsl:text>
-        </xsl:attribute>
-        <xsl:value-of select="$class.name"/>
-      </a>
-    </td>
-  </tr>
-</xsl:template>
-
-<!--
-  Creates an html file that contains a link to all package-summary.html files on
-  each package existing on testsuites.
-  @bug there will be a problem here, I don't know yet how to handle unnamed package :(
--->
-<xsl:template match="metrics" mode="all.packages">
-  <html>
-    <head>
-      <xsl:call-template name="create.stylesheet.link">
-        <xsl:with-param name="package.name" select="./package/@name"/>
-      </xsl:call-template>
-    </head>
-    <body>
-      <h2><a href="overview-summary.html" target="classFrame">Home</a></h2>
-      <h2>Packages</h2>
-        <table width="100%">
-          <xsl:apply-templates select=".//package[not(./@name = 'unnamed package')]" mode="all.packages">
-            <xsl:sort select="@name"/>
-          </xsl:apply-templates>
-        </table>
-    </body>
-  </html>
-</xsl:template>
-
-<xsl:template match="package" mode="all.packages">
-  <tr>
-    <td nowrap="nowrap">
-      <a href="{translate(@name,'.','/')}/package-summary.html" target="classFrame">
-        <xsl:value-of select="@name"/>
-      </a>
-    </td>
-  </tr>
-</xsl:template>
-
-
-<xsl:template match="metrics" mode="overview.packages">
-  <html>
-    <head>
-      <xsl:call-template name="create.stylesheet.link">
-        <xsl:with-param name="package.name" select="''"/>
-      </xsl:call-template>
-    </head>
-    <body onload="open('allclasses-frame.html','classListFrame')">
-    <xsl:call-template name="pageHeader"/>
-    <h3>Summary</h3>
-    <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
-    <tr>
-      <th><a href="metrics-reference.html#V(G)">V(G)</a></th>
-      <th><a href="metrics-reference.html#LOC">LOC</a></th>
-      <th><a href="metrics-reference.html#DIT">DIT</a></th>
-      <th><a href="metrics-reference.html#NOA">NOA</a></th>
-      <th><a href="metrics-reference.html#NRM">NRM</a></th>
-      <th><a href="metrics-reference.html#NLM">NLM</a></th>
-      <th><a href="metrics-reference.html#WMC">WMC</a></th>
-      <th><a href="metrics-reference.html#RFC">RFC</a></th>
-      <th><a href="metrics-reference.html#DAC">DAC</a></th>
-      <th><a href="metrics-reference.html#FANOUT">FANOUT</a></th>
-      <th><a href="metrics-reference.html#CBO">CBO</a></th>
-      <th><a href="metrics-reference.html#LCOM">LCOM</a></th>
-      <th><a href="metrics-reference.html#NOCL">NOCL</a></th>
-    </tr>
-    <xsl:apply-templates select="." mode="print.metrics"/>
-    </table>
-    <table border="0" width="100%">
-    <tr>
-    <td style="text-align: justify;">
-    Note: Metrics evaluate the quality of software by analyzing the program source and quantifying
-    various kind of complexity. Complexity is a common source of problems and defects in software.
-    High complexity makes it more difficult to develop, understand, maintain, extend, test and debug
-    a program.
-    <p/>
-    The primary use of metrics is to focus your attention on those parts of code that potentially are
-    complexity hot spots. Once the complex areas your program have been uncovered, you can take remedial
-    actions.
-    For additional information about metrics and their meaning, please consult
-    Metamata Metrics manual.
-    </td>
-    </tr>
-    </table>
-
-    <h3>Packages</h3>
-    <table border="0" cellpadding="5" cellspacing="2" width="100%">
-      <xsl:call-template name="all.metrics.header"/>
-      <xsl:for-each select=".//package[not(@name = 'unnamed package')]">
-        <xsl:sort select="@name" order="ascending"/>
-        <xsl:apply-templates select="." mode="print.metrics"/>
-      </xsl:for-each>
-    </table>
-    <!-- @bug there could some classes at this level (classes in unnamed package) -->
-    <xsl:call-template name="pageFooter"/>
-    </body>
-    </html>
-</xsl:template>
-
-<xsl:template match="package" mode="package.summary">
-  <HTML>
-    <HEAD>
-      <xsl:call-template name="create.stylesheet.link">
-        <xsl:with-param name="package.name" select="@name"/>
-      </xsl:call-template>
-    </HEAD>
-    <body onload="open('package-frame.html','classListFrame')">
-      <xsl:call-template name="pageHeader"/>
-      <!-- create an anchor to this package name -->
-      <h3>Package <xsl:value-of select="@name"/></h3>
-
-      <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
-        <xsl:call-template name="all.metrics.header"/>
-        <xsl:apply-templates select="." mode="print.metrics"/>
-      </table>
-
-      <table border="0" width="100%">
-      <tr>
-      <td style="text-align: justify;">
-      Note: Metrics evaluate the quality of software by analyzing the program source and quantifying
-      various kind of complexity. Complexity is a common source of problems and defects in software.
-      High complexity makes it more difficult to develop, understand, maintain, extend, test and debug
-      a program.
-      <p/>
-      The primary use of metrics is to focus your attention on those parts of code that potentially are
-      complexity hot spots. Once the complex areas your program have been uncovered, you can take remedial
-      actions.
-      For additional information about metrics and their meaning, please consult
-      Metamata Metrics manual.
-      </td>
-      </tr>
-      </table>
-
-      <xsl:variable name="classes-in-package" select="$doctree/classes/class[@package = current()/@name]"/>
-      <xsl:if test="count($classes-in-package) &gt; 0">
-        <H3>Classes</H3>
-        <table class="log" border="0" cellpadding="5" cellspacing="2" width="100%">
-          <xsl:call-template name="all.metrics.header"/>
-          <xsl:for-each select="$classes-in-package">
-                <xsl:sort select="@name"/>
-                <xsl:apply-templates select="." mode="print.metrics"/>
-          </xsl:for-each>
-        </table>
-      </xsl:if>
-
-      <xsl:call-template name="pageFooter"/>
-    </body>
-  </HTML>
-</xsl:template>
-
-
-<!--
-    transform string like a.b.c to ../../../
-    @param path the path to transform into a descending directory path
--->
-<xsl:template name="path">
-  <xsl:param name="path"/>
-  <xsl:if test="contains($path,'.')">
-    <xsl:text>../</xsl:text>
-    <xsl:call-template name="path">
-      <xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
-    </xsl:call-template>
-  </xsl:if>
-  <xsl:if test="not(contains($path,'.')) and not($path = '')">
-    <xsl:text>../</xsl:text>
-  </xsl:if>
-</xsl:template>
-
-
-<!-- create the link to the stylesheet based on the package name -->
-<xsl:template name="create.stylesheet.link">
-  <xsl:param name="package.name"/>
-  <LINK REL ="stylesheet" TYPE="text/css" TITLE="Style"><xsl:attribute name="href"><xsl:if test="not($package.name = 'unnamed package')"><xsl:call-template name="path"><xsl:with-param name="path" select="$package.name"/></xsl:call-template></xsl:if>stylesheet.css</xsl:attribute></LINK>
-</xsl:template>
-
-
-<!-- Page Header -->
-<xsl:template name="pageHeader">
-
-  <!-- jakarta logo -->
-  <table border="0" cellpadding="0" cellspacing="0" width="100%">
-  <tr>
-    <td class="bannercell" rowspan="2">
-      <a href="http://jakarta.apache.org/">
-      <img src="http://jakarta.apache.org/images/jakarta-logo.gif" alt="http://jakarta.apache.org" align="left" border="0"/>
-      </a>
-    </td>
-    <td style="text-align:right"><h2>Source Code Metrics</h2></td>
-    </tr>
-    <tr>
-    <td style="text-align:right">Designed for use with <a href='http://www.webgain.com/products/quality_analyzer/'>Webgain QA/Metamata Metrics</a> and <a href='http://jakarta.apache.org'>Ant</a>.</td>
-    </tr>
-  </table>
-  <hr size="1"/>
-</xsl:template>
-
-<!-- Page Footer -->
-<xsl:template name="pageFooter">
-    <table width="100%">
-      <tr><td><hr noshade="yes" size="1"/></td></tr>
-      <tr><td>
-      <div align="center"><font color="#525D76" size="-1"><em>
-      Copyright &#169; 1999-2001, Apache Software Foundation
-      </em></font></div>
-      </td></tr>
-    </table>
-</xsl:template>
-
-<!-- class header -->
-<xsl:template name="all.metrics.header">
-  <tr>
-    <th width="80%">Name</th>
-    <th nowrap="nowrap">V(G)</th>
-    <th>LOC</th>
-    <th>DIT</th>
-    <th>NOA</th>
-    <th>NRM</th>
-    <th>NLM</th>
-    <th>WMC</th>
-    <th>RFC</th>
-    <th>DAC</th>
-    <th>FANOUT</th>
-    <th>CBO</th>
-    <th>LCOM</th>
-    <th>NOCL</th>
-  </tr>
-</xsl:template>
-
-<!-- method header -->
-<xsl:template name="method.metrics.header">
-  <tr>
-    <th width="80%">Name</th>
-    <th nowrap="nowrap">V(G)</th>
-    <th>LOC</th>
-    <th>FANOUT</th>
-    <th>CBO</th>
-  </tr>
-</xsl:template>
-
-<!-- method information -->
-<xsl:template match="method" mode="print.metrics">
-  <tr>
-    <xsl:call-template name="alternate-row"/>
-    <td><xsl:apply-templates select="@name"/></td>
-    <td><xsl:apply-templates select="@vg"/></td>
-    <td><xsl:apply-templates select="@loc"/></td>
-    <td><xsl:apply-templates select="@fanout"/></td>
-    <td><xsl:apply-templates select="@cbo"/></td>
-  </tr>
-</xsl:template>
-
-<!-- class information -->
-<xsl:template match="class" mode="print.metrics">
-  <tr>
-    <xsl:call-template name="alternate-row"/>
-    <td><a href="{@name}.html"><xsl:value-of select="@name"/></a></td>
-    <td><xsl:apply-templates select="@vg"/></td>
-    <td><xsl:apply-templates select="@loc"/></td>
-    <td><xsl:apply-templates select="@dit"/></td>
-    <td><xsl:apply-templates select="@noa"/></td>
-    <td><xsl:apply-templates select="@nrm"/></td>
-    <td><xsl:apply-templates select="@nlm"/></td>
-    <td><xsl:apply-templates select="@wmc"/></td>
-    <td><xsl:apply-templates select="@rfc"/></td>
-    <td><xsl:apply-templates select="@dac"/></td>
-    <td><xsl:apply-templates select="@fanout"/></td>
-    <td><xsl:apply-templates select="@cbo"/></td>
-    <td><xsl:apply-templates select="@lcom"/></td>
-    <td><xsl:apply-templates select="@nocl"/></td>
-  </tr>
-</xsl:template>
-
-<xsl:template match="file|package" mode="print.metrics">
-  <tr>
-    <xsl:call-template name="alternate-row"/>
-    <td>
-    <a href="{translate(@name,'.','/')}/package-summary.html" target="classFrame">
-    <xsl:value-of select="@name"/>
-    </a>
-    </td>
-    <td><xsl:apply-templates select="@vg"/></td>
-    <td><xsl:apply-templates select="@loc"/></td>
-    <td><xsl:apply-templates select="@dit"/></td>
-    <td><xsl:apply-templates select="@noa"/></td>
-    <td><xsl:apply-templates select="@nrm"/></td>
-    <td><xsl:apply-templates select="@nlm"/></td>
-    <td><xsl:apply-templates select="@wmc"/></td>
-    <td><xsl:apply-templates select="@rfc"/></td>
-    <td><xsl:apply-templates select="@dac"/></td>
-    <td><xsl:apply-templates select="@fanout"/></td>
-    <td><xsl:apply-templates select="@cbo"/></td>
-    <td><xsl:apply-templates select="@lcom"/></td>
-    <td><xsl:apply-templates select="@nocl"/></td>
-  </tr>
-</xsl:template>
-
-<xsl:template match="metrics" mode="print.metrics">
-  <tr>
-    <xsl:call-template name="alternate-row"/>
-      <!-- the global metrics is the top package metrics -->
-    <td><xsl:apply-templates select="./package/@vg"/></td>
-    <td><xsl:apply-templates select="./package/@loc"/></td>
-    <td><xsl:apply-templates select="./package/@dit"/></td>
-    <td><xsl:apply-templates select="./package/@noa"/></td>
-    <td><xsl:apply-templates select="./package/@nrm"/></td>
-    <td><xsl:apply-templates select="./package/@nlm"/></td>
-    <td><xsl:apply-templates select="./package/@wmc"/></td>
-    <td><xsl:apply-templates select="./package/@rfc"/></td>
-    <td><xsl:apply-templates select="./package/@dac"/></td>
-    <td><xsl:apply-templates select="./package/@fanout"/></td>
-    <td><xsl:apply-templates select="./package/@cbo"/></td>
-    <td><xsl:apply-templates select="./package/@lcom"/></td>
-    <td><xsl:apply-templates select="./package/@nocl"/></td>
-  </tr>
-</xsl:template>
-
-<!-- alternated row style -->
-<xsl:template name="alternate-row">
-<xsl:attribute name="class">
-  <xsl:if test="position() mod 2 = 1">a</xsl:if>
-  <xsl:if test="position() mod 2 = 0">b</xsl:if>
-</xsl:attribute>
-</xsl:template>
-
-
-<!-- how to display the metrics with their max value -->
-<!-- @todo the max values must be external to the xsl -->
-
-  <xsl:template match="@vg">
-    <xsl:call-template name="display-value">
-      <xsl:with-param name="value" select="current()"/>
-      <xsl:with-param name="max" select="$vg.max"/>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="@loc">
-    <xsl:call-template name="display-value">
-      <xsl:with-param name="value" select="current()"/>
-      <xsl:with-param name="max" select="$loc.max"/>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="@dit">
-    <xsl:call-template name="display-value">
-      <xsl:with-param name="value" select="current()"/>
-      <xsl:with-param name="max" select="$dit.max"/>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="@noa">
-    <xsl:call-template name="display-value">
-      <xsl:with-param name="value" select="current()"/>
-      <xsl:with-param name="max" select="$noa.max"/>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="@nrm">
-    <xsl:call-template name="display-value">
-      <xsl:with-param name="value" select="current()"/>
-      <xsl:with-param name="max" select="$nrm.max"/>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="@nlm">
-    <xsl:call-template name="display-value">
-      <xsl:with-param name="value" select="current()"/>
-      <xsl:with-param name="max" select="$nlm.max"/>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="@wmc">
-    <xsl:call-template name="display-value">
-      <xsl:with-param name="value" select="current()"/>
-      <xsl:with-param name="max" select="$wmc.max"/>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="@rfc">
-    <xsl:call-template name="display-value">
-      <xsl:with-param name="value" select="current()"/>
-      <xsl:with-param name="max" select="$rfc.max"/>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="@dac">
-    <xsl:call-template name="display-value">
-      <xsl:with-param name="value" select="current()"/>
-      <xsl:with-param name="max" select="$dac.max"/>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="@fanout">
-    <xsl:call-template name="display-value">
-      <xsl:with-param name="value" select="current()"/>
-      <xsl:with-param name="max" select="$fanout.max"/>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="@cbo">
-    <xsl:call-template name="display-value">
-      <xsl:with-param name="value" select="current()"/>
-      <xsl:with-param name="max" select="$cbo.max"/>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="@lcom">
-    <xsl:call-template name="display-value">
-      <xsl:with-param name="value" select="current()"/>
-      <xsl:with-param name="max" select="$lcom.max"/>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="@nocl">
-    <xsl:call-template name="display-value">
-      <xsl:with-param name="value" select="current()"/>
-      <xsl:with-param name="max" select="$nocl.max"/>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template name="display-value">
-    <xsl:param name="value"/>
-    <xsl:param name="max"/>
-    <xsl:if test="$value > $max">
-      <xsl:attribute name="class">Error</xsl:attribute>
-    </xsl:if>
-    <xsl:value-of select="$value"/>
-  </xsl:template>
-
-</xsl:stylesheet>
-
diff --git a/dependencies/plugins/org.apache.ant/etc/tagdiff.xsl b/dependencies/plugins/org.apache.ant/etc/tagdiff.xsl
deleted file mode 100755
index 12a1e6f..0000000
--- a/dependencies/plugins/org.apache.ant/etc/tagdiff.xsl
+++ /dev/null
@@ -1,177 +0,0 @@
-<!--
-    Copyright  2004 The Apache Software Foundation
-   
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-   
-         http://www.apache.org/licenses/LICENSE-2.0
-   
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
-   
--->
-<!-- a stylesheet to display changelogs ala netbeans -->
-<xsl:stylesheet
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    version="1.0">
-  <xsl:param name="title"/>
-  <xsl:param name="module"/>
-  <xsl:param name="cvsweb"/>
-
-  <xsl:output method="html" indent="yes"/>
-
-  <!-- Copy standard document elements.  Elements that
-       should be ignored must be filtered by apply-templates
-       tags. -->
-  <xsl:template match="*">
-    <xsl:copy>
-      <xsl:copy-of select="attribute::*[. != '']"/>
-      <xsl:apply-templates/>
-    </xsl:copy>
-  </xsl:template>
-
-  <xsl:template match="tagdiff">
-    <HTML>
-      <HEAD>
-        <TITLE><xsl:value-of select="$title"/></TITLE>
-      </HEAD>
-      <BODY link="#000000" alink="#000000" vlink="#000000" text="#000000">
-        <style type="text/css">
-          body, p {
-          font-family: verdana,arial,helvetica;
-          font-size: 80%;
-          color:#000000;
-          }
-	  .dateAndAuthor {
-          font-family: verdana,arial,helvetica;
-          font-size: 80%;
-          font-weight: bold;
-          text-align:left;
-          background:#a6caf0;
-	  }
-          tr, td{
-          font-family: verdana,arial,helvetica;
-          font-size: 80%;
-          background:#eeeee0;
-          }	  
-	  </style>        
-          <h1>
-            <a name="top"><xsl:value-of select="$title"/></a>
-          </h1>
-          Tagdiff between <xsl:value-of select="@startTag"/> <xsl:value-of select="@startDate"/> and
-			<xsl:value-of select="@endTag"/> <xsl:value-of select="@endDate"/>
-          <p align="right">Designed for use with <a href="http://ant.apache.org/">Ant</a>.</p>
-          <hr size="2"/>
-	<a name="TOP"/>
-	<table width="100%">
-		<tr>
-			<td align="right">
-				<a href="#New">New Files</a> |
-				<a href="#Modified">Modified Files</a> |
-				<a href="#Removed">Removed Files</a>
-			</td>
-		</tr>
-	</table>
-        <TABLE BORDER="0" WIDTH="100%" CELLPADDING="3" CELLSPACING="1">
-		<xsl:call-template name="show-entries">
-			<xsl:with-param name="title">New Files</xsl:with-param>
-			<xsl:with-param name="anchor">New</xsl:with-param>
-			<xsl:with-param name="entries" select=".//entry[file/revision][not(file/prevrevision)]"/>
-		</xsl:call-template>
-
-		<xsl:call-template name="show-entries">
-			<xsl:with-param name="title">Modified Files</xsl:with-param>
-			<xsl:with-param name="anchor">Modified</xsl:with-param>
-			<xsl:with-param name="entries" select=".//entry[file/revision][file/prevrevision]"/>
-		</xsl:call-template>
-
-		<xsl:call-template name="show-entries">
-			<xsl:with-param name="title">Removed Files</xsl:with-param>
-			<xsl:with-param name="anchor">Removed</xsl:with-param>
-			<xsl:with-param name="entries" select=".//entry[not(file/revision)][not(file/prevrevision)]"/>
-		</xsl:call-template>
-        </TABLE>
-        
-      </BODY>
-    </HTML>
-  </xsl:template>
-
-  <xsl:template name="show-entries">
-	<xsl:param name="title"/>
-	<xsl:param name="anchor"/>
-	<xsl:param name="entries"/>
-	<TR>
-		<TD colspan="2" class="dateAndAuthor">
-			<a>
-				<xsl:attribute name="name"><xsl:value-of select="$anchor"/></xsl:attribute>
-				<xsl:value-of select="$title"/> - <xsl:value-of select="count($entries)"/> entries
-			</a>
-			<a href="#TOP">(back to top)</a>
-		</TD>
-	</TR>
-	<TR>
-		<TD width="20">
-			<xsl:text>    </xsl:text>
-		</TD>
-		<TD>
-		        <ul>
-				<xsl:apply-templates select="$entries"/>
-			</ul>
-		</TD>
-	</TR>
-  </xsl:template>  
-
-  <xsl:template match="entry">
-	<xsl:apply-templates select="file"/>
-  </xsl:template>
-
-  <xsl:template match="date">
-    <i><xsl:value-of select="."/></i>
-  </xsl:template>
-
-  <xsl:template match="time">
-    <i><xsl:value-of select="."/></i>
-  </xsl:template>
-
-  <xsl:template match="author">
-    <i>
-      <a>
-        <xsl:attribute name="href">mailto:<xsl:value-of select="."/></xsl:attribute>
-        <xsl:value-of select="."/>
-      </a>
-    </i>
-  </xsl:template>
-
-  <xsl:template match="file">
-    <li>
-      <a target="_new">
-        <xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" /></xsl:attribute>
-        <xsl:value-of select="name" />
-      </a>
-      <xsl:if test="string-length(prevrevision) > 0 or string-length(revision) > 0">
-      <xsl:text> </xsl:text>
-      <a target="_new">
-        <xsl:choose>
-          <xsl:when test="string-length(prevrevision) = 0 ">
-            <xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" />?rev=<xsl:value-of select="revision" />&amp;content-type=text/x-cvsweb-markup</xsl:attribute>
-          </xsl:when>
-          <xsl:otherwise>
-            <xsl:attribute name="href"><xsl:value-of select="$cvsweb"/><xsl:value-of select="$module" />/<xsl:value-of select="name" />?r1=<xsl:value-of select="revision" />&amp;r2=<xsl:value-of select="prevrevision"/>&amp;diff_format=h</xsl:attribute>
-          </xsl:otherwise>
-        </xsl:choose> (<xsl:value-of select="revision"/>)
-      </a>
-      </xsl:if>
-    </li>
-  </xsl:template>
-
-  <!-- Any elements within a msg are processed,
-       so that we can preserve HTML tags. -->
-  <xsl:template match="msg">
-    <b><xsl:apply-templates/></b>
-  </xsl:template>
-  
-</xsl:stylesheet>
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-antlr.jar b/dependencies/plugins/org.apache.ant/lib/ant-antlr.jar
deleted file mode 100755
index 5b127f9..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-antlr.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-antlrsrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-antlrsrc.zip
deleted file mode 100755
index 98736e9..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-antlrsrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-apache-bcel.jar b/dependencies/plugins/org.apache.ant/lib/ant-apache-bcel.jar
deleted file mode 100755
index cdc5202..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-apache-bcel.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-apache-bcelsrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-apache-bcelsrc.zip
deleted file mode 100755
index d9db364..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-apache-bcelsrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-apache-bsf.jar b/dependencies/plugins/org.apache.ant/lib/ant-apache-bsf.jar
deleted file mode 100755
index 0ee68ac..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-apache-bsf.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-apache-bsfsrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-apache-bsfsrc.zip
deleted file mode 100755
index 836bada..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-apache-bsfsrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-apache-log4j.jar b/dependencies/plugins/org.apache.ant/lib/ant-apache-log4j.jar
deleted file mode 100755
index 4c9427e..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-apache-log4j.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-apache-log4jsrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-apache-log4jsrc.zip
deleted file mode 100755
index f8b4a33..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-apache-log4jsrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-apache-oro.jar b/dependencies/plugins/org.apache.ant/lib/ant-apache-oro.jar
deleted file mode 100755
index 30013ba..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-apache-oro.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-apache-orosrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-apache-orosrc.zip
deleted file mode 100755
index fb8e793..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-apache-orosrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-apache-regexp.jar b/dependencies/plugins/org.apache.ant/lib/ant-apache-regexp.jar
deleted file mode 100755
index a393a3c..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-apache-regexp.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-apache-regexpsrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-apache-regexpsrc.zip
deleted file mode 100755
index b89b937..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-apache-regexpsrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-apache-resolver.jar b/dependencies/plugins/org.apache.ant/lib/ant-apache-resolver.jar
deleted file mode 100755
index 119a41d..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-apache-resolver.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-apache-resolversrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-apache-resolversrc.zip
deleted file mode 100755
index 86d3e9a..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-apache-resolversrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-commons-logging.jar b/dependencies/plugins/org.apache.ant/lib/ant-commons-logging.jar
deleted file mode 100755
index fcba217..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-commons-logging.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-commons-loggingsrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-commons-loggingsrc.zip
deleted file mode 100755
index 88854f0..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-commons-loggingsrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-commons-net.jar b/dependencies/plugins/org.apache.ant/lib/ant-commons-net.jar
deleted file mode 100755
index b490c96..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-commons-net.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-commons-netsrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-commons-netsrc.zip
deleted file mode 100755
index f45881e..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-commons-netsrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-jai.jar b/dependencies/plugins/org.apache.ant/lib/ant-jai.jar
deleted file mode 100755
index 26901f3..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-jai.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-jaisrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-jaisrc.zip
deleted file mode 100755
index 266897a..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-jaisrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-javamail.jar b/dependencies/plugins/org.apache.ant/lib/ant-javamail.jar
deleted file mode 100755
index 8778e93..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-javamail.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-javamailsrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-javamailsrc.zip
deleted file mode 100755
index 6611a0d..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-javamailsrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-jdepend.jar b/dependencies/plugins/org.apache.ant/lib/ant-jdepend.jar
deleted file mode 100755
index 37cd86f..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-jdepend.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-jdependsrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-jdependsrc.zip
deleted file mode 100755
index cc29c8d..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-jdependsrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-jmf.jar b/dependencies/plugins/org.apache.ant/lib/ant-jmf.jar
deleted file mode 100755
index 036385c..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-jmf.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-jmfsrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-jmfsrc.zip
deleted file mode 100755
index 3d5c22c..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-jmfsrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-jsch.jar b/dependencies/plugins/org.apache.ant/lib/ant-jsch.jar
deleted file mode 100755
index 5466269..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-jsch.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-jschsrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-jschsrc.zip
deleted file mode 100755
index b5da3e6..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-jschsrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-junit.jar b/dependencies/plugins/org.apache.ant/lib/ant-junit.jar
deleted file mode 100755
index fa43fb2..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-junit.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-junitsrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-junitsrc.zip
deleted file mode 100755
index 0f27431..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-junitsrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-launcher.jar b/dependencies/plugins/org.apache.ant/lib/ant-launcher.jar
deleted file mode 100755
index 12a1e78..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-launcher.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-launchersrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-launchersrc.zip
deleted file mode 100755
index cca1bf5..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-launchersrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-netrexx.jar b/dependencies/plugins/org.apache.ant/lib/ant-netrexx.jar
deleted file mode 100755
index d646fd7..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-netrexx.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-netrexxsrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-netrexxsrc.zip
deleted file mode 100755
index 9feb747..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-netrexxsrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-nodeps.jar b/dependencies/plugins/org.apache.ant/lib/ant-nodeps.jar
deleted file mode 100755
index 2d209fa..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-nodeps.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-nodepssrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-nodepssrc.zip
deleted file mode 100755
index 2497269..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-nodepssrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-starteam.jar b/dependencies/plugins/org.apache.ant/lib/ant-starteam.jar
deleted file mode 100755
index 668b190..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-starteam.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-starteamsrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-starteamsrc.zip
deleted file mode 100755
index 76fd181..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-starteamsrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-stylebook.jar b/dependencies/plugins/org.apache.ant/lib/ant-stylebook.jar
deleted file mode 100755
index 2d6ab23..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-stylebook.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-stylebooksrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-stylebooksrc.zip
deleted file mode 100755
index d811ccf..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-stylebooksrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-swing.jar b/dependencies/plugins/org.apache.ant/lib/ant-swing.jar
deleted file mode 100755
index 60c3981..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-swing.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-swingsrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-swingsrc.zip
deleted file mode 100755
index c3a574c..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-swingsrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-trax.jar b/dependencies/plugins/org.apache.ant/lib/ant-trax.jar
deleted file mode 100755
index ef838ec..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-trax.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-traxsrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-traxsrc.zip
deleted file mode 100755
index c52b4df..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-traxsrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-weblogic.jar b/dependencies/plugins/org.apache.ant/lib/ant-weblogic.jar
deleted file mode 100755
index 9f0de19..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-weblogic.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant-weblogicsrc.zip b/dependencies/plugins/org.apache.ant/lib/ant-weblogicsrc.zip
deleted file mode 100755
index 874b8ba..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant-weblogicsrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/ant.jar b/dependencies/plugins/org.apache.ant/lib/ant.jar
deleted file mode 100755
index 0a56a58..0000000
--- a/dependencies/plugins/org.apache.ant/lib/ant.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/lib/antsrc.zip b/dependencies/plugins/org.apache.ant/lib/antsrc.zip
deleted file mode 100755
index 902890c..0000000
--- a/dependencies/plugins/org.apache.ant/lib/antsrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.ant/plugin.properties b/dependencies/plugins/org.apache.ant/plugin.properties
deleted file mode 100755
index 0b5f8a0..0000000
--- a/dependencies/plugins/org.apache.ant/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials 
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-pluginName = Apache Ant
-providerName = Eclipse.org
diff --git a/dependencies/plugins/org.apache.commons.collections/.classpath b/dependencies/plugins/org.apache.commons.collections/.classpath
deleted file mode 100755
index 3216c85..0000000
--- a/dependencies/plugins/org.apache.commons.collections/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry exported="true" kind="lib" path="" sourcepath="source-bundle"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.3"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="javaBin"/>
-</classpath>
diff --git a/dependencies/plugins/org.apache.commons.collections/.cvsignore b/dependencies/plugins/org.apache.commons.collections/.cvsignore
deleted file mode 100755
index 43568b0..0000000
--- a/dependencies/plugins/org.apache.commons.collections/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-bin
-javaBin
-build.xml
diff --git a/dependencies/plugins/org.apache.commons.collections/.project b/dependencies/plugins/org.apache.commons.collections/.project
deleted file mode 100755
index 6e82942..0000000
--- a/dependencies/plugins/org.apache.commons.collections/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.apache.commons.collections</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/dependencies/plugins/org.apache.commons.collections/META-INF/MANIFEST.MF b/dependencies/plugins/org.apache.commons.collections/META-INF/MANIFEST.MF
deleted file mode 100755
index 71558cc..0000000
--- a/dependencies/plugins/org.apache.commons.collections/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,20 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.apache.commons.collections
-Bundle-Version: 3.2.0.qualifier
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: J2SE-1.3
-Export-Package: org.apache.commons.collections;version="3.2.0",
- org.apache.commons.collections.bag;version="3.2.0",
- org.apache.commons.collections.bidimap;version="3.2.0",
- org.apache.commons.collections.buffer;version="3.2.0",
- org.apache.commons.collections.collection;version="3.2.0",
- org.apache.commons.collections.comparators;version="3.2.0",
- org.apache.commons.collections.functors;version="3.2.0",
- org.apache.commons.collections.iterators;version="3.2.0",
- org.apache.commons.collections.keyvalue;version="3.2.0",
- org.apache.commons.collections.list;version="3.2.0",
- org.apache.commons.collections.map;version="3.2.0",
- org.apache.commons.collections.set;version="3.2.0"
diff --git a/dependencies/plugins/org.apache.commons.collections/about.html b/dependencies/plugins/org.apache.commons.collections/about.html
deleted file mode 100755
index be61750..0000000
--- a/dependencies/plugins/org.apache.commons.collections/about.html
+++ /dev/null
@@ -1,55 +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>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>June 8, 2007</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was 
-provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
-		
-<h3>Third Party Content</h3>
-<p>The Content includes items that have been sourced from third parties as set out below. If you 
-did not receive this Content directly from the Eclipse Foundation, the following is provided 
-for informational purposes only, and you should look to the Redistributor&rsquo;s license for 
-terms and conditions of use.</p>
-
-<h4>Commons Collections 3.2</h4>
-<p>The plug-in includes Commons Collections 3.2 (&quot;Commons Collections&quot;) developed by the Apache Software Foundation as part of the Apache Commons project.  Therefore:</p>
-
-<blockquote>
-This product includes software developed by the Apache Software Foundation (<a href="http://www.apache.org/">http://www.apache.org/</a>).
-</blockquote>
-
-<p>The Commons Collections binary code is included with no modifications except postprocessing
-(pack200 conditioning and signing). The corresponding Commons Collections source code is located in src.zip.</p>
-
-<p>Commons Net is:</p>
-
-<blockquote>Copyright (c) 1997-2005 The Apache Software Foundation. All rights reserved.</blockquote>
-
-<p>Your use of the Commons Collections code is subject to the terms and conditions of the Apache Software License 2.0.  A copy of the license is contained
-in the file <a href="about_files/LICENSE.txt">LICENSE.txt</a> and is also available at <a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a>.
-
-<p>The Apache attribution <a href="about_files/NOTICE.txt">NOTICE.txt</a> file is included with the Content in accordance with 4d of the Apache License, Version 2.0.</p>
-
-<p>Examples and documentation as well as updated source code for Commons Collections is available at <a href="http://commons.apache.org/collections/">http://commons.apache.org/collections/</a>.</p>
-
-</body>
-</html>
diff --git a/dependencies/plugins/org.apache.commons.collections/about_files/LICENSE.txt b/dependencies/plugins/org.apache.commons.collections/about_files/LICENSE.txt
deleted file mode 100755
index d645695..0000000
--- a/dependencies/plugins/org.apache.commons.collections/about_files/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/dependencies/plugins/org.apache.commons.collections/about_files/NOTICE.txt b/dependencies/plugins/org.apache.commons.collections/about_files/NOTICE.txt
deleted file mode 100755
index 3f59805..0000000
--- a/dependencies/plugins/org.apache.commons.collections/about_files/NOTICE.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
diff --git a/dependencies/plugins/org.apache.commons.collections/about_files/README.txt b/dependencies/plugins/org.apache.commons.collections/about_files/README.txt
deleted file mode 100755
index 7d7c453..0000000
--- a/dependencies/plugins/org.apache.commons.collections/about_files/README.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Jakarta Commons Collections
-===========================
-
-Welcome to the Collections component of the Jakarta Commons project.
-This component contains many new collections and collection utilities.
-
-Two jar files are produced by this component.
-The first, commons-collections.jar is the main jar used by applications.
-The second, commons-collections-testframework.jar is an extension to junit
-for testing new collection implementations and is not normally used by applications.
-
-
-Building from source
---------------------
-This component requires the excellent Ant utility.
-It can be found here :
-
-  http://ant.apache.org/
-
-For testing the project, you will also need JUnit :
-
-  http://www.junit.org/
-
-To let the test process find JUnit, you may make a 
-copy of the build.properties.sample file, rename to
-build.properties,  and modify to reflect
-the location of the junit.jar on your computer.
-
-
-Once you have Ant properly installed, and the
-build.properties file correctly reflects the location
-of your junit.jar, you are ready to build and test.
-The major targets are:
-
-ant compile      - compile the code
-ant test         - test using junit
-ant jar          - create a jar file
-ant javadoc      - build the javadoc
-ant dist         - create folders as per a distribution
-ant tf.jar       - create the testframework jar file
-ant tf.javadoc   - build the testframework javadoc
-
-
-Maven
------
-The component can also be built using Maven. (Ant is the primary build tool.)
-It can be found here :
-
-  http://maven.apache.org/
-
-Once installed, the jars may be built with 'maven jar'.
diff --git a/dependencies/plugins/org.apache.commons.collections/build.properties b/dependencies/plugins/org.apache.commons.collections/build.properties
deleted file mode 100755
index a381b3c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/build.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-bin.includes = META-INF/,\
-               about.html,\
-               plugin.properties,\
-               about_files/,\
-               org/
-output..=.               
-               
\ No newline at end of file
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ArrayStack.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ArrayStack.class
deleted file mode 100755
index 9f33ef8..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ArrayStack.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/Bag.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/Bag.class
deleted file mode 100755
index 0f79cf7..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/Bag.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BagUtils.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BagUtils.class
deleted file mode 100755
index 14ca3d6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BagUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$1.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$1.class
deleted file mode 100755
index 724bd73..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$10.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$10.class
deleted file mode 100755
index 8bf5b7d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$10.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$11.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$11.class
deleted file mode 100755
index f5d8bf3..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$11.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$2.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$2.class
deleted file mode 100755
index 0678f1e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$2.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$3.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$3.class
deleted file mode 100755
index 87dd94e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$3.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$4.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$4.class
deleted file mode 100755
index 34711d8..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$4.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$5.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$5.class
deleted file mode 100755
index 8156716..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$5.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$6.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$6.class
deleted file mode 100755
index 5fb5090..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$6.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$7.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$7.class
deleted file mode 100755
index 3e2028d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$7.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$8.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$8.class
deleted file mode 100755
index dfeb816..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$8.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$9.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$9.class
deleted file mode 100755
index 4778772..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$9.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$MyMapEntry.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$MyMapEntry.class
deleted file mode 100755
index e40d19e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap$MyMapEntry.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap.class
deleted file mode 100755
index 1675883..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BeanMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BidiMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BidiMap.class
deleted file mode 100755
index 676eef1..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BidiMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BinaryHeap$1.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BinaryHeap$1.class
deleted file mode 100755
index 16531ed..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BinaryHeap$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BinaryHeap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BinaryHeap.class
deleted file mode 100755
index c8c1eb2..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BinaryHeap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BoundedCollection.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BoundedCollection.class
deleted file mode 100755
index 439a6db..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BoundedCollection.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BoundedFifoBuffer$1.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BoundedFifoBuffer$1.class
deleted file mode 100755
index 2276cd7..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BoundedFifoBuffer$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BoundedFifoBuffer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BoundedFifoBuffer.class
deleted file mode 100755
index 11a40b4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BoundedFifoBuffer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BoundedMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BoundedMap.class
deleted file mode 100755
index cfaa0da..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BoundedMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/Buffer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/Buffer.class
deleted file mode 100755
index 74d4be5..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/Buffer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BufferOverflowException.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BufferOverflowException.class
deleted file mode 100755
index 1825cb9..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BufferOverflowException.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BufferUnderflowException.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BufferUnderflowException.class
deleted file mode 100755
index 0a7a33b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BufferUnderflowException.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BufferUtils.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BufferUtils.class
deleted file mode 100755
index f476fa1..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/BufferUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/Closure.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/Closure.class
deleted file mode 100755
index 04f9211..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/Closure.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ClosureUtils.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ClosureUtils.class
deleted file mode 100755
index 532a97e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ClosureUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/CollectionUtils.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/CollectionUtils.class
deleted file mode 100755
index e0d4ac2..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/CollectionUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ComparatorUtils.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ComparatorUtils.class
deleted file mode 100755
index cc41b6c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ComparatorUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/CursorableLinkedList$Cursor.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/CursorableLinkedList$Cursor.class
deleted file mode 100755
index 5c4ceab..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/CursorableLinkedList$Cursor.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/CursorableLinkedList$ListIter.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/CursorableLinkedList$ListIter.class
deleted file mode 100755
index ad80fbe..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/CursorableLinkedList$ListIter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/CursorableLinkedList$Listable.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/CursorableLinkedList$Listable.class
deleted file mode 100755
index e77db68..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/CursorableLinkedList$Listable.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/CursorableLinkedList.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/CursorableLinkedList.class
deleted file mode 100755
index e53869a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/CursorableLinkedList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/CursorableSubList.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/CursorableSubList.class
deleted file mode 100755
index 55e5313..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/CursorableSubList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DefaultMapBag$BagIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DefaultMapBag$BagIterator.class
deleted file mode 100755
index b517100..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DefaultMapBag$BagIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DefaultMapBag.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DefaultMapBag.class
deleted file mode 100755
index 7ea04bf..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DefaultMapBag.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DefaultMapEntry.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DefaultMapEntry.class
deleted file mode 100755
index 5c04363..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DefaultMapEntry.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$1.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$1.class
deleted file mode 100755
index ff2fab2..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$10.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$10.class
deleted file mode 100755
index 0d9f275..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$10.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$11.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$11.class
deleted file mode 100755
index 27d57bf..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$11.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$12.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$12.class
deleted file mode 100755
index 2caaee3..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$12.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$2.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$2.class
deleted file mode 100755
index 1846767..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$2.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$3.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$3.class
deleted file mode 100755
index a0450fd..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$3.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$4.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$4.class
deleted file mode 100755
index fbdeb6b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$4.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$5.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$5.class
deleted file mode 100755
index fc26dad..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$5.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$6.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$6.class
deleted file mode 100755
index b37ccd9..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$6.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$7.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$7.class
deleted file mode 100755
index bd9d696..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$7.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$8.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$8.class
deleted file mode 100755
index 7797ead..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$8.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$9.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$9.class
deleted file mode 100755
index 13aa03f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$9.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$DoubleOrderedMapIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$DoubleOrderedMapIterator.class
deleted file mode 100755
index 749acfc..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$DoubleOrderedMapIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$Node.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$Node.class
deleted file mode 100755
index bfc1c4d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap$Node.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap.class
deleted file mode 100755
index 9d83c8f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/DoubleOrderedMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/EnumerationUtils.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/EnumerationUtils.class
deleted file mode 100755
index 3c0a69c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/EnumerationUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ExtendedProperties$PropertiesReader.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ExtendedProperties$PropertiesReader.class
deleted file mode 100755
index 1dd3d9e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ExtendedProperties$PropertiesReader.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ExtendedProperties$PropertiesTokenizer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ExtendedProperties$PropertiesTokenizer.class
deleted file mode 100755
index 0f7f6f1..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ExtendedProperties$PropertiesTokenizer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ExtendedProperties.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ExtendedProperties.class
deleted file mode 100755
index 5e86984..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ExtendedProperties.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/Factory.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/Factory.class
deleted file mode 100755
index f463fbc..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/Factory.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FactoryUtils.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FactoryUtils.class
deleted file mode 100755
index 8dc1f92..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FactoryUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastArrayList$ListIter.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastArrayList$ListIter.class
deleted file mode 100755
index 4d568c0..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastArrayList$ListIter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastArrayList$SubList$SubListIter.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastArrayList$SubList$SubListIter.class
deleted file mode 100755
index ce469d1..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastArrayList$SubList$SubListIter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastArrayList$SubList.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastArrayList$SubList.class
deleted file mode 100755
index c7162aa..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastArrayList$SubList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastArrayList.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastArrayList.class
deleted file mode 100755
index abbe31d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastArrayList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastHashMap$1.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastHashMap$1.class
deleted file mode 100755
index 03bec57..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastHashMap$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastHashMap$CollectionView$CollectionViewIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastHashMap$CollectionView$CollectionViewIterator.class
deleted file mode 100755
index aa5a3af..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastHashMap$CollectionView$CollectionViewIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastHashMap$CollectionView.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastHashMap$CollectionView.class
deleted file mode 100755
index fce0ffc..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastHashMap$CollectionView.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastHashMap$EntrySet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastHashMap$EntrySet.class
deleted file mode 100755
index a0f0d97..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastHashMap$EntrySet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastHashMap$KeySet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastHashMap$KeySet.class
deleted file mode 100755
index 10805de..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastHashMap$KeySet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastHashMap$Values.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastHashMap$Values.class
deleted file mode 100755
index ec36432..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastHashMap$Values.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastHashMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastHashMap.class
deleted file mode 100755
index 4c4253e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastHashMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastTreeMap$1.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastTreeMap$1.class
deleted file mode 100755
index d5b6d3e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastTreeMap$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastTreeMap$CollectionView$CollectionViewIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastTreeMap$CollectionView$CollectionViewIterator.class
deleted file mode 100755
index 28990ed..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastTreeMap$CollectionView$CollectionViewIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastTreeMap$CollectionView.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastTreeMap$CollectionView.class
deleted file mode 100755
index cb8816f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastTreeMap$CollectionView.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastTreeMap$EntrySet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastTreeMap$EntrySet.class
deleted file mode 100755
index 70f4eba..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastTreeMap$EntrySet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastTreeMap$KeySet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastTreeMap$KeySet.class
deleted file mode 100755
index 46e064e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastTreeMap$KeySet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastTreeMap$Values.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastTreeMap$Values.class
deleted file mode 100755
index 74b33f6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastTreeMap$Values.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastTreeMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastTreeMap.class
deleted file mode 100755
index 061c66c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FastTreeMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FunctorException.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FunctorException.class
deleted file mode 100755
index a9c13bc..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/FunctorException.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/HashBag.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/HashBag.class
deleted file mode 100755
index 95c81bb..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/HashBag.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/IterableMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/IterableMap.class
deleted file mode 100755
index ca07f19..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/IterableMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/IteratorUtils.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/IteratorUtils.class
deleted file mode 100755
index b2f1d09..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/IteratorUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/KeyValue.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/KeyValue.class
deleted file mode 100755
index 315d9fa..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/KeyValue.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/LRUMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/LRUMap.class
deleted file mode 100755
index c9986ba..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/LRUMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ListUtils.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ListUtils.class
deleted file mode 100755
index ecb0e86..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ListUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/MapIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/MapIterator.class
deleted file mode 100755
index 8a9ff99..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/MapIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/MapUtils.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/MapUtils.class
deleted file mode 100755
index 47191bd..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/MapUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/MultiHashMap$1.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/MultiHashMap$1.class
deleted file mode 100755
index 86da6c7..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/MultiHashMap$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/MultiHashMap$ValueIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/MultiHashMap$ValueIterator.class
deleted file mode 100755
index c9f2bc7..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/MultiHashMap$ValueIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/MultiHashMap$Values.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/MultiHashMap$Values.class
deleted file mode 100755
index 2408712..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/MultiHashMap$Values.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/MultiHashMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/MultiHashMap.class
deleted file mode 100755
index bd006fc..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/MultiHashMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/MultiMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/MultiMap.class
deleted file mode 100755
index c4cba95..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/MultiMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/OrderedBidiMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/OrderedBidiMap.class
deleted file mode 100755
index 09f02cd..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/OrderedBidiMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/OrderedIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/OrderedIterator.class
deleted file mode 100755
index ada9830..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/OrderedIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/OrderedMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/OrderedMap.class
deleted file mode 100755
index 400b14f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/OrderedMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/OrderedMapIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/OrderedMapIterator.class
deleted file mode 100755
index 8b3e42b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/OrderedMapIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/Predicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/Predicate.class
deleted file mode 100755
index f5a345b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/Predicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/PredicateUtils.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/PredicateUtils.class
deleted file mode 100755
index c1a4aec..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/PredicateUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/PriorityQueue.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/PriorityQueue.class
deleted file mode 100755
index 02c159c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/PriorityQueue.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ProxyMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ProxyMap.class
deleted file mode 100755
index dccf92e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ProxyMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$1.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$1.class
deleted file mode 100755
index 28bf788..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$2.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$2.class
deleted file mode 100755
index a0b1f0b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$2.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$3.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$3.class
deleted file mode 100755
index ac9cf16..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$3.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$Entry.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$Entry.class
deleted file mode 100755
index c35f48d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$Entry.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$EntryIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$EntryIterator.class
deleted file mode 100755
index c421fb3..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$EntryIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$KeyIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$KeyIterator.class
deleted file mode 100755
index a6510c3..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$KeyIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$SoftRef.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$SoftRef.class
deleted file mode 100755
index fd51394..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$SoftRef.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$ValueIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$ValueIterator.class
deleted file mode 100755
index 09588a2..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$ValueIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$WeakRef.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$WeakRef.class
deleted file mode 100755
index 7596f66..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap$WeakRef.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap.class
deleted file mode 100755
index d24a9bc..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ReferenceMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ResettableIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ResettableIterator.class
deleted file mode 100755
index 9a740bf..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ResettableIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ResettableListIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ResettableListIterator.class
deleted file mode 100755
index 35175ea..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/ResettableListIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SequencedHashMap$1.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SequencedHashMap$1.class
deleted file mode 100755
index febaeee..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SequencedHashMap$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SequencedHashMap$2.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SequencedHashMap$2.class
deleted file mode 100755
index 50e7b34..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SequencedHashMap$2.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SequencedHashMap$3.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SequencedHashMap$3.class
deleted file mode 100755
index 07309c9..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SequencedHashMap$3.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SequencedHashMap$Entry.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SequencedHashMap$Entry.class
deleted file mode 100755
index f58077b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SequencedHashMap$Entry.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SequencedHashMap$OrderedIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SequencedHashMap$OrderedIterator.class
deleted file mode 100755
index 6a3ce1c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SequencedHashMap$OrderedIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SequencedHashMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SequencedHashMap.class
deleted file mode 100755
index d805039..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SequencedHashMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SetUtils.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SetUtils.class
deleted file mode 100755
index e72f231..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SetUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SortedBag.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SortedBag.class
deleted file mode 100755
index 071ec43..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SortedBag.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SortedBidiMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SortedBidiMap.class
deleted file mode 100755
index b92bb98..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SortedBidiMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$1.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$1.class
deleted file mode 100755
index 75e2bd0..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$EntryIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$EntryIterator.class
deleted file mode 100755
index 59957bb..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$EntryIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$EntrySet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$EntrySet.class
deleted file mode 100755
index ca3c38e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$EntrySet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$KeyIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$KeyIterator.class
deleted file mode 100755
index d399ed8..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$KeyIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$KeySet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$KeySet.class
deleted file mode 100755
index 68b8f90..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$KeySet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$Lock.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$Lock.class
deleted file mode 100755
index 50c3e98..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$Lock.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$Node.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$Node.class
deleted file mode 100755
index 03db1eb..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$Node.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$ValueIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$ValueIterator.class
deleted file mode 100755
index 3cc58e4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$ValueIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$Values.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$Values.class
deleted file mode 100755
index 43b614f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap$Values.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap.class
deleted file mode 100755
index 85bf22d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/StaticBucketMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SynchronizedPriorityQueue.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SynchronizedPriorityQueue.class
deleted file mode 100755
index 19230bd..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/SynchronizedPriorityQueue.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/Transformer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/Transformer.class
deleted file mode 100755
index af7ba2f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/Transformer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/TransformerUtils.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/TransformerUtils.class
deleted file mode 100755
index dbcaf6f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/TransformerUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/TreeBag.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/TreeBag.class
deleted file mode 100755
index de21099..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/TreeBag.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/UnboundedFifoBuffer$1.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/UnboundedFifoBuffer$1.class
deleted file mode 100755
index 7be9829..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/UnboundedFifoBuffer$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/UnboundedFifoBuffer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/UnboundedFifoBuffer.class
deleted file mode 100755
index 376a57c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/UnboundedFifoBuffer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/Unmodifiable.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/Unmodifiable.class
deleted file mode 100755
index 502988a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/Unmodifiable.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/AbstractBagDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/AbstractBagDecorator.class
deleted file mode 100755
index 91a027d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/AbstractBagDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/AbstractMapBag$BagIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/AbstractMapBag$BagIterator.class
deleted file mode 100755
index d2ed049..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/AbstractMapBag$BagIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/AbstractMapBag$MutableInteger.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/AbstractMapBag$MutableInteger.class
deleted file mode 100755
index 8dcb44f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/AbstractMapBag$MutableInteger.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/AbstractMapBag.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/AbstractMapBag.class
deleted file mode 100755
index 9195fcd..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/AbstractMapBag.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/AbstractSortedBagDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/AbstractSortedBagDecorator.class
deleted file mode 100755
index 7fae8b0..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/AbstractSortedBagDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/HashBag.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/HashBag.class
deleted file mode 100755
index 990b939..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/HashBag.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/PredicatedBag.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/PredicatedBag.class
deleted file mode 100755
index d494003..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/PredicatedBag.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/PredicatedSortedBag.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/PredicatedSortedBag.class
deleted file mode 100755
index 87b0711..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/PredicatedSortedBag.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/SynchronizedBag$SynchronizedBagSet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/SynchronizedBag$SynchronizedBagSet.class
deleted file mode 100755
index 222ea05..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/SynchronizedBag$SynchronizedBagSet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/SynchronizedBag.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/SynchronizedBag.class
deleted file mode 100755
index b95e751..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/SynchronizedBag.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/SynchronizedSortedBag.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/SynchronizedSortedBag.class
deleted file mode 100755
index 7556912..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/SynchronizedSortedBag.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/TransformedBag.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/TransformedBag.class
deleted file mode 100755
index 45f199d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/TransformedBag.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/TransformedSortedBag.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/TransformedSortedBag.class
deleted file mode 100755
index 3bb9a27..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/TransformedSortedBag.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/TreeBag.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/TreeBag.class
deleted file mode 100755
index dd296e2..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/TreeBag.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/TypedBag.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/TypedBag.class
deleted file mode 100755
index 4003066..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/TypedBag.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/TypedSortedBag.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/TypedSortedBag.class
deleted file mode 100755
index e5f2d7a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/TypedSortedBag.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/UnmodifiableBag.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/UnmodifiableBag.class
deleted file mode 100755
index bb5330f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/UnmodifiableBag.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/UnmodifiableSortedBag.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/UnmodifiableSortedBag.class
deleted file mode 100755
index 6f33f32..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bag/UnmodifiableSortedBag.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractBidiMapDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractBidiMapDecorator.class
deleted file mode 100755
index f7e47dc..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractBidiMapDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$BidiMapIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$BidiMapIterator.class
deleted file mode 100755
index 9c68e87..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$BidiMapIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$EntrySet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$EntrySet.class
deleted file mode 100755
index ddd046f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$EntrySet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$EntrySetIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$EntrySetIterator.class
deleted file mode 100755
index 9a341ff..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$EntrySetIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$KeySet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$KeySet.class
deleted file mode 100755
index fa9ce99..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$KeySet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$KeySetIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$KeySetIterator.class
deleted file mode 100755
index 9b911a0..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$KeySetIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$MapEntry.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$MapEntry.class
deleted file mode 100755
index 670a901..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$MapEntry.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$Values.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$Values.class
deleted file mode 100755
index 00e47eb..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$Values.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$ValuesIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$ValuesIterator.class
deleted file mode 100755
index 0244ae9..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$ValuesIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$View.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$View.class
deleted file mode 100755
index d62d9e5..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap$View.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap.class
deleted file mode 100755
index 3972441..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractDualBidiMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractOrderedBidiMapDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractOrderedBidiMapDecorator.class
deleted file mode 100755
index 741e435..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractOrderedBidiMapDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractSortedBidiMapDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractSortedBidiMapDecorator.class
deleted file mode 100755
index a7d4981..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/AbstractSortedBidiMapDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/DualHashBidiMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/DualHashBidiMap.class
deleted file mode 100755
index 0f2a9c6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/DualHashBidiMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/DualTreeBidiMap$BidiOrderedMapIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/DualTreeBidiMap$BidiOrderedMapIterator.class
deleted file mode 100755
index 1917aa0..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/DualTreeBidiMap$BidiOrderedMapIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/DualTreeBidiMap$ViewMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/DualTreeBidiMap$ViewMap.class
deleted file mode 100755
index 8effe7a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/DualTreeBidiMap$ViewMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/DualTreeBidiMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/DualTreeBidiMap.class
deleted file mode 100755
index d647a5f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/DualTreeBidiMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/TreeBidiMap$EntryView.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/TreeBidiMap$EntryView.class
deleted file mode 100755
index 5394857..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/TreeBidiMap$EntryView.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/TreeBidiMap$Inverse.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/TreeBidiMap$Inverse.class
deleted file mode 100755
index 320fc43..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/TreeBidiMap$Inverse.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/TreeBidiMap$Node.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/TreeBidiMap$Node.class
deleted file mode 100755
index 806d45f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/TreeBidiMap$Node.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/TreeBidiMap$View.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/TreeBidiMap$View.class
deleted file mode 100755
index 2fa1df4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/TreeBidiMap$View.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/TreeBidiMap$ViewIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/TreeBidiMap$ViewIterator.class
deleted file mode 100755
index 86e40c1..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/TreeBidiMap$ViewIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/TreeBidiMap$ViewMapIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/TreeBidiMap$ViewMapIterator.class
deleted file mode 100755
index ddb4e2e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/TreeBidiMap$ViewMapIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/TreeBidiMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/TreeBidiMap.class
deleted file mode 100755
index f37c9ba..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/TreeBidiMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/UnmodifiableBidiMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/UnmodifiableBidiMap.class
deleted file mode 100755
index 8906e47..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/UnmodifiableBidiMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/UnmodifiableOrderedBidiMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/UnmodifiableOrderedBidiMap.class
deleted file mode 100755
index 93e38d8..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/UnmodifiableOrderedBidiMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/UnmodifiableSortedBidiMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/UnmodifiableSortedBidiMap.class
deleted file mode 100755
index d325f91..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/bidimap/UnmodifiableSortedBidiMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/AbstractBufferDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/AbstractBufferDecorator.class
deleted file mode 100755
index 09deebf..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/AbstractBufferDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/BlockingBuffer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/BlockingBuffer.class
deleted file mode 100755
index 06129f2..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/BlockingBuffer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/BoundedBuffer$NotifyingIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/BoundedBuffer$NotifyingIterator.class
deleted file mode 100755
index fcec171..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/BoundedBuffer$NotifyingIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/BoundedBuffer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/BoundedBuffer.class
deleted file mode 100755
index b6d873c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/BoundedBuffer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/BoundedFifoBuffer$1.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/BoundedFifoBuffer$1.class
deleted file mode 100755
index cc955ad..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/BoundedFifoBuffer$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/BoundedFifoBuffer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/BoundedFifoBuffer.class
deleted file mode 100755
index 043f6f0..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/BoundedFifoBuffer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/CircularFifoBuffer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/CircularFifoBuffer.class
deleted file mode 100755
index 56bdaa3..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/CircularFifoBuffer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/PredicatedBuffer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/PredicatedBuffer.class
deleted file mode 100755
index c1f624a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/PredicatedBuffer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/PriorityBuffer$1.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/PriorityBuffer$1.class
deleted file mode 100755
index 149ce8f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/PriorityBuffer$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/PriorityBuffer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/PriorityBuffer.class
deleted file mode 100755
index 8dcc425..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/PriorityBuffer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/SynchronizedBuffer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/SynchronizedBuffer.class
deleted file mode 100755
index 1e11264..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/SynchronizedBuffer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/TransformedBuffer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/TransformedBuffer.class
deleted file mode 100755
index 14f4591..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/TransformedBuffer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/TypedBuffer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/TypedBuffer.class
deleted file mode 100755
index 85ccdeb..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/TypedBuffer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/UnboundedFifoBuffer$1.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/UnboundedFifoBuffer$1.class
deleted file mode 100755
index c7b950a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/UnboundedFifoBuffer$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/UnboundedFifoBuffer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/UnboundedFifoBuffer.class
deleted file mode 100755
index a013d5b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/UnboundedFifoBuffer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/UnmodifiableBuffer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/UnmodifiableBuffer.class
deleted file mode 100755
index 231d091..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/buffer/UnmodifiableBuffer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/AbstractCollectionDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/AbstractCollectionDecorator.class
deleted file mode 100755
index f32d651..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/AbstractCollectionDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/AbstractSerializableCollectionDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/AbstractSerializableCollectionDecorator.class
deleted file mode 100755
index 73e52d0..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/AbstractSerializableCollectionDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/CompositeCollection$CollectionMutator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/CompositeCollection$CollectionMutator.class
deleted file mode 100755
index 245ef68..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/CompositeCollection$CollectionMutator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/CompositeCollection.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/CompositeCollection.class
deleted file mode 100755
index 272e9d4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/CompositeCollection.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/PredicatedCollection.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/PredicatedCollection.class
deleted file mode 100755
index 5309264..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/PredicatedCollection.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/SynchronizedCollection.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/SynchronizedCollection.class
deleted file mode 100755
index 43bc8fb..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/SynchronizedCollection.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/TransformedCollection.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/TransformedCollection.class
deleted file mode 100755
index f9b3edf..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/TransformedCollection.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/TypedCollection.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/TypedCollection.class
deleted file mode 100755
index f715906..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/TypedCollection.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/UnmodifiableBoundedCollection.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/UnmodifiableBoundedCollection.class
deleted file mode 100755
index 7accb4f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/UnmodifiableBoundedCollection.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/UnmodifiableCollection.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/UnmodifiableCollection.class
deleted file mode 100755
index b542fb0..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/collection/UnmodifiableCollection.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/comparators/BooleanComparator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/comparators/BooleanComparator.class
deleted file mode 100755
index 34a4e09..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/comparators/BooleanComparator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/comparators/ComparableComparator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/comparators/ComparableComparator.class
deleted file mode 100755
index f71300b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/comparators/ComparableComparator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/comparators/ComparatorChain.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/comparators/ComparatorChain.class
deleted file mode 100755
index 7278551..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/comparators/ComparatorChain.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/comparators/FixedOrderComparator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/comparators/FixedOrderComparator.class
deleted file mode 100755
index d43994b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/comparators/FixedOrderComparator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/comparators/NullComparator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/comparators/NullComparator.class
deleted file mode 100755
index bfe37a8..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/comparators/NullComparator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/comparators/ReverseComparator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/comparators/ReverseComparator.class
deleted file mode 100755
index b88c2e1..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/comparators/ReverseComparator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/comparators/TransformingComparator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/comparators/TransformingComparator.class
deleted file mode 100755
index e6e29ef..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/comparators/TransformingComparator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/AllPredicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/AllPredicate.class
deleted file mode 100755
index 6ebd75e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/AllPredicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/AndPredicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/AndPredicate.class
deleted file mode 100755
index 62cb11c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/AndPredicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/AnyPredicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/AnyPredicate.class
deleted file mode 100755
index 0e5448d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/AnyPredicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ChainedClosure.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ChainedClosure.class
deleted file mode 100755
index 352306e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ChainedClosure.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ChainedTransformer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ChainedTransformer.class
deleted file mode 100755
index cc7f540..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ChainedTransformer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/CloneTransformer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/CloneTransformer.class
deleted file mode 100755
index 5f14009..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/CloneTransformer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ClosureTransformer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ClosureTransformer.class
deleted file mode 100755
index 1557710..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ClosureTransformer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ConstantFactory.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ConstantFactory.class
deleted file mode 100755
index 638a1ed..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ConstantFactory.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ConstantTransformer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ConstantTransformer.class
deleted file mode 100755
index 149206d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ConstantTransformer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/EqualPredicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/EqualPredicate.class
deleted file mode 100755
index 0fb59e4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/EqualPredicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ExceptionClosure.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ExceptionClosure.class
deleted file mode 100755
index 3602b04..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ExceptionClosure.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ExceptionFactory.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ExceptionFactory.class
deleted file mode 100755
index 28ed6e5..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ExceptionFactory.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ExceptionPredicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ExceptionPredicate.class
deleted file mode 100755
index 7fa692c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ExceptionPredicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ExceptionTransformer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ExceptionTransformer.class
deleted file mode 100755
index 92bfafc..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ExceptionTransformer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/FactoryTransformer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/FactoryTransformer.class
deleted file mode 100755
index de80139..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/FactoryTransformer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/FalsePredicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/FalsePredicate.class
deleted file mode 100755
index 675a159..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/FalsePredicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ForClosure.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ForClosure.class
deleted file mode 100755
index a89fd71..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/ForClosure.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/FunctorUtils.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/FunctorUtils.class
deleted file mode 100755
index 47eda5e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/FunctorUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/IdentityPredicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/IdentityPredicate.class
deleted file mode 100755
index f7f09c4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/IdentityPredicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/IfClosure.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/IfClosure.class
deleted file mode 100755
index f75c256..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/IfClosure.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/InstanceofPredicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/InstanceofPredicate.class
deleted file mode 100755
index 13abab5..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/InstanceofPredicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/InstantiateFactory.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/InstantiateFactory.class
deleted file mode 100755
index 510d708..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/InstantiateFactory.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/InstantiateTransformer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/InstantiateTransformer.class
deleted file mode 100755
index ec94a9c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/InstantiateTransformer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/InvokerTransformer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/InvokerTransformer.class
deleted file mode 100755
index 2d971d4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/InvokerTransformer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/MapTransformer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/MapTransformer.class
deleted file mode 100755
index 5dd8b13..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/MapTransformer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NOPClosure.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NOPClosure.class
deleted file mode 100755
index b27f904..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NOPClosure.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NOPTransformer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NOPTransformer.class
deleted file mode 100755
index d92c10c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NOPTransformer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NonePredicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NonePredicate.class
deleted file mode 100755
index 25fd9d2..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NonePredicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NotNullPredicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NotNullPredicate.class
deleted file mode 100755
index e22bc94..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NotNullPredicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NotPredicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NotPredicate.class
deleted file mode 100755
index 96aeb15..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NotPredicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NullIsExceptionPredicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NullIsExceptionPredicate.class
deleted file mode 100755
index ea8ceea..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NullIsExceptionPredicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NullIsFalsePredicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NullIsFalsePredicate.class
deleted file mode 100755
index 67caec2..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NullIsFalsePredicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NullIsTruePredicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NullIsTruePredicate.class
deleted file mode 100755
index 84abaac..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NullIsTruePredicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NullPredicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NullPredicate.class
deleted file mode 100755
index 8d384b6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/NullPredicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/OnePredicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/OnePredicate.class
deleted file mode 100755
index fdb27d3..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/OnePredicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/OrPredicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/OrPredicate.class
deleted file mode 100755
index 157eeae..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/OrPredicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/PredicateDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/PredicateDecorator.class
deleted file mode 100755
index 98795d9..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/PredicateDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/PredicateTransformer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/PredicateTransformer.class
deleted file mode 100755
index 703e832..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/PredicateTransformer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/PrototypeFactory$1.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/PrototypeFactory$1.class
deleted file mode 100755
index f89da83..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/PrototypeFactory$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/PrototypeFactory$PrototypeCloneFactory.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/PrototypeFactory$PrototypeCloneFactory.class
deleted file mode 100755
index ee41589..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/PrototypeFactory$PrototypeCloneFactory.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/PrototypeFactory$PrototypeSerializationFactory.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/PrototypeFactory$PrototypeSerializationFactory.class
deleted file mode 100755
index 383ba77..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/PrototypeFactory$PrototypeSerializationFactory.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/PrototypeFactory.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/PrototypeFactory.class
deleted file mode 100755
index ab3f534..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/PrototypeFactory.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/StringValueTransformer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/StringValueTransformer.class
deleted file mode 100755
index 337887d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/StringValueTransformer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/SwitchClosure.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/SwitchClosure.class
deleted file mode 100755
index fa5d97c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/SwitchClosure.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/SwitchTransformer.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/SwitchTransformer.class
deleted file mode 100755
index dba350e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/SwitchTransformer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/TransformedPredicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/TransformedPredicate.class
deleted file mode 100755
index 0c2770c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/TransformedPredicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/TransformerClosure.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/TransformerClosure.class
deleted file mode 100755
index 761b280..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/TransformerClosure.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/TransformerPredicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/TransformerPredicate.class
deleted file mode 100755
index 7b5cb51..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/TransformerPredicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/TruePredicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/TruePredicate.class
deleted file mode 100755
index d22088d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/TruePredicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/UniquePredicate.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/UniquePredicate.class
deleted file mode 100755
index 090a6ab..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/UniquePredicate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/WhileClosure.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/WhileClosure.class
deleted file mode 100755
index 9852dc1..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/functors/WhileClosure.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/AbstractEmptyIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/AbstractEmptyIterator.class
deleted file mode 100755
index 6013229..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/AbstractEmptyIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/AbstractIteratorDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/AbstractIteratorDecorator.class
deleted file mode 100755
index 9d1bdfb..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/AbstractIteratorDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/AbstractListIteratorDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/AbstractListIteratorDecorator.class
deleted file mode 100755
index f0d5079..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/AbstractListIteratorDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/AbstractMapIteratorDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/AbstractMapIteratorDecorator.class
deleted file mode 100755
index 9aaf492..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/AbstractMapIteratorDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/AbstractOrderedMapIteratorDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/AbstractOrderedMapIteratorDecorator.class
deleted file mode 100755
index 92ca372..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/AbstractOrderedMapIteratorDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ArrayIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ArrayIterator.class
deleted file mode 100755
index ceab4fc..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ArrayIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ArrayListIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ArrayListIterator.class
deleted file mode 100755
index dbe76c2..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ArrayListIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/CollatingIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/CollatingIterator.class
deleted file mode 100755
index 96c4792..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/CollatingIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/EmptyIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/EmptyIterator.class
deleted file mode 100755
index eb5ca3a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/EmptyIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/EmptyListIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/EmptyListIterator.class
deleted file mode 100755
index 31f4430..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/EmptyListIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/EmptyMapIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/EmptyMapIterator.class
deleted file mode 100755
index f8535a5..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/EmptyMapIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/EmptyOrderedIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/EmptyOrderedIterator.class
deleted file mode 100755
index 4a92dcf..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/EmptyOrderedIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/EmptyOrderedMapIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/EmptyOrderedMapIterator.class
deleted file mode 100755
index ab0a06a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/EmptyOrderedMapIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/EntrySetMapIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/EntrySetMapIterator.class
deleted file mode 100755
index fa4112b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/EntrySetMapIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/EnumerationIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/EnumerationIterator.class
deleted file mode 100755
index 934f7c4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/EnumerationIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/FilterIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/FilterIterator.class
deleted file mode 100755
index 7ea25f9..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/FilterIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/FilterListIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/FilterListIterator.class
deleted file mode 100755
index 6a4d7a4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/FilterListIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/IteratorChain.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/IteratorChain.class
deleted file mode 100755
index 2d6e553..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/IteratorChain.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/IteratorEnumeration.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/IteratorEnumeration.class
deleted file mode 100755
index 70af33e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/IteratorEnumeration.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ListIteratorWrapper.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ListIteratorWrapper.class
deleted file mode 100755
index 62c5aee..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ListIteratorWrapper.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/LoopingIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/LoopingIterator.class
deleted file mode 100755
index 683c423..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/LoopingIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/LoopingListIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/LoopingListIterator.class
deleted file mode 100755
index 6a7ad75..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/LoopingListIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ObjectArrayIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ObjectArrayIterator.class
deleted file mode 100755
index d46e329..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ObjectArrayIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ObjectArrayListIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ObjectArrayListIterator.class
deleted file mode 100755
index af22fbf..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ObjectArrayListIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ObjectGraphIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ObjectGraphIterator.class
deleted file mode 100755
index 0f5d4b6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ObjectGraphIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ProxyIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ProxyIterator.class
deleted file mode 100755
index ff6627d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ProxyIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ProxyListIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ProxyListIterator.class
deleted file mode 100755
index 22c7852..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ProxyListIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ReverseListIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ReverseListIterator.class
deleted file mode 100755
index e850eb2..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/ReverseListIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/SingletonIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/SingletonIterator.class
deleted file mode 100755
index de5bde6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/SingletonIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/SingletonListIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/SingletonListIterator.class
deleted file mode 100755
index 51f9356..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/SingletonListIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/TransformIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/TransformIterator.class
deleted file mode 100755
index 42193df..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/TransformIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/UniqueFilterIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/UniqueFilterIterator.class
deleted file mode 100755
index 0d44002..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/UniqueFilterIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/UnmodifiableIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/UnmodifiableIterator.class
deleted file mode 100755
index d376ce1..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/UnmodifiableIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/UnmodifiableListIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/UnmodifiableListIterator.class
deleted file mode 100755
index 34767b0..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/UnmodifiableListIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/UnmodifiableMapIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/UnmodifiableMapIterator.class
deleted file mode 100755
index 3f64fb4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/UnmodifiableMapIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/UnmodifiableOrderedMapIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/UnmodifiableOrderedMapIterator.class
deleted file mode 100755
index 31873a6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/iterators/UnmodifiableOrderedMapIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/AbstractKeyValue.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/AbstractKeyValue.class
deleted file mode 100755
index 3c60816..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/AbstractKeyValue.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/AbstractMapEntry.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/AbstractMapEntry.class
deleted file mode 100755
index 4c34718..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/AbstractMapEntry.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/AbstractMapEntryDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/AbstractMapEntryDecorator.class
deleted file mode 100755
index d583176..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/AbstractMapEntryDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/DefaultKeyValue.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/DefaultKeyValue.class
deleted file mode 100755
index 2c617e8..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/DefaultKeyValue.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/DefaultMapEntry.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/DefaultMapEntry.class
deleted file mode 100755
index 31234be..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/DefaultMapEntry.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/MultiKey.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/MultiKey.class
deleted file mode 100755
index 4f4c65a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/MultiKey.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/TiedMapEntry.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/TiedMapEntry.class
deleted file mode 100755
index d9d72b5..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/TiedMapEntry.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/UnmodifiableMapEntry.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/UnmodifiableMapEntry.class
deleted file mode 100755
index 3513b5a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/keyvalue/UnmodifiableMapEntry.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/AbstractLinkedList$LinkedListIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/AbstractLinkedList$LinkedListIterator.class
deleted file mode 100755
index e3d1329..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/AbstractLinkedList$LinkedListIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/AbstractLinkedList$LinkedSubList.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/AbstractLinkedList$LinkedSubList.class
deleted file mode 100755
index e7b9ae8..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/AbstractLinkedList$LinkedSubList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/AbstractLinkedList$LinkedSubListIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/AbstractLinkedList$LinkedSubListIterator.class
deleted file mode 100755
index 40a72be..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/AbstractLinkedList$LinkedSubListIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/AbstractLinkedList$Node.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/AbstractLinkedList$Node.class
deleted file mode 100755
index 954a2d8..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/AbstractLinkedList$Node.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/AbstractLinkedList.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/AbstractLinkedList.class
deleted file mode 100755
index 502d734..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/AbstractLinkedList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/AbstractListDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/AbstractListDecorator.class
deleted file mode 100755
index 3df31cd..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/AbstractListDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/AbstractSerializableListDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/AbstractSerializableListDecorator.class
deleted file mode 100755
index f908d4c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/AbstractSerializableListDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/CursorableLinkedList$Cursor.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/CursorableLinkedList$Cursor.class
deleted file mode 100755
index 9e60bd5..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/CursorableLinkedList$Cursor.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/CursorableLinkedList$SubCursor.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/CursorableLinkedList$SubCursor.class
deleted file mode 100755
index fbaa101..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/CursorableLinkedList$SubCursor.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/CursorableLinkedList.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/CursorableLinkedList.class
deleted file mode 100755
index 369fac3..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/CursorableLinkedList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/FixedSizeList$FixedSizeListIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/FixedSizeList$FixedSizeListIterator.class
deleted file mode 100755
index da2afb0..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/FixedSizeList$FixedSizeListIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/FixedSizeList.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/FixedSizeList.class
deleted file mode 100755
index e1e2d55..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/FixedSizeList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/GrowthList.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/GrowthList.class
deleted file mode 100755
index babdf5e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/GrowthList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/LazyList.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/LazyList.class
deleted file mode 100755
index 791ae90..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/LazyList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/NodeCachingLinkedList.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/NodeCachingLinkedList.class
deleted file mode 100755
index c65ae58..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/NodeCachingLinkedList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/PredicatedList$PredicatedListIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/PredicatedList$PredicatedListIterator.class
deleted file mode 100755
index 555b2b0..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/PredicatedList$PredicatedListIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/PredicatedList.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/PredicatedList.class
deleted file mode 100755
index 230192e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/PredicatedList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/SetUniqueList$SetListIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/SetUniqueList$SetListIterator.class
deleted file mode 100755
index 8fb5f6f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/SetUniqueList$SetListIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/SetUniqueList$SetListListIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/SetUniqueList$SetListListIterator.class
deleted file mode 100755
index 63196e6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/SetUniqueList$SetListListIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/SetUniqueList.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/SetUniqueList.class
deleted file mode 100755
index 7303afb..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/SetUniqueList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/SynchronizedList.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/SynchronizedList.class
deleted file mode 100755
index 15bc320..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/SynchronizedList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/TransformedList$TransformedListIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/TransformedList$TransformedListIterator.class
deleted file mode 100755
index 956d0b6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/TransformedList$TransformedListIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/TransformedList.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/TransformedList.class
deleted file mode 100755
index 5a11492..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/TransformedList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/TreeList$1.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/TreeList$1.class
deleted file mode 100755
index de453bf..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/TreeList$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/TreeList$AVLNode.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/TreeList$AVLNode.class
deleted file mode 100755
index 5edcc67..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/TreeList$AVLNode.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/TreeList$TreeListIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/TreeList$TreeListIterator.class
deleted file mode 100755
index 50cf078..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/TreeList$TreeListIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/TreeList.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/TreeList.class
deleted file mode 100755
index 1456136..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/TreeList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/TypedList.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/TypedList.class
deleted file mode 100755
index 7050040..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/TypedList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/UnmodifiableList.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/UnmodifiableList.class
deleted file mode 100755
index bfb8004..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/list/UnmodifiableList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$EntrySet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$EntrySet.class
deleted file mode 100755
index dc2aa22..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$EntrySet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$EntrySetIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$EntrySetIterator.class
deleted file mode 100755
index e62e009..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$EntrySetIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$HashEntry.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$HashEntry.class
deleted file mode 100755
index 4673af3..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$HashEntry.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$HashIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$HashIterator.class
deleted file mode 100755
index 319bc81..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$HashIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$HashMapIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$HashMapIterator.class
deleted file mode 100755
index deb5d23..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$HashMapIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$KeySet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$KeySet.class
deleted file mode 100755
index ad76d31..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$KeySet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$KeySetIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$KeySetIterator.class
deleted file mode 100755
index 531dbb9..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$KeySetIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$Values.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$Values.class
deleted file mode 100755
index 8653cf2..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$Values.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$ValuesIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$ValuesIterator.class
deleted file mode 100755
index 68c6da9..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap$ValuesIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap.class
deleted file mode 100755
index b2140f1..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractHashedMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractInputCheckedMapDecorator$EntrySet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractInputCheckedMapDecorator$EntrySet.class
deleted file mode 100755
index 0a1de16..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractInputCheckedMapDecorator$EntrySet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractInputCheckedMapDecorator$EntrySetIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractInputCheckedMapDecorator$EntrySetIterator.class
deleted file mode 100755
index ccd4a63..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractInputCheckedMapDecorator$EntrySetIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractInputCheckedMapDecorator$MapEntry.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractInputCheckedMapDecorator$MapEntry.class
deleted file mode 100755
index 0c57d0c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractInputCheckedMapDecorator$MapEntry.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractInputCheckedMapDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractInputCheckedMapDecorator.class
deleted file mode 100755
index fadf385..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractInputCheckedMapDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractLinkedMap$EntrySetIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractLinkedMap$EntrySetIterator.class
deleted file mode 100755
index 19cbd55..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractLinkedMap$EntrySetIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractLinkedMap$KeySetIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractLinkedMap$KeySetIterator.class
deleted file mode 100755
index b50d53e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractLinkedMap$KeySetIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractLinkedMap$LinkEntry.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractLinkedMap$LinkEntry.class
deleted file mode 100755
index fc91fd0..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractLinkedMap$LinkEntry.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractLinkedMap$LinkIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractLinkedMap$LinkIterator.class
deleted file mode 100755
index fbc9244..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractLinkedMap$LinkIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractLinkedMap$LinkMapIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractLinkedMap$LinkMapIterator.class
deleted file mode 100755
index ecfed48..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractLinkedMap$LinkMapIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractLinkedMap$ValuesIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractLinkedMap$ValuesIterator.class
deleted file mode 100755
index 6cb0466..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractLinkedMap$ValuesIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractLinkedMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractLinkedMap.class
deleted file mode 100755
index f468bad..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractLinkedMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractMapDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractMapDecorator.class
deleted file mode 100755
index 174f938..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractMapDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractOrderedMapDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractOrderedMapDecorator.class
deleted file mode 100755
index 35c1907..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractOrderedMapDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceEntry.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceEntry.class
deleted file mode 100755
index bb911ab..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceEntry.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceEntrySet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceEntrySet.class
deleted file mode 100755
index 76e0b19..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceEntrySet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceEntrySetIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceEntrySetIterator.class
deleted file mode 100755
index aeb4ac8..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceEntrySetIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceKeySet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceKeySet.class
deleted file mode 100755
index 85712fd..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceKeySet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceKeySetIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceKeySetIterator.class
deleted file mode 100755
index d38112b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceKeySetIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceMapIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceMapIterator.class
deleted file mode 100755
index 71b8f5a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceMapIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceValues.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceValues.class
deleted file mode 100755
index f0a215e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceValues.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceValuesIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceValuesIterator.class
deleted file mode 100755
index 64c07bc..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$ReferenceValuesIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$SoftRef.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$SoftRef.class
deleted file mode 100755
index 17ad0a0..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$SoftRef.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$WeakRef.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$WeakRef.class
deleted file mode 100755
index 3f2c65f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap$WeakRef.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap.class
deleted file mode 100755
index cc0fb78..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractReferenceMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractSortedMapDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractSortedMapDecorator.class
deleted file mode 100755
index ee99feb..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/AbstractSortedMapDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/CaseInsensitiveMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/CaseInsensitiveMap.class
deleted file mode 100755
index 882f3d5..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/CaseInsensitiveMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/CompositeMap$MapMutator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/CompositeMap$MapMutator.class
deleted file mode 100755
index ca7eb51..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/CompositeMap$MapMutator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/CompositeMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/CompositeMap.class
deleted file mode 100755
index 5938a16..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/CompositeMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/DefaultedMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/DefaultedMap.class
deleted file mode 100755
index 52ca171..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/DefaultedMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/FixedSizeMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/FixedSizeMap.class
deleted file mode 100755
index b49480d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/FixedSizeMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/FixedSizeSortedMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/FixedSizeSortedMap.class
deleted file mode 100755
index 6e24761..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/FixedSizeSortedMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map$EntrySet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map$EntrySet.class
deleted file mode 100755
index 4305b82..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map$EntrySet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map$EntrySetIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map$EntrySetIterator.class
deleted file mode 100755
index 90466d6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map$EntrySetIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map$FlatMapIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map$FlatMapIterator.class
deleted file mode 100755
index 5581918..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map$FlatMapIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map$KeySet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map$KeySet.class
deleted file mode 100755
index 80c30b6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map$KeySet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map$KeySetIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map$KeySetIterator.class
deleted file mode 100755
index c615564..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map$KeySetIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map$Values.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map$Values.class
deleted file mode 100755
index 45a20b0..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map$Values.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map$ValuesIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map$ValuesIterator.class
deleted file mode 100755
index e2d71e3..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map$ValuesIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map.class
deleted file mode 100755
index c1546d5..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/Flat3Map.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/HashedMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/HashedMap.class
deleted file mode 100755
index d2cd236..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/HashedMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/IdentityMap$IdentityEntry.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/IdentityMap$IdentityEntry.class
deleted file mode 100755
index a5c849b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/IdentityMap$IdentityEntry.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/IdentityMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/IdentityMap.class
deleted file mode 100755
index 430261d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/IdentityMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/LRUMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/LRUMap.class
deleted file mode 100755
index 34a126e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/LRUMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/LazyMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/LazyMap.class
deleted file mode 100755
index 1a4c132..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/LazyMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/LazySortedMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/LazySortedMap.class
deleted file mode 100755
index 9fbf35a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/LazySortedMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/LinkedMap$LinkedMapList.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/LinkedMap$LinkedMapList.class
deleted file mode 100755
index 86385e2..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/LinkedMap$LinkedMapList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/LinkedMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/LinkedMap.class
deleted file mode 100755
index 26a2aab..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/LinkedMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$1.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$1.class
deleted file mode 100755
index 671ce9a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$2.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$2.class
deleted file mode 100755
index b006cad..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$2.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$EntrySetView.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$EntrySetView.class
deleted file mode 100755
index 3d1f70e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$EntrySetView.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$KeySetView.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$KeySetView.class
deleted file mode 100755
index 1ad6fa4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$KeySetView.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$ListOrderedIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$ListOrderedIterator.class
deleted file mode 100755
index 2ea3d43..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$ListOrderedIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$ListOrderedMapEntry.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$ListOrderedMapEntry.class
deleted file mode 100755
index b71c0bb..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$ListOrderedMapEntry.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$ListOrderedMapIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$ListOrderedMapIterator.class
deleted file mode 100755
index 9abb322..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$ListOrderedMapIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$ValuesView.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$ValuesView.class
deleted file mode 100755
index 6691864..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap$ValuesView.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap.class
deleted file mode 100755
index 4360664..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ListOrderedMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/MultiKeyMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/MultiKeyMap.class
deleted file mode 100755
index 2ceb40b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/MultiKeyMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/MultiValueMap$1.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/MultiValueMap$1.class
deleted file mode 100755
index 2bbc0d5..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/MultiValueMap$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/MultiValueMap$ReflectionFactory.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/MultiValueMap$ReflectionFactory.class
deleted file mode 100755
index 33478e2..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/MultiValueMap$ReflectionFactory.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/MultiValueMap$Values.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/MultiValueMap$Values.class
deleted file mode 100755
index 284089d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/MultiValueMap$Values.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/MultiValueMap$ValuesIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/MultiValueMap$ValuesIterator.class
deleted file mode 100755
index 711fa9a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/MultiValueMap$ValuesIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/MultiValueMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/MultiValueMap.class
deleted file mode 100755
index 6c08e36..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/MultiValueMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/PredicatedMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/PredicatedMap.class
deleted file mode 100755
index c0c0c5a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/PredicatedMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/PredicatedSortedMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/PredicatedSortedMap.class
deleted file mode 100755
index 9c3ec12..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/PredicatedSortedMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ReferenceIdentityMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ReferenceIdentityMap.class
deleted file mode 100755
index 35434c0..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ReferenceIdentityMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ReferenceMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ReferenceMap.class
deleted file mode 100755
index 9e33b78..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/ReferenceMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/SingletonMap$SingletonMapIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/SingletonMap$SingletonMapIterator.class
deleted file mode 100755
index c33881f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/SingletonMap$SingletonMapIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/SingletonMap$SingletonValues.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/SingletonMap$SingletonValues.class
deleted file mode 100755
index 703aaca..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/SingletonMap$SingletonValues.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/SingletonMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/SingletonMap.class
deleted file mode 100755
index 51fd6a2..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/SingletonMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$1.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$1.class
deleted file mode 100755
index 547345d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$EntryIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$EntryIterator.class
deleted file mode 100755
index ee6e53a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$EntryIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$EntrySet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$EntrySet.class
deleted file mode 100755
index 155f3b4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$EntrySet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$KeyIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$KeyIterator.class
deleted file mode 100755
index 68dc972..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$KeyIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$KeySet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$KeySet.class
deleted file mode 100755
index f8ec4f2..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$KeySet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$Lock.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$Lock.class
deleted file mode 100755
index 86d4fc1..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$Lock.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$Node.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$Node.class
deleted file mode 100755
index 5d5390d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$Node.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$ValueIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$ValueIterator.class
deleted file mode 100755
index 3d3f20e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$ValueIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$Values.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$Values.class
deleted file mode 100755
index 766f2cf..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap$Values.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap.class
deleted file mode 100755
index 50b4b17..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/StaticBucketMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/TransformedMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/TransformedMap.class
deleted file mode 100755
index a8f21f2..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/TransformedMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/TransformedSortedMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/TransformedSortedMap.class
deleted file mode 100755
index 4b005ec..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/TransformedSortedMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/TypedMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/TypedMap.class
deleted file mode 100755
index 97306b9..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/TypedMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/TypedSortedMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/TypedSortedMap.class
deleted file mode 100755
index 3d7c825..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/TypedSortedMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/UnmodifiableEntrySet$UnmodifiableEntry.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/UnmodifiableEntrySet$UnmodifiableEntry.class
deleted file mode 100755
index 729415d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/UnmodifiableEntrySet$UnmodifiableEntry.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/UnmodifiableEntrySet$UnmodifiableEntrySetIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/UnmodifiableEntrySet$UnmodifiableEntrySetIterator.class
deleted file mode 100755
index d0b1fb9..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/UnmodifiableEntrySet$UnmodifiableEntrySetIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/UnmodifiableEntrySet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/UnmodifiableEntrySet.class
deleted file mode 100755
index 902220f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/UnmodifiableEntrySet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/UnmodifiableMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/UnmodifiableMap.class
deleted file mode 100755
index 3e979fb..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/UnmodifiableMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/UnmodifiableOrderedMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/UnmodifiableOrderedMap.class
deleted file mode 100755
index 2b91bed..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/UnmodifiableOrderedMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/UnmodifiableSortedMap.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/UnmodifiableSortedMap.class
deleted file mode 100755
index 6f4957c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/map/UnmodifiableSortedMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/AbstractSerializableSetDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/AbstractSerializableSetDecorator.class
deleted file mode 100755
index 12daf45..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/AbstractSerializableSetDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/AbstractSetDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/AbstractSetDecorator.class
deleted file mode 100755
index e95de01..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/AbstractSetDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/AbstractSortedSetDecorator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/AbstractSortedSetDecorator.class
deleted file mode 100755
index 0e2547a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/AbstractSortedSetDecorator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/CompositeSet$SetMutator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/CompositeSet$SetMutator.class
deleted file mode 100755
index 32c3ea0..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/CompositeSet$SetMutator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/CompositeSet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/CompositeSet.class
deleted file mode 100755
index 9bd8014..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/CompositeSet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/ListOrderedSet$1.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/ListOrderedSet$1.class
deleted file mode 100755
index 7a44be1..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/ListOrderedSet$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/ListOrderedSet$OrderedSetIterator.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/ListOrderedSet$OrderedSetIterator.class
deleted file mode 100755
index a42713d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/ListOrderedSet$OrderedSetIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/ListOrderedSet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/ListOrderedSet.class
deleted file mode 100755
index f72bc81..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/ListOrderedSet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/MapBackedSet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/MapBackedSet.class
deleted file mode 100755
index 754b614..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/MapBackedSet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/PredicatedSet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/PredicatedSet.class
deleted file mode 100755
index 8b90218..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/PredicatedSet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/PredicatedSortedSet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/PredicatedSortedSet.class
deleted file mode 100755
index 2e852c6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/PredicatedSortedSet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/SynchronizedSet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/SynchronizedSet.class
deleted file mode 100755
index 0ce01a6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/SynchronizedSet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/SynchronizedSortedSet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/SynchronizedSortedSet.class
deleted file mode 100755
index ff93667..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/SynchronizedSortedSet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/TransformedSet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/TransformedSet.class
deleted file mode 100755
index 0d45b94..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/TransformedSet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/TransformedSortedSet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/TransformedSortedSet.class
deleted file mode 100755
index 85e53d7..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/TransformedSortedSet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/TypedSet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/TypedSet.class
deleted file mode 100755
index ae3638a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/TypedSet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/TypedSortedSet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/TypedSortedSet.class
deleted file mode 100755
index e1b02e9..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/TypedSortedSet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/UnmodifiableSet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/UnmodifiableSet.class
deleted file mode 100755
index b5753d4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/UnmodifiableSet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/UnmodifiableSortedSet.class b/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/UnmodifiableSortedSet.class
deleted file mode 100755
index 0d91880..0000000
--- a/dependencies/plugins/org.apache.commons.collections/org/apache/commons/collections/set/UnmodifiableSortedSet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.collections/plugin.properties b/dependencies/plugins/org.apache.commons.collections/plugin.properties
deleted file mode 100755
index 3219fa5..0000000
--- a/dependencies/plugins/org.apache.commons.collections/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-################################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials 
-# are made available under the terms of the Eclipse Public License v1.0 
-# which accompanies this distribution, and is available at 
-# http://www.eclipse.org/legal/epl-v10.html 
-# 
-# Contributors: 
-# Chris Aniszczyk - initial API and implementation 
-################################################################################
-pluginName=Apache Commons Collections
-providerName=Eclipse.org
\ No newline at end of file
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/META-INF/MANIFEST.MF b/dependencies/plugins/org.apache.commons.collections/source-bundle/META-INF/MANIFEST.MF
deleted file mode 100755
index 7b300a7..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.apache.commons.collections.source
-Bundle-Version: 3.2.0.qualifier
-Bundle-Localization: plugin
-Bundle-Vendor: %providerName
-Eclipse-SourceBundle: org.apache.commons.collections;version="3.2.0.qualifier"
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/about.html b/dependencies/plugins/org.apache.commons.collections/source-bundle/about.html
deleted file mode 100755
index be61750..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/about.html
+++ /dev/null
@@ -1,55 +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>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>June 8, 2007</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was 
-provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
-		
-<h3>Third Party Content</h3>
-<p>The Content includes items that have been sourced from third parties as set out below. If you 
-did not receive this Content directly from the Eclipse Foundation, the following is provided 
-for informational purposes only, and you should look to the Redistributor&rsquo;s license for 
-terms and conditions of use.</p>
-
-<h4>Commons Collections 3.2</h4>
-<p>The plug-in includes Commons Collections 3.2 (&quot;Commons Collections&quot;) developed by the Apache Software Foundation as part of the Apache Commons project.  Therefore:</p>
-
-<blockquote>
-This product includes software developed by the Apache Software Foundation (<a href="http://www.apache.org/">http://www.apache.org/</a>).
-</blockquote>
-
-<p>The Commons Collections binary code is included with no modifications except postprocessing
-(pack200 conditioning and signing). The corresponding Commons Collections source code is located in src.zip.</p>
-
-<p>Commons Net is:</p>
-
-<blockquote>Copyright (c) 1997-2005 The Apache Software Foundation. All rights reserved.</blockquote>
-
-<p>Your use of the Commons Collections code is subject to the terms and conditions of the Apache Software License 2.0.  A copy of the license is contained
-in the file <a href="about_files/LICENSE.txt">LICENSE.txt</a> and is also available at <a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a>.
-
-<p>The Apache attribution <a href="about_files/NOTICE.txt">NOTICE.txt</a> file is included with the Content in accordance with 4d of the Apache License, Version 2.0.</p>
-
-<p>Examples and documentation as well as updated source code for Commons Collections is available at <a href="http://commons.apache.org/collections/">http://commons.apache.org/collections/</a>.</p>
-
-</body>
-</html>
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/about_files/LICENSE.txt b/dependencies/plugins/org.apache.commons.collections/source-bundle/about_files/LICENSE.txt
deleted file mode 100755
index d645695..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/about_files/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/dependencies/plugins/org.apache.commons.collections/source-bundle/about_files/NOTICE.txt b/dependencies/plugins/org.apache.commons.collections/source-bundle/about_files/NOTICE.txt
deleted file mode 100755
index 3f59805..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/about_files/NOTICE.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/about_files/README.txt b/dependencies/plugins/org.apache.commons.collections/source-bundle/about_files/README.txt
deleted file mode 100755
index 7d7c453..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/about_files/README.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Jakarta Commons Collections
-===========================
-
-Welcome to the Collections component of the Jakarta Commons project.
-This component contains many new collections and collection utilities.
-
-Two jar files are produced by this component.
-The first, commons-collections.jar is the main jar used by applications.
-The second, commons-collections-testframework.jar is an extension to junit
-for testing new collection implementations and is not normally used by applications.
-
-
-Building from source
---------------------
-This component requires the excellent Ant utility.
-It can be found here :
-
-  http://ant.apache.org/
-
-For testing the project, you will also need JUnit :
-
-  http://www.junit.org/
-
-To let the test process find JUnit, you may make a 
-copy of the build.properties.sample file, rename to
-build.properties,  and modify to reflect
-the location of the junit.jar on your computer.
-
-
-Once you have Ant properly installed, and the
-build.properties file correctly reflects the location
-of your junit.jar, you are ready to build and test.
-The major targets are:
-
-ant compile      - compile the code
-ant test         - test using junit
-ant jar          - create a jar file
-ant javadoc      - build the javadoc
-ant dist         - create folders as per a distribution
-ant tf.jar       - create the testframework jar file
-ant tf.javadoc   - build the testframework javadoc
-
-
-Maven
------
-The component can also be built using Maven. (Ant is the primary build tool.)
-It can be found here :
-
-  http://maven.apache.org/
-
-Once installed, the jars may be built with 'maven jar'.
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/build.properties b/dependencies/plugins/org.apache.commons.collections/source-bundle/build.properties
deleted file mode 100755
index 4554292..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/build.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials 
-# are made available under the terms of the Common Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/cpl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = about.html,\
-               about_files/,\
-               plugin.properties,\
-               META-INF/,\
-               org/
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ArrayStack.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ArrayStack.java
deleted file mode 100755
index 614306a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ArrayStack.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.ArrayList;
-import java.util.EmptyStackException;
-
-/**
- * An implementation of the {@link java.util.Stack} API that is based on an
- * <code>ArrayList</code> instead of a <code>Vector</code>, so it is not
- * synchronized to protect against multi-threaded access.  The implementation
- * is therefore operates faster in environments where you do not need to
- * worry about multiple thread contention.
- * <p>
- * The removal order of an <code>ArrayStack</code> is based on insertion 
- * order: The most recently added element is removed first.  The iteration
- * order is <i>not</i> the same as the removal order.  The iterator returns
- * elements from the bottom up, whereas the {@link #remove()} method removes
- * them from the top down.
- * <p>
- * Unlike <code>Stack</code>, <code>ArrayStack</code> accepts null entries.
- *
- * @see java.util.Stack
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- * 
- * @author Craig R. McClanahan
- * @author Paul Jack
- * @author Stephen Colebourne
- */
-public class ArrayStack extends ArrayList implements Buffer {
-
-    /** Ensure serialization compatibility */    
-    private static final long serialVersionUID = 2130079159931574599L;
-
-    /**
-     * Constructs a new empty <code>ArrayStack</code>. The initial size
-     * is controlled by <code>ArrayList</code> and is currently 10.
-     */
-    public ArrayStack() {
-        super();
-    }
-
-    /**
-     * Constructs a new empty <code>ArrayStack</code> with an initial size.
-     * 
-     * @param initialSize  the initial size to use
-     * @throws IllegalArgumentException  if the specified initial size
-     *  is negative
-     */
-    public ArrayStack(int initialSize) {
-        super(initialSize);
-    }
-
-    /**
-     * Return <code>true</code> if this stack is currently empty.
-     * <p>
-     * This method exists for compatibility with <code>java.util.Stack</code>.
-     * New users of this class should use <code>isEmpty</code> instead.
-     * 
-     * @return true if the stack is currently empty
-     */
-    public boolean empty() {
-        return isEmpty();
-    }
-
-    /**
-     * Returns the top item off of this stack without removing it.
-     *
-     * @return the top item on the stack
-     * @throws EmptyStackException  if the stack is empty
-     */
-    public Object peek() throws EmptyStackException {
-        int n = size();
-        if (n <= 0) {
-            throw new EmptyStackException();
-        } else {
-            return get(n - 1);
-        }
-    }
-
-    /**
-     * Returns the n'th item down (zero-relative) from the top of this
-     * stack without removing it.
-     *
-     * @param n  the number of items down to go
-     * @return the n'th item on the stack, zero relative
-     * @throws EmptyStackException  if there are not enough items on the
-     *  stack to satisfy this request
-     */
-    public Object peek(int n) throws EmptyStackException {
-        int m = (size() - n) - 1;
-        if (m < 0) {
-            throw new EmptyStackException();
-        } else {
-            return get(m);
-        }
-    }
-
-    /**
-     * Pops the top item off of this stack and return it.
-     *
-     * @return the top item on the stack
-     * @throws EmptyStackException  if the stack is empty
-     */
-    public Object pop() throws EmptyStackException {
-        int n = size();
-        if (n <= 0) {
-            throw new EmptyStackException();
-        } else {
-            return remove(n - 1);
-        }
-    }
-
-    /**
-     * Pushes a new item onto the top of this stack. The pushed item is also
-     * returned. This is equivalent to calling <code>add</code>.
-     *
-     * @param item  the item to be added
-     * @return the item just pushed
-     */
-    public Object push(Object item) {
-        add(item);
-        return item;
-    }
-
-    /**
-     * Returns the one-based position of the distance from the top that the
-     * specified object exists on this stack, where the top-most element is
-     * considered to be at distance <code>1</code>.  If the object is not
-     * present on the stack, return <code>-1</code> instead.  The
-     * <code>equals()</code> method is used to compare to the items
-     * in this stack.
-     *
-     * @param object  the object to be searched for
-     * @return the 1-based depth into the stack of the object, or -1 if not found
-     */
-    public int search(Object object) {
-        int i = size() - 1;        // Current index
-        int n = 1;                 // Current distance
-        while (i >= 0) {
-            Object current = get(i);
-            if ((object == null && current == null) ||
-                (object != null && object.equals(current))) {
-                return n;
-            }
-            i--;
-            n++;
-        }
-        return -1;
-    }
-
-    /**
-     * Returns the element on the top of the stack.
-     *
-     * @return the element on the top of the stack
-     * @throws BufferUnderflowException  if the stack is empty
-     */
-    public Object get() {
-        int size = size();
-        if (size == 0) {
-            throw new BufferUnderflowException();
-        }
-        return get(size - 1);
-    }
-
-    /**
-     * Removes the element on the top of the stack.
-     *
-     * @return the removed element 
-     * @throws BufferUnderflowException  if the stack is empty
-     */
-    public Object remove() {
-        int size = size();
-        if (size == 0) {
-            throw new BufferUnderflowException();
-        }
-        return remove(size - 1);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/Bag.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/Bag.java
deleted file mode 100755
index cc5bd9c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/Bag.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Set;
-
-/**
- * Defines a collection that counts the number of times an object appears in
- * the collection.
- * <p>
- * Suppose you have a Bag that contains <code>{a, a, b, c}</code>.
- * Calling {@link #getCount(Object)} on <code>a</code> would return 2, while
- * calling {@link #uniqueSet()} would return <code>{a, b, c}</code>.
- * <p>
- * <i>NOTE: This interface violates the {@link Collection} contract.</i> 
- * The behavior specified in many of these methods is <i>not</i> the same
- * as the behavior specified by <code>Collection</code>.
- * The noncompliant methods are clearly marked with "(Violation)".
- * Exercise caution when using a bag as a <code>Collection</code>.
- * <p>
- * This violation resulted from the original specification of this interface.
- * In an ideal world, the interface would be changed to fix the problems, however
- * it has been decided to maintain backwards compatibility instead.
- *
- * @since Commons Collections 2.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author Chuck Burdick
- * @author Stephen Colebourne
- */
-public interface Bag extends Collection {
-
-    /**
-     * Returns the number of occurrences (cardinality) of the given
-     * object currently in the bag. If the object does not exist in the
-     * bag, return 0.
-     * 
-     * @param object  the object to search for
-     * @return the number of occurrences of the object, zero if not found
-     */
-    int getCount(Object object);
-
-    /**
-     * <i>(Violation)</i>
-     * Adds one copy the specified object to the Bag.
-     * <p>
-     * If the object is already in the {@link #uniqueSet()} then increment its
-     * count as reported by {@link #getCount(Object)}. Otherwise add it to the
-     * {@link #uniqueSet()} and report its count as 1.
-     * <p>
-     * Since this method always increases the size of the bag,
-     * according to the {@link Collection#add(Object)} contract, it 
-     * should always return <code>true</code>.  Since it sometimes returns
-     * <code>false</code>, this method violates the contract.
-     *
-     * @param object  the object to add
-     * @return <code>true</code> if the object was not already in the <code>uniqueSet</code>
-     */
-    boolean add(Object object);
-
-    /**
-     * Adds <code>nCopies</code> copies of the specified object to the Bag.
-     * <p>
-     * If the object is already in the {@link #uniqueSet()} then increment its
-     * count as reported by {@link #getCount(Object)}. Otherwise add it to the
-     * {@link #uniqueSet()} and report its count as <code>nCopies</code>.
-     * 
-     * @param object  the object to add
-     * @param nCopies  the number of copies to add
-     * @return <code>true</code> if the object was not already in the <code>uniqueSet</code>
-     */
-    boolean add(Object object, int nCopies);
-
-    /**
-     * <i>(Violation)</i>
-     * Removes all occurrences of the given object from the bag.
-     * <p>
-     * This will also remove the object from the {@link #uniqueSet()}.
-     * <p>
-     * According to the {@link Collection#remove(Object)} method,
-     * this method should only remove the <i>first</i> occurrence of the
-     * given object, not <i>all</i> occurrences.
-     *
-     * @return <code>true</code> if this call changed the collection
-     */
-    boolean remove(Object object);
-
-    /**
-     * Removes <code>nCopies</code> copies of the specified object from the Bag.
-     * <p>
-     * If the number of copies to remove is greater than the actual number of
-     * copies in the Bag, no error is thrown.
-     * 
-     * @param object  the object to remove
-     * @param nCopies  the number of copies to remove
-     * @return <code>true</code> if this call changed the collection
-     */
-    boolean remove(Object object, int nCopies);
-
-    /**
-     * Returns a {@link Set} of unique elements in the Bag.
-     * <p>
-     * Uniqueness constraints are the same as those in {@link java.util.Set}.
-     * 
-     * @return the Set of unique Bag elements
-     */
-    Set uniqueSet();
-
-    /**
-     * Returns the total number of items in the bag across all types.
-     * 
-     * @return the total size of the Bag
-     */
-    int size();
-
-    /**
-     * <i>(Violation)</i>
-     * Returns <code>true</code> if the bag contains all elements in
-     * the given collection, respecting cardinality.  That is, if the
-     * given collection <code>coll</code> contains <code>n</code> copies
-     * of a given object, calling {@link #getCount(Object)} on that object must
-     * be <code>&gt;= n</code> for all <code>n</code> in <code>coll</code>.
-     * <p>
-     * The {@link Collection#containsAll(Collection)} method specifies
-     * that cardinality should <i>not</i> be respected; this method should
-     * return true if the bag contains at least one of every object contained
-     * in the given collection.
-     * 
-     * @param coll  the collection to check against
-     * @return <code>true</code> if the Bag contains all the collection
-     */
-    boolean containsAll(Collection coll);
-
-    /**
-     * <i>(Violation)</i>
-     * Remove all elements represented in the given collection,
-     * respecting cardinality.  That is, if the given collection
-     * <code>coll</code> contains <code>n</code> copies of a given object,
-     * the bag will have <code>n</code> fewer copies, assuming the bag
-     * had at least <code>n</code> copies to begin with.
-     *
-     * <P>The {@link Collection#removeAll(Collection)} method specifies
-     * that cardinality should <i>not</i> be respected; this method should
-     * remove <i>all</i> occurrences of every object contained in the 
-     * given collection.
-     *
-     * @param coll  the collection to remove
-     * @return <code>true</code> if this call changed the collection
-     */
-    boolean removeAll(Collection coll);
-
-    /**
-     * <i>(Violation)</i>
-     * Remove any members of the bag that are not in the given
-     * collection, respecting cardinality.  That is, if the given
-     * collection <code>coll</code> contains <code>n</code> copies of a
-     * given object and the bag has <code>m &gt; n</code> copies, then
-     * delete <code>m - n</code> copies from the bag.  In addition, if
-     * <code>e</code> is an object in the bag but
-     * <code>!coll.contains(e)</code>, then remove <code>e</code> and any
-     * of its copies.
-     *
-     * <P>The {@link Collection#retainAll(Collection)} method specifies
-     * that cardinality should <i>not</i> be respected; this method should
-     * keep <i>all</i> occurrences of every object contained in the 
-     * given collection.
-     *
-     * @param coll  the collection to retain
-     * @return <code>true</code> if this call changed the collection
-     */
-    boolean retainAll(Collection coll);
-
-    /**
-     * Returns an {@link Iterator} over the entire set of members,
-     * including copies due to cardinality. This iterator is fail-fast
-     * and will not tolerate concurrent modifications.
-     * 
-     * @return iterator over all elements in the Bag
-     */
-    Iterator iterator();
-
-    // The following is not part of the formal Bag interface, however where possible
-    // Bag implementations should follow these comments.
-//    /**
-//     * Compares this Bag to another.
-//     * This Bag equals another Bag if it contains the same number of occurrences of
-//     * the same elements.
-//     * This equals definition is compatible with the Set interface.
-//     * 
-//     * @param obj  the Bag to compare to
-//     * @return true if equal
-//     */
-//    boolean equals(Object obj);
-//
-//    /**
-//     * Gets a hash code for the Bag compatible with the definition of equals.
-//     * The hash code is defined as the sum total of a hash code for each element.
-//     * The per element hash code is defined as
-//     * <code>(e==null ? 0 : e.hashCode()) ^ noOccurances)</code>.
-//     * This hash code definition is compatible with the Set interface.
-//     * 
-//     * @return the hash code of the Bag
-//     */
-//    int hashCode();
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BagUtils.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BagUtils.java
deleted file mode 100755
index 9ad377c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BagUtils.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import org.apache.commons.collections.bag.HashBag;
-import org.apache.commons.collections.bag.PredicatedBag;
-import org.apache.commons.collections.bag.PredicatedSortedBag;
-import org.apache.commons.collections.bag.SynchronizedBag;
-import org.apache.commons.collections.bag.SynchronizedSortedBag;
-import org.apache.commons.collections.bag.TransformedBag;
-import org.apache.commons.collections.bag.TransformedSortedBag;
-import org.apache.commons.collections.bag.TreeBag;
-import org.apache.commons.collections.bag.TypedBag;
-import org.apache.commons.collections.bag.TypedSortedBag;
-import org.apache.commons.collections.bag.UnmodifiableBag;
-import org.apache.commons.collections.bag.UnmodifiableSortedBag;
-
-/**
- * Provides utility methods and decorators for
- * {@link Bag} and {@link SortedBag} instances.
- *
- * @since Commons Collections 2.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author Paul Jack
- * @author Stephen Colebourne
- * @author Andrew Freeman
- * @author Matthew Hawthorne
- */
-public class BagUtils {
-
-    /**
-     * An empty unmodifiable bag.
-     */
-    public static final Bag EMPTY_BAG = UnmodifiableBag.decorate(new HashBag());
-
-    /**
-     * An empty unmodifiable sorted bag.
-     */
-    public static final Bag EMPTY_SORTED_BAG = UnmodifiableSortedBag.decorate(new TreeBag());
-
-    /**
-     * Instantiation of BagUtils is not intended or required.
-     * However, some tools require an instance to operate.
-     */
-    public BagUtils() {
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns a synchronized (thread-safe) bag backed by the given bag.
-     * In order to guarantee serial access, it is critical that all 
-     * access to the backing bag is accomplished through the returned bag.
-     * <p>
-     * It is imperative that the user manually synchronize on the returned
-     * bag when iterating over it:
-     *
-     * <pre>
-     * Bag bag = BagUtils.synchronizedBag(new HashBag());
-     * ...
-     * synchronized(bag) {
-     *     Iterator i = bag.iterator(); // Must be in synchronized block
-     *     while (i.hasNext())
-     *         foo(i.next());
-     *     }
-     * }
-     * </pre>
-     *
-     * Failure to follow this advice may result in non-deterministic 
-     * behavior.
-     *
-     * @param bag  the bag to synchronize, must not be null
-     * @return a synchronized bag backed by that bag
-     * @throws IllegalArgumentException  if the Bag is null
-     */
-    public static Bag synchronizedBag(Bag bag) {
-        return SynchronizedBag.decorate(bag);
-    }
-
-    /**
-     * Returns an unmodifiable view of the given bag.  Any modification
-     * attempts to the returned bag will raise an 
-     * {@link UnsupportedOperationException}.
-     *
-     * @param bag  the bag whose unmodifiable view is to be returned, must not be null
-     * @return an unmodifiable view of that bag
-     * @throws IllegalArgumentException  if the Bag is null
-     */
-    public static Bag unmodifiableBag(Bag bag) {
-        return UnmodifiableBag.decorate(bag);
-    }
-    
-    /**
-     * Returns a predicated (validating) bag backed by the given bag.
-     * <p>
-     * Only objects that pass the test in the given predicate can be added to the bag.
-     * Trying to add an invalid object results in an IllegalArgumentException.
-     * It is important not to use the original bag after invoking this method,
-     * as it is a backdoor for adding invalid objects.
-     *
-     * @param bag  the bag to predicate, must not be null
-     * @param predicate  the predicate for the bag, must not be null
-     * @return a predicated bag backed by the given bag
-     * @throws IllegalArgumentException  if the Bag or Predicate is null
-     */
-    public static Bag predicatedBag(Bag bag, Predicate predicate) {
-        return PredicatedBag.decorate(bag, predicate);
-    }
-    
-    /**
-     * Returns a typed bag backed by the given bag.
-     * <p>
-     * Only objects of the specified type can be added to the bag.
-     * 
-     * @param bag  the bag to limit to a specific type, must not be null
-     * @param type  the type of objects which may be added to the bag
-     * @return a typed bag backed by the specified bag
-     */
-    public static Bag typedBag(Bag bag, Class type) {
-        return TypedBag.decorate(bag, type);
-    }
-    
-    /**
-     * Returns a transformed bag backed by the given bag.
-     * <p>
-     * Each object is passed through the transformer as it is added to the
-     * Bag. It is important not to use the original bag after invoking this 
-     * method, as it is a backdoor for adding untransformed objects.
-     *
-     * @param bag  the bag to predicate, must not be null
-     * @param transformer  the transformer for the bag, must not be null
-     * @return a transformed bag backed by the given bag
-     * @throws IllegalArgumentException  if the Bag or Transformer is null
-     */
-    public static Bag transformedBag(Bag bag, Transformer transformer) {
-        return TransformedBag.decorate(bag, transformer);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Returns a synchronized (thread-safe) sorted bag backed by the given 
-     * sorted bag.
-     * In order to guarantee serial access, it is critical that all 
-     * access to the backing bag is accomplished through the returned bag.
-     * <p>
-     * It is imperative that the user manually synchronize on the returned
-     * bag when iterating over it:
-     *
-     * <pre>
-     * SortedBag bag = BagUtils.synchronizedSortedBag(new TreeBag());
-     * ...
-     * synchronized(bag) {
-     *     Iterator i = bag.iterator(); // Must be in synchronized block
-     *     while (i.hasNext())
-     *         foo(i.next());
-     *     }
-     * }
-     * </pre>
-     *
-     * Failure to follow this advice may result in non-deterministic 
-     * behavior.
-     *
-     * @param bag  the bag to synchronize, must not be null
-     * @return a synchronized bag backed by that bag
-     * @throws IllegalArgumentException  if the SortedBag is null
-     */
-    public static SortedBag synchronizedSortedBag(SortedBag bag) {
-        return SynchronizedSortedBag.decorate(bag);
-    }
-    
-    /**
-     * Returns an unmodifiable view of the given sorted bag.  Any modification
-     * attempts to the returned bag will raise an 
-     * {@link UnsupportedOperationException}.
-     *
-     * @param bag  the bag whose unmodifiable view is to be returned, must not be null
-     * @return an unmodifiable view of that bag
-     * @throws IllegalArgumentException  if the SortedBag is null
-     */
-    public static SortedBag unmodifiableSortedBag(SortedBag bag) {
-        return UnmodifiableSortedBag.decorate(bag);
-    }
-    
-    /**
-     * Returns a predicated (validating) sorted bag backed by the given sorted bag.
-     * <p>
-     * Only objects that pass the test in the given predicate can be added to the bag.
-     * Trying to add an invalid object results in an IllegalArgumentException.
-     * It is important not to use the original bag after invoking this method,
-     * as it is a backdoor for adding invalid objects.
-     *
-     * @param bag  the sorted bag to predicate, must not be null
-     * @param predicate  the predicate for the bag, must not be null
-     * @return a predicated bag backed by the given bag
-     * @throws IllegalArgumentException  if the SortedBag or Predicate is null
-     */
-    public static SortedBag predicatedSortedBag(SortedBag bag, Predicate predicate) {
-        return PredicatedSortedBag.decorate(bag, predicate);
-    }
-    
-    /**
-     * Returns a typed sorted bag backed by the given bag.
-     * <p>
-     * Only objects of the specified type can be added to the bag.
-     * 
-     * @param bag  the bag to limit to a specific type, must not be null
-     * @param type  the type of objects which may be added to the bag
-     * @return a typed bag backed by the specified bag
-     */
-    public static SortedBag typedSortedBag(SortedBag bag, Class type) {
-        return TypedSortedBag.decorate(bag, type);
-    }
-    
-    /**
-     * Returns a transformed sorted bag backed by the given bag.
-     * <p>
-     * Each object is passed through the transformer as it is added to the
-     * Bag. It is important not to use the original bag after invoking this 
-     * method, as it is a backdoor for adding untransformed objects.
-     *
-     * @param bag  the bag to predicate, must not be null
-     * @param transformer  the transformer for the bag, must not be null
-     * @return a transformed bag backed by the given bag
-     * @throws IllegalArgumentException  if the Bag or Transformer is null
-     */
-    public static SortedBag transformedSortedBag(SortedBag bag, Transformer transformer) {
-        return TransformedSortedBag.decorate(bag, transformer);
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BeanMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BeanMap.java
deleted file mode 100755
index 42be963..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BeanMap.java
+++ /dev/null
@@ -1,803 +0,0 @@
-/*
- *  Copyright 2001-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.beans.BeanInfo;
-import java.beans.IntrospectionException;
-import java.beans.Introspector;
-import java.beans.PropertyDescriptor;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.AbstractMap;
-import java.util.AbstractSet;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.apache.commons.collections.list.UnmodifiableList;
-import org.apache.commons.collections.keyvalue.AbstractMapEntry;
-import org.apache.commons.collections.set.UnmodifiableSet;
-
-/** 
- * An implementation of Map for JavaBeans which uses introspection to
- * get and put properties in the bean.
- * <p>
- * If an exception occurs during attempts to get or set a property then the
- * property is considered non existent in the Map
- *
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- * 
- * @author James Strachan
- * @author Stephen Colebourne
- * @author Dimiter Dimitrov
- * 
- * @deprecated Identical class now available in commons-beanutils (full jar version).
- * This version is due to be removed in collections v4.0.
- */
-public class BeanMap extends AbstractMap implements Cloneable {
-
-    private transient Object bean;
-
-    private transient HashMap readMethods = new HashMap();
-    private transient HashMap writeMethods = new HashMap();
-    private transient HashMap types = new HashMap();
-
-    /**
-     * An empty array.  Used to invoke accessors via reflection.
-     */
-    public static final Object[] NULL_ARGUMENTS = {};
-
-    /**
-     * Maps primitive Class types to transformers.  The transformer
-     * transform strings into the appropriate primitive wrapper.
-     */
-    public static HashMap defaultTransformers = new HashMap();
-    
-    static {
-        defaultTransformers.put( 
-            Boolean.TYPE, 
-            new Transformer() {
-                public Object transform( Object input ) {
-                    return Boolean.valueOf( input.toString() );
-                }
-            }
-        );
-        defaultTransformers.put( 
-            Character.TYPE, 
-            new Transformer() {
-                public Object transform( Object input ) {
-                    return new Character( input.toString().charAt( 0 ) );
-                }
-            }
-        );
-        defaultTransformers.put( 
-            Byte.TYPE, 
-            new Transformer() {
-                public Object transform( Object input ) {
-                    return Byte.valueOf( input.toString() );
-                }
-            }
-        );
-        defaultTransformers.put( 
-            Short.TYPE, 
-            new Transformer() {
-                public Object transform( Object input ) {
-                    return Short.valueOf( input.toString() );
-                }
-            }
-        );
-        defaultTransformers.put( 
-            Integer.TYPE, 
-            new Transformer() {
-                public Object transform( Object input ) {
-                    return Integer.valueOf( input.toString() );
-                }
-            }
-        );
-        defaultTransformers.put( 
-            Long.TYPE, 
-            new Transformer() {
-                public Object transform( Object input ) {
-                    return Long.valueOf( input.toString() );
-                }
-            }
-        );
-        defaultTransformers.put( 
-            Float.TYPE, 
-            new Transformer() {
-                public Object transform( Object input ) {
-                    return Float.valueOf( input.toString() );
-                }
-            }
-        );
-        defaultTransformers.put( 
-            Double.TYPE, 
-            new Transformer() {
-                public Object transform( Object input ) {
-                    return Double.valueOf( input.toString() );
-                }
-            }
-        );
-    }
-    
-    
-    // Constructors
-    //-------------------------------------------------------------------------
-
-    /**
-     * Constructs a new empty <code>BeanMap</code>.
-     */
-    public BeanMap() {
-    }
-
-    /**
-     * Constructs a new <code>BeanMap</code> that operates on the 
-     * specified bean.  If the given bean is <code>null</code>, then
-     * this map will be empty.
-     *
-     * @param bean  the bean for this map to operate on
-     */
-    public BeanMap(Object bean) {
-        this.bean = bean;
-        initialise();
-    }
-
-    // Map interface
-    //-------------------------------------------------------------------------
-
-    public String toString() {
-        return "BeanMap<" + String.valueOf(bean) + ">";
-    }
-    
-    /**
-     * Clone this bean map using the following process: 
-     *
-     * <ul>
-     * <li>If there is no underlying bean, return a cloned BeanMap without a
-     * bean.
-     *
-     * <li>Since there is an underlying bean, try to instantiate a new bean of
-     * the same type using Class.newInstance().
-     * 
-     * <li>If the instantiation fails, throw a CloneNotSupportedException
-     *
-     * <li>Clone the bean map and set the newly instantiated bean as the
-     * underlying bean for the bean map.
-     *
-     * <li>Copy each property that is both readable and writable from the
-     * existing object to a cloned bean map.  
-     *
-     * <li>If anything fails along the way, throw a
-     * CloneNotSupportedException.
-     *
-     * <ul>
-     */
-    public Object clone() throws CloneNotSupportedException {
-        BeanMap newMap = (BeanMap)super.clone();
-
-        if(bean == null) {
-            // no bean, just an empty bean map at the moment.  return a newly
-            // cloned and empty bean map.
-            return newMap;
-        }
-
-        Object newBean = null;            
-        Class beanClass = null;
-        try {
-            beanClass = bean.getClass();
-            newBean = beanClass.newInstance();
-        } catch (Exception e) {
-            // unable to instantiate
-            throw new CloneNotSupportedException
-                ("Unable to instantiate the underlying bean \"" +
-                 beanClass.getName() + "\": " + e);
-        }
-            
-        try {
-            newMap.setBean(newBean);
-        } catch (Exception exception) {
-            throw new CloneNotSupportedException
-                ("Unable to set bean in the cloned bean map: " + 
-                 exception);
-        }
-            
-        try {
-            // copy only properties that are readable and writable.  If its
-            // not readable, we can't get the value from the old map.  If
-            // its not writable, we can't write a value into the new map.
-            Iterator readableKeys = readMethods.keySet().iterator();
-            while(readableKeys.hasNext()) {
-                Object key = readableKeys.next();
-                if(getWriteMethod(key) != null) {
-                    newMap.put(key, get(key));
-                }
-            }
-        } catch (Exception exception) {
-            throw new CloneNotSupportedException
-                ("Unable to copy bean values to cloned bean map: " +
-                 exception);
-        }
-
-        return newMap;
-    }
-
-    /**
-     * Puts all of the writable properties from the given BeanMap into this
-     * BeanMap. Read-only and Write-only properties will be ignored.
-     *
-     * @param map  the BeanMap whose properties to put
-     */
-    public void putAllWriteable(BeanMap map) {
-        Iterator readableKeys = map.readMethods.keySet().iterator();
-        while (readableKeys.hasNext()) {
-            Object key = readableKeys.next();
-            if (getWriteMethod(key) != null) {
-                this.put(key, map.get(key));
-            }
-        }
-    }
-
-
-    /**
-     * This method reinitializes the bean map to have default values for the
-     * bean's properties.  This is accomplished by constructing a new instance
-     * of the bean which the map uses as its underlying data source.  This
-     * behavior for <code>clear()</code> differs from the Map contract in that
-     * the mappings are not actually removed from the map (the mappings for a
-     * BeanMap are fixed).
-     */
-    public void clear() {
-        if(bean == null) return;
-
-        Class beanClass = null;
-        try {
-            beanClass = bean.getClass();
-            bean = beanClass.newInstance();
-        }
-        catch (Exception e) {
-            throw new UnsupportedOperationException( "Could not create new instance of class: " + beanClass );
-        }
-    }
-
-    /**
-     * Returns true if the bean defines a property with the given name.
-     * <p>
-     * The given name must be a <code>String</code>; if not, this method
-     * returns false. This method will also return false if the bean
-     * does not define a property with that name.
-     * <p>
-     * Write-only properties will not be matched as the test operates against
-     * property read methods.
-     *
-     * @param name  the name of the property to check
-     * @return false if the given name is null or is not a <code>String</code>;
-     *   false if the bean does not define a property with that name; or
-     *   true if the bean does define a property with that name
-     */
-    public boolean containsKey(Object name) {
-        Method method = getReadMethod(name);
-        return method != null;
-    }
-
-    /**
-     * Returns true if the bean defines a property whose current value is
-     * the given object.
-     *
-     * @param value  the value to check
-     * @return false  true if the bean has at least one property whose 
-     *   current value is that object, false otherwise
-     */
-    public boolean containsValue(Object value) {
-        // use default implementation
-        return super.containsValue(value);
-    }
-
-    /**
-     * Returns the value of the bean's property with the given name.
-     * <p>
-     * The given name must be a {@link String} and must not be 
-     * null; otherwise, this method returns <code>null</code>.
-     * If the bean defines a property with the given name, the value of
-     * that property is returned.  Otherwise, <code>null</code> is 
-     * returned.
-     * <p>
-     * Write-only properties will not be matched as the test operates against
-     * property read methods.
-     *
-     * @param name  the name of the property whose value to return
-     * @return  the value of the property with that name
-     */
-    public Object get(Object name) {
-        if ( bean != null ) {
-            Method method = getReadMethod( name );
-            if ( method != null ) {
-                try {
-                    return method.invoke( bean, NULL_ARGUMENTS );
-                }
-                catch (  IllegalAccessException e ) {
-                    logWarn( e );
-                }
-                catch ( IllegalArgumentException e ) {
-                    logWarn(  e );
-                }
-                catch ( InvocationTargetException e ) {
-                    logWarn(  e );
-                }
-                catch ( NullPointerException e ) {
-                    logWarn(  e );
-                }
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Sets the bean property with the given name to the given value.
-     *
-     * @param name  the name of the property to set
-     * @param value  the value to set that property to
-     * @return  the previous value of that property
-     * @throws IllegalArgumentException  if the given name is null;
-     *   if the given name is not a {@link String}; if the bean doesn't
-     *   define a property with that name; or if the bean property with
-     *   that name is read-only
-     */
-    public Object put(Object name, Object value) throws IllegalArgumentException, ClassCastException {
-        if ( bean != null ) {
-            Object oldValue = get( name );
-            Method method = getWriteMethod( name );
-            if ( method == null ) {
-                throw new IllegalArgumentException( "The bean of type: "+ bean.getClass().getName() + " has no property called: " + name );
-            }
-            try {
-                Object[] arguments = createWriteMethodArguments( method, value );
-                method.invoke( bean, arguments );
-
-                Object newValue = get( name );
-                firePropertyChange( name, oldValue, newValue );
-            }
-            catch ( InvocationTargetException e ) {
-                logInfo( e );
-                throw new IllegalArgumentException( e.getMessage() );
-            }
-            catch ( IllegalAccessException e ) {
-                logInfo( e );
-                throw new IllegalArgumentException( e.getMessage() );
-            }
-            return oldValue;
-        }
-        return null;
-    }
-                    
-    /**
-     * Returns the number of properties defined by the bean.
-     *
-     * @return  the number of properties defined by the bean
-     */
-    public int size() {
-        return readMethods.size();
-    }
-
-    
-    /**
-     * Get the keys for this BeanMap.
-     * <p>
-     * Write-only properties are <b>not</b> included in the returned set of
-     * property names, although it is possible to set their value and to get 
-     * their type.
-     * 
-     * @return BeanMap keys.  The Set returned by this method is not
-     *        modifiable.
-     */
-    public Set keySet() {
-        return UnmodifiableSet.decorate(readMethods.keySet());
-    }
-
-    /**
-     * Gets a Set of MapEntry objects that are the mappings for this BeanMap.
-     * <p>
-     * Each MapEntry can be set but not removed.
-     * 
-     * @return the unmodifiable set of mappings
-     */
-    public Set entrySet() {
-        return UnmodifiableSet.decorate(new AbstractSet() {
-            public Iterator iterator() {
-                return entryIterator();
-            }
-            public int size() {
-              return BeanMap.this.readMethods.size();
-            }
-        });
-    }
-
-    /**
-     * Returns the values for the BeanMap.
-     * 
-     * @return values for the BeanMap.  The returned collection is not
-     *        modifiable.
-     */
-    public Collection values() {
-        ArrayList answer = new ArrayList( readMethods.size() );
-        for ( Iterator iter = valueIterator(); iter.hasNext(); ) {
-            answer.add( iter.next() );
-        }
-        return UnmodifiableList.decorate(answer);
-    }
-
-
-    // Helper methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Returns the type of the property with the given name.
-     *
-     * @param name  the name of the property
-     * @return  the type of the property, or <code>null</code> if no such
-     *  property exists
-     */
-    public Class getType(String name) {
-        return (Class) types.get( name );
-    }
-
-    /**
-     * Convenience method for getting an iterator over the keys.
-     * <p>
-     * Write-only properties will not be returned in the iterator.
-     *
-     * @return an iterator over the keys
-     */
-    public Iterator keyIterator() {
-        return readMethods.keySet().iterator();
-    }
-
-    /**
-     * Convenience method for getting an iterator over the values.
-     *
-     * @return an iterator over the values
-     */
-    public Iterator valueIterator() {
-        final Iterator iter = keyIterator();
-        return new Iterator() {            
-            public boolean hasNext() {
-                return iter.hasNext();
-            }
-            public Object next() {
-                Object key = iter.next();
-                return get(key);
-            }
-            public void remove() {
-                throw new UnsupportedOperationException( "remove() not supported for BeanMap" );
-            }
-        };
-    }
-
-    /**
-     * Convenience method for getting an iterator over the entries.
-     *
-     * @return an iterator over the entries
-     */
-    public Iterator entryIterator() {
-        final Iterator iter = keyIterator();
-        return new Iterator() {            
-            public boolean hasNext() {
-                return iter.hasNext();
-            }            
-            public Object next() {
-                Object key = iter.next();
-                Object value = get(key);
-                return new MyMapEntry( BeanMap.this, key, value );
-            }            
-            public void remove() {
-                throw new UnsupportedOperationException( "remove() not supported for BeanMap" );
-            }
-        };
-    }
-
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Returns the bean currently being operated on.  The return value may
-     * be null if this map is empty.
-     *
-     * @return the bean being operated on by this map
-     */
-    public Object getBean() {
-        return bean;
-    }
-
-    /**
-     * Sets the bean to be operated on by this map.  The given value may
-     * be null, in which case this map will be empty.
-     *
-     * @param newBean  the new bean to operate on
-     */
-    public void setBean( Object newBean ) {
-        bean = newBean;
-        reinitialise();
-    }
-
-    /**
-     * Returns the accessor for the property with the given name.
-     *
-     * @param name  the name of the property 
-     * @return the accessor method for the property, or null
-     */
-    public Method getReadMethod(String name) {
-        return (Method) readMethods.get(name);
-    }
-
-    /**
-     * Returns the mutator for the property with the given name.
-     *
-     * @param name  the name of the property
-     * @return the mutator method for the property, or null
-     */
-    public Method getWriteMethod(String name) {
-        return (Method) writeMethods.get(name);
-    }
-
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Returns the accessor for the property with the given name.
-     *
-     * @param name  the name of the property 
-     * @return null if the name is null; null if the name is not a 
-     * {@link String}; null if no such property exists; or the accessor
-     *  method for that property
-     */
-    protected Method getReadMethod( Object name ) {
-        return (Method) readMethods.get( name );
-    }
-
-    /**
-     * Returns the mutator for the property with the given name.
-     *
-     * @param name  the name of the 
-     * @return null if the name is null; null if the name is not a 
-     * {@link String}; null if no such property exists; null if the 
-     * property is read-only; or the mutator method for that property
-     */
-    protected Method getWriteMethod( Object name ) {
-        return (Method) writeMethods.get( name );
-    }
-
-    /**
-     * Reinitializes this bean.  Called during {@link #setBean(Object)}.
-     * Does introspection to find properties.
-     */
-    protected void reinitialise() {
-        readMethods.clear();
-        writeMethods.clear();
-        types.clear();
-        initialise();
-    }
-
-    private void initialise() {
-        if(getBean() == null) return;
-
-        Class  beanClass = getBean().getClass();
-        try {
-            //BeanInfo beanInfo = Introspector.getBeanInfo( bean, null );
-            BeanInfo beanInfo = Introspector.getBeanInfo( beanClass );
-            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
-            if ( propertyDescriptors != null ) {
-                for ( int i = 0; i < propertyDescriptors.length; i++ ) {
-                    PropertyDescriptor propertyDescriptor = propertyDescriptors[i];
-                    if ( propertyDescriptor != null ) {
-                        String name = propertyDescriptor.getName();
-                        Method readMethod = propertyDescriptor.getReadMethod();
-                        Method writeMethod = propertyDescriptor.getWriteMethod();
-                        Class aType = propertyDescriptor.getPropertyType();
-
-                        if ( readMethod != null ) {
-                            readMethods.put( name, readMethod );
-                        }
-                        if ( writeMethod != null ) {
-                            writeMethods.put( name, writeMethod );
-                        }
-                        types.put( name, aType );
-                    }
-                }
-            }
-        }
-        catch ( IntrospectionException e ) {
-            logWarn(  e );
-        }
-    }
-
-    /**
-     * Called during a successful {@link #put(Object,Object)} operation.
-     * Default implementation does nothing.  Override to be notified of
-     * property changes in the bean caused by this map.
-     *
-     * @param key  the name of the property that changed
-     * @param oldValue  the old value for that property
-     * @param newValue  the new value for that property
-     */
-    protected void firePropertyChange( Object key, Object oldValue, Object newValue ) {
-    }
-
-    // Implementation classes
-    //-------------------------------------------------------------------------
-
-    /**
-     * Map entry used by {@link BeanMap}.
-     */
-    protected static class MyMapEntry extends AbstractMapEntry {        
-        private BeanMap owner;
-        
-        /**
-         * Constructs a new <code>MyMapEntry</code>.
-         *
-         * @param owner  the BeanMap this entry belongs to
-         * @param key  the key for this entry
-         * @param value  the value for this entry
-         */
-        protected MyMapEntry( BeanMap owner, Object key, Object value ) {
-            super( key, value );
-            this.owner = owner;
-        }
-
-        /**
-         * Sets the value.
-         *
-         * @param value  the new value for the entry
-         * @return the old value for the entry
-         */
-        public Object setValue(Object value) {
-            Object key = getKey();
-            Object oldValue = owner.get( key );
-
-            owner.put( key, value );
-            Object newValue = owner.get( key );
-            super.setValue( newValue );
-            return oldValue;
-        }
-    }
-
-    /**
-     * Creates an array of parameters to pass to the given mutator method.
-     * If the given object is not the right type to pass to the method 
-     * directly, it will be converted using {@link #convertType(Class,Object)}.
-     *
-     * @param method  the mutator method
-     * @param value  the value to pass to the mutator method
-     * @return an array containing one object that is either the given value
-     *   or a transformed value
-     * @throws IllegalAccessException if {@link #convertType(Class,Object)}
-     *   raises it
-     * @throws IllegalArgumentException if any other exception is raised
-     *   by {@link #convertType(Class,Object)}
-     */
-    protected Object[] createWriteMethodArguments( Method method, Object value ) throws IllegalAccessException, ClassCastException {            
-        try {
-            if ( value != null ) {
-                Class[] types = method.getParameterTypes();
-                if ( types != null && types.length > 0 ) {
-                    Class paramType = types[0];
-                    if ( ! paramType.isAssignableFrom( value.getClass() ) ) {
-                        value = convertType( paramType, value );
-                    }
-                }
-            }
-            Object[] answer = { value };
-            return answer;
-        }
-        catch ( InvocationTargetException e ) {
-            logInfo( e );
-            throw new IllegalArgumentException( e.getMessage() );
-        }
-        catch ( InstantiationException e ) {
-            logInfo( e );
-            throw new IllegalArgumentException( e.getMessage() );
-        }
-    }
-
-    /**
-     * Converts the given value to the given type.  First, reflection is
-     * is used to find a public constructor declared by the given class 
-     * that takes one argument, which must be the precise type of the 
-     * given value.  If such a constructor is found, a new object is
-     * created by passing the given value to that constructor, and the
-     * newly constructed object is returned.<P>
-     *
-     * If no such constructor exists, and the given type is a primitive
-     * type, then the given value is converted to a string using its 
-     * {@link Object#toString() toString()} method, and that string is
-     * parsed into the correct primitive type using, for instance, 
-     * {@link Integer#valueOf(String)} to convert the string into an
-     * <code>int</code>.<P>
-     *
-     * If no special constructor exists and the given type is not a 
-     * primitive type, this method returns the original value.
-     *
-     * @param newType  the type to convert the value to
-     * @param value  the value to convert
-     * @return the converted value
-     * @throws NumberFormatException if newType is a primitive type, and 
-     *  the string representation of the given value cannot be converted
-     *  to that type
-     * @throws InstantiationException  if the constructor found with 
-     *  reflection raises it
-     * @throws InvocationTargetException  if the constructor found with
-     *  reflection raises it
-     * @throws IllegalAccessException  never
-     * @throws IllegalArgumentException  never
-     */
-    protected Object convertType( Class newType, Object value ) 
-        throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
-        
-        // try call constructor
-        Class[] types = { value.getClass() };
-        try {
-            Constructor constructor = newType.getConstructor( types );        
-            Object[] arguments = { value };
-            return constructor.newInstance( arguments );
-        }
-        catch ( NoSuchMethodException e ) {
-            // try using the transformers
-            Transformer transformer = getTypeTransformer( newType );
-            if ( transformer != null ) {
-                return transformer.transform( value );
-            }
-            return value;
-        }
-    }
-
-    /**
-     * Returns a transformer for the given primitive type.
-     *
-     * @param aType  the primitive type whose transformer to return
-     * @return a transformer that will convert strings into that type,
-     *  or null if the given type is not a primitive type
-     */
-    protected Transformer getTypeTransformer( Class aType ) {
-        return (Transformer) defaultTransformers.get( aType );
-    }
-
-    /**
-     * Logs the given exception to <code>System.out</code>.  Used to display
-     * warnings while accessing/mutating the bean.
-     *
-     * @param ex  the exception to log
-     */
-    protected void logInfo(Exception ex) {
-        // Deliberately do not use LOG4J or Commons Logging to avoid dependencies
-        System.out.println( "INFO: Exception: " + ex );
-    }
-
-    /**
-     * Logs the given exception to <code>System.err</code>.  Used to display
-     * errors while accessing/mutating the bean.
-     *
-     * @param ex  the exception to log
-     */
-    protected void logWarn(Exception ex) {
-        // Deliberately do not use LOG4J or Commons Logging to avoid dependencies
-        System.out.println( "WARN: Exception: " + ex );
-        ex.printStackTrace();
-    }
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BidiMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BidiMap.java
deleted file mode 100755
index 184fee2f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BidiMap.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-/**
- * Defines a map that allows bidirectional lookup between key and values.
- * <p>
- * This extended <code>Map</code> represents a mapping where a key may
- * lookup a value and a value may lookup a key with equal ease.
- * This interface extends <code>Map</code> and so may be used anywhere a map
- * is required. The interface provides an inverse map view, enabling
- * full access to both directions of the <code>BidiMap</code>.
- * <p>
- * Implementations should allow a value to be looked up from a key and
- * a key to be looked up from a value with equal performance.
- * <p>
- * This map enforces the restriction that there is a 1:1 relation between
- * keys and values, meaning that multiple keys cannot map to the same value. 
- * This is required so that "inverting" the map results in a map without 
- * duplicate keys. See the {@link #put} method description for more information.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- *
- * @author Stephen Colebourne
- */
-public interface BidiMap extends IterableMap {
-
-    /**
-     * Obtains a <code>MapIterator</code> over the map.
-     * <p>
-     * A map iterator is an efficient way of iterating over maps.
-     * It does not require that the map is stored using Map Entry objects
-     * which can increase performance.
-     * <pre>
-     * BidiMap map = new DualHashBidiMap();
-     * MapIterator it = map.mapIterator();
-     * while (it.hasNext()) {
-     *   Object key = it.next();
-     *   Object value = it.getValue();
-     *   it.setValue("newValue");
-     * }
-     * </pre>
-     * 
-     * @return a map iterator
-     */
-    MapIterator mapIterator();
-    
-    /**
-     * Puts the key-value pair into the map, replacing any previous pair.
-     * <p>
-     * When adding a key-value pair, the value may already exist in the map
-     * against a different key. That mapping is removed, to ensure that the
-     * value only occurs once in the inverse map.
-     * <pre>
-     *  BidiMap map1 = new DualHashBidiMap();
-     *  map.put("A","B");  // contains A mapped to B, as per Map
-     *  map.put("A","C");  // contains A mapped to C, as per Map
-     * 
-     *  BidiMap map2 = new DualHashBidiMap();
-     *  map.put("A","B");  // contains A mapped to B, as per Map
-     *  map.put("C","B");  // contains C mapped to B, key A is removed
-     * </pre>
-     *
-     * @param key  the key to store
-     * @param value  the value to store
-     * @return the previous value mapped to this key
-     * 
-     * @throws UnsupportedOperationException if the <code>put</code> method is not supported
-     * @throws ClassCastException (optional) if the map limits the type of the 
-     *  value and the specified value is inappropriate
-     * @throws IllegalArgumentException (optional) if the map limits the values
-     *  in some way and the value was invalid
-     * @throws NullPointerException (optional) if the map limits the values to
-     *  non-null and null was specified
-     */
-    Object put(Object key, Object value);
-    
-    /**
-     * Gets the key that is currently mapped to the specified value.
-     * <p>
-     * If the value is not contained in the map, <code>null</code> is returned.
-     * <p>
-     * Implementations should seek to make this method perform equally as well
-     * as <code>get(Object)</code>.
-     *
-     * @param value  the value to find the key for
-     * @return the mapped key, or <code>null</code> if not found
-     * 
-     * @throws ClassCastException (optional) if the map limits the type of the 
-     *  value and the specified value is inappropriate
-     * @throws NullPointerException (optional) if the map limits the values to
-     *  non-null and null was specified
-     */
-    Object getKey(Object value);
-    
-    /**
-     * Removes the key-value pair that is currently mapped to the specified
-     * value (optional operation).
-     * <p>
-     * If the value is not contained in the map, <code>null</code> is returned.
-     * <p>
-     * Implementations should seek to make this method perform equally as well
-     * as <code>remove(Object)</code>.
-     *
-     * @param value  the value to find the key-value pair for
-     * @return the key that was removed, <code>null</code> if nothing removed
-     * 
-     * @throws ClassCastException (optional) if the map limits the type of the 
-     *  value and the specified value is inappropriate
-     * @throws NullPointerException (optional) if the map limits the values to
-     *  non-null and null was specified
-     * @throws UnsupportedOperationException if this method is not supported
-     *  by the implementation
-     */
-    Object removeValue(Object value);
-    
-    /**
-     * Gets a view of this map where the keys and values are reversed.
-     * <p>
-     * Changes to one map will be visible in the other and vice versa.
-     * This enables both directions of the map to be accessed as a <code>Map</code>.
-     * <p>
-     * Implementations should seek to avoid creating a new object every time this
-     * method is called. See <code>AbstractMap.values()</code> etc. Calling this
-     * method on the inverse map should return the original.
-     *
-     * @return an inverted bidirectional map
-     */
-    BidiMap inverseBidiMap();
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BinaryHeap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BinaryHeap.java
deleted file mode 100755
index 9f44182..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BinaryHeap.java
+++ /dev/null
@@ -1,564 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.AbstractCollection;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-/**
- * Binary heap implementation of <code>PriorityQueue</code>.
- * <p>
- * The <code>PriorityQueue</code> interface has now been replaced for most uses
- * by the <code>Buffer</code> interface. This class and the interface are
- * retained for backwards compatibility. The intended replacement is
- * {@link org.apache.commons.collections.buffer.PriorityBuffer PriorityBuffer}.
- * <p>
- * The removal order of a binary heap is based on either the natural sort
- * order of its elements or a specified {@link Comparator}.  The 
- * {@link #pop()} method always returns the first element as determined
- * by the sort order.  (The <code>isMinHeap</code> flag in the constructors
- * can be used to reverse the sort order, in which case {@link #pop()}
- * will always remove the last element.)  The removal order is 
- * <i>not</i> the same as the order of iteration; elements are
- * returned by the iterator in no particular order.
- * <p>
- * The {@link #insert(Object)} and {@link #pop()} operations perform
- * in logarithmic time.  The {@link #peek()} operation performs in constant
- * time.  All other operations perform in linear time or worse.
- * <p>
- * Note that this implementation is not synchronized.  Use SynchronizedPriorityQueue
- * to provide synchronized access to a <code>BinaryHeap</code>:
- *
- * <pre>
- * PriorityQueue heap = new SynchronizedPriorityQueue(new BinaryHeap());
- * </pre>
- *
- * @deprecated Replaced by PriorityBuffer in buffer subpackage.
- *  Due to be removed in v4.0.
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- * 
- * @author Peter Donald
- * @author Ram Chidambaram
- * @author Michael A. Smith
- * @author Paul Jack
- * @author Stephen Colebourne
- */
-public final class BinaryHeap extends AbstractCollection
-        implements PriorityQueue, Buffer {
-
-    /**
-     * The default capacity for a binary heap.
-     */
-    private final static int DEFAULT_CAPACITY = 13;
-    /**
-     * The number of elements currently in this heap.
-     */
-    int m_size;  // package scoped for testing
-    /**
-     * The elements in this heap.
-     */
-    Object[] m_elements;  // package scoped for testing
-    /**
-     * If true, the first element as determined by the sort order will 
-     * be returned.  If false, the last element as determined by the
-     * sort order will be returned.
-     */
-    boolean m_isMinHeap;  // package scoped for testing
-    /**
-     * The comparator used to order the elements
-     */
-    Comparator m_comparator;  // package scoped for testing
-
-    /**
-     * Constructs a new minimum binary heap.
-     */
-    public BinaryHeap() {
-        this(DEFAULT_CAPACITY, true);
-    }
-
-    /**
-     * Constructs a new <code>BinaryHeap</code> that will use the given
-     * comparator to order its elements.
-     * 
-     * @param comparator  the comparator used to order the elements, null
-     *  means use natural order
-     */
-    public BinaryHeap(Comparator comparator) {
-        this();
-        m_comparator = comparator;
-    }
-    
-    /**
-     * Constructs a new minimum binary heap with the specified initial capacity.
-     *  
-     * @param capacity  The initial capacity for the heap.  This value must
-     *  be greater than zero.
-     * @throws IllegalArgumentException  
-     *  if <code>capacity</code> is &lt;= <code>0</code>
-     */
-    public BinaryHeap(int capacity) {
-        this(capacity, true);
-    }
-
-    /**
-     * Constructs a new <code>BinaryHeap</code>.
-     *
-     * @param capacity  the initial capacity for the heap
-     * @param comparator  the comparator used to order the elements, null
-     *  means use natural order
-     * @throws IllegalArgumentException  
-     *  if <code>capacity</code> is &lt;= <code>0</code>
-     */
-    public BinaryHeap(int capacity, Comparator comparator) {
-        this(capacity);
-        m_comparator = comparator;
-    }
-
-    /**
-     * Constructs a new minimum or maximum binary heap
-     *
-     * @param isMinHeap  if <code>true</code> the heap is created as a 
-     * minimum heap; otherwise, the heap is created as a maximum heap
-     */
-    public BinaryHeap(boolean isMinHeap) {
-        this(DEFAULT_CAPACITY, isMinHeap);
-    }
-
-    /**
-     * Constructs a new <code>BinaryHeap</code>.
-     *
-     * @param isMinHeap  true to use the order imposed by the given 
-     *   comparator; false to reverse that order
-     * @param comparator  the comparator used to order the elements, null
-     *  means use natural order
-     */
-    public BinaryHeap(boolean isMinHeap, Comparator comparator) {
-        this(isMinHeap);
-        m_comparator = comparator;
-    }
-
-    /**
-     * Constructs a new minimum or maximum binary heap with the specified 
-     * initial capacity.
-     *
-     * @param capacity the initial capacity for the heap.  This value must 
-     * be greater than zero.
-     * @param isMinHeap if <code>true</code> the heap is created as a 
-     *  minimum heap; otherwise, the heap is created as a maximum heap.
-     * @throws IllegalArgumentException 
-     *  if <code>capacity</code> is <code>&lt;= 0</code>
-     */
-    public BinaryHeap(int capacity, boolean isMinHeap) {
-        if (capacity <= 0) {
-            throw new IllegalArgumentException("invalid capacity");
-        }
-        m_isMinHeap = isMinHeap;
-
-        //+1 as 0 is noop
-        m_elements = new Object[capacity + 1];
-    }
-
-    /**
-     * Constructs a new <code>BinaryHeap</code>.
-     *
-     * @param capacity  the initial capacity for the heap
-     * @param isMinHeap  true to use the order imposed by the given 
-     *   comparator; false to reverse that order
-     * @param comparator  the comparator used to order the elements, null
-     *  means use natural order
-     * @throws IllegalArgumentException 
-     *  if <code>capacity</code> is <code>&lt;= 0</code>
-     */
-    public BinaryHeap(int capacity, boolean isMinHeap, Comparator comparator) {
-        this(capacity, isMinHeap);
-        m_comparator = comparator;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Clears all elements from queue.
-     */
-    public void clear() {
-        m_elements = new Object[m_elements.length];  // for gc
-        m_size = 0;
-    }
-
-    /**
-     * Tests if queue is empty.
-     *
-     * @return <code>true</code> if queue is empty; <code>false</code> 
-     *  otherwise.
-     */
-    public boolean isEmpty() {
-        return m_size == 0;
-    }
-
-    /**
-     * Tests if queue is full.
-     *
-     * @return <code>true</code> if queue is full; <code>false</code>
-     *  otherwise.
-     */
-    public boolean isFull() {
-        //+1 as element 0 is noop
-        return m_elements.length == m_size + 1;
-    }
-
-    /**
-     * Inserts an element into queue.
-     *
-     * @param element  the element to be inserted
-     */
-    public void insert(Object element) {
-        if (isFull()) {
-            grow();
-        }
-        //percolate element to it's place in tree
-        if (m_isMinHeap) {
-            percolateUpMinHeap(element);
-        } else {
-            percolateUpMaxHeap(element);
-        }
-    }
-
-    /**
-     * Returns the element on top of heap but don't remove it.
-     *
-     * @return the element at top of heap
-     * @throws NoSuchElementException  if <code>isEmpty() == true</code>
-     */
-    public Object peek() throws NoSuchElementException {
-        if (isEmpty()) {
-            throw new NoSuchElementException();
-        } else {
-            return m_elements[1];
-        }
-    }
-
-    /**
-     * Returns the element on top of heap and remove it.
-     *
-     * @return the element at top of heap
-     * @throws NoSuchElementException  if <code>isEmpty() == true</code>
-     */
-    public Object pop() throws NoSuchElementException {
-        final Object result = peek();
-        m_elements[1] = m_elements[m_size--];
-
-        // set the unused element to 'null' so that the garbage collector
-        // can free the object if not used anywhere else.(remove reference)
-        m_elements[m_size + 1] = null;
-
-        if (m_size != 0) {
-            // percolate top element to it's place in tree
-            if (m_isMinHeap) {
-                percolateDownMinHeap(1);
-            } else {
-                percolateDownMaxHeap(1);
-            }
-        }
-
-        return result;
-    }
-
-    /**
-     * Percolates element down heap from the position given by the index.
-     * <p>
-     * Assumes it is a minimum heap.
-     *
-     * @param index the index for the element
-     */
-    protected void percolateDownMinHeap(final int index) {
-        final Object element = m_elements[index];
-        int hole = index;
-
-        while ((hole * 2) <= m_size) {
-            int child = hole * 2;
-
-            // if we have a right child and that child can not be percolated
-            // up then move onto other child
-            if (child != m_size && compare(m_elements[child + 1], m_elements[child]) < 0) {
-                child++;
-            }
-
-            // if we found resting place of bubble then terminate search
-            if (compare(m_elements[child], element) >= 0) {
-                break;
-            }
-
-            m_elements[hole] = m_elements[child];
-            hole = child;
-        }
-
-        m_elements[hole] = element;
-    }
-
-    /**
-     * Percolates element down heap from the position given by the index.
-     * <p>
-     * Assumes it is a maximum heap.
-     *
-     * @param index the index of the element
-     */
-    protected void percolateDownMaxHeap(final int index) {
-        final Object element = m_elements[index];
-        int hole = index;
-
-        while ((hole * 2) <= m_size) {
-            int child = hole * 2;
-
-            // if we have a right child and that child can not be percolated
-            // up then move onto other child
-            if (child != m_size && compare(m_elements[child + 1], m_elements[child]) > 0) {
-                child++;
-            }
-
-            // if we found resting place of bubble then terminate search
-            if (compare(m_elements[child], element) <= 0) {
-                break;
-            }
-
-            m_elements[hole] = m_elements[child];
-            hole = child;
-        }
-
-        m_elements[hole] = element;
-    }
-
-    /**
-     * Percolates element up heap from the position given by the index.
-     * <p>
-     * Assumes it is a minimum heap.
-     *
-     * @param index the index of the element to be percolated up
-     */
-    protected void percolateUpMinHeap(final int index) {
-        int hole = index;
-        Object element = m_elements[hole];
-        while (hole > 1 && compare(element, m_elements[hole / 2]) < 0) {
-            // save element that is being pushed down
-            // as the element "bubble" is percolated up
-            final int next = hole / 2;
-            m_elements[hole] = m_elements[next];
-            hole = next;
-        }
-        m_elements[hole] = element;
-    }
-
-    /**
-     * Percolates a new element up heap from the bottom.
-     * <p>
-     * Assumes it is a minimum heap.
-     *
-     * @param element the element
-     */
-    protected void percolateUpMinHeap(final Object element) {
-        m_elements[++m_size] = element;
-        percolateUpMinHeap(m_size);
-    }
-
-    /**
-     * Percolates element up heap from from the position given by the index.
-     * <p>
-     * Assume it is a maximum heap.
-     *
-     * @param index the index of the element to be percolated up
-     */
-    protected void percolateUpMaxHeap(final int index) {
-        int hole = index;
-        Object element = m_elements[hole];
-        
-        while (hole > 1 && compare(element, m_elements[hole / 2]) > 0) {
-            // save element that is being pushed down
-            // as the element "bubble" is percolated up
-            final int next = hole / 2;
-            m_elements[hole] = m_elements[next];
-            hole = next;
-        }
-
-        m_elements[hole] = element;
-    }
-    
-    /**
-     * Percolates a new element up heap from the bottom.
-     * <p>
-     * Assume it is a maximum heap.
-     *
-     * @param element the element
-     */
-    protected void percolateUpMaxHeap(final Object element) {
-        m_elements[++m_size] = element;
-        percolateUpMaxHeap(m_size);
-    }
-    
-    /**
-     * Compares two objects using the comparator if specified, or the
-     * natural order otherwise.
-     * 
-     * @param a  the first object
-     * @param b  the second object
-     * @return -ve if a less than b, 0 if they are equal, +ve if a greater than b
-     */
-    private int compare(Object a, Object b) {
-        if (m_comparator != null) {
-            return m_comparator.compare(a, b);
-        } else {
-            return ((Comparable) a).compareTo(b);
-        }
-    }
-
-    /**
-     * Increases the size of the heap to support additional elements
-     */
-    protected void grow() {
-        final Object[] elements = new Object[m_elements.length * 2];
-        System.arraycopy(m_elements, 0, elements, 0, m_elements.length);
-        m_elements = elements;
-    }
-
-    /**
-     * Returns a string representation of this heap.  The returned string
-     * is similar to those produced by standard JDK collections.
-     *
-     * @return a string representation of this heap
-     */
-    public String toString() {
-        final StringBuffer sb = new StringBuffer();
-
-        sb.append("[ ");
-
-        for (int i = 1; i < m_size + 1; i++) {
-            if (i != 1) {
-                sb.append(", ");
-            }
-            sb.append(m_elements[i]);
-        }
-
-        sb.append(" ]");
-
-        return sb.toString();
-    }
-
-
-    /**
-     * Returns an iterator over this heap's elements.
-     *
-     * @return an iterator over this heap's elements
-     */
-    public Iterator iterator() {
-        return new Iterator() {
-
-            private int index = 1;
-            private int lastReturnedIndex = -1;
-
-            public boolean hasNext() {
-                return index <= m_size;
-            }
-
-            public Object next() {
-                if (!hasNext()) throw new NoSuchElementException();
-                lastReturnedIndex = index;
-                index++;
-                return m_elements[lastReturnedIndex];
-            }
-
-            public void remove() {
-                if (lastReturnedIndex == -1) {
-                    throw new IllegalStateException();
-                }
-                m_elements[ lastReturnedIndex ] = m_elements[ m_size ];
-                m_elements[ m_size ] = null;
-                m_size--;  
-                if( m_size != 0 && lastReturnedIndex <= m_size) {
-                    int compareToParent = 0;
-                    if (lastReturnedIndex > 1) {
-                        compareToParent = compare(m_elements[lastReturnedIndex], 
-                            m_elements[lastReturnedIndex / 2]);  
-                    }
-                    if (m_isMinHeap) {
-                        if (lastReturnedIndex > 1 && compareToParent < 0) {
-                            percolateUpMinHeap(lastReturnedIndex); 
-                        } else {
-                            percolateDownMinHeap(lastReturnedIndex);
-                        }
-                    } else {  // max heap
-                        if (lastReturnedIndex > 1 && compareToParent > 0) {
-                            percolateUpMaxHeap(lastReturnedIndex); 
-                        } else {
-                            percolateDownMaxHeap(lastReturnedIndex);
-                        }
-                    }          
-                }
-                index--;
-                lastReturnedIndex = -1; 
-            }
-
-        };
-    }
-
-
-    /**
-     * Adds an object to this heap. Same as {@link #insert(Object)}.
-     *
-     * @param object  the object to add
-     * @return true, always
-     */
-    public boolean add(Object object) {
-        insert(object);
-        return true;
-    }
-
-    /**
-     * Returns the priority element. Same as {@link #peek()}.
-     *
-     * @return the priority element
-     * @throws BufferUnderflowException if this heap is empty
-     */
-    public Object get() {
-        try {
-            return peek();
-        } catch (NoSuchElementException e) {
-            throw new BufferUnderflowException();
-        }
-    }
-
-    /**
-     * Removes the priority element. Same as {@link #pop()}.
-     *
-     * @return the removed priority element
-     * @throws BufferUnderflowException if this heap is empty
-     */
-    public Object remove() {
-        try {
-            return pop();
-        } catch (NoSuchElementException e) {
-            throw new BufferUnderflowException();
-        }
-    }
-
-    /**
-     * Returns the number of elements in this heap.
-     *
-     * @return the number of elements in this heap
-     */
-    public int size() {
-        return m_size;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BoundedCollection.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BoundedCollection.java
deleted file mode 100755
index 191c467..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BoundedCollection.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.Collection;
-
-/**
- * Defines a collection that is bounded in size.
- * <p>
- * The size of the collection can vary, but it can never exceed a preset 
- * maximum number of elements. This interface allows the querying of details
- * associated with the maximum number of elements.
- *
- * @see CollectionUtils#isFull
- * @see CollectionUtils#maxSize
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author Herve Quiroz
- * @author Stephen Colebourne
- */
-public interface BoundedCollection extends Collection {
-
-    /**
-     * Returns true if this collection is full and no new elements can be added.
-     *
-     * @return <code>true</code> if the collection is full
-     */
-    boolean isFull();
-
-    /**
-     * Gets the maximum size of the collection (the bound).
-     *
-     * @return the maximum number of elements the collection can hold
-     */
-    int maxSize();
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BoundedFifoBuffer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BoundedFifoBuffer.java
deleted file mode 100755
index 70dd9d4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BoundedFifoBuffer.java
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.AbstractCollection;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-/**
- * The BoundedFifoBuffer is a very efficient implementation of
- * Buffer that does not alter the size of the buffer at runtime.
- * <p>
- * The removal order of a <code>BoundedFifoBuffer</code> is based on the 
- * insertion order; elements are removed in the same order in which they
- * were added.  The iteration order is the same as the removal order.
- * <p>
- * The {@link #add(Object)}, {@link #remove()} and {@link #get()} operations
- * all perform in constant time.  All other operations perform in linear
- * time or worse.
- * <p>
- * Note that this implementation is not synchronized.  The following can be
- * used to provide synchronized access to your <code>BoundedFifoBuffer</code>:
- * <pre>
- *   Buffer fifo = BufferUtils.synchronizedBuffer(new BoundedFifoBuffer());
- * </pre>
- * <p>
- * This buffer prevents null objects from being added.
- *
- * @deprecated Moved to buffer subpackage. Due to be removed in v4.0.
- * @since 2.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author Avalon
- * @author Berin Loritsch
- * @author Paul Jack
- * @author Stephen Colebourne
- * @author Herve Quiroz
- */
-public class BoundedFifoBuffer extends AbstractCollection
-        implements Buffer, BoundedCollection {
-            
-    private final Object[] m_elements;
-    private int m_start = 0;
-    private int m_end = 0;
-    private boolean m_full = false;
-    private final int maxElements;
-
-    /**
-     * Constructs a new <code>BoundedFifoBuffer</code> big enough to hold
-     * 32 elements.
-     */
-    public BoundedFifoBuffer() {
-        this(32);
-    }
-
-    /**
-     * Constructs a new <code>BoundedFifoBuffer</code> big enough to hold
-     * the specified number of elements.
-     *
-     * @param size  the maximum number of elements for this fifo
-     * @throws IllegalArgumentException  if the size is less than 1
-     */
-    public BoundedFifoBuffer(int size) {
-        if (size <= 0) {
-            throw new IllegalArgumentException("The size must be greater than 0");
-        }
-        m_elements = new Object[size];
-        maxElements = m_elements.length;
-    }
-
-    /**
-     * Constructs a new <code>BoundedFifoBuffer</code> big enough to hold all
-     * of the elements in the specified collection. That collection's
-     * elements will also be added to the buffer.
-     *
-     * @param coll  the collection whose elements to add, may not be null
-     * @throws NullPointerException if the collection is null
-     */
-    public BoundedFifoBuffer(Collection coll) {
-        this(coll.size());
-        addAll(coll);
-    }
-
-    /**
-     * Returns the number of elements stored in the buffer.
-     *
-     * @return this buffer's size
-     */
-    public int size() {
-        int size = 0;
-
-        if (m_end < m_start) {
-            size = maxElements - m_start + m_end;
-        } else if (m_end == m_start) {
-            size = (m_full ? maxElements : 0);
-        } else {
-            size = m_end - m_start;
-        }
-
-        return size;
-    }
-
-    /**
-     * Returns true if this buffer is empty; false otherwise.
-     *
-     * @return true if this buffer is empty
-     */
-    public boolean isEmpty() {
-        return size() == 0;
-    }
-
-    /**
-     * Returns true if this collection is full and no new elements can be added.
-     *
-     * @return <code>true</code> if the collection is full
-     */
-    public boolean isFull() {
-        return size() == maxElements;
-    }
-    
-    /**
-     * Gets the maximum size of the collection (the bound).
-     *
-     * @return the maximum number of elements the collection can hold
-     */
-    public int maxSize() {
-        return maxElements;
-    }
-    
-    /**
-     * Clears this buffer.
-     */
-    public void clear() {
-        m_full = false;
-        m_start = 0;
-        m_end = 0;
-        Arrays.fill(m_elements, null);
-    }
-
-    /**
-     * Adds the given element to this buffer.
-     *
-     * @param element  the element to add
-     * @return true, always
-     * @throws NullPointerException  if the given element is null
-     * @throws BufferOverflowException  if this buffer is full
-     */
-    public boolean add(Object element) {
-        if (null == element) {
-            throw new NullPointerException("Attempted to add null object to buffer");
-        }
-
-        if (m_full) {
-            throw new BufferOverflowException("The buffer cannot hold more than " + maxElements + " objects.");
-        }
-
-        m_elements[m_end++] = element;
-
-        if (m_end >= maxElements) {
-            m_end = 0;
-        }
-
-        if (m_end == m_start) {
-            m_full = true;
-        }
-
-        return true;
-    }
-
-    /**
-     * Returns the least recently inserted element in this buffer.
-     *
-     * @return the least recently inserted element
-     * @throws BufferUnderflowException  if the buffer is empty
-     */
-    public Object get() {
-        if (isEmpty()) {
-            throw new BufferUnderflowException("The buffer is already empty");
-        }
-
-        return m_elements[m_start];
-    }
-
-    /**
-     * Removes the least recently inserted element from this buffer.
-     *
-     * @return the least recently inserted element
-     * @throws BufferUnderflowException  if the buffer is empty
-     */
-    public Object remove() {
-        if (isEmpty()) {
-            throw new BufferUnderflowException("The buffer is already empty");
-        }
-
-        Object element = m_elements[m_start];
-
-        if (null != element) {
-            m_elements[m_start++] = null;
-
-            if (m_start >= maxElements) {
-                m_start = 0;
-            }
-
-            m_full = false;
-        }
-
-        return element;
-    }
-
-    /**
-     * Increments the internal index.
-     * 
-     * @param index  the index to increment
-     * @return the updated index
-     */
-    private int increment(int index) {
-        index++; 
-        if (index >= maxElements) {
-            index = 0;
-        }
-        return index;
-    }
-
-    /**
-     * Decrements the internal index.
-     * 
-     * @param index  the index to decrement
-     * @return the updated index
-     */
-    private int decrement(int index) {
-        index--;
-        if (index < 0) {
-            index = maxElements - 1;
-        }
-        return index;
-    }
-
-    /**
-     * Returns an iterator over this buffer's elements.
-     *
-     * @return an iterator over this buffer's elements
-     */
-    public Iterator iterator() {
-        return new Iterator() {
-
-            private int index = m_start;
-            private int lastReturnedIndex = -1;
-            private boolean isFirst = m_full;
-
-            public boolean hasNext() {
-                return isFirst || (index != m_end);
-                
-            }
-
-            public Object next() {
-                if (!hasNext()) throw new NoSuchElementException();
-                isFirst = false;
-                lastReturnedIndex = index;
-                index = increment(index);
-                return m_elements[lastReturnedIndex];
-            }
-
-            public void remove() {
-                if (lastReturnedIndex == -1) throw new IllegalStateException();
-
-                // First element can be removed quickly
-                if (lastReturnedIndex == m_start) {
-                    BoundedFifoBuffer.this.remove();
-                    lastReturnedIndex = -1;
-                    return;
-                }
-
-                // Other elements require us to shift the subsequent elements
-                int i = lastReturnedIndex + 1;
-                while (i != m_end) {
-                    if (i >= maxElements) {
-                        m_elements[i - 1] = m_elements[0];
-                        i = 0;
-                    } else {
-                        m_elements[i - 1] = m_elements[i];
-                        i++;
-                    }
-                }
-
-                lastReturnedIndex = -1;
-                m_end = decrement(m_end);
-                m_elements[m_end] = null;
-                m_full = false;
-                index = decrement(index);
-            }
-
-        };
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BoundedMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BoundedMap.java
deleted file mode 100755
index a7a82f6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BoundedMap.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.Map;
-
-/**
- * Defines a map that is bounded in size.
- * <p>
- * The size of the map can vary, but it can never exceed a preset 
- * maximum number of elements. This interface allows the querying of details
- * associated with the maximum number of elements.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author Stephen Colebourne
- */
-public interface BoundedMap extends Map {
-
-    /**
-     * Returns true if this map is full and no new elements can be added.
-     *
-     * @return <code>true</code> if the map is full
-     */
-    boolean isFull();
-
-    /**
-     * Gets the maximum size of the map (the bound).
-     *
-     * @return the maximum number of elements the map can hold
-     */
-    int maxSize();
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/Buffer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/Buffer.java
deleted file mode 100755
index bbf3264..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/Buffer.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.Collection;
-
-/**
- * Defines a collection that allows objects to be removed in some well-defined order.
- * <p>
- * The removal order can be based on insertion order (eg, a FIFO queue or a
- * LIFO stack), on access order (eg, an LRU cache), on some arbitrary comparator
- * (eg, a priority queue) or on any other well-defined ordering.
- * <p>
- * Note that the removal order is not necessarily the same as the iteration
- * order.  A <code>Buffer</code> implementation may have equivalent removal
- * and iteration orders, but this is not required.
- * <p>
- * This interface does not specify any behavior for 
- * {@link Object#equals(Object)} and {@link Object#hashCode} methods.  It
- * is therefore possible for a <code>Buffer</code> implementation to also
- * also implement {@link java.util.List}, {@link java.util.Set} or 
- * {@link Bag}.
- *
- * @since Commons Collections 2.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- * 
- * @author Avalon
- * @author Berin Loritsch
- * @author Paul Jack
- * @author Stephen Colebourne
- */
-public interface Buffer extends Collection {
-
-    /**
-     * Gets and removes the next object from the buffer.
-     *
-     * @return the next object in the buffer, which is also removed
-     * @throws BufferUnderflowException if the buffer is already empty
-     */
-    Object remove();
-
-    /**
-     * Gets the next object from the buffer without removing it.
-     *
-     * @return the next object in the buffer, which is not removed
-     * @throws BufferUnderflowException if the buffer is empty
-     */
-    Object get();
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BufferOverflowException.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BufferOverflowException.java
deleted file mode 100755
index 4f8e233..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BufferOverflowException.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-/**
- * The BufferOverflowException is used when the buffer's capacity has been
- * exceeded.
- *
- * @since Commons Collections 2.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- * 
- * @author Avalon
- * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
- * @author <a href="mailto:jefft@apache.org">Jeff Turner</a>
- * @author Paul Jack
- * @author Stephen Colebourne
- */
-public class BufferOverflowException extends RuntimeException {
-    
-    /** The root cause throwable */
-    private final Throwable throwable;
-
-    /**
-     * Constructs a new <code>BufferOverflowException</code>.
-     */
-    public BufferOverflowException() {
-        super();
-        throwable = null;
-    }
-
-    /** 
-     * Construct a new <code>BufferOverflowException</code>.
-     * 
-     * @param message  the detail message for this exception
-     */
-    public BufferOverflowException(String message) {
-        this(message, null);
-    }
-
-    /** 
-     * Construct a new <code>BufferOverflowException</code>.
-     * 
-     * @param message  the detail message for this exception
-     * @param exception  the root cause of the exception
-     */
-    public BufferOverflowException(String message, Throwable exception) {
-        super(message);
-        throwable = exception;
-    }
-
-    /**
-     * Gets the root cause of the exception.
-     *
-     * @return the root cause
-     */
-    public final Throwable getCause() {
-        return throwable;
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BufferUnderflowException.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BufferUnderflowException.java
deleted file mode 100755
index 8e3a192..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BufferUnderflowException.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.NoSuchElementException;
-
-/**
- * The BufferUnderflowException is used when the buffer is already empty.
- * <p>
- * NOTE: From version 3.0, this exception extends NoSuchElementException.
- * 
- * @since Commons Collections 2.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- *
- * @author Avalon
- * @author Berin Loritsch
- * @author Jeff Turner
- * @author Paul Jack
- * @author Stephen Colebourne
- */
-public class BufferUnderflowException extends NoSuchElementException {
-    
-    /** The root cause throwable */
-    private final Throwable throwable;
-
-    /**
-     * Constructs a new <code>BufferUnderflowException</code>.
-     */
-    public BufferUnderflowException() {
-        super();
-        throwable = null;
-    }
-
-    /** 
-     * Construct a new <code>BufferUnderflowException</code>.
-     * 
-     * @param message  the detail message for this exception
-     */
-    public BufferUnderflowException(String message) {
-        this(message, null);
-    }
-
-    /** 
-     * Construct a new <code>BufferUnderflowException</code>.
-     * 
-     * @param message  the detail message for this exception
-     * @param exception  the root cause of the exception
-     */
-    public BufferUnderflowException(String message, Throwable exception) {
-        super(message);
-        throwable = exception;
-    }
-
-    /**
-     * Gets the root cause of the exception.
-     *
-     * @return the root cause
-     */
-    public final Throwable getCause() {
-        return throwable;
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BufferUtils.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BufferUtils.java
deleted file mode 100755
index 31f6a61..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/BufferUtils.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- *  Copyright 2002-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import org.apache.commons.collections.buffer.BlockingBuffer;
-import org.apache.commons.collections.buffer.PredicatedBuffer;
-import org.apache.commons.collections.buffer.SynchronizedBuffer;
-import org.apache.commons.collections.buffer.TransformedBuffer;
-import org.apache.commons.collections.buffer.TypedBuffer;
-import org.apache.commons.collections.buffer.UnmodifiableBuffer;
-import org.apache.commons.collections.buffer.BoundedBuffer;
-
-/**
- * Provides utility methods and decorators for {@link Buffer} instances.
- *
- * @since Commons Collections 2.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- *
- * @author Paul Jack
- * @author Stephen Colebourne
- */
-public class BufferUtils {
-
-    /**
-     * An empty unmodifiable buffer.
-     */
-    public static final Buffer EMPTY_BUFFER = UnmodifiableBuffer.decorate(new ArrayStack(1));
-
-    /**
-     * <code>BufferUtils</code> should not normally be instantiated.
-     */
-    public BufferUtils() {
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns a synchronized buffer backed by the given buffer.
-     * Much like the synchronized collections returned by
-     * {@link java.util.Collections}, you must manually synchronize on
-     * the returned buffer's iterator to avoid non-deterministic behavior:
-     *
-     * <pre>
-     * Buffer b = BufferUtils.synchronizedBuffer(myBuffer);
-     * synchronized (b) {
-     *     Iterator i = b.iterator();
-     *     while (i.hasNext()) {
-     *         process (i.next());
-     *     }
-     * }
-     * </pre>
-     *
-     * @param buffer  the buffer to synchronize, must not be null
-     * @return a synchronized buffer backed by that buffer
-     * @throws IllegalArgumentException  if the Buffer is null
-     */
-    public static Buffer synchronizedBuffer(Buffer buffer) {
-        return SynchronizedBuffer.decorate(buffer);
-    }
-
-    /**
-     * Returns a synchronized buffer backed by the given buffer that will
-     * block on {@link Buffer#get()} and {@link Buffer#remove()} operations.
-     * If the buffer is empty, then the {@link Buffer#get()} and
-     * {@link Buffer#remove()} operations will block until new elements
-     * are added to the buffer, rather than immediately throwing a
-     * <code>BufferUnderflowException</code>.
-     *
-     * @param buffer  the buffer to synchronize, must not be null
-     * @return a blocking buffer backed by that buffer
-     * @throws IllegalArgumentException  if the Buffer is null
-     */
-    public static Buffer blockingBuffer(Buffer buffer) {
-        return BlockingBuffer.decorate(buffer);
-    }
-
-    /**
-     * Returns a synchronized buffer backed by the given buffer that will
-     * block on {@link Buffer#get()} and {@link Buffer#remove()} operations
-     * until <code>timeout</code> expires.  If the buffer is empty, then the
-     * {@link Buffer#get()} and {@link Buffer#remove()} operations will block
-     * until new elements are added to the buffer, rather than immediately
-     * throwing a <code>BufferUnderflowException</code>.
-     *
-     * @param buffer  the buffer to synchronize, must not be null
-     * @param timeoutMillis  the timeout value in milliseconds, zero or less for no timeout
-     * @return a blocking buffer backed by that buffer
-     * @throws IllegalArgumentException  if the Buffer is null
-     * @since Commons Collections 3.2
-     */
-    public static Buffer blockingBuffer(Buffer buffer, long timeoutMillis) {
-        return BlockingBuffer.decorate(buffer, timeoutMillis);
-    }
-
-    /**
-     * Returns a synchronized buffer backed by the given buffer that will
-     * block on {@link Buffer#add(Object)} and
-     * {@link Buffer#addAll(java.util.Collection)} until enough object(s) are
-     * removed from the buffer to allow the object(s) to be added and still
-     * maintain the maximum size.
-     *
-     * @param buffer  the buffer to make bounded,  must not be null
-     * @param maximumSize  the maximum size
-     * @return a bounded buffer backed by the given buffer
-     * @throws IllegalArgumentException if the given buffer is null
-     * @since Commons Collections 3.2
-     */
-    public static Buffer boundedBuffer(Buffer buffer, int maximumSize) {
-        return BoundedBuffer.decorate(buffer, maximumSize);
-    }
-
-    /**
-     * Returns a synchronized buffer backed by the given buffer that will
-     * block on {@link Buffer#add(Object)} and
-     * {@link Buffer#addAll(java.util.Collection)} until enough object(s) are
-     * removed from the buffer to allow the object(s) to be added and still
-     * maintain the maximum size or the timeout expires.
-     *
-     * @param buffer the buffer to make bounded, must not be null
-     * @param maximumSize the maximum size
-     * @param timeoutMillis  the timeout value in milliseconds, zero or less for no timeout
-     * @return a bounded buffer backed by the given buffer
-     * @throws IllegalArgumentException if the given buffer is null
-     * @since Commons Collections 3.2
-     */
-    public static Buffer boundedBuffer(Buffer buffer, int maximumSize, long timeoutMillis) {
-        return BoundedBuffer.decorate(buffer, maximumSize, timeoutMillis);
-    }
-
-    /**
-     * Returns an unmodifiable buffer backed by the given buffer.
-     *
-     * @param buffer  the buffer to make unmodifiable, must not be null
-     * @return an unmodifiable buffer backed by that buffer
-     * @throws IllegalArgumentException  if the Buffer is null
-     */
-    public static Buffer unmodifiableBuffer(Buffer buffer) {
-        return UnmodifiableBuffer.decorate(buffer);
-    }
-
-    /**
-     * Returns a predicated (validating) buffer backed by the given buffer.
-     * <p>
-     * Only objects that pass the test in the given predicate can be added to the buffer.
-     * Trying to add an invalid object results in an IllegalArgumentException.
-     * It is important not to use the original buffer after invoking this method,
-     * as it is a backdoor for adding invalid objects.
-     *
-     * @param buffer  the buffer to predicate, must not be null
-     * @param predicate  the predicate used to evaluate new elements, must not be null
-     * @return a predicated buffer
-     * @throws IllegalArgumentException  if the Buffer or Predicate is null
-     */
-    public static Buffer predicatedBuffer(Buffer buffer, Predicate predicate) {
-        return PredicatedBuffer.decorate(buffer, predicate);
-    }
-
-    /**
-     * Returns a typed buffer backed by the given buffer.
-     * <p>
-     * Only elements of the specified type can be added to the buffer.
-     *
-     * @param buffer  the buffer to predicate, must not be null
-     * @param type  the type to allow into the buffer, must not be null
-     * @return a typed buffer
-     * @throws IllegalArgumentException  if the buffer or type is null
-     */
-    public static Buffer typedBuffer(Buffer buffer, Class type) {
-        return TypedBuffer.decorate(buffer, type);
-    }
-
-    /**
-     * Returns a transformed buffer backed by the given buffer.
-     * <p>
-     * Each object is passed through the transformer as it is added to the
-     * Buffer. It is important not to use the original buffer after invoking this 
-     * method, as it is a backdoor for adding untransformed objects.
-     *
-     * @param buffer  the buffer to predicate, must not be null
-     * @param transformer  the transformer for the buffer, must not be null
-     * @return a transformed buffer backed by the given buffer
-     * @throws IllegalArgumentException  if the Buffer or Transformer is null
-     */
-    public static Buffer transformedBuffer(Buffer buffer, Transformer transformer) {
-        return TransformedBuffer.decorate(buffer, transformer);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/Closure.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/Closure.java
deleted file mode 100755
index e86d77c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/Closure.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-/**
- * Defines a functor interface implemented by classes that do something.
- * <p>
- * A <code>Closure</code> represents a block of code which is executed from
- * inside some block, function or iteration. It operates an input object.
- * <p>
- * Standard implementations of common closures are provided by
- * {@link ClosureUtils}. These include method invokation and for/while loops.
- *  
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- *
- * @author James Strachan
- * @author Nicola Ken Barozzi
- * @author Stephen Colebourne
- */
-public interface Closure {
-
-    /**
-     * Performs an action on the specified input object.
-     *
-     * @param input  the input to execute on
-     * @throws ClassCastException (runtime) if the input is the wrong class
-     * @throws IllegalArgumentException (runtime) if the input is invalid
-     * @throws FunctorException (runtime) if any other error occurs
-     */
-    public void execute(Object input);
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ClosureUtils.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ClosureUtils.java
deleted file mode 100755
index a494333..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ClosureUtils.java
+++ /dev/null
@@ -1,369 +0,0 @@
-/*
- *  Copyright 2002-2004,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.commons.collections;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.commons.collections.functors.ChainedClosure;
-import org.apache.commons.collections.functors.EqualPredicate;
-import org.apache.commons.collections.functors.ExceptionClosure;
-import org.apache.commons.collections.functors.ForClosure;
-import org.apache.commons.collections.functors.IfClosure;
-import org.apache.commons.collections.functors.InvokerTransformer;
-import org.apache.commons.collections.functors.NOPClosure;
-import org.apache.commons.collections.functors.SwitchClosure;
-import org.apache.commons.collections.functors.TransformerClosure;
-import org.apache.commons.collections.functors.WhileClosure;
-
-/**
- * <code>ClosureUtils</code> provides reference implementations and utilities
- * for the Closure functor interface. The supplied closures are:
- * <ul>
- * <li>Invoker - invokes a method on the input object
- * <li>For - repeatedly calls a closure for a fixed number of times
- * <li>While - repeatedly calls a closure while a predicate is true
- * <li>DoWhile - repeatedly calls a closure while a predicate is true
- * <li>Chained - chains two or more closures together
- * <li>Switch - calls one closure based on one or more predicates
- * <li>SwitchMap - calls one closure looked up from a Map
- * <li>Transformer - wraps a Transformer as a Closure
- * <li>NOP - does nothing
- * <li>Exception - always throws an exception
- * </ul>
- * All the supplied closures are Serializable.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- *
- * @author Stephen Colebourne
- * @author Matt Benson
- */
-public class ClosureUtils {
-
-    /**
-     * This class is not normally instantiated.
-     */
-    public ClosureUtils() {
-        super();
-    }
-
-    /**
-     * Gets a Closure that always throws an exception.
-     * This could be useful during testing as a placeholder.
-     *
-     * @see org.apache.commons.collections.functors.ExceptionClosure
-     * 
-     * @return the closure
-     */
-    public static Closure exceptionClosure() {
-        return ExceptionClosure.INSTANCE;
-    }
-
-    /**
-     * Gets a Closure that will do nothing.
-     * This could be useful during testing as a placeholder.
-     *
-     * @see org.apache.commons.collections.functors.NOPClosure
-     * 
-     * @return the closure
-     */
-    public static Closure nopClosure() {
-        return NOPClosure.INSTANCE;
-    }
-
-    /**
-     * Creates a Closure that calls a Transformer each time it is called.
-     * The transformer will be called using the closure's input object.
-     * The transformer's result will be ignored.
-     *
-     * @see org.apache.commons.collections.functors.TransformerClosure
-     * 
-     * @param transformer  the transformer to run each time in the closure, null means nop
-     * @return the closure
-     */
-    public static Closure asClosure(Transformer transformer) {
-        return TransformerClosure.getInstance(transformer);
-    }
-
-    /**
-     * Creates a Closure that will call the closure <code>count</code> times.
-     * <p>
-     * A null closure or zero count returns the <code>NOPClosure</code>.
-     *
-     * @see org.apache.commons.collections.functors.ForClosure
-     * 
-     * @param count  the number of times to loop
-     * @param closure  the closure to call repeatedly
-     * @return the <code>for</code> closure
-     */
-    public static Closure forClosure(int count, Closure closure) {
-        return ForClosure.getInstance(count, closure);
-    }
-
-    /**
-     * Creates a Closure that will call the closure repeatedly until the 
-     * predicate returns false.
-     *
-     * @see org.apache.commons.collections.functors.WhileClosure
-     * 
-     * @param predicate  the predicate to use as an end of loop test, not null
-     * @param closure  the closure to call repeatedly, not null
-     * @return the <code>while</code> closure
-     * @throws IllegalArgumentException if either argument is null
-     */
-    public static Closure whileClosure(Predicate predicate, Closure closure) {
-        return WhileClosure.getInstance(predicate, closure, false);
-    }
-
-    /**
-     * Creates a Closure that will call the closure once and then repeatedly
-     * until the predicate returns false.
-     *
-     * @see org.apache.commons.collections.functors.WhileClosure
-     * 
-     * @param closure  the closure to call repeatedly, not null
-     * @param predicate  the predicate to use as an end of loop test, not null
-     * @return the <code>do-while</code> closure
-     * @throws IllegalArgumentException if either argument is null
-     */
-    public static Closure doWhileClosure(Closure closure, Predicate predicate) {
-        return WhileClosure.getInstance(predicate, closure, true);
-    }
-
-    /**
-     * Creates a Closure that will invoke a specific method on the closure's
-     * input object by reflection.
-     *
-     * @see org.apache.commons.collections.functors.InvokerTransformer
-     * @see org.apache.commons.collections.functors.TransformerClosure
-     * 
-     * @param methodName  the name of the method
-     * @return the <code>invoker</code> closure
-     * @throws IllegalArgumentException if the method name is null
-     */
-    public static Closure invokerClosure(String methodName) {
-        // reuse transformer as it has caching - this is lazy really, should have inner class here
-        return asClosure(InvokerTransformer.getInstance(methodName));
-    }
-
-    /**
-     * Creates a Closure that will invoke a specific method on the closure's
-     * input object by reflection.
-     *
-     * @see org.apache.commons.collections.functors.InvokerTransformer
-     * @see org.apache.commons.collections.functors.TransformerClosure
-     * 
-     * @param methodName  the name of the method
-     * @param paramTypes  the parameter types
-     * @param args  the arguments
-     * @return the <code>invoker</code> closure
-     * @throws IllegalArgumentException if the method name is null
-     * @throws IllegalArgumentException if the paramTypes and args don't match
-     */
-    public static Closure invokerClosure(String methodName, Class[] paramTypes, Object[] args) {
-        // reuse transformer as it has caching - this is lazy really, should have inner class here
-        return asClosure(InvokerTransformer.getInstance(methodName, paramTypes, args));
-    }
-
-    /**
-     * Create a new Closure that calls two Closures, passing the result of
-     * the first into the second.
-     * 
-     * @see org.apache.commons.collections.functors.ChainedClosure
-     * 
-     * @param closure1  the first closure
-     * @param closure2  the second closure
-     * @return the <code>chained</code> closure
-     * @throws IllegalArgumentException if either closure is null
-     */
-    public static Closure chainedClosure(Closure closure1, Closure closure2) {
-        return ChainedClosure.getInstance(closure1, closure2);
-    }
-
-    /**
-     * Create a new Closure that calls each closure in turn, passing the 
-     * result into the next closure.
-     * 
-     * @see org.apache.commons.collections.functors.ChainedClosure
-     * 
-     * @param closures  an array of closures to chain
-     * @return the <code>chained</code> closure
-     * @throws IllegalArgumentException if the closures array is null
-     * @throws IllegalArgumentException if any closure in the array is null
-     */
-    public static Closure chainedClosure(Closure[] closures) {
-        return ChainedClosure.getInstance(closures);
-    }
-
-    /**
-     * Create a new Closure that calls each closure in turn, passing the 
-     * result into the next closure. The ordering is that of the iterator()
-     * method on the collection.
-     * 
-     * @see org.apache.commons.collections.functors.ChainedClosure
-     * 
-     * @param closures  a collection of closures to chain
-     * @return the <code>chained</code> closure
-     * @throws IllegalArgumentException if the closures collection is null
-     * @throws IllegalArgumentException if the closures collection is empty
-     * @throws IllegalArgumentException if any closure in the collection is null
-     */
-    public static Closure chainedClosure(Collection closures) {
-        return ChainedClosure.getInstance(closures);
-    }
-
-    /**
-     * Create a new Closure that calls another closure based on the
-     * result of the specified predicate.
-     * 
-     * @see org.apache.commons.collections.functors.IfClosure
-     * 
-     * @param predicate  the validating predicate
-     * @param trueClosure  the closure called if the predicate is true
-     * @return the <code>if</code> closure
-     * @throws IllegalArgumentException if the predicate is null
-     * @throws IllegalArgumentException if the closure is null
-     * @since Commons Collections 3.2
-     */
-    public static Closure ifClosure(Predicate predicate, Closure trueClosure) {
-        return IfClosure.getInstance(predicate, trueClosure);
-    }
-
-    /**
-     * Create a new Closure that calls one of two closures depending 
-     * on the specified predicate.
-     * 
-     * @see org.apache.commons.collections.functors.IfClosure
-     * 
-     * @param predicate  the predicate to switch on
-     * @param trueClosure  the closure called if the predicate is true
-     * @param falseClosure  the closure called if the predicate is false
-     * @return the <code>switch</code> closure
-     * @throws IllegalArgumentException if the predicate is null
-     * @throws IllegalArgumentException if either closure is null
-     */
-    public static Closure ifClosure(Predicate predicate, Closure trueClosure, Closure falseClosure) {
-        return IfClosure.getInstance(predicate, trueClosure, falseClosure);
-    }
-
-    /**
-     * Create a new Closure that calls one of the closures depending 
-     * on the predicates.
-     * <p>
-     * The closure at array location 0 is called if the predicate at array 
-     * location 0 returned true. Each predicate is evaluated
-     * until one returns true.
-     * 
-     * @see org.apache.commons.collections.functors.SwitchClosure
-     * 
-     * @param predicates  an array of predicates to check, not null
-     * @param closures  an array of closures to call, not null
-     * @return the <code>switch</code> closure
-     * @throws IllegalArgumentException if the either array is null
-     * @throws IllegalArgumentException if any element in the arrays is null
-     * @throws IllegalArgumentException if the arrays are different sizes
-     */
-    public static Closure switchClosure(Predicate[] predicates, Closure[] closures) {
-        return SwitchClosure.getInstance(predicates, closures, null);
-    }
-
-    /**
-     * Create a new Closure that calls one of the closures depending 
-     * on the predicates.
-     * <p>
-     * The closure at array location 0 is called if the predicate at array
-     * location 0 returned true. Each predicate is evaluated
-     * until one returns true. If no predicates evaluate to true, the default
-     * closure is called.
-     * 
-     * @see org.apache.commons.collections.functors.SwitchClosure
-     * 
-     * @param predicates  an array of predicates to check, not null
-     * @param closures  an array of closures to call, not null
-     * @param defaultClosure  the default to call if no predicate matches
-     * @return the <code>switch</code> closure
-     * @throws IllegalArgumentException if the either array is null
-     * @throws IllegalArgumentException if any element in the arrays is null
-     * @throws IllegalArgumentException if the arrays are different sizes
-     */
-    public static Closure switchClosure(Predicate[] predicates, Closure[] closures, Closure defaultClosure) {
-        return SwitchClosure.getInstance(predicates, closures, defaultClosure);
-    }
-    
-    /**
-     * Create a new Closure that calls one of the closures depending 
-     * on the predicates. 
-     * <p>
-     * The Map consists of Predicate keys and Closure values. A closure 
-     * is called if its matching predicate returns true. Each predicate is evaluated
-     * until one returns true. If no predicates evaluate to true, the default
-     * closure is called. The default closure is set in the map with a 
-     * null key. The ordering is that of the iterator() method on the entryset 
-     * collection of the map.
-     * 
-     * @see org.apache.commons.collections.functors.SwitchClosure
-     * 
-     * @param predicatesAndClosures  a map of predicates to closures
-     * @return the <code>switch</code> closure
-     * @throws IllegalArgumentException if the map is null
-     * @throws IllegalArgumentException if the map is empty
-     * @throws IllegalArgumentException if any closure in the map is null
-     * @throws ClassCastException  if the map elements are of the wrong type
-     */
-    public static Closure switchClosure(Map predicatesAndClosures) {
-        return SwitchClosure.getInstance(predicatesAndClosures);
-    }
-
-    /**
-     * Create a new Closure that uses the input object as a key to find the
-     * closure to call. 
-     * <p>
-     * The Map consists of object keys and Closure values. A closure 
-     * is called if the input object equals the key. If there is no match, the
-     * default closure is called. The default closure is set in the map
-     * using a null key.
-     * 
-     * @see org.apache.commons.collections.functors.SwitchClosure
-     * 
-     * @param objectsAndClosures  a map of objects to closures
-     * @return the closure
-     * @throws IllegalArgumentException if the map is null
-     * @throws IllegalArgumentException if the map is empty
-     * @throws IllegalArgumentException if any closure in the map is null
-     */
-    public static Closure switchMapClosure(Map objectsAndClosures) {
-        Closure[] trs = null;
-        Predicate[] preds = null;
-        if (objectsAndClosures == null) {
-            throw new IllegalArgumentException("The object and closure map must not be null");
-        }
-        Closure def = (Closure) objectsAndClosures.remove(null);
-        int size = objectsAndClosures.size();
-        trs = new Closure[size];
-        preds = new Predicate[size];
-        int i = 0;
-        for (Iterator it = objectsAndClosures.entrySet().iterator(); it.hasNext();) {
-            Map.Entry entry = (Map.Entry) it.next();
-            preds[i] = EqualPredicate.getInstance(entry.getKey());
-            trs[i] = (Closure) entry.getValue();
-            i++;
-        }
-        return switchClosure(preds, trs, def);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/CollectionUtils.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/CollectionUtils.java
deleted file mode 100755
index 0f739da..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/CollectionUtils.java
+++ /dev/null
@@ -1,1210 +0,0 @@
-/*
- *  Copyright 2001-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.lang.reflect.Array;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.collections.collection.PredicatedCollection;
-import org.apache.commons.collections.collection.SynchronizedCollection;
-import org.apache.commons.collections.collection.TransformedCollection;
-import org.apache.commons.collections.collection.TypedCollection;
-import org.apache.commons.collections.collection.UnmodifiableBoundedCollection;
-import org.apache.commons.collections.collection.UnmodifiableCollection;
-
-/**
- * Provides utility methods and decorators for {@link Collection} instances.
- *
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- * 
- * @author Rodney Waldhoff
- * @author Paul Jack
- * @author Stephen Colebourne
- * @author Steve Downey
- * @author Herve Quiroz
- * @author Peter KoBek
- * @author Matthew Hawthorne
- * @author Janek Bogucki
- * @author Phil Steitz
- * @author Steven Melzer
- * @author Jon Schewe
- * @author Neil O'Toole
- * @author Stephen Smith
- */
-public class CollectionUtils {
-
-    /** Constant to avoid repeated object creation */
-    private static Integer INTEGER_ONE = new Integer(1);
-
-    /**
-     * An empty unmodifiable collection.
-     * The JDK provides empty Set and List implementations which could be used for
-     * this purpose. However they could be cast to Set or List which might be
-     * undesirable. This implementation only implements Collection.
-     */
-    public static final Collection EMPTY_COLLECTION = UnmodifiableCollection.decorate(new ArrayList());
-
-    /**
-     * <code>CollectionUtils</code> should not normally be instantiated.
-     */
-    public CollectionUtils() {
-    }
-
-    /**
-     * Returns a {@link Collection} containing the union
-     * of the given {@link Collection}s.
-     * <p>
-     * The cardinality of each element in the returned {@link Collection}
-     * will be equal to the maximum of the cardinality of that element
-     * in the two given {@link Collection}s.
-     *
-     * @param a  the first collection, must not be null
-     * @param b  the second collection, must not be null
-     * @return  the union of the two collections
-     * @see Collection#addAll
-     */
-    public static Collection union(final Collection a, final Collection b) {
-        ArrayList list = new ArrayList();
-        Map mapa = getCardinalityMap(a);
-        Map mapb = getCardinalityMap(b);
-        Set elts = new HashSet(a);
-        elts.addAll(b);
-        Iterator it = elts.iterator();
-        while(it.hasNext()) {
-            Object obj = it.next();
-            for(int i=0,m=Math.max(getFreq(obj,mapa),getFreq(obj,mapb));i<m;i++) {
-                list.add(obj);
-            }
-        }
-        return list;
-    }
-
-    /**
-     * Returns a {@link Collection} containing the intersection
-     * of the given {@link Collection}s.
-     * <p>
-     * The cardinality of each element in the returned {@link Collection}
-     * will be equal to the minimum of the cardinality of that element
-     * in the two given {@link Collection}s.
-     *
-     * @param a  the first collection, must not be null
-     * @param b  the second collection, must not be null
-     * @return the intersection of the two collections
-     * @see Collection#retainAll
-     * @see #containsAny
-     */
-    public static Collection intersection(final Collection a, final Collection b) {
-        ArrayList list = new ArrayList();
-        Map mapa = getCardinalityMap(a);
-        Map mapb = getCardinalityMap(b);
-        Set elts = new HashSet(a);
-        elts.addAll(b);
-        Iterator it = elts.iterator();
-        while(it.hasNext()) {
-            Object obj = it.next();
-            for(int i=0,m=Math.min(getFreq(obj,mapa),getFreq(obj,mapb));i<m;i++) {
-                list.add(obj);
-            }
-        }
-        return list;
-    }
-
-    /**
-     * Returns a {@link Collection} containing the exclusive disjunction
-     * (symmetric difference) of the given {@link Collection}s.
-     * <p>
-     * The cardinality of each element <i>e</i> in the returned {@link Collection}
-     * will be equal to
-     * <tt>max(cardinality(<i>e</i>,<i>a</i>),cardinality(<i>e</i>,<i>b</i>)) - min(cardinality(<i>e</i>,<i>a</i>),cardinality(<i>e</i>,<i>b</i>))</tt>.
-     * <p>
-     * This is equivalent to
-     * <tt>{@link #subtract subtract}({@link #union union(a,b)},{@link #intersection intersection(a,b)})</tt>
-     * or
-     * <tt>{@link #union union}({@link #subtract subtract(a,b)},{@link #subtract subtract(b,a)})</tt>.
-     *
-     * @param a  the first collection, must not be null
-     * @param b  the second collection, must not be null
-     * @return the symmetric difference of the two collections
-     */
-    public static Collection disjunction(final Collection a, final Collection b) {
-        ArrayList list = new ArrayList();
-        Map mapa = getCardinalityMap(a);
-        Map mapb = getCardinalityMap(b);
-        Set elts = new HashSet(a);
-        elts.addAll(b);
-        Iterator it = elts.iterator();
-        while(it.hasNext()) {
-            Object obj = it.next();
-            for(int i=0,m=((Math.max(getFreq(obj,mapa),getFreq(obj,mapb)))-(Math.min(getFreq(obj,mapa),getFreq(obj,mapb))));i<m;i++) {
-                list.add(obj);
-            }
-        }
-        return list;
-    }
-
-    /**
-     * Returns a new {@link Collection} containing <tt><i>a</i> - <i>b</i></tt>.
-     * The cardinality of each element <i>e</i> in the returned {@link Collection}
-     * will be the cardinality of <i>e</i> in <i>a</i> minus the cardinality
-     * of <i>e</i> in <i>b</i>, or zero, whichever is greater.
-     *
-     * @param a  the collection to subtract from, must not be null
-     * @param b  the collection to subtract, must not be null
-     * @return a new collection with the results
-     * @see Collection#removeAll
-     */
-    public static Collection subtract(final Collection a, final Collection b) {
-        ArrayList list = new ArrayList( a );
-        for (Iterator it = b.iterator(); it.hasNext();) {
-            list.remove(it.next());
-        }
-        return list;
-    }
-
-    /**
-     * Returns <code>true</code> iff at least one element is in both collections.
-     * <p>
-     * In other words, this method returns <code>true</code> iff the
-     * {@link #intersection} of <i>coll1</i> and <i>coll2</i> is not empty.
-     * 
-     * @param coll1  the first collection, must not be null
-     * @param coll2  the first collection, must not be null
-     * @return <code>true</code> iff the intersection of the collections is non-empty
-     * @since 2.1
-     * @see #intersection
-     */
-    public static boolean containsAny(final Collection coll1, final Collection coll2) {
-        if (coll1.size() < coll2.size()) {
-            for (Iterator it = coll1.iterator(); it.hasNext();) {
-                if (coll2.contains(it.next())) {
-                    return true;
-                }
-            }
-        } else {
-            for (Iterator it = coll2.iterator(); it.hasNext();) {
-                if (coll1.contains(it.next())) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Returns a {@link Map} mapping each unique element in the given
-     * {@link Collection} to an {@link Integer} representing the number
-     * of occurrences of that element in the {@link Collection}.
-     * <p>
-     * Only those elements present in the collection will appear as
-     * keys in the map.
-     * 
-     * @param coll  the collection to get the cardinality map for, must not be null
-     * @return the populated cardinality map
-     */
-    public static Map getCardinalityMap(final Collection coll) {
-        Map count = new HashMap();
-        for (Iterator it = coll.iterator(); it.hasNext();) {
-            Object obj = it.next();
-            Integer c = (Integer) (count.get(obj));
-            if (c == null) {
-                count.put(obj,INTEGER_ONE);
-            } else {
-                count.put(obj,new Integer(c.intValue() + 1));
-            }
-        }
-        return count;
-    }
-
-    /**
-     * Returns <tt>true</tt> iff <i>a</i> is a sub-collection of <i>b</i>,
-     * that is, iff the cardinality of <i>e</i> in <i>a</i> is less
-     * than or equal to the cardinality of <i>e</i> in <i>b</i>,
-     * for each element <i>e</i> in <i>a</i>.
-     *
-     * @param a  the first (sub?) collection, must not be null
-     * @param b  the second (super?) collection, must not be null
-     * @return <code>true</code> iff <i>a</i> is a sub-collection of <i>b</i>
-     * @see #isProperSubCollection
-     * @see Collection#containsAll
-     */
-    public static boolean isSubCollection(final Collection a, final Collection b) {
-        Map mapa = getCardinalityMap(a);
-        Map mapb = getCardinalityMap(b);
-        Iterator it = a.iterator();
-        while (it.hasNext()) {
-            Object obj = it.next();
-            if (getFreq(obj, mapa) > getFreq(obj, mapb)) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Returns <tt>true</tt> iff <i>a</i> is a <i>proper</i> sub-collection of <i>b</i>,
-     * that is, iff the cardinality of <i>e</i> in <i>a</i> is less
-     * than or equal to the cardinality of <i>e</i> in <i>b</i>,
-     * for each element <i>e</i> in <i>a</i>, and there is at least one
-     * element <i>f</i> such that the cardinality of <i>f</i> in <i>b</i>
-     * is strictly greater than the cardinality of <i>f</i> in <i>a</i>.
-     * <p>
-     * The implementation assumes
-     * <ul>
-     *    <li><code>a.size()</code> and <code>b.size()</code> represent the 
-     *    total cardinality of <i>a</i> and <i>b</i>, resp. </li>
-     *    <li><code>a.size() < Integer.MAXVALUE</code></li>
-     * </ul>
-     *
-     * @param a  the first (sub?) collection, must not be null
-     * @param b  the second (super?) collection, must not be null
-     * @return <code>true</code> iff <i>a</i> is a <i>proper</i> sub-collection of <i>b</i>
-     * @see #isSubCollection
-     * @see Collection#containsAll
-     */
-    public static boolean isProperSubCollection(final Collection a, final Collection b) {
-        return (a.size() < b.size()) && CollectionUtils.isSubCollection(a,b);
-    }
-
-    /**
-     * Returns <tt>true</tt> iff the given {@link Collection}s contain
-     * exactly the same elements with exactly the same cardinalities.
-     * <p>
-     * That is, iff the cardinality of <i>e</i> in <i>a</i> is
-     * equal to the cardinality of <i>e</i> in <i>b</i>,
-     * for each element <i>e</i> in <i>a</i> or <i>b</i>.
-     *
-     * @param a  the first collection, must not be null
-     * @param b  the second collection, must not be null
-     * @return <code>true</code> iff the collections contain the same elements with the same cardinalities.
-     */
-    public static boolean isEqualCollection(final Collection a, final Collection b) {
-        if(a.size() != b.size()) {
-            return false;
-        } else {
-            Map mapa = getCardinalityMap(a);
-            Map mapb = getCardinalityMap(b);
-            if(mapa.size() != mapb.size()) {
-                return false;
-            } else {
-                Iterator it = mapa.keySet().iterator();
-                while(it.hasNext()) {
-                    Object obj = it.next();
-                    if(getFreq(obj,mapa) != getFreq(obj,mapb)) {
-                        return false;
-                    }
-                }
-                return true;
-            }
-        }
-    }
-
-    /**
-     * Returns the number of occurrences of <i>obj</i> in <i>coll</i>.
-     *
-     * @param obj  the object to find the cardinality of
-     * @param coll  the collection to search
-     * @return the the number of occurrences of obj in coll
-     */
-    public static int cardinality(Object obj, final Collection coll) {
-        if (coll instanceof Set) {
-            return (coll.contains(obj) ? 1 : 0);
-        }
-        if (coll instanceof Bag) {
-            return ((Bag) coll).getCount(obj);
-        }
-        int count = 0;
-        if (obj == null) {
-            for (Iterator it = coll.iterator();it.hasNext();) {
-                if (it.next() == null) {
-                    count++;
-                }
-            }
-        } else {
-            for (Iterator it = coll.iterator();it.hasNext();) {
-                if (obj.equals(it.next())) {
-                    count++;
-                }
-            }
-        }
-        return count;
-    }
-
-    /** 
-     * Finds the first element in the given collection which matches the given predicate.
-     * <p>
-     * If the input collection or predicate is null, or no element of the collection 
-     * matches the predicate, null is returned.
-     *
-     * @param collection  the collection to search, may be null
-     * @param predicate  the predicate to use, may be null
-     * @return the first element of the collection which matches the predicate or null if none could be found
-     */
-    public static Object find(Collection collection, Predicate predicate) {
-        if (collection != null && predicate != null) {
-            for (Iterator iter = collection.iterator(); iter.hasNext();) {
-                Object item = iter.next();
-                if (predicate.evaluate(item)) {
-                    return item;
-                }
-            }
-        }
-        return null;
-    }
-    
-    /** 
-     * Executes the given closure on each element in the collection.
-     * <p>
-     * If the input collection or closure is null, there is no change made.
-     * 
-     * @param collection  the collection to get the input from, may be null
-     * @param closure  the closure to perform, may be null
-     */
-    public static void forAllDo(Collection collection, Closure closure) {
-        if (collection != null && closure != null) {
-            for (Iterator it = collection.iterator(); it.hasNext();) {
-                closure.execute(it.next());
-            }
-        }
-    }
-
-    /** 
-     * Filter the collection by applying a Predicate to each element. If the
-     * predicate returns false, remove the element.
-     * <p>
-     * If the input collection or predicate is null, there is no change made.
-     * 
-     * @param collection  the collection to get the input from, may be null
-     * @param predicate  the predicate to use as a filter, may be null
-     */
-    public static void filter(Collection collection, Predicate predicate) {
-        if (collection != null && predicate != null) {
-            for (Iterator it = collection.iterator(); it.hasNext();) {
-                if (predicate.evaluate(it.next()) == false) {
-                    it.remove();
-                }
-            }
-        }
-    }
-
-    /** 
-     * Transform the collection by applying a Transformer to each element.
-     * <p>
-     * If the input collection or transformer is null, there is no change made.
-     * <p>
-     * This routine is best for Lists, for which set() is used to do the 
-     * transformations "in place."  For other Collections, clear() and addAll()
-     * are used to replace elements.  
-     * <p>
-     * If the input collection controls its input, such as a Set, and the
-     * Transformer creates duplicates (or are otherwise invalid), the 
-     * collection may reduce in size due to calling this method.
-     * 
-     * @param collection  the collection to get the input from, may be null
-     * @param transformer  the transformer to perform, may be null
-     */
-    public static void transform(Collection collection, Transformer transformer) {
-        if (collection != null && transformer != null) {
-            if (collection instanceof List) {
-                List list = (List) collection;
-                for (ListIterator it = list.listIterator(); it.hasNext();) {
-                    it.set(transformer.transform(it.next()));
-                }
-            } else {
-                Collection resultCollection = collect(collection, transformer);
-                collection.clear();
-                collection.addAll(resultCollection);
-            }
-        }
-    }
-
-    /** 
-     * Counts the number of elements in the input collection that match the predicate.
-     * <p>
-     * A <code>null</code> collection or predicate matches no elements.
-     * 
-     * @param inputCollection  the collection to get the input from, may be null
-     * @param predicate  the predicate to use, may be null
-     * @return the number of matches for the predicate in the collection
-     */
-    public static int countMatches(Collection inputCollection, Predicate predicate) {
-        int count = 0;
-        if (inputCollection != null && predicate != null) {
-            for (Iterator it = inputCollection.iterator(); it.hasNext();) {
-                if (predicate.evaluate(it.next())) {
-                    count++;
-                }
-            }
-        }
-        return count;
-    }
-
-    /** 
-     * Answers true if a predicate is true for at least one element of a collection.
-     * <p>
-     * A <code>null</code> collection or predicate returns false.
-     * 
-     * @param collection the collection to get the input from, may be null
-     * @param predicate the predicate to use, may be null
-     * @return true if at least one element of the collection matches the predicate
-     */
-    public static boolean exists(Collection collection, Predicate predicate) {
-        if (collection != null && predicate != null) {
-            for (Iterator it = collection.iterator(); it.hasNext();) {
-                if (predicate.evaluate(it.next())) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    /** 
-     * Selects all elements from input collection which match the given predicate
-     * into an output collection.
-     * <p>
-     * A <code>null</code> predicate matches no elements.
-     * 
-     * @param inputCollection  the collection to get the input from, may not be null
-     * @param predicate  the predicate to use, may be null
-     * @return the elements matching the predicate (new list)
-     * @throws NullPointerException if the input collection is null
-     */
-    public static Collection select(Collection inputCollection, Predicate predicate) {
-        ArrayList answer = new ArrayList(inputCollection.size());
-        select(inputCollection, predicate, answer);
-        return answer;
-    }
-
-    /** 
-     * Selects all elements from input collection which match the given predicate
-     * and adds them to outputCollection.
-     * <p>
-     * If the input collection or predicate is null, there is no change to the 
-     * output collection.
-     * 
-     * @param inputCollection  the collection to get the input from, may be null
-     * @param predicate  the predicate to use, may be null
-     * @param outputCollection  the collection to output into, may not be null
-     */
-    public static void select(Collection inputCollection, Predicate predicate, Collection outputCollection) {
-        if (inputCollection != null && predicate != null) {
-            for (Iterator iter = inputCollection.iterator(); iter.hasNext();) {
-                Object item = iter.next();
-                if (predicate.evaluate(item)) {
-                    outputCollection.add(item);
-                }
-            }
-        }
-    }
-    
-    /**
-     * Selects all elements from inputCollection which don't match the given predicate
-     * into an output collection.
-     * <p>
-     * If the input predicate is <code>null</code>, the result is an empty list.
-     * 
-     * @param inputCollection  the collection to get the input from, may not be null
-     * @param predicate  the predicate to use, may be null
-     * @return the elements <b>not</b> matching the predicate (new list)
-     * @throws NullPointerException if the input collection is null
-     */
-    public static Collection selectRejected(Collection inputCollection, Predicate predicate) {
-        ArrayList answer = new ArrayList(inputCollection.size());
-        selectRejected(inputCollection, predicate, answer);
-        return answer;
-    }
-    
-    /** 
-     * Selects all elements from inputCollection which don't match the given predicate
-     * and adds them to outputCollection.
-     * <p>
-     * If the input predicate is <code>null</code>, no elements are added to <code>outputCollection</code>.
-     * 
-     * @param inputCollection  the collection to get the input from, may be null
-     * @param predicate  the predicate to use, may be null
-     * @param outputCollection  the collection to output into, may not be null
-     */
-    public static void selectRejected(Collection inputCollection, Predicate predicate, Collection outputCollection) {
-        if (inputCollection != null && predicate != null) {
-            for (Iterator iter = inputCollection.iterator(); iter.hasNext();) {
-                Object item = iter.next();
-                if (predicate.evaluate(item) == false) {
-                    outputCollection.add(item);
-                }
-            }
-        }
-    }
-    
-    /** 
-     * Returns a new Collection consisting of the elements of inputCollection transformed
-     * by the given transformer.
-     * <p>
-     * If the input transformer is null, the result is an empty list.
-     * 
-     * @param inputCollection  the collection to get the input from, may not be null
-     * @param transformer  the transformer to use, may be null
-     * @return the transformed result (new list)
-     * @throws NullPointerException if the input collection is null
-     */
-    public static Collection collect(Collection inputCollection, Transformer transformer) {
-        ArrayList answer = new ArrayList(inputCollection.size());
-        collect(inputCollection, transformer, answer);
-        return answer;
-    }
-    
-    /** 
-     * Transforms all elements from the inputIterator with the given transformer 
-     * and adds them to the outputCollection.
-     * <p>
-     * If the input iterator or transformer is null, the result is an empty list.
-     * 
-     * @param inputIterator  the iterator to get the input from, may be null
-     * @param transformer  the transformer to use, may be null
-     * @return the transformed result (new list)
-     */
-    public static Collection collect(Iterator inputIterator, Transformer transformer) {
-        ArrayList answer = new ArrayList();
-        collect(inputIterator, transformer, answer);
-        return answer;
-    }
-    
-    /** 
-     * Transforms all elements from inputCollection with the given transformer 
-     * and adds them to the outputCollection.
-     * <p>
-     * If the input collection or transformer is null, there is no change to the 
-     * output collection.
-     *
-     * @param inputCollection  the collection to get the input from, may be null
-     * @param transformer  the transformer to use, may be null
-     * @param outputCollection  the collection to output into, may not be null
-     * @return the outputCollection with the transformed input added
-     * @throws NullPointerException if the output collection is null
-     */
-    public static Collection collect(Collection inputCollection, final Transformer transformer, final Collection outputCollection) {
-        if (inputCollection != null) {
-            return collect(inputCollection.iterator(), transformer, outputCollection);
-        }
-        return outputCollection;
-    }
-
-    /** 
-     * Transforms all elements from the inputIterator with the given transformer 
-     * and adds them to the outputCollection.
-     * <p>
-     * If the input iterator or transformer is null, there is no change to the 
-     * output collection.
-     *
-     * @param inputIterator  the iterator to get the input from, may be null
-     * @param transformer  the transformer to use, may be null
-     * @param outputCollection  the collection to output into, may not be null
-     * @return the outputCollection with the transformed input added
-     * @throws NullPointerException if the output collection is null
-     */
-    public static Collection collect(Iterator inputIterator, final Transformer transformer, final Collection outputCollection) {
-        if (inputIterator != null && transformer != null) {
-            while (inputIterator.hasNext()) {
-                Object item = inputIterator.next();
-                Object value = transformer.transform(item);
-                outputCollection.add(value);
-            }
-        }
-        return outputCollection;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Adds an element to the collection unless the element is null.
-     * 
-     * @param collection  the collection to add to, must not be null
-     * @param object  the object to add, if null it will not be added
-     * @return true if the collection changed
-     * @throws NullPointerException if the collection is null
-     * @since Commons Collections 3.2
-     */
-    public static boolean addIgnoreNull(Collection collection, Object object) {
-        return (object == null ? false : collection.add(object));
-    }
-    
-    /**
-     * Adds all elements in the iteration to the given collection.
-     * 
-     * @param collection  the collection to add to, must not be null
-     * @param iterator  the iterator of elements to add, must not be null
-     * @throws NullPointerException if the collection or iterator is null
-     */
-    public static void addAll(Collection collection, Iterator iterator) {
-        while (iterator.hasNext()) {
-            collection.add(iterator.next());
-        }
-    }
-    
-    /**
-     * Adds all elements in the enumeration to the given collection.
-     * 
-     * @param collection  the collection to add to, must not be null
-     * @param enumeration  the enumeration of elements to add, must not be null
-     * @throws NullPointerException if the collection or enumeration is null
-     */
-    public static void addAll(Collection collection, Enumeration enumeration) {
-        while (enumeration.hasMoreElements()) {
-            collection.add(enumeration.nextElement());
-        }
-    }    
-    
-    /** 
-     * Adds all elements in the array to the given collection.
-     * 
-     * @param collection  the collection to add to, must not be null
-     * @param elements  the array of elements to add, must not be null
-     * @throws NullPointerException if the collection or array is null
-     */
-    public static void addAll(Collection collection, Object[] elements) {
-        for (int i = 0, size = elements.length; i < size; i++) {
-            collection.add(elements[i]);
-        }
-    }    
-    
-    /**
-     * Given an Object, and an index, returns the nth value in the
-     * object.
-     * <ul>
-     * <li>If obj is a Map, returns the nth value from the <b>keySet</b> iterator, unless 
-     *     the Map contains an Integer key with integer value = idx, in which case the
-     *     corresponding map entry value is returned.  If idx exceeds the number of entries in
-     *     the map, an empty Iterator is returned.
-     * <li>If obj is a List or an array, returns the nth value, throwing IndexOutOfBoundsException,
-     *     ArrayIndexOutOfBoundsException, resp. if the nth value does not exist.
-     * <li>If obj is an iterator, enumeration or Collection, returns the nth value from the iterator,
-     *     returning an empty Iterator (resp. Enumeration) if the nth value does not exist.
-     * <li>Returns the original obj if it is null or not a Collection or Iterator.
-     * </ul>
-     * 
-     * @param obj  the object to get an index of, may be null
-     * @param idx  the index to get
-     * @throws IndexOutOfBoundsException
-     * @throws ArrayIndexOutOfBoundsException
-     *
-     * @deprecated use {@link #get(Object, int)} instead. Will be removed in v4.0
-     */
-    public static Object index(Object obj, int idx) {
-        return index(obj, new Integer(idx));
-    }
-    
-    /**
-     * Given an Object, and a key (index), returns the value associated with
-     * that key in the Object. The following checks are made:
-     * <ul>
-     * <li>If obj is a Map, use the index as a key to get a value. If no match continue.
-     * <li>Check key is an Integer. If not, return the object passed in.
-     * <li>If obj is a Map, get the nth value from the <b>keySet</b> iterator.
-     *     If the Map has fewer than n entries, return an empty Iterator.
-     * <li>If obj is a List or an array, get the nth value, throwing IndexOutOfBoundsException,
-     *     ArrayIndexOutOfBoundsException, resp. if the nth value does not exist.
-     * <li>If obj is an iterator, enumeration or Collection, get the nth value from the iterator,
-     *     returning an empty Iterator (resp. Enumeration) if the nth value does not exist.
-     * <li>Return the original obj.
-     * </ul>
-     * 
-     * @param obj  the object to get an index of
-     * @param index  the index to get
-     * @return the object at the specified index
-     * @throws IndexOutOfBoundsException
-     * @throws ArrayIndexOutOfBoundsException
-     *
-     * @deprecated use {@link #get(Object, int)} instead. Will be removed in v4.0
-     */
-    public static Object index(Object obj, Object index) {
-        if(obj instanceof Map) {
-            Map map = (Map)obj;
-            if(map.containsKey(index)) {
-                return map.get(index);
-            }
-        }
-        int idx = -1;
-        if(index instanceof Integer) {
-            idx = ((Integer)index).intValue();
-        }
-        if(idx < 0) {
-            return obj;
-        } 
-        else if(obj instanceof Map) {
-            Map map = (Map)obj;
-            Iterator iterator = map.keySet().iterator();
-            return index(iterator, idx);
-        } 
-        else if(obj instanceof List) {
-            return ((List)obj).get(idx);
-        } 
-        else if(obj instanceof Object[]) {
-            return ((Object[])obj)[idx];
-        } 
-        else if(obj instanceof Enumeration) {
-            Enumeration it = (Enumeration)obj;
-            while(it.hasMoreElements()) {
-                idx--;
-                if(idx == -1) {
-                    return it.nextElement();
-                } else {
-                    it.nextElement();
-                }
-            }
-        } 
-        else if(obj instanceof Iterator) {
-            return index((Iterator)obj, idx);
-        }
-        else if(obj instanceof Collection) {
-            Iterator iterator = ((Collection)obj).iterator();
-            return index(iterator, idx);
-        }
-        return obj;
-    }
-
-    private static Object index(Iterator iterator, int idx) {
-        while(iterator.hasNext()) {
-            idx--;
-            if(idx == -1) {
-                return iterator.next();
-            } else {
-                iterator.next();
-            }
-        }
-        return iterator;
-    }
-    
-    /**
-     * Returns the <code>index</code>-th value in <code>object</code>, throwing
-     * <code>IndexOutOfBoundsException</code> if there is no such element or 
-     * <code>IllegalArgumentException</code> if <code>object</code> is not an 
-     * instance of one of the supported types.
-     * <p>
-     * The supported types, and associated semantics are:
-     * <ul>
-     * <li> Map -- the value returned is the <code>Map.Entry</code> in position 
-     *      <code>index</code> in the map's <code>entrySet</code> iterator, 
-     *      if there is such an entry.</li>
-     * <li> List -- this method is equivalent to the list's get method.</li>
-     * <li> Array -- the <code>index</code>-th array entry is returned, 
-     *      if there is such an entry; otherwise an <code>IndexOutOfBoundsException</code>
-     *      is thrown.</li>
-     * <li> Collection -- the value returned is the <code>index</code>-th object 
-     *      returned by the collection's default iterator, if there is such an element.</li>
-     * <li> Iterator or Enumeration -- the value returned is the
-     *      <code>index</code>-th object in the Iterator/Enumeration, if there
-     *      is such an element.  The Iterator/Enumeration is advanced to 
-     *      <code>index</code> (or to the end, if <code>index</code> exceeds the 
-     *      number of entries) as a side effect of this method.</li>
-     * </ul>
-     * 
-     * @param object  the object to get a value from
-     * @param index  the index to get
-     * @return the object at the specified index
-     * @throws IndexOutOfBoundsException if the index is invalid
-     * @throws IllegalArgumentException if the object type is invalid
-     */
-    public static Object get(Object object, int index) {
-        if (index < 0) {
-            throw new IndexOutOfBoundsException("Index cannot be negative: " + index);
-        }
-        if (object instanceof Map) {
-            Map map = (Map) object;
-            Iterator iterator = map.entrySet().iterator();
-            return get(iterator, index);
-        } else if (object instanceof List) {
-            return ((List) object).get(index);
-        } else if (object instanceof Object[]) {
-            return ((Object[]) object)[index];
-        } else if (object instanceof Iterator) {
-            Iterator it = (Iterator) object;
-            while (it.hasNext()) {
-                index--;
-                if (index == -1) {
-                    return it.next();
-                } else {
-                    it.next();
-                }
-            }
-            throw new IndexOutOfBoundsException("Entry does not exist: " + index);
-        } else if (object instanceof Collection) {
-            Iterator iterator = ((Collection) object).iterator();
-            return get(iterator, index);
-        } else if (object instanceof Enumeration) {
-            Enumeration it = (Enumeration) object;
-            while (it.hasMoreElements()) {
-                index--;
-                if (index == -1) {
-                    return it.nextElement();
-                } else {
-                    it.nextElement();
-                }
-            }
-            throw new IndexOutOfBoundsException("Entry does not exist: " + index);
-        } else if (object == null) {
-            throw new IllegalArgumentException("Unsupported object type: null");
-        } else {
-            try {
-                return Array.get(object, index);
-            } catch (IllegalArgumentException ex) {
-                throw new IllegalArgumentException("Unsupported object type: " + object.getClass().getName());
-            }
-        }
-    }
-    
-    /** 
-     * Gets the size of the collection/iterator specified.
-     * <p>
-     * This method can handles objects as follows
-     * <ul>
-     * <li>Collection - the collection size
-     * <li>Map - the map size
-     * <li>Array - the array size
-     * <li>Iterator - the number of elements remaining in the iterator
-     * <li>Enumeration - the number of elements remaining in the enumeration
-     * </ul>
-     * 
-     * @param object  the object to get the size of
-     * @return the size of the specified collection
-     * @throws IllegalArgumentException thrown if object is not recognised or null
-     * @since Commons Collections 3.1
-     */
-    public static int size(Object object) {
-        int total = 0;
-        if (object instanceof Map) {
-            total = ((Map) object).size();
-        } else if (object instanceof Collection) {
-            total = ((Collection) object).size();
-        } else if (object instanceof Object[]) {
-            total = ((Object[]) object).length;
-        } else if (object instanceof Iterator) {
-            Iterator it = (Iterator) object;
-            while (it.hasNext()) {
-                total++;
-                it.next();
-            }
-        } else if (object instanceof Enumeration) {
-            Enumeration it = (Enumeration) object;
-            while (it.hasMoreElements()) {
-                total++;
-                it.nextElement();
-            }
-        } else if (object == null) {
-            throw new IllegalArgumentException("Unsupported object type: null");
-        } else {
-            try {
-                total = Array.getLength(object);
-            } catch (IllegalArgumentException ex) {
-                throw new IllegalArgumentException("Unsupported object type: " + object.getClass().getName());
-            }
-        }
-        return total;
-    }
-    
-    /**
-     * Checks if the specified collection/array/iterator is empty.
-     * <p>
-     * This method can handles objects as follows
-     * <ul>
-     * <li>Collection - via collection isEmpty
-     * <li>Map - via map isEmpty
-     * <li>Array - using array size
-     * <li>Iterator - via hasNext
-     * <li>Enumeration - via hasMoreElements
-     * </ul>
-     * <p>
-     * Note: This method is named to avoid clashing with
-     * {@link #isEmpty(Collection)}.
-     * 
-     * @param object  the object to get the size of, not null
-     * @return true if empty
-     * @throws IllegalArgumentException thrown if object is not recognised or null
-     * @since Commons Collections 3.2
-     */
-    public static boolean sizeIsEmpty(Object object) {
-        if (object instanceof Collection) {
-            return ((Collection) object).isEmpty();
-        } else if (object instanceof Map) {
-            return ((Map) object).isEmpty();
-        } else if (object instanceof Object[]) {
-            return ((Object[]) object).length == 0;
-        } else if (object instanceof Iterator) {
-            return ((Iterator) object).hasNext() == false;
-        } else if (object instanceof Enumeration) {
-            return ((Enumeration) object).hasMoreElements() == false;
-        } else if (object == null) {
-            throw new IllegalArgumentException("Unsupported object type: null");
-        } else {
-            try {
-                return Array.getLength(object) == 0;
-            } catch (IllegalArgumentException ex) {
-                throw new IllegalArgumentException("Unsupported object type: " + object.getClass().getName());
-            }
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Null-safe check if the specified collection is empty.
-     * <p>
-     * Null returns true.
-     * 
-     * @param coll  the collection to check, may be null
-     * @return true if empty or null
-     * @since Commons Collections 3.2
-     */
-    public static boolean isEmpty(Collection coll) {
-        return (coll == null || coll.isEmpty());
-    }
-
-    /**
-     * Null-safe check if the specified collection is not empty.
-     * <p>
-     * Null returns false.
-     * 
-     * @param coll  the collection to check, may be null
-     * @return true if non-null and non-empty
-     * @since Commons Collections 3.2
-     */
-    public static boolean isNotEmpty(Collection coll) {
-        return !CollectionUtils.isEmpty(coll);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Reverses the order of the given array.
-     * 
-     * @param array  the array to reverse
-     */
-    public static void reverseArray(Object[] array) {
-        int i = 0;
-        int j = array.length - 1;
-        Object tmp;
-
-        while (j > i) {
-            tmp = array[j];
-            array[j] = array[i];
-            array[i] = tmp;
-            j--;
-            i++;
-        }
-    }
-
-    private static final int getFreq(final Object obj, final Map freqMap) {
-        Integer count = (Integer) freqMap.get(obj);
-        if (count != null) {
-            return count.intValue();
-        }
-        return 0;
-    }
-
-    /**
-     * Returns true if no more elements can be added to the Collection.
-     * <p>
-     * This method uses the {@link BoundedCollection} interface to determine the
-     * full status. If the collection does not implement this interface then
-     * false is returned.
-     * <p>
-     * The collection does not have to implement this interface directly.
-     * If the collection has been decorated using the decorators subpackage
-     * then these will be removed to access the BoundedCollection.
-     *
-     * @param coll  the collection to check
-     * @return true if the BoundedCollection is full
-     * @throws NullPointerException if the collection is null
-     */
-    public static boolean isFull(Collection coll) {
-        if (coll == null) {
-            throw new NullPointerException("The collection must not be null");
-        }
-        if (coll instanceof BoundedCollection) {
-            return ((BoundedCollection) coll).isFull();
-        }
-        try {
-            BoundedCollection bcoll = UnmodifiableBoundedCollection.decorateUsing(coll);
-            return bcoll.isFull();
-            
-        } catch (IllegalArgumentException ex) {
-            return false;
-        }
-    }
-
-    /**
-     * Get the maximum number of elements that the Collection can contain.
-     * <p>
-     * This method uses the {@link BoundedCollection} interface to determine the
-     * maximum size. If the collection does not implement this interface then
-     * -1 is returned.
-     * <p>
-     * The collection does not have to implement this interface directly.
-     * If the collection has been decorated using the decorators subpackage
-     * then these will be removed to access the BoundedCollection.
-     *
-     * @param coll  the collection to check
-     * @return the maximum size of the BoundedCollection, -1 if no maximum size
-     * @throws NullPointerException if the collection is null
-     */
-    public static int maxSize(Collection coll) {
-        if (coll == null) {
-            throw new NullPointerException("The collection must not be null");
-        }
-        if (coll instanceof BoundedCollection) {
-            return ((BoundedCollection) coll).maxSize();
-        }
-        try {
-            BoundedCollection bcoll = UnmodifiableBoundedCollection.decorateUsing(coll);
-            return bcoll.maxSize();
-            
-        } catch (IllegalArgumentException ex) {
-            return -1;
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns a collection containing all the elements in <code>collection</code>
-     * that are also in <code>retain</code>. The cardinality of an element <code>e</code>
-     * in the returned collection is the same as the cardinality of <code>e</code>
-     * in <code>collection</code> unless <code>retain</code> does not contain <code>e</code>, in which
-     * case the cardinality is zero. This method is useful if you do not wish to modify
-     * the collection <code>c</code> and thus cannot call <code>c.retainAll(retain);</code>.
-     * 
-     * @param collection  the collection whose contents are the target of the #retailAll operation
-     * @param retain  the collection containing the elements to be retained in the returned collection
-     * @return a <code>Collection</code> containing all the elements of <code>collection</code>
-     * that occur at least once in <code>retain</code>.
-     * @throws NullPointerException if either parameter is null
-     * @since Commons Collections 3.2
-     */
-    public static Collection retainAll(Collection collection, Collection retain) {
-        return ListUtils.retainAll(collection, retain);
-    }
-
-    /**
-     * Removes the elements in <code>remove</code> from <code>collection</code>. That is, this
-     * method returns a collection containing all the elements in <code>c</code>
-     * that are not in <code>remove</code>. The cardinality of an element <code>e</code>
-     * in the returned collection is the same as the cardinality of <code>e</code>
-     * in <code>collection</code> unless <code>remove</code> contains <code>e</code>, in which
-     * case the cardinality is zero. This method is useful if you do not wish to modify
-     * the collection <code>c</code> and thus cannot call <code>collection.removeAll(remove);</code>.
-     * 
-     * @param collection  the collection from which items are removed (in the returned collection)
-     * @param remove  the items to be removed from the returned <code>collection</code>
-     * @return a <code>Collection</code> containing all the elements of <code>collection</code> except
-     * any elements that also occur in <code>remove</code>.
-     * @throws NullPointerException if either parameter is null
-     * @since Commons Collections 3.2
-     */
-    public static Collection removeAll(Collection collection, Collection remove) {
-        return ListUtils.retainAll(collection, remove);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns a synchronized collection backed by the given collection.
-     * <p>
-     * You must manually synchronize on the returned buffer's iterator to 
-     * avoid non-deterministic behavior:
-     *  
-     * <pre>
-     * Collection c = CollectionUtils.synchronizedCollection(myCollection);
-     * synchronized (c) {
-     *     Iterator i = c.iterator();
-     *     while (i.hasNext()) {
-     *         process (i.next());
-     *     }
-     * }
-     * </pre>
-     * 
-     * This method uses the implementation in the decorators subpackage.
-     * 
-     * @param collection  the collection to synchronize, must not be null
-     * @return a synchronized collection backed by the given collection
-     * @throws IllegalArgumentException  if the collection is null
-     */
-    public static Collection synchronizedCollection(Collection collection) {
-        return SynchronizedCollection.decorate(collection);
-    }
-
-    /**
-     * Returns an unmodifiable collection backed by the given collection.
-     * <p>
-     * This method uses the implementation in the decorators subpackage.
-     *
-     * @param collection  the collection to make unmodifiable, must not be null
-     * @return an unmodifiable collection backed by the given collection
-     * @throws IllegalArgumentException  if the collection is null
-     */
-    public static Collection unmodifiableCollection(Collection collection) {
-        return UnmodifiableCollection.decorate(collection);
-    }
-
-    /**
-     * Returns a predicated (validating) collection backed by the given collection.
-     * <p>
-     * Only objects that pass the test in the given predicate can be added to the collection.
-     * Trying to add an invalid object results in an IllegalArgumentException.
-     * It is important not to use the original collection after invoking this method,
-     * as it is a backdoor for adding invalid objects.
-     *
-     * @param collection  the collection to predicate, must not be null
-     * @param predicate  the predicate for the collection, must not be null
-     * @return a predicated collection backed by the given collection
-     * @throws IllegalArgumentException  if the Collection is null
-     */
-    public static Collection predicatedCollection(Collection collection, Predicate predicate) {
-        return PredicatedCollection.decorate(collection, predicate);
-    }
-
-    /**
-     * Returns a typed collection backed by the given collection.
-     * <p>
-     * Only objects of the specified type can be added to the collection.
-     * 
-     * @param collection  the collection to limit to a specific type, must not be null
-     * @param type  the type of objects which may be added to the collection
-     * @return a typed collection backed by the specified collection
-     */
-    public static Collection typedCollection(Collection collection, Class type) {
-        return TypedCollection.decorate(collection, type);
-    }
-    
-    /**
-     * Returns a transformed bag backed by the given collection.
-     * <p>
-     * Each object is passed through the transformer as it is added to the
-     * Collection. It is important not to use the original collection after invoking this 
-     * method, as it is a backdoor for adding untransformed objects.
-     *
-     * @param collection  the collection to predicate, must not be null
-     * @param transformer  the transformer for the collection, must not be null
-     * @return a transformed collection backed by the given collection
-     * @throws IllegalArgumentException  if the Collection or Transformer is null
-     */
-    public static Collection transformedCollection(Collection collection, Transformer transformer) {
-        return TransformedCollection.decorate(collection, transformer);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ComparatorUtils.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ComparatorUtils.java
deleted file mode 100755
index a82f07f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ComparatorUtils.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.Collection;
-import java.util.Comparator;
-
-import org.apache.commons.collections.comparators.BooleanComparator;
-import org.apache.commons.collections.comparators.ComparableComparator;
-import org.apache.commons.collections.comparators.ComparatorChain;
-import org.apache.commons.collections.comparators.NullComparator;
-import org.apache.commons.collections.comparators.ReverseComparator;
-import org.apache.commons.collections.comparators.TransformingComparator;
-
-/**
- * Provides convenient static utility methods for <Code>Comparator</Code>
- * objects.
- * <p>
- * Most of the functionality in this class can also be found in the 
- * <code>comparators</code> package. This class merely provides a 
- * convenient central place if you have use for more than one class
- * in the <code>comparators</code> subpackage.
- *
- * @since Commons Collections 2.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author Paul Jack
- * @author Stephen Colebourne
- */
-public class ComparatorUtils {
-
-    /**
-     * ComparatorUtils should not normally be instantiated.
-     */
-    public ComparatorUtils() {
-    }
-
-    /**
-     * Comparator for natural sort order.
-     *
-     * @see ComparableComparator#getInstance
-     */
-    public static final Comparator NATURAL_COMPARATOR = ComparableComparator.getInstance();
-
-    /**
-     * Gets a comparator that uses the natural order of the objects.
-     *
-     * @return  a comparator which uses natural order
-     */
-    public static Comparator naturalComparator() {
-        return NATURAL_COMPARATOR;
-    }
-
-    /**
-     * Gets a comparator that compares using two {@link Comparator}s.
-     * <p>
-     * The second comparator is used if the first comparator returns equal.
-     *
-     * @param comparator1  the first comparator to use, not null
-     * @param comparator2  the first comparator to use, not null
-     * @return a {@link ComparatorChain} formed from the two comparators
-     * @throws NullPointerException if either comparator is null
-     * @see ComparatorChain
-     */
-    public static Comparator chainedComparator(Comparator comparator1, Comparator comparator2) {
-        return chainedComparator(new Comparator[] {comparator1, comparator2});
-    }
-
-    /**
-     * Gets a comparator that compares using an array of {@link Comparator}s, applied
-     * in sequence until one returns not equal or the array is exhausted.
-     *
-     * @param comparators  the comparators to use, not null or empty or containing nulls
-     * @return a {@link ComparatorChain} formed from the input comparators
-     * @throws NullPointerException if comparators array is null or contains a null
-     * @see ComparatorChain
-     */
-    public static Comparator chainedComparator(Comparator[] comparators) {
-        ComparatorChain chain = new ComparatorChain();
-        for (int i = 0; i < comparators.length; i++) {
-            if (comparators[i] == null) {
-                throw new NullPointerException("Comparator cannot be null");
-            }
-            chain.addComparator(comparators[i]);
-        }
-        return chain;
-    }
-
-    /**
-     * Gets a comparator that compares using a collection of {@link Comparator}s,
-     * applied in (default iterator) sequence until one returns not equal or the 
-     * collection is exhausted.
-     *
-     * @param comparators  the comparators to use, not null or empty or containing nulls
-     * @return a {@link ComparatorChain} formed from the input comparators
-     * @throws NullPointerException if comparators collection is null or contains a null
-     * @throws ClassCastException if the comparators collection contains the wrong object type
-     * @see ComparatorChain
-     */
-    public static Comparator chainedComparator(Collection comparators) {
-        return chainedComparator(
-            (Comparator[]) comparators.toArray(new Comparator[comparators.size()])
-        );
-    }
-
-    /**
-     * Gets a comparator that reverses the order of the given comparator.
-     *
-     * @param comparator  the comparator to reverse
-     * @return  a comparator that reverses the order of the input comparator
-     * @see ReverseComparator
-     */
-    public static Comparator reversedComparator(Comparator comparator) {
-        if (comparator == null) {
-            comparator = NATURAL_COMPARATOR;
-        }
-        return new ReverseComparator(comparator);
-    }
-
-    /**
-     * Gets a Comparator that can sort Boolean objects.
-     * <p>
-     * The parameter specifies whether true or false is sorted first.
-     * <p>
-     * The comparator throws NullPointerException if a null value is compared.
-     * 
-     * @param trueFirst  when <code>true</code>, sort 
-     *        <code>true</code> {@link Boolean}s before
-     *        <code>false</code> {@link Boolean}s.
-     * @return  a comparator that sorts booleans
-     */
-    public static Comparator booleanComparator(boolean trueFirst) {
-        return BooleanComparator.getBooleanComparator(trueFirst);
-    }
-    
-    /**
-     * Gets a Comparator that controls the comparison of <code>null</code> values.
-     * <p>
-     * The returned comparator will consider a null value to be less than
-     * any nonnull value, and equal to any other null value.  Two nonnull
-     * values will be evaluated with the given comparator.
-     *
-     * @param comparator the comparator that wants to allow nulls
-     * @return  a version of that comparator that allows nulls
-     * @see NullComparator
-     */
-    public static Comparator nullLowComparator(Comparator comparator) {
-        if (comparator == null) {
-            comparator = NATURAL_COMPARATOR;
-        }
-        return new NullComparator(comparator, false);
-    }
-
-    /**
-     * Gets a Comparator that controls the comparison of <code>null</code> values.
-     * <p>
-     * The returned comparator will consider a null value to be greater than
-     * any nonnull value, and equal to any other null value.  Two nonnull
-     * values will be evaluated with the given comparator.
-     *
-     * @param comparator the comparator that wants to allow nulls
-     * @return  a version of that comparator that allows nulls
-     * @see NullComparator
-     */
-    public static Comparator nullHighComparator(Comparator comparator) {
-        if (comparator == null) {
-            comparator = NATURAL_COMPARATOR;
-        }
-        return new NullComparator(comparator, true);
-    }
-
-    /**
-     * Gets a Comparator that passes transformed objects to the given comparator.
-     * <p>
-     * Objects passed to the returned comparator will first be transformed
-     * by the given transformer before they are compared by the given
-     * comparator.
-     *
-     * @param comparator  the sort order to use
-     * @param transformer  the transformer to use
-     * @return  a comparator that transforms its input objects before comparing them
-     * @see  TransformingComparator
-     */
-    public static Comparator transformedComparator(Comparator comparator, Transformer transformer) {
-        if (comparator == null) {
-            comparator = NATURAL_COMPARATOR;
-        }
-        return new TransformingComparator(transformer, comparator);
-    }
-
-    /**
-     *  Returns the smaller of the given objects according to the given 
-     *  comparator, returning the second object if the comparator
-     *  returns equal.
-     * 
-     *  @param o1  the first object to compare
-     *  @param o2  the second object to compare
-     *  @param comparator  the sort order to use
-     *  @return  the smaller of the two objects
-     */
-    public static Object min(Object o1, Object o2, Comparator comparator) {
-        if (comparator == null) {
-            comparator = NATURAL_COMPARATOR;
-        }
-        int c = comparator.compare(o1, o2);
-        return (c < 0) ? o1 : o2;
-    }
-
-    /**
-     *  Returns the larger of the given objects according to the given 
-     *  comparator, returning the second object if the comparator 
-     *  returns equal.
-     * 
-     *  @param o1  the first object to compare
-     *  @param o2  the second object to compare
-     *  @param comparator  the sort order to use
-     *  @return  the larger of the two objects
-     */
-    public static Object max(Object o1, Object o2, Comparator comparator) {
-        if (comparator == null) {
-            comparator = NATURAL_COMPARATOR;
-        }
-        int c = comparator.compare(o1, o2);
-        return (c > 0) ? o1 : o2;
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/CursorableLinkedList.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/CursorableLinkedList.java
deleted file mode 100755
index c083992..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/CursorableLinkedList.java
+++ /dev/null
@@ -1,1467 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.lang.reflect.Array;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.ConcurrentModificationException;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.NoSuchElementException;
-import java.lang.ref.WeakReference;
-
-/**
- * A doubly-linked list implementation of the {@link List} interface,
- * supporting a {@link ListIterator} that allows concurrent modifications
- * to the underlying list.
- * <p>
- * Implements all of the optional {@link List} operations, the
- * stack/queue/dequeue operations available in {@link java.util.LinkedList}
- * and supports a {@link ListIterator} that allows concurrent modifications
- * to the underlying list (see {@link #cursor}).
- * <p>
- * <b>Note that this implementation is not synchronized.</b>
- *
- * @deprecated Use new version in list subpackage, which has been rewritten
- *  and now returns the cursor from the listIterator method. Will be removed in v4.0
- * @see java.util.LinkedList
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author Rodney Waldhoff
- * @author Janek Bogucki
- * @author Simon Kitching
- */
-public class CursorableLinkedList implements List, Serializable {
-    /** Ensure serialization compatibility */    
-    private static final long serialVersionUID = 8836393098519411393L;
-
-    //--- public methods ---------------------------------------------
-
-    /**
-     * Appends the specified element to the end of this list.
-     *
-     * @param o element to be appended to this list.
-     * @return <tt>true</tt>
-     */
-    public boolean add(Object o) {
-        insertListable(_head.prev(),null,o);
-        return true;
-    }
-
-    /**
-     * Inserts the specified element at the specified position in this list.
-     * Shifts the element currently at that position (if any) and any subsequent
-     *  elements to the right (adds one to their indices).
-     *
-     * @param index index at which the specified element is to be inserted.
-     * @param element element to be inserted.
-     *
-     * @throws ClassCastException if the class of the specified element
-     * 		  prevents it from being added to this list.
-     * @throws IllegalArgumentException if some aspect of the specified
-     *		     element prevents it from being added to this list.
-     * @throws IndexOutOfBoundsException if the index is out of range
-     *		     (index &lt; 0 || index &gt; size()).
-     */
-    public void add(int index, Object element) {
-        if(index == _size) {
-            add(element);
-        } else {
-            if(index < 0 || index > _size) {
-                throw new IndexOutOfBoundsException(String.valueOf(index) + " < 0 or " + String.valueOf(index) + " > " + _size);
-            }
-            Listable succ = (isEmpty() ? null : getListableAt(index));
-            Listable pred = (null == succ ? null : succ.prev());
-            insertListable(pred,succ,element);
-        }
-    }
-
-    /**
-     * Appends all of the elements in the specified collection to the end of
-     * this list, in the order that they are returned by the specified
-     * {@link Collection}'s {@link Iterator}.  The behavior of this operation is
-     * unspecified if the specified collection is modified while
-     * the operation is in progress.  (Note that this will occur if the
-     * specified collection is this list, and it's nonempty.)
-     *
-     * @param c collection whose elements are to be added to this list.
-     * @return <tt>true</tt> if this list changed as a result of the call.
-     *
-     * @throws ClassCastException if the class of an element in the specified
-     * 	     collection prevents it from being added to this list.
-     * @throws IllegalArgumentException if some aspect of an element in the
-     *         specified collection prevents it from being added to this
-     *         list.
-     */
-    public boolean addAll(Collection c) {
-        if(c.isEmpty()) {
-            return false;
-        }
-        Iterator it = c.iterator();
-        while(it.hasNext()) {
-            insertListable(_head.prev(),null,it.next());
-        }
-        return true;
-    }
-
-    /**
-     * Inserts all of the elements in the specified collection into this
-     * list at the specified position.  Shifts the element currently at
-     * that position (if any) and any subsequent elements to the right
-     * (increases their indices).  The new elements will appear in this
-     * list in the order that they are returned by the specified
-     * {@link Collection}'s {@link Iterator}.  The behavior of this operation is
-     * unspecified if the specified collection is modified while the
-     * operation is in progress.  (Note that this will occur if the specified
-     * collection is this list, and it's nonempty.)
-     *
-     * @param index index at which to insert first element from the specified
-     *	            collection.
-     * @param c elements to be inserted into this list.
-     * @return <tt>true</tt> if this list changed as a result of the call.
-     *
-     * @throws ClassCastException if the class of one of elements of the
-     * 		   specified collection prevents it from being added to this
-     * 		   list.
-     * @throws IllegalArgumentException if some aspect of one of elements of
-     *         the specified collection prevents it from being added to
-     *         this list.
-     * @throws IndexOutOfBoundsException if the index is out of range (index
-     *	      &lt; 0 || index &gt; size()).
-     */
-    public boolean addAll(int index, Collection c) {
-        if(c.isEmpty()) {
-            return false;
-        } else if(_size == index || _size == 0) {
-            return addAll(c);
-        } else {
-            Listable succ = getListableAt(index);
-            Listable pred = (null == succ) ? null : succ.prev();
-            Iterator it = c.iterator();
-            while(it.hasNext()) {
-                pred = insertListable(pred,succ,it.next());
-            }
-            return true;
-        }
-    }
-
-    /**
-     * Inserts the specified element at the beginning of this list.
-     * (Equivalent to {@link #add(int,java.lang.Object) <tt>add(0,o)</tt>}).
-     *
-     * @param o element to be prepended to this list.
-     * @return <tt>true</tt>
-     */
-    public boolean addFirst(Object o) {
-        insertListable(null,_head.next(),o);
-        return true;
-    }
-
-    /**
-     * Inserts the specified element at the end of this list.
-     * (Equivalent to {@link #add(java.lang.Object)}).
-     *
-     * @param o element to be appended to this list.
-     * @return <tt>true</tt>
-     */
-    public boolean addLast(Object o) {
-        insertListable(_head.prev(),null,o);
-        return true;
-    }
-
-    /**
-     * Removes all of the elements from this list.  This
-     * list will be empty after this call returns (unless
-     * it throws an exception).
-     */
-    public void clear() {
-        /*
-        // this is the quick way, but would force us
-        // to break all the cursors
-        _modCount++;
-        _head.setNext(null);
-        _head.setPrev(null);
-        _size = 0;
-        */
-        Iterator it = iterator();
-        while(it.hasNext()) {
-            it.next();
-            it.remove();
-        }
-    }
-
-    /**
-     * Returns <tt>true</tt> if this list contains the specified element.
-     * More formally, returns <tt>true</tt> if and only if this list contains
-     * at least one element <tt>e</tt> such that
-     * <tt>(o==null&nbsp;?&nbsp;e==null&nbsp;:&nbsp;o.equals(e))</tt>.
-     *
-     * @param o element whose presence in this list is to be tested.
-     * @return <tt>true</tt> if this list contains the specified element.
-     */
-    public boolean contains(Object o) {
-        for(Listable elt = _head.next(), past = null; null != elt && past != _head.prev(); elt = (past = elt).next()) {
-            if((null == o && null == elt.value()) || 
-               (o != null && o.equals(elt.value()))) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Returns <tt>true</tt> if this list contains all of the elements of the
-     * specified collection.
-     *
-     * @param c collection to be checked for containment in this list.
-     * @return <tt>true</tt> if this list contains all of the elements of the
-     *         specified collection.
-     */
-    public boolean containsAll(Collection c) {
-        Iterator it = c.iterator();
-        while(it.hasNext()) {
-            if(!this.contains(it.next())) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Returns a {@link ListIterator} for iterating through the
-     * elements of this list. Unlike {@link #iterator}, a cursor
-     * is not bothered by concurrent modifications to the
-     * underlying list.
-     * <p>
-     * Specifically, when elements are added to the list before or
-     * after the cursor, the cursor simply picks them up automatically.
-     * When the "current" (i.e., last returned by {@link ListIterator#next}
-     * or {@link ListIterator#previous}) element of the list is removed,
-     * the cursor automatically adjusts to the change (invalidating the
-     * last returned value--i.e., it cannot be removed).
-     * <p>
-     * Note that the returned {@link ListIterator} does not support the
-     * {@link ListIterator#nextIndex} and {@link ListIterator#previousIndex}
-     * methods (they throw {@link UnsupportedOperationException} when invoked.
-     * <p>
-     * Historical Note: In previous versions of this class, the object 
-     * returned from this method was required to be explicitly closed. This 
-     * is no longer necessary.
-     *
-     * @see #cursor(int)
-     * @see #listIterator
-     * @see CursorableLinkedList.Cursor
-     */
-    public CursorableLinkedList.Cursor cursor() {
-        return new Cursor(0);
-    }
-
-    /**
-     * Returns a {@link ListIterator} for iterating through the
-     * elements of this list, initialized such that
-     * {@link ListIterator#next} will return the element at
-     * the specified index (if any) and {@link ListIterator#previous}
-     * will return the element immediately preceding it (if any).
-     * Unlike {@link #iterator}, a cursor
-     * is not bothered by concurrent modifications to the
-     * underlying list.
-     *
-     * @see #cursor
-     * @see #listIterator(int)
-     * @see CursorableLinkedList.Cursor
-     * @throws IndexOutOfBoundsException if the index is out of range (index
-     *	        &lt; 0 || index &gt; size()).
-     */
-    public CursorableLinkedList.Cursor cursor(int i) {
-        return new Cursor(i);
-    }
-
-    /**
-     * Compares the specified object with this list for equality.  Returns
-     * <tt>true</tt> if and only if the specified object is also a list, both
-     * lists have the same size, and all corresponding pairs of elements in
-     * the two lists are <i>equal</i>.  (Two elements <tt>e1</tt> and
-     * <tt>e2</tt> are <i>equal</i> if <tt>(e1==null ? e2==null :
-     * e1.equals(e2))</tt>.)  In other words, two lists are defined to be
-     * equal if they contain the same elements in the same order.  This
-     * definition ensures that the equals method works properly across
-     * different implementations of the <tt>List</tt> interface.
-     *
-     * @param o the object to be compared for equality with this list.
-     * @return <tt>true</tt> if the specified object is equal to this list.
-     */
-    public boolean equals(Object o) {
-        if(o == this) {
-            return true;
-        } else if(!(o instanceof List)) {
-            return false;
-        }
-        Iterator it = ((List)o).listIterator();
-        for(Listable elt = _head.next(), past = null; null != elt && past != _head.prev(); elt = (past = elt).next()) {
-            if(!it.hasNext() || (null == elt.value() ? null != it.next() : !(elt.value().equals(it.next()))) ) {
-                return false;
-            }
-        }
-        return !it.hasNext();
-    }
-
-    /**
-     * Returns the element at the specified position in this list.
-     *
-     * @param index index of element to return.
-     * @return the element at the specified position in this list.
-     *
-     * @throws IndexOutOfBoundsException if the index is out of range (index
-     * 		  &lt; 0 || index &gt;= size()).
-     */
-    public Object get(int index) {
-        return getListableAt(index).value();
-    }
-
-    /**
-     * Returns the element at the beginning of this list.
-     */
-    public Object getFirst() {
-        try {
-            return _head.next().value();
-        } catch(NullPointerException e) {
-            throw new NoSuchElementException();
-        }
-    }
-
-    /**
-     * Returns the element at the end of this list.
-     */
-    public Object getLast() {
-        try {
-            return _head.prev().value();
-        } catch(NullPointerException e) {
-            throw new NoSuchElementException();
-        }
-    }
-
-    /**
-     * Returns the hash code value for this list.  The hash code of a list
-     * is defined to be the result of the following calculation:
-     * <pre>
-     *  hashCode = 1;
-     *  Iterator i = list.iterator();
-     *  while (i.hasNext()) {
-     *      Object obj = i.next();
-     *      hashCode = 31*hashCode + (obj==null ? 0 : obj.hashCode());
-     *  }
-     * </pre>
-     * This ensures that <tt>list1.equals(list2)</tt> implies that
-     * <tt>list1.hashCode()==list2.hashCode()</tt> for any two lists,
-     * <tt>list1</tt> and <tt>list2</tt>, as required by the general
-     * contract of <tt>Object.hashCode</tt>.
-     *
-     * @return the hash code value for this list.
-     * @see Object#hashCode()
-     * @see Object#equals(Object)
-     * @see #equals(Object)
-     */
-    public int hashCode() {
-        int hash = 1;
-        for(Listable elt = _head.next(), past = null; null != elt && past != _head.prev(); elt = (past = elt).next()) {
-            hash = 31*hash + (null == elt.value() ? 0 : elt.value().hashCode());
-        }
-        return hash;
-    }
-
-    /**
-     * Returns the index in this list of the first occurrence of the specified
-     * element, or -1 if this list does not contain this element.
-     * More formally, returns the lowest index <tt>i</tt> such that
-     * <tt>(o==null ? get(i)==null : o.equals(get(i)))</tt>,
-     * or -1 if there is no such index.
-     *
-     * @param o element to search for.
-     * @return the index in this list of the first occurrence of the specified
-     *         element, or -1 if this list does not contain this element.
-     */
-    public int indexOf(Object o) {
-        int ndx = 0;
-
-        // perform the null check outside of the loop to save checking every
-        // single time through the loop.
-        if (null == o) {
-            for(Listable elt = _head.next(), past = null; null != elt && past != _head.prev(); elt = (past = elt).next()) {
-                if (null == elt.value()) {
-                    return ndx;
-                }
-                ndx++;
-            }
-        } else {
-
-            for(Listable elt = _head.next(), past = null; null != elt && past != _head.prev(); elt = (past = elt).next()) {
-                if (o.equals(elt.value())) {
-                    return ndx;
-                }
-                ndx++;
-            }
-        }
-        return -1;
-    }
-
-    /**
-     * Returns <tt>true</tt> if this list contains no elements.
-     * @return <tt>true</tt> if this list contains no elements.
-     */
-    public boolean isEmpty() {
-        return(0 == _size);
-    }
-
-    /**
-     * Returns a fail-fast iterator.
-     * @see List#iterator
-     */
-    public Iterator iterator() {
-        return listIterator(0);
-    }
-
-    /**
-     * Returns the index in this list of the last occurrence of the specified
-     * element, or -1 if this list does not contain this element.
-     * More formally, returns the highest index <tt>i</tt> such that
-     * <tt>(o==null ? get(i)==null : o.equals(get(i)))</tt>,
-     * or -1 if there is no such index.
-     *
-     * @param o element to search for.
-     * @return the index in this list of the last occurrence of the specified
-     * 	       element, or -1 if this list does not contain this element.
-     */
-    public int lastIndexOf(Object o) {
-        int ndx = _size-1;
-
-        // perform the null check outside of the loop to save checking every
-        // single time through the loop.
-        if (null == o) {
-            for(Listable elt = _head.prev(), past = null; null != elt && past != _head.next(); elt = (past = elt).prev()) {
-                if (null == elt.value()) {
-                    return ndx;
-                }
-                ndx--;
-            }
-        } else {
-            for(Listable elt = _head.prev(), past = null; null != elt && past != _head.next(); elt = (past = elt).prev()) {
-                if (o.equals(elt.value())) {
-                    return ndx;
-                }
-                ndx--;
-            }
-        }
-        return -1;
-    }
-
-    /**
-     * Returns a fail-fast ListIterator.
-     * @see List#listIterator
-     */
-    public ListIterator listIterator() {
-        return listIterator(0);
-    }
-
-    /**
-     * Returns a fail-fast ListIterator.
-     * @see List#listIterator(int)
-     */
-    public ListIterator listIterator(int index) {
-        if(index<0 || index > _size) {
-            throw new IndexOutOfBoundsException(index + " < 0 or > " + _size);
-        }
-        return new ListIter(index);
-    }
-
-    /**
-     * Removes the first occurrence in this list of the specified element.
-     * If this list does not contain the element, it is
-     * unchanged.  More formally, removes the element with the lowest index i
-     * such that <tt>(o==null ? get(i)==null : o.equals(get(i)))</tt> (if
-     * such an element exists).
-     *
-     * @param o element to be removed from this list, if present.
-     * @return <tt>true</tt> if this list contained the specified element.
-     */
-    public boolean remove(Object o) {
-        for(Listable elt = _head.next(), past = null; null != elt && past != _head.prev(); elt = (past = elt).next()) {
-            if(null == o && null == elt.value()) {
-                removeListable(elt);
-                return true;
-            } else if(o != null && o.equals(elt.value())) {
-                removeListable(elt);
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Removes the element at the specified position in this list (optional
-     * operation).  Shifts any subsequent elements to the left (subtracts one
-     * from their indices).  Returns the element that was removed from the
-     * list.
-     *
-     * @param index the index of the element to removed.
-     * @return the element previously at the specified position.
-     *
-     * @throws IndexOutOfBoundsException if the index is out of range (index
-     *            &lt; 0 || index &gt;= size()).
-     */
-    public Object remove(int index) {
-        Listable elt = getListableAt(index);
-        Object ret = elt.value();
-        removeListable(elt);
-        return ret;
-    }
-
-    /**
-     * Removes from this list all the elements that are contained in the
-     * specified collection.
-     *
-     * @param c collection that defines which elements will be removed from
-     *          this list.
-     * @return <tt>true</tt> if this list changed as a result of the call.
-     */
-    public boolean removeAll(Collection c) {
-        if(0 == c.size() || 0 == _size) {
-            return false;
-        } else {
-            boolean changed = false;
-            Iterator it = iterator();
-            while(it.hasNext()) {
-                if(c.contains(it.next())) {
-                    it.remove();
-                    changed = true;
-                }
-            }
-            return changed;
-        }
-    }
-
-    /**
-     * Removes the first element of this list, if any.
-     */
-    public Object removeFirst() {
-        if(_head.next() != null) {
-            Object val = _head.next().value();
-            removeListable(_head.next());
-            return val;
-        } else {
-            throw new NoSuchElementException();
-        }
-    }
-
-    /**
-     * Removes the last element of this list, if any.
-     */
-    public Object removeLast() {
-        if(_head.prev() != null) {
-            Object val = _head.prev().value();
-            removeListable(_head.prev());
-            return val;
-        } else {
-            throw new NoSuchElementException();
-        }
-    }
-
-    /**
-     * Retains only the elements in this list that are contained in the
-     * specified collection.  In other words, removes
-     * from this list all the elements that are not contained in the specified
-     * collection.
-     *
-     * @param c collection that defines which elements this set will retain.
-     *
-     * @return <tt>true</tt> if this list changed as a result of the call.
-     */
-    public boolean retainAll(Collection c) {
-        boolean changed = false;
-        Iterator it = iterator();
-        while(it.hasNext()) {
-            if(!c.contains(it.next())) {
-                it.remove();
-                changed = true;
-            }
-        }
-        return changed;
-    }
-
-    /**
-     * Replaces the element at the specified position in this list with the
-     * specified element.
-     *
-     * @param index index of element to replace.
-     * @param element element to be stored at the specified position.
-     * @return the element previously at the specified position.
-     *
-     * @throws ClassCastException if the class of the specified element
-     * 		  prevents it from being added to this list.
-     * @throws IllegalArgumentException if some aspect of the specified
-     *	        element prevents it from being added to this list.
-     * @throws IndexOutOfBoundsException if the index is out of range
-     *		     (index &lt; 0 || index &gt;= size()).
-     */
-    public Object set(int index, Object element) {
-        Listable elt = getListableAt(index);
-        Object val = elt.setValue(element);
-        broadcastListableChanged(elt);
-        return val;
-    }
-
-    /**
-     * Returns the number of elements in this list.
-     * @return the number of elements in this list.
-     */
-    public int size() {
-        return _size;
-    }
-
-    /**
-     * Returns an array containing all of the elements in this list in proper
-     * sequence.  Obeys the general contract of the {@link Collection#toArray} method.
-     *
-     * @return an array containing all of the elements in this list in proper
-     *         sequence.
-     */
-    public Object[] toArray() {
-        Object[] array = new Object[_size];
-        int i = 0;
-        for(Listable elt = _head.next(), past = null; null != elt && past != _head.prev(); elt = (past = elt).next()) {
-            array[i++] = elt.value();
-        }
-        return array;
-    }
-
-    /**
-     * Returns an array containing all of the elements in this list in proper
-     * sequence; the runtime type of the returned array is that of the
-     * specified array. Obeys the general contract of the
-     * {@link Collection#toArray} method.
-     *
-     * @param a      the array into which the elements of this list are to
-     *               be stored, if it is big enough; otherwise, a new array of the
-     *               same runtime type is allocated for this purpose.
-     * @return an array containing the elements of this list.
-     * @exception ArrayStoreException
-     *                   if the runtime type of the specified array
-     *                   is not a supertype of the runtime type of every element in
-     *                   this list.
-     */
-    public Object[] toArray(Object a[]) {
-        if(a.length < _size) {
-            a = (Object[])Array.newInstance(a.getClass().getComponentType(), _size);
-        }
-        int i = 0;
-        for(Listable elt = _head.next(), past = null; null != elt && past != _head.prev(); elt = (past = elt).next()) {
-            a[i++] = elt.value();
-        }
-        if(a.length > _size) {
-            a[_size] = null; // should we null out the rest of the array also? java.util.LinkedList doesn't
-        }
-        return a;
-    }
-
-    /**
-     * Returns a {@link String} representation of this list, suitable for debugging.
-     * @return a {@link String} representation of this list, suitable for debugging.
-     */
-    public String toString() {
-        StringBuffer buf = new StringBuffer();
-        buf.append("[");
-        for(Listable elt = _head.next(), past = null; null != elt && past != _head.prev(); elt = (past = elt).next()) {
-            if(_head.next() != elt) {
-                buf.append(", ");
-            }
-            buf.append(elt.value());
-        }
-        buf.append("]");
-        return buf.toString();
-    }
-
-    /**
-     * Returns a fail-fast sublist.
-     * @see List#subList(int,int)
-     */
-    public List subList(int i, int j) {
-        if(i < 0 || j > _size || i > j) {
-            throw new IndexOutOfBoundsException();
-        } else if(i == 0 && j == _size) {
-            return this;
-        } else {
-            return new CursorableSubList(this,i,j);
-        }
-    }
-
-    //--- protected methods ------------------------------------------
-
-    /**
-     * Inserts a new <i>value</i> into my
-     * list, after the specified <i>before</i> element, and before the
-     * specified <i>after</i> element
-     *
-     * @return the newly created 
-     * {@link org.apache.commons.collections.CursorableLinkedList.Listable}
-     */
-    protected Listable insertListable(Listable before, Listable after, Object value) {
-        _modCount++;
-        _size++;
-        Listable elt = new Listable(before,after,value);
-        if(null != before) {
-            before.setNext(elt);
-        } else {
-            _head.setNext(elt);
-        }
-
-        if(null != after) {
-            after.setPrev(elt);
-        } else {
-            _head.setPrev(elt);
-        }
-        broadcastListableInserted(elt);
-        return elt;
-    }
-
-    /**
-     * Removes the given 
-     * {@link org.apache.commons.collections.CursorableLinkedList.Listable} 
-     * from my list.
-     */
-    protected void removeListable(Listable elt) {
-        _modCount++;
-        _size--;
-        if(_head.next() == elt) {
-            _head.setNext(elt.next());
-        }
-        if(null != elt.next()) {
-            elt.next().setPrev(elt.prev());
-        }
-        if(_head.prev() == elt) {
-            _head.setPrev(elt.prev());
-        }
-        if(null != elt.prev()) {
-            elt.prev().setNext(elt.next());
-        }
-        broadcastListableRemoved(elt);
-    }
-
-    /**
-     * Returns the 
-     * {@link org.apache.commons.collections.CursorableLinkedList.Listable} 
-     * at the specified index.
-     *
-     * @throws IndexOutOfBoundsException if index is less than zero or
-     *         greater than or equal to the size of this list.
-     */
-    protected Listable getListableAt(int index) {
-        if(index < 0 || index >= _size) {
-            throw new IndexOutOfBoundsException(String.valueOf(index) + " < 0 or " + String.valueOf(index) + " >= " + _size);
-        }
-        if(index <=_size/2) {
-            Listable elt = _head.next();
-            for(int i = 0; i < index; i++) {
-                elt = elt.next();
-            }
-            return elt;
-        } else {
-            Listable elt = _head.prev();
-            for(int i = (_size-1); i > index; i--) {
-                elt = elt.prev();
-            }
-            return elt;
-        }
-    }
-
-    /**
-     * Registers a {@link CursorableLinkedList.Cursor} to be notified
-     * of changes to this list.
-     */
-    protected void registerCursor(Cursor cur) {
-        // We take this opportunity to clean the _cursors list
-        // of WeakReference objects to garbage-collected cursors.
-        for (Iterator it = _cursors.iterator(); it.hasNext(); ) {
-            WeakReference ref = (WeakReference) it.next();
-            if (ref.get() == null) {
-                it.remove();
-            }
-        }
-        
-        _cursors.add( new WeakReference(cur) );
-    }
-
-    /**
-     * Removes a {@link CursorableLinkedList.Cursor} from
-     * the set of cursors to be notified of changes to this list.
-     */
-    protected void unregisterCursor(Cursor cur) {
-        for (Iterator it = _cursors.iterator(); it.hasNext(); ) {
-            WeakReference ref = (WeakReference) it.next();
-            Cursor cursor = (Cursor) ref.get();
-            if (cursor == null) {
-                // some other unrelated cursor object has been 
-                // garbage-collected; let's take the opportunity to
-                // clean up the cursors list anyway..
-                it.remove();
-                
-            } else if (cursor == cur) {
-                ref.clear();
-                it.remove();
-                break;
-            }
-        }
-    }
-
-    /**
-     * Informs all of my registered cursors that they are now
-     * invalid.
-     */
-    protected void invalidateCursors() {
-        Iterator it = _cursors.iterator();
-        while (it.hasNext()) {
-            WeakReference ref = (WeakReference) it.next();
-            Cursor cursor = (Cursor) ref.get();
-            if (cursor != null) {
-                // cursor is null if object has been garbage-collected
-                cursor.invalidate();
-                ref.clear();
-            }
-            it.remove();
-        }
-    }
-
-    /**
-     * Informs all of my registered cursors that the specified
-     * element was changed.
-     * @see #set(int,java.lang.Object)
-     */
-    protected void broadcastListableChanged(Listable elt) {
-        Iterator it = _cursors.iterator();
-        while (it.hasNext()) {
-            WeakReference ref = (WeakReference) it.next();
-            Cursor cursor = (Cursor) ref.get();
-            if (cursor == null) {
-                it.remove(); // clean up list
-            } else {
-                cursor.listableChanged(elt);
-            }
-        }
-    }
-
-    /**
-     * Informs all of my registered cursors that the specified
-     * element was just removed from my list.
-     */
-    protected void broadcastListableRemoved(Listable elt) {
-        Iterator it = _cursors.iterator();
-        while (it.hasNext()) {
-            WeakReference ref = (WeakReference) it.next();
-            Cursor cursor = (Cursor) ref.get();
-            if (cursor == null) {
-                it.remove(); // clean up list
-            } else {
-                cursor.listableRemoved(elt);
-            }
-        }
-    }
-
-    /**
-     * Informs all of my registered cursors that the specified
-     * element was just added to my list.
-     */
-    protected void broadcastListableInserted(Listable elt) {
-        Iterator it = _cursors.iterator();
-        while (it.hasNext()) {
-            WeakReference ref = (WeakReference) it.next();
-            Cursor cursor = (Cursor) ref.get();
-            if (cursor == null) {
-                it.remove();  // clean up list
-            } else {
-                cursor.listableInserted(elt);
-            }
-        }
-    }
-
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeInt(_size);
-        Listable cur = _head.next();
-        while (cur != null) {
-            out.writeObject(cur.value());
-            cur = cur.next();
-        }
-    }
-
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        _size = 0;
-        _modCount = 0;
-        _cursors = new ArrayList();
-        _head = new Listable(null,null,null);
-        int size = in.readInt();
-        for (int i=0;i<size;i++) {
-            this.add(in.readObject());
-        }
-    }
-
-    //--- protected attributes ---------------------------------------
-
-    /** The number of elements in me. */
-    protected transient int _size = 0;
-
-    /**
-     * A sentry node.
-     * <p>
-     * <tt>_head.next()</tt> points to the first element in the list,
-     * <tt>_head.prev()</tt> to the last. Note that it is possible for
-     * <tt>_head.next().prev()</tt> and <tt>_head.prev().next()</tt> to be
-     * non-null, as when I am a sublist for some larger list.
-     * Use <tt>== _head.next()</tt> and <tt>== _head.prev()</tt> to determine
-     * if a given 
-     * {@link org.apache.commons.collections.CursorableLinkedList.Listable} 
-     * is the first or last element in the list.
-     */
-    protected transient Listable _head = new Listable(null,null,null);
-
-    /** Tracks the number of structural modifications to me. */
-    protected transient int _modCount = 0;
-
-    /**
-     * A list of the currently {@link CursorableLinkedList.Cursor}s currently
-     * open in this list.
-     */
-    protected transient List _cursors = new ArrayList();
-
-    //--- inner classes ----------------------------------------------
-
-    static class Listable implements Serializable {
-        private Listable _prev = null;
-        private Listable _next = null;
-        private Object _val = null;
-
-        Listable(Listable prev, Listable next, Object val) {
-            _prev = prev;
-            _next = next;
-            _val = val;
-        }
-
-        Listable next() {
-            return _next;
-        }
-
-        Listable prev() {
-            return _prev;
-        }
-
-        Object value() {
-            return _val;
-        }
-
-        void setNext(Listable next) {
-            _next = next;
-        }
-
-        void setPrev(Listable prev) {
-            _prev = prev;
-        }
-
-        Object setValue(Object val) {
-            Object temp = _val;
-            _val = val;
-            return temp;
-        }
-    }
-
-    class ListIter implements ListIterator {
-        Listable _cur = null;
-        Listable _lastReturned = null;
-        int _expectedModCount = _modCount;
-        int _nextIndex = 0;
-
-        ListIter(int index) {
-            if(index == 0) {
-                _cur = new Listable(null,_head.next(),null);
-                _nextIndex = 0;
-            } else if(index == _size) {
-                _cur = new Listable(_head.prev(),null,null);
-                _nextIndex = _size;
-            } else {
-                Listable temp = getListableAt(index);
-                _cur = new Listable(temp.prev(),temp,null);
-                _nextIndex = index;
-            }
-        }
-
-        public Object previous() {
-            checkForComod();
-            if(!hasPrevious()) {
-                throw new NoSuchElementException();
-            } else {
-                Object ret = _cur.prev().value();
-                _lastReturned = _cur.prev();
-                _cur.setNext(_cur.prev());
-                _cur.setPrev(_cur.prev().prev());
-                _nextIndex--;
-                return ret;
-            }
-        }
-
-        public boolean hasNext() {
-            checkForComod();
-            return(null != _cur.next() && _cur.prev() != _head.prev());
-        }
-
-        public Object next() {
-            checkForComod();
-            if(!hasNext()) {
-                throw new NoSuchElementException();
-            } else {
-                Object ret = _cur.next().value();
-                _lastReturned = _cur.next();
-                _cur.setPrev(_cur.next());
-                _cur.setNext(_cur.next().next());
-                _nextIndex++;
-                return ret;
-            }
-        }
-
-        public int previousIndex() {
-            checkForComod();
-            if(!hasPrevious()) {
-                return -1;
-            }
-            return _nextIndex-1;
-        }
-
-        public boolean hasPrevious() {
-            checkForComod();
-            return(null != _cur.prev() && _cur.next() != _head.next());
-        }
-
-        public void set(Object o) {
-            checkForComod();
-            try {
-                _lastReturned.setValue(o);
-            } catch(NullPointerException e) {
-                throw new IllegalStateException();
-            }
-        }
-
-        public int nextIndex() {
-            checkForComod();
-            if(!hasNext()) {
-                return size();
-            }
-            return _nextIndex;
-        }
-
-        public void remove() {
-            checkForComod();
-            if(null == _lastReturned) {
-                throw new IllegalStateException();
-            } else {
-                _cur.setNext(_lastReturned == _head.prev() ? null : _lastReturned.next());
-                _cur.setPrev(_lastReturned == _head.next() ? null : _lastReturned.prev());
-                removeListable(_lastReturned);
-                _lastReturned = null;
-                _nextIndex--;
-                _expectedModCount++;
-            }
-        }
-
-        public void add(Object o) {
-            checkForComod();
-            _cur.setPrev(insertListable(_cur.prev(),_cur.next(),o));
-            _lastReturned = null;
-            _nextIndex++;
-            _expectedModCount++;
-        }
-
-        protected void checkForComod() {
-            if(_expectedModCount != _modCount) {
-                throw new ConcurrentModificationException();
-            }
-        }
-    }
-
-    public class Cursor extends ListIter implements ListIterator {
-        boolean _valid = false;
-
-        Cursor(int index) {
-            super(index);
-            _valid = true;
-            registerCursor(this);
-        }
-
-        public int previousIndex() {
-            throw new UnsupportedOperationException();
-        }
-
-        public int nextIndex() {
-            throw new UnsupportedOperationException();
-        }
-
-        public void add(Object o) {
-            checkForComod();
-            Listable elt = insertListable(_cur.prev(),_cur.next(),o);
-            _cur.setPrev(elt);
-            _cur.setNext(elt.next());
-            _lastReturned = null;
-            _nextIndex++;
-            _expectedModCount++;
-        }
-
-        protected void listableRemoved(Listable elt) {
-            if(null == _head.prev()) {
-                _cur.setNext(null);
-            } else if(_cur.next() == elt) {
-                _cur.setNext(elt.next());
-            }
-            if(null == _head.next()) {
-                _cur.setPrev(null);
-            } else if(_cur.prev() == elt) {
-                _cur.setPrev(elt.prev());
-            }
-            if(_lastReturned == elt) {
-                _lastReturned = null;
-            }
-        }
-
-        protected void listableInserted(Listable elt) {
-            if(null == _cur.next() && null == _cur.prev()) {
-                _cur.setNext(elt);
-            } else if(_cur.prev() == elt.prev()) {
-                _cur.setNext(elt);
-            }
-            if(_cur.next() == elt.next()) {
-                _cur.setPrev(elt);
-            }
-            if(_lastReturned == elt) {
-                _lastReturned = null;
-            }
-        }
-
-        protected void listableChanged(Listable elt) {
-            if(_lastReturned == elt) {
-                _lastReturned = null;
-            }
-        }
-
-        protected void checkForComod() {
-            if(!_valid) {
-                throw new ConcurrentModificationException();
-            }
-        }
-
-        protected void invalidate() {
-            _valid = false;
-        }
-
-        /**
-         * Mark this cursor as no longer being needed. Any resources
-         * associated with this cursor are immediately released.
-         * In previous versions of this class, it was mandatory to close
-         * all cursor objects to avoid memory leaks. It is <i>no longer</i>
-         * necessary to call this close method; an instance of this class
-         * can now be treated exactly like a normal iterator.
-         */
-        public void close() {
-            if(_valid) {
-                _valid = false;
-                unregisterCursor(this);
-            }
-        }
-    }
-
-}
-
-/**
- * @deprecated Use new version in list subpackage, which has been rewritten
- *  and now returns the cursor from the listIterator method. Will be removed in v4.0
- */
-class CursorableSubList extends CursorableLinkedList implements List {
-
-    //--- constructors -----------------------------------------------
-
-    CursorableSubList(CursorableLinkedList list, int from, int to) {
-        if(0 > from || list.size() < to) {
-            throw new IndexOutOfBoundsException();
-        } else if(from > to) {
-            throw new IllegalArgumentException();
-        }
-        _list = list;
-        if(from < list.size()) {
-            _head.setNext(_list.getListableAt(from));
-            _pre = (null == _head.next()) ? null : _head.next().prev();
-        } else {
-            _pre = _list.getListableAt(from-1);
-        }
-        if(from == to) {
-            _head.setNext(null);
-            _head.setPrev(null);
-            if(to < list.size()) {
-                _post = _list.getListableAt(to);
-            } else {
-                _post = null;
-            }
-        } else {
-            _head.setPrev(_list.getListableAt(to-1));
-            _post = _head.prev().next();
-        }
-        _size = to - from;
-        _modCount = _list._modCount;
-    }
-
-    //--- public methods ------------------------------------------
-
-    public void clear() {
-        checkForComod();
-        Iterator it = iterator();
-        while(it.hasNext()) {
-            it.next();
-            it.remove();
-        }
-    }
-
-    public Iterator iterator() {
-        checkForComod();
-        return super.iterator();
-    }
-
-    public int size() {
-        checkForComod();
-        return super.size();
-    }
-
-    public boolean isEmpty() {
-        checkForComod();
-        return super.isEmpty();
-    }
-
-    public Object[] toArray() {
-        checkForComod();
-        return super.toArray();
-    }
-
-    public Object[] toArray(Object a[]) {
-        checkForComod();
-        return super.toArray(a);
-    }
-
-    public boolean contains(Object o) {
-        checkForComod();
-        return super.contains(o);
-    }
-
-    public boolean remove(Object o) {
-        checkForComod();
-        return super.remove(o);
-    }
-
-    public Object removeFirst() {
-        checkForComod();
-        return super.removeFirst();
-    }
-
-    public Object removeLast() {
-        checkForComod();
-        return super.removeLast();
-    }
-
-    public boolean addAll(Collection c) {
-        checkForComod();
-        return super.addAll(c);
-    }
-
-    public boolean add(Object o) {
-        checkForComod();
-        return super.add(o);
-    }
-
-    public boolean addFirst(Object o) {
-        checkForComod();
-        return super.addFirst(o);
-    }
-
-    public boolean addLast(Object o) {
-        checkForComod();
-        return super.addLast(o);
-    }
-
-    public boolean removeAll(Collection c) {
-        checkForComod();
-        return super.removeAll(c);
-    }
-
-    public boolean containsAll(Collection c) {
-        checkForComod();
-        return super.containsAll(c);
-    }
-
-    public boolean addAll(int index, Collection c) {
-        checkForComod();
-        return super.addAll(index,c);
-    }
-
-    public int hashCode() {
-        checkForComod();
-        return super.hashCode();
-    }
-
-    public boolean retainAll(Collection c) {
-        checkForComod();
-        return super.retainAll(c);
-    }
-
-    public Object set(int index, Object element) {
-        checkForComod();
-        return super.set(index,element);
-    }
-
-    public boolean equals(Object o) {
-        checkForComod();
-        return super.equals(o);
-    }
-
-    public Object get(int index) {
-        checkForComod();
-        return super.get(index);
-    }
-
-    public Object getFirst() {
-        checkForComod();
-        return super.getFirst();
-    }
-
-    public Object getLast() {
-        checkForComod();
-        return super.getLast();
-    }
-
-    public void add(int index, Object element) {
-        checkForComod();
-        super.add(index,element);
-    }
-
-    public ListIterator listIterator(int index) {
-        checkForComod();
-        return super.listIterator(index);
-    }
-
-    public Object remove(int index) {
-        checkForComod();
-        return super.remove(index);
-    }
-
-    public int indexOf(Object o) {
-        checkForComod();
-        return super.indexOf(o);
-    }
-
-    public int lastIndexOf(Object o) {
-        checkForComod();
-        return super.lastIndexOf(o);
-    }
-
-    public ListIterator listIterator() {
-        checkForComod();
-        return super.listIterator();
-    }
-
-    public List subList(int fromIndex, int toIndex) {
-        checkForComod();
-        return super.subList(fromIndex,toIndex);
-    }
-
-    //--- protected methods ------------------------------------------
-
-    /**
-     * Inserts a new <i>value</i> into my
-     * list, after the specified <i>before</i> element, and before the
-     * specified <i>after</i> element
-     *
-     * @return the newly created {@link CursorableLinkedList.Listable}
-     */
-    protected Listable insertListable(Listable before, Listable after, Object value) {
-        _modCount++;
-        _size++;
-        Listable elt = _list.insertListable((null == before ? _pre : before), (null == after ? _post : after),value);
-        if(null == _head.next()) {
-            _head.setNext(elt);
-            _head.setPrev(elt);
-        }
-        if(before == _head.prev()) {
-            _head.setPrev(elt);
-        }
-        if(after == _head.next()) {
-            _head.setNext(elt);
-        }
-        broadcastListableInserted(elt);
-        return elt;
-    }
-
-    /**
-     * Removes the given {@link CursorableLinkedList.Listable} from my list.
-     */
-    protected void removeListable(Listable elt) {
-        _modCount++;
-        _size--;
-        if(_head.next() == elt && _head.prev() == elt) {
-            _head.setNext(null);
-            _head.setPrev(null);
-        }
-        if(_head.next() == elt) {
-            _head.setNext(elt.next());
-        }
-        if(_head.prev() == elt) {
-            _head.setPrev(elt.prev());
-        }
-        _list.removeListable(elt);
-        broadcastListableRemoved(elt);
-    }
-
-    /**
-     * Test to see if my underlying list has been modified
-     * by some other process.  If it has, throws a
-     * {@link ConcurrentModificationException}, otherwise
-     * quietly returns.
-     *
-     * @throws ConcurrentModificationException
-     */
-    protected void checkForComod() throws ConcurrentModificationException {
-        if(_modCount != _list._modCount) {
-            throw new ConcurrentModificationException();
-        }
-    }
-
-    //--- protected attributes ---------------------------------------
-
-    /** My underlying list */
-    protected CursorableLinkedList _list = null;
-
-    /** The element in my underlying list preceding the first element in my list. */
-    protected Listable _pre = null;
-
-    /** The element in my underlying list following the last element in my list. */
-    protected Listable _post = null;
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/DefaultMapBag.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/DefaultMapBag.java
deleted file mode 100755
index 2701f9d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/DefaultMapBag.java
+++ /dev/null
@@ -1,454 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.ConcurrentModificationException;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.collections.set.UnmodifiableSet;
-
-/**
- * A skeletal implementation of the {@link Bag}
- * interface to minimize the effort required for target implementations.
- * Subclasses need only to call <code>setMap(Map)</code> in their constructor 
- * (or invoke the Map constructor) specifying a map instance that will be used
- * to store the contents of the bag.
- * <p>
- * The map will be used to map bag elements to a number; the number represents
- * the number of occurrences of that element in the bag.
- *
- * @deprecated Moved to bag subpackage as AbstractMapBag. Due to be removed in v4.0.
- * @since Commons Collections 2.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- * 
- * @author Chuck Burdick
- * @author Michael A. Smith
- * @author Stephen Colebourne
- * @author Janek Bogucki
- */
-public abstract class DefaultMapBag implements Bag {
-    private Map _map = null;
-    private int _total = 0;
-    private int _mods = 0;
-
-    /**
-     * No-argument constructor.  
-     * Subclasses should invoke <code>setMap(Map)</code> in
-     * their constructors.
-     */
-    public DefaultMapBag() {
-    }
-
-    /**
-     * Constructor that assigns the specified Map as the backing store.
-     * The map must be empty.
-     * 
-     * @param map  the map to assign
-     */
-    protected DefaultMapBag(Map map) {
-        setMap(map);
-    }
-
-    /**
-     * Adds a new element to the bag by incrementing its count in the 
-     * underlying map.
-     *
-     * @param object  the object to add
-     * @return <code>true</code> if the object was not already in the <code>uniqueSet</code>
-     */
-    public boolean add(Object object) {
-        return add(object, 1);
-    }
-
-    /**
-     * Adds a new element to the bag by incrementing its count in the map.
-     *
-     * @param object  the object to search for
-     * @param nCopies  the number of copies to add
-     * @return <code>true</code> if the object was not already in the <code>uniqueSet</code>
-     */
-    public boolean add(Object object, int nCopies) {
-        _mods++;
-        if (nCopies > 0) {
-            int count = (nCopies + getCount(object));
-            _map.put(object, new Integer(count));
-            _total += nCopies;
-            return (count == nCopies);
-        } else {
-            return false;
-        }
-    }
-
-    /**
-     * Invokes {@link #add(Object)} for each element in the given collection.
-     *
-     * @param coll  the collection to add
-     * @return <code>true</code> if this call changed the bag
-     */
-    public boolean addAll(Collection coll) {
-        boolean changed = false;
-        Iterator i = coll.iterator();
-        while (i.hasNext()) {
-            boolean added = add(i.next());
-            changed = changed || added;
-        }
-        return changed;
-    }
-
-    /**
-     * Clears the bag by clearing the underlying map.
-     */
-    public void clear() {
-        _mods++;
-        _map.clear();
-        _total = 0;
-    }
-
-    /**
-     * Determines if the bag contains the given element by checking if the
-     * underlying map contains the element as a key.
-     *
-     * @param object  the object to search for
-     * @return true if the bag contains the given element
-     */
-    public boolean contains(Object object) {
-        return _map.containsKey(object);
-    }
-
-    /**
-     * Determines if the bag contains the given elements.
-     * 
-     * @param coll  the collection to check against
-     * @return <code>true</code> if the Bag contains all the collection
-     */
-    public boolean containsAll(Collection coll) {
-        return containsAll(new HashBag(coll));
-    }
-
-    /**
-     * Returns <code>true</code> if the bag contains all elements in
-     * the given collection, respecting cardinality.
-     * 
-     * @param other  the bag to check against
-     * @return <code>true</code> if the Bag contains all the collection
-     */
-    public boolean containsAll(Bag other) {
-        boolean result = true;
-        Iterator i = other.uniqueSet().iterator();
-        while (i.hasNext()) {
-            Object current = i.next();
-            boolean contains = getCount(current) >= other.getCount(current);
-            result = result && contains;
-        }
-        return result;
-    }
-
-    /**
-     * Returns true if the given object is not null, has the precise type 
-     * of this bag, and contains the same number of occurrences of all the
-     * same elements.
-     *
-     * @param object  the object to test for equality
-     * @return true if that object equals this bag
-     */
-    public boolean equals(Object object) {
-        if (object == this) {
-            return true;
-        }
-        if (object instanceof Bag == false) {
-            return false;
-        }
-        Bag other = (Bag) object;
-        if (other.size() != size()) {
-            return false;
-        }
-        for (Iterator it = _map.keySet().iterator(); it.hasNext();) {
-            Object element = it.next();
-            if (other.getCount(element) != getCount(element)) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Returns the hash code of the underlying map.
-     *
-     * @return the hash code of the underlying map
-     */
-    public int hashCode() {
-        return _map.hashCode();
-    }
-
-    /**
-     * Returns true if the underlying map is empty.
-     *
-     * @return true if there are no elements in this bag
-     */
-    public boolean isEmpty() {
-        return _map.isEmpty();
-    }
-
-    public Iterator iterator() {
-        return new BagIterator(this, extractList().iterator());
-    }
-
-    static class BagIterator implements Iterator {
-        private DefaultMapBag _parent = null;
-        private Iterator _support = null;
-        private Object _current = null;
-        private int _mods = 0;
-
-        public BagIterator(DefaultMapBag parent, Iterator support) {
-            _parent = parent;
-            _support = support;
-            _current = null;
-            _mods = parent.modCount();
-        }
-
-        public boolean hasNext() {
-            return _support.hasNext();
-        }
-
-        public Object next() {
-            if (_parent.modCount() != _mods) {
-                throw new ConcurrentModificationException();
-            }
-            _current = _support.next();
-            return _current;
-        }
-
-        public void remove() {
-            if (_parent.modCount() != _mods) {
-                throw new ConcurrentModificationException();
-            }
-            _support.remove();
-            _parent.remove(_current, 1);
-            _mods++;
-        }
-    }
-
-    public boolean remove(Object object) {
-        return remove(object, getCount(object));
-    }
-
-    public boolean remove(Object object, int nCopies) {
-        _mods++;
-        boolean result = false;
-        int count = getCount(object);
-        if (nCopies <= 0) {
-            result = false;
-        } else if (count > nCopies) {
-            _map.put(object, new Integer(count - nCopies));
-            result = true;
-            _total -= nCopies;
-        } else { // count > 0 && count <= i  
-            // need to remove all
-            result = (_map.remove(object) != null);
-            _total -= count;
-        }
-        return result;
-    }
-
-    public boolean removeAll(Collection coll) {
-        boolean result = false;
-        if (coll != null) {
-            Iterator i = coll.iterator();
-            while (i.hasNext()) {
-                boolean changed = remove(i.next(), 1);
-                result = result || changed;
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Remove any members of the bag that are not in the given
-     * bag, respecting cardinality.
-     *
-     * @param coll  the collection to retain
-     * @return true if this call changed the collection
-     */
-    public boolean retainAll(Collection coll) {
-        return retainAll(new HashBag(coll));
-    }
-
-    /**
-     * Remove any members of the bag that are not in the given
-     * bag, respecting cardinality.
-     * @see #retainAll(Collection)
-     * 
-     * @param other  the bag to retain
-     * @return <code>true</code> if this call changed the collection
-     */
-    public boolean retainAll(Bag other) {
-        boolean result = false;
-        Bag excess = new HashBag();
-        Iterator i = uniqueSet().iterator();
-        while (i.hasNext()) {
-            Object current = i.next();
-            int myCount = getCount(current);
-            int otherCount = other.getCount(current);
-            if (1 <= otherCount && otherCount <= myCount) {
-                excess.add(current, myCount - otherCount);
-            } else {
-                excess.add(current, myCount);
-            }
-        }
-        if (!excess.isEmpty()) {
-            result = removeAll(excess);
-        }
-        return result;
-    }
-
-    /**
-     * Returns an array of all of this bag's elements.
-     *
-     * @return an array of all of this bag's elements
-     */
-    public Object[] toArray() {
-        return extractList().toArray();
-    }
-
-    /**
-     * Returns an array of all of this bag's elements.
-     *
-     * @param array  the array to populate
-     * @return an array of all of this bag's elements
-     */
-    public Object[] toArray(Object[] array) {
-        return extractList().toArray(array);
-    }
-
-    /**
-     * Returns the number of occurrence of the given element in this bag
-     * by looking up its count in the underlying map.
-     *
-     * @param object  the object to search for
-     * @return the number of occurrences of the object, zero if not found
-     */
-    public int getCount(Object object) {
-        int result = 0;
-        Integer count = MapUtils.getInteger(_map, object);
-        if (count != null) {
-            result = count.intValue();
-        }
-        return result;
-    }
-
-    /**
-     * Returns an unmodifiable view of the underlying map's key set.
-     *
-     * @return the set of unique elements in this bag
-     */
-    public Set uniqueSet() {
-        return UnmodifiableSet.decorate(_map.keySet());
-    }
-
-    /**
-     * Returns the number of elements in this bag.
-     *
-     * @return the number of elements in this bag
-     */
-    public int size() {
-        return _total;
-    }
-
-    /**
-     * Actually walks the bag to make sure the count is correct and
-     * resets the running total
-     * 
-     * @return the current total size
-     */
-    protected int calcTotalSize() {
-        _total = extractList().size();
-        return _total;
-    }
-
-    /**
-     * Utility method for implementations to set the map that backs
-     * this bag. Not intended for interactive use outside of
-     * subclasses.
-     */
-    protected void setMap(Map map) {
-        if (map == null || map.isEmpty() == false) {
-            throw new IllegalArgumentException("The map must be non-null and empty");
-        }
-        _map = map;
-    }
-
-    /**
-     * Utility method for implementations to access the map that backs
-     * this bag. Not intended for interactive use outside of
-     * subclasses.
-     */
-    protected Map getMap() {
-        return _map;
-    }
-
-    /**
-     * Create a list for use in iteration, etc.
-     */
-    private List extractList() {
-        List result = new ArrayList();
-        Iterator i = uniqueSet().iterator();
-        while (i.hasNext()) {
-            Object current = i.next();
-            for (int index = getCount(current); index > 0; index--) {
-                result.add(current);
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Return number of modifications for iterator.
-     * 
-     * @return the modification count
-     */
-    private int modCount() {
-        return _mods;
-    }
-
-    /**
-     * Implement a toString() method suitable for debugging.
-     * 
-     * @return a debugging toString
-     */
-    public String toString() {
-        StringBuffer buf = new StringBuffer();
-        buf.append("[");
-        Iterator i = uniqueSet().iterator();
-        while (i.hasNext()) {
-            Object current = i.next();
-            int count = getCount(current);
-            buf.append(count);
-            buf.append(":");
-            buf.append(current);
-            if (i.hasNext()) {
-                buf.append(",");
-            }
-        }
-        buf.append("]");
-        return buf.toString();
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/DefaultMapEntry.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/DefaultMapEntry.java
deleted file mode 100755
index 464a29d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/DefaultMapEntry.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.Map;
-
-/**
- * A default implementation of {@link java.util.Map.Entry}
- *
- * @deprecated Use the version in the keyvalue subpackage. Will be removed in v4.0
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- * 
- * @author James Strachan
- * @author Michael A. Smith
- * @author Neil O'Toole
- * @author Stephen Colebourne
- */
-public class DefaultMapEntry implements Map.Entry, KeyValue {
-    
-    /** The key */
-    private Object key;
-    /** The value */
-    private Object value;
-    
-    /**
-     * Constructs a new <code>DefaultMapEntry</code> with a null key
-     * and null value.
-     */
-    public DefaultMapEntry() {
-        super();
-    }
-
-    /**
-     * Constructs a new <code>DefaultMapEntry</code> with the given
-     * key and given value.
-     *
-     * @param entry  the entry to copy, must not be null
-     * @throws NullPointerException if the entry is null
-     */
-    public DefaultMapEntry(Map.Entry entry) {
-        super();
-        this.key = entry.getKey();
-        this.value = entry.getValue();
-    }
-
-    /**
-     * Constructs a new <code>DefaultMapEntry</code> with the given
-     * key and given value.
-     *
-     * @param key  the key for the entry, may be null
-     * @param value  the value for the entry, may be null
-     */
-    public DefaultMapEntry(Object key, Object value) {
-        super();
-        this.key = key;
-        this.value = value;
-    }
-
-    // Map.Entry interface
-    //-------------------------------------------------------------------------
-    /**
-     * Gets the key from the Map Entry.
-     *
-     * @return the key 
-     */
-    public Object getKey() {
-        return key;
-    }
-
-    /**
-     * Sets the key stored in this Map Entry.
-     * <p>
-     * This Map Entry is not connected to a Map, so only the local data is changed.
-     *
-     * @param key  the new key
-     */
-    public void setKey(Object key) {
-        this.key = key;
-    }
-    
-    /**
-     * Gets the value from the Map Entry.
-     *
-     * @return the value
-     */
-    public Object getValue() {
-        return value;
-    }
-
-    /** 
-     * Sets the value stored in this Map Entry.
-     * <p>
-     * This Map Entry is not connected to a Map, so only the local data is changed.
-     *
-     * @param value  the new value
-     * @return the previous value
-     */
-    public Object setValue(Object value) {
-        Object answer = this.value;
-        this.value = value;
-        return answer;
-    }
-
-    // Basics
-    //-----------------------------------------------------------------------
-    /**
-     * Compares this Map Entry with another Map Entry.
-     * <p>
-     * Implemented per API documentation of {@link java.util.Map.Entry#equals(Object)}
-     * 
-     * @param obj  the object to compare to
-     * @return true if equal key and value
-     */
-    public boolean equals(Object obj) {
-        if (obj == this) {
-            return true;
-        }
-        if (obj instanceof Map.Entry == false) {
-            return false;
-        }
-        Map.Entry other = (Map.Entry) obj;
-        return
-            (getKey() == null ? other.getKey() == null : getKey().equals(other.getKey())) &&
-            (getValue() == null ? other.getValue() == null : getValue().equals(other.getValue()));
-    }
-     
-    /**
-     * Gets a hashCode compatible with the equals method.
-     * <p>
-     * Implemented per API documentation of {@link java.util.Map.Entry#hashCode()}
-     * 
-     * @return a suitable hash code
-     */
-    public int hashCode() {
-        return (getKey() == null ? 0 : getKey().hashCode()) ^
-               (getValue() == null ? 0 : getValue().hashCode()); 
-    }
-
-    /**
-     * Written to match the output of the Map.Entry's used in 
-     * a {@link java.util.HashMap}. 
-     * @since 3.0
-     */
-    public String toString() {
-        return ""+getKey()+"="+getValue();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/DoubleOrderedMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/DoubleOrderedMap.java
deleted file mode 100755
index 0b73668..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/DoubleOrderedMap.java
+++ /dev/null
@@ -1,1994 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.AbstractCollection;
-import java.util.AbstractMap;
-import java.util.AbstractSet;
-import java.util.Collection;
-import java.util.ConcurrentModificationException;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-/**
- * Red-Black tree-based implementation of Map. This class guarantees
- * that the map will be in both ascending key order and ascending
- * value order, sorted according to the natural order for the key's
- * and value's classes.
- * <p>
- * This Map is intended for applications that need to be able to look
- * up a key-value pairing by either key or value, and need to do so
- * with equal efficiency.
- * <p>
- * While that goal could be accomplished by taking a pair of TreeMaps
- * and redirecting requests to the appropriate TreeMap (e.g.,
- * containsKey would be directed to the TreeMap that maps values to
- * keys, containsValue would be directed to the TreeMap that maps keys
- * to values), there are problems with that implementation,
- * particularly when trying to keep the two TreeMaps synchronized with
- * each other. And if the data contained in the TreeMaps is large, the
- * cost of redundant storage becomes significant. (See also the new
- * {@link org.apache.commons.collections.bidimap.DualTreeBidiMap DualTreeBidiMap} and
- * {@link org.apache.commons.collections.bidimap.DualHashBidiMap DualHashBidiMap}
- * implementations.)
- * <p>
- * This solution keeps the data properly synchronized and minimizes
- * the data storage. The red-black algorithm is based on TreeMap's,
- * but has been modified to simultaneously map a tree node by key and
- * by value. This doubles the cost of put operations (but so does
- * using two TreeMaps), and nearly doubles the cost of remove
- * operations (there is a savings in that the lookup of the node to be
- * removed only has to be performed once). And since only one node
- * contains the key and value, storage is significantly less than that
- * required by two TreeMaps.
- * <p>
- * There are some limitations placed on data kept in this Map. The
- * biggest one is this:
- * <p>
- * When performing a put operation, neither the key nor the value may
- * already exist in the Map. In the java.util Map implementations
- * (HashMap, TreeMap), you can perform a put with an already mapped
- * key, and neither cares about duplicate values at all ... but this
- * implementation's put method with throw an IllegalArgumentException
- * if either the key or the value is already in the Map.
- * <p>
- * Obviously, that same restriction (and consequence of failing to
- * heed that restriction) applies to the putAll method.
- * <p>
- * The Map.Entry instances returned by the appropriate methods will
- * not allow setValue() and will throw an
- * UnsupportedOperationException on attempts to call that method.
- * <p>
- * New methods are added to take advantage of the fact that values are
- * kept sorted independently of their keys:
- * <p>
- * Object getKeyForValue(Object value) is the opposite of get; it
- * takes a value and returns its key, if any.
- * <p>
- * Object removeValue(Object value) finds and removes the specified
- * value and returns the now un-used key.
- * <p>
- * Set entrySetByValue() returns the Map.Entry's in a Set whose
- * iterator will iterate over the Map.Entry's in ascending order by
- * their corresponding values.
- * <p>
- * Set keySetByValue() returns the keys in a Set whose iterator will
- * iterate over the keys in ascending order by their corresponding
- * values.
- * <p>
- * Collection valuesByValue() returns the values in a Collection whose
- * iterator will iterate over the values in ascending order.
- *
- * @deprecated Replaced by TreeBidiMap in bidimap subpackage. Due to be removed in v4.0.
- * @see BidiMap
- * @see org.apache.commons.collections.bidimap.DualTreeBidiMap
- * @see org.apache.commons.collections.bidimap.DualHashBidiMap
- * @since Commons Collections 2.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author Marc Johnson
- */
-public final class DoubleOrderedMap extends AbstractMap {
-//  final for performance
-
-    private static final int KEY = 0;
-    private static final int VALUE = 1;
-    private static final int SUM_OF_INDICES = KEY + VALUE;
-    private static final int FIRST_INDEX = 0;
-    private static final int NUMBER_OF_INDICES = 2;
-    private static final String[] dataName = new String[] { "key", "value" };
-    
-    private Node[] rootNode = new Node[] { null, null };
-    private int nodeCount = 0;
-    private int modifications = 0;
-    private Set[] setOfKeys = new Set[] { null, null };
-    private Set[] setOfEntries = new Set[] { null, null };
-    private Collection[] collectionOfValues = new Collection[] { null, null };
-
-    /**
-     * Construct a new DoubleOrderedMap
-     */
-    public DoubleOrderedMap() {
-    }
-
-    /**
-     * Constructs a new DoubleOrderedMap from an existing Map, with keys and
-     * values sorted
-     *
-     * @param map the map whose mappings are to be placed in this map.
-     *
-     * @throws ClassCastException if the keys in the map are not
-     *                               Comparable, or are not mutually
-     *                               comparable; also if the values in
-     *                               the map are not Comparable, or
-     *                               are not mutually Comparable
-     * @throws NullPointerException if any key or value in the map
-     *                                 is null
-     * @throws IllegalArgumentException if there are duplicate keys
-     *                                     or duplicate values in the
-     *                                     map
-     */
-    public DoubleOrderedMap(final Map map)
-            throws ClassCastException, NullPointerException,
-                   IllegalArgumentException {
-        putAll(map);
-    }
-
-    /**
-     * Returns the key to which this map maps the specified value.
-     * Returns null if the map contains no mapping for this value.
-     *
-     * @param value value whose associated key is to be returned.
-     *
-     * @return the key to which this map maps the specified value, or
-     *         null if the map contains no mapping for this value.
-     *
-     * @throws ClassCastException if the value is of an
-     *                               inappropriate type for this map.
-     * @throws NullPointerException if the value is null
-     */
-    public Object getKeyForValue(final Object value)
-            throws ClassCastException, NullPointerException {
-        return doGet((Comparable) value, VALUE);
-    }
-
-    /**
-     * Removes the mapping for this value from this map if present
-     *
-     * @param value value whose mapping is to be removed from the map.
-     *
-     * @return previous key associated with specified value, or null
-     *         if there was no mapping for value.
-     */
-    public Object removeValue(final Object value) {
-        return doRemove((Comparable) value, VALUE);
-    }
-
-    /**
-     * Returns a set view of the mappings contained in this map. Each
-     * element in the returned set is a Map.Entry. The set is backed
-     * by the map, so changes to the map are reflected in the set, and
-     * vice-versa.  If the map is modified while an iteration over the
-     * set is in progress, the results of the iteration are
-     * undefined. The set supports element removal, which removes the
-     * corresponding mapping from the map, via the Iterator.remove,
-     * Set.remove, removeAll, retainAll and clear operations.  It does
-     * not support the add or addAll operations.<p>
-     *
-     * The difference between this method and entrySet is that
-     * entrySet's iterator() method returns an iterator that iterates
-     * over the mappings in ascending order by key. This method's
-     * iterator method iterates over the mappings in ascending order
-     * by value.
-     *
-     * @return a set view of the mappings contained in this map.
-     */
-    public Set entrySetByValue() {
-
-        if (setOfEntries[VALUE] == null) {
-            setOfEntries[VALUE] = new AbstractSet() {
-
-                public Iterator iterator() {
-
-                    return new DoubleOrderedMapIterator(VALUE) {
-
-                        protected Object doGetNext() {
-                            return lastReturnedNode;
-                        }
-                    };
-                }
-
-                public boolean contains(Object o) {
-
-                    if (!(o instanceof Map.Entry)) {
-                        return false;
-                    }
-
-                    Map.Entry entry = (Map.Entry) o;
-                    Object    key   = entry.getKey();
-                    Node      node  = lookup((Comparable) entry.getValue(),
-                                             VALUE);
-
-                    return (node != null) && node.getData(KEY).equals(key);
-                }
-
-                public boolean remove(Object o) {
-
-                    if (!(o instanceof Map.Entry)) {
-                        return false;
-                    }
-
-                    Map.Entry entry = (Map.Entry) o;
-                    Object    key   = entry.getKey();
-                    Node      node  = lookup((Comparable) entry.getValue(),
-                                             VALUE);
-
-                    if ((node != null) && node.getData(KEY).equals(key)) {
-                        doRedBlackDelete(node);
-
-                        return true;
-                    }
-
-                    return false;
-                }
-
-                public int size() {
-                    return DoubleOrderedMap.this.size();
-                }
-
-                public void clear() {
-                    DoubleOrderedMap.this.clear();
-                }
-            };
-        }
-
-        return setOfEntries[VALUE];
-    }
-
-    /**
-     * Returns a set view of the keys contained in this map.  The set
-     * is backed by the map, so changes to the map are reflected in
-     * the set, and vice-versa. If the map is modified while an
-     * iteration over the set is in progress, the results of the
-     * iteration are undefined. The set supports element removal,
-     * which removes the corresponding mapping from the map, via the
-     * Iterator.remove, Set.remove, removeAll, retainAll, and clear
-     * operations. It does not support the add or addAll
-     * operations.<p>
-     *
-     * The difference between this method and keySet is that keySet's
-     * iterator() method returns an iterator that iterates over the
-     * keys in ascending order by key. This method's iterator method
-     * iterates over the keys in ascending order by value.
-     *
-     * @return a set view of the keys contained in this map.
-     */
-    public Set keySetByValue() {
-
-        if (setOfKeys[VALUE] == null) {
-            setOfKeys[VALUE] = new AbstractSet() {
-
-                public Iterator iterator() {
-
-                    return new DoubleOrderedMapIterator(VALUE) {
-
-                        protected Object doGetNext() {
-                            return lastReturnedNode.getData(KEY);
-                        }
-                    };
-                }
-
-                public int size() {
-                    return DoubleOrderedMap.this.size();
-                }
-
-                public boolean contains(Object o) {
-                    return containsKey(o);
-                }
-
-                public boolean remove(Object o) {
-
-                    int oldnodeCount = nodeCount;
-
-                    DoubleOrderedMap.this.remove(o);
-
-                    return nodeCount != oldnodeCount;
-                }
-
-                public void clear() {
-                    DoubleOrderedMap.this.clear();
-                }
-            };
-        }
-
-        return setOfKeys[VALUE];
-    }
-
-    /**
-     * Returns a collection view of the values contained in this
-     * map. The collection is backed by the map, so changes to the map
-     * are reflected in the collection, and vice-versa. If the map is
-     * modified while an iteration over the collection is in progress,
-     * the results of the iteration are undefined. The collection
-     * supports element removal, which removes the corresponding
-     * mapping from the map, via the Iterator.remove,
-     * Collection.remove, removeAll, retainAll and clear operations.
-     * It does not support the add or addAll operations.<p>
-     *
-     * The difference between this method and values is that values's
-     * iterator() method returns an iterator that iterates over the
-     * values in ascending order by key. This method's iterator method
-     * iterates over the values in ascending order by key.
-     *
-     * @return a collection view of the values contained in this map.
-     */
-    public Collection valuesByValue() {
-
-        if (collectionOfValues[VALUE] == null) {
-            collectionOfValues[VALUE] = new AbstractCollection() {
-
-                public Iterator iterator() {
-
-                    return new DoubleOrderedMapIterator(VALUE) {
-
-                        protected Object doGetNext() {
-                            return lastReturnedNode.getData(VALUE);
-                        }
-                    };
-                }
-
-                public int size() {
-                    return DoubleOrderedMap.this.size();
-                }
-
-                public boolean contains(Object o) {
-                    return containsValue(o);
-                }
-
-                public boolean remove(Object o) {
-
-                    int oldnodeCount = nodeCount;
-
-                    removeValue(o);
-
-                    return nodeCount != oldnodeCount;
-                }
-
-                public boolean removeAll(Collection c) {
-
-                    boolean  modified = false;
-                    Iterator iter     = c.iterator();
-
-                    while (iter.hasNext()) {
-                        if (removeValue(iter.next()) != null) {
-                            modified = true;
-                        }
-                    }
-
-                    return modified;
-                }
-
-                public void clear() {
-                    DoubleOrderedMap.this.clear();
-                }
-            };
-        }
-
-        return collectionOfValues[VALUE];
-    }
-
-    /**
-     * common remove logic (remove by key or remove by value)
-     *
-     * @param o the key, or value, that we're looking for
-     * @param index KEY or VALUE
-     *
-     * @return the key, if remove by value, or the value, if remove by
-     *         key. null if the specified key or value could not be
-     *         found
-     */
-    private Object doRemove(final Comparable o, final int index) {
-
-        Node   node = lookup(o, index);
-        Object rval = null;
-
-        if (node != null) {
-            rval = node.getData(oppositeIndex(index));
-
-            doRedBlackDelete(node);
-        }
-
-        return rval;
-    }
-
-    /**
-     * common get logic, used to get by key or get by value
-     *
-     * @param o the key or value that we're looking for
-     * @param index KEY or VALUE
-     *
-     * @return the key (if the value was mapped) or the value (if the
-     *         key was mapped); null if we couldn't find the specified
-     *         object
-     */
-    private Object doGet(final Comparable o, final int index) {
-
-        checkNonNullComparable(o, index);
-
-        Node node = lookup(o, index);
-
-        return ((node == null)
-                ? null
-                : node.getData(oppositeIndex(index)));
-    }
-
-    /**
-     * Get the opposite index of the specified index
-     *
-     * @param index KEY or VALUE
-     *
-     * @return VALUE (if KEY was specified), else KEY
-     */
-    private int oppositeIndex(final int index) {
-
-        // old trick ... to find the opposite of a value, m or n,
-        // subtract the value from the sum of the two possible
-        // values. (m + n) - m = n; (m + n) - n = m
-        return SUM_OF_INDICES - index;
-    }
-
-    /**
-     * do the actual lookup of a piece of data
-     *
-     * @param data the key or value to be looked up
-     * @param index KEY or VALUE
-     *
-     * @return the desired Node, or null if there is no mapping of the
-     *         specified data
-     */
-    private Node lookup(final Comparable data, final int index) {
-
-        Node rval = null;
-        Node node = rootNode[index];
-
-        while (node != null) {
-            int cmp = compare(data, node.getData(index));
-
-            if (cmp == 0) {
-                rval = node;
-
-                break;
-            } else {
-                node = (cmp < 0)
-                       ? node.getLeft(index)
-                       : node.getRight(index);
-            }
-        }
-
-        return rval;
-    }
-
-    /**
-     * Compare two objects
-     *
-     * @param o1 the first object
-     * @param o2 the second object
-     *
-     * @return negative value if o1 < o2; 0 if o1 == o2; positive
-     *         value if o1 > o2
-     */
-    private static int compare(final Comparable o1, final Comparable o2) {
-        return o1.compareTo(o2);
-    }
-
-    /**
-     * find the least node from a given node. very useful for starting
-     * a sorting iterator ...
-     *
-     * @param node the node from which we will start searching
-     * @param index KEY or VALUE
-     *
-     * @return the smallest node, from the specified node, in the
-     *         specified mapping
-     */
-    private static Node leastNode(final Node node, final int index) {
-
-        Node rval = node;
-
-        if (rval != null) {
-            while (rval.getLeft(index) != null) {
-                rval = rval.getLeft(index);
-            }
-        }
-
-        return rval;
-    }
-
-    /**
-     * get the next larger node from the specified node
-     *
-     * @param node the node to be searched from
-     * @param index KEY or VALUE
-     *
-     * @return the specified node
-     */
-    private Node nextGreater(final Node node, final int index) {
-
-        Node rval = null;
-
-        if (node == null) {
-            rval = null;
-        } else if (node.getRight(index) != null) {
-
-            // everything to the node's right is larger. The least of
-            // the right node's descendants is the next larger node
-            rval = leastNode(node.getRight(index), index);
-        } else {
-
-            // traverse up our ancestry until we find an ancestor that
-            // is null or one whose left child is our ancestor. If we
-            // find a null, then this node IS the largest node in the
-            // tree, and there is no greater node. Otherwise, we are
-            // the largest node in the subtree on that ancestor's left
-            // ... and that ancestor is the next greatest node
-            Node parent = node.getParent(index);
-            Node child  = node;
-
-            while ((parent != null) && (child == parent.getRight(index))) {
-                child  = parent;
-                parent = parent.getParent(index);
-            }
-
-            rval = parent;
-        }
-
-        return rval;
-    }
-
-    /**
-     * copy the color from one node to another, dealing with the fact
-     * that one or both nodes may, in fact, be null
-     *
-     * @param from the node whose color we're copying; may be null
-     * @param to the node whose color we're changing; may be null
-     * @param index KEY or VALUE
-     */
-    private static void copyColor(final Node from, final Node to,
-                                  final int index) {
-
-        if (to != null) {
-            if (from == null) {
-
-                // by default, make it black
-                to.setBlack(index);
-            } else {
-                to.copyColor(from, index);
-            }
-        }
-    }
-
-    /**
-     * is the specified node red? if the node does not exist, no, it's
-     * black, thank you
-     *
-     * @param node the node (may be null) in question
-     * @param index KEY or VALUE
-     */
-    private static boolean isRed(final Node node, final int index) {
-
-        return ((node == null)
-                ? false
-                : node.isRed(index));
-    }
-
-    /**
-     * is the specified black red? if the node does not exist, sure,
-     * it's black, thank you
-     *
-     * @param node the node (may be null) in question
-     * @param index KEY or VALUE
-     */
-    private static boolean isBlack(final Node node, final int index) {
-
-        return ((node == null)
-                ? true
-                : node.isBlack(index));
-    }
-
-    /**
-     * force a node (if it exists) red
-     *
-     * @param node the node (may be null) in question
-     * @param index KEY or VALUE
-     */
-    private static void makeRed(final Node node, final int index) {
-
-        if (node != null) {
-            node.setRed(index);
-        }
-    }
-
-    /**
-     * force a node (if it exists) black
-     *
-     * @param node the node (may be null) in question
-     * @param index KEY or VALUE
-     */
-    private static void makeBlack(final Node node, final int index) {
-
-        if (node != null) {
-            node.setBlack(index);
-        }
-    }
-
-    /**
-     * get a node's grandparent. mind you, the node, its parent, or
-     * its grandparent may not exist. no problem
-     *
-     * @param node the node (may be null) in question
-     * @param index KEY or VALUE
-     */
-    private static Node getGrandParent(final Node node, final int index) {
-        return getParent(getParent(node, index), index);
-    }
-
-    /**
-     * get a node's parent. mind you, the node, or its parent, may not
-     * exist. no problem
-     *
-     * @param node the node (may be null) in question
-     * @param index KEY or VALUE
-     */
-    private static Node getParent(final Node node, final int index) {
-
-        return ((node == null)
-                ? null
-                : node.getParent(index));
-    }
-
-    /**
-     * get a node's right child. mind you, the node may not exist. no
-     * problem
-     *
-     * @param node the node (may be null) in question
-     * @param index KEY or VALUE
-     */
-    private static Node getRightChild(final Node node, final int index) {
-
-        return (node == null)
-               ? null
-               : node.getRight(index);
-    }
-
-    /**
-     * get a node's left child. mind you, the node may not exist. no
-     * problem
-     *
-     * @param node the node (may be null) in question
-     * @param index KEY or VALUE
-     */
-    private static Node getLeftChild(final Node node, final int index) {
-
-        return (node == null)
-               ? null
-               : node.getLeft(index);
-    }
-
-    /**
-     * is this node its parent's left child? mind you, the node, or
-     * its parent, may not exist. no problem. if the node doesn't
-     * exist ... it's its non-existent parent's left child. If the
-     * node does exist but has no parent ... no, we're not the
-     * non-existent parent's left child. Otherwise (both the specified
-     * node AND its parent exist), check.
-     *
-     * @param node the node (may be null) in question
-     * @param index KEY or VALUE
-     */
-    private static boolean isLeftChild(final Node node, final int index) {
-
-        return (node == null)
-               ? true
-               : ((node.getParent(index) == null)
-                  ? false
-                  : (node == node.getParent(index).getLeft(index)));
-    }
-
-    /**
-     * is this node its parent's right child? mind you, the node, or
-     * its parent, may not exist. no problem. if the node doesn't
-     * exist ... it's its non-existent parent's right child. If the
-     * node does exist but has no parent ... no, we're not the
-     * non-existent parent's right child. Otherwise (both the
-     * specified node AND its parent exist), check.
-     *
-     * @param node the node (may be null) in question
-     * @param index KEY or VALUE
-     */
-    private static boolean isRightChild(final Node node, final int index) {
-
-        return (node == null)
-               ? true
-               : ((node.getParent(index) == null)
-                  ? false
-                  : (node == node.getParent(index).getRight(index)));
-    }
-
-    /**
-     * do a rotate left. standard fare in the world of balanced trees
-     *
-     * @param node the node to be rotated
-     * @param index KEY or VALUE
-     */
-    private void rotateLeft(final Node node, final int index) {
-
-        Node rightChild = node.getRight(index);
-
-        node.setRight(rightChild.getLeft(index), index);
-
-        if (rightChild.getLeft(index) != null) {
-            rightChild.getLeft(index).setParent(node, index);
-        }
-
-        rightChild.setParent(node.getParent(index), index);
-
-        if (node.getParent(index) == null) {
-
-            // node was the root ... now its right child is the root
-            rootNode[index] = rightChild;
-        } else if (node.getParent(index).getLeft(index) == node) {
-            node.getParent(index).setLeft(rightChild, index);
-        } else {
-            node.getParent(index).setRight(rightChild, index);
-        }
-
-        rightChild.setLeft(node, index);
-        node.setParent(rightChild, index);
-    }
-
-    /**
-     * do a rotate right. standard fare in the world of balanced trees
-     *
-     * @param node the node to be rotated
-     * @param index KEY or VALUE
-     */
-    private void rotateRight(final Node node, final int index) {
-
-        Node leftChild = node.getLeft(index);
-
-        node.setLeft(leftChild.getRight(index), index);
-
-        if (leftChild.getRight(index) != null) {
-            leftChild.getRight(index).setParent(node, index);
-        }
-
-        leftChild.setParent(node.getParent(index), index);
-
-        if (node.getParent(index) == null) {
-
-            // node was the root ... now its left child is the root
-            rootNode[index] = leftChild;
-        } else if (node.getParent(index).getRight(index) == node) {
-            node.getParent(index).setRight(leftChild, index);
-        } else {
-            node.getParent(index).setLeft(leftChild, index);
-        }
-
-        leftChild.setRight(node, index);
-        node.setParent(leftChild, index);
-    }
-
-    /**
-     * complicated red-black insert stuff. Based on Sun's TreeMap
-     * implementation, though it's barely recognizable any more
-     *
-     * @param insertedNode the node to be inserted
-     * @param index KEY or VALUE
-     */
-    private void doRedBlackInsert(final Node insertedNode, final int index) {
-
-        Node currentNode = insertedNode;
-
-        makeRed(currentNode, index);
-
-        while ((currentNode != null) && (currentNode != rootNode[index])
-                && (isRed(currentNode.getParent(index), index))) {
-            if (isLeftChild(getParent(currentNode, index), index)) {
-                Node y = getRightChild(getGrandParent(currentNode, index),
-                                       index);
-
-                if (isRed(y, index)) {
-                    makeBlack(getParent(currentNode, index), index);
-                    makeBlack(y, index);
-                    makeRed(getGrandParent(currentNode, index), index);
-
-                    currentNode = getGrandParent(currentNode, index);
-                } else {
-                    if (isRightChild(currentNode, index)) {
-                        currentNode = getParent(currentNode, index);
-
-                        rotateLeft(currentNode, index);
-                    }
-
-                    makeBlack(getParent(currentNode, index), index);
-                    makeRed(getGrandParent(currentNode, index), index);
-
-                    if (getGrandParent(currentNode, index) != null) {
-                        rotateRight(getGrandParent(currentNode, index),
-                                    index);
-                    }
-                }
-            } else {
-
-                // just like clause above, except swap left for right
-                Node y = getLeftChild(getGrandParent(currentNode, index),
-                                      index);
-
-                if (isRed(y, index)) {
-                    makeBlack(getParent(currentNode, index), index);
-                    makeBlack(y, index);
-                    makeRed(getGrandParent(currentNode, index), index);
-
-                    currentNode = getGrandParent(currentNode, index);
-                } else {
-                    if (isLeftChild(currentNode, index)) {
-                        currentNode = getParent(currentNode, index);
-
-                        rotateRight(currentNode, index);
-                    }
-
-                    makeBlack(getParent(currentNode, index), index);
-                    makeRed(getGrandParent(currentNode, index), index);
-
-                    if (getGrandParent(currentNode, index) != null) {
-                        rotateLeft(getGrandParent(currentNode, index), index);
-                    }
-                }
-            }
-        }
-
-        makeBlack(rootNode[index], index);
-    }
-
-    /**
-     * complicated red-black delete stuff. Based on Sun's TreeMap
-     * implementation, though it's barely recognizable any more
-     *
-     * @param deletedNode the node to be deleted
-     */
-    private void doRedBlackDelete(final Node deletedNode) {
-
-        for (int index = FIRST_INDEX; index < NUMBER_OF_INDICES; index++) {
-
-            // if deleted node has both left and children, swap with
-            // the next greater node
-            if ((deletedNode.getLeft(index) != null)
-                    && (deletedNode.getRight(index) != null)) {
-                swapPosition(nextGreater(deletedNode, index), deletedNode,
-                             index);
-            }
-
-            Node replacement = ((deletedNode.getLeft(index) != null)
-                                ? deletedNode.getLeft(index)
-                                : deletedNode.getRight(index));
-
-            if (replacement != null) {
-                replacement.setParent(deletedNode.getParent(index), index);
-
-                if (deletedNode.getParent(index) == null) {
-                    rootNode[index] = replacement;
-                } else if (deletedNode
-                           == deletedNode.getParent(index).getLeft(index)) {
-                    deletedNode.getParent(index).setLeft(replacement, index);
-                } else {
-                    deletedNode.getParent(index).setRight(replacement, index);
-                }
-
-                deletedNode.setLeft(null, index);
-                deletedNode.setRight(null, index);
-                deletedNode.setParent(null, index);
-
-                if (isBlack(deletedNode, index)) {
-                    doRedBlackDeleteFixup(replacement, index);
-                }
-            } else {
-
-                // replacement is null
-                if (deletedNode.getParent(index) == null) {
-
-                    // empty tree
-                    rootNode[index] = null;
-                } else {
-
-                    // deleted node had no children
-                    if (isBlack(deletedNode, index)) {
-                        doRedBlackDeleteFixup(deletedNode, index);
-                    }
-
-                    if (deletedNode.getParent(index) != null) {
-                        if (deletedNode
-                                == deletedNode.getParent(index)
-                                    .getLeft(index)) {
-                            deletedNode.getParent(index).setLeft(null, index);
-                        } else {
-                            deletedNode.getParent(index).setRight(null,
-                                                  index);
-                        }
-
-                        deletedNode.setParent(null, index);
-                    }
-                }
-            }
-        }
-
-        shrink();
-    }
-
-    /**
-     * complicated red-black delete stuff. Based on Sun's TreeMap
-     * implementation, though it's barely recognizable any more. This
-     * rebalances the tree (somewhat, as red-black trees are not
-     * perfectly balanced -- perfect balancing takes longer)
-     *
-     * @param replacementNode the node being replaced
-     * @param index KEY or VALUE
-     */
-    private void doRedBlackDeleteFixup(final Node replacementNode,
-                                       final int index) {
-
-        Node currentNode = replacementNode;
-
-        while ((currentNode != rootNode[index])
-                && (isBlack(currentNode, index))) {
-            if (isLeftChild(currentNode, index)) {
-                Node siblingNode =
-                    getRightChild(getParent(currentNode, index), index);
-
-                if (isRed(siblingNode, index)) {
-                    makeBlack(siblingNode, index);
-                    makeRed(getParent(currentNode, index), index);
-                    rotateLeft(getParent(currentNode, index), index);
-
-                    siblingNode = getRightChild(getParent(currentNode, index), index);
-                }
-
-                if (isBlack(getLeftChild(siblingNode, index), index)
-                        && isBlack(getRightChild(siblingNode, index),
-                                   index)) {
-                    makeRed(siblingNode, index);
-
-                    currentNode = getParent(currentNode, index);
-                } else {
-                    if (isBlack(getRightChild(siblingNode, index), index)) {
-                        makeBlack(getLeftChild(siblingNode, index), index);
-                        makeRed(siblingNode, index);
-                        rotateRight(siblingNode, index);
-
-                        siblingNode =
-                            getRightChild(getParent(currentNode, index), index);
-                    }
-
-                    copyColor(getParent(currentNode, index), siblingNode,
-                              index);
-                    makeBlack(getParent(currentNode, index), index);
-                    makeBlack(getRightChild(siblingNode, index), index);
-                    rotateLeft(getParent(currentNode, index), index);
-
-                    currentNode = rootNode[index];
-                }
-            } else {
-                Node siblingNode = getLeftChild(getParent(currentNode, index), index);
-
-                if (isRed(siblingNode, index)) {
-                    makeBlack(siblingNode, index);
-                    makeRed(getParent(currentNode, index), index);
-                    rotateRight(getParent(currentNode, index), index);
-
-                    siblingNode = getLeftChild(getParent(currentNode, index), index);
-                }
-
-                if (isBlack(getRightChild(siblingNode, index), index)
-                        && isBlack(getLeftChild(siblingNode, index), index)) {
-                    makeRed(siblingNode, index);
-
-                    currentNode = getParent(currentNode, index);
-                } else {
-                    if (isBlack(getLeftChild(siblingNode, index), index)) {
-                        makeBlack(getRightChild(siblingNode, index), index);
-                        makeRed(siblingNode, index);
-                        rotateLeft(siblingNode, index);
-
-                        siblingNode =
-                            getLeftChild(getParent(currentNode, index), index);
-                    }
-
-                    copyColor(getParent(currentNode, index), siblingNode,
-                              index);
-                    makeBlack(getParent(currentNode, index), index);
-                    makeBlack(getLeftChild(siblingNode, index), index);
-                    rotateRight(getParent(currentNode, index), index);
-
-                    currentNode = rootNode[index];
-                }
-            }
-        }
-
-        makeBlack(currentNode, index);
-    }
-
-    /**
-     * swap two nodes (except for their content), taking care of
-     * special cases where one is the other's parent ... hey, it
-     * happens.
-     *
-     * @param x one node
-     * @param y another node
-     * @param index KEY or VALUE
-     */
-    private void swapPosition(final Node x, final Node y, final int index) {
-
-        // Save initial values.
-        Node    xFormerParent     = x.getParent(index);
-        Node    xFormerLeftChild  = x.getLeft(index);
-        Node    xFormerRightChild = x.getRight(index);
-        Node    yFormerParent     = y.getParent(index);
-        Node    yFormerLeftChild  = y.getLeft(index);
-        Node    yFormerRightChild = y.getRight(index);
-        boolean xWasLeftChild     =
-            (x.getParent(index) != null)
-            && (x == x.getParent(index).getLeft(index));
-        boolean yWasLeftChild     =
-            (y.getParent(index) != null)
-            && (y == y.getParent(index).getLeft(index));
-
-        // Swap, handling special cases of one being the other's parent.
-        if (x == yFormerParent) {    // x was y's parent
-            x.setParent(y, index);
-
-            if (yWasLeftChild) {
-                y.setLeft(x, index);
-                y.setRight(xFormerRightChild, index);
-            } else {
-                y.setRight(x, index);
-                y.setLeft(xFormerLeftChild, index);
-            }
-        } else {
-            x.setParent(yFormerParent, index);
-
-            if (yFormerParent != null) {
-                if (yWasLeftChild) {
-                    yFormerParent.setLeft(x, index);
-                } else {
-                    yFormerParent.setRight(x, index);
-                }
-            }
-
-            y.setLeft(xFormerLeftChild, index);
-            y.setRight(xFormerRightChild, index);
-        }
-
-        if (y == xFormerParent) {    // y was x's parent
-            y.setParent(x, index);
-
-            if (xWasLeftChild) {
-                x.setLeft(y, index);
-                x.setRight(yFormerRightChild, index);
-            } else {
-                x.setRight(y, index);
-                x.setLeft(yFormerLeftChild, index);
-            }
-        } else {
-            y.setParent(xFormerParent, index);
-
-            if (xFormerParent != null) {
-                if (xWasLeftChild) {
-                    xFormerParent.setLeft(y, index);
-                } else {
-                    xFormerParent.setRight(y, index);
-                }
-            }
-
-            x.setLeft(yFormerLeftChild, index);
-            x.setRight(yFormerRightChild, index);
-        }
-
-        // Fix children's parent pointers
-        if (x.getLeft(index) != null) {
-            x.getLeft(index).setParent(x, index);
-        }
-
-        if (x.getRight(index) != null) {
-            x.getRight(index).setParent(x, index);
-        }
-
-        if (y.getLeft(index) != null) {
-            y.getLeft(index).setParent(y, index);
-        }
-
-        if (y.getRight(index) != null) {
-            y.getRight(index).setParent(y, index);
-        }
-
-        x.swapColors(y, index);
-
-        // Check if root changed
-        if (rootNode[index] == x) {
-            rootNode[index] = y;
-        } else if (rootNode[index] == y) {
-            rootNode[index] = x;
-        }
-    }
-
-    /**
-     * check if an object is fit to be proper input ... has to be
-     * Comparable and non-null
-     *
-     * @param o the object being checked
-     * @param index KEY or VALUE (used to put the right word in the
-     *              exception message)
-     *
-     * @throws NullPointerException if o is null
-     * @throws ClassCastException if o is not Comparable
-     */
-    private static void checkNonNullComparable(final Object o,
-                                               final int index) {
-
-        if (o == null) {
-            throw new NullPointerException(dataName[index]
-                                           + " cannot be null");
-        }
-
-        if (!(o instanceof Comparable)) {
-            throw new ClassCastException(dataName[index]
-                                         + " must be Comparable");
-        }
-    }
-
-    /**
-     * check a key for validity (non-null and implements Comparable)
-     *
-     * @param key the key to be checked
-     *
-     * @throws NullPointerException if key is null
-     * @throws ClassCastException if key is not Comparable
-     */
-    private static void checkKey(final Object key) {
-        checkNonNullComparable(key, KEY);
-    }
-
-    /**
-     * check a value for validity (non-null and implements Comparable)
-     *
-     * @param value the value to be checked
-     *
-     * @throws NullPointerException if value is null
-     * @throws ClassCastException if value is not Comparable
-     */
-    private static void checkValue(final Object value) {
-        checkNonNullComparable(value, VALUE);
-    }
-
-    /**
-     * check a key and a value for validity (non-null and implements
-     * Comparable)
-     *
-     * @param key the key to be checked
-     * @param value the value to be checked
-     *
-     * @throws NullPointerException if key or value is null
-     * @throws ClassCastException if key or value is not Comparable
-     */
-    private static void checkKeyAndValue(final Object key,
-                                         final Object value) {
-        checkKey(key);
-        checkValue(value);
-    }
-
-    /**
-     * increment the modification count -- used to check for
-     * concurrent modification of the map through the map and through
-     * an Iterator from one of its Set or Collection views
-     */
-    private void modify() {
-        modifications++;
-    }
-
-    /**
-     * bump up the size and note that the map has changed
-     */
-    private void grow() {
-
-        modify();
-
-        nodeCount++;
-    }
-
-    /**
-     * decrement the size and note that the map has changed
-     */
-    private void shrink() {
-
-        modify();
-
-        nodeCount--;
-    }
-
-    /**
-     * insert a node by its value
-     *
-     * @param newNode the node to be inserted
-     *
-     * @throws IllegalArgumentException if the node already exists
-     *                                     in the value mapping
-     */
-    private void insertValue(final Node newNode)
-            throws IllegalArgumentException {
-
-        Node node = rootNode[VALUE];
-
-        while (true) {
-            int cmp = compare(newNode.getData(VALUE), node.getData(VALUE));
-
-            if (cmp == 0) {
-                throw new IllegalArgumentException(
-                    "Cannot store a duplicate value (\""
-                    + newNode.getData(VALUE) + "\") in this Map");
-            } else if (cmp < 0) {
-                if (node.getLeft(VALUE) != null) {
-                    node = node.getLeft(VALUE);
-                } else {
-                    node.setLeft(newNode, VALUE);
-                    newNode.setParent(node, VALUE);
-                    doRedBlackInsert(newNode, VALUE);
-
-                    break;
-                }
-            } else {    // cmp > 0
-                if (node.getRight(VALUE) != null) {
-                    node = node.getRight(VALUE);
-                } else {
-                    node.setRight(newNode, VALUE);
-                    newNode.setParent(node, VALUE);
-                    doRedBlackInsert(newNode, VALUE);
-
-                    break;
-                }
-            }
-        }
-    }
-
-    /* ********** START implementation of Map ********** */
-
-    /**
-     * Returns the number of key-value mappings in this map. If the
-     * map contains more than Integer.MAXVALUE elements, returns
-     * Integer.MAXVALUE.
-     *
-     * @return the number of key-value mappings in this map.
-     */
-    public int size() {
-        return nodeCount;
-    }
-
-    /**
-     * Returns true if this map contains a mapping for the specified
-     * key.
-     *
-     * @param key key whose presence in this map is to be tested.
-     *
-     * @return true if this map contains a mapping for the specified
-     *         key.
-     *
-     * @throws ClassCastException if the key is of an inappropriate
-     *                               type for this map.
-     * @throws NullPointerException if the key is null
-     */
-    public boolean containsKey(final Object key)
-            throws ClassCastException, NullPointerException {
-
-        checkKey(key);
-
-        return lookup((Comparable) key, KEY) != null;
-    }
-
-    /**
-     * Returns true if this map maps one or more keys to the
-     * specified value.
-     *
-     * @param value value whose presence in this map is to be tested.
-     *
-     * @return true if this map maps one or more keys to the specified
-     *         value.
-     */
-    public boolean containsValue(final Object value) {
-
-        checkValue(value);
-
-        return lookup((Comparable) value, VALUE) != null;
-    }
-
-    /**
-     * Returns the value to which this map maps the specified
-     * key. Returns null if the map contains no mapping for this key.
-     *
-     * @param key key whose associated value is to be returned.
-     *
-     * @return the value to which this map maps the specified key, or
-     *         null if the map contains no mapping for this key.
-     *
-     * @throws ClassCastException if the key is of an inappropriate
-     *                               type for this map.
-     * @throws NullPointerException if the key is null
-     */
-    public Object get(final Object key)
-            throws ClassCastException, NullPointerException {
-        return doGet((Comparable) key, KEY);
-    }
-
-    /**
-     * Associates the specified value with the specified key in this
-     * map.
-     *
-     * @param key key with which the specified value is to be
-     *            associated.
-     * @param value value to be associated with the specified key.
-     *
-     * @return null
-     *
-     * @throws ClassCastException if the class of the specified key
-     *                               or value prevents it from being
-     *                               stored in this map.
-     * @throws NullPointerException if the specified key or value
-     *                                 is null
-     * @throws IllegalArgumentException if the key duplicates an
-     *                                     existing key, or if the
-     *                                     value duplicates an
-     *                                     existing value
-     */
-    public Object put(final Object key, final Object value)
-            throws ClassCastException, NullPointerException,
-                   IllegalArgumentException {
-
-        checkKeyAndValue(key, value);
-
-        Node node = rootNode[KEY];
-
-        if (node == null) {
-            Node root = new Node((Comparable) key, (Comparable) value);
-
-            rootNode[KEY]   = root;
-            rootNode[VALUE] = root;
-
-            grow();
-        } else {
-            while (true) {
-                int cmp = compare((Comparable) key, node.getData(KEY));
-
-                if (cmp == 0) {
-                    throw new IllegalArgumentException(
-                        "Cannot store a duplicate key (\"" + key
-                        + "\") in this Map");
-                } else if (cmp < 0) {
-                    if (node.getLeft(KEY) != null) {
-                        node = node.getLeft(KEY);
-                    } else {
-                        Node newNode = new Node((Comparable) key,
-                                                (Comparable) value);
-
-                        insertValue(newNode);
-                        node.setLeft(newNode, KEY);
-                        newNode.setParent(node, KEY);
-                        doRedBlackInsert(newNode, KEY);
-                        grow();
-
-                        break;
-                    }
-                } else {    // cmp > 0
-                    if (node.getRight(KEY) != null) {
-                        node = node.getRight(KEY);
-                    } else {
-                        Node newNode = new Node((Comparable) key,
-                                                (Comparable) value);
-
-                        insertValue(newNode);
-                        node.setRight(newNode, KEY);
-                        newNode.setParent(node, KEY);
-                        doRedBlackInsert(newNode, KEY);
-                        grow();
-
-                        break;
-                    }
-                }
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Removes the mapping for this key from this map if present
-     *
-     * @param key key whose mapping is to be removed from the map.
-     *
-     * @return previous value associated with specified key, or null
-     *         if there was no mapping for key.
-     */
-    public Object remove(final Object key) {
-        return doRemove((Comparable) key, KEY);
-    }
-
-    /**
-     * Removes all mappings from this map
-     */
-    public void clear() {
-
-        modify();
-
-        nodeCount   = 0;
-        rootNode[KEY]   = null;
-        rootNode[VALUE] = null;
-    }
-
-    /**
-     * Returns a set view of the keys contained in this map.  The set
-     * is backed by the map, so changes to the map are reflected in
-     * the set, and vice-versa. If the map is modified while an
-     * iteration over the set is in progress, the results of the
-     * iteration are undefined. The set supports element removal,
-     * which removes the corresponding mapping from the map, via the
-     * Iterator.remove, Set.remove, removeAll, retainAll, and clear
-     * operations.  It does not support the add or addAll operations.
-     *
-     * @return a set view of the keys contained in this map.
-     */
-    public Set keySet() {
-
-        if (setOfKeys[KEY] == null) {
-            setOfKeys[KEY] = new AbstractSet() {
-
-                public Iterator iterator() {
-
-                    return new DoubleOrderedMapIterator(KEY) {
-
-                        protected Object doGetNext() {
-                            return lastReturnedNode.getData(KEY);
-                        }
-                    };
-                }
-
-                public int size() {
-                    return DoubleOrderedMap.this.size();
-                }
-
-                public boolean contains(Object o) {
-                    return containsKey(o);
-                }
-
-                public boolean remove(Object o) {
-
-                    int oldNodeCount = nodeCount;
-
-                    DoubleOrderedMap.this.remove(o);
-
-                    return nodeCount != oldNodeCount;
-                }
-
-                public void clear() {
-                    DoubleOrderedMap.this.clear();
-                }
-            };
-        }
-
-        return setOfKeys[KEY];
-    }
-
-    /**
-     * Returns a collection view of the values contained in this
-     * map. The collection is backed by the map, so changes to the map
-     * are reflected in the collection, and vice-versa. If the map is
-     * modified while an iteration over the collection is in progress,
-     * the results of the iteration are undefined. The collection
-     * supports element removal, which removes the corresponding
-     * mapping from the map, via the Iterator.remove,
-     * Collection.remove, removeAll, retainAll and clear operations.
-     * It does not support the add or addAll operations.
-     *
-     * @return a collection view of the values contained in this map.
-     */
-    public Collection values() {
-
-        if (collectionOfValues[KEY] == null) {
-            collectionOfValues[KEY] = new AbstractCollection() {
-
-                public Iterator iterator() {
-
-                    return new DoubleOrderedMapIterator(KEY) {
-
-                        protected Object doGetNext() {
-                            return lastReturnedNode.getData(VALUE);
-                        }
-                    };
-                }
-
-                public int size() {
-                    return DoubleOrderedMap.this.size();
-                }
-
-                public boolean contains(Object o) {
-                    return containsValue(o);
-                }
-
-                public boolean remove(Object o) {
-
-                    int oldNodeCount = nodeCount;
-
-                    removeValue(o);
-
-                    return nodeCount != oldNodeCount;
-                }
-
-                public boolean removeAll(Collection c) {
-
-                    boolean  modified = false;
-                    Iterator iter     = c.iterator();
-
-                    while (iter.hasNext()) {
-                        if (removeValue(iter.next()) != null) {
-                            modified = true;
-                        }
-                    }
-
-                    return modified;
-                }
-
-                public void clear() {
-                    DoubleOrderedMap.this.clear();
-                }
-            };
-        }
-
-        return collectionOfValues[KEY];
-    }
-
-    /**
-     * Returns a set view of the mappings contained in this map. Each
-     * element in the returned set is a Map.Entry. The set is backed
-     * by the map, so changes to the map are reflected in the set, and
-     * vice-versa.  If the map is modified while an iteration over the
-     * set is in progress, the results of the iteration are
-     * undefined.
-     * <p>
-     * The set supports element removal, which removes the corresponding
-     * mapping from the map, via the Iterator.remove, Set.remove, removeAll,
-     * retainAll and clear operations.
-     * It does not support the add or addAll operations.
-     * The setValue method is not supported on the Map Entry.
-     *
-     * @return a set view of the mappings contained in this map.
-     */
-    public Set entrySet() {
-
-        if (setOfEntries[KEY] == null) {
-            setOfEntries[KEY] = new AbstractSet() {
-
-                public Iterator iterator() {
-
-                    return new DoubleOrderedMapIterator(KEY) {
-
-                        protected Object doGetNext() {
-                            return lastReturnedNode;
-                        }
-                    };
-                }
-
-                public boolean contains(Object o) {
-
-                    if (!(o instanceof Map.Entry)) {
-                        return false;
-                    }
-
-                    Map.Entry entry = (Map.Entry) o;
-                    Object    value = entry.getValue();
-                    Node      node  = lookup((Comparable) entry.getKey(),
-                                             KEY);
-
-                    return (node != null)
-                           && node.getData(VALUE).equals(value);
-                }
-
-                public boolean remove(Object o) {
-
-                    if (!(o instanceof Map.Entry)) {
-                        return false;
-                    }
-
-                    Map.Entry entry = (Map.Entry) o;
-                    Object    value = entry.getValue();
-                    Node      node  = lookup((Comparable) entry.getKey(),
-                                             KEY);
-
-                    if ((node != null) && node.getData(VALUE).equals(value)) {
-                        doRedBlackDelete(node);
-
-                        return true;
-                    }
-
-                    return false;
-                }
-
-                public int size() {
-                    return DoubleOrderedMap.this.size();
-                }
-
-                public void clear() {
-                    DoubleOrderedMap.this.clear();
-                }
-            };
-        }
-
-        return setOfEntries[KEY];
-    }
-
-    /* **********  END  implementation of Map ********** */
-    private abstract class DoubleOrderedMapIterator implements Iterator {
-
-        private int    expectedModifications;
-        protected Node lastReturnedNode;
-        private Node   nextNode;
-        private int    iteratorType;
-
-        /**
-         * Constructor
-         *
-         * @param type
-         */
-        DoubleOrderedMapIterator(final int type) {
-
-            iteratorType          = type;
-            expectedModifications = DoubleOrderedMap.this.modifications;
-            lastReturnedNode      = null;
-            nextNode              = leastNode(rootNode[iteratorType],
-                                              iteratorType);
-        }
-
-        /**
-         * @return 'next', whatever that means for a given kind of
-         *         DoubleOrderedMapIterator
-         */
-        protected abstract Object doGetNext();
-
-        /* ********** START implementation of Iterator ********** */
-
-        /**
-         * @return true if the iterator has more elements.
-         */
-        public final boolean hasNext() {
-            return nextNode != null;
-        }
-
-        /**
-         * @return the next element in the iteration.
-         *
-         * @throws NoSuchElementException if iteration has no more
-         *                                   elements.
-         * @throws ConcurrentModificationException if the
-         *                                            DoubleOrderedMap is
-         *                                            modified behind
-         *                                            the iterator's
-         *                                            back
-         */
-        public final Object next()
-                throws NoSuchElementException,
-                       ConcurrentModificationException {
-
-            if (nextNode == null) {
-                throw new NoSuchElementException();
-            }
-
-            if (modifications != expectedModifications) {
-                throw new ConcurrentModificationException();
-            }
-
-            lastReturnedNode = nextNode;
-            nextNode         = nextGreater(nextNode, iteratorType);
-
-            return doGetNext();
-        }
-
-        /**
-         * Removes from the underlying collection the last element
-         * returned by the iterator. This method can be called only
-         * once per call to next. The behavior of an iterator is
-         * unspecified if the underlying collection is modified while
-         * the iteration is in progress in any way other than by
-         * calling this method.
-         *
-         * @throws IllegalStateException if the next method has not
-         *                                  yet been called, or the
-         *                                  remove method has already
-         *                                  been called after the last
-         *                                  call to the next method.
-         * @throws ConcurrentModificationException if the
-         *                                            DoubleOrderedMap is
-         *                                            modified behind
-         *                                            the iterator's
-         *                                            back
-         */
-        public final void remove()
-                throws IllegalStateException,
-                       ConcurrentModificationException {
-
-            if (lastReturnedNode == null) {
-                throw new IllegalStateException();
-            }
-
-            if (modifications != expectedModifications) {
-                throw new ConcurrentModificationException();
-            }
-
-            doRedBlackDelete(lastReturnedNode);
-
-            expectedModifications++;
-
-            lastReturnedNode = null;
-        }
-
-        /* **********  END  implementation of Iterator ********** */
-    }    // end private abstract class DoubleOrderedMapIterator
-
-    // final for performance
-    private static final class Node implements Map.Entry, KeyValue {
-
-        private Comparable[] data;
-        private Node[]       leftNode;
-        private Node[]       rightNode;
-        private Node[]       parentNode;
-        private boolean[]    blackColor;
-        private int          hashcodeValue;
-        private boolean      calculatedHashCode;
-
-        /**
-         * Make a new cell with given key and value, and with null
-         * links, and black (true) colors.
-         *
-         * @param key
-         * @param value
-         */
-        Node(final Comparable key, final Comparable value) {
-
-            data               = new Comparable[]{ key, value };
-            leftNode           = new Node[]{ null, null };
-            rightNode          = new Node[]{ null, null };
-            parentNode         = new Node[]{ null, null };
-            blackColor         = new boolean[]{ true, true };
-            calculatedHashCode = false;
-        }
-
-        /**
-         * get the specified data
-         *
-         * @param index KEY or VALUE
-         *
-         * @return the key or value
-         */
-        private Comparable getData(final int index) {
-            return data[index];
-        }
-
-        /**
-         * Set this node's left node
-         *
-         * @param node the new left node
-         * @param index KEY or VALUE
-         */
-        private void setLeft(final Node node, final int index) {
-            leftNode[index] = node;
-        }
-
-        /**
-         * get the left node
-         *
-         * @param index KEY or VALUE
-         *
-         * @return the left node -- may be null
-         */
-        private Node getLeft(final int index) {
-            return leftNode[index];
-        }
-
-        /**
-         * Set this node's right node
-         *
-         * @param node the new right node
-         * @param index KEY or VALUE
-         */
-        private void setRight(final Node node, final int index) {
-            rightNode[index] = node;
-        }
-
-        /**
-         * get the right node
-         *
-         * @param index KEY or VALUE
-         *
-         * @return the right node -- may be null
-         */
-        private Node getRight(final int index) {
-            return rightNode[index];
-        }
-
-        /**
-         * Set this node's parent node
-         *
-         * @param node the new parent node
-         * @param index KEY or VALUE
-         */
-        private void setParent(final Node node, final int index) {
-            parentNode[index] = node;
-        }
-
-        /**
-         * get the parent node
-         *
-         * @param index KEY or VALUE
-         *
-         * @return the parent node -- may be null
-         */
-        private Node getParent(final int index) {
-            return parentNode[index];
-        }
-
-        /**
-         * exchange colors with another node
-         *
-         * @param node the node to swap with
-         * @param index KEY or VALUE
-         */
-        private void swapColors(final Node node, final int index) {
-
-            // Swap colors -- old hacker's trick
-            blackColor[index]      ^= node.blackColor[index];
-            node.blackColor[index] ^= blackColor[index];
-            blackColor[index]      ^= node.blackColor[index];
-        }
-
-        /**
-         * is this node black?
-         *
-         * @param index KEY or VALUE
-         *
-         * @return true if black (which is represented as a true boolean)
-         */
-        private boolean isBlack(final int index) {
-            return blackColor[index];
-        }
-
-        /**
-         * is this node red?
-         *
-         * @param index KEY or VALUE
-         *
-         * @return true if non-black
-         */
-        private boolean isRed(final int index) {
-            return !blackColor[index];
-        }
-
-        /**
-         * make this node black
-         *
-         * @param index KEY or VALUE
-         */
-        private void setBlack(final int index) {
-            blackColor[index] = true;
-        }
-
-        /**
-         * make this node red
-         *
-         * @param index KEY or VALUE
-         */
-        private void setRed(final int index) {
-            blackColor[index] = false;
-        }
-
-        /**
-         * make this node the same color as another
-         *
-         * @param node the node whose color we're adopting
-         * @param index KEY or VALUE
-         */
-        private void copyColor(final Node node, final int index) {
-            blackColor[index] = node.blackColor[index];
-        }
-
-        /* ********** START implementation of Map.Entry ********** */
-
-        /**
-         * @return the key corresponding to this entry.
-         */
-        public Object getKey() {
-            return data[KEY];
-        }
-
-        /**
-         * @return the value corresponding to this entry.
-         */
-        public Object getValue() {
-            return data[VALUE];
-        }
-
-        /**
-         * Optional operation that is not permitted in this
-         * implementation
-         *
-         * @param ignored
-         *
-         * @return does not return
-         *
-         * @throws UnsupportedOperationException
-         */
-        public Object setValue(Object ignored)
-                throws UnsupportedOperationException {
-            throw new UnsupportedOperationException(
-                "Map.Entry.setValue is not supported");
-        }
-
-        /**
-         * Compares the specified object with this entry for equality.
-         * Returns true if the given object is also a map entry and
-         * the two entries represent the same mapping.
-         *
-         * @param o object to be compared for equality with this map
-         *          entry.
-         * @return true if the specified object is equal to this map
-         *         entry.
-         */
-        public boolean equals(Object o) {
-
-            if (this == o) {
-                return true;
-            }
-
-            if (!(o instanceof Map.Entry)) {
-                return false;
-            }
-
-            Map.Entry e = (Map.Entry) o;
-
-            return data[KEY].equals(e.getKey())
-                   && data[VALUE].equals(e.getValue());
-        }
-
-        /**
-         * @return the hash code value for this map entry.
-         */
-        public int hashCode() {
-
-            if (!calculatedHashCode) {
-                hashcodeValue      = data[KEY].hashCode()
-                                     ^ data[VALUE].hashCode();
-                calculatedHashCode = true;
-            }
-
-            return hashcodeValue;
-        }
-
-        /* **********  END  implementation of Map.Entry ********** */
-    }
-}    // end public class DoubleOrderedMap
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/EnumerationUtils.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/EnumerationUtils.java
deleted file mode 100755
index c5d60c9..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/EnumerationUtils.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.Enumeration;
-import java.util.List;
-
-import org.apache.commons.collections.iterators.EnumerationIterator;
-
-/**
- * Provides utility methods for {@link Enumeration} instances.
- * 
- * @since Commons Collections 3.0
- * @version $Id: EnumerationUtils.java,v 1.1 2009/05/27 22:16:18 mparker Exp $
- * 
- * @author <a href="mailto:ggregory@seagullsw.com">Gary Gregory</a>
- */
-public class EnumerationUtils {
-
-    /**
-     * EnumerationUtils is not normally instantiated.
-     */
-    public EnumerationUtils() {
-        // no init.
-    }
-    
-    /**
-     * Creates a list based on an enumeration.
-     * 
-     * <p>As the enumeration is traversed, an ArrayList of its values is
-     * created. The new list is returned.</p>
-     *
-     * @param enumeration  the enumeration to traverse, which should not be <code>null</code>.
-     * @throws NullPointerException if the enumeration parameter is <code>null</code>.
-     */
-    public static List toList(Enumeration enumeration) {
-        return IteratorUtils.toList(new EnumerationIterator(enumeration));
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ExtendedProperties.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ExtendedProperties.java
deleted file mode 100755
index daa7dff..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ExtendedProperties.java
+++ /dev/null
@@ -1,1685 +0,0 @@
-/*
- *  Copyright 2001-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.commons.collections;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.LineNumberReader;
-import java.io.OutputStream;
-import java.io.PrintWriter;
-import java.io.Reader;
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.Properties;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-/**
- * This class extends normal Java properties by adding the possibility
- * to use the same key many times concatenating the value strings
- * instead of overwriting them.
- * <p>
- * <b>Please consider using the <code>PropertiesConfiguration</code> class in
- * Commons-Configuration as soon as it is released.</b>
- * <p>
- * The Extended Properties syntax is explained here:
- *
- * <ul>
- *  <li>
- *   Each property has the syntax <code>key = value</code>
- *  </li>
- *  <li>
- *   The <i>key</i> may use any character but the equal sign '='.
- *  </li>
- *  <li>
- *   <i>value</i> may be separated on different lines if a backslash
- *   is placed at the end of the line that continues below.
- *  </li>
- *  <li>
- *   If <i>value</i> is a list of strings, each token is separated
- *   by a comma ','.
- *  </li>
- *  <li>
- *   Commas in each token are escaped placing a backslash right before
- *   the comma.
- *  </li>
- *  <li>
- *   Backslashes are escaped by using two consecutive backslashes i.e. \\
- *  </li>
- *  <li>
- *   If a <i>key</i> is used more than once, the values are appended
- *   as if they were on the same line separated with commas.
- *  </li>
- *  <li>
- *   Blank lines and lines starting with character '#' are skipped.
- *  </li>
- *  <li>
- *   If a property is named "include" (or whatever is defined by
- *   setInclude() and getInclude() and the value of that property is
- *   the full path to a file on disk, that file will be included into
- *   the ConfigurationsRepository. You can also pull in files relative
- *   to the parent configuration file. So if you have something
- *   like the following:
- *
- *   include = additional.properties
- *
- *   Then "additional.properties" is expected to be in the same
- *   directory as the parent configuration file.
- * 
- *   Duplicate name values will be replaced, so be careful.
- *
- *  </li>
- * </ul>
- *
- * <p>Here is an example of a valid extended properties file:
- *
- * <p><pre>
- *      # lines starting with # are comments
- *
- *      # This is the simplest property
- *      key = value
- *
- *      # A long property may be separated on multiple lines
- *      longvalue = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \
- *                  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
- *
- *      # This is a property with many tokens
- *      tokens_on_a_line = first token, second token
- *
- *      # This sequence generates exactly the same result
- *      tokens_on_multiple_lines = first token
- *      tokens_on_multiple_lines = second token
- *
- *      # commas may be escaped in tokens
- *      commas.escaped = Hi\, what'up?
- * </pre>
- *
- * <p><b>NOTE</b>: this class has <b>not</b> been written for
- * performance nor low memory usage.  In fact, it's way slower than it
- * could be and generates too much memory garbage.  But since
- * performance is not an issue during intialization (and there is not
- * much time to improve it), I wrote it this way.  If you don't like
- * it, go ahead and tune it up!
- *
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
- * @author <a href="mailto:jon@latchkey.com">Jon S. Stevens</a>
- * @author <a href="mailto:daveb@miceda-data">Dave Bryson</a>
- * @author <a href="mailto:jvanzyl@periapt.com">Jason van Zyl</a>
- * @author <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
- * @author <a href="mailto:leon@opticode.co.za">Leon Messerschmidt</a>
- * @author <a href="mailto:kjohnson@transparent.com">Kent Johnson</a>
- * @author <a href="mailto:dlr@finemaltcoding.com">Daniel Rall</a>
- * @author <a href="mailto:ipriha@surfeu.fi">Ilkka Priha</a>
- * @author Janek Bogucki
- * @author Mohan Kishore
- * @author Stephen Colebourne
- * @author Shinobu Kawai
- * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
- */
-public class ExtendedProperties extends Hashtable {
-    
-    /**
-     * Default configurations repository.
-     */
-    private ExtendedProperties defaults;
-
-    /**
-     * The file connected to this repository (holding comments and
-     * such).
-     *
-     * @serial
-     */
-    protected String file;
-
-    /**
-     * Base path of the configuration file used to create
-     * this ExtendedProperties object.
-     */
-    protected String basePath;
-
-    /**
-     * File separator.
-     */
-    protected String fileSeparator = System.getProperty("file.separator");
-
-    /**
-     * Has this configuration been intialized.
-     */
-    protected boolean isInitialized = false;
-
-    /**
-     * This is the name of the property that can point to other
-     * properties file for including other properties files.
-     */
-    protected static String include = "include";
-
-    /**
-     * These are the keys in the order they listed
-     * in the configuration file. This is useful when
-     * you wish to perform operations with configuration
-     * information in a particular order.
-     */
-    protected ArrayList keysAsListed = new ArrayList();
-
-    protected final static String START_TOKEN="${";
-    protected final static String END_TOKEN="}";
-
-
-    /**
-     * Interpolate key names to handle ${key} stuff
-     *
-     * @param base string to interpolate
-     * @return returns the key name with the ${key} substituted
-     */
-    protected String interpolate(String base) {
-        // COPIED from [configuration] 2003-12-29
-        return (interpolateHelper(base, null));
-    }
-
-    /**
-     * Recursive handler for multiple levels of interpolation.
-     *
-     * When called the first time, priorVariables should be null.
-     *
-     * @param base string with the ${key} variables
-     * @param priorVariables serves two purposes: to allow checking for
-     * loops, and creating a meaningful exception message should a loop
-     * occur.  It's 0'th element will be set to the value of base from
-     * the first call.  All subsequent interpolated variables are added
-     * afterward.
-     *
-     * @return the string with the interpolation taken care of
-     */
-    protected String interpolateHelper(String base, List priorVariables) {
-        // COPIED from [configuration] 2003-12-29
-        if (base == null) {
-            return null;
-        }
-
-        // on the first call initialize priorVariables
-        // and add base as the first element
-        if (priorVariables == null) {
-            priorVariables = new ArrayList();
-            priorVariables.add(base);
-        }
-
-        int begin = -1;
-        int end = -1;
-        int prec = 0 - END_TOKEN.length();
-        String variable = null;
-        StringBuffer result = new StringBuffer();
-
-        // FIXME: we should probably allow the escaping of the start token
-        while (((begin = base.indexOf(START_TOKEN, prec + END_TOKEN.length())) > -1)
-            && ((end = base.indexOf(END_TOKEN, begin)) > -1)) {
-            result.append(base.substring(prec + END_TOKEN.length(), begin));
-            variable = base.substring(begin + START_TOKEN.length(), end);
-
-            // if we've got a loop, create a useful exception message and throw
-            if (priorVariables.contains(variable)) {
-                String initialBase = priorVariables.remove(0).toString();
-                priorVariables.add(variable);
-                StringBuffer priorVariableSb = new StringBuffer();
-
-                // create a nice trace of interpolated variables like so:
-                // var1->var2->var3
-                for (Iterator it = priorVariables.iterator(); it.hasNext();) {
-                    priorVariableSb.append(it.next());
-                    if (it.hasNext()) {
-                        priorVariableSb.append("->");
-                    }
-                }
-
-                throw new IllegalStateException(
-                    "infinite loop in property interpolation of " + initialBase + ": " + priorVariableSb.toString());
-            }
-            // otherwise, add this variable to the interpolation list.
-            else {
-                priorVariables.add(variable);
-            }
-
-            //QUESTION: getProperty or getPropertyDirect
-            Object value = getProperty(variable);
-            if (value != null) {
-                result.append(interpolateHelper(value.toString(), priorVariables));
-
-                // pop the interpolated variable off the stack
-                // this maintains priorVariables correctness for
-                // properties with multiple interpolations, e.g.
-                // prop.name=${some.other.prop1}/blahblah/${some.other.prop2}
-                priorVariables.remove(priorVariables.size() - 1);
-            } else if (defaults != null && defaults.getString(variable, null) != null) {
-                result.append(defaults.getString(variable));
-            } else {
-                //variable not defined - so put it back in the value
-                result.append(START_TOKEN).append(variable).append(END_TOKEN);
-            }
-            prec = end;
-        }
-        result.append(base.substring(prec + END_TOKEN.length(), base.length()));
-
-        return result.toString();
-    }
-    
-    /**
-     * Inserts a backslash before every comma and backslash. 
-     */
-    private static String escape(String s) {
-        StringBuffer buf = new StringBuffer(s);
-        for (int i = 0; i < buf.length(); i++) {
-            char c = buf.charAt(i);
-            if (c == ',' || c == '\\') {
-                buf.insert(i, '\\');
-                i++;
-            }
-        }
-        return buf.toString();
-    }
-    
-    /**
-     * Removes a backslash from every pair of backslashes. 
-     */
-    private static String unescape(String s) {
-        StringBuffer buf = new StringBuffer(s);
-        for (int i = 0; i < buf.length() - 1; i++) {
-            char c1 = buf.charAt(i);
-            char c2 = buf.charAt(i + 1);
-            if (c1 == '\\' && c2 == '\\') {
-                buf.deleteCharAt(i);
-            }
-        }
-        return buf.toString();
-    }
-
-    /**
-     * Counts the number of successive times 'ch' appears in the
-     * 'line' before the position indicated by the 'index'.
-     */
-    private static int countPreceding(String line, int index, char ch) {
-        int i;
-        for (i = index - 1; i >= 0; i--) {
-            if (line.charAt(i) != ch) {
-                break;
-            }
-        }
-        return index - 1 - i;
-    }
-
-    /**
-     * Checks if the line ends with odd number of backslashes 
-     */
-    private static boolean endsWithSlash(String line) {
-        if (!line.endsWith("\\")) {
-            return false;
-        }
-        return (countPreceding(line, line.length() - 1, '\\') % 2 == 0);
-    }
-
-    /**
-     * This class is used to read properties lines.  These lines do
-     * not terminate with new-line chars but rather when there is no
-     * backslash sign a the end of the line.  This is used to
-     * concatenate multiple lines for readability.
-     */
-    static class PropertiesReader extends LineNumberReader {
-        /**
-         * Constructor.
-         *
-         * @param reader A Reader.
-         */
-        public PropertiesReader(Reader reader) {
-            super(reader);
-        }
-
-        /**
-         * Read a property.
-         *
-         * @return a String property
-         * @throws IOException if there is difficulty reading the source.
-         */
-        public String readProperty() throws IOException {
-            StringBuffer buffer = new StringBuffer();
-            String line = readLine();
-            while (line != null) {
-                line = line.trim();
-                if ((line.length() != 0) && (line.charAt(0) != '#')) {
-                    if (endsWithSlash(line)) {
-                        line = line.substring(0, line.length() - 1);
-                        buffer.append(line);
-                    } else {
-                        buffer.append(line);
-                        return buffer.toString();  // normal method end
-                    }
-                }
-                line = readLine();
-            }
-            return null;  // EOF reached
-        }
-    }
-
-    /**
-     * This class divides into tokens a property value.  Token
-     * separator is "," but commas into the property value are escaped
-     * using the backslash in front.
-     */
-    static class PropertiesTokenizer extends StringTokenizer {
-        /**
-         * The property delimiter used while parsing (a comma).
-         */
-        static final String DELIMITER = ",";
-
-        /**
-         * Constructor.
-         *
-         * @param string A String.
-         */
-        public PropertiesTokenizer(String string) {
-            super(string, DELIMITER);
-        }
-
-        /**
-         * Check whether the object has more tokens.
-         *
-         * @return True if the object has more tokens.
-         */
-        public boolean hasMoreTokens() {
-            return super.hasMoreTokens();
-        }
-
-        /**
-         * Get next token.
-         *
-         * @return A String.
-         */
-        public String nextToken() {
-            StringBuffer buffer = new StringBuffer();
-
-            while (hasMoreTokens()) {
-                String token = super.nextToken();
-                if (endsWithSlash(token)) {
-                    buffer.append(token.substring(0, token.length() - 1));
-                    buffer.append(DELIMITER);
-                } else {
-                    buffer.append(token);
-                    break;
-                }
-            }
-
-            return buffer.toString().trim();
-        }
-    }
-
-    /**
-     * Creates an empty extended properties object.
-     */
-    public ExtendedProperties() {
-        super();
-    }
-
-    /**
-     * Creates and loads the extended properties from the specified file.
-     *
-     * @param file  the filename to load
-     * @throws IOException if a file error occurs
-     */
-    public ExtendedProperties(String file) throws IOException {
-        this(file, null);
-    }
-
-    /**
-     * Creates and loads the extended properties from the specified file.
-     *
-     * @param file  the filename to load
-     * @param defaultFile  a second filename to load default values from
-     * @throws IOException if a file error occurs
-     */
-    public ExtendedProperties(String file, String defaultFile) throws IOException {
-        this.file = file;
-
-        basePath = new File(file).getAbsolutePath();
-        basePath = basePath.substring(0, basePath.lastIndexOf(fileSeparator) + 1);
-
-        FileInputStream in = null;
-        try {
-            in = new FileInputStream(file);
-            this.load(in);
-        } finally {
-            try {
-                if (in != null) {
-                    in.close();
-                }
-            } catch (IOException ex) {}
-        }
-
-        if (defaultFile != null) {
-            defaults = new ExtendedProperties(defaultFile);
-        }
-    }
-
-    /**
-     * Indicate to client code whether property
-     * resources have been initialized or not.
-     */
-    public boolean isInitialized() {
-        return isInitialized;
-    }
-
-    /**
-     * Gets the property value for including other properties files.
-     * By default it is "include".
-     *
-     * @return A String.
-     */
-    public String getInclude() {
-        return include;
-    }
-
-    /**
-     * Sets the property value for including other properties files.
-     * By default it is "include".
-     *
-     * @param inc A String.
-     */
-    public void setInclude(String inc) {
-        include = inc;
-    }
-
-    /**
-     * Load the properties from the given input stream.
-     *
-     * @param input  the InputStream to load from
-     * @throws IOException if an IO error occurs
-     */
-    public void load(InputStream input) throws IOException {
-        load(input, null);
-    }
-
-    /**
-     * Load the properties from the given input stream
-     * and using the specified encoding.
-     *
-     * @param input  the InputStream to load from
-     * @param enc  the encoding to use
-     * @throws IOException if an IO error occurs
-     */
-    public synchronized void load(InputStream input, String enc) throws IOException {
-        PropertiesReader reader = null;
-        if (enc != null) {
-            try {
-                reader = new PropertiesReader(new InputStreamReader(input, enc));
-                
-            } catch (UnsupportedEncodingException ex) {
-                // Another try coming up....
-            }
-        }
-        
-        if (reader == null) {
-            try {
-                reader = new PropertiesReader(new InputStreamReader(input, "8859_1"));
-                
-            } catch (UnsupportedEncodingException ex) {
-                // ISO8859-1 support is required on java platforms but....
-                // If it's not supported, use the system default encoding
-                reader = new PropertiesReader(new InputStreamReader(input));
-            }
-        }
-
-        try {
-            while (true) {
-                String line = reader.readProperty();
-                if (line == null) {
-                    return;  // EOF
-                }
-                int equalSign = line.indexOf('=');
-
-                if (equalSign > 0) {
-                    String key = line.substring(0, equalSign).trim();
-                    String value = line.substring(equalSign + 1).trim();
-
-                    // Configure produces lines like this ... just ignore them
-                    if ("".equals(value)) {
-                        continue;
-                    }
-
-                    if (getInclude() != null && key.equalsIgnoreCase(getInclude())) {
-                        // Recursively load properties files.
-                        File file = null;
-
-                        if (value.startsWith(fileSeparator)) {
-                            // We have an absolute path so we'll use this
-                            file = new File(value);
-                            
-                        } else {
-                            // We have a relative path, and we have two 
-                            // possible forms here. If we have the "./" form
-                            // then just strip that off first before continuing.
-                            if (value.startsWith("." + fileSeparator)) {
-                                value = value.substring(2);
-                            }
-
-                            file = new File(basePath + value);
-                        }
-
-                        if (file != null && file.exists() && file.canRead()) {
-                            load(new FileInputStream(file));
-                        }
-                    } else {
-                        addProperty(key, value);
-                    }
-                }
-            }
-        } finally {
-            // Loading is initializing
-            isInitialized = true;
-        }
-    }
-
-    /**
-     * Gets a property from the configuration.
-     *
-     * @param key property to retrieve
-     * @return value as object. Will return user value if exists,
-     *        if not then default value if exists, otherwise null
-     */
-    public Object getProperty(String key) {
-        // first, try to get from the 'user value' store
-        Object obj = this.get(key);
-
-        if (obj == null) {
-            // if there isn't a value there, get it from the
-            // defaults if we have them
-            if (defaults != null) {
-                obj = defaults.get(key);
-            }
-        }
-
-        return obj;
-    }
-    
-    /**
-     * Add a property to the configuration. If it already
-     * exists then the value stated here will be added
-     * to the configuration entry. For example, if
-     *
-     * <code>resource.loader = file</code>
-     *
-     * is already present in the configuration and you
-     *
-     * <code>addProperty("resource.loader", "classpath")</code>
-     *
-     * Then you will end up with a Vector like the
-     * following:
-     *
-     * <code>["file", "classpath"]</code>
-     *
-     * @param key  the key to add
-     * @param value  the value to add
-     */
-    public void addProperty(String key, Object value) {
-        if (value instanceof String) {
-            String str = (String) value;
-            if (str.indexOf(PropertiesTokenizer.DELIMITER) > 0) {
-                // token contains commas, so must be split apart then added
-                PropertiesTokenizer tokenizer = new PropertiesTokenizer(str);
-                while (tokenizer.hasMoreTokens()) {
-                    String token = tokenizer.nextToken();
-                    addPropertyInternal(key, unescape(token));
-                }
-            } else {
-                // token contains no commas, so can be simply added
-                addPropertyInternal(key, unescape(str));
-            }
-        } else {
-            addPropertyInternal(key, value);
-        }
-
-        // Adding a property connotes initialization
-        isInitialized = true;
-    }
-
-    /**
-     * Adds a key/value pair to the map.  This routine does
-     * no magic morphing.  It ensures the keylist is maintained
-     *
-     * @param key  the key to store at
-     * @param value  the decoded object to store
-     */
-    private void addPropertyDirect(String key, Object value) {
-        // safety check
-        if (!containsKey(key)) {
-            keysAsListed.add(key);
-        }
-        put(key, value);
-    }
-
-    /**
-     * Adds a decoded property to the map w/o checking for commas - used
-     * internally when a property has been broken up into
-     * strings that could contain escaped commas to prevent
-     * the inadvertent vectorization.
-     * <p>
-     * Thanks to Leon Messerschmidt for this one.
-     *
-     * @param key  the key to store at
-     * @param value  the decoded object to store
-     */
-    private void addPropertyInternal(String key, Object value) {
-        Object current = this.get(key);
-
-        if (current instanceof String) {
-            // one object already in map - convert it to a vector
-            List values = new Vector(2);
-            values.add(current);
-            values.add(value);
-            put(key, values);
-            
-        } else if (current instanceof List) {
-            // already a list - just add the new token
-            ((List) current).add(value);
-            
-        } else {
-            // brand new key - store in keysAsListed to retain order
-            if (!containsKey(key)) {
-                keysAsListed.add(key);
-            }
-            put(key, value);
-        }
-    }
-
-    /**
-     * Set a property, this will replace any previously
-     * set values. Set values is implicitly a call
-     * to clearProperty(key), addProperty(key,value).
-     *
-     * @param key  the key to set
-     * @param value  the value to set
-     */
-    public void setProperty(String key, Object value) {
-        clearProperty(key);
-        addProperty(key, value);
-    }
-    
-    /**
-     * Save the properties to the given output stream.
-     * <p>
-     * The stream is not closed, but it is flushed.
-     *
-     * @param output  an OutputStream, may be null
-     * @param header  a textual comment to act as a file header
-     * @throws IOException if an IO error occurs
-     */
-    public synchronized void save(OutputStream output, String header) throws IOException {
-        if (output == null) {
-            return;
-        }
-        PrintWriter theWrtr = new PrintWriter(output);
-        if (header != null) {
-            theWrtr.println(header);
-        }
-        
-        Enumeration theKeys = keys();
-        while (theKeys.hasMoreElements()) {
-            String key = (String) theKeys.nextElement();
-            Object value = get(key);
-            if (value != null) {
-                if (value instanceof String) {
-                    StringBuffer currentOutput = new StringBuffer();
-                    currentOutput.append(key);
-                    currentOutput.append("=");
-                    currentOutput.append(escape((String) value));
-                    theWrtr.println(currentOutput.toString());
-                    
-                } else if (value instanceof List) {
-                    List values = (List) value;
-                    for (Iterator it = values.iterator(); it.hasNext(); ) {
-                        String currentElement = (String) it.next();
-                        StringBuffer currentOutput = new StringBuffer();
-                        currentOutput.append(key);
-                        currentOutput.append("=");
-                        currentOutput.append(escape(currentElement));
-                        theWrtr.println(currentOutput.toString());
-                    }
-                }
-            }
-            theWrtr.println();
-            theWrtr.flush();
-        }
-    }
-
-    /**
-     * Combines an existing Hashtable with this Hashtable.
-     * <p>
-     * Warning: It will overwrite previous entries without warning.
-     *
-     * @param props  the properties to combine
-     */
-    public void combine(ExtendedProperties props) {
-        for (Iterator it = props.getKeys(); it.hasNext();) {
-            String key = (String) it.next();
-            setProperty(key, props.get(key));
-        }
-    }
-    
-    /**
-     * Clear a property in the configuration.
-     *
-     * @param key  the property key to remove along with corresponding value
-     */
-    public void clearProperty(String key) {
-        if (containsKey(key)) {
-            // we also need to rebuild the keysAsListed or else
-            // things get *very* confusing
-            for (int i = 0; i < keysAsListed.size(); i++) {
-                if (( keysAsListed.get(i)).equals(key)) {
-                    keysAsListed.remove(i);
-                    break;
-                }
-            }
-            remove(key);
-        }
-    }
-
-    /**
-     * Get the list of the keys contained in the configuration
-     * repository.
-     *
-     * @return an Iterator over the keys
-     */
-    public Iterator getKeys() {
-        return keysAsListed.iterator();
-    }
-
-    /**
-     * Get the list of the keys contained in the configuration
-     * repository that match the specified prefix.
-     *
-     * @param prefix  the prefix to match
-     * @return an Iterator of keys that match the prefix
-     */
-    public Iterator getKeys(String prefix) {
-        Iterator keys = getKeys();
-        ArrayList matchingKeys = new ArrayList();
-
-        while (keys.hasNext()) {
-            Object key = keys.next();
-
-            if (key instanceof String && ((String) key).startsWith(prefix)) {
-                matchingKeys.add(key);
-            }
-        }
-        return matchingKeys.iterator();
-    }
-
-    /**
-     * Create an ExtendedProperties object that is a subset
-     * of this one. Take into account duplicate keys
-     * by using the setProperty() in ExtendedProperties.
-     *
-     * @param prefix  the prefix to get a subset for
-     * @return a new independent ExtendedProperties
-     */
-    public ExtendedProperties subset(String prefix) {
-        ExtendedProperties c = new ExtendedProperties();
-        Iterator keys = getKeys();
-        boolean validSubset = false;
-
-        while (keys.hasNext()) {
-            Object key = keys.next();
-
-            if (key instanceof String && ((String) key).startsWith(prefix)) {
-                if (!validSubset) {
-                    validSubset = true;
-                }
-
-                /*
-                 * Check to make sure that c.subset(prefix) doesn't
-                 * blow up when there is only a single property
-                 * with the key prefix. This is not a useful
-                 * subset but it is a valid subset.
-                 */
-                String newKey = null;
-                if (((String) key).length() == prefix.length()) {
-                    newKey = prefix;
-                } else {
-                    newKey = ((String) key).substring(prefix.length() + 1);
-                }
-
-                /*
-                 *  use addPropertyDirect() - this will plug the data as 
-                 *  is into the Map, but will also do the right thing
-                 *  re key accounting
-                 */
-                c.addPropertyDirect(newKey, get(key));
-            }
-        }
-
-        if (validSubset) {
-            return c;
-        } else {
-            return null;
-        }
-    }
-
-    /**
-     * Display the configuration for debugging purposes to System.out.
-     */
-    public void display() {
-        Iterator i = getKeys();
-
-        while (i.hasNext()) {
-            String key = (String) i.next();
-            Object value = get(key);
-            System.out.println(key + " => " + value);
-        }
-    }
-
-    /**
-     * Get a string associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @return The associated string.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a String.
-     */
-    public String getString(String key) {
-        return getString(key, null);
-    }
-
-    /**
-     * Get a string associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @param defaultValue The default value.
-     * @return The associated string if key is found,
-     * default value otherwise.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a String.
-     */
-    public String getString(String key, String defaultValue) {
-        Object value = get(key);
-
-        if (value instanceof String) {
-            return interpolate((String) value);
-            
-        } else if (value == null) {
-            if (defaults != null) {
-                return interpolate(defaults.getString(key, defaultValue));
-            } else {
-                return interpolate(defaultValue);
-            }
-        } else if (value instanceof List) {
-            return interpolate((String) ((List) value).get(0));
-        } else {
-            throw new ClassCastException('\'' + key + "' doesn't map to a String object");
-        }
-    }
-
-    /**
-     * Get a list of properties associated with the given
-     * configuration key.
-     *
-     * @param key The configuration key.
-     * @return The associated properties if key is found.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a String/List.
-     * @throws IllegalArgumentException if one of the tokens is
-     * malformed (does not contain an equals sign).
-     */
-    public Properties getProperties(String key) {
-        return getProperties(key, new Properties());
-    }
-
-    /**
-     * Get a list of properties associated with the given
-     * configuration key.
-     *
-     * @param key The configuration key.
-     * @return The associated properties if key is found.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a String/List.
-     * @throws IllegalArgumentException if one of the tokens is
-     * malformed (does not contain an equals sign).
-     */
-    public Properties getProperties(String key, Properties defaults) {
-        /*
-         * Grab an array of the tokens for this key.
-         */
-        String[] tokens = getStringArray(key);
-
-        // Each token is of the form 'key=value'.
-        Properties props = new Properties(defaults);
-        for (int i = 0; i < tokens.length; i++) {
-            String token = tokens[i];
-            int equalSign = token.indexOf('=');
-            if (equalSign > 0) {
-                String pkey = token.substring(0, equalSign).trim();
-                String pvalue = token.substring(equalSign + 1).trim();
-                props.put(pkey, pvalue);
-            } else {
-                throw new IllegalArgumentException('\'' + token + "' does not contain " + "an equals sign");
-            }
-        }
-        return props;
-    }
-
-    /**
-     * Get an array of strings associated with the given configuration
-     * key.
-     *
-     * @param key The configuration key.
-     * @return The associated string array if key is found.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a String/List.
-     */
-    public String[] getStringArray(String key) {
-        Object value = get(key);
-
-        List values;
-        if (value instanceof String) {
-            values = new Vector(1);
-            values.add(value);
-            
-        } else if (value instanceof List) {
-            values = (List) value;
-            
-        } else if (value == null) {
-            if (defaults != null) {
-                return defaults.getStringArray(key);
-            } else {
-                return new String[0];
-            }
-        } else {
-            throw new ClassCastException('\'' + key + "' doesn't map to a String/List object");
-        }
-
-        String[] tokens = new String[values.size()];
-        for (int i = 0; i < tokens.length; i++) {
-            tokens[i] = (String) values.get(i);
-        }
-
-        return tokens;
-    }
-
-    /**
-     * Get a Vector of strings associated with the given configuration
-     * key.
-     *
-     * @param key The configuration key.
-     * @return The associated Vector.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Vector.
-     */
-    public Vector getVector(String key) {
-        return getVector(key, null);
-    }
-
-    /**
-     * Get a Vector of strings associated with the given configuration key.
-     * <p>
-     * The list is a copy of the internal data of this object, and as
-     * such you may alter it freely.
-     *
-     * @param key The configuration key.
-     * @param defaultValue The default value.
-     * @return The associated Vector.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Vector.
-     */
-    public Vector getVector(String key, Vector defaultValue) {
-        Object value = get(key);
-
-        if (value instanceof List) {
-            return new Vector((List) value);
-            
-        } else if (value instanceof String) {
-            Vector values = new Vector(1);
-            values.add(value);
-            put(key, values);
-            return values;
-            
-        } else if (value == null) {
-            if (defaults != null) {
-                return defaults.getVector(key, defaultValue);
-            } else {
-                return ((defaultValue == null) ? new Vector() : defaultValue);
-            }
-        } else {
-            throw new ClassCastException('\'' + key + "' doesn't map to a Vector object");
-        }
-    }
-
-    /**
-     * Get a List of strings associated with the given configuration key.
-     * <p>
-     * The list is a copy of the internal data of this object, and as
-     * such you may alter it freely.
-     *
-     * @param key The configuration key.
-     * @return The associated List object.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a List.
-     * @since Commons Collections 3.2
-     */
-    public List getList(String key) {
-        return getList(key, null);
-    }
-
-    /**
-     * Get a List of strings associated with the given configuration key.
-     * <p>
-     * The list is a copy of the internal data of this object, and as
-     * such you may alter it freely.
-     *
-     * @param key The configuration key.
-     * @param defaultValue The default value.
-     * @return The associated List.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a List.
-     * @since Commons Collections 3.2
-     */
-    public List getList(String key, List defaultValue) {
-        Object value = get(key);
-
-        if (value instanceof List) {
-            return new ArrayList((List) value);
-            
-        } else if (value instanceof String) {
-            List values = new ArrayList(1);
-            values.add(value);
-            put(key, values);
-            return values;
-            
-        } else if (value == null) {
-            if (defaults != null) {
-                return defaults.getList(key, defaultValue);
-            } else {
-                return ((defaultValue == null) ? new ArrayList() : defaultValue);
-            }
-        } else {
-            throw new ClassCastException('\'' + key + "' doesn't map to a List object");
-        }
-    }
-
-    /**
-     * Get a boolean associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @return The associated boolean.
-     * @throws NoSuchElementException is thrown if the key doesn't
-     * map to an existing object.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Boolean.
-     */
-    public boolean getBoolean(String key) {
-        Boolean b = getBoolean(key, null);
-        if (b != null) {
-            return b.booleanValue();
-        } else {
-            throw new NoSuchElementException('\'' + key + "' doesn't map to an existing object");
-        }
-    }
-
-    /**
-     * Get a boolean associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @param defaultValue The default value.
-     * @return The associated boolean.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Boolean.
-     */
-    public boolean getBoolean(String key, boolean defaultValue) {
-        return getBoolean(key, new Boolean(defaultValue)).booleanValue();
-    }
-
-    /**
-     * Get a boolean associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @param defaultValue The default value.
-     * @return The associated boolean if key is found and has valid
-     * format, default value otherwise.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Boolean.
-     */
-    public Boolean getBoolean(String key, Boolean defaultValue) {
-
-        Object value = get(key);
-
-        if (value instanceof Boolean) {
-            return (Boolean) value;
-            
-        } else if (value instanceof String) {
-            String s = testBoolean((String) value);
-            Boolean b = new Boolean(s);
-            put(key, b);
-            return b;
-            
-        } else if (value == null) {
-            if (defaults != null) {
-                return defaults.getBoolean(key, defaultValue);
-            } else {
-                return defaultValue;
-            }
-        } else {
-            throw new ClassCastException('\'' + key + "' doesn't map to a Boolean object");
-        }
-    }
-
-    /**
-     * Test whether the string represent by value maps to a boolean
-     * value or not. We will allow <code>true</code>, <code>on</code>,
-     * and <code>yes</code> for a <code>true</code> boolean value, and
-     * <code>false</code>, <code>off</code>, and <code>no</code> for
-     * <code>false</code> boolean values.  Case of value to test for
-     * boolean status is ignored.
-     *
-     * @param value  the value to test for boolean state
-     * @return <code>true</code> or <code>false</code> if the supplied
-     * text maps to a boolean value, or <code>null</code> otherwise.
-     */
-    public String testBoolean(String value) {
-        String s = value.toLowerCase();
-
-        if (s.equals("true") || s.equals("on") || s.equals("yes")) {
-            return "true";
-        } else if (s.equals("false") || s.equals("off") || s.equals("no")) {
-            return "false";
-        } else {
-            return null;
-        }
-    }
-
-    /**
-     * Get a byte associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @return The associated byte.
-     * @throws NoSuchElementException is thrown if the key doesn't
-     * map to an existing object.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Byte.
-     * @throws NumberFormatException is thrown if the value mapped
-     * by the key has not a valid number format.
-     */
-    public byte getByte(String key) {
-        Byte b = getByte(key, null);
-        if (b != null) {
-            return b.byteValue();
-        } else {
-            throw new NoSuchElementException('\'' + key + " doesn't map to an existing object");
-        }
-    }
-
-    /**
-     * Get a byte associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @param defaultValue The default value.
-     * @return The associated byte.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Byte.
-     * @throws NumberFormatException is thrown if the value mapped
-     * by the key has not a valid number format.
-     */
-    public byte getByte(String key, byte defaultValue) {
-        return getByte(key, new Byte(defaultValue)).byteValue();
-    }
-
-    /**
-     * Get a byte associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @param defaultValue The default value.
-     * @return The associated byte if key is found and has valid
-     * format, default value otherwise.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Byte.
-     * @throws NumberFormatException is thrown if the value mapped
-     * by the key has not a valid number format.
-     */
-    public Byte getByte(String key, Byte defaultValue) {
-        Object value = get(key);
-
-        if (value instanceof Byte) {
-            return (Byte) value;
-            
-        } else if (value instanceof String) {
-            Byte b = new Byte((String) value);
-            put(key, b);
-            return b;
-            
-        } else if (value == null) {
-            if (defaults != null) {
-                return defaults.getByte(key, defaultValue);
-            } else {
-                return defaultValue;
-            }
-        } else {
-            throw new ClassCastException('\'' + key + "' doesn't map to a Byte object");
-        }
-    }
-
-    /**
-     * Get a short associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @return The associated short.
-     * @throws NoSuchElementException is thrown if the key doesn't
-     * map to an existing object.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Short.
-     * @throws NumberFormatException is thrown if the value mapped
-     * by the key has not a valid number format.
-     */
-    public short getShort(String key) {
-        Short s = getShort(key, null);
-        if (s != null) {
-            return s.shortValue();
-        } else {
-            throw new NoSuchElementException('\'' + key + "' doesn't map to an existing object");
-        }
-    }
-
-    /**
-     * Get a short associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @param defaultValue The default value.
-     * @return The associated short.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Short.
-     * @throws NumberFormatException is thrown if the value mapped
-     * by the key has not a valid number format.
-     */
-    public short getShort(String key, short defaultValue) {
-        return getShort(key, new Short(defaultValue)).shortValue();
-    }
-
-    /**
-     * Get a short associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @param defaultValue The default value.
-     * @return The associated short if key is found and has valid
-     * format, default value otherwise.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Short.
-     * @throws NumberFormatException is thrown if the value mapped
-     * by the key has not a valid number format.
-     */
-    public Short getShort(String key, Short defaultValue) {
-        Object value = get(key);
-
-        if (value instanceof Short) {
-            return (Short) value;
-            
-        } else if (value instanceof String) {
-            Short s = new Short((String) value);
-            put(key, s);
-            return s;
-            
-        } else if (value == null) {
-            if (defaults != null) {
-                return defaults.getShort(key, defaultValue);
-            } else {
-                return defaultValue;
-            }
-        } else {
-            throw new ClassCastException('\'' + key + "' doesn't map to a Short object");
-        }
-    }
-
-    /**
-     * The purpose of this method is to get the configuration resource
-     * with the given name as an integer.
-     *
-     * @param name The resource name.
-     * @return The value of the resource as an integer.
-     */
-    public int getInt(String name) {
-        return getInteger(name);
-    }
-
-    /**
-     * The purpose of this method is to get the configuration resource
-     * with the given name as an integer, or a default value.
-     *
-     * @param name The resource name
-     * @param def The default value of the resource.
-     * @return The value of the resource as an integer.
-     */
-    public int getInt(String name, int def) {
-        return getInteger(name, def);
-    }
-
-    /**
-     * Get a int associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @return The associated int.
-     * @throws NoSuchElementException is thrown if the key doesn't
-     * map to an existing object.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Integer.
-     * @throws NumberFormatException is thrown if the value mapped
-     * by the key has not a valid number format.
-     */
-    public int getInteger(String key) {
-        Integer i = getInteger(key, null);
-        if (i != null) {
-            return i.intValue();
-        } else {
-            throw new NoSuchElementException('\'' + key + "' doesn't map to an existing object");
-        }
-    }
-
-    /**
-     * Get a int associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @param defaultValue The default value.
-     * @return The associated int.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Integer.
-     * @throws NumberFormatException is thrown if the value mapped
-     * by the key has not a valid number format.
-     */
-    public int getInteger(String key, int defaultValue) {
-        Integer i = getInteger(key, null);
-
-        if (i == null) {
-            return defaultValue;
-        }
-        return i.intValue();
-    }
-
-    /**
-     * Get a int associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @param defaultValue The default value.
-     * @return The associated int if key is found and has valid
-     * format, default value otherwise.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Integer.
-     * @throws NumberFormatException is thrown if the value mapped
-     * by the key has not a valid number format.
-     */
-    public Integer getInteger(String key, Integer defaultValue) {
-        Object value = get(key);
-
-        if (value instanceof Integer) {
-            return (Integer) value;
-            
-        } else if (value instanceof String) {
-            Integer i = new Integer((String) value);
-            put(key, i);
-            return i;
-            
-        } else if (value == null) {
-            if (defaults != null) {
-                return defaults.getInteger(key, defaultValue);
-            } else {
-                return defaultValue;
-            }
-        } else {
-            throw new ClassCastException('\'' + key + "' doesn't map to a Integer object");
-        }
-    }
-
-    /**
-     * Get a long associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @return The associated long.
-     * @throws NoSuchElementException is thrown if the key doesn't
-     * map to an existing object.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Long.
-     * @throws NumberFormatException is thrown if the value mapped
-     * by the key has not a valid number format.
-     */
-    public long getLong(String key) {
-        Long l = getLong(key, null);
-        if (l != null) {
-            return l.longValue();
-        } else {
-            throw new NoSuchElementException('\'' + key + "' doesn't map to an existing object");
-        }
-    }
-
-    /**
-     * Get a long associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @param defaultValue The default value.
-     * @return The associated long.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Long.
-     * @throws NumberFormatException is thrown if the value mapped
-     * by the key has not a valid number format.
-     */
-    public long getLong(String key, long defaultValue) {
-        return getLong(key, new Long(defaultValue)).longValue();
-    }
-
-    /**
-     * Get a long associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @param defaultValue The default value.
-     * @return The associated long if key is found and has valid
-     * format, default value otherwise.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Long.
-     * @throws NumberFormatException is thrown if the value mapped
-     * by the key has not a valid number format.
-     */
-    public Long getLong(String key, Long defaultValue) {
-        Object value = get(key);
-
-        if (value instanceof Long) {
-            return (Long) value;
-            
-        } else if (value instanceof String) {
-            Long l = new Long((String) value);
-            put(key, l);
-            return l;
-            
-        } else if (value == null) {
-            if (defaults != null) {
-                return defaults.getLong(key, defaultValue);
-            } else {
-                return defaultValue;
-            }
-        } else {
-            throw new ClassCastException('\'' + key + "' doesn't map to a Long object");
-        }
-    }
-
-    /**
-     * Get a float associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @return The associated float.
-     * @throws NoSuchElementException is thrown if the key doesn't
-     * map to an existing object.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Float.
-     * @throws NumberFormatException is thrown if the value mapped
-     * by the key has not a valid number format.
-     */
-    public float getFloat(String key) {
-        Float f = getFloat(key, null);
-        if (f != null) {
-            return f.floatValue();
-        } else {
-            throw new NoSuchElementException('\'' + key + "' doesn't map to an existing object");
-        }
-    }
-
-    /**
-     * Get a float associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @param defaultValue The default value.
-     * @return The associated float.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Float.
-     * @throws NumberFormatException is thrown if the value mapped
-     * by the key has not a valid number format.
-     */
-    public float getFloat(String key, float defaultValue) {
-        return getFloat(key, new Float(defaultValue)).floatValue();
-    }
-
-    /**
-     * Get a float associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @param defaultValue The default value.
-     * @return The associated float if key is found and has valid
-     * format, default value otherwise.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Float.
-     * @throws NumberFormatException is thrown if the value mapped
-     * by the key has not a valid number format.
-     */
-    public Float getFloat(String key, Float defaultValue) {
-        Object value = get(key);
-
-        if (value instanceof Float) {
-            return (Float) value;
-            
-        } else if (value instanceof String) {
-            Float f = new Float((String) value);
-            put(key, f);
-            return f;
-            
-        } else if (value == null) {
-            if (defaults != null) {
-                return defaults.getFloat(key, defaultValue);
-            } else {
-                return defaultValue;
-            }
-        } else {
-            throw new ClassCastException('\'' + key + "' doesn't map to a Float object");
-        }
-    }
-
-    /**
-     * Get a double associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @return The associated double.
-     * @throws NoSuchElementException is thrown if the key doesn't
-     * map to an existing object.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Double.
-     * @throws NumberFormatException is thrown if the value mapped
-     * by the key has not a valid number format.
-     */
-    public double getDouble(String key) {
-        Double d = getDouble(key, null);
-        if (d != null) {
-            return d.doubleValue();
-        } else {
-            throw new NoSuchElementException('\'' + key + "' doesn't map to an existing object");
-        }
-    }
-
-    /**
-     * Get a double associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @param defaultValue The default value.
-     * @return The associated double.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Double.
-     * @throws NumberFormatException is thrown if the value mapped
-     * by the key has not a valid number format.
-     */
-    public double getDouble(String key, double defaultValue) {
-        return getDouble(key, new Double(defaultValue)).doubleValue();
-    }
-
-    /**
-     * Get a double associated with the given configuration key.
-     *
-     * @param key The configuration key.
-     * @param defaultValue The default value.
-     * @return The associated double if key is found and has valid
-     * format, default value otherwise.
-     * @throws ClassCastException is thrown if the key maps to an
-     * object that is not a Double.
-     * @throws NumberFormatException is thrown if the value mapped
-     * by the key has not a valid number format.
-     */
-    public Double getDouble(String key, Double defaultValue) {
-        Object value = get(key);
-
-        if (value instanceof Double) {
-            return (Double) value;
-            
-        } else if (value instanceof String) {
-            Double d = new Double((String) value);
-            put(key, d);
-            return d;
-            
-        } else if (value == null) {
-            if (defaults != null) {
-                return defaults.getDouble(key, defaultValue);
-            } else {
-                return defaultValue;
-            }
-        } else {
-            throw new ClassCastException('\'' + key + "' doesn't map to a Double object");
-        }
-    }
-
-    /**
-     * Convert a standard properties class into a configuration class.
-     * <p>
-     * NOTE: From Commons Collections 3.2 this method will pick up
-     * any default parent Properties of the specified input object.
-     *
-     * @param props  the properties object to convert
-     * @return new ExtendedProperties created from props
-     */
-    public static ExtendedProperties convertProperties(Properties props) {
-        ExtendedProperties c = new ExtendedProperties();
-
-        for (Enumeration e = props.propertyNames(); e.hasMoreElements();) {
-            String s = (String) e.nextElement();
-            c.setProperty(s, props.getProperty(s));
-        }
-
-        return c;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/Factory.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/Factory.java
deleted file mode 100755
index b08f2e3..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/Factory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-/**
- * Defines a functor interface implemented by classes that create objects.
- * <p>
- * A <code>Factory</code> creates an object without using an input parameter.
- * If an input parameter is required, then {@link Transformer} is more appropriate.
- * <p>
- * Standard implementations of common factories are provided by
- * {@link FactoryUtils}. These include factories that return a constant,
- * a copy of a prototype or a new instance.
- * 
- * @since Commons Collections 2.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- *
- * @author Arron Bates
- * @author Stephen Colebourne
- */
-public interface Factory {
-
-    /**
-     * Create a new object.
-     *
-     * @return a new object
-     * @throws FunctorException (runtime) if the factory cannot create an object
-     */
-    public Object create();
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/FactoryUtils.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/FactoryUtils.java
deleted file mode 100755
index f9939e6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/FactoryUtils.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import org.apache.commons.collections.functors.ConstantFactory;
-import org.apache.commons.collections.functors.InstantiateFactory;
-import org.apache.commons.collections.functors.ExceptionFactory;
-import org.apache.commons.collections.functors.PrototypeFactory;
-
-/**
- * <code>FactoryUtils</code> provides reference implementations and utilities
- * for the Factory functor interface. The supplied factories are:
- * <ul>
- * <li>Prototype - clones a specified object
- * <li>Reflection - creates objects using reflection
- * <li>Constant - always returns the same object
- * <li>Null - always returns null
- * <li>Exception - always throws an exception
- * </ul>
- * All the supplied factories are Serializable.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- *
- * @author Stephen Colebourne
- */
-public class FactoryUtils {
-
-    /**
-     * This class is not normally instantiated.
-     */
-    public FactoryUtils() {
-        super();
-    }
-
-    /**
-     * Gets a Factory that always throws an exception.
-     * This could be useful during testing as a placeholder.
-     *
-     * @see org.apache.commons.collections.functors.ExceptionFactory
-     * 
-     * @return the factory
-     */
-    public static Factory exceptionFactory() {
-        return ExceptionFactory.INSTANCE;
-    }
-
-    /**
-     * Gets a Factory that will return null each time the factory is used.
-     * This could be useful during testing as a placeholder.
-     *
-     * @see org.apache.commons.collections.functors.ConstantFactory
-     * 
-     * @return the factory
-     */
-    public static Factory nullFactory() {
-        return ConstantFactory.NULL_INSTANCE;
-    }
-
-    /**
-     * Creates a Factory that will return the same object each time the factory
-     * is used. No check is made that the object is immutable. In general, only
-     * immutable objects should use the constant factory. Mutable objects should
-     * use the prototype factory.
-     *
-     * @see org.apache.commons.collections.functors.ConstantFactory
-     * 
-     * @param constantToReturn  the constant object to return each time in the factory
-     * @return the <code>constant</code> factory.
-     */
-    public static Factory constantFactory(Object constantToReturn) {
-        return ConstantFactory.getInstance(constantToReturn);
-    }
-
-    /**
-     * Creates a Factory that will return a clone of the same prototype object
-     * each time the factory is used. The prototype will be cloned using one of these
-     * techniques (in order):
-     * <ul>
-     * <li>public clone method
-     * <li>public copy constructor
-     * <li>serialization clone
-     * <ul>
-     *
-     * @see org.apache.commons.collections.functors.PrototypeFactory
-     * 
-     * @param prototype  the object to clone each time in the factory
-     * @return the <code>prototype</code> factory
-     * @throws IllegalArgumentException if the prototype is null
-     * @throws IllegalArgumentException if the prototype cannot be cloned
-     */
-    public static Factory prototypeFactory(Object prototype) {
-        return PrototypeFactory.getInstance(prototype);
-    }
-
-    /**
-     * Creates a Factory that can create objects of a specific type using
-     * a no-args constructor.
-     *
-     * @see org.apache.commons.collections.functors.InstantiateFactory
-     * 
-     * @param classToInstantiate  the Class to instantiate each time in the factory
-     * @return the <code>reflection</code> factory
-     * @throws IllegalArgumentException if the classToInstantiate is null
-     */
-    public static Factory instantiateFactory(Class classToInstantiate) {
-        return InstantiateFactory.getInstance(classToInstantiate, null, null);
-    }
-
-    /**
-     * Creates a Factory that can create objects of a specific type using
-     * the arguments specified to this method.
-     *
-     * @see org.apache.commons.collections.functors.InstantiateFactory
-     * 
-     * @param classToInstantiate  the Class to instantiate each time in the factory
-     * @param paramTypes  parameter types for the constructor, can be null
-     * @param args  the arguments to pass to the constructor, can be null
-     * @return the <code>reflection</code> factory
-     * @throws IllegalArgumentException if the classToInstantiate is null
-     * @throws IllegalArgumentException if the paramTypes and args don't match
-     * @throws IllegalArgumentException if the constructor doesn't exist
-     */
-    public static Factory instantiateFactory(Class classToInstantiate, Class[] paramTypes, Object[] args) {
-        return InstantiateFactory.getInstance(classToInstantiate, paramTypes, args);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/FastArrayList.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/FastArrayList.java
deleted file mode 100755
index 6e51cd1..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/FastArrayList.java
+++ /dev/null
@@ -1,1332 +0,0 @@
-/*
- *  Copyright 2001-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.ConcurrentModificationException;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-
-/**
- * <p>A customized implementation of <code>java.util.ArrayList</code> designed
- * to operate in a multithreaded environment where the large majority of
- * method calls are read-only, instead of structural changes.  When operating
- * in "fast" mode, read calls are non-synchronized and write calls perform the
- * following steps:</p>
- * <ul>
- * <li>Clone the existing collection
- * <li>Perform the modification on the clone
- * <li>Replace the existing collection with the (modified) clone
- * </ul>
- * <p>When first created, objects of this class default to "slow" mode, where
- * all accesses of any type are synchronized but no cloning takes place.  This
- * is appropriate for initially populating the collection, followed by a switch
- * to "fast" mode (by calling <code>setFast(true)</code>) after initialization
- * is complete.</p>
- *
- * <p><strong>NOTE</strong>: If you are creating and accessing an
- * <code>ArrayList</code> only within a single thread, you should use
- * <code>java.util.ArrayList</code> directly (with no synchronization), for
- * maximum performance.</p>
- *
- * <p><strong>NOTE</strong>: <i>This class is not cross-platform.
- * Using it may cause unexpected failures on some architectures.</i>
- * It suffers from the same problems as the double-checked locking idiom.  
- * In particular, the instruction that clones the internal collection and the 
- * instruction that sets the internal reference to the clone can be executed 
- * or perceived out-of-order.  This means that any read operation might fail 
- * unexpectedly, as it may be reading the state of the internal collection
- * before the internal collection is fully formed.
- * For more information on the double-checked locking idiom, see the
- * <a href="http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html">
- * Double-Checked Locking Idiom Is Broken Declaration</a>.</p>
- *
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- * 
- * @author Craig R. McClanahan
- * @author Stephen Colebourne
- */
-public class FastArrayList extends ArrayList {
-
-
-    // ----------------------------------------------------------- Constructors
-
-
-    /**
-     * Construct a an empty list.
-     */
-    public FastArrayList() {
-
-        super();
-        this.list = new ArrayList();
-
-    }
-
-
-    /**
-     * Construct an empty list with the specified capacity.
-     *
-     * @param capacity The initial capacity of the empty list
-     */
-    public FastArrayList(int capacity) {
-
-        super();
-        this.list = new ArrayList(capacity);
-
-    }
-
-
-    /**
-     * Construct a list containing the elements of the specified collection,
-     * in the order they are returned by the collection's iterator.
-     *
-     * @param collection The collection whose elements initialize the contents
-     *  of this list
-     */
-    public FastArrayList(Collection collection) {
-
-        super();
-        this.list = new ArrayList(collection);
-
-    }
-
-
-    // ----------------------------------------------------- Instance Variables
-
-
-    /**
-     * The underlying list we are managing.
-     */
-    protected ArrayList list = null;
-
-
-    // ------------------------------------------------------------- Properties
-
-
-    /**
-     * Are we operating in "fast" mode?
-     */
-    protected boolean fast = false;
-
-
-    /**
-     *  Returns true if this list is operating in fast mode.
-     *
-     *  @return true if this list is operating in fast mode
-     */
-    public boolean getFast() {
-        return (this.fast);
-    }
-
-    /**
-     *  Sets whether this list will operate in fast mode.
-     *
-     *  @param fast true if the list should operate in fast mode
-     */
-    public void setFast(boolean fast) {
-        this.fast = fast;
-    }
-
-
-    // --------------------------------------------------------- Public Methods
-
-
-    /**
-     * Appends the specified element to the end of this list.
-     *
-     * @param element The element to be appended
-     */
-    public boolean add(Object element) {
-
-        if (fast) {
-            synchronized (this) {
-                ArrayList temp = (ArrayList) list.clone();
-                boolean result = temp.add(element);
-                list = temp;
-                return (result);
-            }
-        } else {
-            synchronized (list) {
-                return (list.add(element));
-            }
-        }
-
-    }
-
-
-    /**
-     * Insert the specified element at the specified position in this list,
-     * and shift all remaining elements up one position.
-     *
-     * @param index Index at which to insert this element
-     * @param element The element to be inserted
-     *
-     * @exception IndexOutOfBoundsException if the index is out of range
-     */
-    public void add(int index, Object element) {
-
-        if (fast) {
-            synchronized (this) {
-                ArrayList temp = (ArrayList) list.clone();
-                temp.add(index, element);
-                list = temp;
-            }
-        } else {
-            synchronized (list) {
-                list.add(index, element);
-            }
-        }
-
-    }
-
-
-    /**
-     * Append all of the elements in the specified Collection to the end
-     * of this list, in the order that they are returned by the specified
-     * Collection's Iterator.
-     *
-     * @param collection The collection to be appended
-     */
-    public boolean addAll(Collection collection) {
-
-        if (fast) {
-            synchronized (this) {
-                ArrayList temp = (ArrayList) list.clone();
-                boolean result = temp.addAll(collection);
-                list = temp;
-                return (result);
-            }
-        } else {
-            synchronized (list) {
-                return (list.addAll(collection));
-            }
-        }
-
-    }
-
-
-    /**
-     * Insert all of the elements in the specified Collection at the specified
-     * position in this list, and shift any previous elements upwards as
-     * needed.
-     *
-     * @param index Index at which insertion takes place
-     * @param collection The collection to be added
-     *
-     * @exception IndexOutOfBoundsException if the index is out of range
-     */
-    public boolean addAll(int index, Collection collection) {
-
-        if (fast) {
-            synchronized (this) {
-                ArrayList temp = (ArrayList) list.clone();
-                boolean result = temp.addAll(index, collection);
-                list = temp;
-                return (result);
-            }
-        } else {
-            synchronized (list) {
-                return (list.addAll(index, collection));
-            }
-        }
-
-    }
-
-
-    /**
-     * Remove all of the elements from this list.  The list will be empty
-     * after this call returns.
-     *
-     * @exception UnsupportedOperationException if <code>clear()</code>
-     *  is not supported by this list
-     */
-    public void clear() {
-
-        if (fast) {
-            synchronized (this) {
-                ArrayList temp = (ArrayList) list.clone();
-                temp.clear();
-                list = temp;
-            }
-        } else {
-            synchronized (list) {
-                list.clear();
-            }
-        }
-
-    }
-
-
-    /**
-     * Return a shallow copy of this <code>FastArrayList</code> instance.
-     * The elements themselves are not copied.
-     */
-    public Object clone() {
-
-        FastArrayList results = null;
-        if (fast) {
-            results = new FastArrayList(list);
-        } else {
-            synchronized (list) {
-                results = new FastArrayList(list);
-            }
-        }
-        results.setFast(getFast());
-        return (results);
-
-    }
-
-
-    /**
-     * Return <code>true</code> if this list contains the specified element.
-     *
-     * @param element The element to test for
-     */
-    public boolean contains(Object element) {
-
-        if (fast) {
-            return (list.contains(element));
-        } else {
-            synchronized (list) {
-                return (list.contains(element));
-            }
-        }
-
-    }
-
-
-    /**
-     * Return <code>true</code> if this list contains all of the elements
-     * in the specified Collection.
-     *
-     * @param collection Collection whose elements are to be checked
-     */
-    public boolean containsAll(Collection collection) {
-
-        if (fast) {
-            return (list.containsAll(collection));
-        } else {
-            synchronized (list) {
-                return (list.containsAll(collection));
-            }
-        }
-
-    }
-
-
-    /**
-     * Increase the capacity of this <code>ArrayList</code> instance, if
-     * necessary, to ensure that it can hold at least the number of elements
-     * specified by the minimum capacity argument.
-     *
-     * @param capacity The new minimum capacity
-     */
-    public void ensureCapacity(int capacity) {
-
-        if (fast) {
-            synchronized (this) {
-                ArrayList temp = (ArrayList) list.clone();
-                temp.ensureCapacity(capacity);
-                list = temp;
-            }
-        } else {
-            synchronized (list) {
-                list.ensureCapacity(capacity);
-            }
-        }
-
-    }
-
-
-    /**
-     * Compare the specified object with this list for equality.  This
-     * implementation uses exactly the code that is used to define the
-     * list equals function in the documentation for the
-     * <code>List.equals</code> method.
-     *
-     * @param o Object to be compared to this list
-     */
-    public boolean equals(Object o) {
-
-        // Simple tests that require no synchronization
-        if (o == this)
-            return (true);
-        else if (!(o instanceof List))
-            return (false);
-        List lo = (List) o;
-
-        // Compare the sets of elements for equality
-        if (fast) {
-            ListIterator li1 = list.listIterator();
-            ListIterator li2 = lo.listIterator();
-            while (li1.hasNext() && li2.hasNext()) {
-                Object o1 = li1.next();
-                Object o2 = li2.next();
-                if (!(o1 == null ? o2 == null : o1.equals(o2)))
-                    return (false);
-            }
-            return (!(li1.hasNext() || li2.hasNext()));
-        } else {
-            synchronized (list) {
-                ListIterator li1 = list.listIterator();
-                ListIterator li2 = lo.listIterator();
-                while (li1.hasNext() && li2.hasNext()) {
-                    Object o1 = li1.next();
-                    Object o2 = li2.next();
-                    if (!(o1 == null ? o2 == null : o1.equals(o2)))
-                        return (false);
-                }
-                return (!(li1.hasNext() || li2.hasNext()));
-            }
-        }
-
-    }
-
-
-    /**
-     * Return the element at the specified position in the list.
-     *
-     * @param index The index of the element to return
-     *
-     * @exception IndexOutOfBoundsException if the index is out of range
-     */
-    public Object get(int index) {
-
-        if (fast) {
-            return (list.get(index));
-        } else {
-            synchronized (list) {
-                return (list.get(index));
-            }
-        }
-
-    }
-
-
-    /**
-     * Return the hash code value for this list.  This implementation uses
-     * exactly the code that is used to define the list hash function in the
-     * documentation for the <code>List.hashCode</code> method.
-     */
-    public int hashCode() {
-
-        if (fast) {
-            int hashCode = 1;
-            java.util.Iterator i = list.iterator();
-            while (i.hasNext()) {
-                Object o = i.next();
-                hashCode = 31 * hashCode + (o == null ? 0 : o.hashCode());
-            }
-            return (hashCode);
-        } else {
-            synchronized (list) {
-                int hashCode = 1;
-                java.util.Iterator i = list.iterator();
-                while (i.hasNext()) {
-                    Object o = i.next();
-                    hashCode = 31 * hashCode + (o == null ? 0 : o.hashCode());
-                }
-                return (hashCode);
-            }
-        }
-
-    }
-
-
-    /**
-     * Search for the first occurrence of the given argument, testing
-     * for equality using the <code>equals()</code> method, and return
-     * the corresponding index, or -1 if the object is not found.
-     *
-     * @param element The element to search for
-     */
-    public int indexOf(Object element) {
-
-        if (fast) {
-            return (list.indexOf(element));
-        } else {
-            synchronized (list) {
-                return (list.indexOf(element));
-            }
-        }
-
-    }
-
-
-    /**
-     * Test if this list has no elements.
-     */
-    public boolean isEmpty() {
-
-        if (fast) {
-            return (list.isEmpty());
-        } else {
-            synchronized (list) {
-                return (list.isEmpty());
-            }
-        }
-
-    }
-
-
-    /**
-     * Return an iterator over the elements in this list in proper sequence.
-     * <p>
-     * <b>Thread safety</b><br />
-     * The iterator returned is thread-safe ONLY in FAST mode.
-     * In slow mode there is no way to synchronize, or make the iterator thread-safe.
-     * <p>
-     * In fast mode iteration and modification may occur in parallel on different threads,
-     * however there is a restriction. Modification must be EITHER via the Iterator
-     * interface methods OR the List interface. If a mixture of modification
-     * methods is used a ConcurrentModificationException is thrown from the iterator
-     * modification method. If the List modification methods are used the changes are
-     * NOT visible in the iterator (it shows the list contents at the time the iterator
-     * was created).
-     * 
-     * @return the iterator
-     */
-    public Iterator iterator() {
-        if (fast) {
-            return new ListIter(0);
-        } else {
-            return list.iterator();
-        }
-    }
-
-
-    /**
-     * Search for the last occurrence of the given argument, testing
-     * for equality using the <code>equals()</code> method, and return
-     * the corresponding index, or -1 if the object is not found.
-     *
-     * @param element The element to search for
-     */
-    public int lastIndexOf(Object element) {
-
-        if (fast) {
-            return (list.lastIndexOf(element));
-        } else {
-            synchronized (list) {
-                return (list.lastIndexOf(element));
-            }
-        }
-
-    }
-
-
-    /**
-     * Return an iterator of the elements of this list, in proper sequence.
-     * <p>
-     * <b>Thread safety</b><br />
-     * The iterator returned is thread-safe ONLY in FAST mode.
-     * In slow mode there is no way to synchronize, or make the iterator thread-safe.
-     * <p>
-     * In fast mode iteration and modification may occur in parallel on different threads,
-     * however there is a restriction. Modification must be EITHER via the Iterator
-     * interface methods OR the List interface. If a mixture of modification
-     * methods is used a ConcurrentModificationException is thrown from the iterator
-     * modification method. If the List modification methods are used the changes are
-     * NOT visible in the iterator (it shows the list contents at the time the iterator
-     * was created).
-     * 
-     * @return the list iterator
-     */
-    public ListIterator listIterator() {
-        if (fast) {
-            return new ListIter(0);
-        } else {
-            return list.listIterator();
-        }
-    }
-
-
-    /**
-     * Return an iterator of the elements of this list, in proper sequence,
-     * starting at the specified position.
-     * <p>
-     * <b>Thread safety</b><br />
-     * The iterator returned is thread-safe ONLY in FAST mode.
-     * In slow mode there is no way to synchronize, or make the iterator thread-safe.
-     * <p>
-     * In fast mode iteration and modification may occur in parallel on different threads,
-     * however there is a restriction. Modification must be EITHER via the Iterator
-     * interface methods OR the List interface. If a mixture of modification
-     * methods is used a ConcurrentModificationException is thrown from the iterator
-     * modification method. If the List modification methods are used the changes are
-     * NOT visible in the iterator (it shows the list contents at the time the iterator
-     * was created).
-     *
-     * @param index The starting position of the iterator to return
-     * @return the list iterator
-     * @exception IndexOutOfBoundsException if the index is out of range
-     */
-    public ListIterator listIterator(int index) {
-        if (fast) {
-            return new ListIter(index);
-        } else {
-            return list.listIterator(index);
-        }
-    }
-
-
-    /**
-     * Remove the element at the specified position in the list, and shift
-     * any subsequent elements down one position.
-     *
-     * @param index Index of the element to be removed
-     *
-     * @exception IndexOutOfBoundsException if the index is out of range
-     */
-    public Object remove(int index) {
-
-        if (fast) {
-            synchronized (this) {
-                ArrayList temp = (ArrayList) list.clone();
-                Object result = temp.remove(index);
-                list = temp;
-                return (result);
-            }
-        } else {
-            synchronized (list) {
-                return (list.remove(index));
-            }
-        }
-
-    }
-
-
-    /**
-     * Remove the first occurrence of the specified element from the list,
-     * and shift any subsequent elements down one position.
-     *
-     * @param element Element to be removed
-     */
-    public boolean remove(Object element) {
-
-        if (fast) {
-            synchronized (this) {
-                ArrayList temp = (ArrayList) list.clone();
-                boolean result = temp.remove(element);
-                list = temp;
-                return (result);
-            }
-        } else {
-            synchronized (list) {
-                return (list.remove(element));
-            }
-        }
-
-    }
-
-
-    /**
-     * Remove from this collection all of its elements that are contained
-     * in the specified collection.
-     *
-     * @param collection Collection containing elements to be removed
-     *
-     * @exception UnsupportedOperationException if this optional operation
-     *  is not supported by this list
-     */
-    public boolean removeAll(Collection collection) {
-
-        if (fast) {
-            synchronized (this) {
-                ArrayList temp = (ArrayList) list.clone();
-                boolean result = temp.removeAll(collection);
-                list = temp;
-                return (result);
-            }
-        } else {
-            synchronized (list) {
-                return (list.removeAll(collection));
-            }
-        }
-
-    }
-
-
-    /**
-     * Remove from this collection all of its elements except those that are
-     * contained in the specified collection.
-     *
-     * @param collection Collection containing elements to be retained
-     *
-     * @exception UnsupportedOperationException if this optional operation
-     *  is not supported by this list
-     */
-    public boolean retainAll(Collection collection) {
-
-        if (fast) {
-            synchronized (this) {
-                ArrayList temp = (ArrayList) list.clone();
-                boolean result = temp.retainAll(collection);
-                list = temp;
-                return (result);
-            }
-        } else {
-            synchronized (list) {
-                return (list.retainAll(collection));
-            }
-        }
-
-    }
-
-
-    /**
-     * Replace the element at the specified position in this list with
-     * the specified element.  Returns the previous object at that position.
-     * <br><br>
-     * <strong>IMPLEMENTATION NOTE</strong> - This operation is specifically
-     * documented to not be a structural change, so it is safe to be performed
-     * without cloning.
-     *
-     * @param index Index of the element to replace
-     * @param element The new element to be stored
-     *
-     * @exception IndexOutOfBoundsException if the index is out of range
-     */
-    public Object set(int index, Object element) {
-
-        if (fast) {
-            return (list.set(index, element));
-        } else {
-            synchronized (list) {
-                return (list.set(index, element));
-            }
-        }
-
-    }
-
-
-    /**
-     * Return the number of elements in this list.
-     */
-    public int size() {
-
-        if (fast) {
-            return (list.size());
-        } else {
-            synchronized (list) {
-                return (list.size());
-            }
-        }
-
-    }
-
-
-    /**
-     * Return a view of the portion of this list between fromIndex
-     * (inclusive) and toIndex (exclusive).  The returned list is backed
-     * by this list, so non-structural changes in the returned list are
-     * reflected in this list.  The returned list supports
-     * all of the optional list operations supported by this list.
-     *
-     * @param fromIndex The starting index of the sublist view
-     * @param toIndex The index after the end of the sublist view
-     *
-     * @exception IndexOutOfBoundsException if an index is out of range
-     */
-    public List subList(int fromIndex, int toIndex) {
-        if (fast) {
-            return new SubList(fromIndex, toIndex);
-        } else {
-            return list.subList(fromIndex, toIndex);
-        }
-    }
-
-
-    /**
-     * Return an array containing all of the elements in this list in the
-     * correct order.
-     */
-    public Object[] toArray() {
-
-        if (fast) {
-            return (list.toArray());
-        } else {
-            synchronized (list) {
-                return (list.toArray());
-            }
-        }
-
-    }
-
-
-    /**
-     * Return an array containing all of the elements in this list in the
-     * correct order.  The runtime type of the returned array is that of
-     * the specified array.  If the list fits in the specified array, it is
-     * returned therein.  Otherwise, a new array is allocated with the
-     * runtime type of the specified array, and the size of this list.
-     *
-     * @param array Array defining the element type of the returned list
-     *
-     * @exception ArrayStoreException if the runtime type of <code>array</code>
-     *  is not a supertype of the runtime type of every element in this list
-     */
-    public Object[] toArray(Object array[]) {
-
-        if (fast) {
-            return (list.toArray(array));
-        } else {
-            synchronized (list) {
-                return (list.toArray(array));
-            }
-        }
-
-    }
-
-
-    /**
-     * Return a String representation of this object.
-     */
-    public String toString() {
-
-        StringBuffer sb = new StringBuffer("FastArrayList[");
-        sb.append(list.toString());
-        sb.append("]");
-        return (sb.toString());
-
-    }
-
-
-    /**
-     * Trim the capacity of this <code>ArrayList</code> instance to be the
-     * list's current size.  An application can use this operation to minimize
-     * the storage of an <code>ArrayList</code> instance.
-     */
-    public void trimToSize() {
-
-        if (fast) {
-            synchronized (this) {
-                ArrayList temp = (ArrayList) list.clone();
-                temp.trimToSize();
-                list = temp;
-            }
-        } else {
-            synchronized (list) {
-                list.trimToSize();
-            }
-        }
-
-    }
-
-
-
-    private class SubList implements List {
-
-        private int first;
-        private int last;
-        private List expected;
-
-
-        public SubList(int first, int last) {
-            this.first = first;
-            this.last = last;
-            this.expected = list;
-        }
-
-        private List get(List l) {
-            if (list != expected) {
-                throw new ConcurrentModificationException();
-            }
-            return l.subList(first, last);
-        }
-
-        public void clear() {
-            if (fast) {
-                synchronized (FastArrayList.this) {
-                    ArrayList temp = (ArrayList) list.clone();
-                    get(temp).clear();
-                    last = first;
-                    list = temp;
-                    expected = temp;
-                }
-            } else {
-                synchronized (list) {
-                    get(expected).clear();
-                }
-            }
-        }
-
-        public boolean remove(Object o) {
-            if (fast) {
-                synchronized (FastArrayList.this) {
-                    ArrayList temp = (ArrayList) list.clone();
-                    boolean r = get(temp).remove(o);
-                    if (r) last--;
-                    list = temp;
-                    expected = temp;
-                    return r;
-                }
-            } else {
-                synchronized (list) {
-                    return get(expected).remove(o);
-                }
-            }
-        }
-
-        public boolean removeAll(Collection o) {
-            if (fast) {
-                synchronized (FastArrayList.this) {
-                    ArrayList temp = (ArrayList) list.clone();
-                    List sub = get(temp);
-                    boolean r = sub.removeAll(o);
-                    if (r) last = first + sub.size();
-                    list = temp;
-                    expected = temp;
-                    return r;
-                }
-            } else {
-                synchronized (list) {
-                    return get(expected).removeAll(o);
-                }
-            }
-        }
-
-        public boolean retainAll(Collection o) {
-            if (fast) {
-                synchronized (FastArrayList.this) {
-                    ArrayList temp = (ArrayList) list.clone();
-                    List sub = get(temp);
-                    boolean r = sub.retainAll(o);
-                    if (r) last = first + sub.size();
-                    list = temp;
-                    expected = temp;
-                    return r;
-                }
-            } else {
-                synchronized (list) {
-                    return get(expected).retainAll(o);
-                }
-            }
-        }
-
-        public int size() {
-            if (fast) {
-                return get(expected).size();
-            } else {
-                synchronized (list) {
-                    return get(expected).size();
-                }
-            }
-        }
-
-
-        public boolean isEmpty() {
-            if (fast) {
-                return get(expected).isEmpty();
-            } else {
-                synchronized (list) {
-                    return get(expected).isEmpty();
-                }
-            }
-        }
-
-        public boolean contains(Object o) {
-            if (fast) {
-                return get(expected).contains(o);
-            } else {
-                synchronized (list) {
-                    return get(expected).contains(o);
-                }
-            }
-        }
-
-        public boolean containsAll(Collection o) {
-            if (fast) {
-                return get(expected).containsAll(o);
-            } else {
-                synchronized (list) {
-                    return get(expected).containsAll(o);
-                }
-            }
-        }
-
-        public Object[] toArray(Object[] o) {
-            if (fast) {
-                return get(expected).toArray(o);
-            } else {
-                synchronized (list) {
-                    return get(expected).toArray(o);
-                }
-            }
-        }
-
-        public Object[] toArray() {
-            if (fast) {
-                return get(expected).toArray();
-            } else {
-                synchronized (list) {
-                    return get(expected).toArray();
-                }
-            }
-        }
-
-
-        public boolean equals(Object o) {
-            if (o == this) return true;
-            if (fast) {
-                return get(expected).equals(o);
-            } else {
-                synchronized (list) {
-                    return get(expected).equals(o);
-                }
-            }
-        }
-
-        public int hashCode() {
-            if (fast) {
-                return get(expected).hashCode();
-            } else {
-                synchronized (list) {
-                    return get(expected).hashCode();
-                }
-            }
-        }
-
-        public boolean add(Object o) {
-            if (fast) {
-                synchronized (FastArrayList.this) {
-                    ArrayList temp = (ArrayList) list.clone();
-                    boolean r = get(temp).add(o);
-                    if (r) last++;
-                    list = temp;
-                    expected = temp;
-                    return r;
-                }
-            } else {
-                synchronized (list) {
-                    return get(expected).add(o);
-                }
-            }
-        }
-
-        public boolean addAll(Collection o) {
-            if (fast) {
-                synchronized (FastArrayList.this) {
-                    ArrayList temp = (ArrayList) list.clone();
-                    boolean r = get(temp).addAll(o);
-                    if (r) last += o.size();
-                    list = temp;
-                    expected = temp;
-                    return r;
-                }
-            } else {
-                synchronized (list) {
-                    return get(expected).addAll(o);
-                }
-            }
-        }
-
-        public void add(int i, Object o) {
-            if (fast) {
-                synchronized (FastArrayList.this) {
-                    ArrayList temp = (ArrayList) list.clone();
-                    get(temp).add(i, o);
-                    last++;
-                    list = temp;
-                    expected = temp;
-                }
-            } else {
-                synchronized (list) {
-                    get(expected).add(i, o);
-                }
-            }
-        }
-
-        public boolean addAll(int i, Collection o) {
-            if (fast) {
-                synchronized (FastArrayList.this) {
-                    ArrayList temp = (ArrayList) list.clone();
-                    boolean r = get(temp).addAll(i, o);
-                    list = temp;
-                    if (r) last += o.size();
-                    expected = temp;
-                    return r;
-                }
-            } else {
-                synchronized (list) {
-                    return get(expected).addAll(i, o);
-                }
-            }
-        }
-
-        public Object remove(int i) {
-            if (fast) {
-                synchronized (FastArrayList.this) {
-                    ArrayList temp = (ArrayList) list.clone();
-                    Object o = get(temp).remove(i);
-                    last--;
-                    list = temp;
-                    expected = temp;
-                    return o;
-                }
-            } else {
-                synchronized (list) {
-                    return get(expected).remove(i);
-                }
-            }
-        }
-
-        public Object set(int i, Object a) {
-            if (fast) {
-                synchronized (FastArrayList.this) {
-                    ArrayList temp = (ArrayList) list.clone();
-                    Object o = get(temp).set(i, a);
-                    list = temp;
-                    expected = temp;
-                    return o;
-                }
-            } else {
-                synchronized (list) {
-                    return get(expected).set(i, a);
-                }
-            }
-        }
-
-
-        public Iterator iterator() {
-            return new SubListIter(0);
-        }
-
-        public ListIterator listIterator() {
-            return new SubListIter(0);
-        }
-
-        public ListIterator listIterator(int i) {
-            return new SubListIter(i);
-        }
-
-
-        public Object get(int i) {
-            if (fast) {
-                return get(expected).get(i);
-            } else {
-                synchronized (list) {
-                    return get(expected).get(i);
-                }
-            }
-        }
-
-        public int indexOf(Object o) {
-            if (fast) {
-                return get(expected).indexOf(o);
-            } else {
-                synchronized (list) {
-                    return get(expected).indexOf(o);
-                }
-            }
-        }
-
-
-        public int lastIndexOf(Object o) {
-            if (fast) {
-                return get(expected).lastIndexOf(o);
-            } else {
-                synchronized (list) {
-                    return get(expected).lastIndexOf(o);
-                }
-            }
-        }
-
-
-        public List subList(int f, int l) {
-            if (list != expected) {
-                throw new ConcurrentModificationException();
-            }
-            return new SubList(first + f, f + l);
-        }
-
-
-    private class SubListIter implements ListIterator {
-
-        private List expected;
-        private ListIterator iter;
-        private int lastReturnedIndex = -1;
-
-
-        public SubListIter(int i) {
-            this.expected = list;
-            this.iter = SubList.this.get(expected).listIterator(i);
-        }
-
-        private void checkMod() {
-            if (list != expected) {
-                throw new ConcurrentModificationException();
-            }
-        }
-
-        List get() {
-            return SubList.this.get(expected);
-        }
-
-        public boolean hasNext() {
-            checkMod();
-            return iter.hasNext();     
-        }
-
-        public Object next() {
-            checkMod();
-            lastReturnedIndex = iter.nextIndex();
-            return iter.next();
-        }
-
-        public boolean hasPrevious() {
-            checkMod();
-            return iter.hasPrevious();
-        }
-
-        public Object previous() {
-            checkMod();
-            lastReturnedIndex = iter.previousIndex();
-            return iter.previous();
-        }
-
-        public int previousIndex() {
-            checkMod();
-            return iter.previousIndex();
-        }
-
-        public int nextIndex() {
-            checkMod();
-            return iter.nextIndex();
-        }
-
-        public void remove() {
-            checkMod();
-            if (lastReturnedIndex < 0) {
-                throw new IllegalStateException();
-            }
-            get().remove(lastReturnedIndex);
-            last--;
-            expected = list;
-            iter = get().listIterator(lastReturnedIndex);
-            lastReturnedIndex = -1;
-        }
-
-        public void set(Object o) {
-            checkMod();
-            if (lastReturnedIndex < 0) {
-                throw new IllegalStateException();
-            }
-            get().set(lastReturnedIndex, o);
-            expected = list;
-            iter = get().listIterator(previousIndex() + 1);
-        } 
-
-        public void add(Object o) {
-            checkMod();
-            int i = nextIndex();
-            get().add(i, o);
-            last++;
-            expected = list;
-            iter = get().listIterator(i + 1);
-            lastReturnedIndex = -1;
-        }
-
-   }
-
-
-    }
-
-
-
-    private class ListIter implements ListIterator {
-
-        private List expected;
-        private ListIterator iter;
-        private int lastReturnedIndex = -1;
-
-
-        public ListIter(int i) {
-            this.expected = list;
-            this.iter = get().listIterator(i);
-        }
-
-        private void checkMod() {
-            if (list != expected) {
-                throw new ConcurrentModificationException();
-            }
-        }
-
-        List get() {
-            return expected;
-        }
-
-        public boolean hasNext() {
-            return iter.hasNext();     
-        }
-
-        public Object next() {
-            lastReturnedIndex = iter.nextIndex();
-            return iter.next();
-        }
-
-        public boolean hasPrevious() {
-            return iter.hasPrevious();
-        }
-
-        public Object previous() {
-            lastReturnedIndex = iter.previousIndex();
-            return iter.previous();
-        }
-
-        public int previousIndex() {
-            return iter.previousIndex();
-        }
-
-        public int nextIndex() {
-            return iter.nextIndex();
-        }
-
-        public void remove() {
-            checkMod();
-            if (lastReturnedIndex < 0) {
-                throw new IllegalStateException();
-            }
-            get().remove(lastReturnedIndex);
-            expected = list;
-            iter = get().listIterator(lastReturnedIndex);
-            lastReturnedIndex = -1;
-        }
-
-        public void set(Object o) {
-            checkMod();
-            if (lastReturnedIndex < 0) {
-                throw new IllegalStateException();
-            }
-            get().set(lastReturnedIndex, o);
-            expected = list;
-            iter = get().listIterator(previousIndex() + 1);
-        } 
-
-        public void add(Object o) {
-            checkMod();
-            int i = nextIndex();
-            get().add(i, o);
-            expected = list;
-            iter = get().listIterator(i + 1);
-            lastReturnedIndex = -1;
-        }
-
-   }
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/FastHashMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/FastHashMap.java
deleted file mode 100755
index 6671692..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/FastHashMap.java
+++ /dev/null
@@ -1,714 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.Collection;
-import java.util.ConcurrentModificationException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * <p>A customized implementation of <code>java.util.HashMap</code> designed
- * to operate in a multithreaded environment where the large majority of
- * method calls are read-only, instead of structural changes.  When operating
- * in "fast" mode, read calls are non-synchronized and write calls perform the
- * following steps:</p>
- * <ul>
- * <li>Clone the existing collection
- * <li>Perform the modification on the clone
- * <li>Replace the existing collection with the (modified) clone
- * </ul>
- * <p>When first created, objects of this class default to "slow" mode, where
- * all accesses of any type are synchronized but no cloning takes place.  This
- * is appropriate for initially populating the collection, followed by a switch
- * to "fast" mode (by calling <code>setFast(true)</code>) after initialization
- * is complete.</p>
- *
- * <p><strong>NOTE</strong>: If you are creating and accessing a
- * <code>HashMap</code> only within a single thread, you should use
- * <code>java.util.HashMap</code> directly (with no synchronization), for
- * maximum performance.</p>
- *
- * <p><strong>NOTE</strong>: <i>This class is not cross-platform.  
- * Using it may cause unexpected failures on some architectures.</i>
- * It suffers from the same problems as the double-checked locking idiom.  
- * In particular, the instruction that clones the internal collection and the 
- * instruction that sets the internal reference to the clone can be executed 
- * or perceived out-of-order.  This means that any read operation might fail 
- * unexpectedly, as it may be reading the state of the internal collection
- * before the internal collection is fully formed.
- * For more information on the double-checked locking idiom, see the
- * <a href="http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html">
- * Double-Checked Locking Idiom Is Broken Declaration</a>.</p>
- *
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- * 
- * @author Craig R. McClanahan
- * @author Stephen Colebourne
- */
-public class FastHashMap extends HashMap {
-
-    /**
-     * The underlying map we are managing.
-     */
-    protected HashMap map = null;
-
-    /**
-     * Are we currently operating in "fast" mode?
-     */
-    protected boolean fast = false;
-
-    // Constructors
-    // ----------------------------------------------------------------------
-
-    /**
-     * Construct an empty map.
-     */
-    public FastHashMap() {
-        super();
-        this.map = new HashMap();
-    }
-
-    /**
-     * Construct an empty map with the specified capacity.
-     *
-     * @param capacity  the initial capacity of the empty map
-     */
-    public FastHashMap(int capacity) {
-        super();
-        this.map = new HashMap(capacity);
-    }
-
-    /**
-     * Construct an empty map with the specified capacity and load factor.
-     *
-     * @param capacity  the initial capacity of the empty map
-     * @param factor  the load factor of the new map
-     */
-    public FastHashMap(int capacity, float factor) {
-        super();
-        this.map = new HashMap(capacity, factor);
-    }
-
-    /**
-     * Construct a new map with the same mappings as the specified map.
-     *
-     * @param map  the map whose mappings are to be copied
-     */
-    public FastHashMap(Map map) {
-        super();
-        this.map = new HashMap(map);
-    }
-
-
-    // Property access
-    // ----------------------------------------------------------------------
-
-    /**
-     *  Returns true if this map is operating in fast mode.
-     *
-     *  @return true if this map is operating in fast mode
-     */
-    public boolean getFast() {
-        return (this.fast);
-    }
-
-    /**
-     *  Sets whether this map is operating in fast mode.
-     *
-     *  @param fast true if this map should operate in fast mode
-     */
-    public void setFast(boolean fast) {
-        this.fast = fast;
-    }
-
-
-    // Map access
-    // ----------------------------------------------------------------------
-    // These methods can forward straight to the wrapped Map in 'fast' mode.
-    // (because they are query methods)
-
-    /**
-     * Return the value to which this map maps the specified key.  Returns
-     * <code>null</code> if the map contains no mapping for this key, or if
-     * there is a mapping with a value of <code>null</code>.  Use the
-     * <code>containsKey()</code> method to disambiguate these cases.
-     *
-     * @param key  the key whose value is to be returned
-     * @return the value mapped to that key, or null
-     */
-    public Object get(Object key) {
-        if (fast) {
-            return (map.get(key));
-        } else {
-            synchronized (map) {
-                return (map.get(key));
-            }
-        }
-    }
-
-    /**
-     * Return the number of key-value mappings in this map.
-     * 
-     * @return the current size of the map
-     */
-    public int size() {
-        if (fast) {
-            return (map.size());
-        } else {
-            synchronized (map) {
-                return (map.size());
-            }
-        }
-    }
-
-    /**
-     * Return <code>true</code> if this map contains no mappings.
-     * 
-     * @return is the map currently empty
-     */
-    public boolean isEmpty() {
-        if (fast) {
-            return (map.isEmpty());
-        } else {
-            synchronized (map) {
-                return (map.isEmpty());
-            }
-        }
-    }
-
-    /**
-     * Return <code>true</code> if this map contains a mapping for the
-     * specified key.
-     *
-     * @param key  the key to be searched for
-     * @return true if the map contains the key
-     */
-    public boolean containsKey(Object key) {
-        if (fast) {
-            return (map.containsKey(key));
-        } else {
-            synchronized (map) {
-                return (map.containsKey(key));
-            }
-        }
-    }
-
-    /**
-     * Return <code>true</code> if this map contains one or more keys mapping
-     * to the specified value.
-     *
-     * @param value  the value to be searched for
-     * @return true if the map contains the value
-     */
-    public boolean containsValue(Object value) {
-        if (fast) {
-            return (map.containsValue(value));
-        } else {
-            synchronized (map) {
-                return (map.containsValue(value));
-            }
-        }
-    }
-
-    // Map modification
-    // ----------------------------------------------------------------------
-    // These methods perform special behaviour in 'fast' mode.
-    // The map is cloned, updated and then assigned back.
-    // See the comments at the top as to why this won't always work.
-
-    /**
-     * Associate the specified value with the specified key in this map.
-     * If the map previously contained a mapping for this key, the old
-     * value is replaced and returned.
-     *
-     * @param key  the key with which the value is to be associated
-     * @param value  the value to be associated with this key
-     * @return the value previously mapped to the key, or null
-     */
-    public Object put(Object key, Object value) {
-        if (fast) {
-            synchronized (this) {
-                HashMap temp = (HashMap) map.clone();
-                Object result = temp.put(key, value);
-                map = temp;
-                return (result);
-            }
-        } else {
-            synchronized (map) {
-                return (map.put(key, value));
-            }
-        }
-    }
-
-    /**
-     * Copy all of the mappings from the specified map to this one, replacing
-     * any mappings with the same keys.
-     *
-     * @param in  the map whose mappings are to be copied
-     */
-    public void putAll(Map in) {
-        if (fast) {
-            synchronized (this) {
-                HashMap temp = (HashMap) map.clone();
-                temp.putAll(in);
-                map = temp;
-            }
-        } else {
-            synchronized (map) {
-                map.putAll(in);
-            }
-        }
-    }
-
-    /**
-     * Remove any mapping for this key, and return any previously
-     * mapped value.
-     *
-     * @param key  the key whose mapping is to be removed
-     * @return the value removed, or null
-     */
-    public Object remove(Object key) {
-        if (fast) {
-            synchronized (this) {
-                HashMap temp = (HashMap) map.clone();
-                Object result = temp.remove(key);
-                map = temp;
-                return (result);
-            }
-        } else {
-            synchronized (map) {
-                return (map.remove(key));
-            }
-        }
-    }
-
-    /**
-     * Remove all mappings from this map.
-     */
-    public void clear() {
-        if (fast) {
-            synchronized (this) {
-                map = new HashMap();
-            }
-        } else {
-            synchronized (map) {
-                map.clear();
-            }
-        }
-    }
-
-    // Basic object methods
-    // ----------------------------------------------------------------------
-    
-    /**
-     * Compare the specified object with this list for equality.  This
-     * implementation uses exactly the code that is used to define the
-     * list equals function in the documentation for the
-     * <code>Map.equals</code> method.
-     *
-     * @param o  the object to be compared to this list
-     * @return true if the two maps are equal
-     */
-    public boolean equals(Object o) {
-        // Simple tests that require no synchronization
-        if (o == this) {
-            return (true);
-        } else if (!(o instanceof Map)) {
-            return (false);
-        }
-        Map mo = (Map) o;
-
-        // Compare the two maps for equality
-        if (fast) {
-            if (mo.size() != map.size()) {
-                return (false);
-            }
-            Iterator i = map.entrySet().iterator();
-            while (i.hasNext()) {
-                Map.Entry e = (Map.Entry) i.next();
-                Object key = e.getKey();
-                Object value = e.getValue();
-                if (value == null) {
-                    if (!(mo.get(key) == null && mo.containsKey(key))) {
-                        return (false);
-                    }
-                } else {
-                    if (!value.equals(mo.get(key))) {
-                        return (false);
-                    }
-                }
-            }
-            return (true);
-            
-        } else {
-            synchronized (map) {
-                if (mo.size() != map.size()) {
-                    return (false);
-                }
-                Iterator i = map.entrySet().iterator();
-                while (i.hasNext()) {
-                    Map.Entry e = (Map.Entry) i.next();
-                    Object key = e.getKey();
-                    Object value = e.getValue();
-                    if (value == null) {
-                        if (!(mo.get(key) == null && mo.containsKey(key))) {
-                            return (false);
-                        }
-                    } else {
-                        if (!value.equals(mo.get(key))) {
-                            return (false);
-                        }
-                    }
-                }
-                return (true);
-            }
-        }
-    }
-
-    /**
-     * Return the hash code value for this map.  This implementation uses
-     * exactly the code that is used to define the list hash function in the
-     * documentation for the <code>Map.hashCode</code> method.
-     * 
-     * @return suitable integer hash code
-     */
-    public int hashCode() {
-        if (fast) {
-            int h = 0;
-            Iterator i = map.entrySet().iterator();
-            while (i.hasNext()) {
-                h += i.next().hashCode();
-            }
-            return (h);
-        } else {
-            synchronized (map) {
-                int h = 0;
-                Iterator i = map.entrySet().iterator();
-                while (i.hasNext()) {
-                    h += i.next().hashCode();
-                }
-                return (h);
-            }
-        }
-    }
-
-    /**
-     * Return a shallow copy of this <code>FastHashMap</code> instance.
-     * The keys and values themselves are not copied.
-     * 
-     * @return a clone of this map
-     */
-    public Object clone() {
-        FastHashMap results = null;
-        if (fast) {
-            results = new FastHashMap(map);
-        } else {
-            synchronized (map) {
-                results = new FastHashMap(map);
-            }
-        }
-        results.setFast(getFast());
-        return (results);
-    }
-
-    // Map views
-    // ----------------------------------------------------------------------
-    
-    /**
-     * Return a collection view of the mappings contained in this map.  Each
-     * element in the returned collection is a <code>Map.Entry</code>.
-     */
-    public Set entrySet() {
-        return new EntrySet();
-    }
-
-    /**
-     * Return a set view of the keys contained in this map.
-     */
-    public Set keySet() {
-        return new KeySet();
-    }
-
-    /**
-     * Return a collection view of the values contained in this map.
-     */
-    public Collection values() {
-        return new Values();
-    }
-
-    // Map view inner classes
-    // ----------------------------------------------------------------------
-
-    /**
-     * Abstract collection implementation shared by keySet(), values() and entrySet().
-     */
-    private abstract class CollectionView implements Collection {
-
-        public CollectionView() {
-        }
-
-        protected abstract Collection get(Map map);
-        protected abstract Object iteratorNext(Map.Entry entry);
-
-
-        public void clear() {
-            if (fast) {
-                synchronized (FastHashMap.this) {
-                    map = new HashMap();
-                }
-            } else {
-                synchronized (map) {
-                    get(map).clear();
-                }
-            }
-        }
-
-        public boolean remove(Object o) {
-            if (fast) {
-                synchronized (FastHashMap.this) {
-                    HashMap temp = (HashMap) map.clone();
-                    boolean r = get(temp).remove(o);
-                    map = temp;
-                    return r;
-                }
-            } else {
-                synchronized (map) {
-                    return get(map).remove(o);
-                }
-            }
-        }
-
-        public boolean removeAll(Collection o) {
-            if (fast) {
-                synchronized (FastHashMap.this) {
-                    HashMap temp = (HashMap) map.clone();
-                    boolean r = get(temp).removeAll(o);
-                    map = temp;
-                    return r;
-                }
-            } else {
-                synchronized (map) {
-                    return get(map).removeAll(o);
-                }
-            }
-        }
-
-        public boolean retainAll(Collection o) {
-            if (fast) {
-                synchronized (FastHashMap.this) {
-                    HashMap temp = (HashMap) map.clone();
-                    boolean r = get(temp).retainAll(o);
-                    map = temp;
-                    return r;
-                }
-            } else {
-                synchronized (map) {
-                    return get(map).retainAll(o);
-                }
-            }
-        }
-
-        public int size() {
-            if (fast) {
-                return get(map).size();
-            } else {
-                synchronized (map) {
-                    return get(map).size();
-                }
-            }
-        }
-
-
-        public boolean isEmpty() {
-            if (fast) {
-                return get(map).isEmpty();
-            } else {
-                synchronized (map) {
-                    return get(map).isEmpty();
-                }
-            }
-        }
-
-        public boolean contains(Object o) {
-            if (fast) {
-                return get(map).contains(o);
-            } else {
-                synchronized (map) {
-                    return get(map).contains(o);
-                }
-            }
-        }
-
-        public boolean containsAll(Collection o) {
-            if (fast) {
-                return get(map).containsAll(o);
-            } else {
-                synchronized (map) {
-                    return get(map).containsAll(o);
-                }
-            }
-        }
-
-        public Object[] toArray(Object[] o) {
-            if (fast) {
-                return get(map).toArray(o);
-            } else {
-                synchronized (map) {
-                    return get(map).toArray(o);
-                }
-            }
-        }
-
-        public Object[] toArray() {
-            if (fast) {
-                return get(map).toArray();
-            } else {
-                synchronized (map) {
-                    return get(map).toArray();
-                }
-            }
-        }
-
-
-        public boolean equals(Object o) {
-            if (o == this) return true;
-            if (fast) {
-                return get(map).equals(o);
-            } else {
-                synchronized (map) {
-                    return get(map).equals(o);
-                }
-            }
-        }
-
-        public int hashCode() {
-            if (fast) {
-                return get(map).hashCode();
-            } else {
-                synchronized (map) {
-                    return get(map).hashCode();
-                }
-            }
-        }
-
-        public boolean add(Object o) {
-            throw new UnsupportedOperationException();
-        }
-
-        public boolean addAll(Collection c) {
-            throw new UnsupportedOperationException();
-        }
-
-        public Iterator iterator() {
-            return new CollectionViewIterator();
-        }
-
-        private class CollectionViewIterator implements Iterator {
-
-            private Map expected;
-            private Map.Entry lastReturned = null;
-            private Iterator iterator;
-
-            public CollectionViewIterator() {
-                this.expected = map;
-                this.iterator = expected.entrySet().iterator();
-            }
- 
-            public boolean hasNext() {
-                if (expected != map) {
-                    throw new ConcurrentModificationException();
-                }
-                return iterator.hasNext();
-            }
-
-            public Object next() {
-                if (expected != map) {
-                    throw new ConcurrentModificationException();
-                }
-                lastReturned = (Map.Entry)iterator.next();
-                return iteratorNext(lastReturned);
-            }
-
-            public void remove() {
-                if (lastReturned == null) {
-                    throw new IllegalStateException();
-                }
-                if (fast) {
-                    synchronized (FastHashMap.this) {
-                        if (expected != map) {
-                            throw new ConcurrentModificationException();
-                        }
-                        FastHashMap.this.remove(lastReturned.getKey());
-                        lastReturned = null;
-                        expected = map;
-                    }
-                } else {
-                    iterator.remove();
-                    lastReturned = null;
-                }
-            }
-        }
-    }
-
-    /**
-     * Set implementation over the keys of the FastHashMap
-     */
-    private class KeySet extends CollectionView implements Set {
-    
-        protected Collection get(Map map) {
-            return map.keySet();
-        }
-    
-        protected Object iteratorNext(Map.Entry entry) {
-            return entry.getKey();
-        }
-    
-    }
-    
-    /**
-     * Collection implementation over the values of the FastHashMap
-     */
-    private class Values extends CollectionView {
-    
-        protected Collection get(Map map) {
-            return map.values();
-        }
-    
-        protected Object iteratorNext(Map.Entry entry) {
-            return entry.getValue();
-        }
-    }
-    
-    /**
-     * Set implementation over the entries of the FastHashMap
-     */
-    private class EntrySet extends CollectionView implements Set {
-    
-        protected Collection get(Map map) {
-            return map.entrySet();
-        }
-    
-        protected Object iteratorNext(Map.Entry entry) {
-            return entry;
-        }
-    
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/FastTreeMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/FastTreeMap.java
deleted file mode 100755
index 84b59a3..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/FastTreeMap.java
+++ /dev/null
@@ -1,823 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.ConcurrentModificationException;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-/**
- * <p>A customized implementation of <code>java.util.TreeMap</code> designed
- * to operate in a multithreaded environment where the large majority of
- * method calls are read-only, instead of structural changes.  When operating
- * in "fast" mode, read calls are non-synchronized and write calls perform the
- * following steps:</p>
- * <ul>
- * <li>Clone the existing collection
- * <li>Perform the modification on the clone
- * <li>Replace the existing collection with the (modified) clone
- * </ul>
- * <p>When first created, objects of this class default to "slow" mode, where
- * all accesses of any type are synchronized but no cloning takes place.  This
- * is appropriate for initially populating the collection, followed by a switch
- * to "fast" mode (by calling <code>setFast(true)</code>) after initialization
- * is complete.</p>
- *
- * <p><strong>NOTE</strong>: If you are creating and accessing a
- * <code>TreeMap</code> only within a single thread, you should use
- * <code>java.util.TreeMap</code> directly (with no synchronization), for
- * maximum performance.</p>
- *
- * <p><strong>NOTE</strong>: <i>This class is not cross-platform.  
- * Using it may cause unexpected failures on some architectures.</i>
- * It suffers from the same problems as the double-checked locking idiom.  
- * In particular, the instruction that clones the internal collection and the 
- * instruction that sets the internal reference to the clone can be executed 
- * or perceived out-of-order.  This means that any read operation might fail 
- * unexpectedly, as it may be reading the state of the internal collection
- * before the internal collection is fully formed.
- * For more information on the double-checked locking idiom, see the
- * <a href="http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html">
- * Double-Checked Locking Idiom Is Broken Declaration</a>.</p>
- *
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- * 
- * @author Craig R. McClanahan
- * @author Stephen Colebourne
- */
-public class FastTreeMap extends TreeMap {
-
-    /**
-     * The underlying map we are managing.
-     */
-    protected TreeMap map = null;
-
-    /**
-     * Are we operating in "fast" mode?
-     */
-    protected boolean fast = false;
-
-
-    // Constructors
-    // ----------------------------------------------------------------------
-
-    /**
-     * Construct a an empty map.
-     */
-    public FastTreeMap() {
-        super();
-        this.map = new TreeMap();
-    }
-
-    /**
-     * Construct an empty map with the specified comparator.
-     *
-     * @param comparator  the comparator to use for ordering tree elements
-     */
-    public FastTreeMap(Comparator comparator) {
-        super();
-        this.map = new TreeMap(comparator);
-    }
-
-    /**
-     * Construct a new map with the same mappings as the specified map,
-     * sorted according to the keys's natural order
-     *
-     * @param map  the map whose mappings are to be copied
-     */
-    public FastTreeMap(Map map) {
-        super();
-        this.map = new TreeMap(map);
-    }
-
-    /**
-     * Construct a new map with the same mappings as the specified map,
-     * sorted according to the same ordering
-     *
-     * @param map  the map whose mappings are to be copied
-     */
-    public FastTreeMap(SortedMap map) {
-        super();
-        this.map = new TreeMap(map);
-    }
-
-
-    // Property access
-    // ----------------------------------------------------------------------
-
-    /**
-     *  Returns true if this map is operating in fast mode.
-     *
-     *  @return true if this map is operating in fast mode
-     */
-    public boolean getFast() {
-        return (this.fast);
-    }
-
-    /**
-     *  Sets whether this map is operating in fast mode.
-     *
-     *  @param fast true if this map should operate in fast mode
-     */
-    public void setFast(boolean fast) {
-        this.fast = fast;
-    }
-
-
-    // Map access
-    // ----------------------------------------------------------------------
-    // These methods can forward straight to the wrapped Map in 'fast' mode.
-    // (because they are query methods)
-
-    /**
-     * Return the value to which this map maps the specified key.  Returns
-     * <code>null</code> if the map contains no mapping for this key, or if
-     * there is a mapping with a value of <code>null</code>.  Use the
-     * <code>containsKey()</code> method to disambiguate these cases.
-     *
-     * @param key  the key whose value is to be returned
-     * @return the value mapped to that key, or null
-     */
-    public Object get(Object key) {
-        if (fast) {
-            return (map.get(key));
-        } else {
-            synchronized (map) {
-                return (map.get(key));
-            }
-        }
-    }
-
-    /**
-     * Return the number of key-value mappings in this map.
-     * 
-     * @return the current size of the map
-     */
-    public int size() {
-        if (fast) {
-            return (map.size());
-        } else {
-            synchronized (map) {
-                return (map.size());
-            }
-        }
-    }
-
-    /**
-     * Return <code>true</code> if this map contains no mappings.
-     * 
-     * @return is the map currently empty
-     */
-    public boolean isEmpty() {
-        if (fast) {
-            return (map.isEmpty());
-        } else {
-            synchronized (map) {
-                return (map.isEmpty());
-            }
-        }
-    }
-
-    /**
-     * Return <code>true</code> if this map contains a mapping for the
-     * specified key.
-     *
-     * @param key  the key to be searched for
-     * @return true if the map contains the key
-     */
-    public boolean containsKey(Object key) {
-        if (fast) {
-            return (map.containsKey(key));
-        } else {
-            synchronized (map) {
-                return (map.containsKey(key));
-            }
-        }
-    }
-
-    /**
-     * Return <code>true</code> if this map contains one or more keys mapping
-     * to the specified value.
-     *
-     * @param value  the value to be searched for
-     * @return true if the map contains the value
-     */
-    public boolean containsValue(Object value) {
-        if (fast) {
-            return (map.containsValue(value));
-        } else {
-            synchronized (map) {
-                return (map.containsValue(value));
-            }
-        }
-    }
-
-    /**
-     * Return the comparator used to order this map, or <code>null</code>
-     * if this map uses its keys' natural order.
-     * 
-     * @return the comparator used to order the map, or null if natural order
-     */
-    public Comparator comparator() {
-        if (fast) {
-            return (map.comparator());
-        } else {
-            synchronized (map) {
-                return (map.comparator());
-            }
-        }
-    }
-
-    /**
-     * Return the first (lowest) key currently in this sorted map.
-     * 
-     * @return the first key in the map
-     */
-    public Object firstKey() {
-        if (fast) {
-            return (map.firstKey());
-        } else {
-            synchronized (map) {
-                return (map.firstKey());
-            }
-        }
-    }
-
-    /**
-     * Return the last (highest) key currently in this sorted map.
-     * 
-     * @return the last key in the map
-     */
-    public Object lastKey() {
-        if (fast) {
-            return (map.lastKey());
-        } else {
-            synchronized (map) {
-                return (map.lastKey());
-            }
-        }
-    }
-
-
-    // Map modification
-    // ----------------------------------------------------------------------
-    // These methods perform special behaviour in 'fast' mode.
-    // The map is cloned, updated and then assigned back.
-    // See the comments at the top as to why this won't always work.
-
-    /**
-     * Associate the specified value with the specified key in this map.
-     * If the map previously contained a mapping for this key, the old
-     * value is replaced and returned.
-     *
-     * @param key  the key with which the value is to be associated
-     * @param value  the value to be associated with this key
-     * @return the value previously mapped to the key, or null
-     */
-    public Object put(Object key, Object value) {
-        if (fast) {
-            synchronized (this) {
-                TreeMap temp = (TreeMap) map.clone();
-                Object result = temp.put(key, value);
-                map = temp;
-                return (result);
-            }
-        } else {
-            synchronized (map) {
-                return (map.put(key, value));
-            }
-        }
-    }
-
-    /**
-     * Copy all of the mappings from the specified map to this one, replacing
-     * any mappings with the same keys.
-     *
-     * @param in  the map whose mappings are to be copied
-     */
-    public void putAll(Map in) {
-        if (fast) {
-            synchronized (this) {
-                TreeMap temp = (TreeMap) map.clone();
-                temp.putAll(in);
-                map = temp;
-            }
-        } else {
-            synchronized (map) {
-                map.putAll(in);
-            }
-        }
-    }
-
-    /**
-     * Remove any mapping for this key, and return any previously
-     * mapped value.
-     *
-     * @param key  the key whose mapping is to be removed
-     * @return the value removed, or null
-     */
-    public Object remove(Object key) {
-        if (fast) {
-            synchronized (this) {
-                TreeMap temp = (TreeMap) map.clone();
-                Object result = temp.remove(key);
-                map = temp;
-                return (result);
-            }
-        } else {
-            synchronized (map) {
-                return (map.remove(key));
-            }
-        }
-    }
-
-    /**
-     * Remove all mappings from this map.
-     */
-    public void clear() {
-        if (fast) {
-            synchronized (this) {
-                map = new TreeMap();
-            }
-        } else {
-            synchronized (map) {
-                map.clear();
-            }
-        }
-    }
-    
-    
-    // Basic object methods
-    // ----------------------------------------------------------------------
-    
-    /**
-     * Compare the specified object with this list for equality.  This
-     * implementation uses exactly the code that is used to define the
-     * list equals function in the documentation for the
-     * <code>Map.equals</code> method.
-     *
-     * @param o  the object to be compared to this list
-     * @return true if the two maps are equal
-     */
-    public boolean equals(Object o) {
-        // Simple tests that require no synchronization
-        if (o == this) {
-            return (true);
-        } else if (!(o instanceof Map)) {
-            return (false);
-        }
-        Map mo = (Map) o;
-
-        // Compare the two maps for equality
-        if (fast) {
-            if (mo.size() != map.size()) {
-                return (false);
-            }
-            Iterator i = map.entrySet().iterator();
-            while (i.hasNext()) {
-                Map.Entry e = (Map.Entry) i.next();
-                Object key = e.getKey();
-                Object value = e.getValue();
-                if (value == null) {
-                    if (!(mo.get(key) == null && mo.containsKey(key))) {
-                        return (false);
-                    }
-                } else {
-                    if (!value.equals(mo.get(key))) {
-                        return (false);
-                    }
-                }
-            }
-            return (true);
-        } else {
-            synchronized (map) {
-                if (mo.size() != map.size()) {
-                    return (false);
-                }
-                Iterator i = map.entrySet().iterator();
-                while (i.hasNext()) {
-                    Map.Entry e = (Map.Entry) i.next();
-                    Object key = e.getKey();
-                    Object value = e.getValue();
-                    if (value == null) {
-                        if (!(mo.get(key) == null && mo.containsKey(key))) {
-                            return (false);
-                        }
-                    } else {
-                        if (!value.equals(mo.get(key))) {
-                            return (false);
-                        }
-                    }
-                }
-                return (true);
-            }
-        }
-    }
-
-    /**
-     * Return the hash code value for this map.  This implementation uses
-     * exactly the code that is used to define the list hash function in the
-     * documentation for the <code>Map.hashCode</code> method.
-     * 
-     * @return a suitable integer hash code
-     */
-    public int hashCode() {
-        if (fast) {
-            int h = 0;
-            Iterator i = map.entrySet().iterator();
-            while (i.hasNext()) {
-                h += i.next().hashCode();
-            }
-            return (h);
-        } else {
-            synchronized (map) {
-                int h = 0;
-                Iterator i = map.entrySet().iterator();
-                while (i.hasNext()) {
-                    h += i.next().hashCode();
-                }
-                return (h);
-            }
-        }
-    }
-
-    /**
-     * Return a shallow copy of this <code>FastTreeMap</code> instance.
-     * The keys and values themselves are not copied.
-     * 
-     * @return a clone of this map
-     */
-    public Object clone() {
-        FastTreeMap results = null;
-        if (fast) {
-            results = new FastTreeMap(map);
-        } else {
-            synchronized (map) {
-                results = new FastTreeMap(map);
-            }
-        }
-        results.setFast(getFast());
-        return (results);
-    }
-
-
-    // Sub map views
-    // ----------------------------------------------------------------------
-    
-    /**
-     * Return a view of the portion of this map whose keys are strictly
-     * less than the specified key.
-     *
-     * @param key Key higher than any in the returned map
-     * @return a head map
-     */
-    public SortedMap headMap(Object key) {
-        if (fast) {
-            return (map.headMap(key));
-        } else {
-            synchronized (map) {
-                return (map.headMap(key));
-            }
-        }
-    }
-
-    /**
-     * Return a view of the portion of this map whose keys are in the
-     * range fromKey (inclusive) to toKey (exclusive).
-     *
-     * @param fromKey Lower limit of keys for the returned map
-     * @param toKey Upper limit of keys for the returned map
-     * @return a sub map
-     */
-    public SortedMap subMap(Object fromKey, Object toKey) {
-        if (fast) {
-            return (map.subMap(fromKey, toKey));
-        } else {
-            synchronized (map) {
-                return (map.subMap(fromKey, toKey));
-            }
-        }
-    }
-
-    /**
-     * Return a view of the portion of this map whose keys are greater than
-     * or equal to the specified key.
-     *
-     * @param key Key less than or equal to any in the returned map
-     * @return a tail map
-     */
-    public SortedMap tailMap(Object key) {
-        if (fast) {
-            return (map.tailMap(key));
-        } else {
-            synchronized (map) {
-                return (map.tailMap(key));
-            }
-        }
-    }
-
-
-    // Map views
-    // ----------------------------------------------------------------------
-    
-    /**
-     * Return a collection view of the mappings contained in this map.  Each
-     * element in the returned collection is a <code>Map.Entry</code>.
-     */
-    public Set entrySet() {
-        return new EntrySet();
-    }
-
-    /**
-     * Return a set view of the keys contained in this map.
-     */
-    public Set keySet() {
-        return new KeySet();
-    }
-
-    /**
-     * Return a collection view of the values contained in this map.
-     */
-    public Collection values() {
-        return new Values();
-    }
-
-    // Map view inner classes
-    // ----------------------------------------------------------------------
-
-    /**
-     * Abstract collection implementation shared by keySet(), values() and entrySet().
-     */
-    private abstract class CollectionView implements Collection {
-
-        public CollectionView() {
-        }
-
-        protected abstract Collection get(Map map);
-        protected abstract Object iteratorNext(Map.Entry entry);
-
-
-        public void clear() {
-            if (fast) {
-                synchronized (FastTreeMap.this) {
-                    map = new TreeMap();
-                }
-            } else {
-                synchronized (map) {
-                    get(map).clear();
-                }
-            }
-        }
-
-        public boolean remove(Object o) {
-            if (fast) {
-                synchronized (FastTreeMap.this) {
-                    TreeMap temp = (TreeMap) map.clone();
-                    boolean r = get(temp).remove(o);
-                    map = temp;
-                    return r;
-                }
-            } else {
-                synchronized (map) {
-                    return get(map).remove(o);
-                }
-            }
-        }
-
-        public boolean removeAll(Collection o) {
-            if (fast) {
-                synchronized (FastTreeMap.this) {
-                    TreeMap temp = (TreeMap) map.clone();
-                    boolean r = get(temp).removeAll(o);
-                    map = temp;
-                    return r;
-                }
-            } else {
-                synchronized (map) {
-                    return get(map).removeAll(o);
-                }
-            }
-        }
-
-        public boolean retainAll(Collection o) {
-            if (fast) {
-                synchronized (FastTreeMap.this) {
-                    TreeMap temp = (TreeMap) map.clone();
-                    boolean r = get(temp).retainAll(o);
-                    map = temp;
-                    return r;
-                }
-            } else {
-                synchronized (map) {
-                    return get(map).retainAll(o);
-                }
-            }
-        }
-
-        public int size() {
-            if (fast) {
-                return get(map).size();
-            } else {
-                synchronized (map) {
-                    return get(map).size();
-                }
-            }
-        }
-
-
-        public boolean isEmpty() {
-            if (fast) {
-                return get(map).isEmpty();
-            } else {
-                synchronized (map) {
-                    return get(map).isEmpty();
-                }
-            }
-        }
-
-        public boolean contains(Object o) {
-            if (fast) {
-                return get(map).contains(o);
-            } else {
-                synchronized (map) {
-                    return get(map).contains(o);
-                }
-            }
-        }
-
-        public boolean containsAll(Collection o) {
-            if (fast) {
-                return get(map).containsAll(o);
-            } else {
-                synchronized (map) {
-                    return get(map).containsAll(o);
-                }
-            }
-        }
-
-        public Object[] toArray(Object[] o) {
-            if (fast) {
-                return get(map).toArray(o);
-            } else {
-                synchronized (map) {
-                    return get(map).toArray(o);
-                }
-            }
-        }
-
-        public Object[] toArray() {
-            if (fast) {
-                return get(map).toArray();
-            } else {
-                synchronized (map) {
-                    return get(map).toArray();
-                }
-            }
-        }
-
-
-        public boolean equals(Object o) {
-            if (o == this) return true;
-            if (fast) {
-                return get(map).equals(o);
-            } else {
-                synchronized (map) {
-                    return get(map).equals(o);
-                }
-            }
-        }
-
-        public int hashCode() {
-            if (fast) {
-                return get(map).hashCode();
-            } else {
-                synchronized (map) {
-                    return get(map).hashCode();
-                }
-            }
-        }
-
-        public boolean add(Object o) {
-            throw new UnsupportedOperationException();
-        }
-
-        public boolean addAll(Collection c) {
-            throw new UnsupportedOperationException();
-        }
-
-        public Iterator iterator() {
-            return new CollectionViewIterator();
-        }
-
-        private class CollectionViewIterator implements Iterator {
-
-            private Map expected;
-            private Map.Entry lastReturned = null;
-            private Iterator iterator;
-
-            public CollectionViewIterator() {
-                this.expected = map;
-                this.iterator = expected.entrySet().iterator();
-            }
- 
-            public boolean hasNext() {
-                if (expected != map) {
-                    throw new ConcurrentModificationException();
-                }
-                return iterator.hasNext();
-            }
-
-            public Object next() {
-                if (expected != map) {
-                    throw new ConcurrentModificationException();
-                }
-                lastReturned = (Map.Entry)iterator.next();
-                return iteratorNext(lastReturned);
-            }
-
-            public void remove() {
-                if (lastReturned == null) {
-                    throw new IllegalStateException();
-                }
-                if (fast) {
-                    synchronized (FastTreeMap.this) {
-                        if (expected != map) {
-                            throw new ConcurrentModificationException();
-                        }
-                        FastTreeMap.this.remove(lastReturned.getKey());
-                        lastReturned = null;
-                        expected = map;
-                    }
-                } else {
-                    iterator.remove();
-                    lastReturned = null;
-                }
-            }
-        }
-   }
-
-   /**
-    * Set implementation over the keys of the FastTreeMap
-    */
-   private class KeySet extends CollectionView implements Set {
-
-       protected Collection get(Map map) {
-           return map.keySet();
-       }
-
-       protected Object iteratorNext(Map.Entry entry) {
-           return entry.getKey();
-       }       
-
-   }
-
-   /**
-    * Collection implementation over the values of the FastTreeMap
-    */
-   private class Values extends CollectionView {
-
-       protected Collection get(Map map) {
-           return map.values();
-       }
-
-       protected Object iteratorNext(Map.Entry entry) {
-           return entry.getValue();
-       }
-   }
-
-   /**
-    * Set implementation over the entries of the FastTreeMap
-    */
-   private class EntrySet extends CollectionView implements Set {
-
-       protected Collection get(Map map) {
-           return map.entrySet();
-       }
-
-
-       protected Object iteratorNext(Map.Entry entry) {
-           return entry;
-       }
-
-   }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/FunctorException.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/FunctorException.java
deleted file mode 100755
index 43bf743..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/FunctorException.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.io.PrintStream;
-import java.io.PrintWriter;
-
-/**
- * Runtime exception thrown from functors.
- * If required, a root cause error can be wrapped within this one.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- *
- * @author Stephen Colebourne
- */
-public class FunctorException extends RuntimeException {
-    
-    /**
-     * Does JDK support nested exceptions
-     */
-    private static final boolean JDK_SUPPORTS_NESTED;
-    
-    static {
-        boolean flag = false;
-        try {
-            Throwable.class.getDeclaredMethod("getCause", new Class[0]);
-            flag = true;
-        } catch (NoSuchMethodException ex) {
-            flag = false;
-        }
-        JDK_SUPPORTS_NESTED = flag;
-    }
-    
-    /**
-     * Root cause of the exception
-     */
-    private final Throwable rootCause;
-
-    /**
-     * Constructs a new <code>FunctorException</code> without specified
-     * detail message.
-     */
-    public FunctorException() {
-        super();
-        this.rootCause = null;
-    }
-
-    /**
-     * Constructs a new <code>FunctorException</code> with specified
-     * detail message.
-     *
-     * @param msg  the error message.
-     */
-    public FunctorException(String msg) {
-        super(msg);
-        this.rootCause = null;
-    }
-
-    /**
-     * Constructs a new <code>FunctorException</code> with specified
-     * nested <code>Throwable</code> root cause.
-     *
-     * @param rootCause  the exception or error that caused this exception
-     *                   to be thrown.
-     */
-    public FunctorException(Throwable rootCause) {
-        super((rootCause == null ? null : rootCause.getMessage()));
-        this.rootCause = rootCause;
-    }
-
-    /**
-     * Constructs a new <code>FunctorException</code> with specified
-     * detail message and nested <code>Throwable</code> root cause.
-     *
-     * @param msg        the error message.
-     * @param rootCause  the exception or error that caused this exception
-     *                   to be thrown.
-     */
-    public FunctorException(String msg, Throwable rootCause) {
-        super(msg);
-        this.rootCause = rootCause;
-    }
-
-    /**
-     * Gets the cause of this throwable.
-     * 
-     * @return  the cause of this throwable, or <code>null</code>
-     */
-    public Throwable getCause() {
-        return rootCause;
-    }
-
-    /**
-     * Prints the stack trace of this exception to the standard error stream.
-     */
-    public void printStackTrace() {
-        printStackTrace(System.err);
-    }
-
-    /**
-     * Prints the stack trace of this exception to the specified stream.
-     *
-     * @param out  the <code>PrintStream</code> to use for output
-     */
-    public void printStackTrace(PrintStream out) {
-        synchronized (out) {
-            PrintWriter pw = new PrintWriter(out, false);
-            printStackTrace(pw);
-            // Flush the PrintWriter before it's GC'ed.
-            pw.flush();
-        }
-    }
-
-    /**
-     * Prints the stack trace of this exception to the specified writer.
-     *
-     * @param out  the <code>PrintWriter</code> to use for output
-     */
-    public void printStackTrace(PrintWriter out) {
-        synchronized (out) {
-            super.printStackTrace(out);
-            if (rootCause != null && JDK_SUPPORTS_NESTED == false) {
-                out.print("Caused by: ");
-                rootCause.printStackTrace(out);
-            }
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/HashBag.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/HashBag.java
deleted file mode 100755
index 6b485ab..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/HashBag.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.Collection;
-import java.util.HashMap;
-
-/**
- * A {@link Bag} that is backed by a {@link HashMap}.
- *
- * @deprecated Moved to bag subpackage and rewritten internally. Due to be removed in v4.0.
- * @since Commons Collections 2.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- * 
- * @author Chuck Burdick
- */
-public class HashBag extends DefaultMapBag implements Bag {
-
-    /**
-     * Constructs an empty <Code>HashBag</Code>.
-     */
-    public HashBag() {
-        super(new HashMap());
-    }
-
-    /**
-     * Constructs a {@link Bag} containing all the members of the given
-     * collection.
-     * 
-     * @param coll  a collection to copy into this bag
-     */
-    public HashBag(Collection coll) {
-        this();
-        addAll(coll);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/IterableMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/IterableMap.java
deleted file mode 100755
index d5cc159..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/IterableMap.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.Map;
-
-/**
- * Defines a map that can be iterated directly without needing to create an entry set.
- * <p>
- * A map iterator is an efficient way of iterating over maps.
- * There is no need to access the entry set or cast to Map Entry objects.
- * <pre>
- * IterableMap map = new HashedMap();
- * MapIterator it = map.mapIterator();
- * while (it.hasNext()) {
- *   Object key = it.next();
- *   Object value = it.getValue();
- *   it.setValue("newValue");
- * }
- * </pre>
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- *
- * @author Stephen Colebourne
- */
-public interface IterableMap extends Map {
-
-    /**
-     * Obtains a <code>MapIterator</code> over the map.
-     * <p>
-     * A map iterator is an efficient way of iterating over maps.
-     * There is no need to access the entry set or cast to Map Entry objects.
-     * <pre>
-     * IterableMap map = new HashedMap();
-     * MapIterator it = map.mapIterator();
-     * while (it.hasNext()) {
-     *   Object key = it.next();
-     *   Object value = it.getValue();
-     *   it.setValue("newValue");
-     * }
-     * </pre>
-     * 
-     * @return a map iterator
-     */
-    MapIterator mapIterator();
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/IteratorUtils.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/IteratorUtils.java
deleted file mode 100755
index a8c833e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/IteratorUtils.java
+++ /dev/null
@@ -1,913 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.lang.reflect.Array;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-
-import org.apache.commons.collections.iterators.ArrayIterator;
-import org.apache.commons.collections.iterators.ArrayListIterator;
-import org.apache.commons.collections.iterators.CollatingIterator;
-import org.apache.commons.collections.iterators.EmptyIterator;
-import org.apache.commons.collections.iterators.EmptyListIterator;
-import org.apache.commons.collections.iterators.EmptyMapIterator;
-import org.apache.commons.collections.iterators.EmptyOrderedIterator;
-import org.apache.commons.collections.iterators.EmptyOrderedMapIterator;
-import org.apache.commons.collections.iterators.EnumerationIterator;
-import org.apache.commons.collections.iterators.FilterIterator;
-import org.apache.commons.collections.iterators.FilterListIterator;
-import org.apache.commons.collections.iterators.IteratorChain;
-import org.apache.commons.collections.iterators.IteratorEnumeration;
-import org.apache.commons.collections.iterators.ListIteratorWrapper;
-import org.apache.commons.collections.iterators.LoopingIterator;
-import org.apache.commons.collections.iterators.LoopingListIterator;
-import org.apache.commons.collections.iterators.ObjectArrayIterator;
-import org.apache.commons.collections.iterators.ObjectArrayListIterator;
-import org.apache.commons.collections.iterators.ObjectGraphIterator;
-import org.apache.commons.collections.iterators.SingletonIterator;
-import org.apache.commons.collections.iterators.SingletonListIterator;
-import org.apache.commons.collections.iterators.TransformIterator;
-import org.apache.commons.collections.iterators.UnmodifiableIterator;
-import org.apache.commons.collections.iterators.UnmodifiableListIterator;
-import org.apache.commons.collections.iterators.UnmodifiableMapIterator;
-
-/**
- * Provides static utility methods and decorators for {@link Iterator} 
- * instances. The implementations are provided in the iterators subpackage.
- * <p>
- * WARNING: Due to human error certain binary incompatabilities were introduced
- * between Commons Collections 2.1 and 3.0. The class remained source and test
- * compatible, so if you can recompile all your classes and dependencies
- * everything is OK. Those methods which are binary incompatible are marked as
- * such, together with alternate solutions that are binary compatible
- * against versions 2.1.1 and 3.1.
- *
- * @since Commons Collections 2.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- * 
- * @author Stephen Colebourne
- * @author Phil Steitz
- */
-public class IteratorUtils {
-    // validation is done in this class in certain cases because the
-    // public classes allow invalid states
-
-    /**
-     * An iterator over no elements.
-     * <p>
-     * WARNING: This constant is binary incompatible with Commons Collections 2.1 and 2.1.1.
-     * Use <code>EmptyIterator.INSTANCE</code> for compatability with Commons Collections 2.1.1.
-     */
-    public static final ResettableIterator EMPTY_ITERATOR = EmptyIterator.RESETTABLE_INSTANCE;
-    /**
-     * A list iterator over no elements.
-     * <p>
-     * WARNING: This constant is binary incompatible with Commons Collections 2.1 and 2.1.1.
-     * Use <code>EmptyListIterator.INSTANCE</code> for compatability with Commons Collections 2.1.1.
-     */
-    public static final ResettableListIterator EMPTY_LIST_ITERATOR = EmptyListIterator.RESETTABLE_INSTANCE;
-    /**
-     * An ordered iterator over no elements.
-     */    
-    public static final OrderedIterator EMPTY_ORDERED_ITERATOR = EmptyOrderedIterator.INSTANCE;
-    /**
-     * A map iterator over no elements.
-     */    
-    public static final MapIterator EMPTY_MAP_ITERATOR = EmptyMapIterator.INSTANCE;
-    /**
-     * An ordered map iterator over no elements.
-     */    
-    public static final OrderedMapIterator EMPTY_ORDERED_MAP_ITERATOR = EmptyOrderedMapIterator.INSTANCE;
-
-    /**
-     * IteratorUtils is not normally instantiated.
-     */
-    public IteratorUtils() {
-    }
-
-    // Empty
-    //-----------------------------------------------------------------------
-    /**
-     * Gets an empty iterator.
-     * <p>
-     * This iterator is a valid iterator object that will iterate over
-     * nothing.
-     * <p>
-     * WARNING: This method is binary incompatible with Commons Collections 2.1 and 2.1.1.
-     * Use <code>EmptyIterator.INSTANCE</code> for compatability with Commons Collections 2.1.1.
-     *
-     * @return  an iterator over nothing
-     */
-    public static ResettableIterator emptyIterator() {
-        return EMPTY_ITERATOR;
-    }
-
-    /**
-     * Gets an empty list iterator.
-     * <p>
-     * This iterator is a valid list iterator object that will iterate 
-     * over nothing.
-     * <p>
-     * WARNING: This method is binary incompatible with Commons Collections 2.1 and 2.1.1.
-     * Use <code>EmptyListIterator.INSTANCE</code> for compatability with Commons Collections 2.1.1.
-     *
-     * @return  a list iterator over nothing
-     */
-    public static ResettableListIterator emptyListIterator() {
-        return EMPTY_LIST_ITERATOR;
-    }
-
-    /**
-     * Gets an empty ordered iterator.
-     * <p>
-     * This iterator is a valid iterator object that will iterate 
-     * over nothing.
-     *
-     * @return  an ordered iterator over nothing
-     */
-    public static OrderedIterator emptyOrderedIterator() {
-        return EMPTY_ORDERED_ITERATOR;
-    }
-
-    /**
-     * Gets an empty map iterator.
-     * <p>
-     * This iterator is a valid map iterator object that will iterate 
-     * over nothing.
-     *
-     * @return  a map iterator over nothing
-     */
-    public static MapIterator emptyMapIterator() {
-        return EMPTY_MAP_ITERATOR;
-    }
-
-    /**
-     * Gets an empty ordered map iterator.
-     * <p>
-     * This iterator is a valid map iterator object that will iterate 
-     * over nothing.
-     *
-     * @return  a map iterator over nothing
-     */
-    public static OrderedMapIterator emptyOrderedMapIterator() {
-        return EMPTY_ORDERED_MAP_ITERATOR;
-    }
-
-    // Singleton
-    //-----------------------------------------------------------------------
-    /**
-     * Gets a singleton iterator.
-     * <p>
-     * This iterator is a valid iterator object that will iterate over
-     * the specified object.
-     * <p>
-     * WARNING: This method is binary incompatible with Commons Collections 2.1 and 2.1.1.
-     * Use <code>new SingletonIterator(object)</code> for compatability.
-     *
-     * @param object  the single object over which to iterate
-     * @return  a singleton iterator over the object
-     */
-    public static ResettableIterator singletonIterator(Object object) {
-        return new SingletonIterator(object);
-    }
-
-    /**
-     * Gets a singleton list iterator.
-     * <p>
-     * This iterator is a valid list iterator object that will iterate over
-     * the specified object.
-     *
-     * @param object  the single object over which to iterate
-     * @return  a singleton list iterator over the object
-     */
-    public static ListIterator singletonListIterator(Object object) {
-        return new SingletonListIterator(object);
-    }
-
-    // Arrays
-    //-----------------------------------------------------------------------
-    /**
-     * Gets an iterator over an object array.
-     * <p>
-     * WARNING: This method is binary incompatible with Commons Collections 2.1 and 2.1.1.
-     * Use <code>new ArrayIterator(array)</code> for compatability.
-     *
-     * @param array  the array over which to iterate
-     * @return  an iterator over the array
-     * @throws NullPointerException if array is null
-     */
-    public static ResettableIterator arrayIterator(Object[] array) {
-        return new ObjectArrayIterator(array);
-    }
-
-    /**
-     * Gets an iterator over an object or primitive array.
-     * <p>
-     * This method will handle primitive arrays as well as object arrays.
-     * The primitives will be wrapped in the appropriate wrapper class.
-     *
-     * @param array  the array over which to iterate
-     * @return  an iterator over the array
-     * @throws IllegalArgumentException if the array is not an array
-     * @throws NullPointerException if array is null
-     */
-    public static ResettableIterator arrayIterator(Object array) {
-        return new ArrayIterator(array);
-    }
-
-    /**
-     * Gets an iterator over the end part of an object array.
-     * <p>
-     * WARNING: This method is binary incompatible with Commons Collections 2.1 and 2.1.1.
-     * Use <code>new ArrayIterator(array,start)</code> for compatability.
-     *
-     * @param array  the array over which to iterate
-     * @param start  the index to start iterating at
-     * @return an iterator over part of the array
-     * @throws IndexOutOfBoundsException if start is less than zero or greater
-     *  than the length of the array
-     * @throws NullPointerException if array is null
-     */
-    public static ResettableIterator arrayIterator(Object[] array, int start) {
-        return new ObjectArrayIterator(array, start);
-    }
-
-    /**
-     * Gets an iterator over the end part of an object or primitive array.
-     * <p>
-     * This method will handle primitive arrays as well as object arrays.
-     * The primitives will be wrapped in the appropriate wrapper class.
-     *
-     * @param array  the array over which to iterate
-     * @param start  the index to start iterating at
-     * @return an iterator over part of the array
-     * @throws IllegalArgumentException if the array is not an array
-     * @throws IndexOutOfBoundsException if start is less than zero or greater
-     *  than the length of the array
-     * @throws NullPointerException if array is null
-     */
-    public static ResettableIterator arrayIterator(Object array, int start) {
-        return new ArrayIterator(array, start);
-    }
-
-    /**
-     * Gets an iterator over part of an object array.
-     * <p>
-     * WARNING: This method is binary incompatible with Commons Collections 2.1 and 2.1.1.
-     * Use <code>new ArrayIterator(array,start,end)</code> for compatability.
-     *
-     * @param array  the array over which to iterate
-     * @param start  the index to start iterating at
-     * @param end  the index to finish iterating at
-     * @return an iterator over part of the array
-     * @throws IndexOutOfBoundsException if array bounds are invalid
-     * @throws IllegalArgumentException if end is before start
-     * @throws NullPointerException if array is null
-     */
-    public static ResettableIterator arrayIterator(Object[] array, int start, int end) {
-        return new ObjectArrayIterator(array, start, end);
-    }
-
-    /**
-     * Gets an iterator over part of an object or primitive array.
-     * <p>
-     * This method will handle primitive arrays as well as object arrays.
-     * The primitives will be wrapped in the appropriate wrapper class.
-     *
-     * @param array  the array over which to iterate
-     * @param start  the index to start iterating at
-     * @param end  the index to finish iterating at
-     * @return an iterator over part of the array
-     * @throws IllegalArgumentException if the array is not an array
-     * @throws IndexOutOfBoundsException if array bounds are invalid
-     * @throws IllegalArgumentException if end is before start
-     * @throws NullPointerException if array is null
-     */
-    public static ResettableIterator arrayIterator(Object array, int start, int end) {
-        return new ArrayIterator(array, start, end);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets a list iterator over an object array.
-     *
-     * @param array  the array over which to iterate
-     * @return  a list iterator over the array
-     * @throws NullPointerException if array is null
-     */
-    public static ResettableListIterator arrayListIterator(Object[] array) {
-        return new ObjectArrayListIterator(array);
-    }
-
-    /**
-     * Gets a list iterator over an object or primitive array.
-     * <p>
-     * This method will handle primitive arrays as well as object arrays.
-     * The primitives will be wrapped in the appropriate wrapper class.
-     *
-     * @param array  the array over which to iterate
-     * @return  a list iterator over the array
-     * @throws IllegalArgumentException if the array is not an array
-     * @throws NullPointerException if array is null
-     */
-    public static ResettableListIterator arrayListIterator(Object array) {
-        return new ArrayListIterator(array);
-    }
-
-    /**
-     * Gets a list iterator over the end part of an object array.
-     *
-     * @param array  the array over which to iterate
-     * @param start  the index to start iterating at
-     * @return a list iterator over part of the array
-     * @throws IndexOutOfBoundsException if start is less than zero
-     * @throws NullPointerException if array is null
-     */
-    public static ResettableListIterator arrayListIterator(Object[] array, int start) {
-        return new ObjectArrayListIterator(array, start);
-    }
-
-    /**
-     * Gets a list iterator over the end part of an object or primitive array.
-     * <p>
-     * This method will handle primitive arrays as well as object arrays.
-     * The primitives will be wrapped in the appropriate wrapper class.
-     *
-     * @param array  the array over which to iterate
-     * @param start  the index to start iterating at
-     * @return a list iterator over part of the array
-     * @throws IllegalArgumentException if the array is not an array
-     * @throws IndexOutOfBoundsException if start is less than zero
-     * @throws NullPointerException if array is null
-     */
-    public static ResettableListIterator arrayListIterator(Object array, int start) {
-        return new ArrayListIterator(array, start);
-    }
-
-    /**
-     * Gets a list iterator over part of an object array.
-     *
-     * @param array  the array over which to iterate
-     * @param start  the index to start iterating at
-     * @param end  the index to finish iterating at
-     * @return a list iterator over part of the array
-     * @throws IndexOutOfBoundsException if array bounds are invalid
-     * @throws IllegalArgumentException if end is before start
-     * @throws NullPointerException if array is null
-     */
-    public static ResettableListIterator arrayListIterator(Object[] array, int start, int end) {
-        return new ObjectArrayListIterator(array, start, end);
-    }
-    
-    /**
-     * Gets a list iterator over part of an object or primitive array.
-     * <p>
-     * This method will handle primitive arrays as well as object arrays.
-     * The primitives will be wrapped in the appropriate wrapper class.
-     *
-     * @param array  the array over which to iterate
-     * @param start  the index to start iterating at
-     * @param end  the index to finish iterating at
-     * @return a list iterator over part of the array
-     * @throws IllegalArgumentException if the array is not an array
-     * @throws IndexOutOfBoundsException if array bounds are invalid
-     * @throws IllegalArgumentException if end is before start
-     * @throws NullPointerException if array is null
-     */
-    public static ResettableListIterator arrayListIterator(Object array, int start, int end) {
-        return new ArrayListIterator(array, start, end);
-    }
-    
-    // Unmodifiable
-    //-----------------------------------------------------------------------
-    /**
-     * Gets an immutable version of an {@link Iterator}. The returned object
-     * will always throw an {@link UnsupportedOperationException} for
-     * the {@link Iterator#remove} method.
-     *
-     * @param iterator  the iterator to make immutable
-     * @return an immutable version of the iterator
-     */
-    public static Iterator unmodifiableIterator(Iterator iterator) {
-        return UnmodifiableIterator.decorate(iterator);
-    }
-    
-    /**
-     * Gets an immutable version of a {@link ListIterator}. The returned object
-     * will always throw an {@link UnsupportedOperationException} for
-     * the {@link Iterator#remove}, {@link ListIterator#add} and
-     * {@link ListIterator#set} methods.
-     *
-     * @param listIterator  the iterator to make immutable
-     * @return an immutable version of the iterator
-     */
-    public static ListIterator unmodifiableListIterator(ListIterator listIterator) {
-        return UnmodifiableListIterator.decorate(listIterator);
-    }
-
-    /**
-     * Gets an immutable version of a {@link MapIterator}. The returned object
-     * will always throw an {@link UnsupportedOperationException} for
-     * the {@link Iterator#remove}, {@link MapIterator#setValue(Object)} methods.
-     *
-     * @param mapIterator  the iterator to make immutable
-     * @return an immutable version of the iterator
-     */
-    public static MapIterator unmodifiableMapIterator(MapIterator mapIterator) {
-        return UnmodifiableMapIterator.decorate(mapIterator);
-    }
-
-    // Chained
-    //-----------------------------------------------------------------------
-    /**
-     * Gets an iterator that iterates through two {@link Iterator}s 
-     * one after another.
-     *
-     * @param iterator1  the first iterators to use, not null
-     * @param iterator2  the first iterators to use, not null
-     * @return a combination iterator over the iterators
-     * @throws NullPointerException if either iterator is null
-     */
-    public static Iterator chainedIterator(Iterator iterator1, Iterator iterator2) {
-        return new IteratorChain(iterator1, iterator2);
-    }
-
-    /**
-     * Gets an iterator that iterates through an array of {@link Iterator}s 
-     * one after another.
-     *
-     * @param iterators  the iterators to use, not null or empty or contain nulls
-     * @return a combination iterator over the iterators
-     * @throws NullPointerException if iterators array is null or contains a null
-     */
-    public static Iterator chainedIterator(Iterator[] iterators) {
-        return new IteratorChain(iterators);
-    }
-
-    /**
-     * Gets an iterator that iterates through a collections of {@link Iterator}s 
-     * one after another.
-     *
-     * @param iterators  the iterators to use, not null or empty or contain nulls
-     * @return a combination iterator over the iterators
-     * @throws NullPointerException if iterators collection is null or contains a null
-     * @throws ClassCastException if the iterators collection contains the wrong object type
-     */
-    public static Iterator chainedIterator(Collection iterators) {
-        return new IteratorChain(iterators);
-    }
-
-    // Collated
-    //-----------------------------------------------------------------------
-    /**
-     * Gets an iterator that provides an ordered iteration over the elements
-     * contained in a collection of ordered {@link Iterator}s.
-     * <p>
-     * Given two ordered {@link Iterator}s <code>A</code> and <code>B</code>,
-     * the {@link Iterator#next()} method will return the lesser of 
-     * <code>A.next()</code> and <code>B.next()</code>.
-     * <p>
-     * The comparator is optional. If null is specified then natural order is used.
-     *
-     * @param comparator  the comparator to use, may be null for natural order
-     * @param iterator1  the first iterators to use, not null
-     * @param iterator2  the first iterators to use, not null
-     * @return a combination iterator over the iterators
-     * @throws NullPointerException if either iterator is null
-     */
-    public static Iterator collatedIterator(Comparator comparator, Iterator iterator1, Iterator iterator2) {
-        return new CollatingIterator(comparator, iterator1, iterator2);
-    }
-
-    /**
-     * Gets an iterator that provides an ordered iteration over the elements
-     * contained in an array of {@link Iterator}s.
-     * <p>
-     * Given two ordered {@link Iterator}s <code>A</code> and <code>B</code>,
-     * the {@link Iterator#next()} method will return the lesser of 
-     * <code>A.next()</code> and <code>B.next()</code> and so on.
-     * <p>
-     * The comparator is optional. If null is specified then natural order is used.
-     *
-     * @param comparator  the comparator to use, may be null for natural order
-     * @param iterators  the iterators to use, not null or empty or contain nulls
-     * @return a combination iterator over the iterators
-     * @throws NullPointerException if iterators array is null or contains a null
-     */
-    public static Iterator collatedIterator(Comparator comparator, Iterator[] iterators) {
-        return new CollatingIterator(comparator, iterators);
-    }
-
-    /**
-     * Gets an iterator that provides an ordered iteration over the elements
-     * contained in a collection of {@link Iterator}s.
-     * <p>
-     * Given two ordered {@link Iterator}s <code>A</code> and <code>B</code>,
-     * the {@link Iterator#next()} method will return the lesser of 
-     * <code>A.next()</code> and <code>B.next()</code> and so on.
-     * <p>
-     * The comparator is optional. If null is specified then natural order is used.
-     *
-     * @param comparator  the comparator to use, may be null for natural order
-     * @param iterators  the iterators to use, not null or empty or contain nulls
-     * @return a combination iterator over the iterators
-     * @throws NullPointerException if iterators collection is null or contains a null
-     * @throws ClassCastException if the iterators collection contains the wrong object type
-     */
-    public static Iterator collatedIterator(Comparator comparator, Collection iterators) {
-        return new CollatingIterator(comparator, iterators);
-    }
-    
-    // Object Graph
-    //-----------------------------------------------------------------------
-    /**
-     * Gets an iterator that operates over an object graph.
-     * <p>
-     * This iterator can extract multiple objects from a complex tree-like object graph.
-     * The iteration starts from a single root object.
-     * It uses a <code>Transformer</code> to extract the iterators and elements.
-     * Its main benefit is that no intermediate <code>List</code> is created.
-     * <p>
-     * For example, consider an object graph:
-     * <pre>
-     *                 |- Branch -- Leaf
-     *                 |         \- Leaf
-     *         |- Tree |         /- Leaf
-     *         |       |- Branch -- Leaf
-     *  Forest |                 \- Leaf
-     *         |       |- Branch -- Leaf
-     *         |       |         \- Leaf
-     *         |- Tree |         /- Leaf
-     *                 |- Branch -- Leaf
-     *                 |- Branch -- Leaf</pre>
-     * The following <code>Transformer</code>, used in this class, will extract all
-     * the Leaf objects without creating a combined intermediate list:
-     * <pre>
-     * public Object transform(Object input) {
-     *   if (input instanceof Forest) {
-     *     return ((Forest) input).treeIterator();
-     *   }
-     *   if (input instanceof Tree) {
-     *     return ((Tree) input).branchIterator();
-     *   }
-     *   if (input instanceof Branch) {
-     *     return ((Branch) input).leafIterator();
-     *   }
-     *   if (input instanceof Leaf) {
-     *     return input;
-     *   }
-     *   throw new ClassCastException();
-     * }</pre>
-     * <p>
-     * Internally, iteration starts from the root object. When next is called,
-     * the transformer is called to examine the object. The transformer will return
-     * either an iterator or an object. If the object is an Iterator, the next element
-     * from that iterator is obtained and the process repeats. If the element is an object
-     * it is returned.
-     * <p>
-     * Under many circumstances, linking Iterators together in this manner is
-     * more efficient (and convenient) than using nested for loops to extract a list.
-     * 
-     * @param root  the root object to start iterating from, null results in an empty iterator
-     * @param transformer  the transformer to use, see above, null uses no effect transformer
-     * @return a new object graph iterator
-     * @since Commons Collections 3.1
-     */
-    public static Iterator objectGraphIterator(Object root, Transformer transformer) {
-        return new ObjectGraphIterator(root, transformer);
-    }
-    
-    // Transformed
-    //-----------------------------------------------------------------------
-    /**
-     * Gets an iterator that transforms the elements of another iterator.
-     * <p>
-     * The transformation occurs during the next() method and the underlying
-     * iterator is unaffected by the transformation.
-     *
-     * @param iterator  the iterator to use, not null
-     * @param transform  the transform to use, not null
-     * @return a new transforming iterator
-     * @throws NullPointerException if either parameter is null
-     */
-    public static Iterator transformedIterator(Iterator iterator, Transformer transform) {
-        if (iterator == null) {
-            throw new NullPointerException("Iterator must not be null");
-        }
-        if (transform == null) {
-            throw new NullPointerException("Transformer must not be null");
-        }
-        return new TransformIterator(iterator, transform);
-    }
-    
-    // Filtered
-    //-----------------------------------------------------------------------
-    /**
-     * Gets an iterator that filters another iterator.
-     * <p>
-     * The returned iterator will only return objects that match the specified
-     * filtering predicate.
-     *
-     * @param iterator  the iterator to use, not null
-     * @param predicate  the predicate to use as a filter, not null
-     * @return a new filtered iterator
-     * @throws NullPointerException if either parameter is null
-     */
-    public static Iterator filteredIterator(Iterator iterator, Predicate predicate) {
-        if (iterator == null) {
-            throw new NullPointerException("Iterator must not be null");
-        }
-        if (predicate == null) {
-            throw new NullPointerException("Predicate must not be null");
-        }
-        return new FilterIterator(iterator, predicate);
-    }
-    
-    /**
-     * Gets a list iterator that filters another list iterator.
-     * <p>
-     * The returned iterator will only return objects that match the specified
-     * filtering predicate.
-     *
-     * @param listIterator  the list iterator to use, not null
-     * @param predicate  the predicate to use as a filter, not null
-     * @return a new filtered iterator
-     * @throws NullPointerException if either parameter is null
-     */
-    public static ListIterator filteredListIterator(ListIterator listIterator, Predicate predicate) {
-        if (listIterator == null) {
-            throw new NullPointerException("ListIterator must not be null");
-        }
-        if (predicate == null) {
-            throw new NullPointerException("Predicate must not be null");
-        }
-        return new FilterListIterator(listIterator, predicate);
-    }
-    
-    // Looping
-    //-----------------------------------------------------------------------
-    /**
-     * Gets an iterator that loops continuously over the supplied collection.
-     * <p>
-     * The iterator will only stop looping if the remove method is called
-     * enough times to empty the collection, or if the collection is empty
-     * to start with.
-     *
-     * @param coll  the collection to iterate over, not null
-     * @return a new looping iterator
-     * @throws NullPointerException if the collection is null
-     */
-    public static ResettableIterator loopingIterator(Collection coll) {
-        if (coll == null) {
-            throw new NullPointerException("Collection must not be null");
-        }
-        return new LoopingIterator(coll);
-    }
-    
-    /**
-     * Gets an iterator that loops continuously over the supplied list.
-     * <p>
-     * The iterator will only stop looping if the remove method is called
-     * enough times to empty the list, or if the list is empty to start with.
-     *
-     * @param list  the list to iterate over, not null
-     * @return a new looping iterator
-     * @throws NullPointerException if the list is null
-     * @since Commons Collections 3.2
-     */
-    public static ResettableListIterator loopingListIterator(List list) {
-        if (list == null) {
-            throw new NullPointerException("List must not be null");
-        }
-        return new LoopingListIterator(list);
-    }
-    
-    // Views
-    //-----------------------------------------------------------------------
-    /**
-     * Gets an iterator that provides an iterator view of the given enumeration.
-     *
-     * @param enumeration  the enumeration to use
-     * @return a new iterator
-     */
-    public static Iterator asIterator(Enumeration enumeration) {
-        if (enumeration == null) {
-            throw new NullPointerException("Enumeration must not be null");
-        }
-        return new EnumerationIterator(enumeration);
-    }
-
-    /**
-     * Gets an iterator that provides an iterator view of the given enumeration 
-     * that will remove elements from the specified collection.
-     *
-     * @param enumeration  the enumeration to use
-     * @param removeCollection  the collection to remove elements from
-     * @return a new iterator
-     */
-    public static Iterator asIterator(Enumeration enumeration, Collection removeCollection) {
-        if (enumeration == null) {
-            throw new NullPointerException("Enumeration must not be null");
-        }
-        if (removeCollection == null) {
-            throw new NullPointerException("Collection must not be null");
-        }
-        return new EnumerationIterator(enumeration, removeCollection);
-    }
-    
-    /**
-     * Gets an enumeration that wraps an iterator.
-     *
-     * @param iterator  the iterator to use, not null
-     * @return a new enumeration
-     * @throws NullPointerException if iterator is null
-     */
-    public static Enumeration asEnumeration(Iterator iterator) {
-        if (iterator == null) {
-            throw new NullPointerException("Iterator must not be null");
-        }
-        return new IteratorEnumeration(iterator);
-    }
-    
-    /**
-     * Gets a list iterator based on a simple iterator.
-     * <p>
-     * As the wrapped Iterator is traversed, a LinkedList of its values is
-     * cached, permitting all required operations of ListIterator.
-     *
-     * @param iterator  the iterator to use, not null
-     * @return a new iterator
-     * @throws NullPointerException if iterator parameter is null
-     */
-    public static ListIterator toListIterator(Iterator iterator) {
-        if (iterator == null) {
-            throw new NullPointerException("Iterator must not be null");
-        }
-        return new ListIteratorWrapper(iterator);
-    }
-    
-    /**
-     * Gets an array based on an iterator.
-     * <p>
-     * As the wrapped Iterator is traversed, an ArrayList of its values is
-     * created. At the end, this is converted to an array.
-     *
-     * @param iterator  the iterator to use, not null
-     * @return an array of the iterator contents
-     * @throws NullPointerException if iterator parameter is null
-     */
-    public static Object[] toArray(Iterator iterator) {
-        if (iterator == null) {
-            throw new NullPointerException("Iterator must not be null");
-        }
-        List list = toList(iterator, 100);
-        return list.toArray();
-    }
-    
-    /**
-     * Gets an array based on an iterator.
-     * <p>
-     * As the wrapped Iterator is traversed, an ArrayList of its values is
-     * created. At the end, this is converted to an array.
-     *
-     * @param iterator  the iterator to use, not null
-     * @param arrayClass  the class of array to create
-     * @return an array of the iterator contents
-     * @throws NullPointerException if iterator parameter is null
-     * @throws NullPointerException if arrayClass is null
-     * @throws ClassCastException if the arrayClass is invalid
-     */
-    public static Object[] toArray(Iterator iterator, Class arrayClass) {
-        if (iterator == null) {
-            throw new NullPointerException("Iterator must not be null");
-        }
-        if (arrayClass == null) {
-            throw new NullPointerException("Array class must not be null");
-        }
-        List list = toList(iterator, 100);
-        return list.toArray((Object[]) Array.newInstance(arrayClass, list.size()));
-    }
-    
-    /**
-     * Gets a list based on an iterator.
-     * <p>
-     * As the wrapped Iterator is traversed, an ArrayList of its values is
-     * created. At the end, the list is returned.
-     *
-     * @param iterator  the iterator to use, not null
-     * @return a list of the iterator contents
-     * @throws NullPointerException if iterator parameter is null
-     */
-    public static List toList(Iterator iterator) {
-        return toList(iterator, 10);
-    }
-    
-    /**
-     * Gets a list based on an iterator.
-     * <p>
-     * As the wrapped Iterator is traversed, an ArrayList of its values is
-     * created. At the end, the list is returned.
-     *
-     * @param iterator  the iterator to use, not null
-     * @param estimatedSize  the initial size of the ArrayList
-     * @return a list of the iterator contents
-     * @throws NullPointerException if iterator parameter is null
-     * @throws IllegalArgumentException if the size is less than 1
-     */
-    public static List toList(Iterator iterator, int estimatedSize) {
-        if (iterator == null) {
-            throw new NullPointerException("Iterator must not be null");
-        }
-        if (estimatedSize < 1) {
-            throw new IllegalArgumentException("Estimated size must be greater than 0");
-        }
-        List list = new ArrayList(estimatedSize);
-        while (iterator.hasNext()) {
-            list.add(iterator.next());
-        }
-        return list;
-    }
-    
-    /** 
-     * Gets a suitable Iterator for the given object.
-     * <p>
-     * This method can handles objects as follows
-     * <ul>
-     * <li>null - empty iterator
-     * <li>Iterator - returned directly
-     * <li>Enumeration - wrapped
-     * <li>Collection - iterator from collection returned
-     * <li>Map - values iterator returned
-     * <li>Dictionary - values (elements) enumeration returned as iterator
-     * <li>array - iterator over array returned
-     * <li>object with iterator() public method accessed by reflection
-     * <li>object - singleton iterator
-     * </ul>
-     * 
-     * @param obj  the object to convert to an iterator
-     * @return a suitable iterator, never null
-     */
-    public static Iterator getIterator(Object obj) {
-        if (obj == null) {
-            return emptyIterator();
-            
-        } else if (obj instanceof Iterator) {
-            return (Iterator) obj;
-            
-        } else if (obj instanceof Collection) {
-            return ((Collection) obj).iterator();
-            
-        } else if (obj instanceof Object[]) {
-            return new ObjectArrayIterator((Object[]) obj);
-            
-        } else if (obj instanceof Enumeration) {
-            return new EnumerationIterator((Enumeration) obj);
-            
-        } else if (obj instanceof Map) {
-            return ((Map) obj).values().iterator();
-            
-        } else if (obj instanceof Dictionary) {
-            return new EnumerationIterator(((Dictionary) obj).elements());
-            
-        } else if (obj != null && obj.getClass().isArray()) {
-            return new ArrayIterator(obj);
-            
-        } else {
-            try {
-                Method method = obj.getClass().getMethod("iterator", (Class[]) null);
-                if (Iterator.class.isAssignableFrom(method.getReturnType())) {
-                    Iterator it = (Iterator) method.invoke(obj, (Object[]) null);
-                    if (it != null) {
-                        return it;
-                    }
-                }
-            } catch (Exception ex) {
-                // ignore
-            }
-            return singletonIterator(obj);
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/KeyValue.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/KeyValue.java
deleted file mode 100755
index baa4c18..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/KeyValue.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-/**
- * Defines a simple key value pair.
- * <p>
- * A Map Entry has considerable additional semantics over and above a simple
- * key-value pair. This interface defines the minimum key value, with just the
- * two get methods.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author Stephen Colebourne
- */
-public interface KeyValue {
-
-    /**
-     * Gets the key from the pair.
-     *
-     * @return the key 
-     */
-    Object getKey();
-
-    /**
-     * Gets the value from the pair.
-     *
-     * @return the value
-     */
-    Object getValue();
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/LRUMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/LRUMap.java
deleted file mode 100755
index 62d62ef..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/LRUMap.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.util.Iterator;
-
-/**
- * <p>
- * An implementation of a Map which has a maximum size and uses a Least Recently Used
- * algorithm to remove items from the Map when the maximum size is reached and new items are added.
- * </p>
- * 
- * <p>
- * A synchronized version can be obtained with:
- * <code>Collections.synchronizedMap( theMapToSynchronize )</code>
- * If it will be accessed by multiple threads, you _must_ synchronize access
- * to this Map.  Even concurrent get(Object) operations produce indeterminate
- * behaviour.
- * </p>
- * 
- * <p>
- * Unlike the Collections 1.0 version, this version of LRUMap does use a true
- * LRU algorithm.  The keys for all gets and puts are moved to the front of
- * the list.  LRUMap is now a subclass of SequencedHashMap, and the "LRU"
- * key is now equivalent to LRUMap.getFirst().
- * </p>
- * 
- * @deprecated Moved to map subpackage. Due to be removed in v4.0.
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- * 
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @author <a href="mailto:morgand@apache.org">Morgan Delagrange</a>
- */
-public class LRUMap extends SequencedHashMap implements Externalizable {
-        
-    private int maximumSize = 0;
-
-    /**
-     * Default constructor, primarily for the purpose of
-     * de-externalization.  This constructors sets a default
-     * LRU limit of 100 keys, but this value may be overridden
-     * internally as a result of de-externalization.
-     */
-    public LRUMap() {
-        this( 100 );
-    }
-
-    /**
-     * Create a new LRUMap with a maximum capacity of <i>i</i>.
-     * Once <i>i</i> capacity is achieved, subsequent gets
-     * and puts will push keys out of the map.  See .
-     * 
-     * @param i      Maximum capacity of the LRUMap
-     */
-    public LRUMap(int i) {
-        super( i );
-        maximumSize = i;
-    }
-
-    /**
-     * <p>Get the value for a key from the Map.  The key
-     * will be promoted to the Most Recently Used position.
-     * Note that get(Object) operations will modify
-     * the underlying Collection.  Calling get(Object)
-     * inside of an iteration over keys, values, etc. is
-     * currently unsupported.</p>
-     * 
-     * @param key    Key to retrieve
-     * @return Returns the value.  Returns null if the key has a
-     *         null value <i>or</i> if the key has no value.
-     */
-    public Object get(Object key) {
-        if(!containsKey(key)) return null;
-
-        Object value = remove(key);
-        super.put(key,value);
-        return value;
-    }
-
-     /**
-      * <p>Removes the key and its Object from the Map.</p>
-      * 
-      * <p>(Note: this may result in the "Least Recently Used"
-      * object being removed from the Map.  In that case,
-      * the removeLRU() method is called.  See javadoc for
-      * removeLRU() for more details.)</p>
-      * 
-      * @param key    Key of the Object to add.
-      * @param value  Object to add
-      * @return Former value of the key
-      */    
-    public Object put( Object key, Object value ) {
-
-        int mapSize = size();
-        Object retval = null;
-
-        if ( mapSize >= maximumSize ) {
-
-            // don't retire LRU if you are just
-            // updating an existing key
-            if (!containsKey(key)) {
-                // lets retire the least recently used item in the cache
-                removeLRU();
-            }
-        }
-
-        retval = super.put(key,value);
-
-        return retval;
-    }
-
-    /**
-     * This method is used internally by the class for 
-     * finding and removing the LRU Object.
-     */
-    protected void removeLRU() {
-        Object key = getFirstKey();
-        // be sure to call super.get(key), or you're likely to 
-        // get infinite promotion recursion
-        Object value = super.get(key);
-        
-        remove(key);
-
-        processRemovedLRU(key,value);
-    }
-
-    /**
-     * Subclasses of LRUMap may hook into this method to
-     * provide specialized actions whenever an Object is
-     * automatically removed from the cache.  By default,
-     * this method does nothing.
-     * 
-     * @param key    key that was removed
-     * @param value  value of that key (can be null)
-     */
-    protected void processRemovedLRU(Object key, Object value) {
-    }
- 
-    // Externalizable interface
-    //-------------------------------------------------------------------------        
-    public void readExternal( ObjectInput in )  throws IOException, ClassNotFoundException {
-        maximumSize = in.readInt();
-        int size = in.readInt();
-        
-        for( int i = 0; i < size; i++ )  {
-            Object key = in.readObject();
-            Object value = in.readObject();
-            put(key,value);
-        }
-    }
-
-    public void writeExternal( ObjectOutput out ) throws IOException {
-        out.writeInt( maximumSize );
-        out.writeInt( size() );
-        for( Iterator iterator = keySet().iterator(); iterator.hasNext(); ) {
-            Object key = iterator.next();
-            out.writeObject( key );
-            // be sure to call super.get(key), or you're likely to 
-            // get infinite promotion recursion
-            Object value = super.get( key );
-            out.writeObject( value );
-        }
-    }
-    
-    
-    // Properties
-    //-------------------------------------------------------------------------        
-    /** Getter for property maximumSize.
-     * @return Value of property maximumSize.
-     */
-    public int getMaximumSize() {
-        return maximumSize;
-    }
-    /** Setter for property maximumSize.
-     * @param maximumSize New value of property maximumSize.
-     */
-    public void setMaximumSize(int maximumSize) {
-        this.maximumSize = maximumSize;
-        while (size() > maximumSize) {
-            removeLRU();
-        }
-    }
-
-
-    // add a serial version uid, so that if we change things in the future
-    // without changing the format, we can still deserialize properly.
-    private static final long serialVersionUID = 2197433140769957051L;
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ListUtils.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ListUtils.java
deleted file mode 100755
index 39ff8bf..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ListUtils.java
+++ /dev/null
@@ -1,409 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.commons.collections.list.FixedSizeList;
-import org.apache.commons.collections.list.LazyList;
-import org.apache.commons.collections.list.PredicatedList;
-import org.apache.commons.collections.list.SynchronizedList;
-import org.apache.commons.collections.list.TransformedList;
-import org.apache.commons.collections.list.TypedList;
-import org.apache.commons.collections.list.UnmodifiableList;
-
-/**
- * Provides utility methods and decorators for {@link List} instances.
- *
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- * 
- * @author Federico Barbieri
- * @author Peter Donald
- * @author Paul Jack
- * @author Stephen Colebourne
- * @author Neil O'Toole
- * @author Matthew Hawthorne
- */
-public class ListUtils {
-
-    /**
-     * An empty unmodifiable list.
-     * This uses the {@link Collections Collections} implementation 
-     * and is provided for completeness.
-     */
-    public static final List EMPTY_LIST = Collections.EMPTY_LIST;
-    
-    /**
-     * <code>ListUtils</code> should not normally be instantiated.
-     */
-    public ListUtils() {
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns a new list containing all elements that are contained in
-     * both given lists.
-     *
-     * @param list1  the first list
-     * @param list2  the second list
-     * @return  the intersection of those two lists
-     * @throws NullPointerException if either list is null
-     */
-    public static List intersection(final List list1, final List list2) {
-        final ArrayList result = new ArrayList();
-        final Iterator iterator = list2.iterator();
-
-        while (iterator.hasNext()) {
-            final Object o = iterator.next();
-
-            if (list1.contains(o)) {
-                result.add(o);
-            }
-        }
-
-        return result;
-    }
-
-    /**
-     * Subtracts all elements in the second list from the first list,
-     * placing the results in a new list.
-     * <p>
-     * This differs from {@link List#removeAll(Collection)} in that
-     * cardinality is respected; if <Code>list1</Code> contains two
-     * occurrences of <Code>null</Code> and <Code>list2</Code> only
-     * contains one occurrence, then the returned list will still contain
-     * one occurrence.
-     *
-     * @param list1  the list to subtract from
-     * @param list2  the list to subtract
-     * @return  a new list containing the results
-     * @throws NullPointerException if either list is null
-     */
-    public static List subtract(final List list1, final List list2) {
-        final ArrayList result = new ArrayList(list1);
-        final Iterator iterator = list2.iterator();
-
-        while (iterator.hasNext()) {
-            result.remove(iterator.next());
-        }
-
-        return result;
-    }
-
-    /**
-     * Returns the sum of the given lists.  This is their intersection
-     * subtracted from their union.
-     *
-     * @param list1  the first list 
-     * @param list2  the second list
-     * @return  a new list containing the sum of those lists
-     * @throws NullPointerException if either list is null
-     */ 
-    public static List sum(final List list1, final List list2) {
-        return subtract(union(list1, list2), intersection(list1, list2));
-    }
-
-    /**
-     * Returns a new list containing the second list appended to the
-     * first list.  The {@link List#addAll(Collection)} operation is
-     * used to append the two given lists into a new list.
-     *
-     * @param list1  the first list 
-     * @param list2  the second list
-     * @return  a new list containing the union of those lists
-     * @throws NullPointerException if either list is null
-     */
-    public static List union(final List list1, final List list2) {
-        final ArrayList result = new ArrayList(list1);
-        result.addAll(list2);
-        return result;
-    }
-
-    /**
-     * Tests two lists for value-equality as per the equality contract in
-     * {@link java.util.List#equals(java.lang.Object)}.
-     * <p>
-     * This method is useful for implementing <code>List</code> when you cannot
-     * extend AbstractList. The method takes Collection instances to enable other
-     * collection types to use the List implementation algorithm.
-     * <p>
-     * The relevant text (slightly paraphrased as this is a static method) is:
-     * <blockquote>
-     * Compares the two list objects for equality.  Returns
-     * <tt>true</tt> if and only if both
-     * lists have the same size, and all corresponding pairs of elements in
-     * the two lists are <i>equal</i>.  (Two elements <tt>e1</tt> and
-     * <tt>e2</tt> are <i>equal</i> if <tt>(e1==null ? e2==null :
-     * e1.equals(e2))</tt>.)  In other words, two lists are defined to be
-     * equal if they contain the same elements in the same order.  This
-     * definition ensures that the equals method works properly across
-     * different implementations of the <tt>List</tt> interface.
-     * </blockquote>
-     *
-     * <b>Note:</b> The behaviour of this method is undefined if the lists are
-     * modified during the equals comparison.
-     * 
-     * @see java.util.List
-     * @param list1  the first list, may be null
-     * @param list2  the second list, may be null
-     * @return whether the lists are equal by value comparison
-     */
-    public static boolean isEqualList(final Collection list1, final Collection list2) {
-        if (list1 == list2) {
-            return true;
-        }
-        if (list1 == null || list2 == null || list1.size() != list2.size()) {
-            return false;
-        }
-
-        Iterator it1 = list1.iterator();
-        Iterator it2 = list2.iterator();
-        Object obj1 = null;
-        Object obj2 = null;
-
-        while (it1.hasNext() && it2.hasNext()) {
-            obj1 = it1.next();
-            obj2 = it2.next();
-
-            if (!(obj1 == null ? obj2 == null : obj1.equals(obj2))) {
-                return false;
-            }
-        }
-
-        return !(it1.hasNext() || it2.hasNext());
-    }
-    
-    /**
-     * Generates a hash code using the algorithm specified in 
-     * {@link java.util.List#hashCode()}.
-     * <p>
-     * This method is useful for implementing <code>List</code> when you cannot
-     * extend AbstractList. The method takes Collection instances to enable other
-     * collection types to use the List implementation algorithm.
-     * 
-     * @see java.util.List#hashCode()
-     * @param list  the list to generate the hashCode for, may be null
-     * @return the hash code
-     */
-    public static int hashCodeForList(final Collection list) {
-        if (list == null) {
-            return 0;
-        }
-        int hashCode = 1;
-        Iterator it = list.iterator();
-        Object obj = null;
-        
-        while (it.hasNext()) {
-            obj = it.next();
-            hashCode = 31 * hashCode + (obj == null ? 0 : obj.hashCode());
-        }
-        return hashCode;
-    }   
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns a List containing all the elements in <code>collection</code>
-     * that are also in <code>retain</code>. The cardinality of an element <code>e</code>
-     * in the returned list is the same as the cardinality of <code>e</code>
-     * in <code>collection</code> unless <code>retain</code> does not contain <code>e</code>, in which
-     * case the cardinality is zero. This method is useful if you do not wish to modify
-     * the collection <code>c</code> and thus cannot call <code>collection.retainAll(retain);</code>.
-     * 
-     * @param collection  the collection whose contents are the target of the #retailAll operation
-     * @param retain  the collection containing the elements to be retained in the returned collection
-     * @return a <code>List</code> containing all the elements of <code>c</code>
-     * that occur at least once in <code>retain</code>.
-     * @throws NullPointerException if either parameter is null
-     * @since Commons Collections 3.2
-     */
-    public static List retainAll(Collection collection, Collection retain) {
-        List list = new ArrayList(Math.min(collection.size(), retain.size()));
-
-        for (Iterator iter = collection.iterator(); iter.hasNext();) {
-            Object obj = iter.next();
-            if (retain.contains(obj)) {
-                list.add(obj);
-            }
-        }
-        return list;
-    }
-
-    /**
-     * Removes the elements in <code>remove</code> from <code>collection</code>. That is, this
-     * method returns a list containing all the elements in <code>c</code>
-     * that are not in <code>remove</code>. The cardinality of an element <code>e</code>
-     * in the returned collection is the same as the cardinality of <code>e</code>
-     * in <code>collection</code> unless <code>remove</code> contains <code>e</code>, in which
-     * case the cardinality is zero. This method is useful if you do not wish to modify
-     * <code>collection</code> and thus cannot call <code>collection.removeAll(remove);</code>.
-     * 
-     * @param collection  the collection from which items are removed (in the returned collection)
-     * @param remove  the items to be removed from the returned <code>collection</code>
-     * @return a <code>List</code> containing all the elements of <code>c</code> except
-     * any elements that also occur in <code>remove</code>.
-     * @throws NullPointerException if either parameter is null
-     * @since Commons Collections 3.2
-     */
-    public static List removeAll(Collection collection, Collection remove) {
-        List list = new ArrayList();
-        for (Iterator iter = collection.iterator(); iter.hasNext();) {
-            Object obj = iter.next();
-            if (remove.contains(obj) == false) {
-                list.add(obj);
-            }
-        }
-        return list;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns a synchronized list backed by the given list.
-     * <p>
-     * You must manually synchronize on the returned buffer's iterator to 
-     * avoid non-deterministic behavior:
-     *  
-     * <pre>
-     * List list = ListUtils.synchronizedList(myList);
-     * synchronized (list) {
-     *     Iterator i = list.iterator();
-     *     while (i.hasNext()) {
-     *         process (i.next());
-     *     }
-     * }
-     * </pre>
-     * 
-     * This method uses the implementation in the decorators subpackage.
-     * 
-     * @param list  the list to synchronize, must not be null
-     * @return a synchronized list backed by the given list
-     * @throws IllegalArgumentException  if the list is null
-     */
-    public static List synchronizedList(List list) {
-        return SynchronizedList.decorate(list);
-    }
-
-    /**
-     * Returns an unmodifiable list backed by the given list.
-     * <p>
-     * This method uses the implementation in the decorators subpackage.
-     *
-     * @param list  the list to make unmodifiable, must not be null
-     * @return an unmodifiable list backed by the given list
-     * @throws IllegalArgumentException  if the list is null
-     */
-    public static List unmodifiableList(List list) {
-        return UnmodifiableList.decorate(list);
-    }
-
-    /**
-     * Returns a predicated (validating) list backed by the given list.
-     * <p>
-     * Only objects that pass the test in the given predicate can be added to the list.
-     * Trying to add an invalid object results in an IllegalArgumentException.
-     * It is important not to use the original list after invoking this method,
-     * as it is a backdoor for adding invalid objects.
-     *
-     * @param list  the list to predicate, must not be null
-     * @param predicate  the predicate for the list, must not be null
-     * @return a predicated list backed by the given list
-     * @throws IllegalArgumentException  if the List or Predicate is null
-     */
-    public static List predicatedList(List list, Predicate predicate) {
-        return PredicatedList.decorate(list, predicate);
-    }
-
-    /**
-     * Returns a typed list backed by the given list.
-     * <p>
-     * Only objects of the specified type can be added to the list.
-     * 
-     * @param list  the list to limit to a specific type, must not be null
-     * @param type  the type of objects which may be added to the list
-     * @return a typed list backed by the specified list
-     */
-    public static List typedList(List list, Class type) {
-        return TypedList.decorate(list, type);
-    }
-    
-    /**
-     * Returns a transformed list backed by the given list.
-     * <p>
-     * Each object is passed through the transformer as it is added to the
-     * List. It is important not to use the original list after invoking this 
-     * method, as it is a backdoor for adding untransformed objects.
-     *
-     * @param list  the list to predicate, must not be null
-     * @param transformer  the transformer for the list, must not be null
-     * @return a transformed list backed by the given list
-     * @throws IllegalArgumentException  if the List or Transformer is null
-     */
-    public static List transformedList(List list, Transformer transformer) {
-        return TransformedList.decorate(list, transformer);
-    }
-    
-    /**
-     * Returns a "lazy" list whose elements will be created on demand.
-     * <p>
-     * When the index passed to the returned list's {@link List#get(int) get}
-     * method is greater than the list's size, then the factory will be used
-     * to create a new object and that object will be inserted at that index.
-     * <p>
-     * For instance:
-     *
-     * <pre>
-     * Factory factory = new Factory() {
-     *     public Object create() {
-     *         return new Date();
-     *     }
-     * }
-     * List lazy = ListUtils.lazyList(new ArrayList(), factory);
-     * Object obj = lazy.get(3);
-     * </pre>
-     *
-     * After the above code is executed, <code>obj</code> will contain
-     * a new <code>Date</code> instance.  Furthermore, that <code>Date</code>
-     * instance is the fourth element in the list.  The first, second, 
-     * and third element are all set to <code>null</code>.
-     *
-     * @param list  the list to make lazy, must not be null
-     * @param factory  the factory for creating new objects, must not be null
-     * @return a lazy list backed by the given list
-     * @throws IllegalArgumentException  if the List or Factory is null
-     */
-    public static List lazyList(List list, Factory factory) {
-        return LazyList.decorate(list, factory);
-    }
-
-    /**
-     * Returns a fixed-sized list backed by the given list.
-     * Elements may not be added or removed from the returned list, but 
-     * existing elements can be changed (for instance, via the 
-     * {@link List#set(int,Object)} method).
-     *
-     * @param list  the list whose size to fix, must not be null
-     * @return a fixed-size list backed by that list
-     * @throws IllegalArgumentException  if the List is null
-     */
-    public static List fixedSizeList(List list) {
-        return FixedSizeList.decorate(list);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/MapIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/MapIterator.java
deleted file mode 100755
index 8985ba8..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/MapIterator.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.Iterator;
-
-/**
- * Defines an iterator that operates over a <code>Map</code>.
- * <p>
- * This iterator is a special version designed for maps. It can be more
- * efficient to use this rather than an entry set iterator where the option
- * is available, and it is certainly more convenient.
- * <p>
- * A map that provides this interface may not hold the data internally using
- * Map Entry objects, thus this interface can avoid lots of object creation.
- * <p>
- * In use, this iterator iterates through the keys in the map. After each call
- * to <code>next()</code>, the <code>getValue()</code> method provides direct
- * access to the value. The value can also be set using <code>setValue()</code>.
- * <pre>
- * MapIterator it = map.mapIterator();
- * while (it.hasNext()) {
- *   Object key = it.next();
- *   Object value = it.getValue();
- *   it.setValue(newValue);
- * }
- * </pre>
- *  
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- *
- * @author Stephen Colebourne
- */
-public interface MapIterator extends Iterator {
-    
-    /**
-     * Checks to see if there are more entries still to be iterated.
-     *
-     * @return <code>true</code> if the iterator has more elements
-     */
-    boolean hasNext();
-
-    /**
-     * Gets the next <em>key</em> from the <code>Map</code>.
-     *
-     * @return the next key in the iteration
-     * @throws java.util.NoSuchElementException if the iteration is finished
-     */
-    Object next();
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the current key, which is the key returned by the last call
-     * to <code>next()</code>.
-     *
-     * @return the current key
-     * @throws IllegalStateException if <code>next()</code> has not yet been called
-     */
-    Object getKey();
-
-    /**
-     * Gets the current value, which is the value associated with the last key
-     * returned by <code>next()</code>.
-     *
-     * @return the current value
-     * @throws IllegalStateException if <code>next()</code> has not yet been called
-     */
-    Object getValue();
-
-    //-----------------------------------------------------------------------
-    /**
-     * Removes the last returned key from the underlying <code>Map</code> (optional operation).
-     * <p>
-     * This method can be called once per call to <code>next()</code>.
-     *
-     * @throws UnsupportedOperationException if remove is not supported by the map
-     * @throws IllegalStateException if <code>next()</code> has not yet been called
-     * @throws IllegalStateException if <code>remove()</code> has already been called
-     *  since the last call to <code>next()</code>
-     */
-    void remove();
-    
-    /**
-     * Sets the value associated with the current key (optional operation).
-     *
-     * @param value  the new value
-     * @return the previous value
-     * @throws UnsupportedOperationException if setValue is not supported by the map
-     * @throws IllegalStateException if <code>next()</code> has not yet been called
-     * @throws IllegalStateException if <code>remove()</code> has been called since the
-     *  last call to <code>next()</code>
-     */
-    Object setValue(Object value);
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/MapUtils.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/MapUtils.java
deleted file mode 100755
index e0bfe57..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/MapUtils.java
+++ /dev/null
@@ -1,1644 +0,0 @@
-/*
- *  Copyright 2001-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.io.PrintStream;
-import java.text.NumberFormat;
-import java.text.ParseException;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Properties;
-import java.util.ResourceBundle;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-import org.apache.commons.collections.map.FixedSizeMap;
-import org.apache.commons.collections.map.FixedSizeSortedMap;
-import org.apache.commons.collections.map.LazyMap;
-import org.apache.commons.collections.map.LazySortedMap;
-import org.apache.commons.collections.map.ListOrderedMap;
-import org.apache.commons.collections.map.MultiValueMap;
-import org.apache.commons.collections.map.PredicatedMap;
-import org.apache.commons.collections.map.PredicatedSortedMap;
-import org.apache.commons.collections.map.TransformedMap;
-import org.apache.commons.collections.map.TransformedSortedMap;
-import org.apache.commons.collections.map.TypedMap;
-import org.apache.commons.collections.map.TypedSortedMap;
-import org.apache.commons.collections.map.UnmodifiableMap;
-import org.apache.commons.collections.map.UnmodifiableSortedMap;
-
-/** 
- * Provides utility methods and decorators for
- * {@link Map} and {@link SortedMap} instances.
- * <p>
- * It contains various type safe methods
- * as well as other useful features like deep copying.
- * <p>
- * It also provides the following decorators:
- *
- *  <ul>
- *  <li>{@link #fixedSizeMap(Map)}
- *  <li>{@link #fixedSizeSortedMap(SortedMap)}
- *  <li>{@link #lazyMap(Map,Factory)}
- *  <li>{@link #lazyMap(Map,Transformer)}
- *  <li>{@link #lazySortedMap(SortedMap,Factory)}
- *  <li>{@link #lazySortedMap(SortedMap,Transformer)}
- *  <li>{@link #predicatedMap(Map,Predicate,Predicate)}
- *  <li>{@link #predicatedSortedMap(SortedMap,Predicate,Predicate)}
- *  <li>{@link #transformedMap(Map, Transformer, Transformer)}
- *  <li>{@link #transformedSortedMap(SortedMap, Transformer, Transformer)}
- *  <li>{@link #typedMap(Map, Class, Class)}
- *  <li>{@link #typedSortedMap(SortedMap, Class, Class)}
- *  <li>{@link #multiValueMap( Map )}
- *  <li>{@link #multiValueMap( Map, Class )}
- *  <li>{@link #multiValueMap( Map, Factory )}
- *  </ul>
- *
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @author <a href="mailto:nissim@nksystems.com">Nissim Karpenstein</a>
- * @author <a href="mailto:knielsen@apache.org">Kasper Nielsen</a>
- * @author Paul Jack
- * @author Stephen Colebourne
- * @author Matthew Hawthorne
- * @author Arun Mammen Thomas
- * @author Janek Bogucki
- * @author Max Rydahl Andersen
- * @author <a href="mailto:equinus100@hotmail.com">Ashwin S</a>
- * @author <a href="mailto:jcarman@apache.org">James Carman</a>
- * @author Neil O'Toole
- */
-public class MapUtils {
-    
-    /**
-     * An empty unmodifiable map.
-     * This was not provided in JDK1.2.
-     */
-    public static final Map EMPTY_MAP = UnmodifiableMap.decorate(new HashMap(1));
-    /**
-     * An empty unmodifiable sorted map.
-     * This is not provided in the JDK.
-     */
-    public static final SortedMap EMPTY_SORTED_MAP = UnmodifiableSortedMap.decorate(new TreeMap());
-    /**
-     * String used to indent the verbose and debug Map prints.
-     */
-    private static final String INDENT_STRING = "    ";
-
-    /**
-     * <code>MapUtils</code> should not normally be instantiated.
-     */
-    public MapUtils() {
-    }    
-    
-    // Type safe getters
-    //-------------------------------------------------------------------------
-    /**
-     * Gets from a Map in a null-safe manner.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @return the value in the Map, <code>null</code> if null map input
-     */
-    public static Object getObject(final Map map, final Object key) {
-        if (map != null) {
-            return map.get(key);
-        }
-        return null;
-    }
-
-    /**
-     * Gets a String from a Map in a null-safe manner.
-     * <p>
-     * The String is obtained via <code>toString</code>.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @return the value in the Map as a String, <code>null</code> if null map input
-     */
-    public static String getString(final Map map, final Object key) {
-        if (map != null) {
-            Object answer = map.get(key);
-            if (answer != null) {
-                return answer.toString();
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Gets a Boolean from a Map in a null-safe manner.
-     * <p>
-     * If the value is a <code>Boolean</code> it is returned directly.
-     * If the value is a <code>String</code> and it equals 'true' ignoring case
-     * then <code>true</code> is returned, otherwise <code>false</code>.
-     * If the value is a <code>Number</code> an integer zero value returns
-     * <code>false</code> and non-zero returns <code>true</code>.
-     * Otherwise, <code>null</code> is returned.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @return the value in the Map as a Boolean, <code>null</code> if null map input
-     */
-    public static Boolean getBoolean(final Map map, final Object key) {
-        if (map != null) {
-            Object answer = map.get(key);
-            if (answer != null) {
-                if (answer instanceof Boolean) {
-                    return (Boolean) answer;
-                    
-                } else if (answer instanceof String) {
-                    return new Boolean((String) answer);
-                    
-                } else if (answer instanceof Number) {
-                    Number n = (Number) answer;
-                    return (n.intValue() != 0) ? Boolean.TRUE : Boolean.FALSE;
-                }
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Gets a Number from a Map in a null-safe manner.
-     * <p>
-     * If the value is a <code>Number</code> it is returned directly.
-     * If the value is a <code>String</code> it is converted using
-     * {@link NumberFormat#parse(String)} on the system default formatter
-     * returning <code>null</code> if the conversion fails.
-     * Otherwise, <code>null</code> is returned.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @return the value in the Map as a Number, <code>null</code> if null map input
-     */
-    public static Number getNumber(final Map map, final Object key) {
-        if (map != null) {
-            Object answer = map.get(key);
-            if (answer != null) {
-                if (answer instanceof Number) {
-                    return (Number) answer;
-                    
-                } else if (answer instanceof String) {
-                    try {
-                        String text = (String) answer;
-                        return NumberFormat.getInstance().parse(text);
-                        
-                    } catch (ParseException e) {
-                        logInfo(e);
-                    }
-                }
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Gets a Byte from a Map in a null-safe manner.
-     * <p>
-     * The Byte is obtained from the results of {@link #getNumber(Map,Object)}.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @return the value in the Map as a Byte, <code>null</code> if null map input
-     */
-    public static Byte getByte(final Map map, final Object key) {
-        Number answer = getNumber(map, key);
-        if (answer == null) {
-            return null;
-        } else if (answer instanceof Byte) {
-            return (Byte) answer;
-        }
-        return new Byte(answer.byteValue());
-    }
-
-    /**
-     * Gets a Short from a Map in a null-safe manner.
-     * <p>
-     * The Short is obtained from the results of {@link #getNumber(Map,Object)}.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @return the value in the Map as a Short, <code>null</code> if null map input
-     */
-    public static Short getShort(final Map map, final Object key) {
-        Number answer = getNumber(map, key);
-        if (answer == null) {
-            return null;
-        } else if (answer instanceof Short) {
-            return (Short) answer;
-        }
-        return new Short(answer.shortValue());
-    }
-
-    /**
-     * Gets a Integer from a Map in a null-safe manner.
-     * <p>
-     * The Integer is obtained from the results of {@link #getNumber(Map,Object)}.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @return the value in the Map as a Integer, <code>null</code> if null map input
-     */
-    public static Integer getInteger(final Map map, final Object key) {
-        Number answer = getNumber(map, key);
-        if (answer == null) {
-            return null;
-        } else if (answer instanceof Integer) {
-            return (Integer) answer;
-        }
-        return new Integer(answer.intValue());
-    }
-
-    /**
-     * Gets a Long from a Map in a null-safe manner.
-     * <p>
-     * The Long is obtained from the results of {@link #getNumber(Map,Object)}.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @return the value in the Map as a Long, <code>null</code> if null map input
-     */
-    public static Long getLong(final Map map, final Object key) {
-        Number answer = getNumber(map, key);
-        if (answer == null) {
-            return null;
-        } else if (answer instanceof Long) {
-            return (Long) answer;
-        }
-        return new Long(answer.longValue());
-    }
-
-    /**
-     * Gets a Float from a Map in a null-safe manner.
-     * <p>
-     * The Float is obtained from the results of {@link #getNumber(Map,Object)}.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @return the value in the Map as a Float, <code>null</code> if null map input
-     */
-    public static Float getFloat(final Map map, final Object key) {
-        Number answer = getNumber(map, key);
-        if (answer == null) {
-            return null;
-        } else if (answer instanceof Float) {
-            return (Float) answer;
-        }
-        return new Float(answer.floatValue());
-    }
-
-    /**
-     * Gets a Double from a Map in a null-safe manner.
-     * <p>
-     * The Double is obtained from the results of {@link #getNumber(Map,Object)}.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @return the value in the Map as a Double, <code>null</code> if null map input
-     */
-    public static Double getDouble(final Map map, final Object key) {
-        Number answer = getNumber(map, key);
-        if (answer == null) {
-            return null;
-        } else if (answer instanceof Double) {
-            return (Double) answer;
-        }
-        return new Double(answer.doubleValue());
-    }
-
-    /**
-     * Gets a Map from a Map in a null-safe manner.
-     * <p>
-     * If the value returned from the specified map is not a Map then
-     * <code>null</code> is returned.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @return the value in the Map as a Map, <code>null</code> if null map input
-     */
-    public static Map getMap(final Map map, final Object key) {
-        if (map != null) {
-            Object answer = map.get(key);
-            if (answer != null && answer instanceof Map) {
-                return (Map) answer;
-            }
-        }
-        return null;
-    }
-
-    // Type safe getters with default values
-    //-------------------------------------------------------------------------
-    /**
-     *  Looks up the given key in the given map, converting null into the
-     *  given default value.
-     *
-     *  @param map  the map whose value to look up
-     *  @param key  the key of the value to look up in that map
-     *  @param defaultValue  what to return if the value is null
-     *  @return  the value in the map, or defaultValue if the original value
-     *    is null or the map is null
-     */
-    public static Object getObject( Map map, Object key, Object defaultValue ) {
-        if ( map != null ) {
-            Object answer = map.get( key );
-            if ( answer != null ) {
-                return answer;
-            }
-        }
-        return defaultValue;
-    }
-
-    /**
-     *  Looks up the given key in the given map, converting the result into
-     *  a string, using the default value if the the conversion fails.
-     *
-     *  @param map  the map whose value to look up
-     *  @param key  the key of the value to look up in that map
-     *  @param defaultValue  what to return if the value is null or if the
-     *     conversion fails
-     *  @return  the value in the map as a string, or defaultValue if the 
-     *    original value is null, the map is null or the string conversion
-     *    fails
-     */
-    public static String getString( Map map, Object key, String defaultValue ) {
-        String answer = getString( map, key );
-        if ( answer == null ) {
-            answer = defaultValue;
-        }
-        return answer;
-    }
-
-    /**
-     *  Looks up the given key in the given map, converting the result into
-     *  a boolean, using the default value if the the conversion fails.
-     *
-     *  @param map  the map whose value to look up
-     *  @param key  the key of the value to look up in that map
-     *  @param defaultValue  what to return if the value is null or if the
-     *     conversion fails
-     *  @return  the value in the map as a boolean, or defaultValue if the 
-     *    original value is null, the map is null or the boolean conversion
-     *    fails
-     */
-    public static Boolean getBoolean( Map map, Object key, Boolean defaultValue ) {
-        Boolean answer = getBoolean( map, key );
-        if ( answer == null ) {
-            answer = defaultValue;
-        }
-        return answer;
-    }
-
-    /**
-     *  Looks up the given key in the given map, converting the result into
-     *  a number, using the default value if the the conversion fails.
-     *
-     *  @param map  the map whose value to look up
-     *  @param key  the key of the value to look up in that map
-     *  @param defaultValue  what to return if the value is null or if the
-     *     conversion fails
-     *  @return  the value in the map as a number, or defaultValue if the 
-     *    original value is null, the map is null or the number conversion
-     *    fails
-     */
-    public static Number getNumber( Map map, Object key, Number defaultValue ) {
-        Number answer = getNumber( map, key );
-        if ( answer == null ) {
-            answer = defaultValue;
-        }
-        return answer;
-    }
-
-    /**
-     *  Looks up the given key in the given map, converting the result into
-     *  a byte, using the default value if the the conversion fails.
-     *
-     *  @param map  the map whose value to look up
-     *  @param key  the key of the value to look up in that map
-     *  @param defaultValue  what to return if the value is null or if the
-     *     conversion fails
-     *  @return  the value in the map as a number, or defaultValue if the 
-     *    original value is null, the map is null or the number conversion
-     *    fails
-     */
-    public static Byte getByte( Map map, Object key, Byte defaultValue ) {
-        Byte answer = getByte( map, key );
-        if ( answer == null ) {
-            answer = defaultValue;
-        }
-        return answer;
-    }
-
-    /**
-     *  Looks up the given key in the given map, converting the result into
-     *  a short, using the default value if the the conversion fails.
-     *
-     *  @param map  the map whose value to look up
-     *  @param key  the key of the value to look up in that map
-     *  @param defaultValue  what to return if the value is null or if the
-     *     conversion fails
-     *  @return  the value in the map as a number, or defaultValue if the 
-     *    original value is null, the map is null or the number conversion
-     *    fails
-     */
-    public static Short getShort( Map map, Object key, Short defaultValue ) {
-        Short answer = getShort( map, key );
-        if ( answer == null ) {
-            answer = defaultValue;
-        }
-        return answer;
-    }
-
-    /**
-     *  Looks up the given key in the given map, converting the result into
-     *  an integer, using the default value if the the conversion fails.
-     *
-     *  @param map  the map whose value to look up
-     *  @param key  the key of the value to look up in that map
-     *  @param defaultValue  what to return if the value is null or if the
-     *     conversion fails
-     *  @return  the value in the map as a number, or defaultValue if the 
-     *    original value is null, the map is null or the number conversion
-     *    fails
-     */
-    public static Integer getInteger( Map map, Object key, Integer defaultValue ) {
-        Integer answer = getInteger( map, key );
-        if ( answer == null ) {
-            answer = defaultValue;
-        }
-        return answer;
-    }
-
-    /**
-     *  Looks up the given key in the given map, converting the result into
-     *  a long, using the default value if the the conversion fails.
-     *
-     *  @param map  the map whose value to look up
-     *  @param key  the key of the value to look up in that map
-     *  @param defaultValue  what to return if the value is null or if the
-     *     conversion fails
-     *  @return  the value in the map as a number, or defaultValue if the 
-     *    original value is null, the map is null or the number conversion
-     *    fails
-     */
-    public static Long getLong( Map map, Object key, Long defaultValue ) {
-        Long answer = getLong( map, key );
-        if ( answer == null ) {
-            answer = defaultValue;
-        }
-        return answer;
-    }
-
-    /**
-     *  Looks up the given key in the given map, converting the result into
-     *  a float, using the default value if the the conversion fails.
-     *
-     *  @param map  the map whose value to look up
-     *  @param key  the key of the value to look up in that map
-     *  @param defaultValue  what to return if the value is null or if the
-     *     conversion fails
-     *  @return  the value in the map as a number, or defaultValue if the 
-     *    original value is null, the map is null or the number conversion
-     *    fails
-     */
-    public static Float getFloat( Map map, Object key, Float defaultValue ) {
-        Float answer = getFloat( map, key );
-        if ( answer == null ) {
-            answer = defaultValue;
-        }
-        return answer;
-    }
-
-    /**
-     *  Looks up the given key in the given map, converting the result into
-     *  a double, using the default value if the the conversion fails.
-     *
-     *  @param map  the map whose value to look up
-     *  @param key  the key of the value to look up in that map
-     *  @param defaultValue  what to return if the value is null or if the
-     *     conversion fails
-     *  @return  the value in the map as a number, or defaultValue if the 
-     *    original value is null, the map is null or the number conversion
-     *    fails
-     */
-    public static Double getDouble( Map map, Object key, Double defaultValue ) {
-        Double answer = getDouble( map, key );
-        if ( answer == null ) {
-            answer = defaultValue;
-        }
-        return answer;
-    }
-
-    /**
-     *  Looks up the given key in the given map, converting the result into
-     *  a map, using the default value if the the conversion fails.
-     *
-     *  @param map  the map whose value to look up
-     *  @param key  the key of the value to look up in that map
-     *  @param defaultValue  what to return if the value is null or if the
-     *     conversion fails
-     *  @return  the value in the map as a number, or defaultValue if the 
-     *    original value is null, the map is null or the map conversion
-     *    fails
-     */
-    public static Map getMap( Map map, Object key, Map defaultValue ) {
-        Map answer = getMap( map, key );
-        if ( answer == null ) {
-            answer = defaultValue;
-        }
-        return answer;
-    }
-    
-
-    // Type safe primitive getters
-    //-------------------------------------------------------------------------
-    /**
-     * Gets a boolean from a Map in a null-safe manner.
-     * <p>
-     * If the value is a <code>Boolean</code> its value is returned.
-     * If the value is a <code>String</code> and it equals 'true' ignoring case
-     * then <code>true</code> is returned, otherwise <code>false</code>.
-     * If the value is a <code>Number</code> an integer zero value returns
-     * <code>false</code> and non-zero returns <code>true</code>.
-     * Otherwise, <code>false</code> is returned.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @return the value in the Map as a Boolean, <code>false</code> if null map input
-     */
-    public static boolean getBooleanValue(final Map map, final Object key) {
-        Boolean booleanObject = getBoolean(map, key);
-        if (booleanObject == null) {
-            return false;
-        }
-        return booleanObject.booleanValue();
-    }
-
-    /**
-     * Gets a byte from a Map in a null-safe manner.
-     * <p>
-     * The byte is obtained from the results of {@link #getNumber(Map,Object)}.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @return the value in the Map as a byte, <code>0</code> if null map input
-     */
-    public static byte getByteValue(final Map map, final Object key) {
-        Byte byteObject = getByte(map, key);
-        if (byteObject == null) {
-            return 0;
-        }
-        return byteObject.byteValue();
-    }
-
-    /**
-     * Gets a short from a Map in a null-safe manner.
-     * <p>
-     * The short is obtained from the results of {@link #getNumber(Map,Object)}.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @return the value in the Map as a short, <code>0</code> if null map input
-     */
-    public static short getShortValue(final Map map, final Object key) {
-        Short shortObject = getShort(map, key);
-        if (shortObject == null) {
-            return 0;
-        }
-        return shortObject.shortValue();
-    }
-
-    /**
-     * Gets an int from a Map in a null-safe manner.
-     * <p>
-     * The int is obtained from the results of {@link #getNumber(Map,Object)}.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @return the value in the Map as an int, <code>0</code> if null map input
-     */
-    public static int getIntValue(final Map map, final Object key) {
-        Integer integerObject = getInteger(map, key);
-        if (integerObject == null) {
-            return 0;
-        }
-        return integerObject.intValue();
-    }
-
-    /**
-     * Gets a long from a Map in a null-safe manner.
-     * <p>
-     * The long is obtained from the results of {@link #getNumber(Map,Object)}.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @return the value in the Map as a long, <code>0L</code> if null map input
-     */
-    public static long getLongValue(final Map map, final Object key) {
-        Long longObject = getLong(map, key);
-        if (longObject == null) {
-            return 0L;
-        }
-        return longObject.longValue();
-    }
-
-    /**
-     * Gets a float from a Map in a null-safe manner.
-     * <p>
-     * The float is obtained from the results of {@link #getNumber(Map,Object)}.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @return the value in the Map as a float, <code>0.0F</code> if null map input
-     */
-    public static float getFloatValue(final Map map, final Object key) {
-        Float floatObject = getFloat(map, key);
-        if (floatObject == null) {
-            return 0f;
-        }
-        return floatObject.floatValue();
-    }
-
-    /**
-     * Gets a double from a Map in a null-safe manner.
-     * <p>
-     * The double is obtained from the results of {@link #getNumber(Map,Object)}.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @return the value in the Map as a double, <code>0.0</code> if null map input
-     */
-    public static double getDoubleValue(final Map map, final Object key) {
-        Double doubleObject = getDouble(map, key);
-        if (doubleObject == null) {
-            return 0d;
-        }
-        return doubleObject.doubleValue();
-    }
-
-    // Type safe primitive getters with default values
-    //-------------------------------------------------------------------------
-    /**
-     * Gets a boolean from a Map in a null-safe manner,
-     * using the default value if the the conversion fails.
-     * <p>
-     * If the value is a <code>Boolean</code> its value is returned.
-     * If the value is a <code>String</code> and it equals 'true' ignoring case
-     * then <code>true</code> is returned, otherwise <code>false</code>.
-     * If the value is a <code>Number</code> an integer zero value returns
-     * <code>false</code> and non-zero returns <code>true</code>.
-     * Otherwise, <code>defaultValue</code> is returned.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @param defaultValue  return if the value is null or if the
-     *     conversion fails
-     * @return the value in the Map as a Boolean, <code>defaultValue</code> if null map input
-     */
-    public static boolean getBooleanValue(final Map map, final Object key, boolean defaultValue) {
-        Boolean booleanObject = getBoolean(map, key);
-        if (booleanObject == null) {
-            return defaultValue;
-        }
-        return booleanObject.booleanValue();
-    }
-
-    /**
-     * Gets a byte from a Map in a null-safe manner,
-     * using the default value if the the conversion fails.     
-     * <p>
-     * The byte is obtained from the results of {@link #getNumber(Map,Object)}.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @param defaultValue  return if the value is null or if the
-     *     conversion fails
-     * @return the value in the Map as a byte, <code>defaultValue</code> if null map input
-     */
-    public static byte getByteValue(final Map map, final Object key, byte defaultValue) {
-        Byte byteObject = getByte(map, key);
-        if (byteObject == null) {
-            return defaultValue;
-        }
-        return byteObject.byteValue();
-    }
-
-    /**
-     * Gets a short from a Map in a null-safe manner,
-     * using the default value if the the conversion fails.     
-     * <p>
-     * The short is obtained from the results of {@link #getNumber(Map,Object)}.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @param defaultValue  return if the value is null or if the
-     *     conversion fails
-     * @return the value in the Map as a short, <code>defaultValue</code> if null map input
-     */
-    public static short getShortValue(final Map map, final Object key, short defaultValue) {
-        Short shortObject = getShort(map, key);
-        if (shortObject == null) {
-            return defaultValue;
-        }
-        return shortObject.shortValue();
-    }
-
-    /**
-     * Gets an int from a Map in a null-safe manner,
-     * using the default value if the the conversion fails.     
-     * <p>
-     * The int is obtained from the results of {@link #getNumber(Map,Object)}.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @param defaultValue  return if the value is null or if the
-     *     conversion fails
-     * @return the value in the Map as an int, <code>defaultValue</code> if null map input
-     */
-    public static int getIntValue(final Map map, final Object key, int defaultValue) {
-        Integer integerObject = getInteger(map, key);
-        if (integerObject == null) {
-            return defaultValue;
-        }
-        return integerObject.intValue();
-    }
-
-    /**
-     * Gets a long from a Map in a null-safe manner,
-     * using the default value if the the conversion fails.     
-     * <p>
-     * The long is obtained from the results of {@link #getNumber(Map,Object)}.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @param defaultValue  return if the value is null or if the
-     *     conversion fails
-     * @return the value in the Map as a long, <code>defaultValue</code> if null map input
-     */
-    public static long getLongValue(final Map map, final Object key, long defaultValue) {
-        Long longObject = getLong(map, key);
-        if (longObject == null) {
-            return defaultValue;
-        }
-        return longObject.longValue();
-    }
-
-    /**
-     * Gets a float from a Map in a null-safe manner,
-     * using the default value if the the conversion fails.     
-     * <p>
-     * The float is obtained from the results of {@link #getNumber(Map,Object)}.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @param defaultValue  return if the value is null or if the
-     *     conversion fails
-     * @return the value in the Map as a float, <code>defaultValue</code> if null map input
-     */
-    public static float getFloatValue(final Map map, final Object key, float defaultValue) {
-        Float floatObject = getFloat(map, key);
-        if (floatObject == null) {
-            return defaultValue;
-        }
-        return floatObject.floatValue();
-    }
-
-    /**
-     * Gets a double from a Map in a null-safe manner,
-     * using the default value if the the conversion fails.     
-     * <p>
-     * The double is obtained from the results of {@link #getNumber(Map,Object)}.
-     *
-     * @param map  the map to use
-     * @param key  the key to look up
-     * @param defaultValue  return if the value is null or if the
-     *     conversion fails
-     * @return the value in the Map as a double, <code>defaultValue</code> if null map input
-     */
-    public static double getDoubleValue(final Map map, final Object key, double defaultValue) {
-        Double doubleObject = getDouble(map, key);
-        if (doubleObject == null) {
-            return defaultValue;
-        }
-        return doubleObject.doubleValue();
-    }
-
-    // Conversion methods
-    //-------------------------------------------------------------------------
-    /**
-     * Gets a new Properties object initialised with the values from a Map.
-     * A null input will return an empty properties object.
-     * 
-     * @param map  the map to convert to a Properties object, may not be null
-     * @return the properties object
-     */
-    public static Properties toProperties(final Map map) {
-        Properties answer = new Properties();
-        if (map != null) {
-            for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) {
-                Map.Entry entry = (Map.Entry) iter.next();
-                Object key = entry.getKey();
-                Object value = entry.getValue();
-                answer.put(key, value);
-            }
-        }
-        return answer;
-    }
-
-    /**
-     * Creates a new HashMap using data copied from a ResourceBundle.
-     * 
-     * @param resourceBundle  the resource bundle to convert, may not be null
-     * @return the hashmap containing the data
-     * @throws NullPointerException if the bundle is null
-     */
-    public static Map toMap(final ResourceBundle resourceBundle) {
-        Enumeration enumeration = resourceBundle.getKeys();
-        Map map = new HashMap();
-
-        while (enumeration.hasMoreElements()) {
-            String key = (String) enumeration.nextElement();
-            Object value = resourceBundle.getObject(key);
-            map.put(key, value);
-        }
-        
-        return map;
-    }
- 
-    // Printing methods
-    //-------------------------------------------------------------------------
-    /**
-     * Prints the given map with nice line breaks.
-     * <p>
-     * This method prints a nicely formatted String describing the Map.
-     * Each map entry will be printed with key and value.
-     * When the value is a Map, recursive behaviour occurs.
-     * <p>
-     * This method is NOT thread-safe in any special way. You must manually
-     * synchronize on either this class or the stream as required.
-     *
-     * @param out  the stream to print to, must not be null
-     * @param label  The label to be used, may be <code>null</code>.
-     *  If <code>null</code>, the label is not output.
-     *  It typically represents the name of the property in a bean or similar.
-     * @param map  The map to print, may be <code>null</code>.
-     *  If <code>null</code>, the text 'null' is output.
-     * @throws NullPointerException if the stream is <code>null</code>
-     */
-    public static void verbosePrint(
-        final PrintStream out,
-        final Object label,
-        final Map map) {
-
-        verbosePrintInternal(out, label, map, new ArrayStack(), false);
-    }
-
-    /**
-     * Prints the given map with nice line breaks.
-     * <p>
-     * This method prints a nicely formatted String describing the Map.
-     * Each map entry will be printed with key, value and value classname.
-     * When the value is a Map, recursive behaviour occurs.
-     * <p>
-     * This method is NOT thread-safe in any special way. You must manually
-     * synchronize on either this class or the stream as required.
-     *
-     * @param out  the stream to print to, must not be null
-     * @param label  The label to be used, may be <code>null</code>.
-     *  If <code>null</code>, the label is not output.
-     *  It typically represents the name of the property in a bean or similar.
-     * @param map  The map to print, may be <code>null</code>.
-     *  If <code>null</code>, the text 'null' is output.
-     * @throws NullPointerException if the stream is <code>null</code>
-     */
-    public static void debugPrint(
-        final PrintStream out,
-        final Object label,
-        final Map map) {
-
-        verbosePrintInternal(out, label, map, new ArrayStack(), true);
-    }
-
-    // Implementation methods
-    //-------------------------------------------------------------------------
-    /**
-     * Logs the given exception to <code>System.out</code>.
-     * <p>
-     * This method exists as Jakarta Collections does not depend on logging.
-     *
-     * @param ex  the exception to log
-     */
-    protected static void logInfo(final Exception ex) {
-        System.out.println("INFO: Exception: " + ex);
-    }
-
-    /**
-     * Implementation providing functionality for {@link #debugPrint} and for 
-     * {@link #verbosePrint}.  This prints the given map with nice line breaks.
-     * If the debug flag is true, it additionally prints the type of the object 
-     * value.  If the contents of a map include the map itself, then the text 
-     * <em>(this Map)</em> is printed out.  If the contents include a 
-     * parent container of the map, the the text <em>(ancestor[i] Map)</em> is 
-     * printed, where i actually indicates the number of levels which must be 
-     * traversed in the sequential list of ancestors (e.g. father, grandfather, 
-     * great-grandfather, etc).  
-     *
-     * @param out  the stream to print to
-     * @param label  the label to be used, may be <code>null</code>.
-     *  If <code>null</code>, the label is not output.
-     *  It typically represents the name of the property in a bean or similar.
-     * @param map  the map to print, may be <code>null</code>.
-     *  If <code>null</code>, the text 'null' is output
-     * @param lineage  a stack consisting of any maps in which the previous 
-     *  argument is contained. This is checked to avoid infinite recursion when
-     *  printing the output
-     * @param debug  flag indicating whether type names should be output.
-     * @throws NullPointerException if the stream is <code>null</code>
-     */
-    private static void verbosePrintInternal(
-        final PrintStream out,
-        final Object label,
-        final Map map,
-        final ArrayStack lineage,
-        final boolean debug) {
-        
-        printIndent(out, lineage.size());
-
-        if (map == null) {
-            if (label != null) {
-                out.print(label);
-                out.print(" = ");
-            }
-            out.println("null");
-            return;
-        }
-        if (label != null) {
-            out.print(label);
-            out.println(" = ");
-        }
-
-        printIndent(out, lineage.size());
-        out.println("{");
-
-        lineage.push(map);
-
-        for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
-            Map.Entry entry = (Map.Entry) it.next();
-            Object childKey = entry.getKey();
-            Object childValue = entry.getValue();
-            if (childValue instanceof Map && !lineage.contains(childValue)) {
-                verbosePrintInternal(
-                    out,
-                    (childKey == null ? "null" : childKey),
-                    (Map) childValue,
-                    lineage,
-                    debug);
-            } else {
-                printIndent(out, lineage.size());
-                out.print(childKey);
-                out.print(" = ");
-                
-                final int lineageIndex = lineage.indexOf(childValue);
-                if (lineageIndex == -1) {
-                    out.print(childValue);
-                } else if (lineage.size() - 1 == lineageIndex) {
-                    out.print("(this Map)");    
-                } else {
-                    out.print(
-                        "(ancestor["
-                            + (lineage.size() - 1 - lineageIndex - 1)
-                            + "] Map)");
-                }
-                
-                if (debug && childValue != null) {
-                    out.print(' ');
-                    out.println(childValue.getClass().getName());
-                } else {
-                    out.println();
-                }
-            }
-        }
-        
-        lineage.pop();
-
-        printIndent(out, lineage.size());
-        out.println(debug ? "} " + map.getClass().getName() : "}");
-    }
-
-    /**
-     * Writes indentation to the given stream.
-     *
-     * @param out  the stream to indent
-     */
-    private static void printIndent(final PrintStream out, final int indent) {
-        for (int i = 0; i < indent; i++) {
-            out.print(INDENT_STRING);
-        }
-    }
-    
-    // Misc
-    //-----------------------------------------------------------------------
-    /**
-     * Inverts the supplied map returning a new HashMap such that the keys of
-     * the input are swapped with the values.
-     * <p>
-     * This operation assumes that the inverse mapping is well defined.
-     * If the input map had multiple entries with the same value mapped to
-     * different keys, the returned map will map one of those keys to the 
-     * value, but the exact key which will be mapped is undefined.
-     *
-     * @param map  the map to invert, may not be null
-     * @return a new HashMap containing the inverted data
-     * @throws NullPointerException if the map is null
-     */
-    public static Map invertMap(Map map) {
-        Map out = new HashMap(map.size());
-        for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
-            Map.Entry entry = (Map.Entry) it.next();
-            out.put(entry.getValue(), entry.getKey());
-        }
-        return out;
-    }
-     
-    //-----------------------------------------------------------------------
-    /**
-     * Protects against adding null values to a map.
-     * <p>
-     * This method checks the value being added to the map, and if it is null
-     * it is replaced by an empty string.
-     * <p>
-     * This could be useful if the map does not accept null values, or for
-     * receiving data from a source that may provide null or empty string
-     * which should be held in the same way in the map.
-     * <p>
-     * Keys are not validated.
-     * 
-     * @param map  the map to add to, may not be null
-     * @param key  the key
-     * @param value  the value, null converted to ""
-     * @throws NullPointerException if the map is null
-     */
-    public static void safeAddToMap(Map map, Object key, Object value) throws NullPointerException {
-        if (value == null) {
-            map.put(key, "");
-        } else {
-            map.put(key, value);
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Puts all the keys and values from the specified array into the map.
-     * <p>
-     * This method is an alternative to the {@link java.util.Map#putAll(java.util.Map)}
-     * method and constructors. It allows you to build a map from an object array
-     * of various possible styles.
-     * <p>
-     * If the first entry in the object array implements {@link java.util.Map.Entry}
-     * or {@link KeyValue} then the key and value are added from that object.
-     * If the first entry in the object array is an object array itself, then
-     * it is assumed that index 0 in the sub-array is the key and index 1 is the value.
-     * Otherwise, the array is treated as keys and values in alternate indices.
-     * <p>
-     * For example, to create a color map:
-     * <pre>
-     * Map colorMap = MapUtils.putAll(new HashMap(), new String[][] {
-     *     {"RED", "#FF0000"},
-     *     {"GREEN", "#00FF00"},
-     *     {"BLUE", "#0000FF"}
-     * });
-     * </pre>
-     * or:
-     * <pre>
-     * Map colorMap = MapUtils.putAll(new HashMap(), new String[] {
-     *     "RED", "#FF0000",
-     *     "GREEN", "#00FF00",
-     *     "BLUE", "#0000FF"
-     * });
-     * </pre>
-     * or:
-     * <pre>
-     * Map colorMap = MapUtils.putAll(new HashMap(), new Map.Entry[] {
-     *     new DefaultMapEntry("RED", "#FF0000"),
-     *     new DefaultMapEntry("GREEN", "#00FF00"),
-     *     new DefaultMapEntry("BLUE", "#0000FF")
-     * });
-     * </pre>
-     *
-     * @param map  the map to populate, must not be null
-     * @param array  an array to populate from, null ignored
-     * @return the input map
-     * @throws NullPointerException  if map is null
-     * @throws IllegalArgumentException  if sub-array or entry matching used and an
-     *  entry is invalid
-     * @throws ClassCastException if the array contents is mixed
-     * @since Commons Collections 3.2
-     */
-    public static Map putAll(Map map, Object[] array) {
-        map.size();  // force NPE
-        if (array == null || array.length == 0) {
-            return map;
-        }
-        Object obj = array[0];
-        if (obj instanceof Map.Entry) {
-            for (int i = 0; i < array.length; i++) {
-                Map.Entry entry = (Map.Entry) array[i];
-                map.put(entry.getKey(), entry.getValue());
-            }
-        } else if (obj instanceof KeyValue) {
-            for (int i = 0; i < array.length; i++) {
-                KeyValue keyval = (KeyValue) array[i];
-                map.put(keyval.getKey(), keyval.getValue());
-            }
-        } else if (obj instanceof Object[]) {
-            for (int i = 0; i < array.length; i++) {
-                Object[] sub = (Object[]) array[i];
-                if (sub == null || sub.length < 2) {
-                    throw new IllegalArgumentException("Invalid array element: " + i);
-                }
-                map.put(sub[0], sub[1]);
-            }
-        } else {
-            for (int i = 0; i < array.length - 1;) {
-                map.put(array[i++], array[i++]);
-            }
-        }
-        return map;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Null-safe check if the specified map is empty.
-     * <p>
-     * Null returns true.
-     * 
-     * @param map  the map to check, may be null
-     * @return true if empty or null
-     * @since Commons Collections 3.2
-     */
-    public static boolean isEmpty(Map map) {
-        return (map == null || map.isEmpty());
-    }
-
-    /**
-     * Null-safe check if the specified map is not empty.
-     * <p>
-     * Null returns false.
-     * 
-     * @param map  the map to check, may be null
-     * @return true if non-null and non-empty
-     * @since Commons Collections 3.2
-     */
-    public static boolean isNotEmpty(Map map) {
-        return !MapUtils.isEmpty(map);
-    }
-
-    // Map decorators
-    //-----------------------------------------------------------------------
-    /**
-     * Returns a synchronized map backed by the given map.
-     * <p>
-     * You must manually synchronize on the returned buffer's iterator to 
-     * avoid non-deterministic behavior:
-     *  
-     * <pre>
-     * Map m = MapUtils.synchronizedMap(myMap);
-     * Set s = m.keySet();  // outside synchronized block
-     * synchronized (m) {  // synchronized on MAP!
-     *     Iterator i = s.iterator();
-     *     while (i.hasNext()) {
-     *         process (i.next());
-     *     }
-     * }
-     * </pre>
-     * 
-     * This method uses the implementation in {@link java.util.Collections Collections}.
-     * 
-     * @param map  the map to synchronize, must not be null
-     * @return a synchronized map backed by the given map
-     * @throws IllegalArgumentException  if the map is null
-     */
-    public static Map synchronizedMap(Map map) {
-        return Collections.synchronizedMap(map);
-    }
-
-    /**
-     * Returns an unmodifiable map backed by the given map.
-     * <p>
-     * This method uses the implementation in the decorators subpackage.
-     *
-     * @param map  the map to make unmodifiable, must not be null
-     * @return an unmodifiable map backed by the given map
-     * @throws IllegalArgumentException  if the map is null
-     */
-    public static Map unmodifiableMap(Map map) {
-        return UnmodifiableMap.decorate(map);
-    }
-
-    /**
-     * Returns a predicated (validating) map backed by the given map.
-     * <p>
-     * Only objects that pass the tests in the given predicates can be added to the map.
-     * Trying to add an invalid object results in an IllegalArgumentException.
-     * Keys must pass the key predicate, values must pass the value predicate.
-     * It is important not to use the original map after invoking this method,
-     * as it is a backdoor for adding invalid objects.
-     *
-     * @param map  the map to predicate, must not be null
-     * @param keyPred  the predicate for keys, null means no check
-     * @param valuePred  the predicate for values, null means no check
-     * @return a predicated map backed by the given map
-     * @throws IllegalArgumentException  if the Map is null
-     */
-    public static Map predicatedMap(Map map, Predicate keyPred, Predicate valuePred) {
-        return PredicatedMap.decorate(map, keyPred, valuePred);
-    }
-
-    /**
-     * Returns a typed map backed by the given map.
-     * <p>
-     * Only keys and values of the specified types can be added to the map.
-     * 
-     * @param map  the map to limit to a specific type, must not be null
-     * @param keyType  the type of keys which may be added to the map, must not be null
-     * @param valueType  the type of values which may be added to the map, must not be null
-     * @return a typed map backed by the specified map
-     * @throws IllegalArgumentException  if the Map or Class is null
-     */
-    public static Map typedMap(Map map, Class keyType, Class valueType) {
-        return TypedMap.decorate(map, keyType, valueType);
-    }
-    
-    /**
-     * Returns a transformed map backed by the given map.
-     * <p>
-     * This method returns a new map (decorating the specified map) that
-     * will transform any new entries added to it.
-     * Existing entries in the specified map will not be transformed.
-     * If you want that behaviour, see {@link TransformedMap#decorateTransform}.
-     * <p>
-     * Each object is passed through the transformers as it is added to the
-     * Map. It is important not to use the original map after invoking this 
-     * method, as it is a backdoor for adding untransformed objects.
-     * <p>
-     * If there are any elements already in the map being decorated, they
-     * are NOT transformed.
-     *
-     * @param map  the map to transform, must not be null, typically empty
-     * @param keyTransformer  the transformer for the map keys, null means no transformation
-     * @param valueTransformer  the transformer for the map values, null means no transformation
-     * @return a transformed map backed by the given map
-     * @throws IllegalArgumentException  if the Map is null
-     */
-    public static Map transformedMap(Map map, Transformer keyTransformer, Transformer valueTransformer) {
-        return TransformedMap.decorate(map, keyTransformer, valueTransformer);
-    }
-    
-    /**
-     * Returns a fixed-sized map backed by the given map.
-     * Elements may not be added or removed from the returned map, but 
-     * existing elements can be changed (for instance, via the 
-     * {@link Map#put(Object,Object)} method).
-     *
-     * @param map  the map whose size to fix, must not be null
-     * @return a fixed-size map backed by that map
-     * @throws IllegalArgumentException  if the Map is null
-     */
-    public static Map fixedSizeMap(Map map) {
-        return FixedSizeMap.decorate(map);
-    }
-
-    /**
-     * Returns a "lazy" map whose values will be created on demand.
-     * <p>
-     * When the key passed to the returned map's {@link Map#get(Object)}
-     * method is not present in the map, then the factory will be used
-     * to create a new object and that object will become the value
-     * associated with that key.
-     * <p>
-     * For instance:
-     * <pre>
-     * Factory factory = new Factory() {
-     *     public Object create() {
-     *         return new Date();
-     *     }
-     * }
-     * Map lazyMap = MapUtils.lazyMap(new HashMap(), factory);
-     * Object obj = lazyMap.get("test");
-     * </pre>
-     *
-     * After the above code is executed, <code>obj</code> will contain
-     * a new <code>Date</code> instance.  Furthermore, that <code>Date</code>
-     * instance is the value for the <code>"test"</code> key in the map.
-     *
-     * @param map  the map to make lazy, must not be null
-     * @param factory  the factory for creating new objects, must not be null
-     * @return a lazy map backed by the given map
-     * @throws IllegalArgumentException  if the Map or Factory is null
-     */
-    public static Map lazyMap(Map map, Factory factory) {
-        return LazyMap.decorate(map, factory);
-    }
-
-    /**
-     * Returns a "lazy" map whose values will be created on demand.
-     * <p>
-     * When the key passed to the returned map's {@link Map#get(Object)}
-     * method is not present in the map, then the factory will be used
-     * to create a new object and that object will become the value
-     * associated with that key. The factory is a {@link Transformer}
-     * that will be passed the key which it must transform into the value.
-     * <p>
-     * For instance:
-     * <pre>
-     * Transformer factory = new Transformer() {
-     *     public Object transform(Object mapKey) {
-     *         return new File(mapKey);
-     *     }
-     * }
-     * Map lazyMap = MapUtils.lazyMap(new HashMap(), factory);
-     * Object obj = lazyMap.get("C:/dev");
-     * </pre>
-     *
-     * After the above code is executed, <code>obj</code> will contain
-     * a new <code>File</code> instance for the C drive dev directory.
-     * Furthermore, that <code>File</code> instance is the value for the
-     * <code>"C:/dev"</code> key in the map.
-     * <p>
-     * If a lazy map is wrapped by a synchronized map, the result is a simple
-     * synchronized cache. When an object is not is the cache, the cache itself
-     * calls back to the factory Transformer to populate itself, all within the
-     * same synchronized block.
-     *
-     * @param map  the map to make lazy, must not be null
-     * @param transformerFactory  the factory for creating new objects, must not be null
-     * @return a lazy map backed by the given map
-     * @throws IllegalArgumentException  if the Map or Transformer is null
-     */
-    public static Map lazyMap(Map map, Transformer transformerFactory) {
-        return LazyMap.decorate(map, transformerFactory);
-    }
-
-    /**
-     * Returns a map that maintains the order of keys that are added
-     * backed by the given map.
-     * <p>
-     * If a key is added twice, the order is determined by the first add.
-     * The order is observed through the keySet, values and entrySet.
-     *
-     * @param map  the map to order, must not be null
-     * @return an ordered map backed by the given map
-     * @throws IllegalArgumentException  if the Map is null
-     */
-    public static Map orderedMap(Map map) {
-        return ListOrderedMap.decorate(map);
-    }
-
-    /**
-     * Creates a mult-value map backed by the given map which returns
-     * collections of type ArrayList.
-     *
-     * @param map  the map to decorate
-     * @return a multi-value map backed by the given map which returns ArrayLists of values.
-     * @see MultiValueMap
-     * @since Commons Collections 3.2
-     */
-    public static Map multiValueMap(Map map) {
-        return MultiValueMap.decorate(map);
-    }
-
-    /**
-     * Creates a multi-value map backed by the given map which returns
-     * collections of the specified type.
-     *
-     * @param map  the map to decorate
-     * @param collectionClass  the type of collections to return from the map (must contain public no-arg constructor
-     *  and extend Collection).
-     * @return a multi-value map backed by the given map which returns collections of the specified type
-     * @see MultiValueMap
-     * @since Commons Collections 3.2
-     */
-    public static Map multiValueMap(Map map, Class collectionClass) {
-        return MultiValueMap.decorate(map, collectionClass);
-    }
-
-    /**
-     * Creates a multi-value map backed by the given map which returns
-     * collections created by the specified collection factory.
-     *
-     * @param map  the map to decorate
-     * @param collectionFactory  a factor which creates collection objects
-     * @return a multi-value map backed by the given map which returns collections
-     * created by the specified collection factory
-     * @see MultiValueMap
-     * @since Commons Collections 3.2
-     */
-    public static Map multiValueMap(Map map, Factory collectionFactory) {
-        return MultiValueMap.decorate(map, collectionFactory);
-    }
-
-    // SortedMap decorators
-    //-----------------------------------------------------------------------
-    /**
-     * Returns a synchronized sorted map backed by the given sorted map.
-     * <p>
-     * You must manually synchronize on the returned buffer's iterator to 
-     * avoid non-deterministic behavior:
-     *  
-     * <pre>
-     * Map m = MapUtils.synchronizedSortedMap(myMap);
-     * Set s = m.keySet();  // outside synchronized block
-     * synchronized (m) {  // synchronized on MAP!
-     *     Iterator i = s.iterator();
-     *     while (i.hasNext()) {
-     *         process (i.next());
-     *     }
-     * }
-     * </pre>
-     * 
-     * This method uses the implementation in {@link java.util.Collections Collections}.
-     * 
-     * @param map  the map to synchronize, must not be null
-     * @return a synchronized map backed by the given map
-     * @throws IllegalArgumentException  if the map is null
-     */
-    public static Map synchronizedSortedMap(SortedMap map) {
-        return Collections.synchronizedSortedMap(map);
-    }
-
-    /**
-     * Returns an unmodifiable sorted map backed by the given sorted map.
-     * <p>
-     * This method uses the implementation in the decorators subpackage.
-     *
-     * @param map  the sorted map to make unmodifiable, must not be null
-     * @return an unmodifiable map backed by the given map
-     * @throws IllegalArgumentException  if the map is null
-     */
-    public static Map unmodifiableSortedMap(SortedMap map) {
-        return UnmodifiableSortedMap.decorate(map);
-    }
-
-    /**
-     * Returns a predicated (validating) sorted map backed by the given map.
-     * <p>
-     * Only objects that pass the tests in the given predicates can be added to the map.
-     * Trying to add an invalid object results in an IllegalArgumentException.
-     * Keys must pass the key predicate, values must pass the value predicate.
-     * It is important not to use the original map after invoking this method,
-     * as it is a backdoor for adding invalid objects.
-     *
-     * @param map  the map to predicate, must not be null
-     * @param keyPred  the predicate for keys, null means no check
-     * @param valuePred  the predicate for values, null means no check
-     * @return a predicated map backed by the given map
-     * @throws IllegalArgumentException  if the SortedMap is null
-     */
-    public static SortedMap predicatedSortedMap(SortedMap map, Predicate keyPred, Predicate valuePred) {
-        return PredicatedSortedMap.decorate(map, keyPred, valuePred);
-    }
-
-    /**
-     * Returns a typed sorted map backed by the given map.
-     * <p>
-     * Only keys and values of the specified types can be added to the map.
-     * 
-     * @param map  the map to limit to a specific type, must not be null
-     * @param keyType  the type of keys which may be added to the map, must not be null
-     * @param valueType  the type of values which may be added to the map, must not be null
-     * @return a typed map backed by the specified map
-     */
-    public static SortedMap typedSortedMap(SortedMap map, Class keyType, Class valueType) {
-        return TypedSortedMap.decorate(map, keyType, valueType);
-    }
-    
-    /**
-     * Returns a transformed sorted map backed by the given map.
-     * <p>
-     * This method returns a new sorted map (decorating the specified map) that
-     * will transform any new entries added to it.
-     * Existing entries in the specified map will not be transformed.
-     * If you want that behaviour, see {@link TransformedSortedMap#decorateTransform}.
-     * <p>
-     * Each object is passed through the transformers as it is added to the
-     * Map. It is important not to use the original map after invoking this 
-     * method, as it is a backdoor for adding untransformed objects.
-     * <p>
-     * If there are any elements already in the map being decorated, they
-     * are NOT transformed.
-     *
-     * @param map  the map to transform, must not be null, typically empty
-     * @param keyTransformer  the transformer for the map keys, null means no transformation
-     * @param valueTransformer  the transformer for the map values, null means no transformation
-     * @return a transformed map backed by the given map
-     * @throws IllegalArgumentException  if the SortedMap is null
-     */
-    public static SortedMap transformedSortedMap(SortedMap map, Transformer keyTransformer, Transformer valueTransformer) {
-        return TransformedSortedMap.decorate(map, keyTransformer, valueTransformer);
-    }
-    
-    /**
-     * Returns a fixed-sized sorted map backed by the given sorted map.
-     * Elements may not be added or removed from the returned map, but 
-     * existing elements can be changed (for instance, via the 
-     * {@link Map#put(Object,Object)} method).
-     *
-     * @param map  the map whose size to fix, must not be null
-     * @return a fixed-size map backed by that map
-     * @throws IllegalArgumentException  if the SortedMap is null
-     */
-    public static SortedMap fixedSizeSortedMap(SortedMap map) {
-        return FixedSizeSortedMap.decorate(map);
-    }
-
-    /**
-     * Returns a "lazy" sorted map whose values will be created on demand.
-     * <p>
-     * When the key passed to the returned map's {@link Map#get(Object)}
-     * method is not present in the map, then the factory will be used
-     * to create a new object and that object will become the value
-     * associated with that key.
-     * <p>
-     * For instance:
-     *
-     * <pre>
-     * Factory factory = new Factory() {
-     *     public Object create() {
-     *         return new Date();
-     *     }
-     * }
-     * SortedMap lazy = MapUtils.lazySortedMap(new TreeMap(), factory);
-     * Object obj = lazy.get("test");
-     * </pre>
-     *
-     * After the above code is executed, <code>obj</code> will contain
-     * a new <code>Date</code> instance.  Furthermore, that <code>Date</code>
-     * instance is the value for the <code>"test"</code> key.
-     *
-     * @param map  the map to make lazy, must not be null
-     * @param factory  the factory for creating new objects, must not be null
-     * @return a lazy map backed by the given map
-     * @throws IllegalArgumentException  if the SortedMap or Factory is null
-     */
-    public static SortedMap lazySortedMap(SortedMap map, Factory factory) {
-        return LazySortedMap.decorate(map, factory);
-    }
-    
-    /**
-     * Returns a "lazy" sorted map whose values will be created on demand.
-     * <p>
-     * When the key passed to the returned map's {@link Map#get(Object)}
-     * method is not present in the map, then the factory will be used
-     * to create a new object and that object will become the value
-     * associated with that key. The factory is a {@link Transformer}
-     * that will be passed the key which it must transform into the value.
-     * <p>
-     * For instance:
-     * <pre>
-     * Transformer factory = new Transformer() {
-     *     public Object transform(Object mapKey) {
-     *         return new File(mapKey);
-     *     }
-     * }
-     * SortedMap lazy = MapUtils.lazySortedMap(new TreeMap(), factory);
-     * Object obj = lazy.get("C:/dev");
-     * </pre>
-     *
-     * After the above code is executed, <code>obj</code> will contain
-     * a new <code>File</code> instance for the C drive dev directory.
-     * Furthermore, that <code>File</code> instance is the value for the
-     * <code>"C:/dev"</code> key in the map.
-     * <p>
-     * If a lazy map is wrapped by a synchronized map, the result is a simple
-     * synchronized cache. When an object is not is the cache, the cache itself
-     * calls back to the factory Transformer to populate itself, all within the
-     * same synchronized block.
-     *
-     * @param map  the map to make lazy, must not be null
-     * @param transformerFactory  the factory for creating new objects, must not be null
-     * @return a lazy map backed by the given map
-     * @throws IllegalArgumentException  if the Map or Transformer is null
-     */
-    public static SortedMap lazySortedMap(SortedMap map, Transformer transformerFactory) {
-        return LazySortedMap.decorate(map, transformerFactory);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/MultiHashMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/MultiHashMap.java
deleted file mode 100755
index 95b8ea6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/MultiHashMap.java
+++ /dev/null
@@ -1,492 +0,0 @@
-/*
- *  Copyright 2001-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.commons.collections;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.util.AbstractCollection;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-import org.apache.commons.collections.iterators.EmptyIterator;
-
-/** 
- * <code>MultiHashMap</code> is the default implementation of the 
- * {@link org.apache.commons.collections.MultiMap MultiMap} interface.
- * <p>
- * A <code>MultiMap</code> is a Map with slightly different semantics.
- * Putting a value into the map will add the value to a Collection at that key.
- * Getting a value will return a Collection, holding all the values put to that key.
- * <p>
- * This implementation uses an <code>ArrayList</code> as the collection.
- * The internal storage list is made available without cloning via the
- * <code>get(Object)</code> and <code>entrySet()</code> methods.
- * The implementation returns <code>null</code> when there are no values mapped to a key.
- * <p>
- * For example:
- * <pre>
- * MultiMap mhm = new MultiHashMap();
- * mhm.put(key, "A");
- * mhm.put(key, "B");
- * mhm.put(key, "C");
- * List list = (List) mhm.get(key);</pre>
- * <p>
- * <code>list</code> will be a list containing "A", "B", "C".
- *
- * @deprecated Class now available as MultiValueMap in map subpackage.
- * This version is due to be removed in collections v4.0.
- *
- * @since Commons Collections 2.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author Christopher Berry
- * @author James Strachan
- * @author Steve Downey
- * @author Stephen Colebourne
- * @author Julien Buret
- * @author Serhiy Yevtushenko
- * @author Robert Ribnitz
- */
-public class MultiHashMap extends HashMap implements MultiMap {
-    
-    // backed values collection
-    private transient Collection values = null;
-    
-    // compatibility with commons-collection releases 2.0/2.1
-    private static final long serialVersionUID = 1943563828307035349L;
-
-    /**
-     * Constructor.
-     */
-    public MultiHashMap() {
-        super();
-    }
-
-    /**
-     * Constructor.
-     * 
-     * @param initialCapacity  the initial map capacity
-     */
-    public MultiHashMap(int initialCapacity) {
-        super(initialCapacity);
-    }
-
-    /**
-     * Constructor.
-     * 
-     * @param initialCapacity  the initial map capacity
-     * @param loadFactor  the amount 0.0-1.0 at which to resize the map
-     */
-    public MultiHashMap(int initialCapacity, float loadFactor) {
-        super(initialCapacity, loadFactor);
-    }
-
-    /**
-     * Constructor that copies the input map creating an independent copy.
-     * <p>
-     * This method performs different behaviour depending on whether the map
-     * specified is a MultiMap or not. If a MultiMap is specified, each internal
-     * collection is also cloned. If the specified map only implements Map, then
-     * the values are not cloned.
-     * <p>
-     * NOTE: From Commons Collections 3.1 this method correctly copies a MultiMap
-     * to form a truly independent new map.
-     * NOTE: From Commons Collections 3.2 this method delegates to the newly
-     * added putAll(Map) override method.
-     * 
-     * @param mapToCopy  a Map to copy
-     */
-    public MultiHashMap(Map mapToCopy) {
-        // be careful of JDK 1.3 vs 1.4 differences
-        super((int) (mapToCopy.size() * 1.4f));
-        putAll(mapToCopy);
-    }
-
-    /**
-     * Read the object during deserialization.
-     */
-    private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException {
-        // This method is needed because the 1.2/1.3 Java deserialisation called
-        // put and thus messed up that method
-        
-        // default read object
-        s.defaultReadObject();
-
-        // problem only with jvm <1.4
-        String version = "1.2";
-        try {
-            version = System.getProperty("java.version");
-        } catch (SecurityException ex) {
-            // ignore and treat as 1.2/1.3
-        }
-
-        if (version.startsWith("1.2") || version.startsWith("1.3")) {
-            for (Iterator iterator = entrySet().iterator(); iterator.hasNext();) {
-                Map.Entry entry = (Map.Entry) iterator.next();
-                // put has created a extra collection level, remove it
-                super.put(entry.getKey(), ((Collection) entry.getValue()).iterator().next());
-            }
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the total size of the map by counting all the values.
-     * 
-     * @return the total size of the map counting all values
-     * @since Commons Collections 3.1
-     */
-    public int totalSize() {
-        int total = 0;
-        Collection values = super.values();
-        for (Iterator it = values.iterator(); it.hasNext();) {
-            Collection coll = (Collection) it.next();
-            total += coll.size();
-        }
-        return total;
-    }
-
-    /**
-     * Gets the collection mapped to the specified key.
-     * This method is a convenience method to typecast the result of <code>get(key)</code>.
-     * 
-     * @param key  the key to retrieve
-     * @return the collection mapped to the key, null if no mapping
-     * @since Commons Collections 3.1
-     */
-    public Collection getCollection(Object key) {
-        return (Collection) get(key);
-    }
-
-    /**
-     * Gets the size of the collection mapped to the specified key.
-     * 
-     * @param key  the key to get size for
-     * @return the size of the collection at the key, zero if key not in map
-     * @since Commons Collections 3.1
-     */
-    public int size(Object key) {
-        Collection coll = getCollection(key);
-        if (coll == null) {
-            return 0;
-        }
-        return coll.size();
-    }
-
-    /**
-     * Gets an iterator for the collection mapped to the specified key.
-     * 
-     * @param key  the key to get an iterator for
-     * @return the iterator of the collection at the key, empty iterator if key not in map
-     * @since Commons Collections 3.1
-     */
-    public Iterator iterator(Object key) {
-        Collection coll = getCollection(key);
-        if (coll == null) {
-            return EmptyIterator.INSTANCE;
-        }
-        return coll.iterator();
-    }
-
-    /**
-     * Adds the value to the collection associated with the specified key.
-     * <p>
-     * Unlike a normal <code>Map</code> the previous value is not replaced.
-     * Instead the new value is added to the collection stored against the key.
-     *
-     * @param key  the key to store against
-     * @param value  the value to add to the collection at the key
-     * @return the value added if the map changed and null if the map did not change
-     */    
-    public Object put(Object key, Object value) {
-        // NOTE:: put is called during deserialization in JDK < 1.4 !!!!!!
-        //        so we must have a readObject()
-        Collection coll = getCollection(key);
-        if (coll == null) {
-            coll = createCollection(null);
-            super.put(key, coll);
-        }
-        boolean results = coll.add(value);
-        return (results ? value : null);
-    }
-
-    /**
-     * Override superclass to ensure that MultiMap instances are
-     * correctly handled.
-     * <p>
-     * NOTE: Prior to version 3.2, putAll(map) did not work properly
-     * when passed a MultiMap.
-     * 
-     * @param map  the map to copy (either a normal or multi map)
-     */
-    public void putAll(Map map) {
-        if (map instanceof MultiMap) {
-            for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
-                Map.Entry entry = (Map.Entry) it.next();
-                Collection coll = (Collection) entry.getValue();
-                putAll(entry.getKey(), coll);
-            }
-        } else {
-            for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
-                Map.Entry entry = (Map.Entry) it.next();
-                put(entry.getKey(), entry.getValue());
-            }
-        }
-    }
-
-    /**
-     * Adds a collection of values to the collection associated with the specified key.
-     *
-     * @param key  the key to store against
-     * @param values  the values to add to the collection at the key, null ignored
-     * @return true if this map changed
-     * @since Commons Collections 3.1
-     */    
-    public boolean putAll(Object key, Collection values) {
-        if (values == null || values.size() == 0) {
-            return false;
-        }
-        Collection coll = getCollection(key);
-        if (coll == null) {
-            coll = createCollection(values);
-            if (coll.size() == 0) {
-                return false;
-            }
-            super.put(key, coll);
-            return true;
-        } else {
-            return coll.addAll(values);
-        }
-    }
-
-    /**
-     * Checks whether the map contains the value specified.
-     * <p>
-     * This checks all collections against all keys for the value, and thus could be slow.
-     * 
-     * @param value  the value to search for
-     * @return true if the map contains the value
-     */
-    public boolean containsValue(Object value) {
-        Set pairs = super.entrySet();
-
-        if (pairs == null) {
-            return false;
-        }
-        Iterator pairsIterator = pairs.iterator();
-        while (pairsIterator.hasNext()) {
-            Map.Entry keyValuePair = (Map.Entry) pairsIterator.next();
-            Collection coll = (Collection) keyValuePair.getValue();
-            if (coll.contains(value)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Checks whether the collection at the specified key contains the value.
-     * 
-     * @param value  the value to search for
-     * @return true if the map contains the value
-     * @since Commons Collections 3.1
-     */
-    public boolean containsValue(Object key, Object value) {
-        Collection coll = getCollection(key);
-        if (coll == null) {
-            return false;
-        }
-        return coll.contains(value);
-    }
-
-    /**
-     * Removes a specific value from map.
-     * <p>
-     * The item is removed from the collection mapped to the specified key.
-     * Other values attached to that key are unaffected.
-     * <p>
-     * If the last value for a key is removed, <code>null</code> will be returned
-     * from a subsequant <code>get(key)</code>.
-     * 
-     * @param key  the key to remove from
-     * @param item  the value to remove
-     * @return the value removed (which was passed in), null if nothing removed
-     */
-    public Object remove(Object key, Object item) {
-        Collection valuesForKey = getCollection(key);
-        if (valuesForKey == null) {
-            return null;
-        }
-        boolean removed = valuesForKey.remove(item);
-        if (removed == false) {
-            return null;
-        }
-        // remove the list if it is now empty
-        // (saves space, and allows equals to work)
-        if (valuesForKey.isEmpty()){
-            remove(key);
-        }
-        return item;
-    }
-
-    /**
-     * Clear the map.
-     * <p>
-     * This clears each collection in the map, and so may be slow.
-     */
-    public void clear() {
-        // For gc, clear each list in the map
-        Set pairs = super.entrySet();
-        Iterator pairsIterator = pairs.iterator();
-        while (pairsIterator.hasNext()) {
-            Map.Entry keyValuePair = (Map.Entry) pairsIterator.next();
-            Collection coll = (Collection) keyValuePair.getValue();
-            coll.clear();
-        }
-        super.clear();
-    }
-
-    /**
-     * Gets a collection containing all the values in the map.
-     * <p>
-     * This returns a collection containing the combination of values from all keys.
-     *
-     * @return a collection view of the values contained in this map
-     */
-    public Collection values() {
-        Collection vs = values;
-        return (vs != null ? vs : (values = new Values()));
-    }
-
-    /**
-     * Gets the values iterator from the superclass, as used by inner class.
-     *
-     * @return iterator
-     */
-    Iterator superValuesIterator() {
-        return super.values().iterator();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Inner class to view the elements.
-     */
-    private class Values extends AbstractCollection {
-
-        public Iterator iterator() {
-            return new ValueIterator();
-        }
-
-        public int size() {
-            int compt = 0;
-            Iterator it = iterator();
-            while (it.hasNext()) {
-                it.next();
-                compt++;
-            }
-            return compt;
-        }
-
-        public void clear() {
-            MultiHashMap.this.clear();
-        }
-
-    }
-
-    /**
-     * Inner iterator to view the elements.
-     */
-    private class ValueIterator implements Iterator {
-        private Iterator backedIterator;
-        private Iterator tempIterator;
-
-        private ValueIterator() {
-            backedIterator = MultiHashMap.this.superValuesIterator();
-        }
-
-        private boolean searchNextIterator() {
-            while (tempIterator == null || tempIterator.hasNext() == false) {
-                if (backedIterator.hasNext() == false) {
-                    return false;
-                }
-                tempIterator = ((Collection) backedIterator.next()).iterator();
-            }
-            return true;
-        }
-
-        public boolean hasNext() {
-            return searchNextIterator();
-        }
-
-        public Object next() {
-            if (searchNextIterator() == false) {
-                throw new NoSuchElementException();
-            }
-            return tempIterator.next();
-        }
-
-        public void remove() {
-            if (tempIterator == null) {
-                throw new IllegalStateException();
-            }
-            tempIterator.remove();
-        }
-
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Clones the map creating an independent copy.
-     * <p>
-     * The clone will shallow clone the collections as well as the map.
-     * 
-     * @return the cloned map
-     */
-    public Object clone() {
-        MultiHashMap cloned = (MultiHashMap) super.clone();
-
-        // clone each Collection container
-        for (Iterator it = cloned.entrySet().iterator(); it.hasNext();) {
-            Map.Entry entry = (Map.Entry) it.next();
-            Collection coll = (Collection) entry.getValue();
-            Collection newColl = createCollection(coll);
-            entry.setValue(newColl);
-        }
-        return cloned;
-    }
-
-    /** 
-     * Creates a new instance of the map value Collection container.
-     * <p>
-     * This method can be overridden to use your own collection type.
-     *
-     * @param coll  the collection to copy, may be null
-     * @return the new collection
-     */
-    protected Collection createCollection(Collection coll) {
-        if (coll == null) {
-            return new ArrayList();
-        } else {
-            return new ArrayList(coll);
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/MultiMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/MultiMap.java
deleted file mode 100755
index 1bd2730..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/MultiMap.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.Collection;
-import java.util.Map;
-
-/** 
- * Defines a map that holds a collection of values against each key.
- * <p>
- * A <code>MultiMap</code> is a Map with slightly different semantics.
- * Putting a value into the map will add the value to a Collection at that key.
- * Getting a value will return a Collection, holding all the values put to that key.
- * <p>
- * For example:
- * <pre>
- * MultiMap mhm = new MultiHashMap();
- * mhm.put(key, "A");
- * mhm.put(key, "B");
- * mhm.put(key, "C");
- * Collection coll = (Collection) mhm.get(key);</pre>
- * <p>
- * <code>coll</code> will be a collection containing "A", "B", "C".
- * <p>
- * NOTE: Additional methods were added to this interface in Commons Collections 3.1.
- * These were added solely for documentation purposes and do not change the interface
- * as they were defined in the superinterface <code>Map</code> anyway.
- *
- * @since Commons Collections 2.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- * 
- * @author Christopher Berry
- * @author James Strachan
- * @author Stephen Colebourne
- */
-public interface MultiMap extends Map {
-
-    /**
-     * Removes a specific value from map.
-     * <p>
-     * The item is removed from the collection mapped to the specified key.
-     * Other values attached to that key are unaffected.
-     * <p>
-     * If the last value for a key is removed, implementations typically
-     * return <code>null</code> from a subsequant <code>get(Object)</code>, however
-     * they may choose to return an empty collection.
-     * 
-     * @param key  the key to remove from
-     * @param item  the item to remove
-     * @return the value removed (which was passed in), null if nothing removed
-     * @throws UnsupportedOperationException if the map is unmodifiable
-     * @throws ClassCastException if the key or value is of an invalid type
-     * @throws NullPointerException if the key or value is null and null is invalid
-     */
-    public Object remove(Object key, Object item);
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the number of keys in this map.
-     * <p>
-     * Implementations typically return only the count of keys in the map
-     * This cannot be mandated due to backwards compatability of this interface.
-     *
-     * @return the number of key-collection mappings in this map
-     */
-    int size();
-
-    /**
-     * Gets the collection of values associated with the specified key.
-     * <p>
-     * The returned value will implement <code>Collection</code>. Implementations
-     * are free to declare that they return <code>Collection</code> subclasses
-     * such as <code>List</code> or <code>Set</code>.
-     * <p>
-     * Implementations typically return <code>null</code> if no values have
-     * been mapped to the key, however the implementation may choose to
-     * return an empty collection.
-     * <p>
-     * Implementations may choose to return a clone of the internal collection.
-     *
-     * @param key  the key to retrieve
-     * @return the <code>Collection</code> of values, implementations should
-     *  return <code>null</code> for no mapping, but may return an empty collection
-     * @throws ClassCastException if the key is of an invalid type
-     * @throws NullPointerException if the key is null and null keys are invalid
-     */
-    Object get(Object key);
-
-    /**
-     * Checks whether the map contains the value specified.
-     * <p>
-     * Implementations typically check all collections against all keys for the value.
-     * This cannot be mandated due to backwards compatability of this interface.
-     *
-     * @param value  the value to search for
-     * @return true if the map contains the value
-     * @throws ClassCastException if the value is of an invalid type
-     * @throws NullPointerException if the value is null and null value are invalid
-     */
-    boolean containsValue(Object value);
-
-    /**
-     * Adds the value to the collection associated with the specified key.
-     * <p>
-     * Unlike a normal <code>Map</code> the previous value is not replaced.
-     * Instead the new value is added to the collection stored against the key.
-     * The collection may be a <code>List</code>, <code>Set</code> or other
-     * collection dependent on implementation.
-     *
-     * @param key  the key to store against
-     * @param value  the value to add to the collection at the key
-     * @return typically the value added if the map changed and null if the map did not change
-     * @throws UnsupportedOperationException if the map is unmodifiable
-     * @throws ClassCastException if the key or value is of an invalid type
-     * @throws NullPointerException if the key or value is null and null is invalid
-     * @throws IllegalArgumentException if the key or value is invalid
-     */
-    Object put(Object key, Object value);
-
-    /**
-     * Removes all values associated with the specified key.
-     * <p>
-     * Implementations typically return <code>null</code> from a subsequant
-     * <code>get(Object)</code>, however they may choose to return an empty collection.
-     *
-     * @param key  the key to remove values from
-     * @return the <code>Collection</code> of values removed, implementations should
-     *  return <code>null</code> for no mapping found, but may return an empty collection
-     * @throws UnsupportedOperationException if the map is unmodifiable
-     * @throws ClassCastException if the key is of an invalid type
-     * @throws NullPointerException if the key is null and null keys are invalid
-     */
-    Object remove(Object key);
-
-    /**
-     * Gets a collection containing all the values in the map.
-     * <p>
-     * Inplementations typically return a collection containing the combination
-     * of values from all keys.
-     * This cannot be mandated due to backwards compatability of this interface.
-     *
-     * @return a collection view of the values contained in this map
-     */
-    Collection values();
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/OrderedBidiMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/OrderedBidiMap.java
deleted file mode 100755
index a6c6216..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/OrderedBidiMap.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-/**
- * Defines a map that allows bidirectional lookup between key and values
- * and retains and provides access to an ordering.
- * <p>
- * Implementations should allow a value to be looked up from a key and
- * a key to be looked up from a value with equal performance.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- *
- * @author Stephen Colebourne
- */
-public interface OrderedBidiMap extends BidiMap, OrderedMap {
-
-    /**
-     * Gets a view of this map where the keys and values are reversed.
-     * <p>
-     * Changes to one map will be visible in the other and vice versa.
-     * This enables both directions of the map to be accessed equally.
-     * <p>
-     * Implementations should seek to avoid creating a new object every time this
-     * method is called. See <code>AbstractMap.values()</code> etc. Calling this
-     * method on the inverse map should return the original.
-     * <p>
-     * Implementations must return an <code>OrderedBidiMap</code> instance,
-     * usually by forwarding to <code>inverseOrderedBidiMap()</code>.
-     *
-     * @return an inverted bidirectional map
-     */
-    public BidiMap inverseBidiMap();
-    
-    /**
-     * Gets a view of this map where the keys and values are reversed.
-     * <p>
-     * Changes to one map will be visible in the other and vice versa.
-     * This enables both directions of the map to be accessed equally.
-     * <p>
-     * Implementations should seek to avoid creating a new object every time this
-     * method is called. See <code>AbstractMap.values()</code> etc. Calling this
-     * method on the inverse map should return the original.
-     *
-     * @return an inverted bidirectional map
-     */
-    public OrderedBidiMap inverseOrderedBidiMap();
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/OrderedIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/OrderedIterator.java
deleted file mode 100755
index e1b1a20..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/OrderedIterator.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.Iterator;
-
-/**
- * Defines an iterator that operates over an ordered collection.
- * <p>
- * This iterator allows both forward and reverse iteration through the collection.
- *  
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- *
- * @author Stephen Colebourne
- */
-public interface OrderedIterator extends Iterator {
-
-    /**
-     * Checks to see if there is a previous element that can be iterated to.
-     *
-     * @return <code>true</code> if the iterator has a previous element
-     */
-    boolean hasPrevious();
-
-    /**
-     * Gets the previous element from the collection.
-     *
-     * @return the previous element in the iteration
-     * @throws java.util.NoSuchElementException if the iteration is finished
-     */
-    Object previous();
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/OrderedMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/OrderedMap.java
deleted file mode 100755
index a7fb4c1..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/OrderedMap.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-/**
- * Defines a map that maintains order and allows both forward and backward
- * iteration through that order.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- *
- * @author Stephen Colebourne
- */
-public interface OrderedMap extends IterableMap {
-    
-    /**
-     * Obtains an <code>OrderedMapIterator</code> over the map.
-     * <p>
-     * A ordered map iterator is an efficient way of iterating over maps
-     * in both directions.
-     * <pre>
-     * BidiMap map = new TreeBidiMap();
-     * MapIterator it = map.mapIterator();
-     * while (it.hasNext()) {
-     *   Object key = it.next();
-     *   Object value = it.getValue();
-     *   it.setValue("newValue");
-     *   Object previousKey = it.previous();
-     * }
-     * </pre>
-     * 
-     * @return a map iterator
-     */
-    OrderedMapIterator orderedMapIterator();
-    
-    /**
-     * Gets the first key currently in this map.
-     *
-     * @return the first key currently in this map
-     * @throws java.util.NoSuchElementException if this map is empty
-     */
-    public Object firstKey();
-
-    /**
-     * Gets the last key currently in this map.
-     *
-     * @return the last key currently in this map
-     * @throws java.util.NoSuchElementException if this map is empty
-     */
-    public Object lastKey();
-    
-    /**
-     * Gets the next key after the one specified.
-     *
-     * @param key  the key to search for next from
-     * @return the next key, null if no match or at end
-     */
-    public Object nextKey(Object key);
-
-    /**
-     * Gets the previous key before the one specified.
-     *
-     * @param key  the key to search for previous from
-     * @return the previous key, null if no match or at start
-     */
-    public Object previousKey(Object key);
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/OrderedMapIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/OrderedMapIterator.java
deleted file mode 100755
index 99ea3ab..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/OrderedMapIterator.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-/**
- * Defines an iterator that operates over an ordered <code>Map</code>.
- * <p>
- * This iterator allows both forward and reverse iteration through the map.
- *  
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- *
- * @author Stephen Colebourne
- */
-public interface OrderedMapIterator extends MapIterator, OrderedIterator {
-    
-    /**
-     * Checks to see if there is a previous entry that can be iterated to.
-     *
-     * @return <code>true</code> if the iterator has a previous element
-     */
-    boolean hasPrevious();
-
-    /**
-     * Gets the previous <em>key</em> from the <code>Map</code>.
-     *
-     * @return the previous key in the iteration
-     * @throws java.util.NoSuchElementException if the iteration is finished
-     */
-    Object previous();
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/Predicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/Predicate.java
deleted file mode 100755
index 0e2dc63..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/Predicate.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-/**
- * Defines a functor interface implemented by classes that perform a predicate
- * test on an object.
- * <p>
- * A <code>Predicate</code> is the object equivalent of an <code>if</code> statement.
- * It uses the input object to return a true or false value, and is often used in
- * validation or filtering.
- * <p>
- * Standard implementations of common predicates are provided by
- * {@link PredicateUtils}. These include true, false, instanceof, equals, and,
- * or, not, method invokation and null testing.
- * 
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author James Strachan
- * @author Stephen Colebourne
- */
-public interface Predicate {
-
-    /**
-     * Use the specified parameter to perform a test that returns true or false.
-     *
-     * @param object  the object to evaluate, should not be changed
-     * @return true or false
-     * @throws ClassCastException (runtime) if the input is the wrong class
-     * @throws IllegalArgumentException (runtime) if the input is invalid
-     * @throws FunctorException (runtime) if the predicate encounters a problem
-     */
-    public boolean evaluate(Object object);
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/PredicateUtils.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/PredicateUtils.java
deleted file mode 100755
index 25d72a3..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/PredicateUtils.java
+++ /dev/null
@@ -1,535 +0,0 @@
-/*
- *  Copyright 2002-2004,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.commons.collections;
-
-import java.util.Collection;
-
-import org.apache.commons.collections.functors.AllPredicate;
-import org.apache.commons.collections.functors.AndPredicate;
-import org.apache.commons.collections.functors.AnyPredicate;
-import org.apache.commons.collections.functors.EqualPredicate;
-import org.apache.commons.collections.functors.ExceptionPredicate;
-import org.apache.commons.collections.functors.FalsePredicate;
-import org.apache.commons.collections.functors.IdentityPredicate;
-import org.apache.commons.collections.functors.InstanceofPredicate;
-import org.apache.commons.collections.functors.InvokerTransformer;
-import org.apache.commons.collections.functors.NonePredicate;
-import org.apache.commons.collections.functors.NotNullPredicate;
-import org.apache.commons.collections.functors.NotPredicate;
-import org.apache.commons.collections.functors.NullIsExceptionPredicate;
-import org.apache.commons.collections.functors.NullIsFalsePredicate;
-import org.apache.commons.collections.functors.NullIsTruePredicate;
-import org.apache.commons.collections.functors.NullPredicate;
-import org.apache.commons.collections.functors.OnePredicate;
-import org.apache.commons.collections.functors.OrPredicate;
-import org.apache.commons.collections.functors.TransformedPredicate;
-import org.apache.commons.collections.functors.TransformerPredicate;
-import org.apache.commons.collections.functors.TruePredicate;
-import org.apache.commons.collections.functors.UniquePredicate;
-
-/**
- * <code>PredicateUtils</code> provides reference implementations and utilities
- * for the Predicate functor interface. The supplied predicates are:
- * <ul>
- * <li>Invoker - returns the result of a method call on the input object
- * <li>InstanceOf - true if the object is an instanceof a class
- * <li>Equal - true if the object equals() a specified object
- * <li>Identity - true if the object == a specified object
- * <li>Null - true if the object is null
- * <li>NotNull - true if the object is not null
- * <li>Unique - true if the object has not already been evaluated
- * <li>And/All - true if all of the predicates are true
- * <li>Or/Any - true if any of the predicates is true
- * <li>Either/One - true if only one of the predicate is true
- * <li>Neither/None - true if none of the predicates are true
- * <li>Not - true if the predicate is false, and vice versa
- * <li>Transformer - wraps a Transformer as a Predicate
- * <li>True - always return true
- * <li>False - always return false
- * <li>Exception - always throws an exception
- * <li>NullIsException/NullIsFalse/NullIsTrue - check for null input
- * <li>Transformed - transforms the input before calling the predicate
- * </ul>
- * All the supplied predicates are Serializable.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- * 
- * @author Stephen Colebourne
- * @author Ola Berg
- */
-public class PredicateUtils {
-
-    /**
-     * This class is not normally instantiated.
-     */
-    public PredicateUtils() {
-        super();
-    }
-
-    // Simple predicates
-    //-----------------------------------------------------------------------------
-
-    /** 
-     * Gets a Predicate that always throws an exception.
-     * This could be useful during testing as a placeholder.
-     *
-     * @see org.apache.commons.collections.functors.ExceptionPredicate
-     * 
-     * @return the predicate
-     */
-    public static Predicate exceptionPredicate() {
-        return ExceptionPredicate.INSTANCE;
-    }
-
-    /**
-     * Gets a Predicate that always returns true.
-     * 
-     * @see org.apache.commons.collections.functors.TruePredicate
-     * 
-     * @return the predicate
-     */
-    public static Predicate truePredicate() {
-        return TruePredicate.INSTANCE;
-    }
-
-    /**
-     * Gets a Predicate that always returns false.
-     * 
-     * @see org.apache.commons.collections.functors.FalsePredicate
-     * 
-     * @return the predicate
-     */
-    public static Predicate falsePredicate() {
-        return FalsePredicate.INSTANCE;
-    }
-
-    /**
-     * Gets a Predicate that checks if the input object passed in is null.
-     * 
-     * @see org.apache.commons.collections.functors.NullPredicate
-     * 
-     * @return the predicate
-     */
-    public static Predicate nullPredicate() {
-        return NullPredicate.INSTANCE;
-    }
-
-    /**
-     * Gets a Predicate that checks if the input object passed in is not null.
-     * 
-     * @see org.apache.commons.collections.functors.NotNullPredicate
-     * 
-     * @return the predicate
-     */
-    public static Predicate notNullPredicate() {
-        return NotNullPredicate.INSTANCE;
-    }
-
-    /**
-     * Creates a Predicate that checks if the input object is equal to the
-     * specified object using equals().
-     * 
-     * @see org.apache.commons.collections.functors.EqualPredicate
-     * 
-     * @param value  the value to compare against
-     * @return the predicate
-     */
-    public static Predicate equalPredicate(Object value) {
-        return EqualPredicate.getInstance(value);
-    }
-
-    /**
-     * Creates a Predicate that checks if the input object is equal to the
-     * specified object by identity.
-     * 
-     * @see org.apache.commons.collections.functors.IdentityPredicate
-     * 
-     * @param value  the value to compare against
-     * @return the predicate
-     */
-    public static Predicate identityPredicate(Object value) {
-        return IdentityPredicate.getInstance(value);
-    }
-    
-    /**
-     * Creates a Predicate that checks if the object passed in is of
-     * a particular type, using instanceof. A <code>null</code> input
-     * object will return <code>false</code>.
-     * 
-     * @see org.apache.commons.collections.functors.InstanceofPredicate
-     * 
-     * @param type  the type to check for, may not be null
-     * @return the predicate
-     * @throws IllegalArgumentException if the class is null
-     */
-    public static Predicate instanceofPredicate(Class type) {
-        return InstanceofPredicate.getInstance(type);
-    }
-
-    /**
-     * Creates a Predicate that returns true the first time an object is
-     * encountered, and false if the same object is received 
-     * again. The comparison is by equals(). A <code>null</code> input object
-     * is accepted and will return true the first time, and false subsequently
-     * as well.
-     * 
-     * @see org.apache.commons.collections.functors.UniquePredicate
-     * 
-     * @return the predicate
-     */
-    public static Predicate uniquePredicate() {
-        // must return new instance each time
-        return UniquePredicate.getInstance();
-    }
-
-    /**
-     * Creates a Predicate that invokes a method on the input object.
-     * The method must return either a boolean or a non-null Boolean,
-     * and have no parameters. If the input object is null, a 
-     * PredicateException is thrown.
-     * <p>
-     * For example, <code>PredicateUtils.invokerPredicate("isEmpty");</code>
-     * will call the <code>isEmpty</code> method on the input object to 
-     * determine the predicate result.
-     * 
-     * @see org.apache.commons.collections.functors.InvokerTransformer
-     * @see org.apache.commons.collections.functors.TransformerPredicate
-     * 
-     * @param methodName  the method name to call on the input object, may not be null
-     * @return the predicate
-     * @throws IllegalArgumentException if the methodName is null.
-     */
-    public static Predicate invokerPredicate(String methodName){
-        // reuse transformer as it has caching - this is lazy really, should have inner class here
-        return asPredicate(InvokerTransformer.getInstance(methodName));
-    }
-
-    /**
-     * Creates a Predicate that invokes a method on the input object.
-     * The method must return either a boolean or a non-null Boolean,
-     * and have no parameters. If the input object is null, a 
-     * PredicateException is thrown.
-     * <p>
-     * For example, <code>PredicateUtils.invokerPredicate("isEmpty");</code>
-     * will call the <code>isEmpty</code> method on the input object to 
-     * determine the predicate result.
-     * 
-     * @see org.apache.commons.collections.functors.InvokerTransformer
-     * @see org.apache.commons.collections.functors.TransformerPredicate
-     * 
-     * @param methodName  the method name to call on the input object, may not be null
-     * @param paramTypes  the parameter types
-     * @param args  the arguments
-     * @return the predicate
-     * @throws IllegalArgumentException if the method name is null
-     * @throws IllegalArgumentException if the paramTypes and args don't match
-     */
-    public static Predicate invokerPredicate(String methodName, Class[] paramTypes, Object[] args){
-        // reuse transformer as it has caching - this is lazy really, should have inner class here
-        return asPredicate(InvokerTransformer.getInstance(methodName, paramTypes, args));
-    }
-
-    // Boolean combinations
-    //-----------------------------------------------------------------------------
-
-    /**
-     * Create a new Predicate that returns true only if both of the specified
-     * predicates are true.
-     * 
-     * @see org.apache.commons.collections.functors.AndPredicate
-     * 
-     * @param predicate1  the first predicate, may not be null
-     * @param predicate2  the second predicate, may not be null
-     * @return the <code>and</code> predicate
-     * @throws IllegalArgumentException if either predicate is null
-     */
-    public static Predicate andPredicate(Predicate predicate1, Predicate predicate2) {
-        return AndPredicate.getInstance(predicate1, predicate2);
-    }
-
-    /**
-     * Create a new Predicate that returns true only if all of the specified
-     * predicates are true.
-     * If the array of predicates is empty, then this predicate returns true.
-     * 
-     * @see org.apache.commons.collections.functors.AllPredicate
-     * 
-     * @param predicates  an array of predicates to check, may not be null
-     * @return the <code>all</code> predicate
-     * @throws IllegalArgumentException if the predicates array is null
-     * @throws IllegalArgumentException if any predicate in the array is null
-     */
-    public static Predicate allPredicate(Predicate[] predicates) {
-        return AllPredicate.getInstance(predicates);
-    }
-
-    /**
-     * Create a new Predicate that returns true only if all of the specified
-     * predicates are true. The predicates are checked in iterator order.
-     * If the collection of predicates is empty, then this predicate returns true.
-     * 
-     * @see org.apache.commons.collections.functors.AllPredicate
-     * 
-     * @param predicates  a collection of predicates to check, may not be null
-     * @return the <code>all</code> predicate
-     * @throws IllegalArgumentException if the predicates collection is null
-     * @throws IllegalArgumentException if any predicate in the collection is null
-     */
-    public static Predicate allPredicate(Collection predicates) {
-        return AllPredicate.getInstance(predicates);
-    }
-
-    /**
-     * Create a new Predicate that returns true if either of the specified
-     * predicates are true.
-     * 
-     * @see org.apache.commons.collections.functors.OrPredicate
-     * 
-     * @param predicate1  the first predicate, may not be null
-     * @param predicate2  the second predicate, may not be null
-     * @return the <code>or</code> predicate
-     * @throws IllegalArgumentException if either predicate is null
-     */
-    public static Predicate orPredicate(Predicate predicate1, Predicate predicate2) {
-        return OrPredicate.getInstance(predicate1, predicate2);
-    }
-
-    /**
-     * Create a new Predicate that returns true if any of the specified
-     * predicates are true.
-     * If the array of predicates is empty, then this predicate returns false.
-     * 
-     * @see org.apache.commons.collections.functors.AnyPredicate
-     * 
-     * @param predicates  an array of predicates to check, may not be null
-     * @return the <code>any</code> predicate
-     * @throws IllegalArgumentException if the predicates array is null
-     * @throws IllegalArgumentException if any predicate in the array is null
-     */
-    public static Predicate anyPredicate(Predicate[] predicates) {
-        return AnyPredicate.getInstance(predicates);
-    }
-
-    /**
-     * Create a new Predicate that returns true if any of the specified
-     * predicates are true. The predicates are checked in iterator order.
-     * If the collection of predicates is empty, then this predicate returns false.
-     * 
-     * @see org.apache.commons.collections.functors.AnyPredicate
-     * 
-     * @param predicates  a collection of predicates to check, may not be null
-     * @return the <code>any</code> predicate
-     * @throws IllegalArgumentException if the predicates collection is null
-     * @throws IllegalArgumentException if any predicate in the collection is null
-     */
-    public static Predicate anyPredicate(Collection predicates) {
-        return AnyPredicate.getInstance(predicates);
-    }
-
-    /**
-     * Create a new Predicate that returns true if one, but not both, of the
-     * specified predicates are true.
-     * 
-     * @see org.apache.commons.collections.functors.OnePredicate
-     * 
-     * @param predicate1  the first predicate, may not be null
-     * @param predicate2  the second predicate, may not be null
-     * @return the <code>either</code> predicate
-     * @throws IllegalArgumentException if either predicate is null
-     */
-    public static Predicate eitherPredicate(Predicate predicate1, Predicate predicate2) {
-        return onePredicate(new Predicate[] { predicate1, predicate2 });
-    }
-
-    /**
-     * Create a new Predicate that returns true if only one of the specified
-     * predicates are true.
-     * If the array of predicates is empty, then this predicate returns false.
-     * 
-     * @see org.apache.commons.collections.functors.OnePredicate
-     * 
-     * @param predicates  an array of predicates to check, may not be null
-     * @return the <code>one</code> predicate
-     * @throws IllegalArgumentException if the predicates array is null
-     * @throws IllegalArgumentException if any predicate in the array is null
-     */
-    public static Predicate onePredicate(Predicate[] predicates) {
-        return OnePredicate.getInstance(predicates);
-    }
-
-    /**
-     * Create a new Predicate that returns true if only one of the specified
-     * predicates are true. The predicates are checked in iterator order.
-     * If the collection of predicates is empty, then this predicate returns false.
-     * 
-     * @see org.apache.commons.collections.functors.OnePredicate
-     * 
-     * @param predicates  a collection of predicates to check, may not be null
-     * @return the <code>one</code> predicate
-     * @throws IllegalArgumentException if the predicates collection is null
-     * @throws IllegalArgumentException if any predicate in the collection is null
-     */
-    public static Predicate onePredicate(Collection predicates) {
-        return OnePredicate.getInstance(predicates);
-    }
-
-    /**
-     * Create a new Predicate that returns true if neither of the specified 
-     * predicates are true.
-     * 
-     * @see org.apache.commons.collections.functors.NonePredicate
-     * 
-     * @param predicate1  the first predicate, may not be null
-     * @param predicate2  the second predicate, may not be null
-     * @return the <code>neither</code> predicate
-     * @throws IllegalArgumentException if either predicate is null
-     */
-    public static Predicate neitherPredicate(Predicate predicate1, Predicate predicate2) {
-        return nonePredicate(new Predicate[] { predicate1, predicate2 });
-    }
-
-    /**
-     * Create a new Predicate that returns true if none of the specified
-     * predicates are true.
-     * If the array of predicates is empty, then this predicate returns true.
-     * 
-     * @see org.apache.commons.collections.functors.NonePredicate
-     * 
-     * @param predicates  an array of predicates to check, may not be null
-     * @return the <code>none</code> predicate
-     * @throws IllegalArgumentException if the predicates array is null
-     * @throws IllegalArgumentException if any predicate in the array is null
-     */
-    public static Predicate nonePredicate(Predicate[] predicates) {
-        return NonePredicate.getInstance(predicates);
-    }
-
-    /**
-     * Create a new Predicate that returns true if none of the specified
-     * predicates are true. The predicates are checked in iterator order.
-     * If the collection of predicates is empty, then this predicate returns true.
-     * 
-     * @see org.apache.commons.collections.functors.NonePredicate
-     * 
-     * @param predicates  a collection of predicates to check, may not be null
-     * @return the <code>none</code> predicate
-     * @throws IllegalArgumentException if the predicates collection is null
-     * @throws IllegalArgumentException if any predicate in the collection is null
-     */
-    public static Predicate nonePredicate(Collection predicates) {
-        return NonePredicate.getInstance(predicates);
-    }
-
-    /**
-     * Create a new Predicate that returns true if the specified predicate
-     * returns false and vice versa.
-     * 
-     * @see org.apache.commons.collections.functors.NotPredicate
-     * 
-     * @param predicate  the predicate to not
-     * @return the <code>not</code> predicate
-     * @throws IllegalArgumentException if the predicate is null
-     */
-    public static Predicate notPredicate(Predicate predicate) {
-        return NotPredicate.getInstance(predicate);
-    }
-
-    // Adaptors
-    //-----------------------------------------------------------------------------
-
-    /**
-     * Create a new Predicate that wraps a Transformer. The Transformer must
-     * return either Boolean.TRUE or Boolean.FALSE otherwise a PredicateException
-     * will be thrown.
-     * 
-     * @see org.apache.commons.collections.functors.TransformerPredicate
-     * 
-     * @param transformer  the transformer to wrap, may not be null
-     * @return the transformer wrapping predicate
-     * @throws IllegalArgumentException if the transformer is null
-     */
-    public static Predicate asPredicate(Transformer transformer) {
-        return TransformerPredicate.getInstance(transformer);
-    }
-
-    // Null handlers
-    //-----------------------------------------------------------------------------
-
-    /**
-     * Gets a Predicate that throws an exception if the input object is null, 
-     * otherwise it calls the specified Predicate. This allows null handling 
-     * behaviour to be added to Predicates that don't support nulls.
-     * 
-     * @see org.apache.commons.collections.functors.NullIsExceptionPredicate
-     * 
-     * @param predicate  the predicate to wrap, may not be null
-     * @return the predicate
-     * @throws IllegalArgumentException if the predicate is null.
-     */
-    public static Predicate nullIsExceptionPredicate(Predicate predicate){
-        return NullIsExceptionPredicate.getInstance(predicate);
-    }
-
-    /**
-     * Gets a Predicate that returns false if the input object is null, otherwise
-     * it calls the specified Predicate. This allows null handling behaviour to
-     * be added to Predicates that don't support nulls.
-     * 
-     * @see org.apache.commons.collections.functors.NullIsFalsePredicate
-     * 
-     * @param predicate  the predicate to wrap, may not be null
-     * @return the predicate
-     * @throws IllegalArgumentException if the predicate is null.
-     */
-    public static Predicate nullIsFalsePredicate(Predicate predicate){
-        return NullIsFalsePredicate.getInstance(predicate);
-    }
-
-    /**
-     * Gets a Predicate that returns true if the input object is null, otherwise
-     * it calls the specified Predicate. This allows null handling behaviour to
-     * be added to Predicates that don't support nulls.
-     * 
-     * @see org.apache.commons.collections.functors.NullIsTruePredicate
-     * 
-     * @param predicate  the predicate to wrap, may not be null
-     * @return the predicate
-     * @throws IllegalArgumentException if the predicate is null.
-     */
-    public static Predicate nullIsTruePredicate(Predicate predicate){
-        return NullIsTruePredicate.getInstance(predicate);
-    }
-
-    // Transformed
-    //-----------------------------------------------------------------------
-    /**
-     * Creates a predicate that transforms the input object before passing it
-     * to the predicate.
-     * 
-     * @see org.apache.commons.collections.functors.TransformedPredicate
-     * 
-     * @param transformer  the transformer to call first
-     * @param predicate  the predicate to call with the result of the transform
-     * @return the predicate
-     * @throws IllegalArgumentException if the transformer or the predicate is null
-	 * @since Commons Collections 3.1
-     */
-    public static Predicate transformedPredicate(Transformer transformer, Predicate predicate) {
-        return TransformedPredicate.getInstance(transformer, predicate);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/PriorityQueue.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/PriorityQueue.java
deleted file mode 100755
index 49c4f53..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/PriorityQueue.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-/**
- * Defines a collection for priority queues, which can insert, peek and pop.
- * <p>
- * This interface is now replaced by the <code>Buffer</code> interface.
- *
- * @deprecated Replaced by the Buffer interface and implementations in buffer subpackage.
- *  Due to be removed in v4.0.
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author Peter Donald
- */
-public interface PriorityQueue {
-    
-    /**
-     * Clear all elements from queue.
-     */
-    void clear();
-
-    /**
-     * Test if queue is empty.
-     *
-     * @return true if queue is empty else false.
-     */
-    boolean isEmpty();
-
-    /**
-     * Insert an element into queue.
-     *
-     * @param element the element to be inserted
-     *
-     * @throws ClassCastException if the specified <code>element</code>'s
-     * type prevents it from being compared to other items in the queue to
-     * determine its relative priority.  
-     */
-    void insert(Object element);
-
-    /**
-     * Return element on top of heap but don't remove it.
-     *
-     * @return the element at top of heap
-     * @throws java.util.NoSuchElementException if <code>isEmpty() == true</code>
-     */
-    Object peek();
-
-    /**
-     * Return element on top of heap and remove it.
-     *
-     * @return the element at top of heap
-     * @throws java.util.NoSuchElementException if <code>isEmpty() == true</code>
-     */
-    Object pop();
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ProxyMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ProxyMap.java
deleted file mode 100755
index 3720482..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ProxyMap.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-/** 
- * <p>This <code>Map</code> wraps another <code>Map</code>
- * implementation, using the wrapped instance for its default
- * implementation.  This class is used as a framework on which to
- * build to extensions for its wrapped <code>Map</code> object which
- * would be unavailable or inconvenient via sub-classing (but usable
- * via composition).</p>
- * 
- * <p>This implementation does not perform any special processing with
- * {@link #entrySet()}, {@link #keySet()} or {@link #values()}. Instead
- * it simply returns the set/collection from the wrapped map. This may be
- * undesirable, for example if you are trying to write a validating
- * implementation it would provide a loophole around the validation. But,
- * you might want that loophole, so this class is kept simple.</p>
- *
- * @deprecated Moved to map subpackage as AbstractMapDecorator. It will be removed in v4.0.
- * @since Commons Collections 2.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author Daniel Rall
- * @author Stephen Colebourne
- */
-public abstract class ProxyMap implements Map {
-    
-    /**
-     * The <code>Map</code> to delegate to.
-     */
-    protected Map map;
-
-    /**
-     * Constructor that uses the specified map to delegate to.
-     * <p>
-     * Note that the map is used for delegation, and is not copied. This is
-     * different to the normal use of a <code>Map</code> parameter in
-     * collections constructors.
-     *
-     * @param map  the <code>Map</code> to delegate to
-     */
-    public ProxyMap(Map map) {
-        this.map = map;
-    }
-
-    /**
-     * Invokes the underlying {@link Map#clear()} method.
-     */
-    public void clear() {
-        map.clear();
-    }
-
-    /**
-     * Invokes the underlying {@link Map#containsKey(Object)} method.
-     */
-    public boolean containsKey(Object key) {
-        return map.containsKey(key);
-    }
-
-    /**
-     * Invokes the underlying {@link Map#containsValue(Object)} method.
-     */
-    public boolean containsValue(Object value) {
-        return map.containsValue(value);
-    }
-
-    /**
-     * Invokes the underlying {@link Map#entrySet()} method.
-     */
-    public Set entrySet() {
-        return map.entrySet();
-    }
-
-    /**
-     * Invokes the underlying {@link Map#equals(Object)} method.
-     */
-    public boolean equals(Object m) {
-        return map.equals(m);
-    }
-
-    /**
-     * Invokes the underlying {@link Map#get(Object)} method.
-     */
-    public Object get(Object key) {
-        return map.get(key);
-    }
-
-    /**
-     * Invokes the underlying {@link Map#hashCode()} method.
-     */
-    public int hashCode() {
-        return map.hashCode();
-    }
-
-    /**
-     * Invokes the underlying {@link Map#isEmpty()} method.
-     */
-    public boolean isEmpty() {
-        return map.isEmpty();
-    }
-
-    /**
-     * Invokes the underlying {@link Map#keySet()} method.
-     */
-    public Set keySet() {
-        return map.keySet();
-    }
-
-    /**
-     * Invokes the underlying {@link Map#put(Object,Object)} method.
-     */
-    public Object put(Object key, Object value) {
-        return map.put(key, value);
-    }
-
-    /**
-     * Invokes the underlying {@link Map#putAll(Map)} method.
-     */
-    public void putAll(Map t) {
-        map.putAll(t);
-    }
-
-    /**
-     * Invokes the underlying {@link Map#remove(Object)} method.
-     */
-    public Object remove(Object key) {
-        return map.remove(key);
-    }
-
-    /**
-     * Invokes the underlying {@link Map#size()} method.
-     */
-    public int size() {
-        return map.size();
-    }
-
-    /**
-     * Invokes the underlying {@link Map#values()} method.
-     */
-    public Collection values() {
-        return map.values();
-    }
-   
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ReferenceMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ReferenceMap.java
deleted file mode 100755
index 80f0434..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ReferenceMap.java
+++ /dev/null
@@ -1,957 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.lang.ref.Reference;
-import java.lang.ref.ReferenceQueue;
-import java.lang.ref.SoftReference;
-import java.lang.ref.WeakReference;
-import java.util.AbstractCollection;
-import java.util.AbstractMap;
-import java.util.AbstractSet;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.ConcurrentModificationException;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-import org.apache.commons.collections.keyvalue.DefaultMapEntry;
-
-/**
- *  Hash-based {@link Map} implementation that allows
- *  mappings to be removed by the garbage collector.<p>
- *
- *  When you construct a <code>ReferenceMap</code>, you can 
- *  specify what kind of references are used to store the
- *  map's keys and values.  If non-hard references are 
- *  used, then the garbage collector can remove mappings
- *  if a key or value becomes unreachable, or if the 
- *  JVM's memory is running low.  For information on how
- *  the different reference types behave, see
- *  {@link Reference}.<p>
- *
- *  Different types of references can be specified for keys
- *  and values.  The keys can be configured to be weak but
- *  the values hard, in which case this class will behave
- *  like a <a href="http://java.sun.com/j2se/1.4/docs/api/java/util/WeakHashMap.html">
- *  <code>WeakHashMap</code></a>.  However, you
- *  can also specify hard keys and weak values, or any other
- *  combination.  The default constructor uses hard keys
- *  and soft values, providing a memory-sensitive cache.<p>
- *
- *  The algorithms used are basically the same as those
- *  in {@link java.util.HashMap}.  In particular, you 
- *  can specify a load factor and capacity to suit your
- *  needs.  All optional {@link Map} operations are 
- *  supported.<p>
- *
- *  However, this {@link Map} implementation does <I>not</I>
- *  allow null elements.  Attempting to add a null key or
- *  or a null value to the map will raise a 
- *  <code>NullPointerException</code>.<p>
- *
- *  As usual, this implementation is not synchronized.  You
- *  can use {@link java.util.Collections#synchronizedMap} to 
- *  provide synchronized access to a <code>ReferenceMap</code>.
- *
- * @see java.lang.ref.Reference
- * 
- * @deprecated Moved to map subpackage. Due to be removed in v4.0.
- * @since Commons Collections 2.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author Paul Jack
- */
-public class ReferenceMap extends AbstractMap {
-
-    /**
-     *  For serialization.
-     */
-    private static final long serialVersionUID = -3370601314380922368L;
-
-
-    /**
-     *  Constant indicating that hard references should be used.
-     */
-    final public static int HARD = 0;
-
-
-    /**
-     *  Constant indicating that soft references should be used.
-     */
-    final public static int SOFT = 1;
-
-
-    /**
-     *  Constant indicating that weak references should be used.
-     */
-    final public static int WEAK = 2;
-
-
-    // --- serialized instance variables:
-
-
-    /**
-     *  The reference type for keys.  Must be HARD, SOFT, WEAK.
-     *  Note: I originally marked this field as final, but then this class
-     *   didn't compile under JDK1.2.2.
-     *  @serial
-     */
-    private int keyType;
-
-
-    /**
-     *  The reference type for values.  Must be HARD, SOFT, WEAK.
-     *  Note: I originally marked this field as final, but then this class
-     *   didn't compile under JDK1.2.2.
-     *  @serial
-     */
-    private int valueType;
-
-
-    /**
-     *  The threshold variable is calculated by multiplying
-     *  table.length and loadFactor.  
-     *  Note: I originally marked this field as final, but then this class
-     *   didn't compile under JDK1.2.2.
-     *  @serial
-     */
-    private float loadFactor;
-    
-    /**
-     * Should the value be automatically purged when the associated key has been collected?
-     */
-    private boolean purgeValues = false;
-
-
-    // -- Non-serialized instance variables
-
-    /**
-     *  ReferenceQueue used to eliminate stale mappings.
-     *  See purge.
-     */
-    private transient ReferenceQueue queue = new ReferenceQueue();
-
-
-    /**
-     *  The hash table.  Its length is always a power of two.  
-     */
-    private transient Entry[] table;
-
-
-    /**
-     *  Number of mappings in this map.
-     */
-    private transient int size;
-
-
-    /**
-     *  When size reaches threshold, the map is resized.  
-     *  See resize().
-     */
-    private transient int threshold;
-
-
-    /**
-     *  Number of times this map has been modified.
-     */
-    private transient volatile int modCount;
-
-
-    /**
-     *  Cached key set.  May be null if key set is never accessed.
-     */
-    private transient Set keySet;
-
-
-    /**
-     *  Cached entry set.  May be null if entry set is never accessed.
-     */
-    private transient Set entrySet;
-
-
-    /**
-     *  Cached values.  May be null if values() is never accessed.
-     */
-    private transient Collection values;
-
-
-    /**
-     *  Constructs a new <code>ReferenceMap</code> that will
-     *  use hard references to keys and soft references to values.
-     */
-    public ReferenceMap() {
-        this(HARD, SOFT);
-    }
-
-    /**
-     *  Constructs a new <code>ReferenceMap</code> that will
-     *  use the specified types of references.
-     *
-     *  @param keyType  the type of reference to use for keys;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     *  @param valueType  the type of reference to use for values;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     *  @param purgeValues should the value be automatically purged when the 
-     *   key is garbage collected 
-     */
-    public ReferenceMap(int keyType, int valueType, boolean purgeValues) {
-        this(keyType, valueType);
-        this.purgeValues = purgeValues;
-    }
-
-    /**
-     *  Constructs a new <code>ReferenceMap</code> that will
-     *  use the specified types of references.
-     *
-     *  @param keyType  the type of reference to use for keys;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     *  @param valueType  the type of reference to use for values;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     */
-    public ReferenceMap(int keyType, int valueType) {
-        this(keyType, valueType, 16, 0.75f);
-    }
-
-    /**
-     *  Constructs a new <code>ReferenceMap</code> with the
-     *  specified reference types, load factor and initial
-     *  capacity.
-     *
-     *  @param keyType  the type of reference to use for keys;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     *  @param valueType  the type of reference to use for values;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     *  @param capacity  the initial capacity for the map
-     *  @param loadFactor  the load factor for the map
-     *  @param purgeValues should the value be automatically purged when the 
-     *   key is garbage collected 
-     */
-    public ReferenceMap(
-                        int keyType, 
-                        int valueType, 
-                        int capacity, 
-                        float loadFactor, 
-                        boolean purgeValues) {
-        this(keyType, valueType, capacity, loadFactor);
-        this.purgeValues = purgeValues;
-    }
-
-    /**
-     *  Constructs a new <code>ReferenceMap</code> with the
-     *  specified reference types, load factor and initial
-     *  capacity.
-     *
-     *  @param keyType  the type of reference to use for keys;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     *  @param valueType  the type of reference to use for values;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     *  @param capacity  the initial capacity for the map
-     *  @param loadFactor  the load factor for the map
-     */
-    public ReferenceMap(int keyType, int valueType, int capacity, float loadFactor) {
-        super();
-
-        verify("keyType", keyType);
-        verify("valueType", valueType);
-
-        if (capacity <= 0) {
-            throw new IllegalArgumentException("capacity must be positive");
-        }
-        if ((loadFactor <= 0.0f) || (loadFactor >= 1.0f)) {
-            throw new IllegalArgumentException("Load factor must be greater than 0 and less than 1.");
-        }
-
-        this.keyType = keyType;
-        this.valueType = valueType;
-
-        int v = 1;
-        while (v < capacity) v *= 2;
-
-        this.table = new Entry[v];
-        this.loadFactor = loadFactor;
-        this.threshold = (int)(v * loadFactor);
-    }
-
-
-    // used by constructor
-    private static void verify(String name, int type) {
-        if ((type < HARD) || (type > WEAK)) {
-            throw new IllegalArgumentException(name + 
-               " must be HARD, SOFT, WEAK.");
-        }
-    }
-
-
-    /**
-     *  Writes this object to the given output stream.
-     *
-     *  @param out  the output stream to write to
-     *  @throws IOException  if the stream raises it
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeInt(table.length);
-
-        // Have to use null-terminated list because size might shrink
-        // during iteration
-
-        for (Iterator iter = entrySet().iterator(); iter.hasNext();) {
-            Map.Entry entry = (Map.Entry)iter.next();
-            out.writeObject(entry.getKey());
-            out.writeObject(entry.getValue());
-        }
-        out.writeObject(null);
-    }
-
-
-    /**
-     *  Reads the contents of this object from the given input stream.
-     *
-     *  @param inp  the input stream to read from
-     *  @throws IOException  if the stream raises it
-     *  @throws ClassNotFoundException  if the stream raises it
-     */
-    private void readObject(ObjectInputStream inp) throws IOException, ClassNotFoundException {
-        inp.defaultReadObject();
-        table = new Entry[inp.readInt()];
-        threshold = (int)(table.length * loadFactor);
-        queue = new ReferenceQueue();
-        Object key = inp.readObject();
-        while (key != null) {
-            Object value = inp.readObject();
-            put(key, value);
-            key = inp.readObject();
-        }
-    }
-
-
-    /**
-     *  Constructs a reference of the given type to the given 
-     *  referent.  The reference is registered with the queue
-     *  for later purging.
-     *
-     *  @param type  HARD, SOFT or WEAK
-     *  @param referent  the object to refer to
-     *  @param hash  the hash code of the <I>key</I> of the mapping;
-     *    this number might be different from referent.hashCode() if
-     *    the referent represents a value and not a key
-     */
-    private Object toReference(int type, Object referent, int hash) {
-        switch (type) {
-            case HARD: return referent;
-            case SOFT: return new SoftRef(hash, referent, queue);
-            case WEAK: return new WeakRef(hash, referent, queue);
-            default: throw new Error();
-        }
-    }
-
-
-    /**
-     *  Returns the entry associated with the given key.
-     *
-     *  @param key  the key of the entry to look up
-     *  @return  the entry associated with that key, or null
-     *    if the key is not in this map
-     */
-    private Entry getEntry(Object key) {
-        if (key == null) return null;
-        int hash = key.hashCode();
-        int index = indexFor(hash);
-        for (Entry entry = table[index]; entry != null; entry = entry.next) {
-            if ((entry.hash == hash) && key.equals(entry.getKey())) {
-                return entry;
-            }
-        }
-        return null;
-    }
-
-
-    /**
-     *  Converts the given hash code into an index into the
-     *  hash table.
-     */
-    private int indexFor(int hash) {
-        // mix the bits to avoid bucket collisions...
-        hash += ~(hash << 15);
-        hash ^= (hash >>> 10);
-        hash += (hash << 3);
-        hash ^= (hash >>> 6);
-        hash += ~(hash << 11);
-        hash ^= (hash >>> 16);
-        return hash & (table.length - 1);
-    }
-
-
-
-    /**
-     *  Resizes this hash table by doubling its capacity.
-     *  This is an expensive operation, as entries must
-     *  be copied from the old smaller table to the new 
-     *  bigger table.
-     */
-    private void resize() {
-        Entry[] old = table;
-        table = new Entry[old.length * 2];
-
-        for (int i = 0; i < old.length; i++) {
-            Entry next = old[i];
-            while (next != null) {
-                Entry entry = next;
-                next = next.next;
-                int index = indexFor(entry.hash);
-                entry.next = table[index];
-                table[index] = entry;
-            }
-            old[i] = null;
-        }
-        threshold = (int)(table.length * loadFactor);
-    }
-
-
-
-    /**
-     * Purges stale mappings from this map.
-     * <p>
-     * Ordinarily, stale mappings are only removed during
-     * a write operation, although this method is called for both
-     * read and write operations to maintain a consistent state.
-     * <p>
-     * Note that this method is not synchronized!  Special
-     * care must be taken if, for instance, you want stale
-     * mappings to be removed on a periodic basis by some
-     * background thread.
-     */
-    private void purge() {
-        Reference ref = queue.poll();
-        while (ref != null) {
-            purge(ref);
-            ref = queue.poll();
-        }
-    }
-
-
-    private void purge(Reference ref) {
-        // The hashCode of the reference is the hashCode of the
-        // mapping key, even if the reference refers to the 
-        // mapping value...
-        int hash = ref.hashCode();
-        int index = indexFor(hash);
-        Entry previous = null;
-        Entry entry = table[index];
-        while (entry != null) {
-            if (entry.purge(ref)) {
-                if (previous == null) table[index] = entry.next;
-                else previous.next = entry.next;
-                this.size--;
-                return;
-            }
-            previous = entry;
-            entry = entry.next;
-        }
-
-    }
-
-
-    /**
-     *  Returns the size of this map.
-     *
-     *  @return  the size of this map
-     */
-    public int size() {
-        purge();
-        return size;
-    }
-
-
-    /**
-     *  Returns <code>true</code> if this map is empty.
-     *
-     *  @return <code>true</code> if this map is empty
-     */
-    public boolean isEmpty() {
-        purge();
-        return size == 0;
-    }
-
-
-    /**
-     *  Returns <code>true</code> if this map contains the given key.
-     *
-     *  @return true if the given key is in this map
-     */
-    public boolean containsKey(Object key) {
-        purge();
-        Entry entry = getEntry(key);
-        if (entry == null) return false;
-        return entry.getValue() != null;
-    }
-
-
-    /**
-     *  Returns the value associated with the given key, if any.
-     *
-     *  @return the value associated with the given key, or <code>null</code>
-     *   if the key maps to no value
-     */
-    public Object get(Object key) {
-        purge();
-        Entry entry = getEntry(key);
-        if (entry == null) return null;
-        return entry.getValue();
-    }
-
-
-    /**
-     *  Associates the given key with the given value.<p>
-     *  Neither the key nor the value may be null.
-     *
-     *  @param key  the key of the mapping
-     *  @param value  the value of the mapping
-     *  @return  the last value associated with that key, or 
-     *   null if no value was associated with the key
-     *  @throws NullPointerException if either the key or value
-     *   is null
-     */
-    public Object put(Object key, Object value) {
-        if (key == null) throw new NullPointerException("null keys not allowed");
-        if (value == null) throw new NullPointerException("null values not allowed");
-
-        purge();
-        if (size + 1 > threshold) resize();
-
-        int hash = key.hashCode();
-        int index = indexFor(hash);
-        Entry entry = table[index];
-        while (entry != null) {
-            if ((hash == entry.hash) && key.equals(entry.getKey())) {
-                Object result = entry.getValue();
-                entry.setValue(value);
-                return result;
-            }
-            entry = entry.next;
-        }
-        this.size++; 
-        modCount++;
-        key = toReference(keyType, key, hash);
-        value = toReference(valueType, value, hash);
-        table[index] = new Entry(key, hash, value, table[index]);
-        return null;
-    }
-
-
-    /**
-     *  Removes the key and its associated value from this map.
-     *
-     *  @param key  the key to remove
-     *  @return the value associated with that key, or null if
-     *   the key was not in the map
-     */
-    public Object remove(Object key) {
-        if (key == null) return null;
-        purge();
-        int hash = key.hashCode();
-        int index = indexFor(hash);
-        Entry previous = null;
-        Entry entry = table[index];
-        while (entry != null) {
-            if ((hash == entry.hash) && key.equals(entry.getKey())) {
-                if (previous == null) table[index] = entry.next;
-                else previous.next = entry.next;
-                this.size--;
-                modCount++;
-                return entry.getValue();
-            }
-            previous = entry;
-            entry = entry.next;
-        }
-        return null;
-    }
-
-
-    /**
-     *  Clears this map.
-     */
-    public void clear() {
-        Arrays.fill(table, null);
-        size = 0;
-        while (queue.poll() != null); // drain the queue
-    }
-
-
-    /**
-     *  Returns a set view of this map's entries.
-     *
-     *  @return a set view of this map's entries
-     */
-    public Set entrySet() {
-        if (entrySet != null) {
-            return entrySet;
-        } 
-        entrySet = new AbstractSet() {
-            public int size() {
-                return ReferenceMap.this.size();
-            }
-
-            public void clear() {
-                ReferenceMap.this.clear();
-            }
-
-            public boolean contains(Object o) {
-                if (o == null) return false;
-                if (!(o instanceof Map.Entry)) return false;
-                Map.Entry e = (Map.Entry)o;
-                Entry e2 = getEntry(e.getKey());
-                return (e2 != null) && e.equals(e2);
-            }
-
-            public boolean remove(Object o) {
-                boolean r = contains(o);
-                if (r) {
-                    Map.Entry e = (Map.Entry)o;
-                    ReferenceMap.this.remove(e.getKey());
-                }
-                return r;
-            }
-
-            public Iterator iterator() {
-                return new EntryIterator();
-            }
-
-            public Object[] toArray() {
-                return toArray(new Object[0]);
-            }
-
-            public Object[] toArray(Object[] arr) {
-                ArrayList list = new ArrayList();
-                Iterator iterator = iterator();
-                while (iterator.hasNext()) {
-                    Entry e = (Entry)iterator.next();
-                    list.add(new DefaultMapEntry(e.getKey(), e.getValue()));
-                }
-                return list.toArray(arr);
-            }
-        };
-        return entrySet;
-    }
-
-
-    /**
-     *  Returns a set view of this map's keys.
-     *
-     *  @return a set view of this map's keys
-     */
-    public Set keySet() {
-        if (keySet != null) return keySet;
-        keySet = new AbstractSet() {
-            public int size() {
-                return ReferenceMap.this.size();
-            }
-
-            public Iterator iterator() {
-                return new KeyIterator();
-            }
-
-            public boolean contains(Object o) {
-                return containsKey(o);
-            }
-
-
-            public boolean remove(Object o) {
-                Object r = ReferenceMap.this.remove(o);
-                return r != null;
-            }
-
-            public void clear() {
-                ReferenceMap.this.clear();
-            }
-
-            public Object[] toArray() {
-                return toArray(new Object[0]);
-            }
-
-            public Object[] toArray(Object[] array) {
-                Collection c = new ArrayList(size());
-                for (Iterator it = iterator(); it.hasNext(); ) {
-                    c.add(it.next());
-                }
-                return c.toArray(array);
-            }
-        };
-        return keySet;
-    }
-
-
-    /**
-     *  Returns a collection view of this map's values.
-     *
-     *  @return a collection view of this map's values.
-     */
-    public Collection values() {
-        if (values != null) return values;
-        values = new AbstractCollection()  {
-            public int size() {
-                return ReferenceMap.this.size();
-            }
-
-            public void clear() {
-                ReferenceMap.this.clear();
-            }
-
-            public Iterator iterator() {
-                return new ValueIterator();
-            }
-
-            public Object[] toArray() {
-                return toArray(new Object[0]);
-            }
-
-            public Object[] toArray(Object[] array) {
-                Collection c = new ArrayList(size());
-                for (Iterator it = iterator(); it.hasNext(); ) {
-                    c.add(it.next());
-                }
-                return c.toArray(array);
-            }
-        };
-        return values;
-    }
-
-
-    // If getKey() or getValue() returns null, it means
-    // the mapping is stale and should be removed.
-    private class Entry implements Map.Entry, KeyValue {
-
-        Object key;
-        Object value;
-        int hash;
-        Entry next;
-
-
-        public Entry(Object key, int hash, Object value, Entry next) {
-            this.key = key;
-            this.hash = hash;
-            this.value = value;
-            this.next = next;
-        }
-
-
-        public Object getKey() {
-            return (keyType > HARD) ? ((Reference)key).get() : key;
-        }
-
-
-        public Object getValue() {
-            return (valueType > HARD) ? ((Reference)value).get() : value;
-        }
-
-
-        public Object setValue(Object object) {
-            Object old = getValue();
-            if (valueType > HARD) ((Reference)value).clear();
-            value = toReference(valueType, object, hash);
-            return old;
-        }
-
-
-        public boolean equals(Object o) {
-            if (o == null) return false;
-            if (o == this) return true;
-            if (!(o instanceof Map.Entry)) return false;
-            
-            Map.Entry entry = (Map.Entry)o;
-            Object key = entry.getKey();
-            Object value = entry.getValue();
-            if ((key == null) || (value == null)) return false;
-            return key.equals(getKey()) && value.equals(getValue());
-        }
-
-
-        public int hashCode() {
-            Object v = getValue();
-            return hash ^ ((v == null) ? 0 : v.hashCode());
-        }
-
-
-        public String toString() {
-            return getKey() + "=" + getValue();
-        }
-
-
-        boolean purge(Reference ref) {
-            boolean r = (keyType > HARD) && (key == ref);
-            r = r || ((valueType > HARD) && (value == ref));
-            if (r) {
-                if (keyType > HARD) ((Reference)key).clear();
-                if (valueType > HARD) {
-                    ((Reference)value).clear();
-                } else if (purgeValues) {
-                    value = null;
-                }
-            }
-            return r;
-        }
-    }
-
-
-    private class EntryIterator implements Iterator {
-        // These fields keep track of where we are in the table.
-        int index;
-        Entry entry;
-        Entry previous;
-
-        // These Object fields provide hard references to the
-        // current and next entry; this assures that if hasNext()
-        // returns true, next() will actually return a valid element.
-        Object nextKey, nextValue;
-        Object currentKey, currentValue;
-
-        int expectedModCount;
-
-
-        public EntryIterator() {
-            index = (size() != 0 ? table.length : 0);
-            // have to do this here!  size() invocation above
-            // may have altered the modCount.
-            expectedModCount = modCount;
-        }
-
-
-        public boolean hasNext() {
-            checkMod();
-            while (nextNull()) {
-                Entry e = entry;
-                int i = index;
-                while ((e == null) && (i > 0)) {
-                    i--;
-                    e = table[i];
-                }
-                entry = e;
-                index = i;
-                if (e == null) {
-                    currentKey = null;
-                    currentValue = null;
-                    return false;
-                }
-                nextKey = e.getKey();
-                nextValue = e.getValue();
-                if (nextNull()) entry = entry.next;
-            }
-            return true;
-        }
-
-
-        private void checkMod() {
-            if (modCount != expectedModCount) {
-                throw new ConcurrentModificationException();
-            }
-        }
-
-
-        private boolean nextNull() {
-            return (nextKey == null) || (nextValue == null);
-        }
-
-        protected Entry nextEntry() {    
-            checkMod();
-            if (nextNull() && !hasNext()) throw new NoSuchElementException();
-            previous = entry;
-            entry = entry.next;
-            currentKey = nextKey;
-            currentValue = nextValue;
-            nextKey = null;
-            nextValue = null;
-            return previous;
-        }
-
-
-        public Object next() {
-            return nextEntry();
-        }
-
-
-        public void remove() {
-            checkMod();
-            if (previous == null) throw new IllegalStateException();
-            ReferenceMap.this.remove(currentKey);
-            previous = null;
-            currentKey = null;
-            currentValue = null;
-            expectedModCount = modCount;
-        }
-
-    }
-
-
-    private class ValueIterator extends EntryIterator {
-        public Object next() {
-            return nextEntry().getValue();
-        }
-    }
-
-
-    private class KeyIterator extends EntryIterator {
-        public Object next() {
-            return nextEntry().getKey();
-        }
-    }
-
-
-
-    // These two classes store the hashCode of the key of
-    // of the mapping, so that after they're dequeued a quick
-    // lookup of the bucket in the table can occur.
-
-
-    private static class SoftRef extends SoftReference {
-        private int hash;
-
-
-        public SoftRef(int hash, Object r, ReferenceQueue q) {
-            super(r, q);
-            this.hash = hash;
-        }
-
-
-        public int hashCode() {
-            return hash;
-        }
-    }
-
-
-    private static class WeakRef extends WeakReference {
-        private int hash;
-
-
-        public WeakRef(int hash, Object r, ReferenceQueue q) {
-            super(r, q);
-            this.hash = hash;
-        }
-
-
-        public int hashCode() {
-            return hash;
-        }
-    }
-
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ResettableIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ResettableIterator.java
deleted file mode 100755
index d11bdbc..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ResettableIterator.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.Iterator;
-
-/** 
- * Defines an iterator that can be reset back to an initial state.
- * <p>
- * This interface allows an iterator to be repeatedly reused.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- * 
- * @author Stephen Colebourne
- */
-public interface ResettableIterator extends Iterator {
-
-    /**
-     * Resets the iterator back to the position at which the iterator
-     * was created.
-     */
-    public void reset();
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ResettableListIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ResettableListIterator.java
deleted file mode 100755
index 6a54419..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/ResettableListIterator.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.ListIterator;
-
-/** 
- * Defines a list iterator that can be reset back to an initial state.
- * <p>
- * This interface allows an iterator to be repeatedly reused.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author Stephen Colebourne
- */
-public interface ResettableListIterator extends ListIterator, ResettableIterator {
-
-    /**
-     * Resets the iterator back to the position at which the iterator
-     * was created.
-     */
-    public void reset();
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/SequencedHashMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/SequencedHashMap.java
deleted file mode 100755
index 4c96354..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/SequencedHashMap.java
+++ /dev/null
@@ -1,1017 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.util.AbstractCollection;
-import java.util.AbstractSet;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.ConcurrentModificationException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-import org.apache.commons.collections.list.UnmodifiableList;
-
-/**
- * A map of objects whose mapping entries are sequenced based on the order in
- * which they were added.  This data structure has fast <i>O(1)</i> search
- * time, deletion time, and insertion time.
- * <p>
- * Although this map is sequenced, it cannot implement
- * {@link java.util.List} because of incompatible interface definitions.
- * The remove methods in List and Map have different return values 
- * (see: {@link java.util.List#remove(Object)} and {@link java.util.Map#remove(Object)}).
- * <p>
- * This class is not thread safe.  When a thread safe implementation is
- * required, use {@link java.util.Collections#synchronizedMap(Map)} as it is documented,
- * or use explicit synchronization controls.
- *
- * @deprecated Replaced by LinkedMap and ListOrderedMap in map subpackage. Due to be removed in v4.0.
- * @see org.apache.commons.collections.map.LinkedMap
- * @see org.apache.commons.collections.map.ListOrderedMap
- * @since Commons Collections 2.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author Michael A. Smith
- * @author Daniel Rall
- * @author Henning P. Schmiedehausen
- * @author Stephen Colebourne
- */
-public class SequencedHashMap implements Map, Cloneable, Externalizable {
-
-    /**
-     * {@link java.util.Map.Entry} that doubles as a node in the linked list
-     * of sequenced mappings.  
-     */
-    private static class Entry implements Map.Entry, KeyValue {
-        // Note: This class cannot easily be made clonable.  While the actual
-        // implementation of a clone would be simple, defining the semantics is
-        // difficult.  If a shallow clone is implemented, then entry.next.prev !=
-        // entry, which is unintuitive and probably breaks all sorts of assumptions
-        // in code that uses this implementation.  If a deep clone is
-        // implemented, then what happens when the linked list is cyclical (as is
-        // the case with SequencedHashMap)?  It's impossible to know in the clone
-        // when to stop cloning, and thus you end up in a recursive loop,
-        // continuously cloning the "next" in the list.
-
-        private final Object key;
-        private Object value;
-
-        // package private to allow the SequencedHashMap to access and manipulate
-        // them.
-        Entry next = null;
-        Entry prev = null;
-
-        public Entry(Object key, Object value) {
-            this.key = key;
-            this.value = value;
-        }
-
-        // per Map.Entry.getKey()
-        public Object getKey() {
-            return this.key;
-        }
-
-        // per Map.Entry.getValue()
-        public Object getValue() {
-            return this.value;
-        }
-
-        // per Map.Entry.setValue()
-        public Object setValue(Object value) {
-            Object oldValue = this.value;
-            this.value = value;
-            return oldValue;
-        }
-
-        public int hashCode() {
-            // implemented per api docs for Map.Entry.hashCode()
-            return ((getKey() == null ? 0 : getKey().hashCode()) ^ (getValue() == null ? 0 : getValue().hashCode()));
-        }
-
-        public boolean equals(Object obj) {
-            if (obj == null)
-                return false;
-            if (obj == this)
-                return true;
-            if (!(obj instanceof Map.Entry))
-                return false;
-
-            Map.Entry other = (Map.Entry) obj;
-
-            // implemented per api docs for Map.Entry.equals(Object) 
-            return (
-                (getKey() == null ? other.getKey() == null : getKey().equals(other.getKey()))
-                    && (getValue() == null ? other.getValue() == null : getValue().equals(other.getValue())));
-        }
-        public String toString() {
-            return "[" + getKey() + "=" + getValue() + "]";
-        }
-    }
-
-    /**
-     *  Construct an empty sentinel used to hold the head (sentinel.next) and the
-     *  tail (sentinel.prev) of the list.  The sentinel has a <code>null</code>
-     *  key and value.
-     */
-    private static final Entry createSentinel() {
-        Entry s = new Entry(null, null);
-        s.prev = s;
-        s.next = s;
-        return s;
-    }
-
-    /**
-     *  Sentinel used to hold the head and tail of the list of entries.
-     */
-    private Entry sentinel;
-
-    /**
-     *  Map of keys to entries
-     */
-    private HashMap entries;
-
-    /**
-     *  Holds the number of modifications that have occurred to the map,
-     *  excluding modifications made through a collection view's iterator
-     *  (e.g. entrySet().iterator().remove()).  This is used to create a
-     *  fail-fast behavior with the iterators.
-     */
-    private transient long modCount = 0;
-
-    /**
-     *  Construct a new sequenced hash map with default initial size and load
-     *  factor.
-     */
-    public SequencedHashMap() {
-        sentinel = createSentinel();
-        entries = new HashMap();
-    }
-
-    /**
-     *  Construct a new sequenced hash map with the specified initial size and
-     *  default load factor.
-     *
-     *  @param initialSize the initial size for the hash table 
-     *
-     *  @see HashMap#HashMap(int)
-     */
-    public SequencedHashMap(int initialSize) {
-        sentinel = createSentinel();
-        entries = new HashMap(initialSize);
-    }
-
-    /**
-     *  Construct a new sequenced hash map with the specified initial size and
-     *  load factor.
-     *
-     *  @param initialSize the initial size for the hash table 
-     *
-     *  @param loadFactor the load factor for the hash table.
-     *
-     *  @see HashMap#HashMap(int,float)
-     */
-    public SequencedHashMap(int initialSize, float loadFactor) {
-        sentinel = createSentinel();
-        entries = new HashMap(initialSize, loadFactor);
-    }
-
-    /**
-     *  Construct a new sequenced hash map and add all the elements in the
-     *  specified map.  The order in which the mappings in the specified map are
-     *  added is defined by {@link #putAll(Map)}.  
-     */
-    public SequencedHashMap(Map m) {
-        this();
-        putAll(m);
-    }
-
-    /**
-     *  Removes an internal entry from the linked list.  This does not remove
-     *  it from the underlying map.
-     */
-    private void removeEntry(Entry entry) {
-        entry.next.prev = entry.prev;
-        entry.prev.next = entry.next;
-    }
-
-    /**
-     *  Inserts a new internal entry to the tail of the linked list.  This does
-     *  not add the entry to the underlying map.
-     */
-    private void insertEntry(Entry entry) {
-        entry.next = sentinel;
-        entry.prev = sentinel.prev;
-        sentinel.prev.next = entry;
-        sentinel.prev = entry;
-    }
-
-    // per Map.size()
-
-    /**
-     *  Implements {@link Map#size()}.
-     */
-    public int size() {
-        // use the underlying Map's size since size is not maintained here.
-        return entries.size();
-    }
-
-    /**
-     *  Implements {@link Map#isEmpty()}.
-     */
-    public boolean isEmpty() {
-        // for quick check whether the map is entry, we can check the linked list
-        // and see if there's anything in it.
-        return sentinel.next == sentinel;
-    }
-
-    /**
-     *  Implements {@link Map#containsKey(Object)}.
-     */
-    public boolean containsKey(Object key) {
-        // pass on to underlying map implementation
-        return entries.containsKey(key);
-    }
-
-    /**
-     *  Implements {@link Map#containsValue(Object)}.
-     */
-    public boolean containsValue(Object value) {
-        // unfortunately, we cannot just pass this call to the underlying map
-        // because we are mapping keys to entries, not keys to values.  The
-        // underlying map doesn't have an efficient implementation anyway, so this
-        // isn't a big deal.
-
-        // do null comparison outside loop so we only need to do it once.  This
-        // provides a tighter, more efficient loop at the expense of slight
-        // code duplication.
-        if (value == null) {
-            for (Entry pos = sentinel.next; pos != sentinel; pos = pos.next) {
-                if (pos.getValue() == null)
-                    return true;
-            }
-        } else {
-            for (Entry pos = sentinel.next; pos != sentinel; pos = pos.next) {
-                if (value.equals(pos.getValue()))
-                    return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     *  Implements {@link Map#get(Object)}.
-     */
-    public Object get(Object o) {
-        // find entry for the specified key object
-        Entry entry = (Entry) entries.get(o);
-        if (entry == null)
-            return null;
-
-        return entry.getValue();
-    }
-
-    /**
-     *  Return the entry for the "oldest" mapping.  That is, return the Map.Entry
-     *  for the key-value pair that was first put into the map when compared to
-     *  all the other pairings in the map.  This behavior is equivalent to using
-     *  <code>entrySet().iterator().next()</code>, but this method provides an
-     *  optimized implementation.
-     *
-     *  @return The first entry in the sequence, or <code>null</code> if the
-     *  map is empty.
-     */
-    public Map.Entry getFirst() {
-        // sentinel.next points to the "first" element of the sequence -- the head
-        // of the list, which is exactly the entry we need to return.  We must test
-        // for an empty list though because we don't want to return the sentinel!
-        return (isEmpty()) ? null : sentinel.next;
-    }
-
-    /**
-     *  Return the key for the "oldest" mapping.  That is, return the key for the
-     *  mapping that was first put into the map when compared to all the other
-     *  objects in the map.  This behavior is equivalent to using
-     *  <code>getFirst().getKey()</code>, but this method provides a slightly
-     *  optimized implementation.
-     *
-     *  @return The first key in the sequence, or <code>null</code> if the
-     *  map is empty.
-     */
-    public Object getFirstKey() {
-        // sentinel.next points to the "first" element of the sequence -- the head
-        // of the list -- and the requisite key is returned from it.  An empty list
-        // does not need to be tested.  In cases where the list is empty,
-        // sentinel.next will point to the sentinel itself which has a null key,
-        // which is exactly what we would want to return if the list is empty (a
-        // nice convenient way to avoid test for an empty list)
-        return sentinel.next.getKey();
-    }
-
-    /**
-     *  Return the value for the "oldest" mapping.  That is, return the value for
-     *  the mapping that was first put into the map when compared to all the
-     *  other objects in the map.  This behavior is equivalent to using
-     *  <code>getFirst().getValue()</code>, but this method provides a slightly
-     *  optimized implementation.
-     *
-     *  @return The first value in the sequence, or <code>null</code> if the
-     *  map is empty.
-     */
-    public Object getFirstValue() {
-        // sentinel.next points to the "first" element of the sequence -- the head
-        // of the list -- and the requisite value is returned from it.  An empty
-        // list does not need to be tested.  In cases where the list is empty,
-        // sentinel.next will point to the sentinel itself which has a null value,
-        // which is exactly what we would want to return if the list is empty (a
-        // nice convenient way to avoid test for an empty list)
-        return sentinel.next.getValue();
-    }
-
-    /**
-     *  Return the entry for the "newest" mapping.  That is, return the Map.Entry
-     *  for the key-value pair that was first put into the map when compared to
-     *  all the other pairings in the map.  The behavior is equivalent to:
-     *
-     *  <pre>
-     *    Object obj = null;
-     *    Iterator iter = entrySet().iterator();
-     *    while(iter.hasNext()) {
-     *      obj = iter.next();
-     *    }
-     *    return (Map.Entry)obj;
-     *  </pre>
-     *
-     *  However, the implementation of this method ensures an O(1) lookup of the
-     *  last key rather than O(n).
-     *
-     *  @return The last entry in the sequence, or <code>null</code> if the map
-     *  is empty.
-     */
-    public Map.Entry getLast() {
-        // sentinel.prev points to the "last" element of the sequence -- the tail
-        // of the list, which is exactly the entry we need to return.  We must test
-        // for an empty list though because we don't want to return the sentinel!
-        return (isEmpty()) ? null : sentinel.prev;
-    }
-
-    /**
-     *  Return the key for the "newest" mapping.  That is, return the key for the
-     *  mapping that was last put into the map when compared to all the other
-     *  objects in the map.  This behavior is equivalent to using
-     *  <code>getLast().getKey()</code>, but this method provides a slightly
-     *  optimized implementation.
-     *
-     *  @return The last key in the sequence, or <code>null</code> if the map is
-     *  empty.
-     */
-    public Object getLastKey() {
-        // sentinel.prev points to the "last" element of the sequence -- the tail
-        // of the list -- and the requisite key is returned from it.  An empty list
-        // does not need to be tested.  In cases where the list is empty,
-        // sentinel.prev will point to the sentinel itself which has a null key,
-        // which is exactly what we would want to return if the list is empty (a
-        // nice convenient way to avoid test for an empty list)
-        return sentinel.prev.getKey();
-    }
-
-    /**
-     *  Return the value for the "newest" mapping.  That is, return the value for
-     *  the mapping that was last put into the map when compared to all the other
-     *  objects in the map.  This behavior is equivalent to using
-     *  <code>getLast().getValue()</code>, but this method provides a slightly
-     *  optimized implementation.
-     *
-     *  @return The last value in the sequence, or <code>null</code> if the map
-     *  is empty.
-     */
-    public Object getLastValue() {
-        // sentinel.prev points to the "last" element of the sequence -- the tail
-        // of the list -- and the requisite value is returned from it.  An empty
-        // list does not need to be tested.  In cases where the list is empty,
-        // sentinel.prev will point to the sentinel itself which has a null value,
-        // which is exactly what we would want to return if the list is empty (a
-        // nice convenient way to avoid test for an empty list)
-        return sentinel.prev.getValue();
-    }
-
-    /**
-     *  Implements {@link Map#put(Object, Object)}.
-     */
-    public Object put(Object key, Object value) {
-        modCount++;
-
-        Object oldValue = null;
-
-        // lookup the entry for the specified key
-        Entry e = (Entry) entries.get(key);
-
-        // check to see if it already exists
-        if (e != null) {
-            // remove from list so the entry gets "moved" to the end of list
-            removeEntry(e);
-
-            // update value in map
-            oldValue = e.setValue(value);
-
-            // Note: We do not update the key here because its unnecessary.  We only
-            // do comparisons using equals(Object) and we know the specified key and
-            // that in the map are equal in that sense.  This may cause a problem if
-            // someone does not implement their hashCode() and/or equals(Object)
-            // method properly and then use it as a key in this map.  
-        } else {
-            // add new entry
-            e = new Entry(key, value);
-            entries.put(key, e);
-        }
-        // assert(entry in map, but not list)
-
-        // add to list
-        insertEntry(e);
-
-        return oldValue;
-    }
-
-    /**
-     *  Implements {@link Map#remove(Object)}.
-     */
-    public Object remove(Object key) {
-        Entry e = removeImpl(key);
-        return (e == null) ? null : e.getValue();
-    }
-
-    /**
-     *  Fully remove an entry from the map, returning the old entry or null if
-     *  there was no such entry with the specified key.
-     */
-    private Entry removeImpl(Object key) {
-        Entry e = (Entry) entries.remove(key);
-        if (e == null)
-            return null;
-        modCount++;
-        removeEntry(e);
-        return e;
-    }
-
-    /**
-     *  Adds all the mappings in the specified map to this map, replacing any
-     *  mappings that already exist (as per {@link Map#putAll(Map)}).  The order
-     *  in which the entries are added is determined by the iterator returned
-     *  from {@link Map#entrySet()} for the specified map.
-     *
-     *  @param t the mappings that should be added to this map.
-     *
-     *  @throws NullPointerException if <code>t</code> is <code>null</code>
-     */
-    public void putAll(Map t) {
-        Iterator iter = t.entrySet().iterator();
-        while (iter.hasNext()) {
-            Map.Entry entry = (Map.Entry) iter.next();
-            put(entry.getKey(), entry.getValue());
-        }
-    }
-
-    /**
-     *  Implements {@link Map#clear()}.
-     */
-    public void clear() {
-        modCount++;
-
-        // remove all from the underlying map
-        entries.clear();
-
-        // and the list
-        sentinel.next = sentinel;
-        sentinel.prev = sentinel;
-    }
-
-    /**
-     *  Implements {@link Map#equals(Object)}.
-     */
-    public boolean equals(Object obj) {
-        if (obj == null)
-            return false;
-        if (obj == this)
-            return true;
-
-        if (!(obj instanceof Map))
-            return false;
-
-        return entrySet().equals(((Map) obj).entrySet());
-    }
-
-    /**
-     *  Implements {@link Map#hashCode()}.
-     */
-    public int hashCode() {
-        return entrySet().hashCode();
-    }
-
-    /**
-     *  Provides a string representation of the entries within the map.  The
-     *  format of the returned string may change with different releases, so this
-     *  method is suitable for debugging purposes only.  If a specific format is
-     *  required, use {@link #entrySet()}.{@link Set#iterator() iterator()} and
-     *  iterate over the entries in the map formatting them as appropriate.
-     */
-    public String toString() {
-        StringBuffer buf = new StringBuffer();
-        buf.append('[');
-        for (Entry pos = sentinel.next; pos != sentinel; pos = pos.next) {
-            buf.append(pos.getKey());
-            buf.append('=');
-            buf.append(pos.getValue());
-            if (pos.next != sentinel) {
-                buf.append(',');
-            }
-        }
-        buf.append(']');
-
-        return buf.toString();
-    }
-
-    /**
-     *  Implements {@link Map#keySet()}.
-     */
-    public Set keySet() {
-        return new AbstractSet() {
-
-            // required impls
-            public Iterator iterator() {
-                return new OrderedIterator(KEY);
-            }
-            public boolean remove(Object o) {
-                Entry e = SequencedHashMap.this.removeImpl(o);
-                return (e != null);
-            }
-
-            // more efficient impls than abstract set
-            public void clear() {
-                SequencedHashMap.this.clear();
-            }
-            public int size() {
-                return SequencedHashMap.this.size();
-            }
-            public boolean isEmpty() {
-                return SequencedHashMap.this.isEmpty();
-            }
-            public boolean contains(Object o) {
-                return SequencedHashMap.this.containsKey(o);
-            }
-
-        };
-    }
-
-    /**
-     *  Implements {@link Map#values()}.
-     */
-    public Collection values() {
-        return new AbstractCollection() {
-            // required impl
-            public Iterator iterator() {
-                return new OrderedIterator(VALUE);
-            }
-            public boolean remove(Object value) {
-                // do null comparison outside loop so we only need to do it once.  This
-                // provides a tighter, more efficient loop at the expense of slight
-                // code duplication.
-                if (value == null) {
-                    for (Entry pos = sentinel.next; pos != sentinel; pos = pos.next) {
-                        if (pos.getValue() == null) {
-                            SequencedHashMap.this.removeImpl(pos.getKey());
-                            return true;
-                        }
-                    }
-                } else {
-                    for (Entry pos = sentinel.next; pos != sentinel; pos = pos.next) {
-                        if (value.equals(pos.getValue())) {
-                            SequencedHashMap.this.removeImpl(pos.getKey());
-                            return true;
-                        }
-                    }
-                }
-
-                return false;
-            }
-
-            // more efficient impls than abstract collection
-            public void clear() {
-                SequencedHashMap.this.clear();
-            }
-            public int size() {
-                return SequencedHashMap.this.size();
-            }
-            public boolean isEmpty() {
-                return SequencedHashMap.this.isEmpty();
-            }
-            public boolean contains(Object o) {
-                return SequencedHashMap.this.containsValue(o);
-            }
-        };
-    }
-
-    /**
-     *  Implements {@link Map#entrySet()}.
-     */
-    public Set entrySet() {
-        return new AbstractSet() {
-            // helper
-            private Entry findEntry(Object o) {
-                if (o == null)
-                    return null;
-                if (!(o instanceof Map.Entry))
-                    return null;
-
-                Map.Entry e = (Map.Entry) o;
-                Entry entry = (Entry) entries.get(e.getKey());
-                if (entry != null && entry.equals(e))
-                    return entry;
-                else
-                    return null;
-            }
-
-            // required impl
-            public Iterator iterator() {
-                return new OrderedIterator(ENTRY);
-            }
-            public boolean remove(Object o) {
-                Entry e = findEntry(o);
-                if (e == null)
-                    return false;
-
-                return SequencedHashMap.this.removeImpl(e.getKey()) != null;
-            }
-
-            // more efficient impls than abstract collection
-            public void clear() {
-                SequencedHashMap.this.clear();
-            }
-            public int size() {
-                return SequencedHashMap.this.size();
-            }
-            public boolean isEmpty() {
-                return SequencedHashMap.this.isEmpty();
-            }
-            public boolean contains(Object o) {
-                return findEntry(o) != null;
-            }
-        };
-    }
-
-    // constants to define what the iterator should return on "next"
-    private static final int KEY = 0;
-    private static final int VALUE = 1;
-    private static final int ENTRY = 2;
-    private static final int REMOVED_MASK = 0x80000000;
-
-    private class OrderedIterator implements Iterator {
-        /** 
-         *  Holds the type that should be returned from the iterator.  The value
-         *  should be either {@link #KEY}, {@link #VALUE}, or {@link #ENTRY}.  To
-         *  save a tiny bit of memory, this field is also used as a marker for when
-         *  remove has been called on the current object to prevent a second remove
-         *  on the same element.  Essentially, if this value is negative (i.e. the
-         *  bit specified by {@link #REMOVED_MASK} is set), the current position
-         *  has been removed.  If positive, remove can still be called.
-         */
-        private int returnType;
-
-        /**
-         *  Holds the "current" position in the iterator.  When pos.next is the
-         *  sentinel, we've reached the end of the list.
-         */
-        private Entry pos = sentinel;
-
-        /**
-         *  Holds the expected modification count.  If the actual modification
-         *  count of the map differs from this value, then a concurrent
-         *  modification has occurred.
-         */
-        private transient long expectedModCount = modCount;
-
-        /**
-         *  Construct an iterator over the sequenced elements in the order in which
-         *  they were added.  The {@link #next()} method returns the type specified
-         *  by <code>returnType</code> which must be either {@link #KEY}, {@link
-         *  #VALUE}, or {@link #ENTRY}.
-         */
-        public OrderedIterator(int returnType) {
-            //// Since this is a private inner class, nothing else should have
-            //// access to the constructor.  Since we know the rest of the outer
-            //// class uses the iterator correctly, we can leave of the following
-            //// check:
-            //if(returnType >= 0 && returnType <= 2) {
-            //  throw new IllegalArgumentException("Invalid iterator type");
-            //}
-
-            // Set the "removed" bit so that the iterator starts in a state where
-            // "next" must be called before "remove" will succeed.
-            this.returnType = returnType | REMOVED_MASK;
-        }
-
-        /**
-         *  Returns whether there is any additional elements in the iterator to be
-         *  returned.
-         *
-         *  @return <code>true</code> if there are more elements left to be
-         *  returned from the iterator; <code>false</code> otherwise.
-         */
-        public boolean hasNext() {
-            return pos.next != sentinel;
-        }
-
-        /**
-         *  Returns the next element from the iterator.
-         *
-         *  @return the next element from the iterator.
-         *
-         *  @throws NoSuchElementException if there are no more elements in the
-         *  iterator.
-         *
-         *  @throws ConcurrentModificationException if a modification occurs in
-         *  the underlying map.
-         */
-        public Object next() {
-            if (modCount != expectedModCount) {
-                throw new ConcurrentModificationException();
-            }
-            if (pos.next == sentinel) {
-                throw new NoSuchElementException();
-            }
-
-            // clear the "removed" flag
-            returnType = returnType & ~REMOVED_MASK;
-
-            pos = pos.next;
-            switch (returnType) {
-                case KEY :
-                    return pos.getKey();
-                case VALUE :
-                    return pos.getValue();
-                case ENTRY :
-                    return pos;
-                default :
-                    // should never happen
-                    throw new Error("bad iterator type: " + returnType);
-            }
-
-        }
-
-        /**
-         *  Removes the last element returned from the {@link #next()} method from
-         *  the sequenced map.
-         *
-         *  @throws IllegalStateException if there isn't a "last element" to be
-         *  removed.  That is, if {@link #next()} has never been called, or if
-         *  {@link #remove()} was already called on the element.
-         *
-         *  @throws ConcurrentModificationException if a modification occurs in
-         *  the underlying map.
-         */
-        public void remove() {
-            if ((returnType & REMOVED_MASK) != 0) {
-                throw new IllegalStateException("remove() must follow next()");
-            }
-            if (modCount != expectedModCount) {
-                throw new ConcurrentModificationException();
-            }
-
-            SequencedHashMap.this.removeImpl(pos.getKey());
-
-            // update the expected mod count for the remove operation
-            expectedModCount++;
-
-            // set the removed flag
-            returnType = returnType | REMOVED_MASK;
-        }
-    }
-
-    // APIs maintained from previous version of SequencedHashMap for backwards
-    // compatibility
-
-    /**
-     * Creates a shallow copy of this object, preserving the internal structure
-     * by copying only references.  The keys and values themselves are not
-     * <code>clone()</code>'d.  The cloned object maintains the same sequence.
-     *
-     * @return A clone of this instance.  
-     *
-     * @throws CloneNotSupportedException if clone is not supported by a
-     * subclass.
-     */
-    public Object clone() throws CloneNotSupportedException {
-        // yes, calling super.clone() silly since we're just blowing away all
-        // the stuff that super might be doing anyway, but for motivations on
-        // this, see:
-        // http://www.javaworld.com/javaworld/jw-01-1999/jw-01-object.html
-        SequencedHashMap map = (SequencedHashMap) super.clone();
-
-        // create new, empty sentinel
-        map.sentinel = createSentinel();
-
-        // create a new, empty entry map
-        // note: this does not preserve the initial capacity and load factor.
-        map.entries = new HashMap();
-
-        // add all the mappings
-        map.putAll(this);
-
-        // Note: We cannot just clone the hashmap and sentinel because we must
-        // duplicate our internal structures.  Cloning those two will not clone all
-        // the other entries they reference, and so the cloned hash map will not be
-        // able to maintain internal consistency because there are two objects with
-        // the same entries.  See discussion in the Entry implementation on why we
-        // cannot implement a clone of the Entry (and thus why we need to recreate
-        // everything).
-
-        return map;
-    }
-
-    /**
-     *  Returns the Map.Entry at the specified index
-     *
-     *  @throws ArrayIndexOutOfBoundsException if the specified index is
-     *  <code>&lt; 0</code> or <code>&gt;</code> the size of the map.
-     */
-    private Map.Entry getEntry(int index) {
-        Entry pos = sentinel;
-
-        if (index < 0) {
-            throw new ArrayIndexOutOfBoundsException(index + " < 0");
-        }
-
-        // loop to one before the position
-        int i = -1;
-        while (i < (index - 1) && pos.next != sentinel) {
-            i++;
-            pos = pos.next;
-        }
-        // pos.next is the requested position
-
-        // if sentinel is next, past end of list
-        if (pos.next == sentinel) {
-            throw new ArrayIndexOutOfBoundsException(index + " >= " + (i + 1));
-        }
-
-        return pos.next;
-    }
-
-    /**
-     * Gets the key at the specified index.
-     *
-     * @param index  the index to retrieve
-     * @return the key at the specified index, or null
-     * @throws ArrayIndexOutOfBoundsException if the <code>index</code> is
-     *  <code>&lt; 0</code> or <code>&gt;</code> the size of the map.
-     */
-    public Object get(int index) {
-        return getEntry(index).getKey();
-    }
-
-    /**
-     * Gets the value at the specified index.
-     *
-     * @param index  the index to retrieve
-     * @return the value at the specified index, or null
-     * @throws ArrayIndexOutOfBoundsException if the <code>index</code> is
-     *  <code>&lt; 0</code> or <code>&gt;</code> the size of the map.
-     */
-    public Object getValue(int index) {
-        return getEntry(index).getValue();
-    }
-
-    /**
-     * Gets the index of the specified key.
-     * 
-     * @param key  the key to find the index of
-     * @return the index, or -1 if not found
-     */
-    public int indexOf(Object key) {
-        Entry e = (Entry) entries.get(key);
-        if (e == null) {
-            return -1;
-        }
-        int pos = 0;
-        while (e.prev != sentinel) {
-            pos++;
-            e = e.prev;
-        }
-        return pos;
-    }
-
-    /**
-     * Gets an iterator over the keys.
-     * 
-     * @return an iterator over the keys
-     */
-    public Iterator iterator() {
-        return keySet().iterator();
-    }
-
-    /**
-     * Gets the last index of the specified key.
-     * 
-     * @param key  the key to find the index of
-     * @return the index, or -1 if not found
-     */
-    public int lastIndexOf(Object key) {
-        // keys in a map are guaranteed to be unique
-        return indexOf(key);
-    }
-
-    /**
-     * Returns a List view of the keys rather than a set view.  The returned
-     * list is unmodifiable.  This is required because changes to the values of
-     * the list (using {@link java.util.ListIterator#set(Object)}) will
-     * effectively remove the value from the list and reinsert that value at
-     * the end of the list, which is an unexpected side effect of changing the
-     * value of a list.  This occurs because changing the key, changes when the
-     * mapping is added to the map and thus where it appears in the list.
-     *
-     * <p>An alternative to this method is to use {@link #keySet()}
-     *
-     * @see #keySet()
-     * @return The ordered list of keys.  
-     */
-    public List sequence() {
-        List l = new ArrayList(size());
-        Iterator iter = keySet().iterator();
-        while (iter.hasNext()) {
-            l.add(iter.next());
-        }
-
-        return UnmodifiableList.decorate(l);
-    }
-
-    /**
-     * Removes the element at the specified index.
-     *
-     * @param index The index of the object to remove.
-     * @return      The previous value corresponding the <code>key</code>, or
-     *              <code>null</code> if none existed.
-     *
-     * @throws ArrayIndexOutOfBoundsException if the <code>index</code> is
-     * <code>&lt; 0</code> or <code>&gt;</code> the size of the map.
-     */
-    public Object remove(int index) {
-        return remove(get(index));
-    }
-
-    // per Externalizable.readExternal(ObjectInput)
-
-    /**
-     * Deserializes this map from the given stream.
-     *
-     * @param in the stream to deserialize from
-     * @throws IOException if the stream raises it
-     * @throws ClassNotFoundException if the stream raises it
-     */
-    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
-        int size = in.readInt();
-        for (int i = 0; i < size; i++) {
-            Object key = in.readObject();
-            Object value = in.readObject();
-            put(key, value);
-        }
-    }
-
-    /**
-     * Serializes this map to the given stream.
-     *
-     * @param out  the stream to serialize to
-     * @throws IOException  if the stream raises it
-     */
-    public void writeExternal(ObjectOutput out) throws IOException {
-        out.writeInt(size());
-        for (Entry pos = sentinel.next; pos != sentinel; pos = pos.next) {
-            out.writeObject(pos.getKey());
-            out.writeObject(pos.getValue());
-        }
-    }
-
-    // add a serial version uid, so that if we change things in the future
-    // without changing the format, we can still deserialize properly.
-    private static final long serialVersionUID = 3380552487888102930L;
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/SetUtils.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/SetUtils.java
deleted file mode 100755
index 544e5cf..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/SetUtils.java
+++ /dev/null
@@ -1,325 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.apache.commons.collections.set.ListOrderedSet;
-import org.apache.commons.collections.set.PredicatedSet;
-import org.apache.commons.collections.set.PredicatedSortedSet;
-import org.apache.commons.collections.set.SynchronizedSet;
-import org.apache.commons.collections.set.SynchronizedSortedSet;
-import org.apache.commons.collections.set.TransformedSet;
-import org.apache.commons.collections.set.TransformedSortedSet;
-import org.apache.commons.collections.set.TypedSet;
-import org.apache.commons.collections.set.TypedSortedSet;
-import org.apache.commons.collections.set.UnmodifiableSet;
-import org.apache.commons.collections.set.UnmodifiableSortedSet;
-
-/**
- * Provides utility methods and decorators for
- * {@link Set} and {@link SortedSet} instances.
- *
- * @since Commons Collections 2.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author Paul Jack
- * @author Stephen Colebourne
- * @author Neil O'Toole
- * @author Matthew Hawthorne
- */
-public class SetUtils {
-
-    /**
-     * An empty unmodifiable set.
-     * This uses the {@link Collections} implementation 
-     * and is provided for completeness.
-     */
-    public static final Set EMPTY_SET = Collections.EMPTY_SET;
-    /**
-     * An empty unmodifiable sorted set.
-     * This is not provided in the JDK.
-     */
-    public static final SortedSet EMPTY_SORTED_SET = UnmodifiableSortedSet.decorate(new TreeSet());
-
-    /**
-     * <code>SetUtils</code> should not normally be instantiated.
-     */
-    public SetUtils() {
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Tests two sets for equality as per the <code>equals()</code> contract
-     * in {@link java.util.Set#equals(java.lang.Object)}.
-     * <p>
-     * This method is useful for implementing <code>Set</code> when you cannot
-     * extend AbstractSet. The method takes Collection instances to enable other
-     * collection types to use the Set implementation algorithm.
-     * <p>
-     * The relevant text (slightly paraphrased as this is a static method) is:
-     * <blockquote>
-     * <p>Two sets are considered equal if they have
-     * the same size, and every member of the first set is contained in
-     * the second. This ensures that the <tt>equals</tt> method works
-     * properly across different implementations of the <tt>Set</tt>
-     * interface.</p>
-     * 
-     * <p>
-     * This implementation first checks if the two sets are the same object: 
-     * if so it returns <tt>true</tt>.  Then, it checks if the two sets are
-     * identical in size; if not, it returns false. If so, it returns
-     * <tt>a.containsAll((Collection) b)</tt>.</p>
-     * </blockquote>
-     * 
-     * @see java.util.Set
-     * @param set1  the first set, may be null
-     * @param set2  the second set, may be null
-     * @return whether the sets are equal by value comparison
-     */
-    public static boolean isEqualSet(final Collection set1, final Collection set2) {
-        if (set1 == set2) {
-            return true;
-        }
-        if (set1 == null || set2 == null || set1.size() != set2.size()) {
-            return false;
-        }
-
-        return set1.containsAll(set2);
-    }
-
-    /**
-     * Generates a hash code using the algorithm specified in 
-     * {@link java.util.Set#hashCode()}.
-     * <p>
-     * This method is useful for implementing <code>Set</code> when you cannot
-     * extend AbstractSet. The method takes Collection instances to enable other
-     * collection types to use the Set implementation algorithm.
-     * 
-     * @see java.util.Set#hashCode()
-     * @param set  the set to calculate the hash code for, may be null
-     * @return the hash code
-     */
-    public static int hashCodeForSet(final Collection set) {
-        if (set == null) {
-            return 0;
-        }
-        int hashCode = 0;
-        Iterator it = set.iterator();
-        Object obj = null;
-
-        while (it.hasNext()) {
-            obj = it.next();
-            if (obj != null) {
-                hashCode += obj.hashCode();
-            }
-        }
-        return hashCode;
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Returns a synchronized set backed by the given set.
-     * <p>
-     * You must manually synchronize on the returned buffer's iterator to 
-     * avoid non-deterministic behavior:
-     *  
-     * <pre>
-     * Set s = SetUtils.synchronizedSet(mySet);
-     * synchronized (s) {
-     *     Iterator i = s.iterator();
-     *     while (i.hasNext()) {
-     *         process (i.next());
-     *     }
-     * }
-     * </pre>
-     * 
-     * This method uses the implementation in the decorators subpackage.
-     * 
-     * @param set  the set to synchronize, must not be null
-     * @return a synchronized set backed by the given set
-     * @throws IllegalArgumentException  if the set is null
-     */
-    public static Set synchronizedSet(Set set) {
-        return SynchronizedSet.decorate(set);
-    }
-
-    /**
-     * Returns an unmodifiable set backed by the given set.
-     * <p>
-     * This method uses the implementation in the decorators subpackage.
-     *
-     * @param set  the set to make unmodifiable, must not be null
-     * @return an unmodifiable set backed by the given set
-     * @throws IllegalArgumentException  if the set is null
-     */
-    public static Set unmodifiableSet(Set set) {
-        return UnmodifiableSet.decorate(set);
-    }
-
-    /**
-     * Returns a predicated (validating) set backed by the given set.
-     * <p>
-     * Only objects that pass the test in the given predicate can be added to the set.
-     * Trying to add an invalid object results in an IllegalArgumentException.
-     * It is important not to use the original set after invoking this method,
-     * as it is a backdoor for adding invalid objects.
-     *
-     * @param set  the set to predicate, must not be null
-     * @param predicate  the predicate for the set, must not be null
-     * @return a predicated set backed by the given set
-     * @throws IllegalArgumentException  if the Set or Predicate is null
-     */
-    public static Set predicatedSet(Set set, Predicate predicate) {
-        return PredicatedSet.decorate(set, predicate);
-    }
-
-    /**
-     * Returns a typed set backed by the given set.
-     * <p>
-     * Only objects of the specified type can be added to the set.
-     * 
-     * @param set  the set to limit to a specific type, must not be null
-     * @param type  the type of objects which may be added to the set
-     * @return a typed set backed by the specified set
-     */
-    public static Set typedSet(Set set, Class type) {
-        return TypedSet.decorate(set, type);
-    }
-    
-    /**
-     * Returns a transformed set backed by the given set.
-     * <p>
-     * Each object is passed through the transformer as it is added to the
-     * Set. It is important not to use the original set after invoking this 
-     * method, as it is a backdoor for adding untransformed objects.
-     *
-     * @param set  the set to transform, must not be null
-     * @param transformer  the transformer for the set, must not be null
-     * @return a transformed set backed by the given set
-     * @throws IllegalArgumentException  if the Set or Transformer is null
-     */
-    public static Set transformedSet(Set set, Transformer transformer) {
-        return TransformedSet.decorate(set, transformer);
-    }
-    
-    /**
-     * Returns a set that maintains the order of elements that are added
-     * backed by the given set.
-     * <p>
-     * If an element is added twice, the order is determined by the first add.
-     * The order is observed through the iterator or toArray.
-     *
-     * @param set  the set to order, must not be null
-     * @return an ordered set backed by the given set
-     * @throws IllegalArgumentException  if the Set is null
-     */
-    public static Set orderedSet(Set set) {
-        return ListOrderedSet.decorate(set);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Returns a synchronized sorted set backed by the given sorted set.
-     * <p>
-     * You must manually synchronize on the returned buffer's iterator to 
-     * avoid non-deterministic behavior:
-     *  
-     * <pre>
-     * Set s = SetUtils.synchronizedSet(mySet);
-     * synchronized (s) {
-     *     Iterator i = s.iterator();
-     *     while (i.hasNext()) {
-     *         process (i.next());
-     *     }
-     * }
-     * </pre>
-     * 
-     * This method uses the implementation in the decorators subpackage.
-     * 
-     * @param set  the sorted set to synchronize, must not be null
-     * @return a synchronized set backed by the given set
-     * @throws IllegalArgumentException  if the set is null
-     */
-    public static SortedSet synchronizedSortedSet(SortedSet set) {
-        return SynchronizedSortedSet.decorate(set);
-    }
-
-    /**
-     * Returns an unmodifiable sorted set backed by the given sorted set.
-     * <p>
-     * This method uses the implementation in the decorators subpackage.
-     *
-     * @param set  the sorted set to make unmodifiable, must not be null
-     * @return an unmodifiable set backed by the given set
-     * @throws IllegalArgumentException  if the set is null
-     */
-    public static SortedSet unmodifiableSortedSet(SortedSet set) {
-        return UnmodifiableSortedSet.decorate(set);
-    }
-
-    /**
-     * Returns a predicated (validating) sorted set backed by the given sorted set.  
-     * <p>
-     * Only objects that pass the test in the given predicate can be added to the set.
-     * Trying to add an invalid object results in an IllegalArgumentException.
-     * It is important not to use the original set after invoking this method,
-     * as it is a backdoor for adding invalid objects.
-     *
-     * @param set  the sorted set to predicate, must not be null
-     * @param predicate  the predicate for the sorted set, must not be null
-     * @return a predicated sorted set backed by the given sorted set
-     * @throws IllegalArgumentException  if the Set or Predicate is null
-     */
-    public static SortedSet predicatedSortedSet(SortedSet set, Predicate predicate) {
-        return PredicatedSortedSet.decorate(set, predicate);
-    }
-
-    /**
-     * Returns a typed sorted set backed by the given set.
-     * <p>
-     * Only objects of the specified type can be added to the set.
-     * 
-     * @param set  the set to limit to a specific type, must not be null
-     * @param type  the type of objects which may be added to the set
-     * @return a typed set backed by the specified set
-     */
-    public static SortedSet typedSortedSet(SortedSet set, Class type) {
-        return TypedSortedSet.decorate(set, type);
-    }
-    
-    /**
-     * Returns a transformed sorted set backed by the given set.
-     * <p>
-     * Each object is passed through the transformer as it is added to the
-     * Set. It is important not to use the original set after invoking this 
-     * method, as it is a backdoor for adding untransformed objects.
-     *
-     * @param set  the set to transform, must not be null
-     * @param transformer  the transformer for the set, must not be null
-     * @return a transformed set backed by the given set
-     * @throws IllegalArgumentException  if the Set or Transformer is null
-     */
-    public static SortedSet transformedSortedSet(SortedSet set, Transformer transformer) {
-        return TransformedSortedSet.decorate(set, transformer);
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/SortedBag.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/SortedBag.java
deleted file mode 100755
index 36ce598..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/SortedBag.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.Comparator;
-
-/**
- * Defines a type of <code>Bag</code> that maintains a sorted order among
- * its unique representative members.
- *
- * @since Commons Collections 2.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author Chuck Burdick
- */
-public interface SortedBag extends Bag {
-
-    /**
-     * Returns the comparator associated with this sorted set, or null
-     * if it uses its elements' natural ordering.
-     * 
-     * @return the comparator in use, or null if natural ordering
-     */
-    public Comparator comparator();
-
-    /**
-     * Returns the first (lowest) member.
-     * 
-     * @return the first element in the sorted bag
-     */
-    public Object first();
-
-    /**
-     * Returns the last (highest) member.
-     * 
-     * @return the last element in the sorted bag
-     */
-    public Object last();
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/SortedBidiMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/SortedBidiMap.java
deleted file mode 100755
index a6be16d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/SortedBidiMap.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.SortedMap;
-
-/**
- * Defines a map that allows bidirectional lookup between key and values
- * and retains both keys and values in sorted order.
- * <p>
- * Implementations should allow a value to be looked up from a key and
- * a key to be looked up from a value with equal performance.
- *  
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- *
- * @author Stephen Colebourne
- */
-public interface SortedBidiMap extends OrderedBidiMap, SortedMap {
-
-    /**
-     * Gets a view of this map where the keys and values are reversed.
-     * <p>
-     * Changes to one map will be visible in the other and vice versa.
-     * This enables both directions of the map to be accessed equally.
-     * <p>
-     * Implementations should seek to avoid creating a new object every time this
-     * method is called. See <code>AbstractMap.values()</code> etc. Calling this
-     * method on the inverse map should return the original.
-     * <p>
-     * Implementations must return a <code>SortedBidiMap</code> instance,
-     * usually by forwarding to <code>inverseSortedBidiMap()</code>.
-     *
-     * @return an inverted bidirectional map
-     */
-    public BidiMap inverseBidiMap();
-    
-    /**
-     * Gets a view of this map where the keys and values are reversed.
-     * <p>
-     * Changes to one map will be visible in the other and vice versa.
-     * This enables both directions of the map to be accessed as a <code>SortedMap</code>.
-     * <p>
-     * Implementations should seek to avoid creating a new object every time this
-     * method is called. See <code>AbstractMap.values()</code> etc. Calling this
-     * method on the inverse map should return the original.
-     * <p>
-     * The inverse map returned by <code>inverseBidiMap()</code> should be the
-     * same object as returned by this method.
-     *
-     * @return an inverted bidirectional map
-     */
-    public SortedBidiMap inverseSortedBidiMap();
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/StaticBucketMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/StaticBucketMap.java
deleted file mode 100755
index 830d009..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/StaticBucketMap.java
+++ /dev/null
@@ -1,710 +0,0 @@
-/*
- *  Copyright 2002-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.AbstractCollection;
-import java.util.AbstractSet;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-/**
- * A StaticBucketMap is an efficient, thread-safe implementation of
- * <code>java.util.Map</code> that performs well in in a highly
- * thread-contentious environment.  The map supports very efficient
- * {@link #get(Object) get}, {@link #put(Object,Object) put}, 
- * {@link #remove(Object) remove} and {@link #containsKey(Object) containsKey}
- * operations, assuming (approximate) uniform hashing and
- * that the number of entries does not exceed the number of buckets.  If the
- * number of entries exceeds the number of buckets or if the hash codes of the
- * objects are not uniformly distributed, these operations have a worst case
- * scenario that is proportional to the number of elements in the map
- * (<i>O(n)</i>).<p>
- *
- * Each bucket in the hash table has its own monitor, so two threads can 
- * safely operate on the map at the same time, often without incurring any 
- * monitor contention.  This means that you don't have to wrap instances
- * of this class with {@link java.util.Collections#synchronizedMap(Map)};
- * instances are already thread-safe.  Unfortunately, however, this means 
- * that this map implementation behaves in ways you may find disconcerting.  
- * Bulk operations, such as {@link #putAll(Map) putAll} or the
- * {@link Collection#retainAll(Collection) retainAll} operation in collection 
- * views, are <i>not</i> atomic.  If two threads are simultaneously 
- * executing 
- *
- * <pre>
- *   staticBucketMapInstance.putAll(map);
- * </pre>
- *
- * and
- *
- * <pre>
- *   staticBucketMapInstance.entrySet().removeAll(map.entrySet());
- * </pre>
- *
- * then the results are generally random.  Those two statement could cancel
- * each other out, leaving <code>staticBucketMapInstance</code> essentially 
- * unchanged, or they could leave some random subset of <code>map</code> in 
- * <code>staticBucketMapInstance</code>.<p>
- *
- * Also, much like an encyclopedia, the results of {@link #size()} and 
- * {@link #isEmpty()} are out-of-date as soon as they are produced.<p>
- *
- * The iterators returned by the collection views of this class are <i>not</i>
- * fail-fast.  They will <i>never</i> raise a 
- * {@link java.util.ConcurrentModificationException}.  Keys and values 
- * added to the map after the iterator is created do not necessarily appear
- * during iteration.  Similarly, the iterator does not necessarily fail to 
- * return keys and values that were removed after the iterator was created.<p>
- *
- * Finally, unlike {@link java.util.HashMap}-style implementations, this
- * class <i>never</i> rehashes the map.  The number of buckets is fixed 
- * at construction time and never altered.  Performance may degrade if 
- * you do not allocate enough buckets upfront.<p>
- *
- * The {@link #atomic(Runnable)} method is provided to allow atomic iterations
- * and bulk operations; however, overuse of {@link #atomic(Runnable) atomic}
- * will basically result in a map that's slower than an ordinary synchronized
- * {@link java.util.HashMap}.
- *
- * Use this class if you do not require reliable bulk operations and 
- * iterations, or if you can make your own guarantees about how bulk 
- * operations will affect the map.<p>
- *
- * @deprecated Moved to map subpackage. Due to be removed in v4.0.
- * @since Commons Collections 2.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
- * @author <a href="mailto:g-froehlich@gmx.de">Gerhard Froehlich</a>
- * @author <a href="mailto:mas@apache.org">Michael A. Smith</a>
- * @author Paul Jack
- * @author Leo Sutic
- * @author Janek Bogucki
- * @author Kazuya Ujihara
- */
-public final class StaticBucketMap implements Map {
-
-    private static final int DEFAULT_BUCKETS = 255;
-    private Node[] m_buckets;
-    private Lock[] m_locks;
-
-    /**
-     * Initializes the map with the default number of buckets (255).
-     */
-    public StaticBucketMap()
-    {
-        this( DEFAULT_BUCKETS );
-    }
-
-    /**
-     * Initializes the map with a specified number of buckets.  The number
-     * of buckets is never below 17, and is always an odd number (StaticBucketMap
-     * ensures this). The number of buckets is inversely proportional to the
-     * chances for thread contention.  The fewer buckets, the more chances for
-     * thread contention.  The more buckets the fewer chances for thread
-     * contention.
-     *
-     * @param numBuckets  the number of buckets for this map
-     */
-    public StaticBucketMap( int numBuckets )
-    {
-        int size = Math.max( 17, numBuckets );
-
-        // Ensure that bucketSize is never a power of 2 (to ensure maximal distribution)
-        if( size % 2 == 0 )
-        {
-            size--;
-        }
-
-        m_buckets = new Node[ size ];
-        m_locks = new Lock[ size ];
-
-        for( int i = 0; i < size; i++ )
-        {
-            m_locks[ i ] = new Lock();
-        }
-    }
-
-    /**
-     * Determine the exact hash entry for the key.  The hash algorithm
-     * is rather simplistic, but it does the job:
-     *
-     * <pre>
-     *   He = |Hk mod n|
-     * </pre>
-     *
-     * <p>
-     *   He is the entry's hashCode, Hk is the key's hashCode, and n is
-     *   the number of buckets.
-     * </p>
-     */
-    private final int getHash( Object key )
-    {
-        if( key == null ) return 0;
-        int hash = key.hashCode();
-        hash += ~(hash << 15);
-        hash ^= (hash >>> 10);
-        hash += (hash << 3);
-        hash ^= (hash >>> 6);
-        hash += ~(hash << 11);
-        hash ^= (hash >>> 16);
-        hash %= m_buckets.length;
-        return ( hash < 0 ) ? hash * -1 : hash;
-    }
-
-    /**
-     *  Implements {@link Map#keySet()}.
-     */
-    public Set keySet()
-    {
-        return new KeySet();
-    }
-
-    /**
-     *  Implements {@link Map#size()}.
-     */
-    public int size()
-    {
-        int cnt = 0;
-
-        for( int i = 0; i < m_buckets.length; i++ )
-        {
-            cnt += m_locks[i].size;
-        }
-
-        return cnt;
-    }
-
-    /**
-     *  Implements {@link Map#put(Object, Object)}.
-     */
-    public Object put( final Object key, final Object value )
-    {
-        int hash = getHash( key );
-
-        synchronized( m_locks[ hash ] )
-        {
-            Node n = m_buckets[ hash ];
-
-            if( n == null )
-            {
-                n = new Node();
-                n.key = key;
-                n.value = value;
-                m_buckets[ hash ] = n;
-                m_locks[hash].size++;
-                return null;
-            }
-
-            // Set n to the last node in the linked list.  Check each key along the way
-            //  If the key is found, then change the value of that node and return
-            //  the old value.
-            for( Node next = n; next != null; next = next.next )
-            {
-                n = next;
-
-                if( n.key == key || ( n.key != null && n.key.equals( key ) ) )
-                {
-                    Object returnVal = n.value;
-                    n.value = value;
-                    return returnVal;
-                }
-            }
-
-            // The key was not found in the current list of nodes, add it to the end
-            //  in a new node.
-            Node newNode = new Node();
-            newNode.key = key;
-            newNode.value = value;
-            n.next = newNode;
-            m_locks[hash].size++;
-        }
-
-        return null;
-    }
-
-    /**
-     *  Implements {@link Map#get(Object)}.
-     */
-    public Object get( final Object key )
-    {
-        int hash = getHash( key );
-
-        synchronized( m_locks[ hash ] )
-        {
-            Node n = m_buckets[ hash ];
-
-            while( n != null )
-            {
-                if( n.key == key || ( n.key != null && n.key.equals( key ) ) )
-                {
-                    return n.value;
-                }
-
-                n = n.next;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Implements {@link Map#containsKey(Object)}.
-     */
-    public boolean containsKey( final Object key )
-    {
-        int hash = getHash( key );
-
-        synchronized( m_locks[ hash ] )
-        {
-            Node n = m_buckets[ hash ];
-
-            while( n != null )
-            {
-                if( n.key == key || ( n.key != null && n.key.equals( key ) ) )
-                {
-                    return true;
-                }
-
-                n = n.next;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Implements {@link Map#containsValue(Object)}.
-     */
-    public boolean containsValue( final Object value )
-    {
-        for( int i = 0; i < m_buckets.length; i++ )
-        {
-            synchronized( m_locks[ i ] )
-            {
-                Node n = m_buckets[ i ];
-
-                while( n != null )
-                {
-                    if( n.value == value || 
-                        (n.value != null && n.value.equals( value ) ) )
-                    {
-                        return true;
-                    }
-
-                    n = n.next;
-                }
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     *  Implements {@link Map#values()}.
-     */
-    public Collection values()
-    {
-        return new Values();
-    }
-
-    /**
-     *  Implements {@link Map#entrySet()}.
-     */
-    public Set entrySet()
-    {
-        return new EntrySet();
-    }
-
-    /**
-     *  Implements {@link Map#putAll(Map)}.
-     */
-    public void putAll( Map other )
-    {
-        Iterator i = other.keySet().iterator();
-
-        while( i.hasNext() )
-        {
-            Object key = i.next();
-            put( key, other.get( key ) );
-        }
-    }
-
-    /**
-     *  Implements {@link Map#remove(Object)}.
-     */
-    public Object remove( Object key )
-    {
-        int hash = getHash( key );
-
-        synchronized( m_locks[ hash ] )
-        {
-            Node n = m_buckets[ hash ];
-            Node prev = null;
-
-            while( n != null )
-            {
-                if( n.key == key || ( n.key != null && n.key.equals( key ) ) )
-                {
-                    // Remove this node from the linked list of nodes.
-                    if( null == prev )
-                    {
-                        // This node was the head, set the next node to be the new head.
-                        m_buckets[ hash ] = n.next;
-                    }
-                    else
-                    {
-                        // Set the next node of the previous node to be the node after this one.
-                        prev.next = n.next;
-                    }
-                    m_locks[hash].size--;
-                    return n.value;
-                }
-
-                prev = n;
-                n = n.next;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     *  Implements {@link Map#isEmpty()}.
-     */
-    public final boolean isEmpty()
-    {
-        return size() == 0;
-    }
-
-    /**
-     *  Implements {@link Map#clear()}.
-     */
-    public final void clear()
-    {
-        for( int i = 0; i < m_buckets.length; i++ )
-        {
-            Lock lock = m_locks[i];
-            synchronized (lock) {
-                m_buckets[ i ] = null;
-                lock.size = 0;
-            }
-        }
-    }
-
-    /**
-     *  Implements {@link Map#equals(Object)}.
-     */
-    public final boolean equals( Object obj )
-    {
-        if( obj == null ) return false;
-        if( obj == this ) return true;
-
-        if( !( obj instanceof Map ) ) return false;
-
-        Map other = (Map)obj;
-        
-        return entrySet().equals(other.entrySet());
-    }
-
-    /**
-     *  Implements {@link Map#hashCode()}.
-     */
-    public final int hashCode() 
-    {
-        int hashCode = 0;
-
-        for( int i = 0; i < m_buckets.length; i++ )
-        {
-            synchronized( m_locks[ i ] )
-            {
-                Node n = m_buckets[ i ];
-
-                while( n != null )
-                {
-                    hashCode += n.hashCode();
-                    n = n.next;
-                }
-            }
-        }
-        return hashCode;
-    }
-
-    /**
-     * The Map.Entry for the StaticBucketMap.
-     */
-    private static final class Node implements Map.Entry, KeyValue
-    {
-        protected Object key;
-        protected Object value;
-        protected Node next;
-
-        public Object getKey()
-        {
-            return key;
-        }
-
-        public Object getValue()
-        {
-            return value;
-        }
-
-        public int hashCode()
-        {
-            return ( ( key == null ? 0 : key.hashCode() ) ^
-                     ( value == null ? 0 : value.hashCode() ) ); 
-        }
-
-        public boolean equals(Object o) {
-            if( o == null ) return false;
-            if( o == this ) return true;        
-            
-            if ( ! (o instanceof Map.Entry ) )
-                return false;
-
-            Map.Entry e2 = (Map.Entry)o;
-
-            return ((key == null ?
-                     e2.getKey() == null : key.equals(e2.getKey())) &&
-                    (value == null ?
-                     e2.getValue() == null : value.equals(e2.getValue())));
-        }
-
-        public Object setValue( Object val )
-        {
-            Object retVal = value;
-            value = val;
-            return retVal;
-        }
-    }
-
-    private final static class Lock {
-
-        public int size;
-
-    }
-
-
-    private class EntryIterator implements Iterator {
-
-        private ArrayList current = new ArrayList();
-        private int bucket;
-        private Map.Entry last;
-
-
-        public boolean hasNext() {
-            if (current.size() > 0) return true;
-            while (bucket < m_buckets.length) {
-                synchronized (m_locks[bucket]) {
-                    Node n = m_buckets[bucket];
-                    while (n != null) {
-                        current.add(n);
-                        n = n.next;
-                    }
-                    bucket++;
-                    if (current.size() > 0) return true;
-                }
-            }
-            return false;
-        }
-
-        protected Map.Entry nextEntry() {
-            if (!hasNext()) throw new NoSuchElementException();
-            last = (Map.Entry)current.remove(current.size() - 1);
-            return last;
-        }
-
-        public Object next() {
-            return nextEntry();
-        }
-
-        public void remove() {
-            if (last == null) throw new IllegalStateException();
-            StaticBucketMap.this.remove(last.getKey());
-            last = null;
-        }
-
-    }
-
-    private class ValueIterator extends EntryIterator {
-
-        public Object next() {
-            return nextEntry().getValue();
-        }
-
-    }
-
-    private class KeyIterator extends EntryIterator {
-
-        public Object next() {
-            return nextEntry().getKey();
-        }
-
-    }
-
-    private class EntrySet extends AbstractSet {
-
-        public int size() {
-            return StaticBucketMap.this.size();
-        }
-
-        public void clear() {
-            StaticBucketMap.this.clear();
-        }
-
-        public Iterator iterator() {
-            return new EntryIterator();
-        }
-
-        public boolean contains(Object o) {
-            Map.Entry entry = (Map.Entry)o;
-            int hash = getHash(entry.getKey());
-            synchronized (m_locks[hash]) {
-                for (Node n = m_buckets[hash]; n != null; n = n.next) {
-                    if (n.equals(entry)) return true;
-                }
-            }
-            return false;
-        }
-
-        public boolean remove(Object obj) {
-            if (obj instanceof Map.Entry == false) {
-                return false;
-            }
-            Map.Entry entry = (Map.Entry) obj;
-            int hash = getHash(entry.getKey());
-            synchronized (m_locks[hash]) {
-                for (Node n = m_buckets[hash]; n != null; n = n.next) {
-                    if (n.equals(entry)) {
-                        StaticBucketMap.this.remove(n.getKey());
-                        return true;
-                    }
-                }
-            }
-            return false;
-        }
-
-    }
-
-
-    private class KeySet extends AbstractSet {
-
-        public int size() {
-            return StaticBucketMap.this.size();
-        }
-
-        public void clear() {
-            StaticBucketMap.this.clear();
-        }
-
-        public Iterator iterator() {
-            return new KeyIterator();
-        }
-
-        public boolean contains(Object o) {
-            return StaticBucketMap.this.containsKey(o);
-        }
-
-        public boolean remove(Object o) {
-            int hash = getHash(o);
-            synchronized (m_locks[hash]) {
-                for (Node n = m_buckets[hash]; n != null; n = n.next) {
-                    Object k = n.getKey();
-                    if ((k == o) || ((k != null) && k.equals(o))) {
-                        StaticBucketMap.this.remove(k);
-                        return true;
-                    }
-                }
-            }
-            return false;
-
-        }
-
-    }
-
-
-    private class Values extends AbstractCollection {
-
-        public int size() {
-            return StaticBucketMap.this.size();
-        }
-
-        public void clear() {
-            StaticBucketMap.this.clear();
-        }
-
-        public Iterator iterator() {
-            return new ValueIterator();
-        }
-
-    }
-
-
-    /**
-     *  Prevents any operations from occurring on this map while the
-     *  given {@link Runnable} executes.  This method can be used, for
-     *  instance, to execute a bulk operation atomically: 
-     *
-     *  <pre>
-     *    staticBucketMapInstance.atomic(new Runnable() {
-     *        public void run() {
-     *            staticBucketMapInstance.putAll(map);
-     *        }
-     *    });
-     *  </pre>
-     *
-     *  It can also be used if you need a reliable iterator:
-     *
-     *  <pre>
-     *    staticBucketMapInstance.atomic(new Runnable() {
-     *        public void run() {
-     *            Iterator iterator = staticBucketMapInstance.iterator();
-     *            while (iterator.hasNext()) {
-     *                foo(iterator.next();
-     *            }
-     *        }
-     *    });
-     *  </pre>
-     *
-     *  <B>Implementation note:</B> This method requires a lot of time
-     *  and a ton of stack space.  Essentially a recursive algorithm is used
-     *  to enter each bucket's monitor.  If you have twenty thousand buckets
-     *  in your map, then the recursive method will be invoked twenty thousand
-     *  times.  You have been warned.
-     *
-     *  @param r  the code to execute atomically
-     */
-    public void atomic(Runnable r) {
-        if (r == null) throw new NullPointerException();
-        atomic(r, 0);
-    }
-
-    private void atomic(Runnable r, int bucket) {
-        if (bucket >= m_buckets.length) {
-            r.run();
-            return;
-        }
-        synchronized (m_locks[bucket]) {
-            atomic(r, bucket + 1);
-        }
-    }
-
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/SynchronizedPriorityQueue.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/SynchronizedPriorityQueue.java
deleted file mode 100755
index a0431e1..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/SynchronizedPriorityQueue.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.NoSuchElementException;
-
-/**
- * A thread safe version of the PriorityQueue.
- * Provides synchronized wrapper methods for all the methods 
- * defined in the PriorityQueue interface.
- *
- * @deprecated PriorityQueue is replaced by the Buffer interface, see buffer subpackage.
- *  Due to be removed in v4.0.
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author Ram Chidambaram
- */
-public final class SynchronizedPriorityQueue implements PriorityQueue {
-
-    /**
-     * The underlying priority queue.
-     */
-    protected final PriorityQueue m_priorityQueue;
-
-    /**
-     * Constructs a new synchronized priority queue.
-     *
-     * @param priorityQueue  the priority queue to synchronize
-     */
-    public SynchronizedPriorityQueue(final PriorityQueue priorityQueue) {
-        m_priorityQueue = priorityQueue;
-    }
-
-    /**
-     * Clear all elements from queue.
-     */
-    public synchronized void clear() {
-        m_priorityQueue.clear();
-    }
-
-    /**
-     * Test if queue is empty.
-     *
-     * @return true if queue is empty else false.
-     */
-    public synchronized boolean isEmpty() {
-        return m_priorityQueue.isEmpty();
-    }
-
-    /**
-     * Insert an element into queue.
-     *
-     * @param element the element to be inserted
-     */
-    public synchronized void insert(final Object element) {
-        m_priorityQueue.insert(element);
-    }
-
-    /**
-     * Return element on top of heap but don't remove it.
-     *
-     * @return the element at top of heap
-     * @throws NoSuchElementException if isEmpty() == true
-     */
-    public synchronized Object peek() throws NoSuchElementException {
-        return m_priorityQueue.peek();
-    }
-
-    /**
-     * Return element on top of heap and remove it.
-     *
-     * @return the element at top of heap
-     * @throws NoSuchElementException if isEmpty() == true
-     */
-    public synchronized Object pop() throws NoSuchElementException {
-        return m_priorityQueue.pop();
-    }
-
-    /**
-     * Returns a string representation of the underlying queue.
-     *
-     * @return a string representation of the underlying queue
-     */
-    public synchronized String toString() {
-        return m_priorityQueue.toString();
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/Transformer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/Transformer.java
deleted file mode 100755
index ba16d6c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/Transformer.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-/**
- * Defines a functor interface implemented by classes that transform one
- * object into another.
- * <p>
- * A <code>Transformer</code> converts the input object to the output object.
- * The input object should be left unchanged.
- * Transformers are typically used for type conversions, or extracting data
- * from an object.
- * <p>
- * Standard implementations of common transformers are provided by
- * {@link TransformerUtils}. These include method invokation, returning a constant,
- * cloning and returning the string value.
- * 
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- * 
- * @author James Strachan
- * @author Stephen Colebourne
- */
-public interface Transformer {
-
-    /**
-     * Transforms the input object (leaving it unchanged) into some output object.
-     *
-     * @param input  the object to be transformed, should be left unchanged
-     * @return a transformed object
-     * @throws ClassCastException (runtime) if the input is the wrong class
-     * @throws IllegalArgumentException (runtime) if the input is invalid
-     * @throws FunctorException (runtime) if the transform cannot be completed
-     */
-    public Object transform(Object input);
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/TransformerUtils.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/TransformerUtils.java
deleted file mode 100755
index ba1a606..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/TransformerUtils.java
+++ /dev/null
@@ -1,441 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.commons.collections.functors.ChainedTransformer;
-import org.apache.commons.collections.functors.CloneTransformer;
-import org.apache.commons.collections.functors.ClosureTransformer;
-import org.apache.commons.collections.functors.ConstantTransformer;
-import org.apache.commons.collections.functors.EqualPredicate;
-import org.apache.commons.collections.functors.ExceptionTransformer;
-import org.apache.commons.collections.functors.FactoryTransformer;
-import org.apache.commons.collections.functors.InstantiateTransformer;
-import org.apache.commons.collections.functors.InvokerTransformer;
-import org.apache.commons.collections.functors.MapTransformer;
-import org.apache.commons.collections.functors.NOPTransformer;
-import org.apache.commons.collections.functors.PredicateTransformer;
-import org.apache.commons.collections.functors.StringValueTransformer;
-import org.apache.commons.collections.functors.SwitchTransformer;
-
-/**
- * <code>TransformerUtils</code> provides reference implementations and 
- * utilities for the Transformer functor interface. The supplied transformers are:
- * <ul>
- * <li>Invoker - returns the result of a method call on the input object
- * <li>Clone - returns a clone of the input object
- * <li>Constant - always returns the same object
- * <li>Closure - performs a Closure and returns the input object
- * <li>Predicate - returns the result of the predicate as a Boolean
- * <li>Factory - returns a new object from a factory
- * <li>Chained - chains two or more transformers together
- * <li>Switch - calls one transformer based on one or more predicates
- * <li>SwitchMap - calls one transformer looked up from a Map
- * <li>Instantiate - the Class input object is instantiated
- * <li>Map - returns an object from a supplied Map
- * <li>Null - always returns null
- * <li>NOP - returns the input object, which should be immutable
- * <li>Exception - always throws an exception
- * <li>StringValue - returns a <code>java.lang.String</code> representation of the input object
- * </ul>
- * All the supplied transformers are Serializable.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author Stephen Colebourne
- * @author James Carman
- */
-public class TransformerUtils {
-
-    /**
-     * This class is not normally instantiated.
-     */
-    public TransformerUtils() {
-        super();
-    }
-
-    /**
-     * Gets a transformer that always throws an exception.
-     * This could be useful during testing as a placeholder.
-     * 
-     * @see org.apache.commons.collections.functors.ExceptionTransformer
-     * 
-     * @return the transformer
-     */
-    public static Transformer exceptionTransformer() {
-        return ExceptionTransformer.INSTANCE;
-    }
-
-    /**
-     * Gets a transformer that always returns null.
-     * 
-     * @see org.apache.commons.collections.functors.ConstantTransformer
-     * 
-     * @return the transformer
-     */
-    public static Transformer nullTransformer() {
-        return ConstantTransformer.NULL_INSTANCE;
-    }
-
-    /**
-     * Gets a transformer that returns the input object.
-     * The input object should be immutable to maintain the
-     * contract of Transformer (although this is not checked).
-     * 
-     * @see org.apache.commons.collections.functors.NOPTransformer
-     * 
-     * @return the transformer
-     */
-    public static Transformer nopTransformer() {
-        return NOPTransformer.INSTANCE;
-    }
-
-    /**
-     * Gets a transformer that returns a clone of the input
-     * object. The input object will be cloned using one of these
-     * techniques (in order):
-     * <ul>
-     * <li>public clone method
-     * <li>public copy constructor
-     * <li>serialization clone
-     * <ul>
-     * 
-     * @see org.apache.commons.collections.functors.CloneTransformer
-     * 
-     * @return the transformer
-     */
-    public static Transformer cloneTransformer() {
-        return CloneTransformer.INSTANCE;
-    }
-
-    /**
-     * Creates a Transformer that will return the same object each time the 
-     * transformer is used.
-     *
-     * @see org.apache.commons.collections.functors.ConstantTransformer
-     * 
-     * @param constantToReturn  the constant object to return each time in the transformer
-     * @return the transformer.
-     */
-    public static Transformer constantTransformer(Object constantToReturn) {
-        return ConstantTransformer.getInstance(constantToReturn);
-    }
-
-    /**
-     * Creates a Transformer that calls a Closure each time the transformer is used.
-     * The transformer returns the input object.
-     *
-     * @see org.apache.commons.collections.functors.ClosureTransformer
-     * 
-     * @param closure  the closure to run each time in the transformer, not null
-     * @return the transformer
-     * @throws IllegalArgumentException if the closure is null
-     */
-    public static Transformer asTransformer(Closure closure) {
-        return ClosureTransformer.getInstance(closure);
-    }
-
-    /**
-     * Creates a Transformer that calls a Predicate each time the transformer is used.
-     * The transformer will return either Boolean.TRUE or Boolean.FALSE.
-     *
-     * @see org.apache.commons.collections.functors.PredicateTransformer
-     * 
-     * @param predicate  the predicate to run each time in the transformer, not null
-     * @return the transformer
-     * @throws IllegalArgumentException if the predicate is null
-     */
-    public static Transformer asTransformer(Predicate predicate) {
-        return PredicateTransformer.getInstance(predicate);
-    }
-
-    /**
-     * Creates a Transformer that calls a Factory each time the transformer is used.
-     * The transformer will return the value returned by the factory.
-     *
-     * @see org.apache.commons.collections.functors.FactoryTransformer
-     * 
-     * @param factory  the factory to run each time in the transformer, not null
-     * @return the transformer
-     * @throws IllegalArgumentException if the factory is null
-     */
-    public static Transformer asTransformer(Factory factory) {
-        return FactoryTransformer.getInstance(factory);
-    }
-
-    /**
-     * Create a new Transformer that calls two transformers, passing the result of
-     * the first into the second.
-     * 
-     * @see org.apache.commons.collections.functors.ChainedTransformer
-     * 
-     * @param transformer1  the first transformer
-     * @param transformer2  the second transformer
-     * @return the transformer
-     * @throws IllegalArgumentException if either transformer is null
-     */
-    public static Transformer chainedTransformer(Transformer transformer1, Transformer transformer2) {
-        return ChainedTransformer.getInstance(transformer1, transformer2);
-    }
-
-    /**
-     * Create a new Transformer that calls each transformer in turn, passing the 
-     * result into the next transformer.
-     * 
-     * @see org.apache.commons.collections.functors.ChainedTransformer
-     * 
-     * @param transformers  an array of transformers to chain
-     * @return the transformer
-     * @throws IllegalArgumentException if the transformers array is null
-     * @throws IllegalArgumentException if any transformer in the array is null
-     */
-    public static Transformer chainedTransformer(Transformer[] transformers) {
-        return ChainedTransformer.getInstance(transformers);
-    }
-
-    /**
-     * Create a new Transformer that calls each transformer in turn, passing the 
-     * result into the next transformer. The ordering is that of the iterator()
-     * method on the collection.
-     * 
-     * @see org.apache.commons.collections.functors.ChainedTransformer
-     * 
-     * @param transformers  a collection of transformers to chain
-     * @return the transformer
-     * @throws IllegalArgumentException if the transformers collection is null
-     * @throws IllegalArgumentException if any transformer in the collection is null
-     */
-    public static Transformer chainedTransformer(Collection transformers) {
-        return ChainedTransformer.getInstance(transformers);
-    }
-
-    /**
-     * Create a new Transformer that calls one of two transformers depending 
-     * on the specified predicate.
-     * 
-     * @see org.apache.commons.collections.functors.SwitchTransformer
-     * 
-     * @param predicate  the predicate to switch on
-     * @param trueTransformer  the transformer called if the predicate is true
-     * @param falseTransformer  the transformer called if the predicate is false
-     * @return the transformer
-     * @throws IllegalArgumentException if the predicate is null
-     * @throws IllegalArgumentException if either transformer is null
-     */
-    public static Transformer switchTransformer(Predicate predicate, Transformer trueTransformer, Transformer falseTransformer) {
-        return SwitchTransformer.getInstance(new Predicate[] { predicate }, new Transformer[] { trueTransformer }, falseTransformer);
-    }
-
-    /**
-     * Create a new Transformer that calls one of the transformers depending 
-     * on the predicates. The transformer at array location 0 is called if the
-     * predicate at array location 0 returned true. Each predicate is evaluated
-     * until one returns true. If no predicates evaluate to true, null is returned.
-     * 
-     * @see org.apache.commons.collections.functors.SwitchTransformer
-     * 
-     * @param predicates  an array of predicates to check
-     * @param transformers  an array of transformers to call
-     * @return the transformer
-     * @throws IllegalArgumentException if the either array is null
-     * @throws IllegalArgumentException if the either array has 0 elements
-     * @throws IllegalArgumentException if any element in the arrays is null
-     * @throws IllegalArgumentException if the arrays are different sizes
-     */
-    public static Transformer switchTransformer(Predicate[] predicates, Transformer[] transformers) {
-        return SwitchTransformer.getInstance(predicates, transformers, null);
-    }
-
-    /**
-     * Create a new Transformer that calls one of the transformers depending 
-     * on the predicates. The transformer at array location 0 is called if the
-     * predicate at array location 0 returned true. Each predicate is evaluated
-     * until one returns true. If no predicates evaluate to true, the default
-     * transformer is called. If the default transformer is null, null is returned.
-     * 
-     * @see org.apache.commons.collections.functors.SwitchTransformer
-     * 
-     * @param predicates  an array of predicates to check
-     * @param transformers  an array of transformers to call
-     * @param defaultTransformer  the default to call if no predicate matches, null means return null
-     * @return the transformer
-     * @throws IllegalArgumentException if the either array is null
-     * @throws IllegalArgumentException if the either array has 0 elements
-     * @throws IllegalArgumentException if any element in the arrays is null
-     * @throws IllegalArgumentException if the arrays are different sizes
-     */
-    public static Transformer switchTransformer(Predicate[] predicates, Transformer[] transformers, Transformer defaultTransformer) {
-        return SwitchTransformer.getInstance(predicates, transformers, defaultTransformer);
-    }
-
-    /**
-     * Create a new Transformer that calls one of the transformers depending 
-     * on the predicates. 
-     * <p>
-     * The Map consists of Predicate keys and Transformer values. A transformer 
-     * is called if its matching predicate returns true. Each predicate is evaluated
-     * until one returns true. If no predicates evaluate to true, the default
-     * transformer is called. The default transformer is set in the map with a 
-     * null key. If no default transformer is set, null will be returned in a default
-     * case. The ordering is that of the iterator() method on the entryset collection 
-     * of the map.
-     * 
-     * @see org.apache.commons.collections.functors.SwitchTransformer
-     * 
-     * @param predicatesAndTransformers  a map of predicates to transformers
-     * @return the transformer
-     * @throws IllegalArgumentException if the map is null
-     * @throws IllegalArgumentException if the map is empty
-     * @throws IllegalArgumentException if any transformer in the map is null
-     * @throws ClassCastException  if the map elements are of the wrong type
-     */
-    public static Transformer switchTransformer(Map predicatesAndTransformers) {
-        return SwitchTransformer.getInstance(predicatesAndTransformers);
-    }
-
-    /**
-     * Create a new Transformer that uses the input object as a key to find the
-     * transformer to call. 
-     * <p>
-     * The Map consists of object keys and Transformer values. A transformer 
-     * is called if the input object equals the key. If there is no match, the
-     * default transformer is called. The default transformer is set in the map
-     * using a null key. If no default is set, null will be returned in a default case.
-     * 
-     * @see org.apache.commons.collections.functors.SwitchTransformer
-     * 
-     * @param objectsAndTransformers  a map of objects to transformers
-     * @return the transformer
-     * @throws IllegalArgumentException if the map is null
-     * @throws IllegalArgumentException if the map is empty
-     * @throws IllegalArgumentException if any transformer in the map is null
-     */
-    public static Transformer switchMapTransformer(Map objectsAndTransformers) {
-        Transformer[] trs = null;
-        Predicate[] preds = null;
-        if (objectsAndTransformers == null) {
-            throw new IllegalArgumentException("The object and transformer map must not be null");
-        }
-        Transformer def = (Transformer) objectsAndTransformers.remove(null);
-        int size = objectsAndTransformers.size();
-        trs = new Transformer[size];
-        preds = new Predicate[size];
-        int i = 0;
-        for (Iterator it = objectsAndTransformers.entrySet().iterator(); it.hasNext();) {
-            Map.Entry entry = (Map.Entry) it.next();
-            preds[i] = EqualPredicate.getInstance(entry.getKey());
-            trs[i] = (Transformer) entry.getValue();
-            i++;
-        }
-        return switchTransformer(preds, trs, def);
-    }
-
-    /**
-     * Gets a Transformer that expects an input Class object that it will instantiate.
-     * 
-     * @see org.apache.commons.collections.functors.InstantiateTransformer
-     * 
-     * @return the transformer
-     */
-    public static Transformer instantiateTransformer() {
-        return InstantiateTransformer.NO_ARG_INSTANCE;
-    }
-
-    /** 
-     * Creates a Transformer that expects an input Class object that it will 
-     * instantiate. The constructor used is determined by the arguments specified
-     * to this method.
-     *
-     * @see org.apache.commons.collections.functors.InstantiateTransformer
-     * 
-     * @param paramTypes  parameter types for the constructor, can be null
-     * @param args  the arguments to pass to the constructor, can be null
-     * @return the transformer
-     * @throws IllegalArgumentException if the paramTypes and args don't match
-     */
-    public static Transformer instantiateTransformer(Class[] paramTypes, Object[] args) {
-        return InstantiateTransformer.getInstance(paramTypes, args);
-    }
-
-    /** 
-     * Creates a Transformer that uses the passed in Map to transform the input 
-     * object (as a simple lookup).
-     *
-     * @see org.apache.commons.collections.functors.MapTransformer
-     * 
-     * @param map  the map to use to transform the objects
-     * @return the transformer
-     * @throws IllegalArgumentException if the map is null
-     */
-    public static Transformer mapTransformer(Map map) {
-        return MapTransformer.getInstance(map);
-    }
-
-    /**
-     * Gets a Transformer that invokes a method on the input object.
-     * The method must have no parameters. If the input object is null, 
-     * null is returned.
-     * <p>
-     * For example, <code>TransformerUtils.invokerTransformer("getName");</code>
-     * will call the <code>getName/code> method on the input object to 
-     * determine the transformer result.
-     * 
-     * @see org.apache.commons.collections.functors.InvokerTransformer
-     * 
-     * @param methodName  the method name to call on the input object, may not be null
-     * @return the transformer
-     * @throws IllegalArgumentException if the methodName is null.
-     */
-    public static Transformer invokerTransformer(String methodName){
-        return InvokerTransformer.getInstance(methodName, null, null);
-    }
-
-    /**
-     * Gets a Transformer that invokes a method on the input object.
-     * The method parameters are specified. If the input object is null, 
-     * null is returned.
-     * 
-     * @see org.apache.commons.collections.functors.InvokerTransformer
-     * 
-     * @param methodName  the name of the method
-     * @param paramTypes  the parameter types
-     * @param args  the arguments
-     * @return the transformer
-     * @throws IllegalArgumentException if the method name is null
-     * @throws IllegalArgumentException if the paramTypes and args don't match
-     */
-    public static Transformer invokerTransformer(String methodName, Class[] paramTypes, Object[] args){
-        return InvokerTransformer.getInstance(methodName, paramTypes, args);
-    }
-
-    /**
-     * Gets a transformer that returns a <code>java.lang.String</code>
-     * representation of the input object. This is achieved via the
-     * <code>toString</code> method, <code>null</code> returns 'null'.
-     * 
-     * @see org.apache.commons.collections.functors.StringValueTransformer
-     * 
-     * @return the transformer
-     */
-    public static Transformer stringValueTransformer() {
-        return StringValueTransformer.INSTANCE;
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/TreeBag.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/TreeBag.java
deleted file mode 100755
index 72dd68c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/TreeBag.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-/**
- * A {@link Bag} that is backed by a {@link TreeMap}. 
- * Order will be maintained among the unique representative
- * members.
- *
- * @deprecated Moved to bag subpackage and rewritten internally. Due to be removed in v4.0.
- * @since Commons Collections 2.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- * 
- * @author Chuck Burdick
- */
-public class TreeBag extends DefaultMapBag implements SortedBag {
-
-    /**
-     * Constructs an empty <code>TreeBag</code>.
-     */
-    public TreeBag() {
-        super(new TreeMap());
-    }
-
-    /**
-     * Constructs an empty {@link Bag} that maintains order on its unique
-     * representative members according to the given {@link Comparator}.
-     * 
-     * @param comparator  the comparator to use
-     */
-    public TreeBag(Comparator comparator) {
-        super(new TreeMap(comparator));
-    }
-
-    /**
-     * Constructs a {@link Bag} containing all the members of the given
-     * collection.
-     * 
-     * @param coll  the collection to copy into the bag
-     */
-    public TreeBag(Collection coll) {
-        this();
-        addAll(coll);
-    }
-
-    public Object first() {
-        return ((SortedMap) getMap()).firstKey();
-    }
-
-    public Object last() {
-        return ((SortedMap) getMap()).lastKey();
-    }
-
-    public Comparator comparator() {
-        return ((SortedMap) getMap()).comparator();
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/UnboundedFifoBuffer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/UnboundedFifoBuffer.java
deleted file mode 100755
index a695f79..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/UnboundedFifoBuffer.java
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-import java.util.AbstractCollection;
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-/**
- * UnboundedFifoBuffer is a very efficient buffer implementation.
- * According to performance testing, it exhibits a constant access time, but it
- * also outperforms ArrayList when used for the same purpose.
- * <p>
- * The removal order of an <code>UnboundedFifoBuffer</code> is based on the insertion
- * order; elements are removed in the same order in which they were added.
- * The iteration order is the same as the removal order.
- * <p>
- * The {@link #remove()} and {@link #get()} operations perform in constant time.
- * The {@link #add(Object)} operation performs in amortized constant time.  All
- * other operations perform in linear time or worse.
- * <p>
- * Note that this implementation is not synchronized.  The following can be
- * used to provide synchronized access to your <code>UnboundedFifoBuffer</code>:
- * <pre>
- *   Buffer fifo = BufferUtils.synchronizedBuffer(new UnboundedFifoBuffer());
- * </pre>
- * <p>
- * This buffer prevents null objects from being added.
- * 
- * @deprecated Moved to buffer subpackage. Due to be removed in v4.0.
- * @since Commons Collections 2.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:18 $
- *
- * @author Avalon
- * @author Federico Barbieri
- * @author Berin Loritsch
- * @author Paul Jack
- * @author Stephen Colebourne
- * @author Andreas Schlosser
- */
-public class UnboundedFifoBuffer extends AbstractCollection implements Buffer {
-    
-    protected Object[] m_buffer;
-    protected int m_head;
-    protected int m_tail;
-
-    /**
-     * Constructs an UnboundedFifoBuffer with the default number of elements.
-     * It is exactly the same as performing the following:
-     *
-     * <pre>
-     *   new UnboundedFifoBuffer(32);
-     * </pre>
-     */
-    public UnboundedFifoBuffer() {
-        this(32);
-    }
-
-    /**
-     * Constructs an UnboundedFifoBuffer with the specified number of elements.
-     * The integer must be a positive integer.
-     * 
-     * @param initialSize  the initial size of the buffer
-     * @throws IllegalArgumentException  if the size is less than 1
-     */
-    public UnboundedFifoBuffer(int initialSize) {
-        if (initialSize <= 0) {
-            throw new IllegalArgumentException("The size must be greater than 0");
-        }
-        m_buffer = new Object[initialSize + 1];
-        m_head = 0;
-        m_tail = 0;
-    }
-
-    /**
-     * Returns the number of elements stored in the buffer.
-     *
-     * @return this buffer's size
-     */
-    public int size() {
-        int size = 0;
-
-        if (m_tail < m_head) {
-            size = m_buffer.length - m_head + m_tail;
-        } else {
-            size = m_tail - m_head;
-        }
-
-        return size;
-    }
-
-    /**
-     * Returns true if this buffer is empty; false otherwise.
-     *
-     * @return true if this buffer is empty
-     */
-    public boolean isEmpty() {
-        return (size() == 0);
-    }
-
-    /**
-     * Adds the given element to this buffer.
-     *
-     * @param obj  the element to add
-     * @return true, always
-     * @throws NullPointerException  if the given element is null
-     * @throws BufferOverflowException  if this buffer is full
-     */
-    public boolean add(final Object obj) {
-        if (obj == null) {
-            throw new NullPointerException("Attempted to add null object to buffer");
-        }
-
-        if (size() + 1 >= m_buffer.length) {
-            Object[] tmp = new Object[((m_buffer.length - 1) * 2) + 1];
-
-            int j = 0;
-            for (int i = m_head; i != m_tail;) {
-                tmp[j] = m_buffer[i];
-                m_buffer[i] = null;
-
-                j++;
-                i++;
-                if (i == m_buffer.length) {
-                    i = 0;
-                }
-            }
-
-            m_buffer = tmp;
-            m_head = 0;
-            m_tail = j;
-        }
-
-        m_buffer[m_tail] = obj;
-        m_tail++;
-        if (m_tail >= m_buffer.length) {
-            m_tail = 0;
-        }
-        return true;
-    }
-
-    /**
-     * Returns the next object in the buffer.
-     *
-     * @return the next object in the buffer
-     * @throws BufferUnderflowException  if this buffer is empty
-     */
-    public Object get() {
-        if (isEmpty()) {
-            throw new BufferUnderflowException("The buffer is already empty");
-        }
-
-        return m_buffer[m_head];
-    }
-
-    /**
-     * Removes the next object from the buffer
-     *
-     * @return the removed object
-     * @throws BufferUnderflowException  if this buffer is empty
-     */
-    public Object remove() {
-        if (isEmpty()) {
-            throw new BufferUnderflowException("The buffer is already empty");
-        }
-
-        Object element = m_buffer[m_head];
-
-        if (null != element) {
-            m_buffer[m_head] = null;
-
-            m_head++;
-            if (m_head >= m_buffer.length) {
-                m_head = 0;
-            }
-        }
-
-        return element;
-    }
-
-    /**
-     * Increments the internal index.
-     * 
-     * @param index  the index to increment
-     * @return the updated index
-     */
-    private int increment(int index) {
-        index++;
-        if (index >= m_buffer.length) {
-            index = 0;
-        }
-        return index;
-    }
-
-    /**
-     * Decrements the internal index.
-     * 
-     * @param index  the index to decrement
-     * @return the updated index
-     */
-    private int decrement(int index) {
-        index--;
-        if (index < 0) {
-            index = m_buffer.length - 1;
-        }
-        return index;
-    }
-
-    /**
-     * Returns an iterator over this buffer's elements.
-     *
-     * @return an iterator over this buffer's elements
-     */
-    public Iterator iterator() {
-        return new Iterator() {
-
-            private int index = m_head;
-            private int lastReturnedIndex = -1;
-
-            public boolean hasNext() {
-                return index != m_tail;
-
-            }
-
-            public Object next() {
-                if (!hasNext())
-                    throw new NoSuchElementException();
-                lastReturnedIndex = index;
-                index = increment(index);
-                return m_buffer[lastReturnedIndex];
-            }
-
-            public void remove() {
-                if (lastReturnedIndex == -1)
-                    throw new IllegalStateException();
-
-                // First element can be removed quickly
-                if (lastReturnedIndex == m_head) {
-                    UnboundedFifoBuffer.this.remove();
-                    lastReturnedIndex = -1;
-                    return;
-                }
-
-                // Other elements require us to shift the subsequent elements
-                int i = increment(lastReturnedIndex);
-                while (i != m_tail) {
-                    m_buffer[decrement(i)] = m_buffer[i];
-                    i = increment(i);
-                }
-
-                lastReturnedIndex = -1;
-                m_tail = decrement(m_tail);
-                m_buffer[m_tail] = null;
-                index = decrement(index);
-            }
-
-        };
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/Unmodifiable.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/Unmodifiable.java
deleted file mode 100755
index 89fa4f6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/Unmodifiable.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections;
-
-/**
- * Marker interface for collections, maps and iterators that are unmodifiable.
- * <p>
- * This interface enables testing such as:
- * <pre>
- * if (coll instanceof Unmodifiable) {
- *   coll = new ArrayList(coll);
- * }
- * // now we know coll is modifiable
- * </pre>
- * Of course all this only works if you use the Unmodifiable classes defined
- * in this library. If you use the JDK unmodifiable class via java util Collections
- * then the interface won't be there.
- *  
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:19 $
- *
- * @author Stephen Colebourne
- */
-public interface Unmodifiable {
-    // marker interface - no methods to implement
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/AbstractBagDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/AbstractBagDecorator.java
deleted file mode 100755
index 2d131b6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/AbstractBagDecorator.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bag;
-
-import java.util.Set;
-
-import org.apache.commons.collections.Bag;
-import org.apache.commons.collections.collection.AbstractCollectionDecorator;
-
-/**
- * Decorates another <code>Bag</code> to provide additional behaviour.
- * <p>
- * Methods are forwarded directly to the decorated bag.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $
- * 
- * @author Stephen Colebourne
- */
-public abstract class AbstractBagDecorator
-        extends AbstractCollectionDecorator implements Bag {
-
-    /**
-     * Constructor only used in deserialization, do not use otherwise.
-     * @since Commons Collections 3.1
-     */
-    protected AbstractBagDecorator() {
-        super();
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @throws IllegalArgumentException if list is null
-     */
-    protected AbstractBagDecorator(Bag bag) {
-        super(bag);
-    }
-
-    /**
-     * Gets the bag being decorated.
-     * 
-     * @return the decorated bag
-     */
-    protected Bag getBag() {
-        return (Bag) getCollection();
-    }
-
-    //-----------------------------------------------------------------------
-    public int getCount(Object object) {
-        return getBag().getCount(object);
-    }
-
-    public boolean add(Object object, int count) {
-        return getBag().add(object, count);
-    }
-
-    public boolean remove(Object object, int count) {
-        return getBag().remove(object, count);
-    }
-
-    public Set uniqueSet() {
-        return getBag().uniqueSet();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/AbstractMapBag.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/AbstractMapBag.java
deleted file mode 100755
index 965d76e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/AbstractMapBag.java
+++ /dev/null
@@ -1,592 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bag;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.lang.reflect.Array;
-import java.util.Collection;
-import java.util.ConcurrentModificationException;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.collections.Bag;
-import org.apache.commons.collections.set.UnmodifiableSet;
-
-/**
- * Abstract implementation of the {@link Bag} interface to simplify the creation
- * of subclass implementations.
- * <p>
- * Subclasses specify a Map implementation to use as the internal storage.
- * The map will be used to map bag elements to a number; the number represents
- * the number of occurrences of that element in the bag.
- *
- * @since Commons Collections 3.0 (previously DefaultMapBag v2.0)
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $
- * 
- * @author Chuck Burdick
- * @author Michael A. Smith
- * @author Stephen Colebourne
- * @author Janek Bogucki
- * @author Steve Clark
- */
-public abstract class AbstractMapBag implements Bag {
-    
-    /** The map to use to store the data */
-    private transient Map map;
-    /** The current total size of the bag */
-    private int size;
-    /** The modification count for fail fast iterators */
-    private transient int modCount;
-    /** The modification count for fail fast iterators */
-    private transient Set uniqueSet;
-
-    /**
-     * Constructor needed for subclass serialisation.
-     * 
-     */
-    protected AbstractMapBag() {
-        super();
-    }
-
-    /**
-     * Constructor that assigns the specified Map as the backing store.
-     * The map must be empty and non-null.
-     * 
-     * @param map  the map to assign
-     */
-    protected AbstractMapBag(Map map) {
-        super();
-        this.map = map;
-    }
-
-    /**
-     * Utility method for implementations to access the map that backs
-     * this bag. Not intended for interactive use outside of subclasses.
-     * 
-     * @return the map being used by the Bag
-     */
-    protected Map getMap() {
-        return map;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns the number of elements in this bag.
-     *
-     * @return current size of the bag
-     */
-    public int size() {
-        return size;
-    }
-
-    /**
-     * Returns true if the underlying map is empty.
-     *
-     * @return true if bag is empty
-     */
-    public boolean isEmpty() {
-        return map.isEmpty();
-    }
-
-    /**
-     * Returns the number of occurrence of the given element in this bag
-     * by looking up its count in the underlying map.
-     *
-     * @param object  the object to search for
-     * @return the number of occurrences of the object, zero if not found
-     */
-    public int getCount(Object object) {
-        MutableInteger count = (MutableInteger) map.get(object);
-        if (count != null) {
-            return count.value;
-        }
-        return 0;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Determines if the bag contains the given element by checking if the
-     * underlying map contains the element as a key.
-     *
-     * @param object  the object to search for
-     * @return true if the bag contains the given element
-     */
-    public boolean contains(Object object) {
-        return map.containsKey(object);
-    }
-
-    /**
-     * Determines if the bag contains the given elements.
-     * 
-     * @param coll  the collection to check against
-     * @return <code>true</code> if the Bag contains all the collection
-     */
-    public boolean containsAll(Collection coll) {
-        if (coll instanceof Bag) {
-            return containsAll((Bag) coll);
-        }
-        return containsAll(new HashBag(coll));
-    }
-
-    /**
-     * Returns <code>true</code> if the bag contains all elements in
-     * the given collection, respecting cardinality.
-     * 
-     * @param other  the bag to check against
-     * @return <code>true</code> if the Bag contains all the collection
-     */
-    boolean containsAll(Bag other) {
-        boolean result = true;
-        Iterator it = other.uniqueSet().iterator();
-        while (it.hasNext()) {
-            Object current = it.next();
-            boolean contains = getCount(current) >= other.getCount(current);
-            result = result && contains;
-        }
-        return result;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets an iterator over the bag elements.
-     * Elements present in the Bag more than once will be returned repeatedly.
-     * 
-     * @return the iterator
-     */
-    public Iterator iterator() {
-        return new BagIterator(this);
-    }
-
-    /**
-     * Inner class iterator for the Bag.
-     */
-    static class BagIterator implements Iterator {
-        private AbstractMapBag parent;
-        private Iterator entryIterator;
-        private Map.Entry current;
-        private int itemCount;
-        private final int mods;
-        private boolean canRemove;
-
-        /**
-         * Constructor.
-         * 
-         * @param parent  the parent bag
-         */
-        public BagIterator(AbstractMapBag parent) {
-            this.parent = parent;
-            this.entryIterator = parent.map.entrySet().iterator();
-            this.current = null;
-            this.mods = parent.modCount;
-            this.canRemove = false;
-        }
-
-        public boolean hasNext() {
-            return (itemCount > 0 || entryIterator.hasNext());
-        }
-
-        public Object next() {
-            if (parent.modCount != mods) {
-                throw new ConcurrentModificationException();
-            }
-            if (itemCount == 0) {
-                current = (Map.Entry) entryIterator.next();
-                itemCount = ((MutableInteger) current.getValue()).value;
-            }
-            canRemove = true;
-            itemCount--;
-            return current.getKey();
-        }
-
-        public void remove() {
-            if (parent.modCount != mods) {
-                throw new ConcurrentModificationException();
-            }
-            if (canRemove == false) {
-                throw new IllegalStateException();
-            }
-            MutableInteger mut = (MutableInteger) current.getValue();
-            if (mut.value > 1) {
-                mut.value--;
-            } else {
-                entryIterator.remove();
-            }
-            parent.size--;
-            canRemove = false;
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Adds a new element to the bag, incrementing its count in the underlying map.
-     *
-     * @param object  the object to add
-     * @return <code>true</code> if the object was not already in the <code>uniqueSet</code>
-     */
-    public boolean add(Object object) {
-        return add(object, 1);
-    }
-
-    /**
-     * Adds a new element to the bag, incrementing its count in the map.
-     *
-     * @param object  the object to search for
-     * @param nCopies  the number of copies to add
-     * @return <code>true</code> if the object was not already in the <code>uniqueSet</code>
-     */
-    public boolean add(Object object, int nCopies) {
-        modCount++;
-        if (nCopies > 0) {
-            MutableInteger mut = (MutableInteger) map.get(object);
-            size += nCopies;
-            if (mut == null) {
-                map.put(object, new MutableInteger(nCopies));
-                return true;
-            } else {
-                mut.value += nCopies;
-                return false;
-            }
-        } else {
-            return false;
-        }
-    }
-
-    /**
-     * Invokes {@link #add(Object)} for each element in the given collection.
-     *
-     * @param coll  the collection to add
-     * @return <code>true</code> if this call changed the bag
-     */
-    public boolean addAll(Collection coll) {
-        boolean changed = false;
-        Iterator i = coll.iterator();
-        while (i.hasNext()) {
-            boolean added = add(i.next());
-            changed = changed || added;
-        }
-        return changed;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Clears the bag by clearing the underlying map.
-     */
-    public void clear() {
-        modCount++;
-        map.clear();
-        size = 0;
-    }
-
-    /**
-     * Removes all copies of the specified object from the bag.
-     * 
-     * @param object  the object to remove
-     * @return true if the bag changed
-     */
-    public boolean remove(Object object) {
-        MutableInteger mut = (MutableInteger) map.get(object);
-        if (mut == null) {
-            return false;
-        }
-        modCount++;
-        map.remove(object);
-        size -= mut.value;
-        return true;
-    }
-
-    /**
-     * Removes a specified number of copies of an object from the bag.
-     * 
-     * @param object  the object to remove
-     * @param nCopies  the number of copies to remove
-     * @return true if the bag changed
-     */
-    public boolean remove(Object object, int nCopies) {
-        MutableInteger mut = (MutableInteger) map.get(object);
-        if (mut == null) {
-            return false;
-        }
-        if (nCopies <= 0) {
-            return false;
-        }
-        modCount++;
-        if (nCopies < mut.value) {
-            mut.value -= nCopies;
-            size -= nCopies;
-        } else {
-            map.remove(object);
-            size -= mut.value;
-        }
-        return true;
-    }
-
-    /**
-     * Removes objects from the bag according to their count in the specified collection.
-     * 
-     * @param coll  the collection to use
-     * @return true if the bag changed
-     */
-    public boolean removeAll(Collection coll) {
-        boolean result = false;
-        if (coll != null) {
-            Iterator i = coll.iterator();
-            while (i.hasNext()) {
-                boolean changed = remove(i.next(), 1);
-                result = result || changed;
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Remove any members of the bag that are not in the given
-     * bag, respecting cardinality.
-     *
-     * @param coll  the collection to retain
-     * @return true if this call changed the collection
-     */
-    public boolean retainAll(Collection coll) {
-        if (coll instanceof Bag) {
-            return retainAll((Bag) coll);
-        }
-        return retainAll(new HashBag(coll));
-    }
-
-    /**
-     * Remove any members of the bag that are not in the given
-     * bag, respecting cardinality.
-     * @see #retainAll(Collection)
-     * 
-     * @param other  the bag to retain
-     * @return <code>true</code> if this call changed the collection
-     */
-    boolean retainAll(Bag other) {
-        boolean result = false;
-        Bag excess = new HashBag();
-        Iterator i = uniqueSet().iterator();
-        while (i.hasNext()) {
-            Object current = i.next();
-            int myCount = getCount(current);
-            int otherCount = other.getCount(current);
-            if (1 <= otherCount && otherCount <= myCount) {
-                excess.add(current, myCount - otherCount);
-            } else {
-                excess.add(current, myCount);
-            }
-        }
-        if (!excess.isEmpty()) {
-            result = removeAll(excess);
-        }
-        return result;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Mutable integer class for storing the data.
-     */
-    protected static class MutableInteger {
-        /** The value of this mutable. */
-        protected int value;
-        
-        /**
-         * Constructor.
-         * @param value  the initial value
-         */
-        MutableInteger(int value) {
-            this.value = value;
-        }
-        
-        public boolean equals(Object obj) {
-            if (obj instanceof MutableInteger == false) {
-                return false;
-            }
-            return ((MutableInteger) obj).value == value;
-        }
-
-        public int hashCode() {
-            return value;
-        }
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Returns an array of all of this bag's elements.
-     *
-     * @return an array of all of this bag's elements
-     */
-    public Object[] toArray() {
-        Object[] result = new Object[size()];
-        int i = 0;
-        Iterator it = map.keySet().iterator();
-        while (it.hasNext()) {
-            Object current = it.next();
-            for (int index = getCount(current); index > 0; index--) {
-                result[i++] = current;
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Returns an array of all of this bag's elements.
-     *
-     * @param array  the array to populate
-     * @return an array of all of this bag's elements
-     */
-    public Object[] toArray(Object[] array) {
-        int size = size();
-        if (array.length < size) {
-            array = (Object[]) Array.newInstance(array.getClass().getComponentType(), size);
-        }
-
-        int i = 0;
-        Iterator it = map.keySet().iterator();
-        while (it.hasNext()) {
-            Object current = it.next();
-            for (int index = getCount(current); index > 0; index--) {
-                array[i++] = current;
-            }
-        }
-        if (array.length > size) {
-            array[size] = null;
-        }
-        return array;
-    }
-
-    /**
-     * Returns an unmodifiable view of the underlying map's key set.
-     *
-     * @return the set of unique elements in this bag
-     */
-    public Set uniqueSet() {
-        if (uniqueSet == null) {
-            uniqueSet = UnmodifiableSet.decorate(map.keySet());
-        }
-        return uniqueSet;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the map out using a custom routine.
-     * @param out  the output stream
-     * @throws IOException
-     */
-    protected void doWriteObject(ObjectOutputStream out) throws IOException {
-        out.writeInt(map.size());
-        for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
-            Map.Entry entry = (Map.Entry) it.next();
-            out.writeObject(entry.getKey());
-            out.writeInt(((MutableInteger) entry.getValue()).value);
-        }
-    }
-
-    /**
-     * Read the map in using a custom routine.
-     * @param map  the map to use
-     * @param in  the input stream
-     * @throws IOException
-     * @throws ClassNotFoundException
-     */
-    protected void doReadObject(Map map, ObjectInputStream in) throws IOException, ClassNotFoundException {
-        this.map = map;
-        int entrySize = in.readInt();
-        for (int i = 0; i < entrySize; i++) {
-            Object obj = in.readObject();
-            int count = in.readInt();
-            map.put(obj, new MutableInteger(count));
-            size += count;
-        }
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Compares this Bag to another.
-     * This Bag equals another Bag if it contains the same number of occurrences of
-     * the same elements.
-     * 
-     * @param object  the Bag to compare to
-     * @return true if equal
-     */
-    public boolean equals(Object object) {
-        if (object == this) {
-            return true;
-        }
-        if (object instanceof Bag == false) {
-            return false;
-        }
-        Bag other = (Bag) object;
-        if (other.size() != size()) {
-            return false;
-        }
-        for (Iterator it = map.keySet().iterator(); it.hasNext();) {
-            Object element = it.next();
-            if (other.getCount(element) != getCount(element)) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Gets a hash code for the Bag compatible with the definition of equals.
-     * The hash code is defined as the sum total of a hash code for each element.
-     * The per element hash code is defined as
-     * <code>(e==null ? 0 : e.hashCode()) ^ noOccurances)</code>.
-     * This hash code is compatible with the Set interface.
-     * 
-     * @return the hash code of the Bag
-     */
-    public int hashCode() {
-        int total = 0;
-        for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
-            Map.Entry entry = (Map.Entry) it.next();
-            Object element = entry.getKey();
-            MutableInteger count = (MutableInteger) entry.getValue();
-            total += (element == null ? 0 : element.hashCode()) ^ count.value;
-        }
-        return total;
-    }
-
-    /**
-     * Implement a toString() method suitable for debugging.
-     * 
-     * @return a debugging toString
-     */
-    public String toString() {
-        if (size() == 0) {
-            return "[]";
-        }
-        StringBuffer buf = new StringBuffer();
-        buf.append('[');
-        Iterator it = uniqueSet().iterator();
-        while (it.hasNext()) {
-            Object current = it.next();
-            int count = getCount(current);
-            buf.append(count);
-            buf.append(':');
-            buf.append(current);
-            if (it.hasNext()) {
-                buf.append(',');
-            }
-        }
-        buf.append(']');
-        return buf.toString();
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/AbstractSortedBagDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/AbstractSortedBagDecorator.java
deleted file mode 100755
index 9230663..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/AbstractSortedBagDecorator.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bag;
-
-import java.util.Comparator;
-
-import org.apache.commons.collections.SortedBag;
-
-/**
- * Decorates another <code>SortedBag</code> to provide additional behaviour.
- * <p>
- * Methods are forwarded directly to the decorated bag.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $
- * 
- * @author Stephen Colebourne
- */
-public abstract class AbstractSortedBagDecorator
-        extends AbstractBagDecorator implements SortedBag {
-
-    /**
-     * Constructor only used in deserialization, do not use otherwise.
-     * @since Commons Collections 3.1
-     */
-    protected AbstractSortedBagDecorator() {
-        super();
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @throws IllegalArgumentException if list is null
-     */
-    protected AbstractSortedBagDecorator(SortedBag bag) {
-        super(bag);
-    }
-
-    /**
-     * Gets the bag being decorated.
-     * 
-     * @return the decorated bag
-     */
-    protected SortedBag getSortedBag() {
-        return (SortedBag) getCollection();
-    }
-
-    //-----------------------------------------------------------------------
-    public Object first() {
-        return getSortedBag().first();
-    }
-
-    public Object last() {
-        return getSortedBag().last();
-    }
-
-    public Comparator comparator() {
-        return getSortedBag().comparator();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/HashBag.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/HashBag.java
deleted file mode 100755
index 52200af..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/HashBag.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- *  Copyright 2002-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bag;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.HashMap;
-
-import org.apache.commons.collections.Bag;
-
-/**
- * Implements <code>Bag</code>, using a <code>HashMap</code> to provide the
- * data storage. This is the standard implementation of a bag.
- * <p>
- * A <code>Bag</code> stores each object in the collection together with a
- * count of occurrences. Extra methods on the interface allow multiple copies
- * of an object to be added or removed at once. It is important to read the
- * interface javadoc carefully as several methods violate the
- * <code>Collection</code> interface specification.
- *
- * @since Commons Collections 3.0 (previously in main package v2.0)
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $
- * 
- * @author Chuck Burdick
- * @author Stephen Colebourne
- */
-public class HashBag
-        extends AbstractMapBag implements Bag, Serializable {
-
-    /** Serial version lock */
-    private static final long serialVersionUID = -6561115435802554013L;
-    
-    /**
-     * Constructs an empty <code>HashBag</code>.
-     */
-    public HashBag() {
-        super(new HashMap());
-    }
-
-    /**
-     * Constructs a bag containing all the members of the given collection.
-     * 
-     * @param coll  a collection to copy into this bag
-     */
-    public HashBag(Collection coll) {
-        this();
-        addAll(coll);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the bag out using a custom routine.
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        super.doWriteObject(out);
-    }
-
-    /**
-     * Read the bag in using a custom routine.
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        super.doReadObject(new HashMap(), in);
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/PredicatedBag.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/PredicatedBag.java
deleted file mode 100755
index 6b9161c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/PredicatedBag.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bag;
-
-import java.util.Set;
-
-import org.apache.commons.collections.Bag;
-import org.apache.commons.collections.Predicate;
-import org.apache.commons.collections.collection.PredicatedCollection;
-
-/**
- * Decorates another <code>Bag</code> to validate that additions
- * match a specified predicate.
- * <p>
- * This bag exists to provide validation for the decorated bag.
- * It is normally created to decorate an empty bag.
- * If an object cannot be added to the bag, an IllegalArgumentException is thrown.
- * <p>
- * One usage would be to ensure that no null entries are added to the bag.
- * <pre>Bag bag = PredicatedBag.decorate(new HashBag(), NotNullPredicate.INSTANCE);</pre>
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $
- * 
- * @author Stephen Colebourne
- * @author Paul Jack
- */
-public class PredicatedBag
-        extends PredicatedCollection implements Bag {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -2575833140344736876L;
-
-    /**
-     * Factory method to create a predicated (validating) bag.
-     * <p>
-     * If there are any elements already in the bag being decorated, they
-     * are validated.
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @param predicate  the predicate to use for validation, must not be null
-     * @return a new predicated Bag
-     * @throws IllegalArgumentException if bag or predicate is null
-     * @throws IllegalArgumentException if the bag contains invalid elements
-     */
-    public static Bag decorate(Bag bag, Predicate predicate) {
-        return new PredicatedBag(bag, predicate);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * <p>
-     * If there are any elements already in the bag being decorated, they
-     * are validated.
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @param predicate  the predicate to use for validation, must not be null
-     * @throws IllegalArgumentException if bag or predicate is null
-     * @throws IllegalArgumentException if the bag contains invalid elements
-     */
-    protected PredicatedBag(Bag bag, Predicate predicate) {
-        super(bag, predicate);
-    }
-
-    /**
-     * Gets the decorated bag.
-     * 
-     * @return the decorated bag
-     */
-    protected Bag getBag() {
-        return (Bag) getCollection();
-    }
-    
-    //-----------------------------------------------------------------------
-    public boolean add(Object object, int count) {
-        validate(object);
-        return getBag().add(object, count);
-    }
-
-    public boolean remove(Object object, int count) {
-        return getBag().remove(object, count);
-    }
-
-    public Set uniqueSet() {
-        return getBag().uniqueSet();
-    }
-
-    public int getCount(Object object) {
-        return getBag().getCount(object);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/PredicatedSortedBag.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/PredicatedSortedBag.java
deleted file mode 100755
index 43a8ac9..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/PredicatedSortedBag.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bag;
-
-import java.util.Comparator;
-
-import org.apache.commons.collections.Predicate;
-import org.apache.commons.collections.SortedBag;
-
-/**
- * Decorates another <code>SortedBag</code> to validate that additions
- * match a specified predicate.
- * <p>
- * This bag exists to provide validation for the decorated bag.
- * It is normally created to decorate an empty bag.
- * If an object cannot be added to the bag, an IllegalArgumentException is thrown.
- * <p>
- * One usage would be to ensure that no null entries are added to the bag.
- * <pre>SortedBag bag = PredicatedSortedBag.decorate(new TreeBag(), NotNullPredicate.INSTANCE);</pre>
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $
- * 
- * @author Stephen Colebourne
- * @author Paul Jack
- */
-public class PredicatedSortedBag
-        extends PredicatedBag implements SortedBag {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 3448581314086406616L;
-
-    /**
-     * Factory method to create a predicated (validating) bag.
-     * <p>
-     * If there are any elements already in the bag being decorated, they
-     * are validated.
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @param predicate  the predicate to use for validation, must not be null
-     * @return a new predicated SortedBag
-     * @throws IllegalArgumentException if bag or predicate is null
-     * @throws IllegalArgumentException if the bag contains invalid elements
-     */
-    public static SortedBag decorate(SortedBag bag, Predicate predicate) {
-        return new PredicatedSortedBag(bag, predicate);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * <p>
-     * If there are any elements already in the bag being decorated, they
-     * are validated.
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @param predicate  the predicate to use for validation, must not be null
-     * @throws IllegalArgumentException if bag or predicate is null
-     * @throws IllegalArgumentException if the bag contains invalid elements
-     */
-    protected PredicatedSortedBag(SortedBag bag, Predicate predicate) {
-        super(bag, predicate);
-    }
-
-    /**
-     * Gets the decorated sorted bag.
-     * 
-     * @return the decorated bag
-     */
-    protected SortedBag getSortedBag() {
-        return (SortedBag) getCollection();
-    }
-    
-    //-----------------------------------------------------------------------
-    public Object first() {
-        return getSortedBag().first();
-    }
-
-    public Object last() {
-        return getSortedBag().last();
-    }
-
-    public Comparator comparator() {
-        return getSortedBag().comparator();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/SynchronizedBag.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/SynchronizedBag.java
deleted file mode 100755
index 7d75d44..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/SynchronizedBag.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bag;
-
-import java.util.Set;
-
-import org.apache.commons.collections.Bag;
-import org.apache.commons.collections.collection.SynchronizedCollection;
-import org.apache.commons.collections.set.SynchronizedSet;
-
-/**
- * Decorates another <code>Bag</code> to synchronize its behaviour
- * for a multi-threaded environment.
- * <p>
- * Methods are synchronized, then forwarded to the decorated bag.
- * Iterators must be separately synchronized around the loop.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $
- * 
- * @author Stephen Colebourne
- */
-public class SynchronizedBag
-        extends SynchronizedCollection implements Bag {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 8084674570753837109L;
-
-    /**
-     * Factory method to create a synchronized bag.
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @return a new synchronized Bag
-     * @throws IllegalArgumentException if bag is null
-     */
-    public static Bag decorate(Bag bag) {
-        return new SynchronizedBag(bag);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @throws IllegalArgumentException if bag is null
-     */
-    protected SynchronizedBag(Bag bag) {
-        super(bag);
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @param lock  the lock to use, must not be null
-     * @throws IllegalArgumentException if bag is null
-     */
-    protected SynchronizedBag(Bag bag, Object lock) {
-        super(bag, lock);
-    }
-
-    /**
-     * Gets the bag being decorated.
-     * 
-     * @return the decorated bag
-     */
-    protected Bag getBag() {
-        return (Bag) collection;
-    }
-    
-    //-----------------------------------------------------------------------
-    public boolean add(Object object, int count) {
-        synchronized (lock) {
-            return getBag().add(object, count);
-        }
-    }
-
-    public boolean remove(Object object, int count) {
-        synchronized (lock) {
-            return getBag().remove(object, count);
-        }
-    }
-
-    public Set uniqueSet() {
-        synchronized (lock) {
-            Set set = getBag().uniqueSet();
-            return new SynchronizedBagSet(set, lock);
-        }
-    }
-
-    public int getCount(Object object) {
-        synchronized (lock) {
-            return getBag().getCount(object);
-        }
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Synchronized Set for the Bag class.
-     */
-    class SynchronizedBagSet extends SynchronizedSet {
-        /**
-         * Constructor.
-         * @param set  the set to decorate
-         * @param lock  the lock to use, shared with the bag
-         */
-        SynchronizedBagSet(Set set, Object lock) {
-            super(set, lock);
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/SynchronizedSortedBag.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/SynchronizedSortedBag.java
deleted file mode 100755
index ed00772..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/SynchronizedSortedBag.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bag;
-
-import java.util.Comparator;
-
-import org.apache.commons.collections.Bag;
-import org.apache.commons.collections.SortedBag;
-
-/**
- * Decorates another <code>SortedBag</code> to synchronize its behaviour
- * for a multi-threaded environment.
- * <p>
- * Methods are synchronized, then forwarded to the decorated bag.
- * Iterators must be separately synchronized around the loop.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $
- * 
- * @author Stephen Colebourne
- */
-public class SynchronizedSortedBag
-        extends SynchronizedBag implements SortedBag {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 722374056718497858L;
-
-    /**
-     * Factory method to create a synchronized sorted bag.
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @return a new synchronized SortedBag
-     * @throws IllegalArgumentException if bag is null
-     */
-    public static SortedBag decorate(SortedBag bag) {
-        return new SynchronizedSortedBag(bag);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @throws IllegalArgumentException if bag is null
-     */
-    protected SynchronizedSortedBag(SortedBag bag) {
-        super(bag);
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @param lock  the lock to use, must not be null
-     * @throws IllegalArgumentException if bag is null
-     */
-    protected SynchronizedSortedBag(Bag bag, Object lock) {
-        super(bag, lock);
-    }
-
-    /**
-     * Gets the bag being decorated.
-     * 
-     * @return the decorated bag
-     */
-    protected SortedBag getSortedBag() {
-        return (SortedBag) collection;
-    }
-    
-    //-----------------------------------------------------------------------
-    public synchronized Object first() {
-        synchronized (lock) {
-            return getSortedBag().first();
-        }
-    }
-
-    public synchronized Object last() {
-        synchronized (lock) {
-            return getSortedBag().last();
-        }
-    }
-
-    public synchronized Comparator comparator() {
-        synchronized (lock) {
-            return getSortedBag().comparator();
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/TransformedBag.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/TransformedBag.java
deleted file mode 100755
index f70c9d8..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/TransformedBag.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bag;
-
-import java.util.Set;
-
-import org.apache.commons.collections.Bag;
-import org.apache.commons.collections.Transformer;
-import org.apache.commons.collections.collection.TransformedCollection;
-import org.apache.commons.collections.set.TransformedSet;
-
-/**
- * Decorates another <code>Bag</code> to transform objects that are added.
- * <p>
- * The add methods are affected by this class.
- * Thus objects must be removed or searched for using their transformed form.
- * For example, if the transformation converts Strings to Integers, you must
- * use the Integer form to remove objects.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $
- * 
- * @author Stephen Colebourne
- */
-public class TransformedBag
-        extends TransformedCollection implements Bag {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 5421170911299074185L;
-
-    /**
-     * Factory method to create a transforming bag.
-     * <p>
-     * If there are any elements already in the bag being decorated, they
-     * are NOT transformed.
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @param transformer  the transformer to use for conversion, must not be null
-     * @return a new transformed Bag
-     * @throws IllegalArgumentException if bag or transformer is null
-     */
-    public static Bag decorate(Bag bag, Transformer transformer) {
-        return new TransformedBag(bag, transformer);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * <p>
-     * If there are any elements already in the bag being decorated, they
-     * are NOT transformed.
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @param transformer  the transformer to use for conversion, must not be null
-     * @throws IllegalArgumentException if bag or transformer is null
-     */
-    protected TransformedBag(Bag bag, Transformer transformer) {
-        super(bag, transformer);
-    }
-
-    /**
-     * Gets the decorated bag.
-     * 
-     * @return the decorated bag
-     */
-    protected Bag getBag() {
-        return (Bag) collection;
-    }
-
-    //-----------------------------------------------------------------------
-    public int getCount(Object object) {
-        return getBag().getCount(object);
-    }
-
-    public boolean remove(Object object, int nCopies) {
-        return getBag().remove(object, nCopies);
-    }
-
-    //-----------------------------------------------------------------------
-    public boolean add(Object object, int nCopies) {
-        object = transform(object);
-        return getBag().add(object, nCopies);
-    }
-
-    public Set uniqueSet() {
-        Set set = getBag().uniqueSet();
-        return TransformedSet.decorate(set, transformer);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/TransformedSortedBag.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/TransformedSortedBag.java
deleted file mode 100755
index ac76eba..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/TransformedSortedBag.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bag;
-
-import java.util.Comparator;
-
-import org.apache.commons.collections.SortedBag;
-import org.apache.commons.collections.Transformer;
-
-/**
- * Decorates another <code>SortedBag</code> to transform objects that are added.
- * <p>
- * The add methods are affected by this class.
- * Thus objects must be removed or searched for using their transformed form.
- * For example, if the transformation converts Strings to Integers, you must
- * use the Integer form to remove objects.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $
- * 
- * @author Stephen Colebourne
- */
-public class TransformedSortedBag
-        extends TransformedBag implements SortedBag {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -251737742649401930L;
-
-    /**
-     * Factory method to create a transforming sorted bag.
-     * <p>
-     * If there are any elements already in the bag being decorated, they
-     * are NOT transformed.
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @param transformer  the transformer to use for conversion, must not be null
-     * @return a new transformed SortedBag
-     * @throws IllegalArgumentException if bag or transformer is null
-     */
-    public static SortedBag decorate(SortedBag bag, Transformer transformer) {
-        return new TransformedSortedBag(bag, transformer);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * <p>
-     * If there are any elements already in the bag being decorated, they
-     * are NOT transformed.
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @param transformer  the transformer to use for conversion, must not be null
-     * @throws IllegalArgumentException if bag or transformer is null
-     */
-    protected TransformedSortedBag(SortedBag bag, Transformer transformer) {
-        super(bag, transformer);
-    }
-
-    /**
-     * Gets the decorated bag.
-     * 
-     * @return the decorated bag
-     */
-    protected SortedBag getSortedBag() {
-        return (SortedBag) collection;
-    }
-
-    //-----------------------------------------------------------------------
-    public Object first() {
-        return getSortedBag().first();
-    }
-
-    public Object last() {
-        return getSortedBag().last();
-    }
-
-    public Comparator comparator() {
-        return getSortedBag().comparator();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/TreeBag.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/TreeBag.java
deleted file mode 100755
index 73d84cd..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/TreeBag.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- *  Copyright 2002-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bag;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-import org.apache.commons.collections.SortedBag;
-
-/**
- * Implements <code>SortedBag</code>, using a <code>TreeMap</code> to provide
- * the data storage. This is the standard implementation of a sorted bag.
- * <p>
- * Order will be maintained among the bag members and can be viewed through the
- * iterator.
- * <p>
- * A <code>Bag</code> stores each object in the collection together with a
- * count of occurrences. Extra methods on the interface allow multiple copies
- * of an object to be added or removed at once. It is important to read the
- * interface javadoc carefully as several methods violate the
- * <code>Collection</code> interface specification.
- *
- * @since Commons Collections 3.0 (previously in main package v2.0)
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $
- * 
- * @author Chuck Burdick
- * @author Stephen Colebourne
- */
-public class TreeBag
-        extends AbstractMapBag implements SortedBag, Serializable {
-
-    /** Serial version lock */
-    private static final long serialVersionUID = -7740146511091606676L;
-    
-    /**
-     * Constructs an empty <code>TreeBag</code>.
-     */
-    public TreeBag() {
-        super(new TreeMap());
-    }
-
-    /**
-     * Constructs an empty bag that maintains order on its unique
-     * representative members according to the given {@link Comparator}.
-     * 
-     * @param comparator  the comparator to use
-     */
-    public TreeBag(Comparator comparator) {
-        super(new TreeMap(comparator));
-    }
-
-    /**
-     * Constructs a <code>TreeBag</code> containing all the members of the
-     * specified collection.
-     * 
-     * @param coll  the collection to copy into the bag
-     */
-    public TreeBag(Collection coll) {
-        this();
-        addAll(coll);
-    }
-
-    //-----------------------------------------------------------------------
-    public Object first() {
-        return ((SortedMap) getMap()).firstKey();
-    }
-
-    public Object last() {
-        return ((SortedMap) getMap()).lastKey();
-    }
-
-    public Comparator comparator() {
-        return ((SortedMap) getMap()).comparator();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the bag out using a custom routine.
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeObject(comparator());
-        super.doWriteObject(out);
-    }
-
-    /**
-     * Read the bag in using a custom routine.
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        Comparator comp = (Comparator) in.readObject();
-        super.doReadObject(new TreeMap(comp), in);
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/TypedBag.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/TypedBag.java
deleted file mode 100755
index a61e226..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/TypedBag.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bag;
-
-import org.apache.commons.collections.Bag;
-import org.apache.commons.collections.functors.InstanceofPredicate;
-
-/**
- * Decorates another <code>Bag</code> to validate that elements added
- * are of a specific type.
- * <p>
- * The validation of additions is performed via an instanceof test against 
- * a specified <code>Class</code>. If an object cannot be added to the
- * collection, an IllegalArgumentException is thrown.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $
- * 
- * @author Stephen Colebourne
- * @author Matthew Hawthorne
- */
-public class TypedBag {
-
-    /**
-     * Factory method to create a typed bag.
-     * <p>
-     * If there are any elements already in the bag being decorated, they
-     * are validated.
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @param type  the type to allow into the bag, must not be null
-     * @return a new typed Bag
-     * @throws IllegalArgumentException if bag or type is null
-     * @throws IllegalArgumentException if the bag contains invalid elements
-     */
-    public static Bag decorate(Bag bag, Class type) {
-        return new PredicatedBag(bag, InstanceofPredicate.getInstance(type));
-    }
-
-    /**
-     * Restrictive constructor.
-     */
-    protected TypedBag() {
-        super();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/TypedSortedBag.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/TypedSortedBag.java
deleted file mode 100755
index 2624674..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/TypedSortedBag.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bag;
-
-import org.apache.commons.collections.SortedBag;
-import org.apache.commons.collections.functors.InstanceofPredicate;
-
-/**
- * Decorates another <code>SortedBag</code> to validate that elements added
- * are of a specific type.
- * <p>
- * The validation of additions is performed via an instanceof test against 
- * a specified <code>Class</code>. If an object cannot be added to the
- * collection, an IllegalArgumentException is thrown.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $
- * 
- * @author Stephen Colebourne
- * @author Matthew Hawthorne
- */
-public class TypedSortedBag {
-
-    /**
-     * Factory method to create a typed sorted bag.
-     * <p>
-     * If there are any elements already in the bag being decorated, they
-     * are validated.
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @param type  the type to allow into the bag, must not be null
-     * @return a new transformed SortedBag
-     * @throws IllegalArgumentException if bag or type is null
-     * @throws IllegalArgumentException if the bag contains invalid elements
-     */
-    public static SortedBag decorate(SortedBag bag, Class type) {
-        return new PredicatedSortedBag(bag, InstanceofPredicate.getInstance(type));
-    }
-
-    /**
-     * Restrictive constructor.
-     */
-    protected TypedSortedBag() {
-        super();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/UnmodifiableBag.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/UnmodifiableBag.java
deleted file mode 100755
index f0695d3..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/UnmodifiableBag.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bag;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.apache.commons.collections.Bag;
-import org.apache.commons.collections.Unmodifiable;
-import org.apache.commons.collections.iterators.UnmodifiableIterator;
-import org.apache.commons.collections.set.UnmodifiableSet;
-
-/**
- * Decorates another <code>Bag</code> to ensure it can't be altered.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $
- * 
- * @author Stephen Colebourne
- */
-public final class UnmodifiableBag
-        extends AbstractBagDecorator implements Unmodifiable, Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -1873799975157099624L;
-
-    /**
-     * Factory method to create an unmodifiable bag.
-     * <p>
-     * If the bag passed in is already unmodifiable, it is returned.
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @return an unmodifiable Bag
-     * @throws IllegalArgumentException if bag is null
-     */
-    public static Bag decorate(Bag bag) {
-        if (bag instanceof Unmodifiable) {
-            return bag;
-        }
-        return new UnmodifiableBag(bag);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @throws IllegalArgumentException if bag is null
-     */
-    private UnmodifiableBag(Bag bag) {
-        super(bag);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the collection out using a custom routine.
-     * 
-     * @param out  the output stream
-     * @throws IOException
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeObject(collection);
-    }
-
-    /**
-     * Read the collection in using a custom routine.
-     * 
-     * @param in  the input stream
-     * @throws IOException
-     * @throws ClassNotFoundException
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        collection = (Collection) in.readObject();
-    }
-
-    //-----------------------------------------------------------------------
-    public Iterator iterator() {
-        return UnmodifiableIterator.decorate(getCollection().iterator());
-    }
-
-    public boolean add(Object object) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean addAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void clear() {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean remove(Object object) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean removeAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean retainAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    //-----------------------------------------------------------------------
-    public boolean add(Object object, int count) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean remove(Object object, int count) {
-        throw new UnsupportedOperationException();
-    }
-
-    public Set uniqueSet() {
-        Set set = getBag().uniqueSet();
-        return UnmodifiableSet.decorate(set);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/UnmodifiableSortedBag.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/UnmodifiableSortedBag.java
deleted file mode 100755
index 3bb1cef..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/UnmodifiableSortedBag.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bag;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.apache.commons.collections.SortedBag;
-import org.apache.commons.collections.Unmodifiable;
-import org.apache.commons.collections.iterators.UnmodifiableIterator;
-import org.apache.commons.collections.set.UnmodifiableSet;
-
-/**
- * Decorates another <code>SortedBag</code> to ensure it can't be altered.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $
- * 
- * @author Stephen Colebourne
- */
-public final class UnmodifiableSortedBag
-        extends AbstractSortedBagDecorator implements Unmodifiable, Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -3190437252665717841L;
-
-    /**
-     * Factory method to create an unmodifiable bag.
-     * <p>
-     * If the bag passed in is already unmodifiable, it is returned.
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @return an unmodifiable SortedBag
-     * @throws IllegalArgumentException if bag is null
-     */
-    public static SortedBag decorate(SortedBag bag) {
-        if (bag instanceof Unmodifiable) {
-            return bag;
-        }
-        return new UnmodifiableSortedBag(bag);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param bag  the bag to decorate, must not be null
-     * @throws IllegalArgumentException if bag is null
-     */
-    private UnmodifiableSortedBag(SortedBag bag) {
-        super(bag);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the collection out using a custom routine.
-     * 
-     * @param out  the output stream
-     * @throws IOException
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeObject(collection);
-    }
-
-    /**
-     * Read the collection in using a custom routine.
-     * 
-     * @param in  the input stream
-     * @throws IOException
-     * @throws ClassNotFoundException
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        collection = (Collection) in.readObject();
-    }
-
-    //-----------------------------------------------------------------------
-    public Iterator iterator() {
-        return UnmodifiableIterator.decorate(getCollection().iterator());
-    }
-
-    public boolean add(Object object) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean addAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void clear() {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean remove(Object object) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean removeAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean retainAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    //-----------------------------------------------------------------------
-    public boolean add(Object object, int count) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean remove(Object object, int count) {
-        throw new UnsupportedOperationException();
-    }
-
-    public Set uniqueSet() {
-        Set set = getBag().uniqueSet();
-        return UnmodifiableSet.decorate(set);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/package.html b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/package.html
deleted file mode 100755
index 3ec37fe..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bag/package.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!-- $Id: package.html,v 1.1 2009/05/27 22:16:34 mparker Exp $ -->
- <!--
-   Copyright 2003-2004 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-  -->
-<BODY>
-<p>
-This package contains implementations of the
-{@link org.apache.commons.collections.Bag Bag} and 
-{@link org.apache.commons.collections.SortedBag SortedBag} interfaces.
-A bag stores an object and a count of the number of occurences of the object.
-<p>
-The following implementations are provided in the package:
-<ul>
-<li>HashBag - implementation that uses a HashMap to store the data
-<li>TreeBag - implementation that uses a TreeMap to store the data
-</ul>
-<p>
-The following decorators are provided in the package:
-<ul>
-<li>Synchronized - synchronizes method access for multi-threaded environments
-<li>Unmodifiable - ensures the bag cannot be altered
-<li>Predicated - ensures that only elements that are valid according to a predicate can be added
-<li>Typed - ensures that only elements that are of a specific type can be added
-<li>Transformed - transforms each element added to the bag
-</ul>
-</pre>
-</BODY>
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/AbstractBidiMapDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/AbstractBidiMapDecorator.java
deleted file mode 100755
index 4bdedba..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/AbstractBidiMapDecorator.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bidimap;
-
-import org.apache.commons.collections.BidiMap;
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.map.AbstractMapDecorator;
-
-/** 
- * Provides a base decorator that enables additional functionality to be added
- * to a BidiMap via decoration.
- * <p>
- * Methods are forwarded directly to the decorated map.
- * <p>
- * This implementation does not perform any special processing with the map views.
- * Instead it simply returns the set/collection from the wrapped map. This may be
- * undesirable, for example if you are trying to write a validating implementation
- * it would provide a loophole around the validation.
- * But, you might want that loophole, so this class is kept simple.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * 
- * @author Stephen Colebourne
- */
-public abstract class AbstractBidiMapDecorator
-        extends AbstractMapDecorator implements BidiMap {
-    
-    /**
-     * Constructor that wraps (not copies).
-     *
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if the collection is null
-     */
-    protected AbstractBidiMapDecorator(BidiMap map) {
-        super(map);
-    }
-
-    /**
-     * Gets the map being decorated.
-     * 
-     * @return the decorated map
-     */
-    protected BidiMap getBidiMap() {
-        return (BidiMap) map;
-    }
-
-    //-----------------------------------------------------------------------
-    public MapIterator mapIterator() {
-        return getBidiMap().mapIterator();
-    }
-
-    public Object getKey(Object value) {
-        return getBidiMap().getKey(value);
-    }
-
-    public Object removeValue(Object value) {
-        return getBidiMap().removeValue(value);
-    }
-
-    public BidiMap inverseBidiMap() {
-        return getBidiMap().inverseBidiMap();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/AbstractDualBidiMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/AbstractDualBidiMap.java
deleted file mode 100755
index 9ae80b3..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/AbstractDualBidiMap.java
+++ /dev/null
@@ -1,725 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bidimap;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.collections.BidiMap;
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.ResettableIterator;
-import org.apache.commons.collections.collection.AbstractCollectionDecorator;
-import org.apache.commons.collections.iterators.AbstractIteratorDecorator;
-import org.apache.commons.collections.keyvalue.AbstractMapEntryDecorator;
-
-/**
- * Abstract <code>BidiMap</code> implemented using two maps.
- * <p>
- * An implementation can be written simply by implementing the
- * <code>createMap</code> method.
- * 
- * @see DualHashBidiMap
- * @see DualTreeBidiMap
- * @since Commons Collections 3.0
- * @version $Id: AbstractDualBidiMap.java,v 1.1 2009/05/27 22:16:32 mparker Exp $
- * 
- * @author Matthew Hawthorne
- * @author Stephen Colebourne
- */
-public abstract class AbstractDualBidiMap implements BidiMap {
-
-    /**
-     * Delegate map array.  The first map contains standard entries, and the 
-     * second contains inverses.
-     */
-    protected transient final Map[] maps = new Map[2];
-    /**
-     * Inverse view of this map.
-     */
-    protected transient BidiMap inverseBidiMap = null;
-    /**
-     * View of the keys.
-     */
-    protected transient Set keySet = null;
-    /**
-     * View of the values.
-     */
-    protected transient Collection values = null;
-    /**
-     * View of the entries.
-     */
-    protected transient Set entrySet = null;
-
-    /**
-     * Creates an empty map, initialised by <code>createMap</code>.
-     * <p>
-     * This constructor remains in place for deserialization.
-     * All other usage is deprecated in favour of
-     * {@link #AbstractDualBidiMap(Map, Map)}.
-     */
-    protected AbstractDualBidiMap() {
-        super();
-        maps[0] = createMap();
-        maps[1] = createMap();
-    }
-
-    /**
-     * Creates an empty map using the two maps specified as storage.
-     * <p>
-     * The two maps must be a matching pair, normal and reverse.
-     * They will typically both be empty.
-     * <p>
-     * Neither map is validated, so nulls may be passed in.
-     * If you choose to do this then the subclass constructor must populate
-     * the <code>maps[]</code> instance variable itself.
-     * 
-     * @param normalMap  the normal direction map
-     * @param reverseMap  the reverse direction map
-     * @since Commons Collections 3.1
-     */
-    protected AbstractDualBidiMap(Map normalMap, Map reverseMap) {
-        super();
-        maps[0] = normalMap;
-        maps[1] = reverseMap;
-    }
-
-    /** 
-     * Constructs a map that decorates the specified maps,
-     * used by the subclass <code>createBidiMap</code> implementation.
-     *
-     * @param normalMap  the normal direction map
-     * @param reverseMap  the reverse direction map
-     * @param inverseBidiMap  the inverse BidiMap
-     */
-    protected AbstractDualBidiMap(Map normalMap, Map reverseMap, BidiMap inverseBidiMap) {
-        super();
-        maps[0] = normalMap;
-        maps[1] = reverseMap;
-        this.inverseBidiMap = inverseBidiMap;
-    }
-
-    /**
-     * Creates a new instance of the map used by the subclass to store data.
-     * <p>
-     * This design is deeply flawed and has been deprecated.
-     * It relied on subclass data being used during a superclass constructor.
-     * 
-     * @return the map to be used for internal storage
-     * @deprecated For constructors, use the new two map constructor.
-     * For deserialization, populate the maps array directly in readObject.
-     */
-    protected Map createMap() {
-        return null;
-    }
-
-    /**
-     * Creates a new instance of the subclass.
-     * 
-     * @param normalMap  the normal direction map
-     * @param reverseMap  the reverse direction map
-     * @param inverseMap  this map, which is the inverse in the new map
-     * @return the inverse map
-     */
-    protected abstract BidiMap createBidiMap(Map normalMap, Map reverseMap, BidiMap inverseMap);
-
-    // Map delegation
-    //-----------------------------------------------------------------------
-    public Object get(Object key) {
-        return maps[0].get(key);
-    }
-
-    public int size() {
-        return maps[0].size();
-    }
-
-    public boolean isEmpty() {
-        return maps[0].isEmpty();
-    }
-
-    public boolean containsKey(Object key) {
-        return maps[0].containsKey(key);
-    }
-
-    public boolean equals(Object obj) {
-        return maps[0].equals(obj);
-    }
-
-    public int hashCode() {
-        return maps[0].hashCode();
-    }
-
-    public String toString() {
-        return maps[0].toString();
-    }
-
-    // BidiMap changes
-    //-----------------------------------------------------------------------
-    public Object put(Object key, Object value) {
-        if (maps[0].containsKey(key)) {
-            maps[1].remove(maps[0].get(key));
-        }
-        if (maps[1].containsKey(value)) {
-            maps[0].remove(maps[1].get(value));
-        }
-        final Object obj = maps[0].put(key, value);
-        maps[1].put(value, key);
-        return obj;
-    }
-    
-    public void putAll(Map map) {
-        for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
-            Map.Entry entry = (Map.Entry) it.next();
-            put(entry.getKey(), entry.getValue());
-        }
-    }
-
-    public Object remove(Object key) {
-        Object value = null;
-        if (maps[0].containsKey(key)) {
-            value = maps[0].remove(key);
-            maps[1].remove(value);
-        }
-        return value;
-    }
-
-    public void clear() {
-        maps[0].clear();
-        maps[1].clear();
-    }
-
-    public boolean containsValue(Object value) {
-        return maps[1].containsKey(value);
-    }
-
-    // BidiMap
-    //-----------------------------------------------------------------------
-    /**
-     * Obtains a <code>MapIterator</code> over the map.
-     * The iterator implements <code>ResetableMapIterator</code>.
-     * This implementation relies on the entrySet iterator.
-     * <p>
-     * The setValue() methods only allow a new value to be set.
-     * If the value being set is already in the map, an IllegalArgumentException
-     * is thrown (as setValue cannot change the size of the map).
-     * 
-     * @return a map iterator
-     */
-    public MapIterator mapIterator() {
-        return new BidiMapIterator(this);
-    }
-    
-    public Object getKey(Object value) {
-        return maps[1].get(value);
-    }
-
-    public Object removeValue(Object value) {
-        Object key = null;
-        if (maps[1].containsKey(value)) {
-            key = maps[1].remove(value);
-            maps[0].remove(key);
-        }
-        return key;
-    }
-
-    public BidiMap inverseBidiMap() {
-        if (inverseBidiMap == null) {
-            inverseBidiMap = createBidiMap(maps[1], maps[0], this);
-        }
-        return inverseBidiMap;
-    }
-    
-    // Map views
-    //-----------------------------------------------------------------------
-    /**
-     * Gets a keySet view of the map.
-     * Changes made on the view are reflected in the map.
-     * The set supports remove and clear but not add.
-     * 
-     * @return the keySet view
-     */
-    public Set keySet() {
-        if (keySet == null) {
-            keySet = new KeySet(this);
-        }
-        return keySet;
-    }
-
-    /**
-     * Creates a key set iterator.
-     * Subclasses can override this to return iterators with different properties.
-     * 
-     * @param iterator  the iterator to decorate
-     * @return the keySet iterator
-     */
-    protected Iterator createKeySetIterator(Iterator iterator) {
-        return new KeySetIterator(iterator, this);
-    }
-
-    /**
-     * Gets a values view of the map.
-     * Changes made on the view are reflected in the map.
-     * The set supports remove and clear but not add.
-     * 
-     * @return the values view
-     */
-    public Collection values() {
-        if (values == null) {
-            values = new Values(this);
-        }
-        return values;
-    }
-
-    /**
-     * Creates a values iterator.
-     * Subclasses can override this to return iterators with different properties.
-     * 
-     * @param iterator  the iterator to decorate
-     * @return the values iterator
-     */
-    protected Iterator createValuesIterator(Iterator iterator) {
-        return new ValuesIterator(iterator, this);
-    }
-
-    /**
-     * Gets an entrySet view of the map.
-     * Changes made on the set are reflected in the map.
-     * The set supports remove and clear but not add.
-     * <p>
-     * The Map Entry setValue() method only allow a new value to be set.
-     * If the value being set is already in the map, an IllegalArgumentException
-     * is thrown (as setValue cannot change the size of the map).
-     * 
-     * @return the entrySet view
-     */
-    public Set entrySet() {
-        if (entrySet == null) {
-            entrySet = new EntrySet(this);
-        }
-        return entrySet;
-    }
-    
-    /**
-     * Creates an entry set iterator.
-     * Subclasses can override this to return iterators with different properties.
-     * 
-     * @param iterator  the iterator to decorate
-     * @return the entrySet iterator
-     */
-    protected Iterator createEntrySetIterator(Iterator iterator) {
-        return new EntrySetIterator(iterator, this);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Inner class View.
-     */
-    protected static abstract class View extends AbstractCollectionDecorator {
-        
-        /** The parent map */
-        protected final AbstractDualBidiMap parent;
-        
-        /**
-         * Constructs a new view of the BidiMap.
-         * 
-         * @param coll  the collection view being decorated
-         * @param parent  the parent BidiMap
-         */
-        protected View(Collection coll, AbstractDualBidiMap parent) {
-            super(coll);
-            this.parent = parent;
-        }
-
-        public boolean removeAll(Collection coll) {
-            if (parent.isEmpty() || coll.isEmpty()) {
-                return false;
-            }
-            boolean modified = false;
-            Iterator it = iterator();
-            while (it.hasNext()) {
-                if (coll.contains(it.next())) {
-                    it.remove();
-                    modified = true;
-                }
-            }
-            return modified;
-        }
-
-        public boolean retainAll(Collection coll) {
-            if (parent.isEmpty()) {
-                return false;
-            }
-            if (coll.isEmpty()) {
-                parent.clear();
-                return true;
-            }
-            boolean modified = false;
-            Iterator it = iterator();
-            while (it.hasNext()) {
-                if (coll.contains(it.next()) == false) {
-                    it.remove();
-                    modified = true;
-                }
-            }
-            return modified;
-        }
-        
-        public void clear() {
-            parent.clear();
-        }
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Inner class KeySet.
-     */
-    protected static class KeySet extends View implements Set {
-        
-        /**
-         * Constructs a new view of the BidiMap.
-         * 
-         * @param parent  the parent BidiMap
-         */
-        protected KeySet(AbstractDualBidiMap parent) {
-            super(parent.maps[0].keySet(), parent);
-        }
-
-        public Iterator iterator() {
-            return parent.createKeySetIterator(super.iterator());
-        }
-        
-        public boolean contains(Object key) {
-            return parent.maps[0].containsKey(key);
-        }
-
-        public boolean remove(Object key) {
-            if (parent.maps[0].containsKey(key)) {
-                Object value = parent.maps[0].remove(key);
-                parent.maps[1].remove(value);
-                return true;
-            }
-            return false;
-        }
-    }
-    
-    /**
-     * Inner class KeySetIterator.
-     */
-    protected static class KeySetIterator extends AbstractIteratorDecorator {
-        
-        /** The parent map */
-        protected final AbstractDualBidiMap parent;
-        /** The last returned key */
-        protected Object lastKey = null;
-        /** Whether remove is allowed at present */
-        protected boolean canRemove = false;
-        
-        /**
-         * Constructor.
-         * @param iterator  the iterator to decorate
-         * @param parent  the parent map
-         */
-        protected KeySetIterator(Iterator iterator, AbstractDualBidiMap parent) {
-            super(iterator);
-            this.parent = parent;
-        }
-        
-        public Object next() {
-            lastKey = super.next();
-            canRemove = true;
-            return lastKey;
-        }
-        
-        public void remove() {
-            if (canRemove == false) {
-                throw new IllegalStateException("Iterator remove() can only be called once after next()");
-            }
-            Object value = parent.maps[0].get(lastKey);
-            super.remove();
-            parent.maps[1].remove(value);
-            lastKey = null;
-            canRemove = false;
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Inner class Values.
-     */
-    protected static class Values extends View implements Set {
-        
-        /**
-         * Constructs a new view of the BidiMap.
-         * 
-         * @param parent  the parent BidiMap
-         */
-        protected Values(AbstractDualBidiMap parent) {
-            super(parent.maps[0].values(), parent);
-        }
-
-        public Iterator iterator() {
-            return parent.createValuesIterator(super.iterator());
-        }
-        
-        public boolean contains(Object value) {
-            return parent.maps[1].containsKey(value);
-        }
-
-        public boolean remove(Object value) {
-            if (parent.maps[1].containsKey(value)) {
-                Object key = parent.maps[1].remove(value);
-                parent.maps[0].remove(key);
-                return true;
-            }
-            return false;
-        }
-    }
-    
-    /**
-     * Inner class ValuesIterator.
-     */
-    protected static class ValuesIterator extends AbstractIteratorDecorator {
-        
-        /** The parent map */
-        protected final AbstractDualBidiMap parent;
-        /** The last returned value */
-        protected Object lastValue = null;
-        /** Whether remove is allowed at present */
-        protected boolean canRemove = false;
-        
-        /**
-         * Constructor.
-         * @param iterator  the iterator to decorate
-         * @param parent  the parent map
-         */
-        protected ValuesIterator(Iterator iterator, AbstractDualBidiMap parent) {
-            super(iterator);
-            this.parent = parent;
-        }
-        
-        public Object next() {
-            lastValue = super.next();
-            canRemove = true;
-            return lastValue;
-        }
-        
-        public void remove() {
-            if (canRemove == false) {
-                throw new IllegalStateException("Iterator remove() can only be called once after next()");
-            }
-            super.remove(); // removes from maps[0]
-            parent.maps[1].remove(lastValue);
-            lastValue = null;
-            canRemove = false;
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Inner class EntrySet.
-     */
-    protected static class EntrySet extends View implements Set {
-        
-        /**
-         * Constructs a new view of the BidiMap.
-         * 
-         * @param parent  the parent BidiMap
-         */
-        protected EntrySet(AbstractDualBidiMap parent) {
-            super(parent.maps[0].entrySet(), parent);
-        }
-
-        public Iterator iterator() {
-            return parent.createEntrySetIterator(super.iterator());
-        }
-        
-        public boolean remove(Object obj) {
-            if (obj instanceof Map.Entry == false) {
-                return false;
-            }
-            Map.Entry entry = (Map.Entry) obj;
-            Object key = entry.getKey();
-            if (parent.containsKey(key)) {
-                Object value = parent.maps[0].get(key);
-                if (value == null ? entry.getValue() == null : value.equals(entry.getValue())) {
-                    parent.maps[0].remove(key);
-                    parent.maps[1].remove(value);
-                    return true;
-                }
-            }
-            return false;
-        }
-    }
-    
-    /**
-     * Inner class EntrySetIterator.
-     */
-    protected static class EntrySetIterator extends AbstractIteratorDecorator {
-        
-        /** The parent map */
-        protected final AbstractDualBidiMap parent;
-        /** The last returned entry */
-        protected Map.Entry last = null;
-        /** Whether remove is allowed at present */
-        protected boolean canRemove = false;
-        
-        /**
-         * Constructor.
-         * @param iterator  the iterator to decorate
-         * @param parent  the parent map
-         */
-        protected EntrySetIterator(Iterator iterator, AbstractDualBidiMap parent) {
-            super(iterator);
-            this.parent = parent;
-        }
-        
-        public Object next() {
-            last = new MapEntry((Map.Entry) super.next(), parent);
-            canRemove = true;
-            return last;
-        }
-        
-        public void remove() {
-            if (canRemove == false) {
-                throw new IllegalStateException("Iterator remove() can only be called once after next()");
-            }
-            // store value as remove may change the entry in the decorator (eg.TreeMap)
-            Object value = last.getValue();
-            super.remove();
-            parent.maps[1].remove(value);
-            last = null;
-            canRemove = false;
-        }
-    }
-
-    /**
-     * Inner class MapEntry.
-     */
-    protected static class MapEntry extends AbstractMapEntryDecorator {
-
-        /** The parent map */        
-        protected final AbstractDualBidiMap parent;
-        
-        /**
-         * Constructor.
-         * @param entry  the entry to decorate
-         * @param parent  the parent map
-         */
-        protected MapEntry(Map.Entry entry, AbstractDualBidiMap parent) {
-            super(entry);
-            this.parent = parent;
-        }
-        
-        public Object setValue(Object value) {
-            Object key = MapEntry.this.getKey();
-            if (parent.maps[1].containsKey(value) &&
-                parent.maps[1].get(value) != key) {
-                throw new IllegalArgumentException("Cannot use setValue() when the object being set is already in the map");
-            }
-            parent.put(key, value);
-            final Object oldValue = super.setValue(value);
-            return oldValue;
-        }
-    }
-    
-    /**
-     * Inner class MapIterator.
-     */
-    protected static class BidiMapIterator implements MapIterator, ResettableIterator {
-        
-        /** The parent map */
-        protected final AbstractDualBidiMap parent;
-        /** The iterator being wrapped */
-        protected Iterator iterator;
-        /** The last returned entry */
-        protected Map.Entry last = null;
-        /** Whether remove is allowed at present */
-        protected boolean canRemove = false;
-        
-        /**
-         * Constructor.
-         * @param parent  the parent map
-         */
-        protected BidiMapIterator(AbstractDualBidiMap parent) {
-            super();
-            this.parent = parent;
-            this.iterator = parent.maps[0].entrySet().iterator();
-        }
-        
-        public boolean hasNext() {
-            return iterator.hasNext();
-        }
-        
-        public Object next() {
-            last = (Map.Entry) iterator.next();
-            canRemove = true;
-            return last.getKey();
-        }
-        
-        public void remove() {
-            if (canRemove == false) {
-                throw new IllegalStateException("Iterator remove() can only be called once after next()");
-            }
-            // store value as remove may change the entry in the decorator (eg.TreeMap)
-            Object value = last.getValue();
-            iterator.remove();
-            parent.maps[1].remove(value);
-            last = null;
-            canRemove = false;
-        }
-        
-        public Object getKey() {
-            if (last == null) {
-                throw new IllegalStateException("Iterator getKey() can only be called after next() and before remove()");
-            }
-            return last.getKey();
-        }
-
-        public Object getValue() {
-            if (last == null) {
-                throw new IllegalStateException("Iterator getValue() can only be called after next() and before remove()");
-            }
-            return last.getValue();
-        }
-        
-        public Object setValue(Object value) {
-            if (last == null) {
-                throw new IllegalStateException("Iterator setValue() can only be called after next() and before remove()");
-            }
-            if (parent.maps[1].containsKey(value) &&
-                parent.maps[1].get(value) != last.getKey()) {
-                throw new IllegalArgumentException("Cannot use setValue() when the object being set is already in the map");
-            }
-            return parent.put(last.getKey(), value);
-        }
-        
-        public void reset() {
-            iterator = parent.maps[0].entrySet().iterator();
-            last = null;
-            canRemove = false;
-        }
-        
-        public String toString() {
-            if (last != null) {
-                return "MapIterator[" + getKey() + "=" + getValue() + "]";
-            } else {
-                return "MapIterator[]";
-            }
-        }
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/AbstractOrderedBidiMapDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/AbstractOrderedBidiMapDecorator.java
deleted file mode 100755
index 1e8b08f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/AbstractOrderedBidiMapDecorator.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bidimap;
-
-import org.apache.commons.collections.OrderedBidiMap;
-import org.apache.commons.collections.OrderedMapIterator;
-
-/** 
- * Provides a base decorator that enables additional functionality to be added
- * to an OrderedBidiMap via decoration.
- * <p>
- * Methods are forwarded directly to the decorated map.
- * <p>
- * This implementation does not perform any special processing with the map views.
- * Instead it simply returns the inverse from the wrapped map. This may be
- * undesirable, for example if you are trying to write a validating implementation
- * it would provide a loophole around the validation.
- * But, you might want that loophole, so this class is kept simple.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * 
- * @author Stephen Colebourne
- */
-public abstract class AbstractOrderedBidiMapDecorator
-        extends AbstractBidiMapDecorator implements OrderedBidiMap {
-    
-    /**
-     * Constructor that wraps (not copies).
-     *
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if the collection is null
-     */
-    protected AbstractOrderedBidiMapDecorator(OrderedBidiMap map) {
-        super(map);
-    }
-
-    /**
-     * Gets the map being decorated.
-     * 
-     * @return the decorated map
-     */
-    protected OrderedBidiMap getOrderedBidiMap() {
-        return (OrderedBidiMap) map;
-    }
-
-    //-----------------------------------------------------------------------
-    public OrderedMapIterator orderedMapIterator() {
-        return getOrderedBidiMap().orderedMapIterator();
-    }
-
-    public Object firstKey() {
-        return getOrderedBidiMap().firstKey();
-    }
-
-    public Object lastKey() {
-        return getOrderedBidiMap().lastKey();
-    }
-
-    public Object nextKey(Object key) {
-        return getOrderedBidiMap().nextKey(key);
-    }
-
-    public Object previousKey(Object key) {
-        return getOrderedBidiMap().previousKey(key);
-    }
-
-    public OrderedBidiMap inverseOrderedBidiMap() {
-        return getOrderedBidiMap().inverseOrderedBidiMap();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/AbstractSortedBidiMapDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/AbstractSortedBidiMapDecorator.java
deleted file mode 100755
index 03cd1f3..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/AbstractSortedBidiMapDecorator.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bidimap;
-
-import java.util.Comparator;
-import java.util.SortedMap;
-
-import org.apache.commons.collections.SortedBidiMap;
-
-/** 
- * Provides a base decorator that enables additional functionality to be added
- * to a SortedBidiMap via decoration.
- * <p>
- * Methods are forwarded directly to the decorated map.
- * <p>
- * This implementation does not perform any special processing with the map views.
- * Instead it simply returns the inverse from the wrapped map. This may be
- * undesirable, for example if you are trying to write a validating implementation
- * it would provide a loophole around the validation.
- * But, you might want that loophole, so this class is kept simple.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * 
- * @author Stephen Colebourne
- */
-public abstract class AbstractSortedBidiMapDecorator
-        extends AbstractOrderedBidiMapDecorator implements SortedBidiMap {
-    
-    /**
-     * Constructor that wraps (not copies).
-     *
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if the collection is null
-     */
-    public AbstractSortedBidiMapDecorator(SortedBidiMap map) {
-        super(map);
-    }
-
-    /**
-     * Gets the map being decorated.
-     * 
-     * @return the decorated map
-     */
-    protected SortedBidiMap getSortedBidiMap() {
-        return (SortedBidiMap) map;
-    }
-
-    //-----------------------------------------------------------------------
-    public SortedBidiMap inverseSortedBidiMap() {
-        return getSortedBidiMap().inverseSortedBidiMap();
-    }
-
-    public Comparator comparator() {
-        return getSortedBidiMap().comparator();
-    }
-
-    public SortedMap subMap(Object fromKey, Object toKey) {
-        return getSortedBidiMap().subMap(fromKey, toKey);
-    }
-
-    public SortedMap headMap(Object toKey) {
-        return getSortedBidiMap().headMap(toKey);
-    }
-
-    public SortedMap tailMap(Object fromKey) {
-        return getSortedBidiMap().tailMap(fromKey);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/DualHashBidiMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/DualHashBidiMap.java
deleted file mode 100755
index 664eba2..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/DualHashBidiMap.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bidimap;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.collections.BidiMap;
-
-/**
- * Implementation of <code>BidiMap</code> that uses two <code>HashMap</code> instances.
- * <p>
- * Two <code>HashMap</code> instances are used in this class.
- * This provides fast lookups at the expense of storing two sets of map entries.
- * Commons Collections would welcome the addition of a direct hash-based
- * implementation of the <code>BidiMap</code> interface.
- * <p>
- * NOTE: From Commons Collections 3.1, all subclasses will use <code>HashMap</code>
- * and the flawed <code>createMap</code> method is ignored.
- * 
- * @since Commons Collections 3.0
- * @version $Id: DualHashBidiMap.java,v 1.1 2009/05/27 22:16:32 mparker Exp $
- * 
- * @author Matthew Hawthorne
- * @author Stephen Colebourne
- */
-public class DualHashBidiMap
-        extends AbstractDualBidiMap implements Serializable {
-
-    /** Ensure serialization compatibility */
-    private static final long serialVersionUID = 721969328361808L;
-
-    /**
-     * Creates an empty <code>HashBidiMap</code>.
-     */
-    public DualHashBidiMap() {
-        super(new HashMap(), new HashMap());
-    }
-
-    /** 
-     * Constructs a <code>HashBidiMap</code> and copies the mappings from
-     * specified <code>Map</code>.  
-     *
-     * @param map  the map whose mappings are to be placed in this map
-     */
-    public DualHashBidiMap(Map map) {
-        super(new HashMap(), new HashMap());
-        putAll(map);
-    }
-    
-    /** 
-     * Constructs a <code>HashBidiMap</code> that decorates the specified maps.
-     *
-     * @param normalMap  the normal direction map
-     * @param reverseMap  the reverse direction map
-     * @param inverseBidiMap  the inverse BidiMap
-     */
-    protected DualHashBidiMap(Map normalMap, Map reverseMap, BidiMap inverseBidiMap) {
-        super(normalMap, reverseMap, inverseBidiMap);
-    }
-
-    /**
-     * Creates a new instance of this object.
-     * 
-     * @param normalMap  the normal direction map
-     * @param reverseMap  the reverse direction map
-     * @param inverseBidiMap  the inverse BidiMap
-     * @return new bidi map
-     */
-    protected BidiMap createBidiMap(Map normalMap, Map reverseMap, BidiMap inverseBidiMap) {
-        return new DualHashBidiMap(normalMap, reverseMap, inverseBidiMap);
-    }
-
-    // Serialization
-    //-----------------------------------------------------------------------
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeObject(maps[0]);
-    }
-
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        maps[0] = new HashMap();
-        maps[1] = new HashMap();
-        Map map = (Map) in.readObject();
-        putAll(map);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/DualTreeBidiMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/DualTreeBidiMap.java
deleted file mode 100755
index 133d0c5..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/DualTreeBidiMap.java
+++ /dev/null
@@ -1,348 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bidimap;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.ListIterator;
-import java.util.Map;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-import org.apache.commons.collections.BidiMap;
-import org.apache.commons.collections.OrderedBidiMap;
-import org.apache.commons.collections.OrderedMap;
-import org.apache.commons.collections.OrderedMapIterator;
-import org.apache.commons.collections.ResettableIterator;
-import org.apache.commons.collections.SortedBidiMap;
-import org.apache.commons.collections.map.AbstractSortedMapDecorator;
-
-/**
- * Implementation of <code>BidiMap</code> that uses two <code>TreeMap</code> instances.
- * <p>
- * The setValue() method on iterators will succeed only if the new value being set is
- * not already in the bidimap.
- * <p>
- * When considering whether to use this class, the {@link TreeBidiMap} class should
- * also be considered. It implements the interface using a dedicated design, and does
- * not store each object twice, which can save on memory use.
- * <p>
- * NOTE: From Commons Collections 3.1, all subclasses will use <code>TreeMap</code>
- * and the flawed <code>createMap</code> method is ignored.
- * 
- * @since Commons Collections 3.0
- * @version $Id: DualTreeBidiMap.java,v 1.1 2009/05/27 22:16:32 mparker Exp $
- * 
- * @author Matthew Hawthorne
- * @author Stephen Colebourne
- */
-public class DualTreeBidiMap
-        extends AbstractDualBidiMap implements SortedBidiMap, Serializable {
-
-    /** Ensure serialization compatibility */
-    private static final long serialVersionUID = 721969328361809L;
-    /** The comparator to use */
-    protected final Comparator comparator;
-    
-    /**
-     * Creates an empty <code>DualTreeBidiMap</code>
-     */
-    public DualTreeBidiMap() {
-        super(new TreeMap(), new TreeMap());
-        this.comparator = null;
-    }
-
-    /** 
-     * Constructs a <code>DualTreeBidiMap</code> and copies the mappings from
-     * specified <code>Map</code>.  
-     *
-     * @param map  the map whose mappings are to be placed in this map
-     */
-    public DualTreeBidiMap(Map map) {
-        super(new TreeMap(), new TreeMap());
-        putAll(map);
-        this.comparator = null;
-    }
-
-    /** 
-     * Constructs a <code>DualTreeBidiMap</code> using the specified Comparator.
-     *
-     * @param comparator  the Comparator
-     */
-    public DualTreeBidiMap(Comparator comparator) {
-        super(new TreeMap(comparator), new TreeMap(comparator));
-        this.comparator = comparator;
-    }
-
-    /** 
-     * Constructs a <code>DualTreeBidiMap</code> that decorates the specified maps.
-     *
-     * @param normalMap  the normal direction map
-     * @param reverseMap  the reverse direction map
-     * @param inverseBidiMap  the inverse BidiMap
-     */
-    protected DualTreeBidiMap(Map normalMap, Map reverseMap, BidiMap inverseBidiMap) {
-        super(normalMap, reverseMap, inverseBidiMap);
-        this.comparator = ((SortedMap) normalMap).comparator();
-    }
-
-    /**
-     * Creates a new instance of this object.
-     * 
-     * @param normalMap  the normal direction map
-     * @param reverseMap  the reverse direction map
-     * @param inverseMap  the inverse BidiMap
-     * @return new bidi map
-     */
-    protected BidiMap createBidiMap(Map normalMap, Map reverseMap, BidiMap inverseMap) {
-        return new DualTreeBidiMap(normalMap, reverseMap, inverseMap);
-    }
-
-    //-----------------------------------------------------------------------
-    public Comparator comparator() {
-        return ((SortedMap) maps[0]).comparator();
-    }
-
-    public Object firstKey() {
-        return ((SortedMap) maps[0]).firstKey();
-    }
-
-    public Object lastKey() {
-        return ((SortedMap) maps[0]).lastKey();
-    }
-
-    public Object nextKey(Object key) {
-        if (isEmpty()) {
-            return null;
-        }
-        if (maps[0] instanceof OrderedMap) {
-            return ((OrderedMap) maps[0]).nextKey(key);
-        }
-        SortedMap sm = (SortedMap) maps[0];
-        Iterator it = sm.tailMap(key).keySet().iterator();
-        it.next();
-        if (it.hasNext()) {
-            return it.next();
-        }
-        return null;
-    }
-
-    public Object previousKey(Object key) {
-        if (isEmpty()) {
-            return null;
-        }
-        if (maps[0] instanceof OrderedMap) {
-            return ((OrderedMap) maps[0]).previousKey(key);
-        }
-        SortedMap sm = (SortedMap) maps[0];
-        SortedMap hm = sm.headMap(key);
-        if (hm.isEmpty()) {
-            return null;
-        }
-        return hm.lastKey();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Obtains an ordered map iterator.
-     * <p>
-     * This implementation copies the elements to an ArrayList in order to
-     * provide the forward/backward behaviour.
-     * 
-     * @return a new ordered map iterator
-     */
-    public OrderedMapIterator orderedMapIterator() {
-        return new BidiOrderedMapIterator(this);
-    }
-
-    public SortedBidiMap inverseSortedBidiMap() {
-        return (SortedBidiMap) inverseBidiMap();
-    }
-
-    public OrderedBidiMap inverseOrderedBidiMap() {
-        return (OrderedBidiMap) inverseBidiMap();
-    }
-
-    //-----------------------------------------------------------------------
-    public SortedMap headMap(Object toKey) {
-        SortedMap sub = ((SortedMap) maps[0]).headMap(toKey);
-        return new ViewMap(this, sub);
-    }
-
-    public SortedMap tailMap(Object fromKey) {
-        SortedMap sub = ((SortedMap) maps[0]).tailMap(fromKey);
-        return new ViewMap(this, sub);
-    }
-
-    public SortedMap subMap(Object fromKey, Object toKey) {
-        SortedMap sub = ((SortedMap) maps[0]).subMap(fromKey, toKey);
-        return new ViewMap(this, sub);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Internal sorted map view.
-     */
-    protected static class ViewMap extends AbstractSortedMapDecorator {
-        /** The parent bidi map. */
-        final DualTreeBidiMap bidi;
-        
-        /**
-         * Constructor.
-         * @param bidi  the parent bidi map
-         * @param sm  the subMap sorted map
-         */
-        protected ViewMap(DualTreeBidiMap bidi, SortedMap sm) {
-            // the implementation is not great here...
-            // use the maps[0] as the filtered map, but maps[1] as the full map
-            // this forces containsValue and clear to be overridden
-            super((SortedMap) bidi.createBidiMap(sm, bidi.maps[1], bidi.inverseBidiMap));
-            this.bidi = (DualTreeBidiMap) map;
-        }
-        
-        public boolean containsValue(Object value) {
-            // override as default implementation jumps to [1]
-            return bidi.maps[0].containsValue(value);
-        }
-        
-        public void clear() {
-            // override as default implementation jumps to [1]
-            for (Iterator it = keySet().iterator(); it.hasNext();) {
-                it.next();
-                it.remove();
-            }
-        }
-        
-        public SortedMap headMap(Object toKey) {
-            return new ViewMap(bidi, super.headMap(toKey));
-        }
-
-        public SortedMap tailMap(Object fromKey) {
-            return new ViewMap(bidi, super.tailMap(fromKey));
-        }
-
-        public SortedMap subMap(Object fromKey, Object toKey) {
-            return new ViewMap(bidi, super.subMap(fromKey, toKey));
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Inner class MapIterator.
-     */
-    protected static class BidiOrderedMapIterator implements OrderedMapIterator, ResettableIterator {
-        
-        /** The parent map */
-        protected final AbstractDualBidiMap parent;
-        /** The iterator being decorated */
-        protected ListIterator iterator;
-        /** The last returned entry */
-        private Map.Entry last = null;
-        
-        /**
-         * Constructor.
-         * @param parent  the parent map
-         */
-        protected BidiOrderedMapIterator(AbstractDualBidiMap parent) {
-            super();
-            this.parent = parent;
-            iterator = new ArrayList(parent.entrySet()).listIterator();
-        }
-        
-        public boolean hasNext() {
-            return iterator.hasNext();
-        }
-        
-        public Object next() {
-            last = (Map.Entry) iterator.next();
-            return last.getKey();
-        }
-        
-        public boolean hasPrevious() {
-            return iterator.hasPrevious();
-        }
-        
-        public Object previous() {
-            last = (Map.Entry) iterator.previous();
-            return last.getKey();
-        }
-        
-        public void remove() {
-            iterator.remove();
-            parent.remove(last.getKey());
-            last = null;
-        }
-        
-        public Object getKey() {
-            if (last == null) {
-                throw new IllegalStateException("Iterator getKey() can only be called after next() and before remove()");
-            }
-            return last.getKey();
-        }
-
-        public Object getValue() {
-            if (last == null) {
-                throw new IllegalStateException("Iterator getValue() can only be called after next() and before remove()");
-            }
-            return last.getValue();
-        }
-        
-        public Object setValue(Object value) {
-            if (last == null) {
-                throw new IllegalStateException("Iterator setValue() can only be called after next() and before remove()");
-            }
-            if (parent.maps[1].containsKey(value) &&
-                parent.maps[1].get(value) != last.getKey()) {
-                throw new IllegalArgumentException("Cannot use setValue() when the object being set is already in the map");
-            }
-            return parent.put(last.getKey(), value);
-        }
-        
-        public void reset() {
-            iterator = new ArrayList(parent.entrySet()).listIterator();
-            last = null;
-        }
-        
-        public String toString() {
-            if (last != null) {
-                return "MapIterator[" + getKey() + "=" + getValue() + "]";
-            } else {
-                return "MapIterator[]";
-            }
-        }
-    }
-    
-    // Serialization
-    //-----------------------------------------------------------------------
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeObject(maps[0]);
-    }
-
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        maps[0] = new TreeMap(comparator);
-        maps[1] = new TreeMap(comparator);
-        Map map = (Map) in.readObject();
-        putAll(map);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/TreeBidiMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/TreeBidiMap.java
deleted file mode 100755
index 9b1c215..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/TreeBidiMap.java
+++ /dev/null
@@ -1,2084 +0,0 @@
-/*
- *  Copyright 2001-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bidimap;
-
-import java.util.AbstractSet;
-import java.util.Collection;
-import java.util.ConcurrentModificationException;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-import org.apache.commons.collections.BidiMap;
-import org.apache.commons.collections.KeyValue;
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.OrderedBidiMap;
-import org.apache.commons.collections.OrderedIterator;
-import org.apache.commons.collections.OrderedMapIterator;
-import org.apache.commons.collections.iterators.EmptyOrderedMapIterator;
-import org.apache.commons.collections.keyvalue.UnmodifiableMapEntry;
-
-/**
- * Red-Black tree-based implementation of BidiMap where all objects added
- * implement the <code>Comparable</code> interface.
- * <p>
- * This class guarantees that the map will be in both ascending key order
- * and ascending value order, sorted according to the natural order for
- * the key's and value's classes.
- * <p>
- * This Map is intended for applications that need to be able to look
- * up a key-value pairing by either key or value, and need to do so
- * with equal efficiency.
- * <p>
- * While that goal could be accomplished by taking a pair of TreeMaps
- * and redirecting requests to the appropriate TreeMap (e.g.,
- * containsKey would be directed to the TreeMap that maps values to
- * keys, containsValue would be directed to the TreeMap that maps keys
- * to values), there are problems with that implementation.
- * If the data contained in the TreeMaps is large, the cost of redundant
- * storage becomes significant. The {@link DualTreeBidiMap} and
- * {@link DualHashBidiMap} implementations use this approach.
- * <p>
- * This solution keeps minimizes the data storage by holding data only once.
- * The red-black algorithm is based on java util TreeMap, but has been modified
- * to simultaneously map a tree node by key and by value. This doubles the
- * cost of put operations (but so does using two TreeMaps), and nearly doubles
- * the cost of remove operations (there is a savings in that the lookup of the
- * node to be removed only has to be performed once). And since only one node
- * contains the key and value, storage is significantly less than that
- * required by two TreeMaps.
- * <p>
- * The Map.Entry instances returned by the appropriate methods will
- * not allow setValue() and will throw an
- * UnsupportedOperationException on attempts to call that method.
- *
- * @since Commons Collections 3.0 (previously DoubleOrderedMap v2.0)
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * 
- * @author Marc Johnson
- * @author Stephen Colebourne
- */
-public class TreeBidiMap implements OrderedBidiMap {
-
-    private static final int KEY = 0;
-    private static final int VALUE = 1;
-    private static final int MAPENTRY = 2;
-    private static final int INVERSEMAPENTRY = 3;
-    private static final int SUM_OF_INDICES = KEY + VALUE;
-    private static final int FIRST_INDEX = 0;
-    private static final int NUMBER_OF_INDICES = 2;
-    private static final String[] dataName = new String[] { "key", "value" };
-    
-    private Node[] rootNode = new Node[2];
-    private int nodeCount = 0;
-    private int modifications = 0;
-    private Set keySet;
-    private Set valuesSet;
-    private Set entrySet;
-    private TreeBidiMap.Inverse inverse = null;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructs a new empty TreeBidiMap.
-     */
-    public TreeBidiMap() {
-        super();
-    }
-
-    /**
-     * Constructs a new TreeBidiMap by copying an existing Map.
-     *
-     * @param map  the map to copy
-     * @throws ClassCastException if the keys/values in the map are
-     *  not Comparable or are not mutually comparable
-     * @throws NullPointerException if any key or value in the map is null
-     */
-    public TreeBidiMap(final Map map) {
-        super();
-        putAll(map);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns the number of key-value mappings in this map.
-     *
-     * @return the number of key-value mappings in this map
-     */
-    public int size() {
-        return nodeCount;
-    }
-
-    /**
-     * Checks whether the map is empty or not.
-     *
-     * @return true if the map is empty
-     */
-    public boolean isEmpty() {
-        return (nodeCount == 0);
-    }
-
-    /**
-     * Checks whether this map contains the a mapping for the specified key.
-     * <p>
-     * The key must implement <code>Comparable</code>.
-     *
-     * @param key  key whose presence in this map is to be tested
-     * @return true if this map contains a mapping for the specified key
-     * @throws ClassCastException if the key is of an inappropriate type
-     * @throws NullPointerException if the key is null
-     */
-    public boolean containsKey(final Object key) {
-        checkKey(key);
-        return (lookup((Comparable) key, KEY) != null);
-    }
-
-    /**
-     * Checks whether this map contains the a mapping for the specified value.
-     * <p>
-     * The value must implement <code>Comparable</code>.
-     *
-     * @param value  value whose presence in this map is to be tested
-     * @return true if this map contains a mapping for the specified value
-     * @throws ClassCastException if the value is of an inappropriate type
-     * @throws NullPointerException if the value is null
-     */
-    public boolean containsValue(final Object value) {
-        checkValue(value);
-        return (lookup((Comparable) value, VALUE) != null);
-    }
-
-    /**
-     * Gets the value to which this map maps the specified key.
-     * Returns null if the map contains no mapping for this key.
-     * <p>
-     * The key must implement <code>Comparable</code>.
-     *
-     * @param key  key whose associated value is to be returned
-     * @return the value to which this map maps the specified key,
-     *  or null if the map contains no mapping for this key
-     * @throws ClassCastException if the key is of an inappropriate type
-     * @throws NullPointerException if the key is null
-     */
-    public Object get(final Object key) {
-        return doGet((Comparable) key, KEY);
-    }
-
-    /**
-     * Puts the key-value pair into the map, replacing any previous pair.
-     * <p>
-     * When adding a key-value pair, the value may already exist in the map
-     * against a different key. That mapping is removed, to ensure that the
-     * value only occurs once in the inverse map.
-     * <pre>
-     *  BidiMap map1 = new TreeBidiMap();
-     *  map.put("A","B");  // contains A mapped to B, as per Map
-     *  map.put("A","C");  // contains A mapped to C, as per Map
-     * 
-     *  BidiMap map2 = new TreeBidiMap();
-     *  map.put("A","B");  // contains A mapped to B, as per Map
-     *  map.put("C","B");  // contains C mapped to B, key A is removed
-     * </pre>
-     * <p>
-     * Both key and value must implement <code>Comparable</code>.
-     *
-     * @param key  key with which the specified value is to be  associated
-     * @param value  value to be associated with the specified key
-     * @return the previous value for the key
-     * @throws ClassCastException if the key is of an inappropriate type
-     * @throws NullPointerException if the key is null
-     */
-    public Object put(final Object key, final Object value) {
-        return doPut((Comparable) key, (Comparable) value, KEY);
-    }
-
-    /**
-     * Puts all the mappings from the specified map into this map.
-     * <p>
-     * All keys and values must implement <code>Comparable</code>.
-     * 
-     * @param map  the map to copy from
-     */
-    public void putAll(Map map) {
-        Iterator it = map.entrySet().iterator();
-        while (it.hasNext()) {
-            Map.Entry entry = (Map.Entry) it.next();
-            put(entry.getKey(), entry.getValue());
-        }
-    }
-        
-    /**
-     * Removes the mapping for this key from this map if present.
-     * <p>
-     * The key must implement <code>Comparable</code>.
-     *
-     * @param key  key whose mapping is to be removed from the map.
-     * @return previous value associated with specified key,
-     *  or null if there was no mapping for key.
-     * @throws ClassCastException if the key is of an inappropriate type
-     * @throws NullPointerException if the key is null
-     */
-    public Object remove(final Object key) {
-        return doRemove((Comparable) key, KEY);
-    }
-
-    /**
-     * Removes all mappings from this map.
-     */
-    public void clear() {
-        modify();
-
-        nodeCount = 0;
-        rootNode[KEY] = null;
-        rootNode[VALUE] = null;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns the key to which this map maps the specified value.
-     * Returns null if the map contains no mapping for this value.
-     * <p>
-     * The value must implement <code>Comparable</code>.
-     *
-     * @param value  value whose associated key is to be returned.
-     * @return the key to which this map maps the specified value,
-     *  or null if the map contains no mapping for this value.
-     * @throws ClassCastException if the value is of an inappropriate type
-     * @throws NullPointerException if the value is null
-     */
-    public Object getKey(final Object value) {
-        return doGet((Comparable) value, VALUE);
-    }
-
-    /**
-     * Removes the mapping for this value from this map if present.
-     * <p>
-     * The value must implement <code>Comparable</code>.
-     *
-     * @param value  value whose mapping is to be removed from the map
-     * @return previous key associated with specified value,
-     *  or null if there was no mapping for value.
-     * @throws ClassCastException if the value is of an inappropriate type
-     * @throws NullPointerException if the value is null
-     */
-    public Object removeValue(final Object value) {
-        return doRemove((Comparable) value, VALUE);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the first (lowest) key currently in this map.
-     *
-     * @return the first (lowest) key currently in this sorted map
-     * @throws NoSuchElementException if this map is empty
-     */
-    public Object firstKey() {
-        if (nodeCount == 0) {
-            throw new NoSuchElementException("Map is empty");
-        }
-        return leastNode(rootNode[KEY], KEY).getKey();
-    }
-
-    /**
-     * Gets the last (highest) key currently in this map.
-     *
-     * @return the last (highest) key currently in this sorted map
-     * @throws NoSuchElementException if this map is empty
-     */
-    public Object lastKey() {
-        if (nodeCount == 0) {
-            throw new NoSuchElementException("Map is empty");
-        }
-        return greatestNode(rootNode[KEY], KEY).getKey();
-    }
-    
-    /**
-     * Gets the next key after the one specified.
-     * <p>
-     * The key must implement <code>Comparable</code>.
-     *
-     * @param key the key to search for next from
-     * @return the next key, null if no match or at end
-     */
-    public Object nextKey(Object key) {
-        checkKey(key);
-        Node node = nextGreater(lookup((Comparable) key, KEY), KEY);
-        return (node == null ? null : node.getKey());
-    }
-
-    /**
-     * Gets the previous key before the one specified.
-     * <p>
-     * The key must implement <code>Comparable</code>.
-     *
-     * @param key the key to search for previous from
-     * @return the previous key, null if no match or at start
-     */
-    public Object previousKey(Object key) {
-        checkKey(key);
-        Node node = nextSmaller(lookup((Comparable) key, KEY), KEY);
-        return (node == null ? null : node.getKey());
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Returns a set view of the keys contained in this map in key order.
-     * <p>
-     * The set is backed by the map, so changes to the map are reflected in
-     * the set, and vice-versa. If the map is modified while an iteration over
-     * the set is in progress, the results of the iteration are undefined.
-     * <p>
-     * The set supports element removal, which removes the corresponding mapping
-     * from the map. It does not support the add or addAll operations.
-     *
-     * @return a set view of the keys contained in this map.
-     */
-    public Set keySet() {
-        if (keySet == null) {
-            keySet = new View(this, KEY, KEY);
-        }
-        return keySet;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns a set view of the values contained in this map in key order.
-     * The returned object can be cast to a Set.
-     * <p>
-     * The set is backed by the map, so changes to the map are reflected in
-     * the set, and vice-versa. If the map is modified while an iteration over
-     * the set is in progress, the results of the iteration are undefined.
-     * <p>
-     * The set supports element removal, which removes the corresponding mapping
-     * from the map. It does not support the add or addAll operations.
-     *
-     * @return a set view of the values contained in this map.
-     */
-    public Collection values() {
-        if (valuesSet == null) {
-            valuesSet = new View(this, KEY, VALUE);
-        }
-        return valuesSet;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns a set view of the entries contained in this map in key order.
-     * For simple iteration through the map, the MapIterator is quicker.
-     * <p>
-     * The set is backed by the map, so changes to the map are reflected in
-     * the set, and vice-versa. If the map is modified while an iteration over
-     * the set is in progress, the results of the iteration are undefined.
-     * <p>
-     * The set supports element removal, which removes the corresponding mapping
-     * from the map. It does not support the add or addAll operations.
-     * The returned MapEntry objects do not support setValue.
-     *
-     * @return a set view of the values contained in this map.
-     */
-    public Set entrySet() {
-        if (entrySet == null) {
-            return new EntryView(this, KEY, MAPENTRY);
-        }
-        return entrySet;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets an iterator over the map entries.
-     * <p>
-     * For this map, this iterator is the fastest way to iterate over the entries.
-     * 
-     * @return an iterator
-     */
-    public MapIterator mapIterator() {
-        if (isEmpty()) {
-            return EmptyOrderedMapIterator.INSTANCE;
-        }
-        return new ViewMapIterator(this, KEY);
-    }
-
-    /**
-     * Gets an ordered iterator over the map entries.
-     * <p>
-     * This iterator allows both forward and reverse iteration over the entries.
-     * 
-     * @return an iterator
-     */
-    public OrderedMapIterator orderedMapIterator() {
-        if (isEmpty()) {
-            return EmptyOrderedMapIterator.INSTANCE;
-        }
-        return new ViewMapIterator(this, KEY);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the inverse map for comparison.
-     * 
-     * @return the inverse map
-     */
-    public BidiMap inverseBidiMap() {
-        return inverseOrderedBidiMap();
-    }
-
-    /**
-     * Gets the inverse map for comparison.
-     * 
-     * @return the inverse map
-     */
-    public OrderedBidiMap inverseOrderedBidiMap() {
-        if (inverse == null) {
-            inverse = new Inverse(this);
-        }
-        return inverse;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Compares for equals as per the API.
-     *
-     * @param obj  the object to compare to
-     * @return true if equal
-     */
-    public boolean equals(Object obj) {
-        return this.doEquals(obj, KEY);
-    }
-    
-    /**
-     * Gets the hash code value for this map as per the API.
-     *
-     * @return the hash code value for this map
-     */
-    public int hashCode() {
-        return this.doHashCode(KEY);
-    }
-    
-    /**
-     * Returns a string version of this Map in standard format.
-     * 
-     * @return a standard format string version of the map
-     */
-    public String toString() {
-        return this.doToString(KEY);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Common get logic, used to get by key or get by value
-     *
-     * @param obj  the key or value that we're looking for
-     * @param index  the KEY or VALUE int
-     * @return the key (if the value was mapped) or the value (if the
-     *         key was mapped); null if we couldn't find the specified
-     *         object
-     */
-    private Object doGet(final Comparable obj, final int index) {
-        checkNonNullComparable(obj, index);
-        Node node = lookup(obj, index);
-        return ((node == null) ? null : node.getData(oppositeIndex(index)));
-    }
-
-    /**
-     * Common put logic, differing only in the return value.
-     * 
-     * @param key  the key, always the main map key
-     * @param value  the value, always the main map value
-     * @param index  the KEY or VALUE int, for the return value only
-     * @return the previously mapped value
-     */
-    private Object doPut(final Comparable key, final Comparable value, final int index) {
-        checkKeyAndValue(key, value);
-        
-        // store previous and remove previous mappings
-        Object prev = (index == KEY ? doGet(key, KEY) :  doGet(value, VALUE));
-        doRemove(key, KEY);
-        doRemove(value, VALUE);
-        
-        Node node = rootNode[KEY];
-        if (node == null) {
-            // map is empty
-            Node root = new Node(key, value);
-            rootNode[KEY] = root;
-            rootNode[VALUE] = root;
-            grow();
-            
-        } else {
-            // add new mapping
-            while (true) {
-                int cmp = compare(key, node.getData(KEY));
-        
-                if (cmp == 0) {
-                    // shouldn't happen
-                    throw new IllegalArgumentException("Cannot store a duplicate key (\"" + key + "\") in this Map");
-                } else if (cmp < 0) {
-                    if (node.getLeft(KEY) != null) {
-                        node = node.getLeft(KEY);
-                    } else {
-                        Node newNode = new Node(key, value);
-        
-                        insertValue(newNode);
-                        node.setLeft(newNode, KEY);
-                        newNode.setParent(node, KEY);
-                        doRedBlackInsert(newNode, KEY);
-                        grow();
-        
-                        break;
-                    }
-                } else { // cmp > 0
-                    if (node.getRight(KEY) != null) {
-                        node = node.getRight(KEY);
-                    } else {
-                        Node newNode = new Node(key, value);
-        
-                        insertValue(newNode);
-                        node.setRight(newNode, KEY);
-                        newNode.setParent(node, KEY);
-                        doRedBlackInsert(newNode, KEY);
-                        grow();
-        
-                        break;
-                    }
-                }
-            }
-        }
-        return prev;
-    }
-
-    /**
-     * Remove by object (remove by key or remove by value)
-     *
-     * @param o the key, or value, that we're looking for
-     * @param index  the KEY or VALUE int
-     *
-     * @return the key, if remove by value, or the value, if remove by
-     *         key. null if the specified key or value could not be
-     *         found
-     */
-    private Object doRemove(final Comparable o, final int index) {
-        Node node = lookup(o, index);
-        Object rval = null;
-        if (node != null) {
-            rval = node.getData(oppositeIndex(index));
-            doRedBlackDelete(node);
-        }
-        return rval;
-    }
-
-    /**
-     * do the actual lookup of a piece of data
-     *
-     * @param data the key or value to be looked up
-     * @param index  the KEY or VALUE int
-     * @return the desired Node, or null if there is no mapping of the
-     *         specified data
-     */
-    private Node lookup(final Comparable data, final int index) {
-        Node rval = null;
-        Node node = rootNode[index];
-
-        while (node != null) {
-            int cmp = compare(data, node.getData(index));
-            if (cmp == 0) {
-                rval = node;
-                break;
-            } else {
-                node = (cmp < 0) ? node.getLeft(index) : node.getRight(index);
-            }
-        }
-
-        return rval;
-    }
-
-    /**
-     * get the next larger node from the specified node
-     *
-     * @param node the node to be searched from
-     * @param index  the KEY or VALUE int
-     * @return the specified node
-     */
-    private Node nextGreater(final Node node, final int index) {
-        Node rval = null;
-        if (node == null) {
-            rval = null;
-        } else if (node.getRight(index) != null) {
-            // everything to the node's right is larger. The least of
-            // the right node's descendants is the next larger node
-            rval = leastNode(node.getRight(index), index);
-        } else {
-            // traverse up our ancestry until we find an ancestor that
-            // is null or one whose left child is our ancestor. If we
-            // find a null, then this node IS the largest node in the
-            // tree, and there is no greater node. Otherwise, we are
-            // the largest node in the subtree on that ancestor's left
-            // ... and that ancestor is the next greatest node
-            Node parent = node.getParent(index);
-            Node child = node;
-
-            while ((parent != null) && (child == parent.getRight(index))) {
-                child = parent;
-                parent = parent.getParent(index);
-            }
-            rval = parent;
-        }
-        return rval;
-    }
-
-    /**
-     * get the next larger node from the specified node
-     *
-     * @param node the node to be searched from
-     * @param index  the KEY or VALUE int
-     * @return the specified node
-     */
-    private Node nextSmaller(final Node node, final int index) {
-        Node rval = null;
-        if (node == null) {
-            rval = null;
-        } else if (node.getLeft(index) != null) {
-            // everything to the node's left is smaller. The greatest of
-            // the left node's descendants is the next smaller node
-            rval = greatestNode(node.getLeft(index), index);
-        } else {
-            // traverse up our ancestry until we find an ancestor that
-            // is null or one whose right child is our ancestor. If we
-            // find a null, then this node IS the largest node in the
-            // tree, and there is no greater node. Otherwise, we are
-            // the largest node in the subtree on that ancestor's right
-            // ... and that ancestor is the next greatest node
-            Node parent = node.getParent(index);
-            Node child = node;
-
-            while ((parent != null) && (child == parent.getLeft(index))) {
-                child = parent;
-                parent = parent.getParent(index);
-            }
-            rval = parent;
-        }
-        return rval;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Get the opposite index of the specified index
-     *
-     * @param index  the KEY or VALUE int
-     * @return VALUE (if KEY was specified), else KEY
-     */
-    private static int oppositeIndex(final int index) {
-        // old trick ... to find the opposite of a value, m or n,
-        // subtract the value from the sum of the two possible
-        // values. (m + n) - m = n; (m + n) - n = m
-        return SUM_OF_INDICES - index;
-    }
-
-    /**
-     * Compare two objects
-     *
-     * @param o1  the first object
-     * @param o2  the second object
-     *
-     * @return negative value if o1 &lt; o2; 0 if o1 == o2; positive
-     *         value if o1 &gt; o2
-     */
-    private static int compare(final Comparable o1, final Comparable o2) {
-        return o1.compareTo(o2);
-    }
-
-    /**
-     * Find the least node from a given node.
-     *
-     * @param node  the node from which we will start searching
-     * @param index  the KEY or VALUE int
-     * @return the smallest node, from the specified node, in the
-     *         specified mapping
-     */
-    private static Node leastNode(final Node node, final int index) {
-        Node rval = node;
-        if (rval != null) {
-            while (rval.getLeft(index) != null) {
-                rval = rval.getLeft(index);
-            }
-        }
-        return rval;
-    }
-
-    /**
-     * Find the greatest node from a given node.
-     *
-     * @param node  the node from which we will start searching
-     * @param index  the KEY or VALUE int
-     * @return the greatest node, from the specified node
-     */
-    private static Node greatestNode(final Node node, final int index) {
-        Node rval = node;
-        if (rval != null) {
-            while (rval.getRight(index) != null) {
-                rval = rval.getRight(index);
-            }
-        }
-        return rval;
-    }
-
-    /**
-     * copy the color from one node to another, dealing with the fact
-     * that one or both nodes may, in fact, be null
-     *
-     * @param from the node whose color we're copying; may be null
-     * @param to the node whose color we're changing; may be null
-     * @param index  the KEY or VALUE int
-     */
-    private static void copyColor(final Node from, final Node to, final int index) {
-        if (to != null) {
-            if (from == null) {
-                // by default, make it black
-                to.setBlack(index);
-            } else {
-                to.copyColor(from, index);
-            }
-        }
-    }
-
-    /**
-     * is the specified node red? if the node does not exist, no, it's
-     * black, thank you
-     *
-     * @param node the node (may be null) in question
-     * @param index  the KEY or VALUE int
-     */
-    private static boolean isRed(final Node node, final int index) {
-        return ((node == null) ? false : node.isRed(index));
-    }
-
-    /**
-     * is the specified black red? if the node does not exist, sure,
-     * it's black, thank you
-     *
-     * @param node the node (may be null) in question
-     * @param index  the KEY or VALUE int
-     */
-    private static boolean isBlack(final Node node, final int index) {
-        return ((node == null) ? true : node.isBlack(index));
-    }
-
-    /**
-     * force a node (if it exists) red
-     *
-     * @param node the node (may be null) in question
-     * @param index  the KEY or VALUE int
-     */
-    private static void makeRed(final Node node, final int index) {
-        if (node != null) {
-            node.setRed(index);
-        }
-    }
-
-    /**
-     * force a node (if it exists) black
-     *
-     * @param node the node (may be null) in question
-     * @param index  the KEY or VALUE int
-     */
-    private static void makeBlack(final Node node, final int index) {
-        if (node != null) {
-            node.setBlack(index);
-        }
-    }
-
-    /**
-     * get a node's grandparent. mind you, the node, its parent, or
-     * its grandparent may not exist. no problem
-     *
-     * @param node the node (may be null) in question
-     * @param index  the KEY or VALUE int
-     */
-    private static Node getGrandParent(final Node node, final int index) {
-        return getParent(getParent(node, index), index);
-    }
-
-    /**
-     * get a node's parent. mind you, the node, or its parent, may not
-     * exist. no problem
-     *
-     * @param node the node (may be null) in question
-     * @param index  the KEY or VALUE int
-     */
-    private static Node getParent(final Node node, final int index) {
-        return ((node == null) ? null : node.getParent(index));
-    }
-
-    /**
-     * get a node's right child. mind you, the node may not exist. no
-     * problem
-     *
-     * @param node the node (may be null) in question
-     * @param index  the KEY or VALUE int
-     */
-    private static Node getRightChild(final Node node, final int index) {
-        return (node == null) ? null : node.getRight(index);
-    }
-
-    /**
-     * get a node's left child. mind you, the node may not exist. no
-     * problem
-     *
-     * @param node the node (may be null) in question
-     * @param index  the KEY or VALUE int
-     */
-    private static Node getLeftChild(final Node node, final int index) {
-        return (node == null) ? null : node.getLeft(index);
-    }
-
-    /**
-     * is this node its parent's left child? mind you, the node, or
-     * its parent, may not exist. no problem. if the node doesn't
-     * exist ... it's its non-existent parent's left child. If the
-     * node does exist but has no parent ... no, we're not the
-     * non-existent parent's left child. Otherwise (both the specified
-     * node AND its parent exist), check.
-     *
-     * @param node the node (may be null) in question
-     * @param index  the KEY or VALUE int
-     */
-    private static boolean isLeftChild(final Node node, final int index) {
-        return (node == null)
-            ? true
-            : ((node.getParent(index) == null) ?
-                false : (node == node.getParent(index).getLeft(index)));
-    }
-
-    /**
-     * is this node its parent's right child? mind you, the node, or
-     * its parent, may not exist. no problem. if the node doesn't
-     * exist ... it's its non-existent parent's right child. If the
-     * node does exist but has no parent ... no, we're not the
-     * non-existent parent's right child. Otherwise (both the
-     * specified node AND its parent exist), check.
-     *
-     * @param node the node (may be null) in question
-     * @param index  the KEY or VALUE int
-     */
-    private static boolean isRightChild(final Node node, final int index) {
-        return (node == null)
-            ? true
-            : ((node.getParent(index) == null) ? 
-                false : (node == node.getParent(index).getRight(index)));
-    }
-
-    /**
-     * do a rotate left. standard fare in the world of balanced trees
-     *
-     * @param node the node to be rotated
-     * @param index  the KEY or VALUE int
-     */
-    private void rotateLeft(final Node node, final int index) {
-        Node rightChild = node.getRight(index);
-        node.setRight(rightChild.getLeft(index), index);
-
-        if (rightChild.getLeft(index) != null) {
-            rightChild.getLeft(index).setParent(node, index);
-        }
-        rightChild.setParent(node.getParent(index), index);
-        
-        if (node.getParent(index) == null) {
-            // node was the root ... now its right child is the root
-            rootNode[index] = rightChild;
-        } else if (node.getParent(index).getLeft(index) == node) {
-            node.getParent(index).setLeft(rightChild, index);
-        } else {
-            node.getParent(index).setRight(rightChild, index);
-        }
-
-        rightChild.setLeft(node, index);
-        node.setParent(rightChild, index);
-    }
-
-    /**
-     * do a rotate right. standard fare in the world of balanced trees
-     *
-     * @param node the node to be rotated
-     * @param index  the KEY or VALUE int
-     */
-    private void rotateRight(final Node node, final int index) {
-        Node leftChild = node.getLeft(index);
-        node.setLeft(leftChild.getRight(index), index);
-        if (leftChild.getRight(index) != null) {
-            leftChild.getRight(index).setParent(node, index);
-        }
-        leftChild.setParent(node.getParent(index), index);
-
-        if (node.getParent(index) == null) {
-            // node was the root ... now its left child is the root
-            rootNode[index] = leftChild;
-        } else if (node.getParent(index).getRight(index) == node) {
-            node.getParent(index).setRight(leftChild, index);
-        } else {
-            node.getParent(index).setLeft(leftChild, index);
-        }
-
-        leftChild.setRight(node, index);
-        node.setParent(leftChild, index);
-    }
-
-    /**
-     * complicated red-black insert stuff. Based on Sun's TreeMap
-     * implementation, though it's barely recognizable any more
-     *
-     * @param insertedNode the node to be inserted
-     * @param index  the KEY or VALUE int
-     */
-    private void doRedBlackInsert(final Node insertedNode, final int index) {
-        Node currentNode = insertedNode;
-        makeRed(currentNode, index);
-
-        while ((currentNode != null)
-            && (currentNode != rootNode[index])
-            && (isRed(currentNode.getParent(index), index))) {
-            if (isLeftChild(getParent(currentNode, index), index)) {
-                Node y = getRightChild(getGrandParent(currentNode, index), index);
-
-                if (isRed(y, index)) {
-                    makeBlack(getParent(currentNode, index), index);
-                    makeBlack(y, index);
-                    makeRed(getGrandParent(currentNode, index), index);
-
-                    currentNode = getGrandParent(currentNode, index);
-                } else {
-                    if (isRightChild(currentNode, index)) {
-                        currentNode = getParent(currentNode, index);
-
-                        rotateLeft(currentNode, index);
-                    }
-
-                    makeBlack(getParent(currentNode, index), index);
-                    makeRed(getGrandParent(currentNode, index), index);
-
-                    if (getGrandParent(currentNode, index) != null) {
-                        rotateRight(getGrandParent(currentNode, index), index);
-                    }
-                }
-            } else {
-
-                // just like clause above, except swap left for right
-                Node y = getLeftChild(getGrandParent(currentNode, index), index);
-
-                if (isRed(y, index)) {
-                    makeBlack(getParent(currentNode, index), index);
-                    makeBlack(y, index);
-                    makeRed(getGrandParent(currentNode, index), index);
-
-                    currentNode = getGrandParent(currentNode, index);
-                } else {
-                    if (isLeftChild(currentNode, index)) {
-                        currentNode = getParent(currentNode, index);
-
-                        rotateRight(currentNode, index);
-                    }
-
-                    makeBlack(getParent(currentNode, index), index);
-                    makeRed(getGrandParent(currentNode, index), index);
-
-                    if (getGrandParent(currentNode, index) != null) {
-                        rotateLeft(getGrandParent(currentNode, index), index);
-                    }
-                }
-            }
-        }
-
-        makeBlack(rootNode[index], index);
-    }
-
-    /**
-     * complicated red-black delete stuff. Based on Sun's TreeMap
-     * implementation, though it's barely recognizable any more
-     *
-     * @param deletedNode the node to be deleted
-     */
-    private void doRedBlackDelete(final Node deletedNode) {
-        for (int index = FIRST_INDEX; index < NUMBER_OF_INDICES; index++) {
-            // if deleted node has both left and children, swap with
-            // the next greater node
-            if ((deletedNode.getLeft(index) != null) && (deletedNode.getRight(index) != null)) {
-                swapPosition(nextGreater(deletedNode, index), deletedNode, index);
-            }
-
-            Node replacement =
-                ((deletedNode.getLeft(index) != null) ? deletedNode.getLeft(index) : deletedNode.getRight(index));
-
-            if (replacement != null) {
-                replacement.setParent(deletedNode.getParent(index), index);
-
-                if (deletedNode.getParent(index) == null) {
-                    rootNode[index] = replacement;
-                } else if (deletedNode == deletedNode.getParent(index).getLeft(index)) {
-                    deletedNode.getParent(index).setLeft(replacement, index);
-                } else {
-                    deletedNode.getParent(index).setRight(replacement, index);
-                }
-
-                deletedNode.setLeft(null, index);
-                deletedNode.setRight(null, index);
-                deletedNode.setParent(null, index);
-
-                if (isBlack(deletedNode, index)) {
-                    doRedBlackDeleteFixup(replacement, index);
-                }
-            } else {
-
-                // replacement is null
-                if (deletedNode.getParent(index) == null) {
-
-                    // empty tree
-                    rootNode[index] = null;
-                } else {
-
-                    // deleted node had no children
-                    if (isBlack(deletedNode, index)) {
-                        doRedBlackDeleteFixup(deletedNode, index);
-                    }
-
-                    if (deletedNode.getParent(index) != null) {
-                        if (deletedNode == deletedNode.getParent(index).getLeft(index)) {
-                            deletedNode.getParent(index).setLeft(null, index);
-                        } else {
-                            deletedNode.getParent(index).setRight(null, index);
-                        }
-
-                        deletedNode.setParent(null, index);
-                    }
-                }
-            }
-        }
-        shrink();
-    }
-
-    /**
-     * complicated red-black delete stuff. Based on Sun's TreeMap
-     * implementation, though it's barely recognizable any more. This
-     * rebalances the tree (somewhat, as red-black trees are not
-     * perfectly balanced -- perfect balancing takes longer)
-     *
-     * @param replacementNode the node being replaced
-     * @param index  the KEY or VALUE int
-     */
-    private void doRedBlackDeleteFixup(final Node replacementNode, final int index) {
-        Node currentNode = replacementNode;
-
-        while ((currentNode != rootNode[index]) && (isBlack(currentNode, index))) {
-            if (isLeftChild(currentNode, index)) {
-                Node siblingNode = getRightChild(getParent(currentNode, index), index);
-
-                if (isRed(siblingNode, index)) {
-                    makeBlack(siblingNode, index);
-                    makeRed(getParent(currentNode, index), index);
-                    rotateLeft(getParent(currentNode, index), index);
-
-                    siblingNode = getRightChild(getParent(currentNode, index), index);
-                }
-
-                if (isBlack(getLeftChild(siblingNode, index), index)
-                    && isBlack(getRightChild(siblingNode, index), index)) {
-                    makeRed(siblingNode, index);
-
-                    currentNode = getParent(currentNode, index);
-                } else {
-                    if (isBlack(getRightChild(siblingNode, index), index)) {
-                        makeBlack(getLeftChild(siblingNode, index), index);
-                        makeRed(siblingNode, index);
-                        rotateRight(siblingNode, index);
-
-                        siblingNode = getRightChild(getParent(currentNode, index), index);
-                    }
-
-                    copyColor(getParent(currentNode, index), siblingNode, index);
-                    makeBlack(getParent(currentNode, index), index);
-                    makeBlack(getRightChild(siblingNode, index), index);
-                    rotateLeft(getParent(currentNode, index), index);
-
-                    currentNode = rootNode[index];
-                }
-            } else {
-                Node siblingNode = getLeftChild(getParent(currentNode, index), index);
-
-                if (isRed(siblingNode, index)) {
-                    makeBlack(siblingNode, index);
-                    makeRed(getParent(currentNode, index), index);
-                    rotateRight(getParent(currentNode, index), index);
-
-                    siblingNode = getLeftChild(getParent(currentNode, index), index);
-                }
-
-                if (isBlack(getRightChild(siblingNode, index), index)
-                    && isBlack(getLeftChild(siblingNode, index), index)) {
-                    makeRed(siblingNode, index);
-
-                    currentNode = getParent(currentNode, index);
-                } else {
-                    if (isBlack(getLeftChild(siblingNode, index), index)) {
-                        makeBlack(getRightChild(siblingNode, index), index);
-                        makeRed(siblingNode, index);
-                        rotateLeft(siblingNode, index);
-
-                        siblingNode = getLeftChild(getParent(currentNode, index), index);
-                    }
-
-                    copyColor(getParent(currentNode, index), siblingNode, index);
-                    makeBlack(getParent(currentNode, index), index);
-                    makeBlack(getLeftChild(siblingNode, index), index);
-                    rotateRight(getParent(currentNode, index), index);
-
-                    currentNode = rootNode[index];
-                }
-            }
-        }
-
-        makeBlack(currentNode, index);
-    }
-
-    /**
-     * swap two nodes (except for their content), taking care of
-     * special cases where one is the other's parent ... hey, it
-     * happens.
-     *
-     * @param x one node
-     * @param y another node
-     * @param index  the KEY or VALUE int
-     */
-    private void swapPosition(final Node x, final Node y, final int index) {
-        // Save initial values.
-        Node xFormerParent = x.getParent(index);
-        Node xFormerLeftChild = x.getLeft(index);
-        Node xFormerRightChild = x.getRight(index);
-        Node yFormerParent = y.getParent(index);
-        Node yFormerLeftChild = y.getLeft(index);
-        Node yFormerRightChild = y.getRight(index);
-        boolean xWasLeftChild = (x.getParent(index) != null) && (x == x.getParent(index).getLeft(index));
-        boolean yWasLeftChild = (y.getParent(index) != null) && (y == y.getParent(index).getLeft(index));
-
-        // Swap, handling special cases of one being the other's parent.
-        if (x == yFormerParent) { // x was y's parent
-            x.setParent(y, index);
-
-            if (yWasLeftChild) {
-                y.setLeft(x, index);
-                y.setRight(xFormerRightChild, index);
-            } else {
-                y.setRight(x, index);
-                y.setLeft(xFormerLeftChild, index);
-            }
-        } else {
-            x.setParent(yFormerParent, index);
-
-            if (yFormerParent != null) {
-                if (yWasLeftChild) {
-                    yFormerParent.setLeft(x, index);
-                } else {
-                    yFormerParent.setRight(x, index);
-                }
-            }
-
-            y.setLeft(xFormerLeftChild, index);
-            y.setRight(xFormerRightChild, index);
-        }
-
-        if (y == xFormerParent) { // y was x's parent
-            y.setParent(x, index);
-
-            if (xWasLeftChild) {
-                x.setLeft(y, index);
-                x.setRight(yFormerRightChild, index);
-            } else {
-                x.setRight(y, index);
-                x.setLeft(yFormerLeftChild, index);
-            }
-        } else {
-            y.setParent(xFormerParent, index);
-
-            if (xFormerParent != null) {
-                if (xWasLeftChild) {
-                    xFormerParent.setLeft(y, index);
-                } else {
-                    xFormerParent.setRight(y, index);
-                }
-            }
-
-            x.setLeft(yFormerLeftChild, index);
-            x.setRight(yFormerRightChild, index);
-        }
-
-        // Fix children's parent pointers
-        if (x.getLeft(index) != null) {
-            x.getLeft(index).setParent(x, index);
-        }
-
-        if (x.getRight(index) != null) {
-            x.getRight(index).setParent(x, index);
-        }
-
-        if (y.getLeft(index) != null) {
-            y.getLeft(index).setParent(y, index);
-        }
-
-        if (y.getRight(index) != null) {
-            y.getRight(index).setParent(y, index);
-        }
-
-        x.swapColors(y, index);
-
-        // Check if root changed
-        if (rootNode[index] == x) {
-            rootNode[index] = y;
-        } else if (rootNode[index] == y) {
-            rootNode[index] = x;
-        }
-    }
-
-    /**
-     * check if an object is fit to be proper input ... has to be
-     * Comparable and non-null
-     *
-     * @param o the object being checked
-     * @param index  the KEY or VALUE int (used to put the right word in the
-     *              exception message)
-     *
-     * @throws NullPointerException if o is null
-     * @throws ClassCastException if o is not Comparable
-     */
-    private static void checkNonNullComparable(final Object o, final int index) {
-        if (o == null) {
-            throw new NullPointerException(dataName[index] + " cannot be null");
-        }
-        if (!(o instanceof Comparable)) {
-            throw new ClassCastException(dataName[index] + " must be Comparable");
-        }
-    }
-
-    /**
-     * check a key for validity (non-null and implements Comparable)
-     *
-     * @param key the key to be checked
-     *
-     * @throws NullPointerException if key is null
-     * @throws ClassCastException if key is not Comparable
-     */
-    private static void checkKey(final Object key) {
-        checkNonNullComparable(key, KEY);
-    }
-
-    /**
-     * check a value for validity (non-null and implements Comparable)
-     *
-     * @param value the value to be checked
-     *
-     * @throws NullPointerException if value is null
-     * @throws ClassCastException if value is not Comparable
-     */
-    private static void checkValue(final Object value) {
-        checkNonNullComparable(value, VALUE);
-    }
-
-    /**
-     * check a key and a value for validity (non-null and implements
-     * Comparable)
-     *
-     * @param key the key to be checked
-     * @param value the value to be checked
-     *
-     * @throws NullPointerException if key or value is null
-     * @throws ClassCastException if key or value is not Comparable
-     */
-    private static void checkKeyAndValue(final Object key, final Object value) {
-        checkKey(key);
-        checkValue(value);
-    }
-
-    /**
-     * increment the modification count -- used to check for
-     * concurrent modification of the map through the map and through
-     * an Iterator from one of its Set or Collection views
-     */
-    private void modify() {
-        modifications++;
-    }
-
-    /**
-     * bump up the size and note that the map has changed
-     */
-    private void grow() {
-        modify();
-        nodeCount++;
-    }
-
-    /**
-     * decrement the size and note that the map has changed
-     */
-    private void shrink() {
-        modify();
-        nodeCount--;
-    }
-
-    /**
-     * insert a node by its value
-     *
-     * @param newNode the node to be inserted
-     *
-     * @throws IllegalArgumentException if the node already exists
-     *                                     in the value mapping
-     */
-    private void insertValue(final Node newNode) throws IllegalArgumentException {
-        Node node = rootNode[VALUE];
-
-        while (true) {
-            int cmp = compare(newNode.getData(VALUE), node.getData(VALUE));
-
-            if (cmp == 0) {
-                throw new IllegalArgumentException(
-                    "Cannot store a duplicate value (\"" + newNode.getData(VALUE) + "\") in this Map");
-            } else if (cmp < 0) {
-                if (node.getLeft(VALUE) != null) {
-                    node = node.getLeft(VALUE);
-                } else {
-                    node.setLeft(newNode, VALUE);
-                    newNode.setParent(node, VALUE);
-                    doRedBlackInsert(newNode, VALUE);
-
-                    break;
-                }
-            } else { // cmp > 0
-                if (node.getRight(VALUE) != null) {
-                    node = node.getRight(VALUE);
-                } else {
-                    node.setRight(newNode, VALUE);
-                    newNode.setParent(node, VALUE);
-                    doRedBlackInsert(newNode, VALUE);
-
-                    break;
-                }
-            }
-        }
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Compares for equals as per the API.
-     *
-     * @param obj  the object to compare to
-     * @param type  the KEY or VALUE int
-     * @return true if equal
-     */
-    private boolean doEquals(Object obj, final int type) {
-        if (obj == this) {
-            return true;
-        }
-        if (obj instanceof Map == false) {
-            return false;
-        }
-        Map other = (Map) obj;
-        if (other.size() != size()) {
-            return false;
-        }
-
-        if (nodeCount > 0) {
-            try {
-                for (MapIterator it = new ViewMapIterator(this, type); it.hasNext(); ) {
-                    Object key = it.next();
-                    Object value = it.getValue();
-                    if (value.equals(other.get(key)) == false) {
-                        return false;
-                    }
-                }
-            } catch (ClassCastException ex) {
-                return false;
-            } catch (NullPointerException ex) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Gets the hash code value for this map as per the API.
-     *
-     * @param type  the KEY or VALUE int
-     * @return the hash code value for this map
-     */
-    private int doHashCode(final int type) {
-        int total = 0;
-        if (nodeCount > 0) {
-            for (MapIterator it = new ViewMapIterator(this, type); it.hasNext(); ) {
-                Object key = it.next();
-                Object value = it.getValue();
-                total += (key.hashCode() ^ value.hashCode());
-            }
-        }
-        return total;
-    }
-    
-    /**
-     * Gets the string form of this map as per AbstractMap.
-     *
-     * @param type  the KEY or VALUE int
-     * @return the string form of this map
-     */
-    private String doToString(final int type) {
-        if (nodeCount == 0) {
-            return "{}";
-        }
-        StringBuffer buf = new StringBuffer(nodeCount * 32);
-        buf.append('{');
-        MapIterator it = new ViewMapIterator(this, type);
-        boolean hasNext = it.hasNext();
-        while (hasNext) {
-            Object key = it.next();
-            Object value = it.getValue();
-            buf.append(key == this ? "(this Map)" : key)
-               .append('=')
-               .append(value == this ? "(this Map)" : value);
-
-            hasNext = it.hasNext();
-            if (hasNext) {
-                buf.append(", ");
-            }
-        }
-
-        buf.append('}');
-        return buf.toString();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * A view of this map.
-     */
-    static class View extends AbstractSet {
-        
-        /** The parent map. */
-        protected final TreeBidiMap main;
-        /** Whether to return KEY or VALUE order. */
-        protected final int orderType;
-        /** Whether to return KEY, VALUE, MAPENTRY or INVERSEMAPENTRY data. */
-        protected final int dataType;
-
-        /**
-         * Constructor.
-         *
-         * @param main  the main map
-         * @param orderType  the KEY or VALUE int for the order
-         * @param dataType  the KEY, VALUE, MAPENTRY or INVERSEMAPENTRY int
-         */
-        View(final TreeBidiMap main, final int orderType, final int dataType) {
-            super();
-            this.main = main;
-            this.orderType = orderType;
-            this.dataType = dataType;
-        }
-        
-        public Iterator iterator() {
-            return new ViewIterator(main, orderType, dataType);
-        }
-
-        public int size() {
-            return main.size();
-        }
-
-        public boolean contains(final Object obj) {
-            checkNonNullComparable(obj, dataType);
-            return (main.lookup((Comparable) obj, dataType) != null);
-        }
-
-        public boolean remove(final Object obj) {
-            return (main.doRemove((Comparable) obj, dataType) != null);
-        }
-
-        public void clear() {
-            main.clear();
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * An iterator over the map.
-     */
-    static class ViewIterator implements OrderedIterator {
-
-        /** The parent map. */
-        protected final TreeBidiMap main;
-        /** Whether to return KEY or VALUE order. */
-        protected final int orderType;
-        /** Whether to return KEY, VALUE, MAPENTRY or INVERSEMAPENTRY data. */
-        protected final int dataType;
-        /** The last node returned by the iterator. */
-        protected Node lastReturnedNode;
-        /** The next node to be returned by the iterator. */
-        protected Node nextNode;
-        /** The previous node in the sequence returned by the iterator. */
-        protected Node previousNode;
-        /** The modification count. */
-        private int expectedModifications;
-
-        /**
-         * Constructor.
-         *
-         * @param main  the main map
-         * @param orderType  the KEY or VALUE int for the order
-         * @param dataType  the KEY, VALUE, MAPENTRY or INVERSEMAPENTRY int
-         */
-        ViewIterator(final TreeBidiMap main, final int orderType, final int dataType) {
-            super();
-            this.main = main;
-            this.orderType = orderType;
-            this.dataType = dataType;
-            expectedModifications = main.modifications;
-            nextNode = leastNode(main.rootNode[orderType], orderType);
-            lastReturnedNode = null;
-            previousNode = null;
-        }
-
-        public final boolean hasNext() {
-            return (nextNode != null);
-        }
-
-        public final Object next() {
-            if (nextNode == null) {
-                throw new NoSuchElementException();
-            }
-            if (main.modifications != expectedModifications) {
-                throw new ConcurrentModificationException();
-            }
-            lastReturnedNode = nextNode;
-            previousNode = nextNode;
-            nextNode = main.nextGreater(nextNode, orderType);
-            return doGetData();
-        }
-
-        public boolean hasPrevious() {
-            return (previousNode != null);
-        }
-
-        public Object previous() {
-            if (previousNode == null) {
-                throw new NoSuchElementException();
-            }
-            if (main.modifications != expectedModifications) {
-                throw new ConcurrentModificationException();
-            }
-            nextNode = lastReturnedNode;
-            if (nextNode == null) {
-                nextNode = main.nextGreater(previousNode, orderType);
-            }
-            lastReturnedNode = previousNode;
-            previousNode = main.nextSmaller(previousNode, orderType);
-            return doGetData();
-        }
-
-        /**
-         * Gets the data value for the lastReturnedNode field.
-         * @return the data value
-         */
-        protected Object doGetData() {
-            switch (dataType) {
-                case KEY:
-                    return lastReturnedNode.getKey();
-                case VALUE:
-                    return lastReturnedNode.getValue();
-                case MAPENTRY:
-                    return lastReturnedNode;
-                case INVERSEMAPENTRY:
-                    return new UnmodifiableMapEntry(lastReturnedNode.getValue(), lastReturnedNode.getKey());
-            }
-            return null;
-        }
-
-        public final void remove() {
-            if (lastReturnedNode == null) {
-                throw new IllegalStateException();
-            }
-            if (main.modifications != expectedModifications) {
-                throw new ConcurrentModificationException();
-            }
-            main.doRedBlackDelete(lastReturnedNode);
-            expectedModifications++;
-            lastReturnedNode = null;
-            if (nextNode == null) {
-                previousNode = TreeBidiMap.greatestNode(main.rootNode[orderType], orderType);
-            } else {
-                previousNode = main.nextSmaller(nextNode, orderType);
-            }
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * An iterator over the map.
-     */
-    static class ViewMapIterator extends ViewIterator implements OrderedMapIterator {
-
-        private final int oppositeType;
-        
-        /**
-         * Constructor.
-         *
-         * @param main  the main map
-         * @param orderType  the KEY or VALUE int for the order
-         */
-        ViewMapIterator(final TreeBidiMap main, final int orderType) {
-            super(main, orderType, orderType);
-            this.oppositeType = oppositeIndex(dataType);
-        }
-        
-        public Object getKey() {
-            if (lastReturnedNode == null) {
-                throw new IllegalStateException("Iterator getKey() can only be called after next() and before remove()");
-            }
-            return lastReturnedNode.getData(dataType);
-        }
-
-        public Object getValue() {
-            if (lastReturnedNode == null) {
-                throw new IllegalStateException("Iterator getValue() can only be called after next() and before remove()");
-            }
-            return lastReturnedNode.getData(oppositeType);
-        }
-
-        public Object setValue(final Object obj) {
-            throw new UnsupportedOperationException();
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * A view of this map.
-     */
-    static class EntryView extends View {
-        
-        private final int oppositeType;
-        
-        /**
-         * Constructor.
-         *
-         * @param main  the main map
-         * @param orderType  the KEY or VALUE int for the order
-         * @param dataType  the MAPENTRY or INVERSEMAPENTRY int for the returned data
-         */
-        EntryView(final TreeBidiMap main, final int orderType, final int dataType) {
-            super(main, orderType, dataType);
-            this.oppositeType = TreeBidiMap.oppositeIndex(orderType);
-        }
-        
-        public boolean contains(Object obj) {
-            if (obj instanceof Map.Entry == false) {
-                return false;
-            }
-            Map.Entry entry = (Map.Entry) obj;
-            Object value = entry.getValue();
-            Node node = main.lookup((Comparable) entry.getKey(), orderType);
-            return (node != null && node.getData(oppositeType).equals(value));
-        }
-
-        public boolean remove(Object obj) {
-            if (obj instanceof Map.Entry == false) {
-                return false;
-            }
-            Map.Entry entry = (Map.Entry) obj;
-            Object value = entry.getValue();
-            Node node = main.lookup((Comparable) entry.getKey(), orderType);
-            if (node != null && node.getData(oppositeType).equals(value)) {
-                main.doRedBlackDelete(node);
-                return true;
-            }
-            return false;
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * A node used to store the data.
-     */
-    static class Node implements Map.Entry, KeyValue {
-
-        private Comparable[] data;
-        private Node[] leftNode;
-        private Node[] rightNode;
-        private Node[] parentNode;
-        private boolean[] blackColor;
-        private int hashcodeValue;
-        private boolean calculatedHashCode;
-
-        /**
-         * Make a new cell with given key and value, and with null
-         * links, and black (true) colors.
-         *
-         * @param key
-         * @param value
-         */
-        Node(final Comparable key, final Comparable value) {
-            super();
-            data = new Comparable[] { key, value };
-            leftNode = new Node[2];
-            rightNode = new Node[2];
-            parentNode = new Node[2];
-            blackColor = new boolean[] { true, true };
-            calculatedHashCode = false;
-        }
-
-        /**
-         * Get the specified data.
-         *
-         * @param index  the KEY or VALUE int
-         * @return the key or value
-         */
-        private Comparable getData(final int index) {
-            return data[index];
-        }
-
-        /**
-         * Set this node's left node.
-         *
-         * @param node  the new left node
-         * @param index  the KEY or VALUE int
-         */
-        private void setLeft(final Node node, final int index) {
-            leftNode[index] = node;
-        }
-
-        /**
-         * Get the left node.
-         *
-         * @param index  the KEY or VALUE int
-         * @return the left node, may be null
-         */
-        private Node getLeft(final int index) {
-            return leftNode[index];
-        }
-
-        /**
-         * Set this node's right node.
-         *
-         * @param node  the new right node
-         * @param index  the KEY or VALUE int
-         */
-        private void setRight(final Node node, final int index) {
-            rightNode[index] = node;
-        }
-
-        /**
-         * Get the right node.
-         *
-         * @param index  the KEY or VALUE int
-         * @return the right node, may be null
-         */
-        private Node getRight(final int index) {
-            return rightNode[index];
-        }
-
-        /**
-         * Set this node's parent node.
-         *
-         * @param node  the new parent node
-         * @param index  the KEY or VALUE int
-         */
-        private void setParent(final Node node, final int index) {
-            parentNode[index] = node;
-        }
-
-        /**
-         * Get the parent node.
-         *
-         * @param index  the KEY or VALUE int
-         * @return the parent node, may be null
-         */
-        private Node getParent(final int index) {
-            return parentNode[index];
-        }
-
-        /**
-         * Exchange colors with another node.
-         *
-         * @param node  the node to swap with
-         * @param index  the KEY or VALUE int
-         */
-        private void swapColors(final Node node, final int index) {
-            // Swap colors -- old hacker's trick
-            blackColor[index]      ^= node.blackColor[index];
-            node.blackColor[index] ^= blackColor[index];
-            blackColor[index]      ^= node.blackColor[index];
-        }
-
-        /**
-         * Is this node black?
-         *
-         * @param index  the KEY or VALUE int
-         * @return true if black (which is represented as a true boolean)
-         */
-        private boolean isBlack(final int index) {
-            return blackColor[index];
-        }
-
-        /**
-         * Is this node red?
-         *
-         * @param index  the KEY or VALUE int
-         * @return true if non-black
-         */
-        private boolean isRed(final int index) {
-            return !blackColor[index];
-        }
-
-        /**
-         * Make this node black.
-         *
-         * @param index  the KEY or VALUE int
-         */
-        private void setBlack(final int index) {
-            blackColor[index] = true;
-        }
-
-        /**
-         * Make this node red.
-         *
-         * @param index  the KEY or VALUE int
-         */
-        private void setRed(final int index) {
-            blackColor[index] = false;
-        }
-
-        /**
-         * Make this node the same color as another
-         *
-         * @param node  the node whose color we're adopting
-         * @param index  the KEY or VALUE int
-         */
-        private void copyColor(final Node node, final int index) {
-            blackColor[index] = node.blackColor[index];
-        }
-
-        //-------------------------------------------------------------------
-        /**
-         * Gets the key.
-         * 
-         * @return the key corresponding to this entry.
-         */
-        public Object getKey() {
-            return data[KEY];
-        }
-
-        /**
-         * Gets the value.
-         * 
-         * @return the value corresponding to this entry.
-         */
-        public Object getValue() {
-            return data[VALUE];
-        }
-
-        /**
-         * Optional operation that is not permitted in this implementation
-         *
-         * @param ignored
-         * @return does not return
-         * @throws UnsupportedOperationException always
-         */
-        public Object setValue(final Object ignored)
-                throws UnsupportedOperationException {
-            throw new UnsupportedOperationException(
-                "Map.Entry.setValue is not supported");
-        }
-
-        /**
-         * Compares the specified object with this entry for equality.
-         * Returns true if the given object is also a map entry and
-         * the two entries represent the same mapping.
-         *
-         * @param obj  the object to be compared for equality with this entry.
-         * @return true if the specified object is equal to this entry.
-         */
-        public boolean equals(final Object obj) {
-            if (obj == this) {
-                return true;
-            }
-            if (!(obj instanceof Map.Entry)) {
-                return false;
-            }
-            Map.Entry e = (Map.Entry) obj;
-            return data[KEY].equals(e.getKey()) && data[VALUE].equals(e.getValue());
-        }
-
-        /**
-         * @return the hash code value for this map entry.
-         */
-        public int hashCode() {
-            if (!calculatedHashCode) {
-                hashcodeValue = data[KEY].hashCode() ^ data[VALUE].hashCode();
-                calculatedHashCode = true;
-            }
-            return hashcodeValue;
-        }
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * A node used to store the data.
-     */
-    static class Inverse implements OrderedBidiMap {
-        
-        /** The parent map. */
-        private final TreeBidiMap main;
-        /** Store the keySet once created. */
-        private Set keySet;
-        /** Store the valuesSet once created. */
-        private Set valuesSet;
-        /** Store the entrySet once created. */
-        private Set entrySet;
-        
-        /**
-         * Constructor.
-         * @param main  the main map
-         */
-        Inverse(final TreeBidiMap main) {
-            super();
-            this.main = main;
-        }
-
-        public int size() {
-            return main.size();
-        }
-
-        public boolean isEmpty() {
-            return main.isEmpty();
-        }
-
-        public Object get(final Object key) {
-            return main.getKey(key);
-        }
-
-        public Object getKey(final Object value) {
-            return main.get(value);
-        }
-
-        public boolean containsKey(final Object key) {
-            return main.containsValue(key);
-        }
-
-        public boolean containsValue(final Object value) {
-            return main.containsKey(value);
-        }
-
-        public Object firstKey() {
-            if (main.nodeCount == 0) {
-                throw new NoSuchElementException("Map is empty");
-            }
-            return TreeBidiMap.leastNode(main.rootNode[VALUE], VALUE).getValue();
-        }
-
-        public Object lastKey() {
-            if (main.nodeCount == 0) {
-                throw new NoSuchElementException("Map is empty");
-            }
-            return TreeBidiMap.greatestNode(main.rootNode[VALUE], VALUE).getValue();
-        }
-    
-        public Object nextKey(Object key) {
-            checkKey(key);
-            Node node = main.nextGreater(main.lookup((Comparable) key, VALUE), VALUE);
-            return (node == null ? null : node.getValue());
-        }
-
-        public Object previousKey(Object key) {
-            checkKey(key);
-            Node node = main.nextSmaller(main.lookup((Comparable) key, VALUE), VALUE);
-            return (node == null ? null : node.getValue());
-        }
-
-        public Object put(final Object key, final Object value) {
-            return main.doPut((Comparable) value, (Comparable) key, VALUE);
-        }
-
-        public void putAll(Map map) {
-            Iterator it = map.entrySet().iterator();
-            while (it.hasNext()) {
-                Map.Entry entry = (Map.Entry) it.next();
-                put(entry.getKey(), entry.getValue());
-            }
-        }
-        
-        public Object remove(final Object key) {
-            return main.removeValue(key);
-        }
-
-        public Object removeValue(final Object value) {
-            return main.remove(value);
-        }
-
-        public void clear() {
-            main.clear();
-        }
-
-        public Set keySet() {
-            if (keySet == null) {
-                keySet = new View(main, VALUE, VALUE);
-            }
-            return keySet;
-        }
-
-        public Collection values() {
-            if (valuesSet == null) {
-                valuesSet = new View(main, VALUE, KEY);
-            }
-            return valuesSet;
-        }
-
-        public Set entrySet() {
-            if (entrySet == null) {
-                return new EntryView(main, VALUE, INVERSEMAPENTRY);
-            }
-            return entrySet;
-        }
-        
-        public MapIterator mapIterator() {
-            if (isEmpty()) {
-                return EmptyOrderedMapIterator.INSTANCE;
-            }
-            return new ViewMapIterator(main, VALUE);
-        }
-
-        public OrderedMapIterator orderedMapIterator() {
-            if (isEmpty()) {
-                return EmptyOrderedMapIterator.INSTANCE;
-            }
-            return new ViewMapIterator(main, VALUE);
-        }
-
-        public BidiMap inverseBidiMap() {
-            return main;
-        }
-        
-        public OrderedBidiMap inverseOrderedBidiMap() {
-            return main;
-        }
-        
-        public boolean equals(Object obj) {
-            return main.doEquals(obj, VALUE);
-        }
-    
-        public int hashCode() {
-            return main.doHashCode(VALUE);
-        }
-    
-        public String toString() {
-            return main.doToString(VALUE);
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/UnmodifiableBidiMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/UnmodifiableBidiMap.java
deleted file mode 100755
index 6da8c98..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/UnmodifiableBidiMap.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bidimap;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.collections.BidiMap;
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.Unmodifiable;
-import org.apache.commons.collections.collection.UnmodifiableCollection;
-import org.apache.commons.collections.iterators.UnmodifiableMapIterator;
-import org.apache.commons.collections.map.UnmodifiableEntrySet;
-import org.apache.commons.collections.set.UnmodifiableSet;
-
-/**
- * Decorates another <code>BidiMap</code> to ensure it can't be altered.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * 
- * @author Stephen Colebourne
- */
-public final class UnmodifiableBidiMap
-        extends AbstractBidiMapDecorator implements Unmodifiable {
-    
-    /** The inverse unmodifiable map */
-    private UnmodifiableBidiMap inverse;
-
-    /**
-     * Factory method to create an unmodifiable map.
-     * <p>
-     * If the map passed in is already unmodifiable, it is returned.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @return an unmodifiable BidiMap
-     * @throws IllegalArgumentException if map is null
-     */
-    public static BidiMap decorate(BidiMap map) {
-        if (map instanceof Unmodifiable) {
-            return map;
-        }
-        return new UnmodifiableBidiMap(map);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if map is null
-     */
-    private UnmodifiableBidiMap(BidiMap map) {
-        super(map);
-    }
-
-    //-----------------------------------------------------------------------
-    public void clear() {
-        throw new UnsupportedOperationException();
-    }
-
-    public Object put(Object key, Object value) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void putAll(Map mapToCopy) {
-        throw new UnsupportedOperationException();
-    }
-
-    public Object remove(Object key) {
-        throw new UnsupportedOperationException();
-    }
-
-    public Set entrySet() {
-        Set set = super.entrySet();
-        return UnmodifiableEntrySet.decorate(set);
-    }
-
-    public Set keySet() {
-        Set set = super.keySet();
-        return UnmodifiableSet.decorate(set);
-    }
-
-    public Collection values() {
-        Collection coll = super.values();
-        return UnmodifiableCollection.decorate(coll);
-    }
-
-    //-----------------------------------------------------------------------
-    public Object removeValue(Object value) {
-        throw new UnsupportedOperationException();
-    }
-
-    public MapIterator mapIterator() {
-        MapIterator it = getBidiMap().mapIterator();
-        return UnmodifiableMapIterator.decorate(it);
-    }
-
-    public BidiMap inverseBidiMap() {
-        if (inverse == null) {
-            inverse = new UnmodifiableBidiMap(getBidiMap().inverseBidiMap());
-            inverse.inverse = this;
-        }
-        return inverse;
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/UnmodifiableOrderedBidiMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/UnmodifiableOrderedBidiMap.java
deleted file mode 100755
index e3d0c63..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/UnmodifiableOrderedBidiMap.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bidimap;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.collections.BidiMap;
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.OrderedBidiMap;
-import org.apache.commons.collections.OrderedMapIterator;
-import org.apache.commons.collections.Unmodifiable;
-import org.apache.commons.collections.collection.UnmodifiableCollection;
-import org.apache.commons.collections.iterators.UnmodifiableOrderedMapIterator;
-import org.apache.commons.collections.map.UnmodifiableEntrySet;
-import org.apache.commons.collections.set.UnmodifiableSet;
-
-/**
- * Decorates another <code>OrderedBidiMap</code> to ensure it can't be altered.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * 
- * @author Stephen Colebourne
- */
-public final class UnmodifiableOrderedBidiMap
-        extends AbstractOrderedBidiMapDecorator implements Unmodifiable {
-    
-    /** The inverse unmodifiable map */
-    private UnmodifiableOrderedBidiMap inverse;
-
-    /**
-     * Factory method to create an unmodifiable map.
-     * <p>
-     * If the map passed in is already unmodifiable, it is returned.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @return an unmodifiable OrderedBidiMap
-     * @throws IllegalArgumentException if map is null
-     */
-    public static OrderedBidiMap decorate(OrderedBidiMap map) {
-        if (map instanceof Unmodifiable) {
-            return map;
-        }
-        return new UnmodifiableOrderedBidiMap(map);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if map is null
-     */
-    private UnmodifiableOrderedBidiMap(OrderedBidiMap map) {
-        super(map);
-    }
-
-    //-----------------------------------------------------------------------
-    public void clear() {
-        throw new UnsupportedOperationException();
-    }
-
-    public Object put(Object key, Object value) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void putAll(Map mapToCopy) {
-        throw new UnsupportedOperationException();
-    }
-
-    public Object remove(Object key) {
-        throw new UnsupportedOperationException();
-    }
-
-    public Set entrySet() {
-        Set set = super.entrySet();
-        return UnmodifiableEntrySet.decorate(set);
-    }
-
-    public Set keySet() {
-        Set set = super.keySet();
-        return UnmodifiableSet.decorate(set);
-    }
-
-    public Collection values() {
-        Collection coll = super.values();
-        return UnmodifiableCollection.decorate(coll);
-    }
-
-    //-----------------------------------------------------------------------
-    public Object removeValue(Object value) {
-        throw new UnsupportedOperationException();
-    }
-
-    public MapIterator mapIterator() {
-        return orderedMapIterator();
-    }
-
-    public BidiMap inverseBidiMap() {
-        return inverseOrderedBidiMap();
-    }
-    
-    //-----------------------------------------------------------------------
-    public OrderedMapIterator orderedMapIterator() {
-        OrderedMapIterator it = getOrderedBidiMap().orderedMapIterator();
-        return UnmodifiableOrderedMapIterator.decorate(it);
-    }
-
-    public OrderedBidiMap inverseOrderedBidiMap() {
-        if (inverse == null) {
-            inverse = new UnmodifiableOrderedBidiMap(getOrderedBidiMap().inverseOrderedBidiMap());
-            inverse.inverse = this;
-        }
-        return inverse;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/UnmodifiableSortedBidiMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/UnmodifiableSortedBidiMap.java
deleted file mode 100755
index dc50fa0..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/UnmodifiableSortedBidiMap.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.bidimap;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedMap;
-
-import org.apache.commons.collections.BidiMap;
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.OrderedBidiMap;
-import org.apache.commons.collections.OrderedMapIterator;
-import org.apache.commons.collections.SortedBidiMap;
-import org.apache.commons.collections.Unmodifiable;
-import org.apache.commons.collections.collection.UnmodifiableCollection;
-import org.apache.commons.collections.iterators.UnmodifiableOrderedMapIterator;
-import org.apache.commons.collections.map.UnmodifiableEntrySet;
-import org.apache.commons.collections.map.UnmodifiableSortedMap;
-import org.apache.commons.collections.set.UnmodifiableSet;
-
-/**
- * Decorates another <code>SortedBidiMap</code> to ensure it can't be altered.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * 
- * @author Stephen Colebourne
- */
-public final class UnmodifiableSortedBidiMap
-        extends AbstractSortedBidiMapDecorator implements Unmodifiable {
-    
-    /** The inverse unmodifiable map */
-    private UnmodifiableSortedBidiMap inverse;
-
-    /**
-     * Factory method to create an unmodifiable map.
-     * <p>
-     * If the map passed in is already unmodifiable, it is returned.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @return an unmodifiable SortedBidiMap
-     * @throws IllegalArgumentException if map is null
-     */
-    public static SortedBidiMap decorate(SortedBidiMap map) {
-        if (map instanceof Unmodifiable) {
-            return map;
-        }
-        return new UnmodifiableSortedBidiMap(map);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if map is null
-     */
-    private UnmodifiableSortedBidiMap(SortedBidiMap map) {
-        super(map);
-    }
-
-    //-----------------------------------------------------------------------
-    public void clear() {
-        throw new UnsupportedOperationException();
-    }
-
-    public Object put(Object key, Object value) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void putAll(Map mapToCopy) {
-        throw new UnsupportedOperationException();
-    }
-
-    public Object remove(Object key) {
-        throw new UnsupportedOperationException();
-    }
-
-    public Set entrySet() {
-        Set set = super.entrySet();
-        return UnmodifiableEntrySet.decorate(set);
-    }
-
-    public Set keySet() {
-        Set set = super.keySet();
-        return UnmodifiableSet.decorate(set);
-    }
-
-    public Collection values() {
-        Collection coll = super.values();
-        return UnmodifiableCollection.decorate(coll);
-    }
-
-    //-----------------------------------------------------------------------
-    public Object removeValue(Object value) {
-        throw new UnsupportedOperationException();
-    }
-
-    public MapIterator mapIterator() {
-        return orderedMapIterator();
-    }
-
-    public BidiMap inverseBidiMap() {
-        return inverseSortedBidiMap();
-    }
-    
-    //-----------------------------------------------------------------------
-    public OrderedMapIterator orderedMapIterator() {
-        OrderedMapIterator it = getSortedBidiMap().orderedMapIterator();
-        return UnmodifiableOrderedMapIterator.decorate(it);
-    }
-
-    public OrderedBidiMap inverseOrderedBidiMap() {
-        return inverseSortedBidiMap();
-    }
-
-    //-----------------------------------------------------------------------
-    public SortedBidiMap inverseSortedBidiMap() {
-        if (inverse == null) {
-            inverse = new UnmodifiableSortedBidiMap(getSortedBidiMap().inverseSortedBidiMap());
-            inverse.inverse = this;
-        }
-        return inverse;
-    }
-
-    public SortedMap subMap(Object fromKey, Object toKey) {
-        SortedMap sm = getSortedBidiMap().subMap(fromKey, toKey);
-        return UnmodifiableSortedMap.decorate(sm);
-    }
-
-    public SortedMap headMap(Object toKey) {
-        SortedMap sm = getSortedBidiMap().headMap(toKey);
-        return UnmodifiableSortedMap.decorate(sm);
-    }
-
-    public SortedMap tailMap(Object fromKey) {
-        SortedMap sm = getSortedBidiMap().tailMap(fromKey);
-        return UnmodifiableSortedMap.decorate(sm);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/package.html b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/package.html
deleted file mode 100755
index 951eadb..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/bidimap/package.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!-- $Id: package.html,v 1.1 2009/05/27 22:16:32 mparker Exp $ -->
- <!--
-   Copyright 2003-2004 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-  -->
-<BODY>
-<p>
-This package contains implementations of the
-{@link org.apache.commons.collections.BidiMap BidiMap},
-{@link org.apache.commons.collections.OrderedBidiMap OrderedBidiMap} and 
-{@link org.apache.commons.collections.SortedBidiMap SortedBidiMap} interfaces.
-A BidiMap is an extension to Map that allows keys and values to be looked up with equal ease.
-One example usage is a system communicating to a legacy datasource that must convert codes
-from the new format to the old format and vice versa.
-<p>
-The following implementations are provided in the package:
-<ul>
-<li>DualHashBidiMap - uses two HashMaps to implement BidiMap
-<li>DualTreeBidiMap - uses two TreeMaps to implement SortedBidiMap
-<li>TreeBidiMap - red-black tree implementation of OrderedBidiMap
-</ul>
-<p>
-The following decorators are provided in the package:
-<ul>
-<li>Unmodifiable - ensures the map cannot be altered
-<!--
-<li>Synchronized - synchronizes method access for multi-threaded environments
-<li>Predicated - ensures that only elements that are valid according to a predicate can be added
-<li>Typed - ensures that only elements that are of a specific type can be added
-<li>Transformed - transforms each element added
-<li>FixedSize - ensures that the size of the map cannot change
-<li>Lazy - creates objects in the map on demand
-<li>ListOrdered - ensures that insertion order is retained-->
-</ul>
-</pre>
-</BODY>
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/AbstractBufferDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/AbstractBufferDecorator.java
deleted file mode 100755
index 1f02c17..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/AbstractBufferDecorator.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.buffer;
-
-import org.apache.commons.collections.Buffer;
-import org.apache.commons.collections.collection.AbstractCollectionDecorator;
-
-/**
- * Decorates another <code>Buffer</code> to provide additional behaviour.
- * <p>
- * Methods are forwarded directly to the decorated buffer.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * 
- * @author Stephen Colebourne
- */
-public abstract class AbstractBufferDecorator extends AbstractCollectionDecorator implements Buffer {
-
-    /**
-     * Constructor only used in deserialization, do not use otherwise.
-     * @since Commons Collections 3.1
-     */
-    protected AbstractBufferDecorator() {
-        super();
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param buffer  the buffer to decorate, must not be null
-     * @throws IllegalArgumentException if list is null
-     */
-    protected AbstractBufferDecorator(Buffer buffer) {
-        super(buffer);
-    }
-
-    /**
-     * Gets the buffer being decorated.
-     * 
-     * @return the decorated buffer
-     */
-    protected Buffer getBuffer() {
-        return (Buffer) getCollection();
-    }
-
-    //-----------------------------------------------------------------------
-    public Object get() {
-        return getBuffer().get();
-    }
-
-    public Object remove() {
-        return getBuffer().remove();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/BlockingBuffer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/BlockingBuffer.java
deleted file mode 100755
index 43de3ed..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/BlockingBuffer.java
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- *  Copyright 2003-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.buffer;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.Collection;
-
-import org.apache.commons.collections.Buffer;
-import org.apache.commons.collections.BufferUnderflowException;
-
-/**
- * Decorates another <code>Buffer</code> to make {@link #get()} and
- * {@link #remove()} block when the <code>Buffer</code> is empty.
- * <p>
- * If either <code>get</code> or <code>remove</code> is called on an empty
- * <code>Buffer</code>, the calling thread waits for notification that
- * an <code>add</code> or <code>addAll</code> operation has completed.
- * <p>
- * When one or more entries are added to an empty <code>Buffer</code>,
- * all threads blocked in <code>get</code> or <code>remove</code> are notified.
- * There is no guarantee that concurrent blocked <code>get</code> or
- * <code>remove</code> requests will be "unblocked" and receive data in the
- * order that they arrive.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- * This class contains an extra field in 3.2, however the serialization
- * specification will handle this gracefully.
- *
- * @author Stephen Colebourne
- * @author Janek Bogucki
- * @author Phil Steitz
- * @author James Carman
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * @since Commons Collections 3.0
- */
-public class BlockingBuffer extends SynchronizedBuffer {
-
-    /** Serialization version. */
-    private static final long serialVersionUID = 1719328905017860541L;
-    /** The timeout value in milliseconds. */
-    private final long timeout;
-
-    /**
-     * Factory method to create a blocking buffer.
-     *
-     * @param buffer the buffer to decorate, must not be null
-     * @return a new blocking Buffer
-     * @throws IllegalArgumentException if buffer is null
-     */
-    public static Buffer decorate(Buffer buffer) {
-        return new BlockingBuffer(buffer);
-    }
-
-    /**
-     * Factory method to create a blocking buffer with a timeout value.
-     *
-     * @param buffer  the buffer to decorate, must not be null
-     * @param timeoutMillis  the timeout value in milliseconds, zero or less for no timeout
-     * @return a new blocking buffer
-     * @throws IllegalArgumentException if the buffer is null
-     * @since Commons Collections 3.2
-     */
-    public static Buffer decorate(Buffer buffer, long timeoutMillis) {
-        return new BlockingBuffer(buffer, timeoutMillis);
-    }
-
-    //-----------------------------------------------------------------------    
-    /**
-     * Constructor that wraps (not copies).
-     *
-     * @param buffer the buffer to decorate, must not be null
-     * @throws IllegalArgumentException if the buffer is null
-     */
-    protected BlockingBuffer(Buffer buffer) {
-        super(buffer);
-        this.timeout = 0;
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     *
-     * @param buffer  the buffer to decorate, must not be null
-     * @param timeoutMillis  the timeout value in milliseconds, zero or less for no timeout
-     * @throws IllegalArgumentException if the buffer is null
-     * @since Commons Collections 3.2
-     */
-    protected BlockingBuffer(Buffer buffer, long timeoutMillis) {
-        super(buffer);
-        this.timeout = (timeoutMillis < 0 ? 0 : timeoutMillis);
-    }
-
-    //-----------------------------------------------------------------------
-    public boolean add(Object o) {
-        synchronized (lock) {
-            boolean result = collection.add(o);
-            lock.notifyAll();
-            return result;
-        }
-    }
-
-    public boolean addAll(Collection c) {
-        synchronized (lock) {
-            boolean result = collection.addAll(c);
-            lock.notifyAll();
-            return result;
-        }
-    }
-
-    /**
-     * Gets the next value from the buffer, waiting until an object is
-     * added if the buffer is empty. This method uses the default timeout
-     * set in the constructor.
-     *
-     * @throws BufferUnderflowException if an interrupt is received
-     */
-    public Object get() {
-        synchronized (lock) {
-            while (collection.isEmpty()) {
-                try {
-                    if (timeout <= 0) {
-                        lock.wait();
-                    } else {
-                        return get(timeout);
-                    }
-                } catch (InterruptedException e) {
-                    PrintWriter out = new PrintWriter(new StringWriter());
-                    e.printStackTrace(out);
-                    throw new BufferUnderflowException("Caused by InterruptedException: " + out.toString());
-                }
-            }
-            return getBuffer().get();
-        }
-    }
-
-    /**
-     * Gets the next value from the buffer, waiting until an object is
-     * added for up to the specified timeout value if the buffer is empty.
-     *
-     * @param timeout  the timeout value in milliseconds
-     * @throws BufferUnderflowException if an interrupt is received
-     * @throws BufferUnderflowException if the timeout expires
-     * @since Commons Collections 3.2
-     */
-    public Object get(final long timeout) {
-        synchronized (lock) {
-            final long expiration = System.currentTimeMillis() + timeout;
-            long timeLeft = expiration - System.currentTimeMillis();
-            while (timeLeft > 0 && collection.isEmpty()) {
-                try {
-                    lock.wait(timeLeft);
-                    timeLeft = expiration - System.currentTimeMillis();
-                } catch(InterruptedException e) {
-                    PrintWriter out = new PrintWriter(new StringWriter());
-                    e.printStackTrace(out);
-                    throw new BufferUnderflowException("Caused by InterruptedException: " + out.toString());
-                }
-            }
-            if (collection.isEmpty()) {
-                throw new BufferUnderflowException("Timeout expired");
-            }
-            return getBuffer().get();
-        }
-    }
-
-    /**
-     * Removes the next value from the buffer, waiting until an object is
-     * added if the buffer is empty. This method uses the default timeout
-     * set in the constructor.
-     *
-     * @throws BufferUnderflowException if an interrupt is received
-     */
-    public Object remove() {
-        synchronized (lock) {
-            while (collection.isEmpty()) {
-                try {
-                    if (timeout <= 0) {
-                        lock.wait();
-                    } else {
-                        return remove(timeout);
-                    }
-                } catch (InterruptedException e) {
-                    PrintWriter out = new PrintWriter(new StringWriter());
-                    e.printStackTrace(out);
-                    throw new BufferUnderflowException("Caused by InterruptedException: " + out.toString());
-                }
-            }
-            return getBuffer().remove();
-        }
-    }
-
-    /**
-     * Removes the next value from the buffer, waiting until an object is
-     * added for up to the specified timeout value if the buffer is empty.
-     *
-     * @param timeout  the timeout value in milliseconds
-     * @throws BufferUnderflowException if an interrupt is received
-     * @throws BufferUnderflowException if the timeout expires
-     * @since Commons Collections 3.2
-     */
-    public Object remove(final long timeout) {
-        synchronized (lock) {
-            final long expiration = System.currentTimeMillis() + timeout;
-            long timeLeft = expiration - System.currentTimeMillis();
-            while (timeLeft > 0 && collection.isEmpty()) {
-                try {
-                    lock.wait(timeLeft);
-                    timeLeft = expiration - System.currentTimeMillis();
-                } catch(InterruptedException e) {
-                    PrintWriter out = new PrintWriter(new StringWriter());
-                    e.printStackTrace(out);
-                    throw new BufferUnderflowException("Caused by InterruptedException: " + out.toString());
-                }
-            }
-            if (collection.isEmpty()) {
-                throw new BufferUnderflowException("Timeout expired");
-            }
-            return getBuffer().remove();
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/BoundedBuffer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/BoundedBuffer.java
deleted file mode 100755
index 1cbc3f3..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/BoundedBuffer.java
+++ /dev/null
@@ -1,193 +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.
- */
-package org.apache.commons.collections.buffer;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.apache.commons.collections.BoundedCollection;
-import org.apache.commons.collections.Buffer;
-import org.apache.commons.collections.BufferOverflowException;
-import org.apache.commons.collections.BufferUnderflowException;
-import org.apache.commons.collections.iterators.AbstractIteratorDecorator;
-
-/**
- * Decorates another <code>Buffer</code> to ensure a fixed maximum size.
- * <p>
- * Note: This class should only be used if you need to add bounded
- * behaviour to another buffer. If you just want a bounded buffer then
- * you should use {@link BoundedFifoBuffer} or {@link CircularFifoBuffer}.
- * <p>
- * The decoration methods allow you to specify a timeout value.
- * This alters the behaviour of the add methods when the buffer is full.
- * Normally, when the buffer is full, the add method will throw an exception.
- * With a timeout, the add methods will wait for up to the timeout period
- * to try and add the elements.
- *
- * @author James Carman
- * @author Stephen Colebourne
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * @since Commons Collections 3.2
- */
-public class BoundedBuffer extends SynchronizedBuffer implements BoundedCollection {
-
-    /** The serialization version. */
-    private static final long serialVersionUID = 1536432911093974264L;
-
-    /** The maximum size. */
-    private final int maximumSize;
-    /** The timeout milliseconds. */
-    private final long timeout;
-
-    /**
-     * Factory method to create a bounded buffer.
-     * <p>
-     * When the buffer is full, it will immediately throw a
-     * <code>BufferOverflowException</code> on calling <code>add()</code>.
-     *
-     * @param buffer  the buffer to decorate, must not be null
-     * @param maximumSize  the maximum size, must be size one or greater
-     * @return a new bounded buffer
-     * @throws IllegalArgumentException if the buffer is null
-     * @throws IllegalArgumentException if the maximum size is zero or less
-     */
-    public static BoundedBuffer decorate(Buffer buffer, int maximumSize) {
-        return new BoundedBuffer(buffer, maximumSize, 0L);
-    }
-
-    /**
-     * Factory method to create a bounded buffer that blocks for a maximum
-     * amount of time.
-     *
-     * @param buffer  the buffer to decorate, must not be null
-     * @param maximumSize  the maximum size, must be size one or greater
-     * @param timeout  the maximum amount of time to wait in milliseconds
-     * @return a new bounded buffer
-     * @throws IllegalArgumentException if the buffer is null
-     * @throws IllegalArgumentException if the maximum size is zero or less
-     */
-    public static BoundedBuffer decorate(Buffer buffer, int maximumSize, long timeout) {
-        return new BoundedBuffer(buffer, maximumSize, timeout);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies) another buffer, making it bounded
-     * waiting only up to a maximum amount of time.
-     *
-     * @param buffer  the buffer to wrap, must not be null
-     * @param maximumSize  the maximum size, must be size one or greater
-     * @param timeout  the maximum amount of time to wait
-     * @throws IllegalArgumentException if the buffer is null
-     * @throws IllegalArgumentException if the maximum size is zero or less
-     */
-    protected BoundedBuffer(Buffer buffer, int maximumSize, long timeout) {
-        super(buffer);
-        if (maximumSize < 1) {
-            throw new IllegalArgumentException();
-        }
-        this.maximumSize = maximumSize;
-        this.timeout = timeout;
-    }
-
-    //-----------------------------------------------------------------------
-    public Object remove() {
-        synchronized (lock) {
-            Object returnValue = getBuffer().remove();
-            lock.notifyAll();
-            return returnValue;
-        }
-    }
-
-    public boolean add(Object o) {
-        synchronized (lock) {
-            timeoutWait(1);
-            return getBuffer().add(o);
-        }
-    }
-
-    public boolean addAll(final Collection c) {
-        synchronized (lock) {
-            timeoutWait(c.size());
-            return getBuffer().addAll(c);
-        }
-    }
-
-    public Iterator iterator() {
-        return new NotifyingIterator(collection.iterator());
-    }
-
-    private void timeoutWait(final int nAdditions) {
-        // method synchronized by callers
-        if (nAdditions > maximumSize) {
-            throw new BufferOverflowException(
-                    "Buffer size cannot exceed " + maximumSize);
-        }
-        if (timeout <= 0) {
-            // no wait period (immediate timeout)
-            if (getBuffer().size() + nAdditions > maximumSize) {
-                throw new BufferOverflowException(
-                        "Buffer size cannot exceed " + maximumSize);
-            }
-            return;
-        }
-        final long expiration = System.currentTimeMillis() + timeout;
-        long timeLeft = expiration - System.currentTimeMillis();
-        while (timeLeft > 0 && getBuffer().size() + nAdditions > maximumSize) {
-            try {
-                lock.wait(timeLeft);
-                timeLeft = expiration - System.currentTimeMillis();
-            } catch (InterruptedException ex) {
-                PrintWriter out = new PrintWriter(new StringWriter());
-                ex.printStackTrace(out);
-                throw new BufferUnderflowException(
-                    "Caused by InterruptedException: " + out.toString());
-            }
-        }
-        if (getBuffer().size() + nAdditions > maximumSize) {
-            throw new BufferOverflowException("Timeout expired");
-        }
-    }
-
-    public boolean isFull() {
-        // size() is synchronized
-        return (size() == maxSize());
-    }
-
-    public int maxSize() {
-        return maximumSize;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * BoundedBuffer iterator.
-     */
-    private class NotifyingIterator extends AbstractIteratorDecorator {
-
-        public NotifyingIterator(Iterator it) {
-            super(it);
-        }
-
-        public void remove() {
-            synchronized (lock) {
-                iterator.remove();
-                lock.notifyAll();
-            }
-        }
-    }
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/BoundedFifoBuffer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/BoundedFifoBuffer.java
deleted file mode 100755
index e1f2653..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/BoundedFifoBuffer.java
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
- *  Copyright 2002-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.commons.collections.buffer;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.AbstractCollection;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import org.apache.commons.collections.BoundedCollection;
-import org.apache.commons.collections.Buffer;
-import org.apache.commons.collections.BufferOverflowException;
-import org.apache.commons.collections.BufferUnderflowException;
-
-/**
- * The BoundedFifoBuffer is a very efficient implementation of
- * <code>Buffer</code> that is of a fixed size.
- * <p>
- * The removal order of a <code>BoundedFifoBuffer</code> is based on the 
- * insertion order; elements are removed in the same order in which they
- * were added.  The iteration order is the same as the removal order.
- * <p>
- * The {@link #add(Object)}, {@link #remove()} and {@link #get()} operations
- * all perform in constant time.  All other operations perform in linear
- * time or worse.
- * <p>
- * Note that this implementation is not synchronized.  The following can be
- * used to provide synchronized access to your <code>BoundedFifoBuffer</code>:
- * <pre>
- *   Buffer fifo = BufferUtils.synchronizedBuffer(new BoundedFifoBuffer());
- * </pre>
- * <p>
- * This buffer prevents null objects from being added.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0 (previously in main package v2.1)
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * 
- * @author Avalon
- * @author Berin Loritsch
- * @author Paul Jack
- * @author Stephen Colebourne
- * @author Herve Quiroz
- */
-public class BoundedFifoBuffer extends AbstractCollection
-        implements Buffer, BoundedCollection, Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 5603722811189451017L;
-
-    /** Underlying storage array */
-    private transient Object[] elements;
-    
-    /** Array index of first (oldest) buffer element */
-    private transient int start = 0;
-    
-    /** 
-     * Index mod maxElements of the array position following the last buffer
-     * element.  Buffer elements start at elements[start] and "wrap around"
-     * elements[maxElements-1], ending at elements[decrement(end)].  
-     * For example, elements = {c,a,b}, start=1, end=1 corresponds to 
-     * the buffer [a,b,c].
-     */
-    private transient int end = 0;
-    
-    /** Flag to indicate if the buffer is currently full. */
-    private transient boolean full = false;
-    
-    /** Capacity of the buffer */
-    private final int maxElements;
-
-    /**
-     * Constructs a new <code>BoundedFifoBuffer</code> big enough to hold
-     * 32 elements.
-     */
-    public BoundedFifoBuffer() {
-        this(32);
-    }
-
-    /**
-     * Constructs a new <code>BoundedFifoBuffer</code> big enough to hold
-     * the specified number of elements.
-     *
-     * @param size  the maximum number of elements for this fifo
-     * @throws IllegalArgumentException  if the size is less than 1
-     */
-    public BoundedFifoBuffer(int size) {
-        if (size <= 0) {
-            throw new IllegalArgumentException("The size must be greater than 0");
-        }
-        elements = new Object[size];
-        maxElements = elements.length;
-    }
-
-    /**
-     * Constructs a new <code>BoundedFifoBuffer</code> big enough to hold all
-     * of the elements in the specified collection. That collection's
-     * elements will also be added to the buffer.
-     *
-     * @param coll  the collection whose elements to add, may not be null
-     * @throws NullPointerException if the collection is null
-     */
-    public BoundedFifoBuffer(Collection coll) {
-        this(coll.size());
-        addAll(coll);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the buffer out using a custom routine.
-     * 
-     * @param out  the output stream
-     * @throws IOException
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeInt(size());
-        for (Iterator it = iterator(); it.hasNext();) {
-            out.writeObject(it.next());
-        }
-    }
-
-    /**
-     * Read the buffer in using a custom routine.
-     * 
-     * @param in  the input stream
-     * @throws IOException
-     * @throws ClassNotFoundException
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        elements = new Object[maxElements];
-        int size = in.readInt();
-        for (int i = 0; i < size; i++) {
-            elements[i] = in.readObject();
-        }
-        start = 0;
-        full = (size == maxElements);
-        if (full) {
-            end = 0;
-        } else {
-            end = size;
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns the number of elements stored in the buffer.
-     *
-     * @return this buffer's size
-     */
-    public int size() {
-        int size = 0;
-
-        if (end < start) {
-            size = maxElements - start + end;
-        } else if (end == start) {
-            size = (full ? maxElements : 0);
-        } else {
-            size = end - start;
-        }
-
-        return size;
-    }
-
-    /**
-     * Returns true if this buffer is empty; false otherwise.
-     *
-     * @return true if this buffer is empty
-     */
-    public boolean isEmpty() {
-        return size() == 0;
-    }
-
-    /**
-     * Returns true if this collection is full and no new elements can be added.
-     *
-     * @return <code>true</code> if the collection is full
-     */
-    public boolean isFull() {
-        return size() == maxElements;
-    }
-    
-    /**
-     * Gets the maximum size of the collection (the bound).
-     *
-     * @return the maximum number of elements the collection can hold
-     */
-    public int maxSize() {
-        return maxElements;
-    }
-    
-    /**
-     * Clears this buffer.
-     */
-    public void clear() {
-        full = false;
-        start = 0;
-        end = 0;
-        Arrays.fill(elements, null);
-    }
-
-    /**
-     * Adds the given element to this buffer.
-     *
-     * @param element  the element to add
-     * @return true, always
-     * @throws NullPointerException  if the given element is null
-     * @throws BufferOverflowException  if this buffer is full
-     */
-    public boolean add(Object element) {
-        if (null == element) {
-            throw new NullPointerException("Attempted to add null object to buffer");
-        }
-
-        if (full) {
-            throw new BufferOverflowException("The buffer cannot hold more than " + maxElements + " objects.");
-        }
-
-        elements[end++] = element;
-
-        if (end >= maxElements) {
-            end = 0;
-        }
-
-        if (end == start) {
-            full = true;
-        }
-
-        return true;
-    }
-
-    /**
-     * Returns the least recently inserted element in this buffer.
-     *
-     * @return the least recently inserted element
-     * @throws BufferUnderflowException  if the buffer is empty
-     */
-    public Object get() {
-        if (isEmpty()) {
-            throw new BufferUnderflowException("The buffer is already empty");
-        }
-
-        return elements[start];
-    }
-
-    /**
-     * Removes the least recently inserted element from this buffer.
-     *
-     * @return the least recently inserted element
-     * @throws BufferUnderflowException  if the buffer is empty
-     */
-    public Object remove() {
-        if (isEmpty()) {
-            throw new BufferUnderflowException("The buffer is already empty");
-        }
-
-        Object element = elements[start];
-
-        if (null != element) {
-            elements[start++] = null;
-
-            if (start >= maxElements) {
-                start = 0;
-            }
-
-            full = false;
-        }
-
-        return element;
-    }
-
-    /**
-     * Increments the internal index.
-     * 
-     * @param index  the index to increment
-     * @return the updated index
-     */
-    private int increment(int index) {
-        index++; 
-        if (index >= maxElements) {
-            index = 0;
-        }
-        return index;
-    }
-
-    /**
-     * Decrements the internal index.
-     * 
-     * @param index  the index to decrement
-     * @return the updated index
-     */
-    private int decrement(int index) {
-        index--;
-        if (index < 0) {
-            index = maxElements - 1;
-        }
-        return index;
-    }
-
-    /**
-     * Returns an iterator over this buffer's elements.
-     *
-     * @return an iterator over this buffer's elements
-     */
-    public Iterator iterator() {
-        return new Iterator() {
-
-            private int index = start;
-            private int lastReturnedIndex = -1;
-            private boolean isFirst = full;
-
-            public boolean hasNext() {
-                return isFirst || (index != end);
-                
-            }
-
-            public Object next() {
-                if (!hasNext()) {
-                    throw new NoSuchElementException();
-                }
-                isFirst = false;
-                lastReturnedIndex = index;
-                index = increment(index);
-                return elements[lastReturnedIndex];
-            }
-
-            public void remove() {
-                if (lastReturnedIndex == -1) {
-                    throw new IllegalStateException();
-                }
-
-                // First element can be removed quickly
-                if (lastReturnedIndex == start) {
-                    BoundedFifoBuffer.this.remove();
-                    lastReturnedIndex = -1;
-                    return;
-                }
-
-                int pos = lastReturnedIndex + 1;
-                if (start < lastReturnedIndex && pos < end) {
-                    // shift in one part
-                    System.arraycopy(elements, pos, elements,
-                            lastReturnedIndex, end - pos);
-                } else {
-                    // Other elements require us to shift the subsequent elements
-                    while (pos != end) {
-                        if (pos >= maxElements) {
-                            elements[pos - 1] = elements[0];
-                            pos = 0;
-                        } else {
-                            elements[decrement(pos)] = elements[pos];
-                            pos = increment(pos);
-                        }
-                    }
-                }
-
-                lastReturnedIndex = -1;
-                end = decrement(end);
-                elements[end] = null;
-                full = false;
-                index = decrement(index);
-            }
-
-        };
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/CircularFifoBuffer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/CircularFifoBuffer.java
deleted file mode 100755
index d86a678..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/CircularFifoBuffer.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.buffer;
-
-import java.util.Collection;
-
-/** 
- * CircularFifoBuffer is a first in first out buffer with a fixed size that
- * replaces its oldest element if full.
- * <p>
- * The removal order of a <code>CircularFifoBuffer</code> is based on the 
- * insertion order; elements are removed in the same order in which they
- * were added.  The iteration order is the same as the removal order.
- * <p>
- * The {@link #add(Object)}, {@link #remove()} and {@link #get()} operations
- * all perform in constant time.  All other operations perform in linear
- * time or worse.
- * <p>
- * Note that this implementation is not synchronized.  The following can be
- * used to provide synchronized access to your <code>CircularFifoBuffer</code>:
- * <pre>
- *   Buffer fifo = BufferUtils.synchronizedBuffer(new CircularFifoBuffer());
- * </pre>
- * <p>
- * This buffer prevents null objects from being added.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * 
- * @author Stefano Fornari
- * @author Stephen Colebourne
- */
-public class CircularFifoBuffer extends BoundedFifoBuffer {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -8423413834657610406L;
-
-    /**
-     * Constructor that creates a buffer with the default size of 32.
-     */
-    public CircularFifoBuffer() {
-        super(32);
-    }
-
-    /**
-     * Constructor that creates a buffer with the specified size.
-     * 
-     * @param size  the size of the buffer (cannot be changed)
-     * @throws IllegalArgumentException  if the size is less than 1
-     */
-    public CircularFifoBuffer(int size) {
-        super(size);
-    }
-
-    /**
-     * Constructor that creates a buffer from the specified collection.
-     * The collection size also sets the buffer size
-     * 
-     * @param coll  the collection to copy into the buffer, may not be null
-     * @throws NullPointerException if the collection is null
-     */
-    public CircularFifoBuffer(Collection coll) {
-        super(coll);
-    }
-
-    /**
-     * If the buffer is full, the least recently added element is discarded so
-     * that a new element can be inserted.
-     *
-     * @param element the element to add
-     * @return true, always
-     */
-    public boolean add(Object element) {
-        if (isFull()) {
-            remove();
-        }
-        return super.add(element);
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/PredicatedBuffer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/PredicatedBuffer.java
deleted file mode 100755
index 192d890..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/PredicatedBuffer.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.buffer;
-
-import org.apache.commons.collections.Buffer;
-import org.apache.commons.collections.Predicate;
-import org.apache.commons.collections.collection.PredicatedCollection;
-
-/**
- * Decorates another <code>Buffer</code> to validate that additions
- * match a specified predicate.
- * <p>
- * This buffer exists to provide validation for the decorated buffer.
- * It is normally created to decorate an empty buffer.
- * If an object cannot be added to the buffer, an IllegalArgumentException is thrown.
- * <p>
- * One usage would be to ensure that no null entries are added to the buffer.
- * <pre>Buffer buffer = PredicatedBuffer.decorate(new UnboundedFifoBuffer(), NotNullPredicate.INSTANCE);</pre>
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * 
- * @author Stephen Colebourne
- * @author Paul Jack
- */
-public class PredicatedBuffer extends PredicatedCollection implements Buffer {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 2307609000539943581L;
-
-    /**
-     * Factory method to create a predicated (validating) buffer.
-     * <p>
-     * If there are any elements already in the buffer being decorated, they
-     * are validated.
-     * 
-     * @param buffer  the buffer to decorate, must not be null
-     * @param predicate  the predicate to use for validation, must not be null
-     * @return a new predicated Buffer
-     * @throws IllegalArgumentException if buffer or predicate is null
-     * @throws IllegalArgumentException if the buffer contains invalid elements
-     */
-    public static Buffer decorate(Buffer buffer, Predicate predicate) {
-        return new PredicatedBuffer(buffer, predicate);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * <p>
-     * If there are any elements already in the collection being decorated, they
-     * are validated.
-     * 
-     * @param buffer  the buffer to decorate, must not be null
-     * @param predicate  the predicate to use for validation, must not be null
-     * @throws IllegalArgumentException if buffer or predicate is null
-     * @throws IllegalArgumentException if the buffer contains invalid elements
-     */
-    protected PredicatedBuffer(Buffer buffer, Predicate predicate) {
-        super(buffer, predicate);
-    }
-
-    /**
-     * Gets the buffer being decorated.
-     * 
-     * @return the decorated buffer
-     */
-    protected Buffer getBuffer() {
-        return (Buffer) getCollection();
-    }
-
-    //-----------------------------------------------------------------------
-    public Object get() {
-        return getBuffer().get();
-    }
-
-    public Object remove() {
-        return getBuffer().remove();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/PriorityBuffer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/PriorityBuffer.java
deleted file mode 100755
index 5ae2351..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/PriorityBuffer.java
+++ /dev/null
@@ -1,544 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.buffer;
-
-import java.io.Serializable;
-import java.util.AbstractCollection;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import org.apache.commons.collections.Buffer;
-import org.apache.commons.collections.BufferUnderflowException;
-
-/**
- * Binary heap implementation of <code>Buffer</code> that provides for
- * removal based on <code>Comparator</code> ordering.
- * <p>
- * The removal order of a binary heap is based on either the natural sort
- * order of its elements or a specified {@link Comparator}.  The 
- * {@link #remove()} method always returns the first element as determined
- * by the sort order.  (The <code>ascendingOrder</code> flag in the constructors
- * can be used to reverse the sort order, in which case {@link #remove()}
- * will always remove the last element.)  The removal order is 
- * <i>not</i> the same as the order of iteration; elements are
- * returned by the iterator in no particular order.
- * <p>
- * The {@link #add(Object)} and {@link #remove()} operations perform
- * in logarithmic time.  The {@link #get()} operation performs in constant
- * time.  All other operations perform in linear time or worse.
- * <p>
- * Note that this implementation is not synchronized.  Use 
- * {@link org.apache.commons.collections.BufferUtils#synchronizedBuffer(Buffer)} or
- * {@link org.apache.commons.collections.buffer.SynchronizedBuffer#decorate(Buffer)}
- * to provide synchronized access to a <code>PriorityBuffer</code>:
- * <pre>
- * Buffer heap = SynchronizedBuffer.decorate(new PriorityBuffer());
- * </pre>
- * <p>
- * This class is Serializable from Commons Collections 3.2.
- *
- * @since Commons Collections 3.0 (previously BinaryHeap v1.0)
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * 
- * @author Peter Donald
- * @author Ram Chidambaram
- * @author Michael A. Smith
- * @author Paul Jack
- * @author Stephen Colebourne
- * @author Steve Phelps
- */
-public class PriorityBuffer extends AbstractCollection
-        implements Buffer, Serializable {
-
-    /** Serialization lock. */
-    private static final long serialVersionUID = 6891186490470027896L;
-
-    /**
-     * The default capacity for the buffer.
-     */
-    private static final int DEFAULT_CAPACITY = 13;
-    
-    /**
-     * The elements in this buffer.
-     */
-    protected Object[] elements;
-    /**
-     * The number of elements currently in this buffer.
-     */
-    protected int size;
-    /**
-     * If true, the first element as determined by the sort order will 
-     * be returned.  If false, the last element as determined by the
-     * sort order will be returned.
-     */
-    protected boolean ascendingOrder;
-    /**
-     * The comparator used to order the elements
-     */
-    protected Comparator comparator;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructs a new empty buffer that sorts in ascending order by the
-     * natural order of the objects added.
-     */
-    public PriorityBuffer() {
-        this(DEFAULT_CAPACITY, true, null);
-    }
-
-    /**
-     * Constructs a new empty buffer that sorts in ascending order using the
-     * specified comparator.
-     * 
-     * @param comparator  the comparator used to order the elements,
-     *  null means use natural order
-     */
-    public PriorityBuffer(Comparator comparator) {
-        this(DEFAULT_CAPACITY, true, comparator);
-    }
-
-    /**
-     * Constructs a new empty buffer specifying the sort order and using the
-     * natural order of the objects added.
-     *
-     * @param ascendingOrder  if <code>true</code> the heap is created as a 
-     * minimum heap; otherwise, the heap is created as a maximum heap
-     */
-    public PriorityBuffer(boolean ascendingOrder) {
-        this(DEFAULT_CAPACITY, ascendingOrder, null);
-    }
-
-    /**
-     * Constructs a new empty buffer specifying the sort order and comparator.
-     *
-     * @param ascendingOrder  true to use the order imposed by the given 
-     *   comparator; false to reverse that order
-     * @param comparator  the comparator used to order the elements,
-     *  null means use natural order
-     */
-    public PriorityBuffer(boolean ascendingOrder, Comparator comparator) {
-        this(DEFAULT_CAPACITY, ascendingOrder, comparator);
-    }
-
-    /**
-     * Constructs a new empty buffer that sorts in ascending order by the
-     * natural order of the objects added, specifying an initial capacity.
-     *  
-     * @param capacity  the initial capacity for the buffer, greater than zero
-     * @throws IllegalArgumentException if <code>capacity</code> is &lt;= <code>0</code>
-     */
-    public PriorityBuffer(int capacity) {
-        this(capacity, true, null);
-    }
-
-    /**
-     * Constructs a new empty buffer that sorts in ascending order using the
-     * specified comparator and initial capacity.
-     *
-     * @param capacity  the initial capacity for the buffer, greater than zero
-     * @param comparator  the comparator used to order the elements,
-     *  null means use natural order
-     * @throws IllegalArgumentException if <code>capacity</code> is &lt;= <code>0</code>
-     */
-    public PriorityBuffer(int capacity, Comparator comparator) {
-        this(capacity, true, comparator);
-    }
-
-    /**
-     * Constructs a new empty buffer that specifying initial capacity and
-     * sort order, using the natural order of the objects added.
-     *
-     * @param capacity  the initial capacity for the buffer, greater than zero
-     * @param ascendingOrder if <code>true</code> the heap is created as a 
-     *  minimum heap; otherwise, the heap is created as a maximum heap.
-     * @throws IllegalArgumentException if <code>capacity</code> is <code>&lt;= 0</code>
-     */
-    public PriorityBuffer(int capacity, boolean ascendingOrder) {
-        this(capacity, ascendingOrder, null);
-    }
-
-    /**
-     * Constructs a new empty buffer that specifying initial capacity,
-     * sort order and comparator.
-     *
-     * @param capacity  the initial capacity for the buffer, greater than zero
-     * @param ascendingOrder  true to use the order imposed by the given 
-     *   comparator; false to reverse that order
-     * @param comparator  the comparator used to order the elements,
-     *  null means use natural order
-     * @throws IllegalArgumentException if <code>capacity</code> is <code>&lt;= 0</code>
-     */
-    public PriorityBuffer(int capacity, boolean ascendingOrder, Comparator comparator) {
-        super();
-        if (capacity <= 0) {
-            throw new IllegalArgumentException("invalid capacity");
-        }
-        this.ascendingOrder = ascendingOrder;
-
-        //+1 as 0 is noop
-        this.elements = new Object[capacity + 1];
-        this.comparator = comparator;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Checks whether the heap is ascending or descending order.
-     * 
-     * @return true if ascending order (a min heap)
-     */
-    public boolean isAscendingOrder() {
-        return ascendingOrder;
-    }
-    
-    /**
-     * Gets the comparator being used for this buffer, null is natural order.
-     * 
-     * @return the comparator in use, null is natural order
-     */
-    public Comparator comparator() {
-        return comparator;
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Returns the number of elements in this buffer.
-     *
-     * @return the number of elements in this buffer
-     */
-    public int size() {
-        return size;
-    }
-
-    /**
-     * Clears all elements from the buffer.
-     */
-    public void clear() {
-        elements = new Object[elements.length]; // for gc
-        size = 0;
-    }
-
-    /**
-     * Adds an element to the buffer.
-     * <p>
-     * The element added will be sorted according to the comparator in use.
-     *
-     * @param element  the element to be added
-     * @return true always
-     */
-    public boolean add(Object element) {
-        if (isAtCapacity()) {
-            grow();
-        }
-        // percolate element to it's place in tree
-        if (ascendingOrder) {
-            percolateUpMinHeap(element);
-        } else {
-            percolateUpMaxHeap(element);
-        }
-        return true;
-    }
-
-    /**
-     * Gets the next element to be removed without actually removing it (peek).
-     *
-     * @return the next element
-     * @throws BufferUnderflowException if the buffer is empty
-     */
-    public Object get() {
-        if (isEmpty()) {
-            throw new BufferUnderflowException();
-        } else {
-            return elements[1];
-        }
-    }
-
-    /**
-     * Gets and removes the next element (pop).
-     *
-     * @return the next element
-     * @throws BufferUnderflowException if the buffer is empty
-     */
-    public Object remove() {
-        final Object result = get();
-        elements[1] = elements[size--];
-
-        // set the unused element to 'null' so that the garbage collector
-        // can free the object if not used anywhere else.(remove reference)
-        elements[size + 1] = null;
-
-        if (size != 0) {
-            // percolate top element to it's place in tree
-            if (ascendingOrder) {
-                percolateDownMinHeap(1);
-            } else {
-                percolateDownMaxHeap(1);
-            }
-        }
-
-        return result;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Tests if the buffer is at capacity.
-     *
-     * @return <code>true</code> if buffer is full; <code>false</code> otherwise.
-     */
-    protected boolean isAtCapacity() {
-        //+1 as element 0 is noop
-        return elements.length == size + 1;
-    }
-
-    
-    /**
-     * Percolates element down heap from the position given by the index.
-     * <p>
-     * Assumes it is a minimum heap.
-     *
-     * @param index the index for the element
-     */
-    protected void percolateDownMinHeap(final int index) {
-        final Object element = elements[index];
-        int hole = index;
-
-        while ((hole * 2) <= size) {
-            int child = hole * 2;
-
-            // if we have a right child and that child can not be percolated
-            // up then move onto other child
-            if (child != size && compare(elements[child + 1], elements[child]) < 0) {
-                child++;
-            }
-
-            // if we found resting place of bubble then terminate search
-            if (compare(elements[child], element) >= 0) {
-                break;
-            }
-
-            elements[hole] = elements[child];
-            hole = child;
-        }
-
-        elements[hole] = element;
-    }
-
-    /**
-     * Percolates element down heap from the position given by the index.
-     * <p>
-     * Assumes it is a maximum heap.
-     *
-     * @param index the index of the element
-     */
-    protected void percolateDownMaxHeap(final int index) {
-        final Object element = elements[index];
-        int hole = index;
-
-        while ((hole * 2) <= size) {
-            int child = hole * 2;
-
-            // if we have a right child and that child can not be percolated
-            // up then move onto other child
-            if (child != size && compare(elements[child + 1], elements[child]) > 0) {
-                child++;
-            }
-
-            // if we found resting place of bubble then terminate search
-            if (compare(elements[child], element) <= 0) {
-                break;
-            }
-
-            elements[hole] = elements[child];
-            hole = child;
-        }
-
-        elements[hole] = element;
-    }
-
-    /**
-     * Percolates element up heap from the position given by the index.
-     * <p>
-     * Assumes it is a minimum heap.
-     *
-     * @param index the index of the element to be percolated up
-     */
-    protected void percolateUpMinHeap(final int index) {
-        int hole = index;
-        Object element = elements[hole];
-        while (hole > 1 && compare(element, elements[hole / 2]) < 0) {
-            // save element that is being pushed down
-            // as the element "bubble" is percolated up
-            final int next = hole / 2;
-            elements[hole] = elements[next];
-            hole = next;
-        }
-        elements[hole] = element;
-    }
-
-    /**
-     * Percolates a new element up heap from the bottom.
-     * <p>
-     * Assumes it is a minimum heap.
-     *
-     * @param element the element
-     */
-    protected void percolateUpMinHeap(final Object element) {
-        elements[++size] = element;
-        percolateUpMinHeap(size);
-    }
-
-    /**
-     * Percolates element up heap from from the position given by the index.
-     * <p>
-     * Assume it is a maximum heap.
-     *
-     * @param index the index of the element to be percolated up
-     */
-    protected void percolateUpMaxHeap(final int index) {
-        int hole = index;
-        Object element = elements[hole];
-
-        while (hole > 1 && compare(element, elements[hole / 2]) > 0) {
-            // save element that is being pushed down
-            // as the element "bubble" is percolated up
-            final int next = hole / 2;
-            elements[hole] = elements[next];
-            hole = next;
-        }
-
-        elements[hole] = element;
-    }
-
-    /**
-     * Percolates a new element up heap from the bottom.
-     * <p>
-     * Assume it is a maximum heap.
-     *
-     * @param element the element
-     */
-    protected void percolateUpMaxHeap(final Object element) {
-        elements[++size] = element;
-        percolateUpMaxHeap(size);
-    }
-
-    /**
-     * Compares two objects using the comparator if specified, or the
-     * natural order otherwise.
-     * 
-     * @param a  the first object
-     * @param b  the second object
-     * @return -ve if a less than b, 0 if they are equal, +ve if a greater than b
-     */
-    protected int compare(Object a, Object b) {
-        if (comparator != null) {
-            return comparator.compare(a, b);
-        } else {
-            return ((Comparable) a).compareTo(b);
-        }
-    }
-
-    /**
-     * Increases the size of the heap to support additional elements
-     */
-    protected void grow() {
-        final Object[] array = new Object[elements.length * 2];
-        System.arraycopy(elements, 0, array, 0, elements.length);
-        elements = array;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns an iterator over this heap's elements.
-     *
-     * @return an iterator over this heap's elements
-     */
-    public Iterator iterator() {
-        return new Iterator() {
-
-            private int index = 1;
-            private int lastReturnedIndex = -1;
-
-            public boolean hasNext() {
-                return index <= size;
-            }
-
-            public Object next() {
-                if (!hasNext()) {
-                    throw new NoSuchElementException();
-                }
-                lastReturnedIndex = index;
-                index++;
-                return elements[lastReturnedIndex];
-            }
-
-            public void remove() {
-                if (lastReturnedIndex == -1) {
-                    throw new IllegalStateException();
-                }
-                elements[ lastReturnedIndex ] = elements[ size ];
-                elements[ size ] = null;
-                size--;  
-                if( size != 0 && lastReturnedIndex <= size) {
-                    int compareToParent = 0;
-                    if (lastReturnedIndex > 1) {
-                        compareToParent = compare(elements[lastReturnedIndex], 
-                            elements[lastReturnedIndex / 2]);  
-                    }
-                    if (ascendingOrder) {
-                        if (lastReturnedIndex > 1 && compareToParent < 0) {
-                            percolateUpMinHeap(lastReturnedIndex); 
-                        } else {
-                            percolateDownMinHeap(lastReturnedIndex);
-                        }
-                    } else {  // max heap
-                        if (lastReturnedIndex > 1 && compareToParent > 0) {
-                            percolateUpMaxHeap(lastReturnedIndex); 
-                        } else {
-                            percolateDownMaxHeap(lastReturnedIndex);
-                        }
-                    }          
-                }
-                index--;
-                lastReturnedIndex = -1; 
-            }
-
-        };
-    }
-
-    /**
-     * Returns a string representation of this heap.  The returned string
-     * is similar to those produced by standard JDK collections.
-     *
-     * @return a string representation of this heap
-     */
-    public String toString() {
-        final StringBuffer sb = new StringBuffer();
-
-        sb.append("[ ");
-
-        for (int i = 1; i < size + 1; i++) {
-            if (i != 1) {
-                sb.append(", ");
-            }
-            sb.append(elements[i]);
-        }
-
-        sb.append(" ]");
-
-        return sb.toString();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/SynchronizedBuffer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/SynchronizedBuffer.java
deleted file mode 100755
index a5255f4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/SynchronizedBuffer.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.buffer;
-
-import org.apache.commons.collections.Buffer;
-import org.apache.commons.collections.collection.SynchronizedCollection;
-
-/**
- * Decorates another <code>Buffer</code> to synchronize its behaviour
- * for a multi-threaded environment.
- * <p>
- * Methods are synchronized, then forwarded to the decorated buffer.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * 
- * @author Stephen Colebourne
- */
-public class SynchronizedBuffer extends SynchronizedCollection implements Buffer {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -6859936183953626253L;
-
-    /**
-     * Factory method to create a synchronized buffer.
-     * 
-     * @param buffer  the buffer to decorate, must not be null
-     * @return a new synchronized Buffer
-     * @throws IllegalArgumentException if buffer is null
-     */
-    public static Buffer decorate(Buffer buffer) {
-        return new SynchronizedBuffer(buffer);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param buffer  the buffer to decorate, must not be null
-     * @throws IllegalArgumentException if the buffer is null
-     */
-    protected SynchronizedBuffer(Buffer buffer) {
-        super(buffer);
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param buffer  the buffer to decorate, must not be null
-     * @param lock  the lock object to use, must not be null
-     * @throws IllegalArgumentException if the buffer is null
-     */
-    protected SynchronizedBuffer(Buffer buffer, Object lock) {
-        super(buffer, lock);
-    }
-
-    /**
-     * Gets the buffer being decorated.
-     * 
-     * @return the decorated buffer
-     */
-    protected Buffer getBuffer() {
-        return (Buffer) collection;
-    }
-
-    //-----------------------------------------------------------------------
-    public Object get() {
-        synchronized (lock) {
-            return getBuffer().get();
-        }
-    }
-
-    public Object remove() {
-        synchronized (lock) {
-            return getBuffer().remove();
-        }
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/TransformedBuffer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/TransformedBuffer.java
deleted file mode 100755
index 190d18d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/TransformedBuffer.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.buffer;
-
-import org.apache.commons.collections.Buffer;
-import org.apache.commons.collections.Transformer;
-import org.apache.commons.collections.collection.TransformedCollection;
-
-/**
- * Decorates another <code>Buffer</code> to transform objects that are added.
- * <p>
- * The add methods are affected by this class.
- * Thus objects must be removed or searched for using their transformed form.
- * For example, if the transformation converts Strings to Integers, you must
- * use the Integer form to remove objects.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * 
- * @author Stephen Colebourne
- */
-public class TransformedBuffer extends TransformedCollection implements Buffer {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -7901091318986132033L;
-
-    /**
-     * Factory method to create a transforming buffer.
-     * <p>
-     * If there are any elements already in the buffer being decorated, they
-     * are NOT transformed.
-     * 
-     * @param buffer  the buffer to decorate, must not be null
-     * @param transformer  the transformer to use for conversion, must not be null
-     * @return a new transformed Buffer
-     * @throws IllegalArgumentException if buffer or transformer is null
-     */
-    public static Buffer decorate(Buffer buffer, Transformer transformer) {
-        return new TransformedBuffer(buffer, transformer);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * <p>
-     * If there are any elements already in the buffer being decorated, they
-     * are NOT transformed.
-     * 
-     * @param buffer  the buffer to decorate, must not be null
-     * @param transformer  the transformer to use for conversion, must not be null
-     * @throws IllegalArgumentException if buffer or transformer is null
-     */
-    protected TransformedBuffer(Buffer buffer, Transformer transformer) {
-        super(buffer, transformer);
-    }
-
-    /**
-     * Gets the decorated buffer.
-     * 
-     * @return the decorated buffer
-     */
-    protected Buffer getBuffer() {
-        return (Buffer) collection;
-    }
-
-    //-----------------------------------------------------------------------
-    public Object get() {
-        return getBuffer().get();
-    }
-
-    public Object remove() {
-        return getBuffer().remove();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/TypedBuffer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/TypedBuffer.java
deleted file mode 100755
index 2232699..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/TypedBuffer.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.buffer;
-
-import org.apache.commons.collections.Buffer;
-import org.apache.commons.collections.functors.InstanceofPredicate;
-
-/**
- * Decorates another <code>Buffer</code> to validate that elements added
- * are of a specific type.
- * <p>
- * The validation of additions is performed via an instanceof test against 
- * a specified <code>Class</code>. If an object cannot be added to the
- * collection, an IllegalArgumentException is thrown.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * 
- * @author Stephen Colebourne
- * @author Matthew Hawthorne
- */
-public class TypedBuffer {
-
-    /**
-     * Factory method to create a typed list.
-     * <p>
-     * If there are any elements already in the buffer being decorated, they
-     * are validated.
-     * 
-     * @param buffer  the buffer to decorate, must not be null
-     * @param type  the type to allow into the buffer, must not be null
-     * @return a new typed Buffer
-     * @throws IllegalArgumentException if buffer or type is null
-     * @throws IllegalArgumentException if the buffer contains invalid elements
-     */
-    public static Buffer decorate(Buffer buffer, Class type) {
-        return new PredicatedBuffer(buffer, InstanceofPredicate.getInstance(type));
-    }
-    
-    /**
-     * Restrictive constructor.
-     */
-    protected TypedBuffer() {
-        super();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/UnboundedFifoBuffer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/UnboundedFifoBuffer.java
deleted file mode 100755
index 6abc48a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/UnboundedFifoBuffer.java
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
- *  Copyright 2002-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.commons.collections.buffer;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.AbstractCollection;
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import org.apache.commons.collections.Buffer;
-import org.apache.commons.collections.BufferUnderflowException;
-
-/**
- * UnboundedFifoBuffer is a very efficient implementation of
- * <code>Buffer</code> that can grow to any size.
- * According to performance testing, it exhibits a constant access time, but it
- * also outperforms ArrayList when used for the same purpose.
- * <p>
- * The removal order of an <code>UnboundedFifoBuffer</code> is based on the insertion
- * order; elements are removed in the same order in which they were added.
- * The iteration order is the same as the removal order.
- * <p>
- * The {@link #remove()} and {@link #get()} operations perform in constant time.
- * The {@link #add(Object)} operation performs in amortized constant time.  All
- * other operations perform in linear time or worse.
- * <p>
- * Note that this implementation is not synchronized.  The following can be
- * used to provide synchronized access to your <code>UnboundedFifoBuffer</code>:
- * <pre>
- *   Buffer fifo = BufferUtils.synchronizedBuffer(new UnboundedFifoBuffer());
- * </pre>
- * <p>
- * This buffer prevents null objects from being added.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- * 
- * @since Commons Collections 3.0 (previously in main package v2.1)
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- *
- * @author Avalon
- * @author Federico Barbieri
- * @author Berin Loritsch
- * @author Paul Jack
- * @author Stephen Colebourne
- * @author Andreas Schlosser
- * @author Thomas Knych
- * @author Jordan Krey
- */
-public class UnboundedFifoBuffer extends AbstractCollection implements Buffer, Serializable {
-    // invariant: buffer.length > size()
-    //   ie.buffer always has at least one empty entry
-
-    /** Serialization vesrion */
-    private static final long serialVersionUID = -3482960336579541419L;
-
-    /** The array of objects in the buffer. */
-    protected transient Object[] buffer;
-    /** The current head index. */
-    protected transient int head;
-    /** The current tail index. */
-    protected transient int tail;
-
-    /**
-     * Constructs an UnboundedFifoBuffer with the default number of elements.
-     * It is exactly the same as performing the following:
-     *
-     * <pre>
-     *   new UnboundedFifoBuffer(32);
-     * </pre>
-     */
-    public UnboundedFifoBuffer() {
-        this(32);
-    }
-
-    /**
-     * Constructs an UnboundedFifoBuffer with the specified number of elements.
-     * The integer must be a positive integer.
-     * 
-     * @param initialSize  the initial size of the buffer
-     * @throws IllegalArgumentException  if the size is less than 1
-     */
-    public UnboundedFifoBuffer(int initialSize) {
-        if (initialSize <= 0) {
-            throw new IllegalArgumentException("The size must be greater than 0");
-        }
-        buffer = new Object[initialSize + 1];
-        head = 0;
-        tail = 0;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the buffer out using a custom routine.
-     * 
-     * @param out  the output stream
-     * @throws IOException
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeInt(size());
-        for (Iterator it = iterator(); it.hasNext();) {
-            out.writeObject(it.next());
-        }
-    }
-
-    /**
-     * Read the buffer in using a custom routine.
-     * 
-     * @param in  the input stream
-     * @throws IOException
-     * @throws ClassNotFoundException
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        int size = in.readInt();
-        buffer = new Object[size + 1];
-        for (int i = 0; i < size; i++) {
-            buffer[i] = in.readObject();
-        }
-        head = 0;
-        tail = size;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns the number of elements stored in the buffer.
-     *
-     * @return this buffer's size
-     */
-    public int size() {
-        int size = 0;
-
-        if (tail < head) {
-            size = buffer.length - head + tail;
-        } else {
-            size = tail - head;
-        }
-
-        return size;
-    }
-
-    /**
-     * Returns true if this buffer is empty; false otherwise.
-     *
-     * @return true if this buffer is empty
-     */
-    public boolean isEmpty() {
-        return (size() == 0);
-    }
-
-    /**
-     * Adds the given element to this buffer.
-     *
-     * @param obj  the element to add
-     * @return true, always
-     * @throws NullPointerException  if the given element is null
-     */
-    public boolean add(final Object obj) {
-        if (obj == null) {
-            throw new NullPointerException("Attempted to add null object to buffer");
-        }
-
-        if (size() + 1 >= buffer.length) {
-            // copy contents to a new buffer array
-            Object[] tmp = new Object[((buffer.length - 1) * 2) + 1];
-            int j = 0;
-            // move head to element zero in the new array
-            for (int i = head; i != tail;) {
-                tmp[j] = buffer[i];
-                buffer[i] = null;
-
-                j++;
-                i = increment(i);
-            }
-            buffer = tmp;
-            head = 0;
-            tail = j;
-        }
-
-        buffer[tail] = obj;
-        tail = increment(tail);
-        return true;
-    }
-
-    /**
-     * Returns the next object in the buffer.
-     *
-     * @return the next object in the buffer
-     * @throws BufferUnderflowException  if this buffer is empty
-     */
-    public Object get() {
-        if (isEmpty()) {
-            throw new BufferUnderflowException("The buffer is already empty");
-        }
-
-        return buffer[head];
-    }
-
-    /**
-     * Removes the next object from the buffer
-     *
-     * @return the removed object
-     * @throws BufferUnderflowException  if this buffer is empty
-     */
-    public Object remove() {
-        if (isEmpty()) {
-            throw new BufferUnderflowException("The buffer is already empty");
-        }
-
-        Object element = buffer[head];
-        if (element != null) {
-            buffer[head] = null;
-            head = increment(head);
-        }
-        return element;
-    }
-
-    /**
-     * Increments the internal index.
-     * 
-     * @param index  the index to increment
-     * @return the updated index
-     */
-    private int increment(int index) {
-        index++;
-        if (index >= buffer.length) {
-            index = 0;
-        }
-        return index;
-    }
-
-    /**
-     * Decrements the internal index.
-     * 
-     * @param index  the index to decrement
-     * @return the updated index
-     */
-    private int decrement(int index) {
-        index--;
-        if (index < 0) {
-            index = buffer.length - 1;
-        }
-        return index;
-    }
-
-    /**
-     * Returns an iterator over this buffer's elements.
-     *
-     * @return an iterator over this buffer's elements
-     */
-    public Iterator iterator() {
-        return new Iterator() {
-
-            private int index = head;
-            private int lastReturnedIndex = -1;
-
-            public boolean hasNext() {
-                return index != tail;
-
-            }
-
-            public Object next() {
-                if (!hasNext()) {
-                    throw new NoSuchElementException();
-                }
-                lastReturnedIndex = index;
-                index = increment(index);
-                return buffer[lastReturnedIndex];
-            }
-
-            public void remove() {
-                if (lastReturnedIndex == -1) {
-                    throw new IllegalStateException();
-                }
-
-                // First element can be removed quickly
-                if (lastReturnedIndex == head) {
-                    UnboundedFifoBuffer.this.remove();
-                    lastReturnedIndex = -1;
-                    return;
-                }
-
-                // Other elements require us to shift the subsequent elements
-                int i = increment(lastReturnedIndex);
-                while (i != tail) {
-                    buffer[decrement(i)] = buffer[i];
-                    i = increment(i);
-                }
-
-                lastReturnedIndex = -1;
-                tail = decrement(tail);
-                buffer[tail] = null;
-                index = decrement(index);
-            }
-
-        };
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/UnmodifiableBuffer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/UnmodifiableBuffer.java
deleted file mode 100755
index 4d4bcd5..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/UnmodifiableBuffer.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.buffer;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.apache.commons.collections.Buffer;
-import org.apache.commons.collections.Unmodifiable;
-import org.apache.commons.collections.iterators.UnmodifiableIterator;
-
-/**
- * Decorates another <code>Buffer</code> to ensure it can't be altered.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * 
- * @author Stephen Colebourne
- */
-public final class UnmodifiableBuffer
-        extends AbstractBufferDecorator
-        implements Unmodifiable, Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 1832948656215393357L;
-
-    /**
-     * Factory method to create an unmodifiable buffer.
-     * <p>
-     * If the buffer passed in is already unmodifiable, it is returned.
-     * 
-     * @param buffer  the buffer to decorate, must not be null
-     * @return an unmodifiable Buffer
-     * @throws IllegalArgumentException if buffer is null
-     */
-    public static Buffer decorate(Buffer buffer) {
-        if (buffer instanceof Unmodifiable) {
-            return buffer;
-        }
-        return new UnmodifiableBuffer(buffer);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param buffer  the buffer to decorate, must not be null
-     * @throws IllegalArgumentException if buffer is null
-     */
-    private UnmodifiableBuffer(Buffer buffer) {
-        super(buffer);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the collection out using a custom routine.
-     * 
-     * @param out  the output stream
-     * @throws IOException
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeObject(collection);
-    }
-
-    /**
-     * Read the collection in using a custom routine.
-     * 
-     * @param in  the input stream
-     * @throws IOException
-     * @throws ClassNotFoundException
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        collection = (Collection) in.readObject();
-    }
-
-    //-----------------------------------------------------------------------
-    public Iterator iterator() {
-        return UnmodifiableIterator.decorate(getCollection().iterator());
-    }
-
-    public boolean add(Object object) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean addAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void clear() {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean remove(Object object) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean removeAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean retainAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    //-----------------------------------------------------------------------
-    public Object remove() {
-        throw new UnsupportedOperationException();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/package.html b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/package.html
deleted file mode 100755
index bcfb328..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/buffer/package.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!-- $Id: package.html,v 1.1 2009/05/27 22:16:32 mparker Exp $ -->
- <!--
-   Copyright 2003-2004 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-  -->
-<BODY>
-<p>
-This package contains implementations of the
-{@link org.apache.commons.collections.Buffer Buffer} interface.
-<p>
-The following implementations are provided in the package:
-<ul>
-<li>PriorityBuffer - provides for removal based on a comparator ordering
-<li>BoundedFifoBuffer - implements a buffer with a fixed size that throws exceptions when full
-<li>CircularFifoBuffer - implements a buffer with a fixed size that discards oldest when full
-<li>UnboundedFifoBuffer - implements a buffer that grows in size if necessary
-</ul>
-<p>
-The following decorators are provided in the package:
-<ul>
-<li>Synchronized - synchronizes method access for multi-threaded environments
-<li>Unmodifiable - ensures the collection cannot be altered
-<li>Predicated - ensures that only elements that are valid according to a predicate can be added
-<li>Typed - ensures that only elements that are of a specific type can be added
-<li>Transformed - transforms elements added to the buffer
-<li>Blocking - blocks on get and remove until an element is available
-</ul>
-</pre>
-</BODY>
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/AbstractCollectionDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/AbstractCollectionDecorator.java
deleted file mode 100755
index 75e6773..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/AbstractCollectionDecorator.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.collection;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-/**
- * Decorates another <code>Collection</code> to provide additional behaviour.
- * <p>
- * Each method call made on this <code>Collection</code> is forwarded to the
- * decorated <code>Collection</code>. This class is used as a framework on which
- * to build to extensions such as synchronized and unmodifiable behaviour. The
- * main advantage of decoration is that one decorator can wrap any implementation
- * of <code>Collection</code>, whereas sub-classing requires a new class to be
- * written for each implementation.
- * <p>
- * This implementation does not perform any special processing with
- * {@link #iterator()}. Instead it simply returns the value from the 
- * wrapped collection. This may be undesirable, for example if you are trying
- * to write an unmodifiable implementation it might provide a loophole.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Stephen Colebourne
- * @author Paul Jack
- */
-public abstract class AbstractCollectionDecorator implements Collection {
-
-    /** The collection being decorated */
-    protected Collection collection;
-
-    /**
-     * Constructor only used in deserialization, do not use otherwise.
-     * @since Commons Collections 3.1
-     */
-    protected AbstractCollectionDecorator() {
-        super();
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param coll  the collection to decorate, must not be null
-     * @throws IllegalArgumentException if the collection is null
-     */
-    protected AbstractCollectionDecorator(Collection coll) {
-        if (coll == null) {
-            throw new IllegalArgumentException("Collection must not be null");
-        }
-        this.collection = coll;
-    }
-
-    /**
-     * Gets the collection being decorated.
-     * 
-     * @return the decorated collection
-     */
-    protected Collection getCollection() {
-        return collection;
-    }
-
-    //-----------------------------------------------------------------------
-    public boolean add(Object object) {
-        return collection.add(object);
-    }
-
-    public boolean addAll(Collection coll) {
-        return collection.addAll(coll);
-    }
-
-    public void clear() {
-        collection.clear();
-    }
-
-    public boolean contains(Object object) {
-        return collection.contains(object);
-    }
-
-    public boolean isEmpty() {
-        return collection.isEmpty();
-    }
-
-    public Iterator iterator() {
-        return collection.iterator();
-    }
-
-    public boolean remove(Object object) {
-        return collection.remove(object);
-    }
-
-    public int size() {
-        return collection.size();
-    }
-
-    public Object[] toArray() {
-        return collection.toArray();
-    }
-
-    public Object[] toArray(Object[] object) {
-        return collection.toArray(object);
-    }
-
-    public boolean containsAll(Collection coll) {
-        return collection.containsAll(coll);
-    }
-
-    public boolean removeAll(Collection coll) {
-        return collection.removeAll(coll);
-    }
-
-    public boolean retainAll(Collection coll) {
-        return collection.retainAll(coll);
-    }
-
-    public boolean equals(Object object) {
-        if (object == this) {
-            return true;
-        }
-        return collection.equals(object);
-    }
-
-    public int hashCode() {
-        return collection.hashCode();
-    }
-
-    public String toString() {
-        return collection.toString();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/AbstractSerializableCollectionDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/AbstractSerializableCollectionDecorator.java
deleted file mode 100755
index 136b04c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/AbstractSerializableCollectionDecorator.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- *  Copyright 2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.collection;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Collection;
-
-/**
- * Serializable subclass of AbstractCollectionDecorator.
- * 
- * @author Stephen Colebourne
- * @since Commons Collections 3.1
- */
-public abstract class AbstractSerializableCollectionDecorator
-        extends AbstractCollectionDecorator
-        implements Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 6249888059822088500L;
-
-    /**
-     * Constructor.
-     */
-    protected AbstractSerializableCollectionDecorator(Collection coll) {
-        super(coll);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the collection out using a custom routine.
-     * 
-     * @param out  the output stream
-     * @throws IOException
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeObject(collection);
-    }
-
-    /**
-     * Read the collection in using a custom routine.
-     * 
-     * @param in  the input stream
-     * @throws IOException
-     * @throws ClassNotFoundException
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        collection = (Collection) in.readObject();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/CompositeCollection.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/CompositeCollection.java
deleted file mode 100755
index 727ac93..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/CompositeCollection.java
+++ /dev/null
@@ -1,442 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.collection;
-
-import java.lang.reflect.Array;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.apache.commons.collections.iterators.EmptyIterator;
-import org.apache.commons.collections.iterators.IteratorChain;
-import org.apache.commons.collections.list.UnmodifiableList;
-
-/**
- * Decorates a collection of other collections to provide a single unified view.
- * <p>
- * Changes made to this collection will actually be made on the decorated collection.
- * Add and remove operations require the use of a pluggable strategy. If no 
- * strategy is provided then add and remove are unsupported.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- *
- * @author Brian McCallister
- * @author Stephen Colebourne
- * @author Phil Steitz
- */
-public class CompositeCollection implements Collection {
-    
-    /** CollectionMutator to handle changes to the collection */
-    protected CollectionMutator mutator;
-    
-    /** Collections in the composite */
-    protected Collection[] all;
-    
-    /**
-     * Create an empty CompositeCollection.
-     */
-    public CompositeCollection() {
-        super();
-        this.all = new Collection[0];
-    }
-    
-    /**
-     * Create a Composite Collection with only coll composited.
-     * 
-     * @param coll  a collection to decorate
-     */
-    public CompositeCollection(Collection coll) {
-        this();
-        this.addComposited(coll);
-    }
-    
-    /**
-     * Create a CompositeCollection with colls as the initial list of
-     * composited collections.
-     * 
-     * @param colls  an array of collections to decorate
-     */
-    public CompositeCollection(Collection[] colls) {
-        this();
-        this.addComposited(colls);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the size of this composite collection.
-     * <p>
-     * This implementation calls <code>size()</code> on each collection.
-     *
-     * @return total number of elements in all contained containers
-     */
-    public int size() {
-        int size = 0;
-        for (int i = this.all.length - 1; i >= 0; i--) {
-            size += this.all[i].size();
-        }
-        return size;
-    }
-    
-    /**
-     * Checks whether this composite collection is empty.
-     * <p>
-     * This implementation calls <code>isEmpty()</code> on each collection.
-     *
-     * @return true if all of the contained collections are empty
-     */
-    public boolean isEmpty() {
-        for (int i = this.all.length - 1; i >= 0; i--) {
-            if (this.all[i].isEmpty() == false) {
-                return false;
-            }
-        }
-        return true;
-    }
-    
-    /**
-     * Checks whether this composite collection contains the object.
-     * <p>
-     * This implementation calls <code>contains()</code> on each collection.
-     *
-     * @param obj  the object to search for
-     * @return true if obj is contained in any of the contained collections
-     */
-    public boolean contains(Object obj) {
-        for (int i = this.all.length - 1; i >= 0; i--) {
-            if (this.all[i].contains(obj)) {
-                return true;
-            }
-        }
-        return false;
-    }
-    
-    /**
-     * Gets an iterator over all the collections in this composite.
-     * <p>
-     * This implementation uses an <code>IteratorChain</code>.
-     *
-     * @return an <code>IteratorChain</code> instance which supports
-     *  <code>remove()</code>. Iteration occurs over contained collections in
-     *  the order they were added, but this behavior should not be relied upon.
-     * @see IteratorChain
-     */
-    public Iterator iterator() {
-        if (this.all.length == 0) {
-            return EmptyIterator.INSTANCE;
-        }
-        IteratorChain chain = new IteratorChain();
-        for (int i = 0; i < this.all.length; ++i) {
-            chain.addIterator(this.all[i].iterator());
-        }
-        return chain;
-    }
-    
-    /**
-     * Returns an array containing all of the elements in this composite.
-     *
-     * @return an object array of all the elements in the collection
-     */
-    public Object[] toArray() {
-        final Object[] result = new Object[this.size()];
-        int i = 0;
-        for (Iterator it = this.iterator(); it.hasNext(); i++) {
-            result[i] = it.next();
-        }
-        return result;
-    }
-    
-    /**
-     * Returns an object array, populating the supplied array if possible.
-     * See <code>Collection</code> interface for full details.
-     *
-     * @param array  the array to use, populating if possible
-     * @return an array of all the elements in the collection
-     */
-    public Object[] toArray(Object[] array) {
-        int size = this.size();
-        Object[] result = null;
-        if (array.length >= size) {
-            result = array;
-        }
-        else {
-            result = (Object[]) Array.newInstance(array.getClass().getComponentType(), size);
-        }
-        
-        int offset = 0;
-        for (int i = 0; i < this.all.length; ++i) {
-            for (Iterator it = this.all[i].iterator(); it.hasNext();) {
-                result[offset++] = it.next();
-            }
-        }
-        if (result.length > size) {
-            result[size] = null;
-        }
-        return result;
-    }
-    
-    /**
-     * Adds an object to the collection, throwing UnsupportedOperationException
-     * unless a CollectionMutator strategy is specified.
-     *
-     * @param obj  the object to add
-     * @return true if the collection was modified
-     * @throws UnsupportedOperationException if CollectionMutator hasn't been set
-     * @throws UnsupportedOperationException if add is unsupported
-     * @throws ClassCastException if the object cannot be added due to its type
-     * @throws NullPointerException if the object cannot be added because its null
-     * @throws IllegalArgumentException if the object cannot be added
-     */
-    public boolean add(Object obj) {
-        if (this.mutator == null) {
-           throw new UnsupportedOperationException(
-           "add() is not supported on CompositeCollection without a CollectionMutator strategy");
-        }
-        return this.mutator.add(this, this.all, obj);
-    }
-    
-    /**
-     * Removes an object from the collection, throwing UnsupportedOperationException
-     * unless a CollectionMutator strategy is specified.
-     *
-     * @param obj  the object being removed
-     * @return true if the collection is changed
-     * @throws UnsupportedOperationException if removed is unsupported
-     * @throws ClassCastException if the object cannot be removed due to its type
-     * @throws NullPointerException if the object cannot be removed because its null
-     * @throws IllegalArgumentException if the object cannot be removed
-     */
-    public boolean remove(Object obj) {
-        if (this.mutator == null) {
-            throw new UnsupportedOperationException(
-            "remove() is not supported on CompositeCollection without a CollectionMutator strategy");
-        }
-        return this.mutator.remove(this, this.all, obj);
-    }
-    
-    /**
-     * Checks whether this composite contains all the elements in the specified collection.
-     * <p>
-     * This implementation calls <code>contains()</code> for each element in the
-     * specified collection.
-     *
-     * @param coll  the collection to check for
-     * @return true if all elements contained
-     */
-    public boolean containsAll(Collection coll) {
-        for (Iterator it = coll.iterator(); it.hasNext();) {
-            if (this.contains(it.next()) == false) {
-                return false;
-            }
-        }
-        return true;
-    }
-    
-    /**
-     * Adds a collection of elements to this collection, throwing
-     * UnsupportedOperationException unless a CollectionMutator strategy is specified.
-     *
-     * @param coll  the collection to add
-     * @return true if the collection was modified
-     * @throws UnsupportedOperationException if CollectionMutator hasn't been set
-     * @throws UnsupportedOperationException if add is unsupported
-     * @throws ClassCastException if the object cannot be added due to its type
-     * @throws NullPointerException if the object cannot be added because its null
-     * @throws IllegalArgumentException if the object cannot be added
-     */
-    public boolean addAll(Collection coll) {
-        if (this.mutator == null) {
-            throw new UnsupportedOperationException(
-            "addAll() is not supported on CompositeCollection without a CollectionMutator strategy");
-        }
-        return this.mutator.addAll(this, this.all, coll);
-    }
-    
-    /**
-     * Removes the elements in the specified collection from this composite collection.
-     * <p>
-     * This implementation calls <code>removeAll</code> on each collection.
-     *
-     * @param coll  the collection to remove
-     * @return true if the collection was modified
-     * @throws UnsupportedOperationException if removeAll is unsupported
-     */
-    public boolean removeAll(Collection coll) {
-        if (coll.size() == 0) {
-            return false;
-        }
-        boolean changed = false;
-        for (int i = this.all.length - 1; i >= 0; i--) {
-            changed = (this.all[i].removeAll(coll) || changed);
-        }
-        return changed;
-    }
-    
-    /**
-     * Retains all the elements in the specified collection in this composite collection,
-     * removing all others.
-     * <p>
-     * This implementation calls <code>retainAll()</code> on each collection.
-     *
-     * @param coll  the collection to remove
-     * @return true if the collection was modified
-     * @throws UnsupportedOperationException if retainAll is unsupported
-     */
-    public boolean retainAll(final Collection coll) {
-        boolean changed = false;
-        for (int i = this.all.length - 1; i >= 0; i--) {
-            changed = (this.all[i].retainAll(coll) || changed);
-        }
-        return changed;
-    }
-    
-    /**
-     * Removes all of the elements from this collection .
-     * <p>
-     * This implementation calls <code>clear()</code> on each collection.
-     *
-     * @throws UnsupportedOperationException if clear is unsupported
-     */
-    public void clear() {
-        for (int i = 0; i < this.all.length; ++i) {
-            this.all[i].clear();
-        }
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Specify a CollectionMutator strategy instance to handle changes.
-     *
-     * @param mutator  the mutator to use
-     */
-    public void setMutator(CollectionMutator mutator) {
-        this.mutator = mutator;
-    }
-    
-    /**
-     * Add these Collections to the list of collections in this composite
-     *
-     * @param comps Collections to be appended to the composite
-     */
-    public void addComposited(Collection[] comps) {
-        ArrayList list = new ArrayList(Arrays.asList(this.all));
-        list.addAll(Arrays.asList(comps));
-        all = (Collection[]) list.toArray(new Collection[list.size()]);
-    }
-    
-    /**
-     * Add an additional collection to this composite.
-     * 
-     * @param c  the collection to add
-     */
-    public void addComposited(Collection c) {
-        this.addComposited(new Collection[]{c});
-    }
-    
-    /**
-     * Add two additional collections to this composite.
-     * 
-     * @param c  the first collection to add
-     * @param d  the second collection to add
-     */
-    public void addComposited(Collection c, Collection d) {
-        this.addComposited(new Collection[]{c, d});
-    }
-    
-    /**
-     * Removes a collection from the those being decorated in this composite.
-     *
-     * @param coll  collection to be removed
-     */
-    public void removeComposited(Collection coll) {
-        ArrayList list = new ArrayList(this.all.length);
-        list.addAll(Arrays.asList(this.all));
-        list.remove(coll);
-        this.all = (Collection[]) list.toArray(new Collection[list.size()]);
-    }
-    
-    /**
-     * Returns a new collection containing all of the elements
-     *
-     * @return A new ArrayList containing all of the elements in this composite.
-     *         The new collection is <i>not</i> backed by this composite.
-     */
-    public Collection toCollection() {
-        return new ArrayList(this);
-    }
-    
-    /**
-     * Gets the collections being decorated.
-     *
-     * @return Unmodifiable collection of all collections in this composite.
-     */
-    public Collection getCollections() {
-        return UnmodifiableList.decorate(Arrays.asList(this.all));
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Pluggable strategy to handle changes to the composite.
-     */
-    public interface CollectionMutator {
-        
-        /**
-         * Called when an object is to be added to the composite.
-         *
-         * @param composite  the CompositeCollection being changed
-         * @param collections  all of the Collection instances in this CompositeCollection
-         * @param obj  the object being added
-         * @return true if the collection is changed
-         * @throws UnsupportedOperationException if add is unsupported
-         * @throws ClassCastException if the object cannot be added due to its type
-         * @throws NullPointerException if the object cannot be added because its null
-         * @throws IllegalArgumentException if the object cannot be added
-         */
-        public boolean add(CompositeCollection composite, Collection[] collections, Object obj);
-        
-        /**
-         * Called when a collection is to be added to the composite.
-         *
-         * @param composite  the CompositeCollection being changed
-         * @param collections  all of the Collection instances in this CompositeCollection
-         * @param coll  the collection being added
-         * @return true if the collection is changed
-         * @throws UnsupportedOperationException if add is unsupported
-         * @throws ClassCastException if the object cannot be added due to its type
-         * @throws NullPointerException if the object cannot be added because its null
-         * @throws IllegalArgumentException if the object cannot be added
-         */
-        public boolean addAll(CompositeCollection composite, Collection[] collections, Collection coll);
-        
-        /**
-         * Called when an object is to be removed to the composite.
-         *
-         * @param composite  the CompositeCollection being changed
-         * @param collections  all of the Collection instances in this CompositeCollection
-         * @param obj  the object being removed
-         * @return true if the collection is changed
-         * @throws UnsupportedOperationException if removed is unsupported
-         * @throws ClassCastException if the object cannot be removed due to its type
-         * @throws NullPointerException if the object cannot be removed because its null
-         * @throws IllegalArgumentException if the object cannot be removed
-         */
-        public boolean remove(CompositeCollection composite, Collection[] collections, Object obj);
-        
-    }
-    
-}
-
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/PredicatedCollection.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/PredicatedCollection.java
deleted file mode 100755
index aa779bd..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/PredicatedCollection.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.collection;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Decorates another <code>Collection</code> to validate that additions
- * match a specified predicate.
- * <p>
- * This collection exists to provide validation for the decorated collection.
- * It is normally created to decorate an empty collection.
- * If an object cannot be added to the collection, an IllegalArgumentException is thrown.
- * <p>
- * One usage would be to ensure that no null entries are added to the collection.
- * <pre>Collection coll = PredicatedCollection.decorate(new ArrayList(), NotNullPredicate.INSTANCE);</pre>
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Stephen Colebourne
- * @author Paul Jack
- */
-public class PredicatedCollection extends AbstractSerializableCollectionDecorator {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -5259182142076705162L;
-
-    /** The predicate to use */
-    protected final Predicate predicate;
-
-    /**
-     * Factory method to create a predicated (validating) collection.
-     * <p>
-     * If there are any elements already in the collection being decorated, they
-     * are validated.
-     * 
-     * @param coll  the collection to decorate, must not be null
-     * @param predicate  the predicate to use for validation, must not be null
-     * @return a new predicated collection
-     * @throws IllegalArgumentException if collection or predicate is null
-     * @throws IllegalArgumentException if the collection contains invalid elements
-     */
-    public static Collection decorate(Collection coll, Predicate predicate) {
-        return new PredicatedCollection(coll, predicate);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * <p>
-     * If there are any elements already in the collection being decorated, they
-     * are validated.
-     * 
-     * @param coll  the collection to decorate, must not be null
-     * @param predicate  the predicate to use for validation, must not be null
-     * @throws IllegalArgumentException if collection or predicate is null
-     * @throws IllegalArgumentException if the collection contains invalid elements
-     */
-    protected PredicatedCollection(Collection coll, Predicate predicate) {
-        super(coll);
-        if (predicate == null) {
-            throw new IllegalArgumentException("Predicate must not be null");
-        }
-        this.predicate = predicate;
-        for (Iterator it = coll.iterator(); it.hasNext(); ) {
-            validate(it.next());
-        }
-    }
-
-    /**
-     * Validates the object being added to ensure it matches the predicate.
-     * <p>
-     * The predicate itself should not throw an exception, but return false to
-     * indicate that the object cannot be added.
-     * 
-     * @param object  the object being added
-     * @throws IllegalArgumentException if the add is invalid
-     */
-    protected void validate(Object object) {
-        if (predicate.evaluate(object) == false) {
-            throw new IllegalArgumentException("Cannot add Object '" + object + "' - Predicate rejected it");
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Override to validate the object being added to ensure it matches
-     * the predicate.
-     * 
-     * @param object  the object being added
-     * @return the result of adding to the underlying collection
-     * @throws IllegalArgumentException if the add is invalid
-     */
-    public boolean add(Object object) {
-        validate(object);
-        return getCollection().add(object);
-    }
-
-    /**
-     * Override to validate the objects being added to ensure they match
-     * the predicate. If any one fails, no update is made to the underlying
-     * collection.
-     * 
-     * @param coll  the collection being added
-     * @return the result of adding to the underlying collection
-     * @throws IllegalArgumentException if the add is invalid
-     */
-    public boolean addAll(Collection coll) {
-        for (Iterator it = coll.iterator(); it.hasNext(); ) {
-            validate(it.next());
-        }
-        return getCollection().addAll(coll);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/SynchronizedCollection.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/SynchronizedCollection.java
deleted file mode 100755
index 4c47324..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/SynchronizedCollection.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.collection;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Iterator;
-
-/**
- * Decorates another <code>Collection</code> to synchronize its behaviour
- * for a multi-threaded environment.
- * <p>
- * Iterators must be manually synchronized:
- * <pre>
- * synchronized (coll) {
- *   Iterator it = coll.iterator();
- *   // do stuff with iterator
- * }
- * </pre>
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Stephen Colebourne
- */
-public class SynchronizedCollection implements Collection, Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 2412805092710877986L;
-
-    /** The collection to decorate */
-    protected final Collection collection;
-    /** The object to lock on, needed for List/SortedSet views */
-    protected final Object lock;
-
-    /**
-     * Factory method to create a synchronized collection.
-     * 
-     * @param coll  the collection to decorate, must not be null
-     * @return a new synchronized collection
-     * @throws IllegalArgumentException if collection is null
-     */
-    public static Collection decorate(Collection coll) {
-        return new SynchronizedCollection(coll);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param collection  the collection to decorate, must not be null
-     * @throws IllegalArgumentException if the collection is null
-     */
-    protected SynchronizedCollection(Collection collection) {
-        if (collection == null) {
-            throw new IllegalArgumentException("Collection must not be null");
-        }
-        this.collection = collection;
-        this.lock = this;
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param collection  the collection to decorate, must not be null
-     * @param lock  the lock object to use, must not be null
-     * @throws IllegalArgumentException if the collection is null
-     */
-    protected SynchronizedCollection(Collection collection, Object lock) {
-        if (collection == null) {
-            throw new IllegalArgumentException("Collection must not be null");
-        }
-        this.collection = collection;
-        this.lock = lock;
-    }
-
-    //-----------------------------------------------------------------------
-    public boolean add(Object object) {
-        synchronized (lock) {
-            return collection.add(object);
-        }
-    }
-
-    public boolean addAll(Collection coll) {
-        synchronized (lock) {
-            return collection.addAll(coll);
-        }
-    }
-
-    public void clear() {
-        synchronized (lock) {
-            collection.clear();
-        }
-    }
-
-    public boolean contains(Object object) {
-        synchronized (lock) {
-            return collection.contains(object);
-        }
-    }
-
-    public boolean containsAll(Collection coll) {
-        synchronized (lock) {
-            return collection.containsAll(coll);
-        }
-    }
-
-    public boolean isEmpty() {
-        synchronized (lock) {
-            return collection.isEmpty();
-        }
-    }
-
-    /**
-     * Iterators must be manually synchronized.
-     * <pre>
-     * synchronized (coll) {
-     *   Iterator it = coll.iterator();
-     *   // do stuff with iterator
-     * }
-     * 
-     * @return an iterator that must be manually synchronized on the collection
-     */
-    public Iterator iterator() {
-        return collection.iterator();
-    }
-
-    public Object[] toArray() {
-        synchronized (lock) {
-            return collection.toArray();
-        }
-    }
-
-    public Object[] toArray(Object[] object) {
-        synchronized (lock) {
-            return collection.toArray(object);
-        }
-    }
-
-    public boolean remove(Object object) {
-        synchronized (lock) {
-            return collection.remove(object);
-        }
-    }
-
-    public boolean removeAll(Collection coll) {
-        synchronized (lock) {
-            return collection.removeAll(coll);
-        }
-    }
-
-    public boolean retainAll(Collection coll) {
-        synchronized (lock) {
-            return collection.retainAll(coll);
-        }
-    }
-
-    public int size() {
-        synchronized (lock) {
-            return collection.size();
-        }
-    }
-
-    public boolean equals(Object object) {
-        synchronized (lock) {
-            if (object == this) {
-                return true;
-            }
-            return collection.equals(object);
-        }
-    }
-
-    public int hashCode() {
-        synchronized (lock) {
-            return collection.hashCode();
-        }
-    }
-
-    public String toString() {
-        synchronized (lock) {
-            return collection.toString();
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/TransformedCollection.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/TransformedCollection.java
deleted file mode 100755
index b353343..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/TransformedCollection.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.collection;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.commons.collections.Transformer;
-
-/**
- * Decorates another <code>Collection</code> to transform objects that are added.
- * <p>
- * The add methods are affected by this class.
- * Thus objects must be removed or searched for using their transformed form.
- * For example, if the transformation converts Strings to Integers, you must
- * use the Integer form to remove objects.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Stephen Colebourne
- */
-public class TransformedCollection extends AbstractSerializableCollectionDecorator {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 8692300188161871514L;
-
-    /** The transformer to use */
-    protected final Transformer transformer;
-
-    /**
-     * Factory method to create a transforming collection.
-     * <p>
-     * If there are any elements already in the collection being decorated, they
-     * are NOT transformed.
-     * 
-     * @param coll  the collection to decorate, must not be null
-     * @param transformer  the transformer to use for conversion, must not be null
-     * @return a new transformed collection
-     * @throws IllegalArgumentException if collection or transformer is null
-     */
-    public static Collection decorate(Collection coll, Transformer transformer) {
-        return new TransformedCollection(coll, transformer);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * <p>
-     * If there are any elements already in the collection being decorated, they
-     * are NOT transformed.
-     * 
-     * @param coll  the collection to decorate, must not be null
-     * @param transformer  the transformer to use for conversion, must not be null
-     * @throws IllegalArgumentException if collection or transformer is null
-     */
-    protected TransformedCollection(Collection coll, Transformer transformer) {
-        super(coll);
-        if (transformer == null) {
-            throw new IllegalArgumentException("Transformer must not be null");
-        }
-        this.transformer = transformer;
-    }
-
-    /**
-     * Transforms an object.
-     * <p>
-     * The transformer itself may throw an exception if necessary.
-     * 
-     * @param object  the object to transform
-     * @return a transformed object
-     */
-    protected Object transform(Object object) {
-        return transformer.transform(object);
-    }
-
-    /**
-     * Transforms a collection.
-     * <p>
-     * The transformer itself may throw an exception if necessary.
-     * 
-     * @param coll  the collection to transform
-     * @return a transformed object
-     */
-    protected Collection transform(Collection coll) {
-        List list = new ArrayList(coll.size());
-        for (Iterator it = coll.iterator(); it.hasNext(); ) {
-            list.add(transform(it.next()));
-        }
-        return list;
-    }
-
-    //-----------------------------------------------------------------------
-    public boolean add(Object object) {
-        object = transform(object);
-        return getCollection().add(object);
-    }
-
-    public boolean addAll(Collection coll) {
-        coll = transform(coll);
-        return getCollection().addAll(coll);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/TypedCollection.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/TypedCollection.java
deleted file mode 100755
index 88d81f4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/TypedCollection.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.collection;
-
-import java.util.Collection;
-
-import org.apache.commons.collections.functors.InstanceofPredicate;
-
-/**
- * Decorates a <code>Collection</code> to validate that elements added are of a specific type.
- * <p>
- * The validation of additions is performed via an instanceof test against 
- * a specified <code>Class</code>. If an object cannot be added to the
- * collection, an IllegalArgumentException is thrown.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:28 $
- * 
- * @author Stephen Colebourne
- * @author Matthew Hawthorne
- */
-public class TypedCollection {
-
-    /**
-     * Factory method to create a typed collection.
-     * <p>
-     * If there are any elements already in the collection being decorated, they
-     * are validated.
-     * 
-     * @param coll  the collection to decorate, must not be null
-     * @param type  the type to allow into the collection, must not be null
-     * @return a new typed collection
-     * @throws IllegalArgumentException if collection or type is null
-     * @throws IllegalArgumentException if the collection contains invalid elements
-     */
-    public static Collection decorate(Collection coll, Class type) {
-        return new PredicatedCollection(coll, InstanceofPredicate.getInstance(type));
-    }
-    
-    /**
-     * Restrictive constructor.
-     */
-    protected TypedCollection() {
-        super();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/UnmodifiableBoundedCollection.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/UnmodifiableBoundedCollection.java
deleted file mode 100755
index 12b7f38..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/UnmodifiableBoundedCollection.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.collection;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.apache.commons.collections.BoundedCollection;
-import org.apache.commons.collections.iterators.UnmodifiableIterator;
-
-/**
- * <code>UnmodifiableBoundedCollection</code> decorates another 
- * <code>BoundedCollection</code> to ensure it can't be altered.
- * <p>
- * If a BoundedCollection is first wrapped in some other collection decorator,
- * such as synchronized or predicated, the BoundedCollection methods are no 
- * longer accessible.
- * The factory on this class will attempt to retrieve the bounded nature by
- * examining the package scope variables.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Stephen Colebourne
- */
-public final class UnmodifiableBoundedCollection
-        extends AbstractSerializableCollectionDecorator
-        implements BoundedCollection {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -7112672385450340330L;
-
-    /**
-     * Factory method to create an unmodifiable bounded collection.
-     * 
-     * @param coll  the <code>BoundedCollection</code> to decorate, must not be null
-     * @return a new unmodifiable bounded collection
-     * @throws IllegalArgumentException if bag is null
-     */
-    public static BoundedCollection decorate(BoundedCollection coll) {
-        return new UnmodifiableBoundedCollection(coll);
-    }
-    
-    /**
-     * Factory method to create an unmodifiable bounded collection.
-     * <p>
-     * This method is capable of drilling down through up to 1000 other decorators 
-     * to find a suitable BoundedCollection.
-     * 
-     * @param coll  the <code>BoundedCollection</code> to decorate, must not be null
-     * @return a new unmodifiable bounded collection
-     * @throws IllegalArgumentException if bag is null
-     */
-    public static BoundedCollection decorateUsing(Collection coll) {
-        if (coll == null) {
-            throw new IllegalArgumentException("The collection must not be null");
-        }
-        
-        // handle decorators
-        for (int i = 0; i < 1000; i++) {  // counter to prevent infinite looping
-            if (coll instanceof BoundedCollection) {
-                break;  // normal loop exit
-            } else if (coll instanceof AbstractCollectionDecorator) {
-                coll = ((AbstractCollectionDecorator) coll).collection;
-            } else if (coll instanceof SynchronizedCollection) {
-                coll = ((SynchronizedCollection) coll).collection;
-            } else {
-                break;  // normal loop exit
-            }
-        }
-            
-        if (coll instanceof BoundedCollection == false) {
-            throw new IllegalArgumentException("The collection is not a bounded collection");
-        }
-        return new UnmodifiableBoundedCollection((BoundedCollection) coll);
-    }    
-    
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param coll  the collection to decorate, must not be null
-     * @throws IllegalArgumentException if coll is null
-     */
-    private UnmodifiableBoundedCollection(BoundedCollection coll) {
-        super(coll);
-    }
-
-    //-----------------------------------------------------------------------
-    public Iterator iterator() {
-        return UnmodifiableIterator.decorate(getCollection().iterator());
-    }
-
-    public boolean add(Object object) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean addAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void clear() {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean remove(Object object) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean removeAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean retainAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    //-----------------------------------------------------------------------    
-    public boolean isFull() {
-        return ((BoundedCollection) collection).isFull();
-    }
-
-    public int maxSize() {
-        return ((BoundedCollection) collection).maxSize();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/UnmodifiableCollection.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/UnmodifiableCollection.java
deleted file mode 100755
index 3edf17e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/UnmodifiableCollection.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.collection;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.apache.commons.collections.Unmodifiable;
-import org.apache.commons.collections.iterators.UnmodifiableIterator;
-
-/**
- * Decorates another <code>Collection</code> to ensure it can't be altered.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Stephen Colebourne
- */
-public final class UnmodifiableCollection
-        extends AbstractSerializableCollectionDecorator
-        implements Unmodifiable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -239892006883819945L;
-
-    /**
-     * Factory method to create an unmodifiable collection.
-     * <p>
-     * If the collection passed in is already unmodifiable, it is returned.
-     * 
-     * @param coll  the collection to decorate, must not be null
-     * @return an unmodifiable collection
-     * @throws IllegalArgumentException if collection is null
-     */
-    public static Collection decorate(Collection coll) {
-        if (coll instanceof Unmodifiable) {
-            return coll;
-        }
-        return new UnmodifiableCollection(coll);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param coll  the collection to decorate, must not be null
-     * @throws IllegalArgumentException if collection is null
-     */
-    private UnmodifiableCollection(Collection coll) {
-        super(coll);
-    }
-
-    //-----------------------------------------------------------------------
-    public Iterator iterator() {
-        return UnmodifiableIterator.decorate(getCollection().iterator());
-    }
-
-    public boolean add(Object object) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean addAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void clear() {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean remove(Object object) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean removeAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean retainAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/package.html b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/package.html
deleted file mode 100755
index cade872..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/collection/package.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!-- $Id: package.html,v 1.1 2009/05/27 22:16:27 mparker Exp $ -->
- <!--
-   Copyright 2003-2004 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-  -->
-<BODY>
-<p>
-This package contains implementations of the
-{@link java.util.Collection Collection} interface.
-<p>
-The following implementations are provided in the package:
-<ul>
-<li>CompositeCollection - a collection that combines multiple collections into one
-</ul>
-The following decorators are provided in the package:
-<ul>
-<li>Synchronized - synchronizes method access for multi-threaded environments
-<li>Unmodifiable - ensures the collection cannot be altered
-<li>Predicated - ensures that only elements that are valid according to a predicate can be added
-<li>Typed - ensures that only elements that are of a specific type can be added
-<li>Transformed - transforms elements as they are added
-</ul>
-</pre>
-</BODY>
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/BooleanComparator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/BooleanComparator.java
deleted file mode 100755
index 4639b1b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/BooleanComparator.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.comparators;
-
-import java.io.Serializable;
-import java.util.Comparator;
-
-/**
- * A {@link Comparator} for {@link Boolean} objects that can sort either
- * true or false first.
- * <p>
- * @see #getTrueFirstComparator()
- * @see #getFalseFirstComparator()
- * @see #getBooleanComparator(boolean)
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $
- * 
- * @author Rodney Waldhoff
- */
-public final class BooleanComparator implements Comparator, Serializable {
-
-    /** Serialization version. */
-    private static final long serialVersionUID = 1830042991606340609L;
-
-    /** Constant "true first" reference. */
-    private static final BooleanComparator TRUE_FIRST = new BooleanComparator(true);
-
-    /** Constant "false first" reference. */
-    private static final BooleanComparator FALSE_FIRST = new BooleanComparator(false);
-
-    /** <code>true</code> iff <code>true</code> values sort before <code>false</code> values. */
-    private boolean trueFirst = false;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns a BooleanComparator instance that sorts 
-     * <code>true</code> values before <code>false</code> values.
-     * <p />
-     * Clients are encouraged to use the value returned from 
-     * this method instead of constructing a new instance 
-     * to reduce allocation and garbage collection overhead when
-     * multiple BooleanComparators may be used in the same 
-     * virtual machine.
-     * 
-     * @return the true first singleton BooleanComparator
-     */
-    public static BooleanComparator getTrueFirstComparator() {
-        return TRUE_FIRST;
-    }
-    
-    /**
-     * Returns a BooleanComparator instance that sorts 
-     * <code>false</code> values before <code>true</code> values.
-     * <p />
-     * Clients are encouraged to use the value returned from 
-     * this method instead of constructing a new instance 
-     * to reduce allocation and garbage collection overhead when
-     * multiple BooleanComparators may be used in the same 
-     * virtual machine.
-     * 
-     * @return the false first singleton BooleanComparator
-     */
-    public static BooleanComparator getFalseFirstComparator() {
-        return FALSE_FIRST;
-    }
-        
-    /**
-     * Returns a BooleanComparator instance that sorts 
-     * <code><i>trueFirst</i></code> values before 
-     * <code>&#x21;<i>trueFirst</i></code> values.
-     * <p />
-     * Clients are encouraged to use the value returned from 
-     * this method instead of constructing a new instance 
-     * to reduce allocation and garbage collection overhead when
-     * multiple BooleanComparators may be used in the same 
-     * virtual machine.
-     * 
-     * @param trueFirst when <code>true</code>, sort 
-     * <code>true</code> <code>Boolean</code>s before <code>false</code>
-     * @return a singleton BooleanComparator instance
-     */
-    public static BooleanComparator getBooleanComparator(boolean trueFirst) {
-        return trueFirst ? TRUE_FIRST : FALSE_FIRST;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Creates a <code>BooleanComparator</code> that sorts
-     * <code>false</code> values before <code>true</code> values.
-     * <p>
-     * Equivalent to {@link #BooleanComparator(boolean) BooleanComparator(false)}.
-     * <p>
-     * Please use the static factory instead whenever possible.
-     */
-    public BooleanComparator() {
-        this(false);
-    }
-
-    /**
-     * Creates a <code>BooleanComparator</code> that sorts
-     * <code><i>trueFirst</i></code> values before 
-     * <code>&#x21;<i>trueFirst</i></code> values.
-     * <p>
-     * Please use the static factories instead whenever possible.
-     * 
-     * @param trueFirst when <code>true</code>, sort 
-     *  <code>true</code> boolean values before <code>false</code>
-     */
-    public BooleanComparator(boolean trueFirst) {
-        this.trueFirst = trueFirst;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Compares two arbitrary Objects.
-     * When both arguments are <code>Boolean</code>, this method is equivalent to 
-     * {@link #compare(Boolean,Boolean) compare((Boolean)<i>obj1</i>,(Boolean)<i>obj2</i>)}.
-     * When either argument is not a <code>Boolean</code>, this methods throws
-     * a {@link ClassCastException}.
-     * 
-     * @param obj1  the first object to compare
-     * @param obj2  the second object to compare
-     * @return negative if obj1 is less, positive if greater, zero if equal
-     * @throws ClassCastException when either argument is not <code>Boolean</code>
-     */
-    public int compare(Object obj1, Object obj2) {
-        return compare((Boolean)obj1, (Boolean)obj2);
-    }
-    
-    /**
-     * Compares two non-<code>null</code> <code>Boolean</code> objects
-     * according to the value of {@link #sortsTrueFirst()}.
-     * 
-     * @param b1  the first boolean to compare
-     * @param b2  the second boolean to compare
-     * @return negative if obj1 is less, positive if greater, zero if equal
-     * @throws NullPointerException when either argument <code>null</code>
-     */
-    public int compare(Boolean b1, Boolean b2) {
-        boolean v1 = b1.booleanValue();
-        boolean v2 = b2.booleanValue();
-
-        return (v1 ^ v2) ? ( (v1 ^ trueFirst) ? 1 : -1 ) : 0;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Implement a hash code for this comparator that is consistent with
-     * {@link #equals(Object) equals}.
-     *
-     * @return a hash code for this comparator.
-     */
-    public int hashCode() {
-        int hash = "BooleanComparator".hashCode();
-        return trueFirst ? -1 * hash : hash;
-    }
-
-    /**
-     * Returns <code>true</code> iff <i>that</i> Object is 
-     * is a {@link Comparator} whose ordering is known to be 
-     * equivalent to mine.
-     * <p>
-     * This implementation returns <code>true</code>
-     * iff <code><i>that</i></code> is a {@link BooleanComparator} 
-     * whose value of {@link #sortsTrueFirst()} is equal to mine.
-     * 
-     * @param object  the object to compare to
-     * @return true if equal
-     */
-    public boolean equals(Object object) {
-        return (this == object) || 
-               ((object instanceof BooleanComparator) && 
-                (this.trueFirst == ((BooleanComparator)object).trueFirst));
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns <code>true</code> iff
-     * I sort <code>true</code> values before 
-     * <code>false</code> values.  In other words,
-     * returns <code>true</code> iff
-     * {@link #compare(Boolean,Boolean) compare(Boolean.FALSE,Boolean.TRUE)}
-     * returns a positive value.
-     * 
-     * @return the trueFirst flag
-     */
-    public boolean sortsTrueFirst() {
-        return trueFirst;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/ComparableComparator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/ComparableComparator.java
deleted file mode 100755
index 22f6c34..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/ComparableComparator.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.comparators;
-
-import java.io.Serializable;
-import java.util.Comparator;
-
-/**
- * A {@link Comparator Comparator} that compares 
- * {@link Comparable Comparable} objects.
- * <p />
- * This Comparator is useful, for example,
- * for enforcing the natural order in custom implementations
- * of SortedSet and SortedMap.
- * <p />
- * Note: In the 2.0 and 2.1 releases of Commons Collections, 
- * this class would throw a {@link ClassCastException} if
- * either of the arguments to {@link #compare(Object, Object) compare}
- * were <code>null</code>, not {@link Comparable Comparable},
- * or for which {@link Comparable#compareTo(Object) compareTo} gave
- * inconsistent results.  This is no longer the case.  See
- * {@link #compare(Object, Object) compare} for details.
- *
- * @since Commons Collections 2.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $
- *
- * @author Henri Yandell
- *
- * @see java.util.Collections#reverseOrder()
- */
-public class ComparableComparator implements Comparator, Serializable {
-
-    /** Serialization version. */
-    private static final long serialVersionUID=-291439688585137865L;
-
-    /** The singleton instance. */
-    private static final ComparableComparator instance = new ComparableComparator();
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the singleton instance of a ComparableComparator.
-     * <p>
-     * Developers are encouraged to use the comparator returned from this method
-     * instead of constructing a new instance to reduce allocation and GC overhead
-     * when multiple comparable comparators may be used in the same VM.
-     * 
-     * @return the singleton ComparableComparator
-     */
-    public static ComparableComparator getInstance() {
-        return instance;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor whose use should be avoided.
-     * <p>
-     * Please use the {@link #getInstance()} method whenever possible.
-     */
-    public ComparableComparator() {
-        super();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Compare the two {@link Comparable Comparable} arguments.
-     * This method is equivalent to:
-     * <pre>((Comparable)obj1).compareTo(obj2)</pre>
-     * 
-     * @param obj1  the first object to compare
-     * @param obj2  the second object to compare
-     * @return negative if obj1 is less, positive if greater, zero if equal
-     * @throws NullPointerException when <i>obj1</i> is <code>null</code>, 
-     *         or when <code>((Comparable)obj1).compareTo(obj2)</code> does
-     * @throws ClassCastException when <i>obj1</i> is not a <code>Comparable</code>,
-     *         or when <code>((Comparable)obj1).compareTo(obj2)</code> does
-     */
-    public int compare(Object obj1, Object obj2) {
-        return ((Comparable)obj1).compareTo(obj2);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Implement a hash code for this comparator that is consistent with
-     * {@link #equals(Object) equals}.
-     *
-     * @return a hash code for this comparator.
-     * @since Commons Collections 3.0
-     */
-    public int hashCode() {
-        return "ComparableComparator".hashCode();
-    }
-
-    /**
-     * Returns <code>true</code> iff <i>that</i> Object is 
-     * is a {@link Comparator Comparator} whose ordering is 
-     * known to be equivalent to mine.
-     * <p>
-     * This implementation returns <code>true</code>
-     * iff <code><i>object</i>.{@link Object#getClass() getClass()}</code>
-     * equals <code>this.getClass()</code>.
-     * Subclasses may want to override this behavior to remain consistent
-     * with the {@link Comparator#equals(Object)} contract.
-     * 
-     * @param object  the object to compare with
-     * @return true if equal
-     * @since Commons Collections 3.0
-     */
-    public boolean equals(Object object) {
-        return (this == object) || 
-               ((null != object) && (object.getClass().equals(this.getClass())));
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/ComparatorChain.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/ComparatorChain.java
deleted file mode 100755
index 8fa9f57..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/ComparatorChain.java
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- *  Copyright 1999-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.comparators;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * <p>A ComparatorChain is a Comparator that wraps one or
- * more Comparators in sequence.  The ComparatorChain
- * calls each Comparator in sequence until either 1)
- * any single Comparator returns a non-zero result
- * (and that result is then returned),
- * or 2) the ComparatorChain is exhausted (and zero is
- * returned).  This type of sorting is very similar
- * to multi-column sorting in SQL, and this class
- * allows Java classes to emulate that kind of behaviour
- * when sorting a List.</p>
- * 
- * <p>To further facilitate SQL-like sorting, the order of
- * any single Comparator in the list can be reversed.</p>
- * 
- * <p>Calling a method that adds new Comparators or
- * changes the ascend/descend sort <i>after compare(Object,
- * Object) has been called</i> will result in an
- * UnsupportedOperationException.  However, <i>take care</i>
- * to not alter the underlying List of Comparators
- * or the BitSet that defines the sort order.</p>
- * 
- * <p>Instances of ComparatorChain are not synchronized.
- * The class is not thread-safe at construction time, but
- * it <i>is</i> thread-safe to perform multiple comparisons
- * after all the setup operations are complete.</p>
- * 
- * @since Commons Collections 2.0
- * @author Morgan Delagrange
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $
- */
-public class ComparatorChain implements Comparator, Serializable {
-
-    /** Serialization version from Collections 2.0. */
-    private static final long serialVersionUID = -721644942746081630L;
-    
-    /** The list of comparators in the chain. */
-    protected List comparatorChain = null;
-    /** Order - false (clear) = ascend; true (set) = descend. */
-    protected BitSet orderingBits = null;
-   /** Whether the chain has been "locked". */
-    protected boolean isLocked = false;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Construct a ComparatorChain with no Comparators.
-     * You must add at least one Comparator before calling
-     * the compare(Object,Object) method, or an 
-     * UnsupportedOperationException is thrown
-     */
-    public ComparatorChain() {
-        this(new ArrayList(),new BitSet());
-    }
-
-    /**
-     * Construct a ComparatorChain with a single Comparator,
-     * sorting in the forward order
-     * 
-     * @param comparator First comparator in the Comparator chain
-     */
-    public ComparatorChain(Comparator comparator) {
-        this(comparator,false);
-    }
-
-    /**
-     * Construct a Comparator chain with a single Comparator,
-     * sorting in the given order
-     * 
-     * @param comparator First Comparator in the ComparatorChain
-     * @param reverse    false = forward sort; true = reverse sort
-     */
-    public ComparatorChain(Comparator comparator, boolean reverse) {
-        comparatorChain = new ArrayList();
-        comparatorChain.add(comparator);
-        orderingBits = new BitSet(1);
-        if (reverse == true) {
-            orderingBits.set(0);
-        }
-    }
-
-    /**
-     * Construct a ComparatorChain from the Comparators in the
-     * List.  All Comparators will default to the forward 
-     * sort order.
-     * 
-     * @param list   List of Comparators
-     * @see #ComparatorChain(List,BitSet)
-     */
-    public ComparatorChain(List list) {
-        this(list,new BitSet(list.size()));
-    }
-
-    /**
-     * Construct a ComparatorChain from the Comparators in the
-     * given List.  The sort order of each column will be
-     * drawn from the given BitSet.  When determining the sort
-     * order for Comparator at index <i>i</i> in the List,
-     * the ComparatorChain will call BitSet.get(<i>i</i>).
-     * If that method returns <i>false</i>, the forward
-     * sort order is used; a return value of <i>true</i>
-     * indicates reverse sort order.
-     * 
-     * @param list   List of Comparators.  NOTE: This constructor does not perform a
-     *               defensive copy of the list
-     * @param bits   Sort order for each Comparator.  Extra bits are ignored,
-     *               unless extra Comparators are added by another method.
-     */
-    public ComparatorChain(List list, BitSet bits) {
-        comparatorChain = list;
-        orderingBits = bits;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Add a Comparator to the end of the chain using the
-     * forward sort order
-     * 
-     * @param comparator Comparator with the forward sort order
-     */
-    public void addComparator(Comparator comparator) {
-        addComparator(comparator,false);
-    }
-
-    /**
-     * Add a Comparator to the end of the chain using the
-     * given sort order
-     * 
-     * @param comparator Comparator to add to the end of the chain
-     * @param reverse    false = forward sort order; true = reverse sort order
-     */
-    public void addComparator(Comparator comparator, boolean reverse) {
-        checkLocked();
-        
-        comparatorChain.add(comparator);
-        if (reverse == true) {
-            orderingBits.set(comparatorChain.size() - 1);
-        }
-    }
-
-    /**
-     * Replace the Comparator at the given index, maintaining
-     * the existing sort order.
-     * 
-     * @param index      index of the Comparator to replace
-     * @param comparator Comparator to place at the given index
-     * @exception IndexOutOfBoundsException
-     *                   if index &lt; 0 or index &gt;= size()
-     */
-    public void setComparator(int index, Comparator comparator) 
-    throws IndexOutOfBoundsException {
-        setComparator(index,comparator,false);
-    }
-
-    /**
-     * Replace the Comparator at the given index in the
-     * ComparatorChain, using the given sort order
-     * 
-     * @param index      index of the Comparator to replace
-     * @param comparator Comparator to set
-     * @param reverse    false = forward sort order; true = reverse sort order
-     */
-    public void setComparator(int index, Comparator comparator, boolean reverse) {
-        checkLocked();
-
-        comparatorChain.set(index,comparator);
-        if (reverse == true) {
-            orderingBits.set(index);
-        } else {
-            orderingBits.clear(index);
-        }
-    }
-
-
-    /**
-     * Change the sort order at the given index in the
-     * ComparatorChain to a forward sort.
-     * 
-     * @param index  Index of the ComparatorChain
-     */
-    public void setForwardSort(int index) {
-        checkLocked();
-        orderingBits.clear(index);
-    }
-
-    /**
-     * Change the sort order at the given index in the
-     * ComparatorChain to a reverse sort.
-     * 
-     * @param index  Index of the ComparatorChain
-     */
-    public void setReverseSort(int index) {
-        checkLocked();
-        orderingBits.set(index);
-    }
-
-    /**
-     * Number of Comparators in the current ComparatorChain.
-     * 
-     * @return Comparator count
-     */
-    public int size() {
-        return comparatorChain.size();
-    }
-
-    /**
-     * Determine if modifications can still be made to the
-     * ComparatorChain.  ComparatorChains cannot be modified
-     * once they have performed a comparison.
-     * 
-     * @return true = ComparatorChain cannot be modified; false = 
-     *         ComparatorChain can still be modified.
-     */
-    public boolean isLocked() {
-        return isLocked;
-    }
-
-    // throw an exception if the ComparatorChain is locked
-    private void checkLocked() {
-        if (isLocked == true) {
-            throw new UnsupportedOperationException("Comparator ordering cannot be changed after the first comparison is performed");
-        }
-    }
-
-    private void checkChainIntegrity() {
-        if (comparatorChain.size() == 0) {
-            throw new UnsupportedOperationException("ComparatorChains must contain at least one Comparator");
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Perform comparisons on the Objects as per
-     * Comparator.compare(o1,o2).
-     * 
-     * @param o1  the first object to compare
-     * @param o2  the second object to compare
-     * @return -1, 0, or 1
-     * @exception UnsupportedOperationException
-     *                   if the ComparatorChain does not contain at least one
-     *                   Comparator
-     */
-    public int compare(Object o1, Object o2) throws UnsupportedOperationException {
-        if (isLocked == false) {
-            checkChainIntegrity();
-            isLocked = true;
-        }
-
-        // iterate over all comparators in the chain
-        Iterator comparators = comparatorChain.iterator();
-        for (int comparatorIndex = 0; comparators.hasNext(); ++comparatorIndex) {
-
-            Comparator comparator = (Comparator) comparators.next();
-            int retval = comparator.compare(o1,o2);
-            if (retval != 0) {
-                // invert the order if it is a reverse sort
-                if (orderingBits.get(comparatorIndex) == true) {
-                    if(Integer.MIN_VALUE == retval) {
-                        retval = Integer.MAX_VALUE;
-                    } else {                        
-                        retval *= -1;
-                    }
-                }
-
-                return retval;
-            }
-
-        }
-
-        // if comparators are exhausted, return 0
-        return 0;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Implement a hash code for this comparator that is consistent with
-     * {@link #equals(Object) equals}.
-     * 
-     * @return a suitable hash code
-     * @since Commons Collections 3.0
-     */
-    public int hashCode() {
-        int hash = 0;
-        if(null != comparatorChain) {
-            hash ^= comparatorChain.hashCode();
-        }
-        if(null != orderingBits) {
-            hash ^= orderingBits.hashCode();
-        }
-        return hash;
-    }
-
-    /**
-     * Returns <code>true</code> iff <i>that</i> Object is 
-     * is a {@link Comparator} whose ordering is known to be 
-     * equivalent to mine.
-     * <p>
-     * This implementation returns <code>true</code>
-     * iff <code><i>object</i>.{@link Object#getClass() getClass()}</code>
-     * equals <code>this.getClass()</code>, and the underlying 
-     * comparators and order bits are equal.
-     * Subclasses may want to override this behavior to remain consistent
-     * with the {@link Comparator#equals(Object)} contract.
-     * 
-     * @param object  the object to compare with
-     * @return true if equal
-     * @since Commons Collections 3.0
-     */
-    public boolean equals(Object object) {
-        if(this == object) {
-            return true;
-        } else if(null == object) {
-            return false;
-        } else if(object.getClass().equals(this.getClass())) {
-            ComparatorChain chain = (ComparatorChain)object;
-            return ( (null == orderingBits ? null == chain.orderingBits : orderingBits.equals(chain.orderingBits))
-                   && (null == comparatorChain ? null == chain.comparatorChain : comparatorChain.equals(chain.comparatorChain)) );
-        } else {
-            return false;
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/FixedOrderComparator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/FixedOrderComparator.java
deleted file mode 100755
index 7f832df..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/FixedOrderComparator.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.comparators;
-
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/** 
- * A Comparator which imposes a specific order on a specific set of Objects.
- * Objects are presented to the FixedOrderComparator in a specified order and
- * subsequent calls to {@link #compare(Object, Object) compare} yield that order.
- * For example:
- * <pre>
- * String[] planets = {"Mercury", "Venus", "Earth", "Mars"};
- * FixedOrderComparator distanceFromSun = new FixedOrderComparator(planets);
- * Arrays.sort(planets);                     // Sort to alphabetical order
- * Arrays.sort(planets, distanceFromSun);    // Back to original order
- * </pre>
- * <p>
- * Once <code>compare</code> has been called, the FixedOrderComparator is locked
- * and attempts to modify it yield an UnsupportedOperationException.
- * <p>
- * Instances of FixedOrderComparator are not synchronized.  The class is not
- * thread-safe at construction time, but it is thread-safe to perform
- * multiple comparisons  after all the setup operations are complete.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $
- *
- * @author David Leppik
- * @author Stephen Colebourne
- * @author Janek Bogucki
- */
-public class FixedOrderComparator implements Comparator {
-
-    /** 
-     * Behavior when comparing unknown Objects:
-     * unknown objects compare as before known Objects.
-     */
-    public static final int UNKNOWN_BEFORE = 0;
-
-    /** 
-     * Behavior when comparing unknown Objects:
-     * unknown objects compare as after known Objects.
-     */
-    public static final int UNKNOWN_AFTER = 1;
-
-    /** 
-     * Behavior when comparing unknown Objects:
-     * unknown objects cause a IllegalArgumentException to be thrown.
-     * This is the default behavior.
-     */
-    public static final int UNKNOWN_THROW_EXCEPTION = 2;
-
-    /** Internal map of object to position */
-    private final Map map = new HashMap();
-    /** Counter used in determining the position in the map */
-    private int counter = 0;
-    /** Is the comparator locked against further change */
-    private boolean isLocked = false;
-    /** The behaviour in the case of an unknown object */
-    private int unknownObjectBehavior = UNKNOWN_THROW_EXCEPTION;
-
-    // Constructors
-    //-----------------------------------------------------------------------
-    /** 
-     * Constructs an empty FixedOrderComparator.
-     */
-    public FixedOrderComparator() {
-        super();
-    }
-
-    /** 
-     * Constructs a FixedOrderComparator which uses the order of the given array
-     * to compare the objects.
-     * <p>
-     * The array is copied, so later changes will not affect the comparator.
-     * 
-     * @param items  the items that the comparator can compare in order
-     * @throws IllegalArgumentException if the array is null
-     */
-    public FixedOrderComparator(Object[] items) {
-        super();
-        if (items == null) {
-            throw new IllegalArgumentException("The list of items must not be null");
-        }
-        for (int i = 0; i < items.length; i++) {
-            add(items[i]);
-        }
-    }
-
-    /** 
-     * Constructs a FixedOrderComparator which uses the order of the given list
-     * to compare the objects.
-     * <p>
-     * The list is copied, so later changes will not affect the comparator.
-     * 
-     * @param items  the items that the comparator can compare in order
-     * @throws IllegalArgumentException if the list is null
-     */
-    public FixedOrderComparator(List items) {
-        super();
-        if (items == null) {
-            throw new IllegalArgumentException("The list of items must not be null");
-        }
-        for (Iterator it = items.iterator(); it.hasNext();) {
-            add(it.next());
-        }
-    }
-
-    // Bean methods / state querying methods
-    //-----------------------------------------------------------------------
-    /**
-     * Returns true if modifications cannot be made to the FixedOrderComparator.
-     * FixedOrderComparators cannot be modified once they have performed a comparison.
-     * 
-     * @return true if attempts to change the FixedOrderComparator yield an
-     *  UnsupportedOperationException, false if it can be changed.
-     */
-    public boolean isLocked() {
-        return isLocked;
-    }
-
-    /**
-     * Checks to see whether the comparator is now locked against further changes.
-     * 
-     * @throws UnsupportedOperationException if the comparator is locked
-     */
-    protected void checkLocked() {
-        if (isLocked()) {
-            throw new UnsupportedOperationException("Cannot modify a FixedOrderComparator after a comparison");
-        }
-    }
-
-    /** 
-     * Gets the behavior for comparing unknown objects.
-     * 
-     * @return the flag for unknown behaviour - UNKNOWN_AFTER,
-     * UNKNOWN_BEFORE or UNKNOWN_THROW_EXCEPTION
-     */
-    public int getUnknownObjectBehavior() {
-        return unknownObjectBehavior;
-    }
-
-    /** 
-     * Sets the behavior for comparing unknown objects.
-     * 
-     * @param unknownObjectBehavior  the flag for unknown behaviour -
-     * UNKNOWN_AFTER, UNKNOWN_BEFORE or UNKNOWN_THROW_EXCEPTION
-     * @throws UnsupportedOperationException if a comparison has been performed
-     * @throws IllegalArgumentException if the unknown flag is not valid
-     */
-    public void setUnknownObjectBehavior(int unknownObjectBehavior) {
-        checkLocked();
-        if (unknownObjectBehavior != UNKNOWN_AFTER 
-            && unknownObjectBehavior != UNKNOWN_BEFORE 
-            && unknownObjectBehavior != UNKNOWN_THROW_EXCEPTION) {
-            throw new IllegalArgumentException("Unrecognised value for unknown behaviour flag");    
-        }
-        this.unknownObjectBehavior = unknownObjectBehavior;
-    }
-
-    // Methods for adding items
-    //-----------------------------------------------------------------------
-    /** 
-     * Adds an item, which compares as after all items known to the Comparator.
-     * If the item is already known to the Comparator, its old position is
-     * replaced with the new position.
-     * 
-     * @param obj  the item to be added to the Comparator.
-     * @return true if obj has been added for the first time, false if
-     *  it was already known to the Comparator.
-     * @throws UnsupportedOperationException if a comparison has already been made
-     */
-    public boolean add(Object obj) {
-        checkLocked();
-        Object position = map.put(obj, new Integer(counter++));
-        return (position == null);
-    }
-
-    /**
-     * Adds a new item, which compares as equal to the given existing item.
-     * 
-     * @param existingObj  an item already in the Comparator's set of 
-     *  known objects
-     * @param newObj  an item to be added to the Comparator's set of
-     *  known objects
-     * @return true if newObj has been added for the first time, false if
-     *  it was already known to the Comparator.
-     * @throws IllegalArgumentException if existingObject is not in the 
-     *  Comparator's set of known objects.
-     * @throws UnsupportedOperationException if a comparison has already been made
-     */
-    public boolean addAsEqual(Object existingObj, Object newObj) {
-        checkLocked();
-        Integer position = (Integer) map.get(existingObj);
-        if (position == null) {
-            throw new IllegalArgumentException(existingObj + " not known to " + this);
-        }
-        Object result = map.put(newObj, position);
-        return (result == null);
-    }
-
-    // Comparator methods
-    //-----------------------------------------------------------------------
-    /** 
-     * Compares two objects according to the order of this Comparator.
-     * <p>
-     * It is important to note that this class will throw an IllegalArgumentException
-     * in the case of an unrecognised object. This is not specified in the 
-     * Comparator interface, but is the most appropriate exception.
-     * 
-     * @param obj1  the first object to compare
-     * @param obj2  the second object to compare
-     * @return negative if obj1 is less, positive if greater, zero if equal
-     * @throws IllegalArgumentException if obj1 or obj2 are not known 
-     *  to this Comparator and an alternative behavior has not been set
-     *  via {@link #setUnknownObjectBehavior(int)}.
-     */
-    public int compare(Object obj1, Object obj2) {
-        isLocked = true;
-        Integer position1 = (Integer) map.get(obj1);
-        Integer position2 = (Integer) map.get(obj2);
-        if (position1 == null || position2 == null) {
-            switch (unknownObjectBehavior) {
-                case UNKNOWN_BEFORE :
-                    if (position1 == null) {
-                        return (position2 == null) ? 0 : -1;
-                    } else {
-                        return 1;
-                    }
-                case UNKNOWN_AFTER :
-                    if (position1 == null) {
-                        return (position2 == null) ? 0 : 1;
-                    } else {
-                        return -1;
-                    }
-                case UNKNOWN_THROW_EXCEPTION :
-                    Object unknownObj = (position1 == null) ? obj1 : obj2;
-                    throw new IllegalArgumentException("Attempting to compare unknown object " + unknownObj);
-                default :
-                    throw new UnsupportedOperationException("Unknown unknownObjectBehavior: " + unknownObjectBehavior);
-            }
-        } else {
-            return position1.compareTo(position2);
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/NullComparator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/NullComparator.java
deleted file mode 100755
index f5eb49a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/NullComparator.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.comparators;
-
-import java.io.Serializable;
-import java.util.Comparator;
-
-/**
- * A Comparator that will compare nulls to be either lower or higher than
- * other objects.
- *
- * @since Commons Collections 2.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $ 
- *
- * @author Michael A. Smith
- */
-public class NullComparator implements Comparator, Serializable {
-
-    /** Serialization version. */
-    private static final long serialVersionUID = -5820772575483504339L;
-
-    /**
-     *  The comparator to use when comparing two non-<code>null</code> objects.
-     **/
-    private Comparator nonNullComparator;
-
-    /**
-     *  Specifies whether a <code>null</code> are compared as higher than
-     *  non-<code>null</code> objects.
-     **/
-    private boolean nullsAreHigh;
-
-    //-----------------------------------------------------------------------
-    /**
-     *  Construct an instance that sorts <code>null</code> higher than any
-     *  non-<code>null</code> object it is compared with. When comparing two
-     *  non-<code>null</code> objects, the {@link ComparableComparator} is
-     *  used.
-     **/
-    public NullComparator() {
-        this(ComparableComparator.getInstance(), true);
-    }
-
-    /**
-     *  Construct an instance that sorts <code>null</code> higher than any
-     *  non-<code>null</code> object it is compared with.  When comparing two
-     *  non-<code>null</code> objects, the specified {@link Comparator} is
-     *  used.
-     *
-     *  @param nonNullComparator the comparator to use when comparing two
-     *  non-<code>null</code> objects.  This argument cannot be
-     *  <code>null</code>
-     *
-     *  @exception NullPointerException if <code>nonNullComparator</code> is
-     *  <code>null</code>
-     **/
-    public NullComparator(Comparator nonNullComparator) {
-        this(nonNullComparator, true);
-    }
-
-    /**
-     *  Construct an instance that sorts <code>null</code> higher or lower than
-     *  any non-<code>null</code> object it is compared with.  When comparing
-     *  two non-<code>null</code> objects, the {@link ComparableComparator} is
-     *  used.
-     *
-     *  @param nullsAreHigh a <code>true</code> value indicates that
-     *  <code>null</code> should be compared as higher than a
-     *  non-<code>null</code> object.  A <code>false</code> value indicates
-     *  that <code>null</code> should be compared as lower than a
-     *  non-<code>null</code> object.
-     **/
-    public NullComparator(boolean nullsAreHigh) {
-        this(ComparableComparator.getInstance(), nullsAreHigh);
-    }
-    
-    /**
-     *  Construct an instance that sorts <code>null</code> higher or lower than
-     *  any non-<code>null</code> object it is compared with.  When comparing
-     *  two non-<code>null</code> objects, the specified {@link Comparator} is
-     *  used.
-     *
-     *  @param nonNullComparator the comparator to use when comparing two
-     *  non-<code>null</code> objects. This argument cannot be
-     *  <code>null</code>
-     *
-     *  @param nullsAreHigh a <code>true</code> value indicates that
-     *  <code>null</code> should be compared as higher than a
-     *  non-<code>null</code> object.  A <code>false</code> value indicates
-     *  that <code>null</code> should be compared as lower than a
-     *  non-<code>null</code> object.
-     *
-     *  @exception NullPointerException if <code>nonNullComparator</code> is
-     *  <code>null</code>
-     **/
-    public NullComparator(Comparator nonNullComparator, boolean nullsAreHigh) {
-        this.nonNullComparator = nonNullComparator;
-        this.nullsAreHigh = nullsAreHigh;
-        
-        if(nonNullComparator == null) {
-            throw new NullPointerException("null nonNullComparator");
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     *  Perform a comparison between two objects.  If both objects are
-     *  <code>null</code>, a <code>0</code> value is returned.  If one object
-     *  is <code>null</code> and the other is not, the result is determined on
-     *  whether the Comparator was constructed to have nulls as higher or lower
-     *  than other objects.  If neither object is <code>null</code>, an
-     *  underlying comparator specified in the constructor (or the default) is
-     *  used to compare the non-<code>null</code> objects.
-     *
-     *  @param o1  the first object to compare
-     *  @param o2  the object to compare it to.
-     *  @return <code>-1</code> if <code>o1</code> is "lower" than (less than,
-     *  before, etc.) <code>o2</code>; <code>1</code> if <code>o1</code> is
-     *  "higher" than (greater than, after, etc.) <code>o2</code>; or
-     *  <code>0</code> if <code>o1</code> and <code>o2</code> are equal.
-     **/
-    public int compare(Object o1, Object o2) {
-        if(o1 == o2) { return 0; }
-        if(o1 == null) { return (this.nullsAreHigh ? 1 : -1); }
-        if(o2 == null) { return (this.nullsAreHigh ? -1 : 1); }
-        return this.nonNullComparator.compare(o1, o2);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     *  Implement a hash code for this comparator that is consistent with
-     *  {@link #equals(Object)}.
-     *
-     *  @return a hash code for this comparator.
-     **/
-    public int hashCode() {
-        return (nullsAreHigh ? -1 : 1) * nonNullComparator.hashCode();
-    }
-
-    /**
-     *  Determines whether the specified object represents a comparator that is
-     *  equal to this comparator.
-     *
-     *  @param obj  the object to compare this comparator with.
-     *
-     *  @return <code>true</code> if the specified object is a NullComparator
-     *  with equivalent <code>null</code> comparison behavior
-     *  (i.e. <code>null</code> high or low) and with equivalent underlying
-     *  non-<code>null</code> object comparators.
-     **/
-    public boolean equals(Object obj) {
-        if(obj == null) { return false; }
-        if(obj == this) { return true; }
-        if(!obj.getClass().equals(this.getClass())) { return false; }
-
-        NullComparator other = (NullComparator)obj;
-	
-        return ((this.nullsAreHigh == other.nullsAreHigh) &&
-                (this.nonNullComparator.equals(other.nonNullComparator)));
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/ReverseComparator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/ReverseComparator.java
deleted file mode 100755
index c0b2396..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/ReverseComparator.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.comparators;
-
-import java.io.Serializable;
-import java.util.Comparator;
-
-/**
- * Reverses the order of another comparator by reversing the arguments
- * to its {@link #compare(Object, Object) compare} method.
- * 
- * @since Commons Collections 2.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $
- *
- * @author Henri Yandell
- * @author Michael A. Smith
- * 
- * @see java.util.Collections#reverseOrder()
- */
-public class ReverseComparator implements Comparator, Serializable {
-
-    /** Serialization version from Collections 2.0. */
-    private static final long serialVersionUID = 2858887242028539265L;
-
-    /** The comparator being decorated. */
-    private Comparator comparator;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Creates a comparator that compares objects based on the inverse of their
-     * natural ordering.  Using this Constructor will create a ReverseComparator
-     * that is functionally identical to the Comparator returned by
-     * java.util.Collections.<b>reverseOrder()</b>.
-     * 
-     * @see java.util.Collections#reverseOrder()
-     */
-    public ReverseComparator() {
-        this(null);
-    }
-
-    /**
-     * Creates a comparator that inverts the comparison
-     * of the given comparator.  If you pass in <code>null</code>,
-     * the ReverseComparator defaults to reversing the
-     * natural order, as per 
-     * {@link java.util.Collections#reverseOrder()}</b>.
-     * 
-     * @param comparator Comparator to reverse
-     */
-    public ReverseComparator(Comparator comparator) {
-        if(comparator != null) {
-            this.comparator = comparator;
-        } else {
-            this.comparator = ComparableComparator.getInstance();
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Compares two objects in reverse order.
-     * 
-     * @param obj1  the first object to compare
-     * @param obj2  the second object to compare
-     * @return negative if obj1 is less, positive if greater, zero if equal
-     */
-    public int compare(Object obj1, Object obj2) {
-        return comparator.compare(obj2, obj1);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Implement a hash code for this comparator that is consistent with
-     * {@link #equals(Object) equals}.
-     * 
-     * @return a suitable hash code
-     * @since Commons Collections 3.0
-     */
-    public int hashCode() {
-        return "ReverseComparator".hashCode() ^ comparator.hashCode();
-    }
-
-    /**
-     * Returns <code>true</code> iff <i>that</i> Object is 
-     * is a {@link Comparator} whose ordering is known to be 
-     * equivalent to mine.
-     * <p>
-     * This implementation returns <code>true</code>
-     * iff <code><i>object</i>.{@link Object#getClass() getClass()}</code>
-     * equals <code>this.getClass()</code>, and the underlying 
-     * comparators are equal.
-     * Subclasses may want to override this behavior to remain consistent
-     * with the {@link Comparator#equals(Object) equals} contract.
-     * 
-     * @param object  the object to compare to
-     * @return true if equal
-     * @since Commons Collections 3.0
-     */
-    public boolean equals(Object object) {
-        if(this == object) {
-            return true;
-        } else if(null == object) {
-            return false;
-        } else if(object.getClass().equals(this.getClass())) {
-            ReverseComparator thatrc = (ReverseComparator)object;
-            return comparator.equals(thatrc.comparator);
-        } else {
-            return false;
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/TransformingComparator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/TransformingComparator.java
deleted file mode 100755
index 1673489..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/TransformingComparator.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.comparators;
-
-import java.util.Comparator;
-
-import org.apache.commons.collections.Transformer;
-
-/**
- * Decorates another Comparator with transformation behavior. That is, the
- * return value from the transform operation will be passed to the decorated
- * {@link Comparator#compare(Object,Object) compare} method.
- * 
- * @since Commons Collections 2.0 (?)
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:34 $
- * 
- * @see org.apache.commons.collections.Transformer
- * @see org.apache.commons.collections.comparators.ComparableComparator
- */
-public class TransformingComparator implements Comparator {
-    
-    /** The decorated comparator. */
-    protected Comparator decorated;
-    /** The transformer being used. */    
-    protected Transformer transformer;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructs an instance with the given Transformer and a 
-     * {@link ComparableComparator ComparableComparator}.
-     * 
-     * @param transformer what will transform the arguments to <code>compare</code>
-     */
-    public TransformingComparator(Transformer transformer) {
-        this(transformer, new ComparableComparator());
-    }
-
-    /**
-     * Constructs an instance with the given Transformer and Comparator.
-     * 
-     * @param transformer  what will transform the arguments to <code>compare</code>
-     * @param decorated  the decorated Comparator
-     */
-    public TransformingComparator(Transformer transformer, Comparator decorated) {
-        this.decorated = decorated;
-        this.transformer = transformer;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns the result of comparing the values from the transform operation.
-     * 
-     * @param obj1  the first object to transform then compare
-     * @param obj2  the second object to transform then compare
-     * @return negative if obj1 is less, positive if greater, zero if equal
-     */
-    public int compare(Object obj1, Object obj2) {
-        Object value1 = this.transformer.transform(obj1);
-        Object value2 = this.transformer.transform(obj2);
-        return this.decorated.compare(value1, value2);
-    }
-
-}
-
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/package.html b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/package.html
deleted file mode 100755
index 9d5acf2..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/comparators/package.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!-- $Id: package.html,v 1.1 2009/05/27 22:16:34 mparker Exp $ -->
- <!--
-   Copyright 2002-2004 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-  -->
-<BODY>
-<p>
-This package contains implementations of the
-{@link java.util.Comparator Comparator} interface.
-<p>
-You may also consider using 
-{@link org.apache.commons.collections.ComparatorUtils ComparatorUtils},
-which is a single class that uses static methods to construct instances
-of the classes in this package.
-</BODY>
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/AllPredicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/AllPredicate.java
deleted file mode 100755
index afde4d8..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/AllPredicate.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- *  Copyright 2001-2004,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.commons.collections.functors;
-
-import java.io.Serializable;
-import java.util.Collection;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Predicate implementation that returns true if all the
- * predicates return true.
- * If the array of predicates is empty, then this predicate returns true.
- * <p>
- * NOTE: In versions prior to 3.2 an array size of zero or one
- * threw an exception.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- * @author Matt Benson
- */
-public final class AllPredicate implements Predicate, PredicateDecorator, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = -3094696765038308799L;
-    
-    /** The array of predicates to call */
-    private final Predicate[] iPredicates;
-    
-    /**
-     * Factory to create the predicate.
-     * <p>
-     * If the array is size zero, the predicate always returns true.
-     * If the array is size one, then that predicate is returned.
-     *
-     * @param predicates  the predicates to check, cloned, not null
-     * @return the <code>all</code> predicate
-     * @throws IllegalArgumentException if the predicates array is null
-     * @throws IllegalArgumentException if any predicate in the array is null
-     */
-    public static Predicate getInstance(Predicate[] predicates) {
-        FunctorUtils.validate(predicates);
-        if (predicates.length == 0) {
-            return TruePredicate.INSTANCE;
-        }
-        if (predicates.length == 1) {
-            return predicates[0];
-        }
-        predicates = FunctorUtils.copy(predicates);
-        return new AllPredicate(predicates);
-    }
-
-    /**
-     * Factory to create the predicate.
-     * <p>
-     * If the collection is size zero, the predicate always returns true.
-     * If the collection is size one, then that predicate is returned.
-     *
-     * @param predicates  the predicates to check, cloned, not null
-     * @return the <code>all</code> predicate
-     * @throws IllegalArgumentException if the predicates array is null
-     * @throws IllegalArgumentException if any predicate in the array is null
-     */
-    public static Predicate getInstance(Collection predicates) {
-        Predicate[] preds = FunctorUtils.validate(predicates);
-        if (preds.length == 0) {
-            return TruePredicate.INSTANCE;
-        }
-        if (preds.length == 1) {
-            return preds[0];
-        }
-        return new AllPredicate(preds);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param predicates  the predicates to check, not cloned, not null
-     */
-    public AllPredicate(Predicate[] predicates) {
-        super();
-        iPredicates = predicates;
-    }
-
-    /**
-     * Evaluates the predicate returning true if all predicates return true.
-     * 
-     * @param object  the input object
-     * @return true if all decorated predicates return true
-     */
-    public boolean evaluate(Object object) {
-        for (int i = 0; i < iPredicates.length; i++) {
-            if (iPredicates[i].evaluate(object) == false) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Gets the predicates, do not modify the array.
-     * 
-     * @return the predicates
-     * @since Commons Collections 3.1
-     */
-    public Predicate[] getPredicates() {
-        return iPredicates;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/AndPredicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/AndPredicate.java
deleted file mode 100755
index 28fb93e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/AndPredicate.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Predicate implementation that returns true if both the predicates return true.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public final class AndPredicate implements Predicate, PredicateDecorator, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 4189014213763186912L;
-    
-    /** The array of predicates to call */
-    private final Predicate iPredicate1;
-    /** The array of predicates to call */
-    private final Predicate iPredicate2;
-    
-    /**
-     * Factory to create the predicate.
-     * 
-     * @param predicate1  the first predicate to check, not null
-     * @param predicate2  the second predicate to check, not null
-     * @return the <code>and</code> predicate
-     * @throws IllegalArgumentException if either predicate is null
-     */
-    public static Predicate getInstance(Predicate predicate1, Predicate predicate2) {
-        if (predicate1 == null || predicate2 == null) {
-            throw new IllegalArgumentException("Predicate must not be null");
-        }
-        return new AndPredicate(predicate1, predicate2);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param predicate1  the first predicate to check, not null
-     * @param predicate2  the second predicate to check, not null
-     */
-    public AndPredicate(Predicate predicate1, Predicate predicate2) {
-        super();
-        iPredicate1 = predicate1;
-        iPredicate2 = predicate2;
-    }
-
-    /**
-     * Evaluates the predicate returning true if both predicates return true.
-     * 
-     * @param object  the input object
-     * @return true if both decorated predicates return true
-     */
-    public boolean evaluate(Object object) {
-       return (iPredicate1.evaluate(object) && iPredicate2.evaluate(object));
-    }
-
-    /**
-     * Gets the two predicates being decorated as an array.
-     * 
-     * @return the predicates
-     * @since Commons Collections 3.1
-     */
-    public Predicate[] getPredicates() {
-        return new Predicate[] {iPredicate1, iPredicate2};
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/AnyPredicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/AnyPredicate.java
deleted file mode 100755
index b29b741..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/AnyPredicate.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- *  Copyright 2001-2004,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.commons.collections.functors;
-
-import java.io.Serializable;
-import java.util.Collection;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Predicate implementation that returns true if any of the
- * predicates return true.
- * If the array of predicates is empty, then this predicate returns false.
- * <p>
- * NOTE: In versions prior to 3.2 an array size of zero or one
- * threw an exception.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- * @author Matt Benson
- */
-public final class AnyPredicate implements Predicate, PredicateDecorator, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 7429999530934647542L;
-    
-    /** The array of predicates to call */
-    private final Predicate[] iPredicates;
-    
-    /**
-     * Factory to create the predicate.
-     * <p>
-     * If the array is size zero, the predicate always returns false.
-     * If the array is size one, then that predicate is returned.
-     *
-     * @param predicates  the predicates to check, cloned, not null
-     * @return the <code>any</code> predicate
-     * @throws IllegalArgumentException if the predicates array is null
-     * @throws IllegalArgumentException if any predicate in the array is null
-     */
-    public static Predicate getInstance(Predicate[] predicates) {
-        FunctorUtils.validate(predicates);
-        if (predicates.length == 0) {
-            return FalsePredicate.INSTANCE;
-        }
-        if (predicates.length == 1) {
-            return predicates[0];
-        }
-        return new AnyPredicate(FunctorUtils.copy(predicates));
-    }
-
-    /**
-     * Factory to create the predicate.
-     * <p>
-     * If the collection is size zero, the predicate always returns false.
-     * If the collection is size one, then that predicate is returned.
-     *
-     * @param predicates  the predicates to check, cloned, not null
-     * @return the <code>all</code> predicate
-     * @throws IllegalArgumentException if the predicates array is null
-     * @throws IllegalArgumentException if any predicate in the array is null
-     */
-    public static Predicate getInstance(Collection predicates) {
-        Predicate[] preds = FunctorUtils.validate(predicates);
-        if (preds.length == 0) {
-            return FalsePredicate.INSTANCE;
-        }
-        if (preds.length == 1) {
-            return preds[0];
-        }
-        return new AnyPredicate(preds);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param predicates  the predicates to check, not cloned, not null
-     */
-    public AnyPredicate(Predicate[] predicates) {
-        super();
-        iPredicates = predicates;
-    }
-
-    /**
-     * Evaluates the predicate returning true if any predicate returns true.
-     * 
-     * @param object  the input object
-     * @return true if any decorated predicate return true
-     */
-    public boolean evaluate(Object object) {
-        for (int i = 0; i < iPredicates.length; i++) {
-            if (iPredicates[i].evaluate(object)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Gets the predicates, do not modify the array.
-     * 
-     * @return the predicates
-     * @since Commons Collections 3.1
-     */
-    public Predicate[] getPredicates() {
-        return iPredicates;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ChainedClosure.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ChainedClosure.java
deleted file mode 100755
index 55e9b4e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ChainedClosure.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.apache.commons.collections.Closure;
-
-/**
- * Closure implementation that chains the specified closures together.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- *
- * @author Stephen Colebourne
- */
-public class ChainedClosure implements Closure, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = -3520677225766901240L;
-
-    /** The closures to call in turn */
-    private final Closure[] iClosures;
-
-    /**
-     * Factory method that performs validation and copies the parameter array.
-     * 
-     * @param closures  the closures to chain, copied, no nulls
-     * @return the <code>chained</code> closure
-     * @throws IllegalArgumentException if the closures array is null
-     * @throws IllegalArgumentException if any closure in the array is null
-     */
-    public static Closure getInstance(Closure[] closures) {
-        FunctorUtils.validate(closures);
-        if (closures.length == 0) {
-            return NOPClosure.INSTANCE;
-        }
-        closures = FunctorUtils.copy(closures);
-        return new ChainedClosure(closures);
-    }
-    
-    /**
-     * Create a new Closure that calls each closure in turn, passing the 
-     * result into the next closure. The ordering is that of the iterator()
-     * method on the collection.
-     * 
-     * @param closures  a collection of closures to chain
-     * @return the <code>chained</code> closure
-     * @throws IllegalArgumentException if the closures collection is null
-     * @throws IllegalArgumentException if any closure in the collection is null
-     */
-    public static Closure getInstance(Collection closures) {
-        if (closures == null) {
-            throw new IllegalArgumentException("Closure collection must not be null");
-        }
-        if (closures.size() == 0) {
-            return NOPClosure.INSTANCE;
-        }
-        // convert to array like this to guarantee iterator() ordering
-        Closure[] cmds = new Closure[closures.size()];
-        int i = 0;
-        for (Iterator it = closures.iterator(); it.hasNext();) {
-            cmds[i++] = (Closure) it.next();
-        }
-        FunctorUtils.validate(cmds);
-        return new ChainedClosure(cmds);
-    }
-
-    /**
-     * Factory method that performs validation.
-     * 
-     * @param closure1  the first closure, not null
-     * @param closure2  the second closure, not null
-     * @return the <code>chained</code> closure
-     * @throws IllegalArgumentException if either closure is null
-     */
-    public static Closure getInstance(Closure closure1, Closure closure2) {
-        if (closure1 == null || closure2 == null) {
-            throw new IllegalArgumentException("Closures must not be null");
-        }
-        Closure[] closures = new Closure[] { closure1, closure2 };
-        return new ChainedClosure(closures);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param closures  the closures to chain, not copied, no nulls
-     */
-    public ChainedClosure(Closure[] closures) {
-        super();
-        iClosures = closures;
-    }
-
-    /**
-     * Execute a list of closures.
-     * 
-     * @param input  the input object passed to each closure
-     */
-    public void execute(Object input) {
-        for (int i = 0; i < iClosures.length; i++) {
-            iClosures[i].execute(input);
-        }
-    }
-
-    /**
-     * Gets the closures, do not modify the array.
-     * @return the closures
-     * @since Commons Collections 3.1
-     */
-    public Closure[] getClosures() {
-        return iClosures;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ChainedTransformer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ChainedTransformer.java
deleted file mode 100755
index 4a80903..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ChainedTransformer.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.apache.commons.collections.Transformer;
-
-/**
- * Transformer implementation that chains the specified transformers together.
- * <p>
- * The input object is passed to the first transformer. The transformed result
- * is passed to the second transformer and so on.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public class ChainedTransformer implements Transformer, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 3514945074733160196L;
-
-    /** The transformers to call in turn */
-    private final Transformer[] iTransformers;
-
-    /**
-     * Factory method that performs validation and copies the parameter array.
-     * 
-     * @param transformers  the transformers to chain, copied, no nulls
-     * @return the <code>chained</code> transformer
-     * @throws IllegalArgumentException if the transformers array is null
-     * @throws IllegalArgumentException if any transformer in the array is null
-     */
-    public static Transformer getInstance(Transformer[] transformers) {
-        FunctorUtils.validate(transformers);
-        if (transformers.length == 0) {
-            return NOPTransformer.INSTANCE;
-        }
-        transformers = FunctorUtils.copy(transformers);
-        return new ChainedTransformer(transformers);
-    }
-    
-    /**
-     * Create a new Transformer that calls each transformer in turn, passing the 
-     * result into the next transformer. The ordering is that of the iterator()
-     * method on the collection.
-     * 
-     * @param transformers  a collection of transformers to chain
-     * @return the <code>chained</code> transformer
-     * @throws IllegalArgumentException if the transformers collection is null
-     * @throws IllegalArgumentException if any transformer in the collection is null
-     */
-    public static Transformer getInstance(Collection transformers) {
-        if (transformers == null) {
-            throw new IllegalArgumentException("Transformer collection must not be null");
-        }
-        if (transformers.size() == 0) {
-            return NOPTransformer.INSTANCE;
-        }
-        // convert to array like this to guarantee iterator() ordering
-        Transformer[] cmds = new Transformer[transformers.size()];
-        int i = 0;
-        for (Iterator it = transformers.iterator(); it.hasNext();) {
-            cmds[i++] = (Transformer) it.next();
-        }
-        FunctorUtils.validate(cmds);
-        return new ChainedTransformer(cmds);
-    }
-
-    /**
-     * Factory method that performs validation.
-     * 
-     * @param transformer1  the first transformer, not null
-     * @param transformer2  the second transformer, not null
-     * @return the <code>chained</code> transformer
-     * @throws IllegalArgumentException if either transformer is null
-     */
-    public static Transformer getInstance(Transformer transformer1, Transformer transformer2) {
-        if (transformer1 == null || transformer2 == null) {
-            throw new IllegalArgumentException("Transformers must not be null");
-        }
-        Transformer[] transformers = new Transformer[] { transformer1, transformer2 };
-        return new ChainedTransformer(transformers);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param transformers  the transformers to chain, not copied, no nulls
-     */
-    public ChainedTransformer(Transformer[] transformers) {
-        super();
-        iTransformers = transformers;
-    }
-
-    /**
-     * Transforms the input to result via each decorated transformer
-     * 
-     * @param object  the input object passed to the first transformer
-     * @return the transformed result
-     */
-    public Object transform(Object object) {
-        for (int i = 0; i < iTransformers.length; i++) {
-            object = iTransformers[i].transform(object);
-        }
-        return object;
-    }
-
-    /**
-     * Gets the transformers, do not modify the array.
-     * @return the transformers
-     * @since Commons Collections 3.1
-     */
-    public Transformer[] getTransformers() {
-        return iTransformers;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/CloneTransformer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/CloneTransformer.java
deleted file mode 100755
index 98ff186..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/CloneTransformer.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Transformer;
-
-/**
- * Transformer implementation that returns a clone of the input object.
- * <p>
- * Clone is performed using <code>PrototypeFactory.getInstance(input).create()</code>.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public class CloneTransformer implements Transformer, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = -8188742709499652567L;
-
-    /** Singleton predicate instance */
-    public static final Transformer INSTANCE = new CloneTransformer();
-
-    /**
-     * Factory returning the singleton instance.
-     * 
-     * @return the singleton instance
-     * @since Commons Collections 3.1
-     */
-    public static Transformer getInstance() {
-        return INSTANCE;
-    }
-
-    /**
-     * Constructor
-     */
-    private CloneTransformer() {
-        super();
-    }
-
-    /**
-     * Transforms the input to result by cloning it.
-     * 
-     * @param input  the input object to transform
-     * @return the transformed result
-     */
-    public Object transform(Object input) {
-        if (input == null) {
-            return null;
-        }
-        return PrototypeFactory.getInstance(input).create();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ClosureTransformer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ClosureTransformer.java
deleted file mode 100755
index 7f0b1a6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ClosureTransformer.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Closure;
-import org.apache.commons.collections.Transformer;
-
-/**
- * Transformer implementation that calls a Closure using the input object
- * and then returns the input.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public class ClosureTransformer implements Transformer, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 478466901448617286L;
-
-    /** The closure to wrap */
-    private final Closure iClosure;
-
-    /**
-     * Factory method that performs validation.
-     * 
-     * @param closure  the closure to call, not null
-     * @return the <code>closure</code> transformer
-     * @throws IllegalArgumentException if the closure is null
-     */
-    public static Transformer getInstance(Closure closure) {
-        if (closure == null) {
-            throw new IllegalArgumentException("Closure must not be null");
-        }
-        return new ClosureTransformer(closure);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param closure  the closure to call, not null
-     */
-    public ClosureTransformer(Closure closure) {
-        super();
-        iClosure = closure;
-    }
-
-    /**
-     * Transforms the input to result by executing a closure.
-     * 
-     * @param input  the input object to transform
-     * @return the transformed result
-     */
-    public Object transform(Object input) {
-        iClosure.execute(input);
-        return input;
-    }
-
-    /**
-     * Gets the closure.
-     * 
-     * @return the closure
-     * @since Commons Collections 3.1
-     */
-    public Closure getClosure() {
-        return iClosure;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ConstantFactory.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ConstantFactory.java
deleted file mode 100755
index 8cb7adc..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ConstantFactory.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Factory;
-
-/**
- * Factory implementation that returns the same constant each time.
- * <p>
- * No check is made that the object is immutable. In general, only immutable
- * objects should use the constant factory. Mutable objects should
- * use the prototype factory.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public class ConstantFactory implements Factory, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = -3520677225766901240L;
-    
-    /** Returns null each time */
-    public static final Factory NULL_INSTANCE = new ConstantFactory(null);
-
-    /** The closures to call in turn */
-    private final Object iConstant;
-
-    /**
-     * Factory method that performs validation.
-     *
-     * @param constantToReturn  the constant object to return each time in the factory
-     * @return the <code>constant</code> factory.
-     */
-    public static Factory getInstance(Object constantToReturn) {
-        if (constantToReturn == null) {
-            return NULL_INSTANCE;
-        }
-        return new ConstantFactory(constantToReturn);
-    }
-    
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param constantToReturn  the constant to return each time
-     */
-    public ConstantFactory(Object constantToReturn) {
-        super();
-        iConstant = constantToReturn;
-    }
-
-    /**
-     * Always return constant.
-     * 
-     * @return the stored constant value
-     */
-    public Object create() {
-        return iConstant;
-    }
-
-    /**
-     * Gets the constant.
-     * 
-     * @return the constant
-     * @since Commons Collections 3.1
-     */
-    public Object getConstant() {
-        return iConstant;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ConstantTransformer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ConstantTransformer.java
deleted file mode 100755
index ba8bd90..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ConstantTransformer.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Transformer;
-
-/**
- * Transformer implementation that returns the same constant each time.
- * <p>
- * No check is made that the object is immutable. In general, only immutable
- * objects should use the constant factory. Mutable objects should
- * use the prototype factory.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public class ConstantTransformer implements Transformer, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 6374440726369055124L;
-    
-    /** Returns null each time */
-    public static final Transformer NULL_INSTANCE = new ConstantTransformer(null);
-
-    /** The closures to call in turn */
-    private final Object iConstant;
-
-    /**
-     * Transformer method that performs validation.
-     *
-     * @param constantToReturn  the constant object to return each time in the factory
-     * @return the <code>constant</code> factory.
-     */
-    public static Transformer getInstance(Object constantToReturn) {
-        if (constantToReturn == null) {
-            return NULL_INSTANCE;
-        }
-        return new ConstantTransformer(constantToReturn);
-    }
-    
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param constantToReturn  the constant to return each time
-     */
-    public ConstantTransformer(Object constantToReturn) {
-        super();
-        iConstant = constantToReturn;
-    }
-
-    /**
-     * Transforms the input by ignoring it and returning the stored constant instead.
-     * 
-     * @param input  the input object which is ignored
-     * @return the stored constant
-     */
-    public Object transform(Object input) {
-        return iConstant;
-    }
-
-    /**
-     * Gets the constant.
-     * 
-     * @return the constant
-     * @since Commons Collections 3.1
-     */
-    public Object getConstant() {
-        return iConstant;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/EqualPredicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/EqualPredicate.java
deleted file mode 100755
index 3b8cfae..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/EqualPredicate.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Predicate implementation that returns true if the input is the same object
- * as the one stored in this predicate by equals.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public final class EqualPredicate implements Predicate, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 5633766978029907089L;
-
-    /** The value to compare to */
-    private final Object iValue;
-    
-    /**
-     * Factory to create the identity predicate.
-     * 
-     * @param object  the object to compare to
-     * @return the predicate
-     * @throws IllegalArgumentException if the predicate is null
-     */
-    public static Predicate getInstance(Object object) {
-        if (object == null) {
-            return NullPredicate.INSTANCE;
-        }
-        return new EqualPredicate(object);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param object  the object to compare to
-     */
-    public EqualPredicate(Object object) {
-        super();
-        iValue = object;
-    }
-
-    /**
-     * Evaluates the predicate returning true if the input equals the stored value.
-     * 
-     * @param object  the input object
-     * @return true if input object equals stored value
-     */
-    public boolean evaluate(Object object) {
-        return (iValue.equals(object));
-    }
-
-    /**
-     * Gets the value.
-     * 
-     * @return the value
-     * @since Commons Collections 3.1
-     */
-    public Object getValue() {
-        return iValue;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ExceptionClosure.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ExceptionClosure.java
deleted file mode 100755
index 924a833..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ExceptionClosure.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Closure;
-import org.apache.commons.collections.FunctorException;
-
-/**
- * Closure implementation that always throws an exception.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- *
- * @author Stephen Colebourne
- */
-public final class ExceptionClosure implements Closure, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 7179106032121985545L;
-    
-
-    /** Singleton predicate instance */
-    public static final Closure INSTANCE = new ExceptionClosure();
-
-    /**
-     * Factory returning the singleton instance.
-     * 
-     * @return the singleton instance
-     * @since Commons Collections 3.1
-     */
-    public static Closure getInstance() {
-        return INSTANCE;
-    }
-
-    /**
-     * Restricted constructor.
-     */
-    private ExceptionClosure() {
-        super();
-    }
-
-    /**
-     * Always throw an exception.
-     * 
-     * @param input  the input object
-     * @throws FunctorException always
-     */
-    public void execute(Object input) {
-        throw new FunctorException("ExceptionClosure invoked");
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ExceptionFactory.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ExceptionFactory.java
deleted file mode 100755
index 9ebdf9b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ExceptionFactory.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Factory;
-import org.apache.commons.collections.FunctorException;
-
-/**
- * Factory implementation that always throws an exception.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public final class ExceptionFactory implements Factory, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 7179106032121985545L;
-    
-
-    /** Singleton predicate instance */
-    public static final Factory INSTANCE = new ExceptionFactory();
-
-    /**
-     * Factory returning the singleton instance.
-     * 
-     * @return the singleton instance
-     * @since Commons Collections 3.1
-     */
-    public static Factory getInstance() {
-        return INSTANCE;
-    }
-
-    /**
-     * Restricted constructor.
-     */
-    private ExceptionFactory() {
-        super();
-    }
-
-    /**
-     * Always throws an exception.
-     * 
-     * @return never
-     * @throws FunctorException always
-     */
-    public Object create() {
-        throw new FunctorException("ExceptionFactory invoked");
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ExceptionPredicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ExceptionPredicate.java
deleted file mode 100755
index 3743cba..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ExceptionPredicate.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.FunctorException;
-import org.apache.commons.collections.Predicate;
-
-/**
- * Predicate implementation that always throws an exception.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- *
- * @author Stephen Colebourne
- */
-public final class ExceptionPredicate implements Predicate, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 7179106032121985545L;
-    
-    /** Singleton predicate instance */
-    public static final Predicate INSTANCE = new ExceptionPredicate();
-
-    /**
-     * Factory returning the singleton instance.
-     * 
-     * @return the singleton instance
-     * @since Commons Collections 3.1
-     */
-    public static Predicate getInstance() {
-        return INSTANCE;
-    }
-
-    /**
-     * Restricted constructor.
-     */
-    private ExceptionPredicate() {
-        super();
-    }
-
-    /**
-     * Evaluates the predicate always throwing an exception.
-     * 
-     * @param object  the input object
-     * @return never
-     * @throws FunctorException always
-     */
-    public boolean evaluate(Object object) {
-        throw new FunctorException("ExceptionPredicate invoked");
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ExceptionTransformer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ExceptionTransformer.java
deleted file mode 100755
index a895d79..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ExceptionTransformer.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.FunctorException;
-import org.apache.commons.collections.Transformer;
-
-/**
- * Transformer implementation that always throws an exception.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public final class ExceptionTransformer implements Transformer, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 7179106032121985545L;
-    
-
-    /** Singleton predicate instance */
-    public static final Transformer INSTANCE = new ExceptionTransformer();
-
-    /**
-     * Factory returning the singleton instance.
-     * 
-     * @return the singleton instance
-     * @since Commons Collections 3.1
-     */
-    public static Transformer getInstance() {
-        return INSTANCE;
-    }
-
-    /**
-     * Restricted constructor.
-     */
-    private ExceptionTransformer() {
-        super();
-    }
-
-    /**
-     * Transforms the input to result by cloning it.
-     * 
-     * @param input  the input object to transform
-     * @return never
-     * @throws FunctorException always
-     */
-    public Object transform(Object input) {
-        throw new FunctorException("ExceptionTransformer invoked");
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/FactoryTransformer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/FactoryTransformer.java
deleted file mode 100755
index ce92f6e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/FactoryTransformer.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Factory;
-import org.apache.commons.collections.Transformer;
-
-/**
- * Transformer implementation that calls a Factory and returns the result.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public class FactoryTransformer implements Transformer, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = -6817674502475353160L;
-
-    /** The factory to wrap */
-    private final Factory iFactory;
-
-    /**
-     * Factory method that performs validation.
-     * 
-     * @param factory  the factory to call, not null
-     * @return the <code>factory</code> transformer
-     * @throws IllegalArgumentException if the factory is null
-     */
-    public static Transformer getInstance(Factory factory) {
-        if (factory == null) {
-            throw new IllegalArgumentException("Factory must not be null");
-        }
-        return new FactoryTransformer(factory);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param factory  the factory to call, not null
-     */
-    public FactoryTransformer(Factory factory) {
-        super();
-        iFactory = factory;
-    }
-
-    /**
-     * Transforms the input by ignoring the input and returning the result of
-     * calling the decorated factory.
-     * 
-     * @param input  the input object to transform
-     * @return the transformed result
-     */
-    public Object transform(Object input) {
-        return iFactory.create();
-    }
-
-    /**
-     * Gets the factory.
-     * 
-     * @return the factory
-     * @since Commons Collections 3.1
-     */
-    public Factory getFactory() {
-        return iFactory;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/FalsePredicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/FalsePredicate.java
deleted file mode 100755
index 83ec364..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/FalsePredicate.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Predicate implementation that always returns false.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public final class FalsePredicate implements Predicate, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 7533784454832764388L;
-    
-    /** Singleton predicate instance */
-    public static final Predicate INSTANCE = new FalsePredicate();
-
-    /**
-     * Factory returning the singleton instance.
-     * 
-     * @return the singleton instance
-     * @since Commons Collections 3.1
-     */
-    public static Predicate getInstance() {
-        return INSTANCE;
-    }
-
-    /**
-     * Restricted constructor.
-     */
-    private FalsePredicate() {
-        super();
-    }
-
-    /**
-     * Evaluates the predicate returning false always.
-     * 
-     * @param object  the input object
-     * @return false always
-     */
-    public boolean evaluate(Object object) {
-        return false;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ForClosure.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ForClosure.java
deleted file mode 100755
index 9e3c5df..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/ForClosure.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Closure;
-
-/**
- * Closure implementation that calls another closure n times, like a for loop.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public class ForClosure implements Closure, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = -1190120533393621674L;
-
-    /** The number of times to loop */
-    private final int iCount;
-    /** The closure to call */
-    private final Closure iClosure;
-
-    /**
-     * Factory method that performs validation.
-     * <p>
-     * A null closure or zero count returns the <code>NOPClosure</code>.
-     * A count of one returns the specified closure.
-     * 
-     * @param count  the number of times to execute the closure
-     * @param closure  the closure to execute, not null
-     * @return the <code>for</code> closure
-     */
-    public static Closure getInstance(int count, Closure closure) {
-        if (count <= 0 || closure == null) {
-            return NOPClosure.INSTANCE;
-        }
-        if (count == 1) {
-            return closure;
-        }
-        return new ForClosure(count, closure);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param count  the number of times to execute the closure
-     * @param closure  the closure to execute, not null
-     */
-    public ForClosure(int count, Closure closure) {
-        super();
-        iCount = count;
-        iClosure = closure;
-    }
-
-    /**
-     * Executes the closure <code>count</code> times.
-     * 
-     * @param input  the input object
-     */
-    public void execute(Object input) {
-        for (int i = 0; i < iCount; i++) {
-            iClosure.execute(input);
-        }
-    }
-
-    /**
-     * Gets the closure.
-     * 
-     * @return the closure
-     * @since Commons Collections 3.1
-     */
-    public Closure getClosure() {
-        return iClosure;
-    }
-
-    /**
-     * Gets the count.
-     * 
-     * @return the count
-     * @since Commons Collections 3.1
-     */
-    public int getCount() {
-        return iCount;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/FunctorUtils.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/FunctorUtils.java
deleted file mode 100755
index ffcdfa2..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/FunctorUtils.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- *  Copyright 2001-2004,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.commons.collections.functors;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.apache.commons.collections.Closure;
-import org.apache.commons.collections.Predicate;
-import org.apache.commons.collections.Transformer;
-
-/**
- * Internal utilities for functors.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- * @author Matt Benson
- */
-class FunctorUtils {
-    
-    /**
-     * Restricted constructor.
-     */
-    private FunctorUtils() {
-        super();
-    }
-    
-    /**
-     * Clone the predicates to ensure that the internal reference can't be messed with.
-     * 
-     * @param predicates  the predicates to copy
-     * @return the cloned predicates
-     */
-    static Predicate[] copy(Predicate[] predicates) {
-        if (predicates == null) {
-            return null;
-        }
-        return (Predicate[]) predicates.clone();
-    }
-    
-    /**
-     * Validate the predicates to ensure that all is well.
-     * 
-     * @param predicates  the predicates to validate
-     */
-    static void validate(Predicate[] predicates) {
-        if (predicates == null) {
-            throw new IllegalArgumentException("The predicate array must not be null");
-        }
-        for (int i = 0; i < predicates.length; i++) {
-            if (predicates[i] == null) {
-                throw new IllegalArgumentException("The predicate array must not contain a null predicate, index " + i + " was null");
-            }
-        }
-    }
-    
-    /**
-     * Validate the predicates to ensure that all is well.
-     * 
-     * @param predicates  the predicates to validate
-     * @return predicate array
-     */
-    static Predicate[] validate(Collection predicates) {
-        if (predicates == null) {
-            throw new IllegalArgumentException("The predicate collection must not be null");
-        }
-        // convert to array like this to guarantee iterator() ordering
-        Predicate[] preds = new Predicate[predicates.size()];
-        int i = 0;
-        for (Iterator it = predicates.iterator(); it.hasNext();) {
-            preds[i] = (Predicate) it.next();
-            if (preds[i] == null) {
-                throw new IllegalArgumentException("The predicate collection must not contain a null predicate, index " + i + " was null");
-            }
-            i++;
-        }
-        return preds;
-    }
-    
-    /**
-     * Clone the closures to ensure that the internal reference can't be messed with.
-     * 
-     * @param closures  the closures to copy
-     * @return the cloned closures
-     */
-    static Closure[] copy(Closure[] closures) {
-        if (closures == null) {
-            return null;
-        }
-        return (Closure[]) closures.clone();
-    }
-    
-    /**
-     * Validate the closures to ensure that all is well.
-     * 
-     * @param closures  the closures to validate
-     */
-    static void validate(Closure[] closures) {
-        if (closures == null) {
-            throw new IllegalArgumentException("The closure array must not be null");
-        }
-        for (int i = 0; i < closures.length; i++) {
-            if (closures[i] == null) {
-                throw new IllegalArgumentException("The closure array must not contain a null closure, index " + i + " was null");
-            }
-        }
-    }
-
-    /**
-     * Copy method
-     * 
-     * @param transformers  the transformers to copy
-     * @return a clone of the transformers
-     */
-    static Transformer[] copy(Transformer[] transformers) {
-        if (transformers == null) {
-            return null;
-        }
-        return (Transformer[]) transformers.clone();
-    }
-    
-    /**
-     * Validate method
-     * 
-     * @param transformers  the transformers to validate
-     */
-    static void validate(Transformer[] transformers) {
-        if (transformers == null) {
-            throw new IllegalArgumentException("The transformer array must not be null");
-        }
-        for (int i = 0; i < transformers.length; i++) {
-            if (transformers[i] == null) {
-                throw new IllegalArgumentException(
-                    "The transformer array must not contain a null transformer, index " + i + " was null");
-            }
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/IdentityPredicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/IdentityPredicate.java
deleted file mode 100755
index 3e485b3..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/IdentityPredicate.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Predicate implementation that returns true if the input is the same object
- * as the one stored in this predicate.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public final class IdentityPredicate implements Predicate, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = -89901658494523293L;
-
-    
-    /** The value to compare to */
-    private final Object iValue;
-    
-    /**
-     * Factory to create the identity predicate.
-     * 
-     * @param object  the object to compare to
-     * @return the predicate
-     * @throws IllegalArgumentException if the predicate is null
-     */
-    public static Predicate getInstance(Object object) {
-        if (object == null) {
-            return NullPredicate.INSTANCE;
-        }
-        return new IdentityPredicate(object);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param object  the object to compare to
-     */
-    public IdentityPredicate(Object object) {
-        super();
-        iValue = object;
-    }
-
-    /**
-     * Evaluates the predicate returning true if the input object is identical to
-     * the stored object.
-     * 
-     * @param object  the input object
-     * @return true if input is the same object as the stored value
-     */
-    public boolean evaluate(Object object) {
-        return (iValue == object);
-    }
-
-    /**
-     * Gets the value.
-     * 
-     * @return the value
-     * @since Commons Collections 3.1
-     */
-    public Object getValue() {
-        return iValue;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/IfClosure.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/IfClosure.java
deleted file mode 100755
index 5ae8963..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/IfClosure.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- *  Copyright 2001-2004,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.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Closure;
-import org.apache.commons.collections.Predicate;
-
-/**
- * Closure implementation acts as an if statement calling one or other closure
- * based on a predicate.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- * @author Matt Benson
- */
-public class IfClosure implements Closure, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 3518477308466486130L;
-
-    /** The test */
-    private final Predicate iPredicate;
-    /** The closure to use if true */
-    private final Closure iTrueClosure;
-    /** The closure to use if false */
-    private final Closure iFalseClosure;
-
-    /**
-     * Factory method that performs validation.
-     * <p>
-     * This factory creates a closure that performs no action when
-     * the predicate is false.
-     * 
-     * @param predicate  predicate to switch on
-     * @param trueClosure  closure used if true
-     * @return the <code>if</code> closure
-     * @throws IllegalArgumentException if either argument is null
-     * @since Commons Collections 3.2
-     */
-    public static Closure getInstance(Predicate predicate, Closure trueClosure) {
-        return getInstance(predicate, trueClosure, NOPClosure.INSTANCE);
-    }
-
-    /**
-     * Factory method that performs validation.
-     * 
-     * @param predicate  predicate to switch on
-     * @param trueClosure  closure used if true
-     * @param falseClosure  closure used if false
-     * @return the <code>if</code> closure
-     * @throws IllegalArgumentException if any argument is null
-     */
-    public static Closure getInstance(Predicate predicate, Closure trueClosure, Closure falseClosure) {
-        if (predicate == null) {
-            throw new IllegalArgumentException("Predicate must not be null");
-        }
-        if (trueClosure == null || falseClosure == null) {
-            throw new IllegalArgumentException("Closures must not be null");
-        }
-        return new IfClosure(predicate, trueClosure, falseClosure);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * <p>
-     * This constructor creates a closure that performs no action when
-     * the predicate is false.
-     * 
-     * @param predicate  predicate to switch on, not null
-     * @param trueClosure  closure used if true, not null
-     * @since Commons Collections 3.2
-     */
-    public IfClosure(Predicate predicate, Closure trueClosure) {
-        this(predicate, trueClosure, NOPClosure.INSTANCE);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param predicate  predicate to switch on, not null
-     * @param trueClosure  closure used if true, not null
-     * @param falseClosure  closure used if false, not null
-     */
-    public IfClosure(Predicate predicate, Closure trueClosure, Closure falseClosure) {
-        super();
-        iPredicate = predicate;
-        iTrueClosure = trueClosure;
-        iFalseClosure = falseClosure;
-    }
-
-    /**
-     * Executes the true or false closure accoring to the result of the predicate.
-     * 
-     * @param input  the input object
-     */
-    public void execute(Object input) {
-        if (iPredicate.evaluate(input) == true) {
-            iTrueClosure.execute(input);
-        } else {
-            iFalseClosure.execute(input);
-        }
-    }
-
-    /**
-     * Gets the predicate.
-     * 
-     * @return the predicate
-     * @since Commons Collections 3.1
-     */
-    public Predicate getPredicate() {
-        return iPredicate;
-    }
-
-    /**
-     * Gets the closure called when true.
-     * 
-     * @return the closure
-     * @since Commons Collections 3.1
-     */
-    public Closure getTrueClosure() {
-        return iTrueClosure;
-    }
-
-    /**
-     * Gets the closure called when false.
-     * 
-     * @return the closure
-     * @since Commons Collections 3.1
-     */
-    public Closure getFalseClosure() {
-        return iFalseClosure;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/InstanceofPredicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/InstanceofPredicate.java
deleted file mode 100755
index 427cdb5..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/InstanceofPredicate.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Predicate implementation that returns true if the input is an instanceof
- * the type stored in this predicate.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public final class InstanceofPredicate implements Predicate, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = -6682656911025165584L;
-
-    /** The type to compare to */
-    private final Class iType;
-    
-    /**
-     * Factory to create the identity predicate.
-     * 
-     * @param type  the type to check for, may not be null
-     * @return the predicate
-     * @throws IllegalArgumentException if the class is null
-     */
-    public static Predicate getInstance(Class type) {
-        if (type == null) {
-            throw new IllegalArgumentException("The type to check instanceof must not be null");
-        }
-        return new InstanceofPredicate(type);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param type  the type to check for
-     */
-    public InstanceofPredicate(Class type) {
-        super();
-        iType = type;
-    }
-
-    /**
-     * Evaluates the predicate returning true if the input object is of the correct type.
-     * 
-     * @param object  the input object
-     * @return true if input is of stored type
-     */
-    public boolean evaluate(Object object) {
-        return (iType.isInstance(object));
-    }
-
-    /**
-     * Gets the type to compare to.
-     * 
-     * @return the type
-     * @since Commons Collections 3.1
-     */
-    public Class getType() {
-        return iType;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/InstantiateFactory.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/InstantiateFactory.java
deleted file mode 100755
index f77d277..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/InstantiateFactory.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-
-import org.apache.commons.collections.Factory;
-import org.apache.commons.collections.FunctorException;
-
-/**
- * Factory implementation that creates a new object instance by reflection.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public class InstantiateFactory implements Factory, Serializable {
-
-    /** The serial version */
-    private static final long serialVersionUID = -7732226881069447957L;
-
-    /** The class to create */
-    private final Class iClassToInstantiate;
-    /** The constructor parameter types */
-    private final Class[] iParamTypes;
-    /** The constructor arguments */
-    private final Object[] iArgs;
-    /** The constructor */
-    private transient Constructor iConstructor = null;
-
-    /**
-     * Factory method that performs validation.
-     * 
-     * @param classToInstantiate  the class to instantiate, not null
-     * @param paramTypes  the constructor parameter types
-     * @param args  the constructor arguments
-     * @return a new instantiate factory
-     */
-    public static Factory getInstance(Class classToInstantiate, Class[] paramTypes, Object[] args) {
-        if (classToInstantiate == null) {
-            throw new IllegalArgumentException("Class to instantiate must not be null");
-        }
-        if (((paramTypes == null) && (args != null))
-            || ((paramTypes != null) && (args == null))
-            || ((paramTypes != null) && (args != null) && (paramTypes.length != args.length))) {
-            throw new IllegalArgumentException("Parameter types must match the arguments");
-        }
-
-        if (paramTypes == null || paramTypes.length == 0) {
-            return new InstantiateFactory(classToInstantiate);
-        } else {
-            paramTypes = (Class[]) paramTypes.clone();
-            args = (Object[]) args.clone();
-            return new InstantiateFactory(classToInstantiate, paramTypes, args);
-        }
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param classToInstantiate  the class to instantiate
-     */
-    public InstantiateFactory(Class classToInstantiate) {
-        super();
-        iClassToInstantiate = classToInstantiate;
-        iParamTypes = null;
-        iArgs = null;
-        findConstructor();
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param classToInstantiate  the class to instantiate
-     * @param paramTypes  the constructor parameter types, not cloned
-     * @param args  the constructor arguments, not cloned
-     */
-    public InstantiateFactory(Class classToInstantiate, Class[] paramTypes, Object[] args) {
-        super();
-        iClassToInstantiate = classToInstantiate;
-        iParamTypes = paramTypes;
-        iArgs = args;
-        findConstructor();
-    }
-
-    /**
-     * Find the Constructor for the class specified.
-     */
-    private void findConstructor() {
-        try {
-            iConstructor = iClassToInstantiate.getConstructor(iParamTypes);
-
-        } catch (NoSuchMethodException ex) {
-            throw new IllegalArgumentException("InstantiateFactory: The constructor must exist and be public ");
-        }
-    }
-
-    /**
-     * Creates an object using the stored constructor.
-     * 
-     * @return the new object
-     */
-    public Object create() {
-        // needed for post-serialization
-        if (iConstructor == null) {
-            findConstructor();
-        }
-
-        try {
-            return iConstructor.newInstance(iArgs);
-
-        } catch (InstantiationException ex) {
-            throw new FunctorException("InstantiateFactory: InstantiationException", ex);
-        } catch (IllegalAccessException ex) {
-            throw new FunctorException("InstantiateFactory: Constructor must be public", ex);
-        } catch (InvocationTargetException ex) {
-            throw new FunctorException("InstantiateFactory: Constructor threw an exception", ex);
-        }
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/InstantiateTransformer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/InstantiateTransformer.java
deleted file mode 100755
index afa02b9..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/InstantiateTransformer.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-
-import org.apache.commons.collections.FunctorException;
-import org.apache.commons.collections.Transformer;
-
-/**
- * Transformer implementation that creates a new object instance by reflection.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- *
- * @author Stephen Colebourne
- */
-public class InstantiateTransformer implements Transformer, Serializable {
-
-    /** The serial version */
-    private static final long serialVersionUID = 3786388740793356347L;
-    
-    /** Singleton instance that uses the no arg constructor */
-    public static final Transformer NO_ARG_INSTANCE = new InstantiateTransformer();
-
-    /** The constructor parameter types */
-    private final Class[] iParamTypes;
-    /** The constructor arguments */
-    private final Object[] iArgs;
-
-    /**
-     * Transformer method that performs validation.
-     * 
-     * @param paramTypes  the constructor parameter types
-     * @param args  the constructor arguments
-     * @return an instantiate transformer
-     */
-    public static Transformer getInstance(Class[] paramTypes, Object[] args) {
-        if (((paramTypes == null) && (args != null))
-            || ((paramTypes != null) && (args == null))
-            || ((paramTypes != null) && (args != null) && (paramTypes.length != args.length))) {
-            throw new IllegalArgumentException("Parameter types must match the arguments");
-        }
-
-        if (paramTypes == null || paramTypes.length == 0) {
-            return NO_ARG_INSTANCE;
-        } else {
-            paramTypes = (Class[]) paramTypes.clone();
-            args = (Object[]) args.clone();
-        }
-        return new InstantiateTransformer(paramTypes, args);
-    }
-
-    /**
-     * Constructor for no arg instance.
-     */
-    private InstantiateTransformer() {
-        super();
-        iParamTypes = null;
-        iArgs = null;
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param paramTypes  the constructor parameter types, not cloned
-     * @param args  the constructor arguments, not cloned
-     */
-    public InstantiateTransformer(Class[] paramTypes, Object[] args) {
-        super();
-        iParamTypes = paramTypes;
-        iArgs = args;
-    }
-
-    /**
-     * Transforms the input Class object to a result by instantiation.
-     * 
-     * @param input  the input object to transform
-     * @return the transformed result
-     */
-    public Object transform(Object input) {
-        try {
-            if (input instanceof Class == false) {
-                throw new FunctorException(
-                    "InstantiateTransformer: Input object was not an instanceof Class, it was a "
-                        + (input == null ? "null object" : input.getClass().getName()));
-            }
-            Constructor con = ((Class) input).getConstructor(iParamTypes);
-            return con.newInstance(iArgs);
-
-        } catch (NoSuchMethodException ex) {
-            throw new FunctorException("InstantiateTransformer: The constructor must exist and be public ");
-        } catch (InstantiationException ex) {
-            throw new FunctorException("InstantiateTransformer: InstantiationException", ex);
-        } catch (IllegalAccessException ex) {
-            throw new FunctorException("InstantiateTransformer: Constructor must be public", ex);
-        } catch (InvocationTargetException ex) {
-            throw new FunctorException("InstantiateTransformer: Constructor threw an exception", ex);
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/InvokerTransformer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/InvokerTransformer.java
deleted file mode 100755
index 2fa5963..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/InvokerTransformer.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-import org.apache.commons.collections.FunctorException;
-import org.apache.commons.collections.Transformer;
-
-/**
- * Transformer implementation that creates a new object instance by reflection.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public class InvokerTransformer implements Transformer, Serializable {
-
-    /** The serial version */
-    private static final long serialVersionUID = -8653385846894047688L;
-    
-    /** The method name to call */
-    private final String iMethodName;
-    /** The array of reflection parameter types */
-    private final Class[] iParamTypes;
-    /** The array of reflection arguments */
-    private final Object[] iArgs;
-
-    /**
-     * Gets an instance of this transformer calling a specific method with no arguments.
-     * 
-     * @param methodName  the method name to call
-     * @return an invoker transformer
-     * @since Commons Collections 3.1
-     */
-    public static Transformer getInstance(String methodName) {
-        if (methodName == null) {
-            throw new IllegalArgumentException("The method to invoke must not be null");
-        }
-        return new InvokerTransformer(methodName);
-    }
-
-    /**
-     * Gets an instance of this transformer calling a specific method with specific values.
-     * 
-     * @param methodName  the method name to call
-     * @param paramTypes  the parameter types of the method
-     * @param args  the arguments to pass to the method
-     * @return an invoker transformer
-     */
-    public static Transformer getInstance(String methodName, Class[] paramTypes, Object[] args) {
-        if (methodName == null) {
-            throw new IllegalArgumentException("The method to invoke must not be null");
-        }
-        if (((paramTypes == null) && (args != null))
-            || ((paramTypes != null) && (args == null))
-            || ((paramTypes != null) && (args != null) && (paramTypes.length != args.length))) {
-            throw new IllegalArgumentException("The parameter types must match the arguments");
-        }
-        if (paramTypes == null || paramTypes.length == 0) {
-            return new InvokerTransformer(methodName);
-        } else {
-            paramTypes = (Class[]) paramTypes.clone();
-            args = (Object[]) args.clone();
-            return new InvokerTransformer(methodName, paramTypes, args);
-        }
-    }
-
-    /**
-     * Constructor for no arg instance.
-     * 
-     * @param methodName  the method to call
-     */
-    private InvokerTransformer(String methodName) {
-        super();
-        iMethodName = methodName;
-        iParamTypes = null;
-        iArgs = null;
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param methodName  the method to call
-     * @param paramTypes  the constructor parameter types, not cloned
-     * @param args  the constructor arguments, not cloned
-     */
-    public InvokerTransformer(String methodName, Class[] paramTypes, Object[] args) {
-        super();
-        iMethodName = methodName;
-        iParamTypes = paramTypes;
-        iArgs = args;
-    }
-
-    /**
-     * Transforms the input to result by invoking a method on the input.
-     * 
-     * @param input  the input object to transform
-     * @return the transformed result, null if null input
-     */
-    public Object transform(Object input) {
-        if (input == null) {
-            return null;
-        }
-        try {
-            Class cls = input.getClass();
-            Method method = cls.getMethod(iMethodName, iParamTypes);
-            return method.invoke(input, iArgs);
-                
-        } catch (NoSuchMethodException ex) {
-            throw new FunctorException("InvokerTransformer: The method '" + iMethodName + "' on '" + input.getClass() + "' does not exist");
-        } catch (IllegalAccessException ex) {
-            throw new FunctorException("InvokerTransformer: The method '" + iMethodName + "' on '" + input.getClass() + "' cannot be accessed");
-        } catch (InvocationTargetException ex) {
-            throw new FunctorException("InvokerTransformer: The method '" + iMethodName + "' on '" + input.getClass() + "' threw an exception", ex);
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/MapTransformer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/MapTransformer.java
deleted file mode 100755
index bfa8d93..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/MapTransformer.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-import java.util.Map;
-
-import org.apache.commons.collections.Transformer;
-
-/**
- * Transformer implementation that returns the value held in a specified map
- * using the input parameter as a key.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- *
- * @author Stephen Colebourne
- */
-public final class MapTransformer implements Transformer, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 862391807045468939L;
-    
-    /** The map of data to lookup in */
-    private final Map iMap;
-
-    /**
-     * Factory to create the transformer.
-     * <p>
-     * If the map is null, a transformer that always returns null is returned.
-     * 
-     * @param map the map, not cloned
-     * @return the transformer
-     */
-    public static Transformer getInstance(Map map) {
-        if (map == null) {
-            return ConstantTransformer.NULL_INSTANCE;
-        }
-        return new MapTransformer(map);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param map  the map to use for lookup, not cloned
-     */
-    private MapTransformer(Map map) {
-        super();
-        iMap = map;
-    }
-
-    /**
-     * Transforms the input to result by looking it up in a <code>Map</code>.
-     * 
-     * @param input  the input object to transform
-     * @return the transformed result
-     */
-    public Object transform(Object input) {
-        return iMap.get(input);
-    }
-
-    /**
-     * Gets the map to lookup in.
-     * 
-     * @return the map
-     * @since Commons Collections 3.1
-     */
-    public Map getMap() {
-        return iMap;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NOPClosure.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NOPClosure.java
deleted file mode 100755
index b520cf1..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NOPClosure.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Closure;
-
-/**
- * Closure implementation that does nothing.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public class NOPClosure implements Closure, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 3518477308466486130L;
-
-    /** Singleton predicate instance */
-    public static final Closure INSTANCE = new NOPClosure();
-
-    /**
-     * Factory returning the singleton instance.
-     * 
-     * @return the singleton instance
-     * @since Commons Collections 3.1
-     */
-    public static Closure getInstance() {
-        return INSTANCE;
-    }
-
-    /**
-     * Constructor
-     */
-    private NOPClosure() {
-        super();
-    }
-
-    /**
-     * Do nothing.
-     * 
-     * @param input  the input object
-     */
-    public void execute(Object input) {
-        // do nothing
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NOPTransformer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NOPTransformer.java
deleted file mode 100755
index c6c6a5f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NOPTransformer.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Transformer;
-
-/**
- * Transformer implementation that does nothing.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public class NOPTransformer implements Transformer, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 2133891748318574490L;
-
-    /** Singleton predicate instance */
-    public static final Transformer INSTANCE = new NOPTransformer();
-
-    /**
-     * Factory returning the singleton instance.
-     * 
-     * @return the singleton instance
-     * @since Commons Collections 3.1
-     */
-    public static Transformer getInstance() {
-        return INSTANCE;
-    }
-
-    /**
-     * Constructor
-     */
-    private NOPTransformer() {
-        super();
-    }
-
-    /**
-     * Transforms the input to result by doing nothing.
-     * 
-     * @param input  the input object to transform
-     * @return the transformed result which is the input
-     */
-    public Object transform(Object input) {
-        return input;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NonePredicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NonePredicate.java
deleted file mode 100755
index b3a932d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NonePredicate.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- *  Copyright 2001-2004,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.commons.collections.functors;
-
-import java.io.Serializable;
-import java.util.Collection;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Predicate implementation that returns true if none of the
- * predicates return true.
- * If the array of predicates is empty, then this predicate returns true.
- * <p>
- * NOTE: In versions prior to 3.2 an array size of zero or one
- * threw an exception.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- * @author Matt Benson
- */
-public final class NonePredicate implements Predicate, PredicateDecorator, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 2007613066565892961L;
-    
-    /** The array of predicates to call */
-    private final Predicate[] iPredicates;
-    
-    /**
-     * Factory to create the predicate.
-     * <p>
-     * If the array is size zero, the predicate always returns true.
-     *
-     * @param predicates  the predicates to check, cloned, not null
-     * @return the <code>any</code> predicate
-     * @throws IllegalArgumentException if the predicates array is null
-     * @throws IllegalArgumentException if any predicate in the array is null
-     */
-    public static Predicate getInstance(Predicate[] predicates) {
-        FunctorUtils.validate(predicates);
-        if (predicates.length == 0) {
-            return TruePredicate.INSTANCE;
-        }
-        predicates = FunctorUtils.copy(predicates);
-        return new NonePredicate(predicates);
-    }
-
-    /**
-     * Factory to create the predicate.
-     * <p>
-     * If the collection is size zero, the predicate always returns true.
-     *
-     * @param predicates  the predicates to check, cloned, not null
-     * @return the <code>one</code> predicate
-     * @throws IllegalArgumentException if the predicates array is null
-     * @throws IllegalArgumentException if any predicate in the array is null
-     */
-    public static Predicate getInstance(Collection predicates) {
-        Predicate[] preds = FunctorUtils.validate(predicates);
-        if (preds.length == 0) {
-            return TruePredicate.INSTANCE;
-        }
-        return new NonePredicate(preds);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param predicates  the predicates to check, not cloned, not null
-     */
-    public NonePredicate(Predicate[] predicates) {
-        super();
-        iPredicates = predicates;
-    }
-
-    /**
-     * Evaluates the predicate returning false if any stored predicate returns false.
-     * 
-     * @param object  the input object
-     * @return true if none of decorated predicates return true
-     */
-    public boolean evaluate(Object object) {
-        for (int i = 0; i < iPredicates.length; i++) {
-            if (iPredicates[i].evaluate(object)) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Gets the predicates, do not modify the array.
-     * 
-     * @return the predicates
-     * @since Commons Collections 3.1
-     */
-    public Predicate[] getPredicates() {
-        return iPredicates;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NotNullPredicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NotNullPredicate.java
deleted file mode 100755
index 1bd6484..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NotNullPredicate.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Predicate implementation that returns true if the input is not null.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- *
- * @author Stephen Colebourne
- */
-public final class NotNullPredicate implements Predicate, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 7533784454832764388L;
-    
-    /** Singleton predicate instance */
-    public static final Predicate INSTANCE = new NotNullPredicate();
-
-    /**
-     * Factory returning the singleton instance.
-     * 
-     * @return the singleton instance
-     * @since Commons Collections 3.1
-     */
-    public static Predicate getInstance() {
-        return INSTANCE;
-    }
-
-    /**
-     * Restricted constructor.
-     */
-    private NotNullPredicate() {
-        super();
-    }
-
-    /**
-     * Evaluates the predicate returning true if the object does not equal null.
-     * 
-     * @param object  the object to evaluate
-     * @return true if not null
-     */
-    public boolean evaluate(Object object) {
-        return (object != null);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NotPredicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NotPredicate.java
deleted file mode 100755
index 160b7f9..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NotPredicate.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Predicate implementation that returns the opposite of the decorated predicate.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public final class NotPredicate implements Predicate, PredicateDecorator, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = -2654603322338049674L;
-    
-    /** The predicate to decorate */
-    private final Predicate iPredicate;
-    
-    /**
-     * Factory to create the not predicate.
-     * 
-     * @param predicate  the predicate to decorate, not null
-     * @return the predicate
-     * @throws IllegalArgumentException if the predicate is null
-     */
-    public static Predicate getInstance(Predicate predicate) {
-        if (predicate == null) {
-            throw new IllegalArgumentException("Predicate must not be null");
-        }
-        return new NotPredicate(predicate);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param predicate  the predicate to call after the null check
-     */
-    public NotPredicate(Predicate predicate) {
-        super();
-        iPredicate = predicate;
-    }
-
-    /**
-     * Evaluates the predicate returning the opposite to the stored predicate.
-     * 
-     * @param object  the input object
-     * @return true if predicate returns false
-     */
-    public boolean evaluate(Object object) {
-        return !(iPredicate.evaluate(object));
-    }
-
-    /**
-     * Gets the predicate being decorated.
-     * 
-     * @return the predicate as the only element in an array
-     * @since Commons Collections 3.1
-     */
-    public Predicate[] getPredicates() {
-        return new Predicate[] {iPredicate};
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NullIsExceptionPredicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NullIsExceptionPredicate.java
deleted file mode 100755
index b1f281f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NullIsExceptionPredicate.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.FunctorException;
-import org.apache.commons.collections.Predicate;
-
-/**
- * Predicate implementation that throws an exception if the input is null.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public final class NullIsExceptionPredicate implements Predicate, PredicateDecorator, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 3243449850504576071L;
-    
-    /** The predicate to decorate */
-    private final Predicate iPredicate;
-    
-    /**
-     * Factory to create the null exception predicate.
-     * 
-     * @param predicate  the predicate to decorate, not null
-     * @return the predicate
-     * @throws IllegalArgumentException if the predicate is null
-     */
-    public static Predicate getInstance(Predicate predicate) {
-        if (predicate == null) {
-            throw new IllegalArgumentException("Predicate must not be null");
-        }
-        return new NullIsExceptionPredicate(predicate);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param predicate  the predicate to call after the null check
-     */
-    public NullIsExceptionPredicate(Predicate predicate) {
-        super();
-        iPredicate = predicate;
-    }
-
-    /**
-     * Evaluates the predicate returning the result of the decorated predicate
-     * once a null check is performed.
-     * 
-     * @param object  the input object
-     * @return true if decorated predicate returns true
-     * @throws FunctorException if input is null
-     */
-    public boolean evaluate(Object object) {
-        if (object == null) {
-            throw new FunctorException("Input Object must not be null");
-        }
-        return iPredicate.evaluate(object);
-    }
-
-    /**
-     * Gets the predicate being decorated.
-     * 
-     * @return the predicate as the only element in an array
-     * @since Commons Collections 3.1
-     */
-    public Predicate[] getPredicates() {
-        return new Predicate[] {iPredicate};
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NullIsFalsePredicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NullIsFalsePredicate.java
deleted file mode 100755
index cf4f451..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NullIsFalsePredicate.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Predicate implementation that returns false if the input is null.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public final class NullIsFalsePredicate implements Predicate, PredicateDecorator, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = -2997501534564735525L;
-    
-    /** The predicate to decorate */
-    private final Predicate iPredicate;
-    
-    /**
-     * Factory to create the null false predicate.
-     * 
-     * @param predicate  the predicate to decorate, not null
-     * @return the predicate
-     * @throws IllegalArgumentException if the predicate is null
-     */
-    public static Predicate getInstance(Predicate predicate) {
-        if (predicate == null) {
-            throw new IllegalArgumentException("Predicate must not be null");
-        }
-        return new NullIsFalsePredicate(predicate);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param predicate  the predicate to call after the null check
-     */
-    public NullIsFalsePredicate(Predicate predicate) {
-        super();
-        iPredicate = predicate;
-    }
-
-    /**
-     * Evaluates the predicate returning the result of the decorated predicate
-     * once a null check is performed.
-     * 
-     * @param object  the input object
-     * @return true if decorated predicate returns true, false if input is null
-     */
-    public boolean evaluate(Object object) {
-        if (object == null) {
-            return false;
-        }
-        return iPredicate.evaluate(object);
-    }
-
-    /**
-     * Gets the predicate being decorated.
-     * 
-     * @return the predicate as the only element in an array
-     * @since Commons Collections 3.1
-     */
-    public Predicate[] getPredicates() {
-        return new Predicate[] {iPredicate};
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NullIsTruePredicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NullIsTruePredicate.java
deleted file mode 100755
index 0114de4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NullIsTruePredicate.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Predicate implementation that returns true if the input is null.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- *
- * @author Stephen Colebourne
- */
-public final class NullIsTruePredicate implements Predicate, PredicateDecorator, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = -7625133768987126273L;
-    
-    /** The predicate to decorate */
-    private final Predicate iPredicate;
-    
-    /**
-     * Factory to create the null true predicate.
-     * 
-     * @param predicate  the predicate to decorate, not null
-     * @return the predicate
-     * @throws IllegalArgumentException if the predicate is null
-     */
-    public static Predicate getInstance(Predicate predicate) {
-        if (predicate == null) {
-            throw new IllegalArgumentException("Predicate must not be null");
-        }
-        return new NullIsTruePredicate(predicate);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param predicate  the predicate to call after the null check
-     */
-    public NullIsTruePredicate(Predicate predicate) {
-        super();
-        iPredicate = predicate;
-    }
-
-    /**
-     * Evaluates the predicate returning the result of the decorated predicate
-     * once a null check is performed.
-     * 
-     * @param object  the input object
-     * @return true if decorated predicate returns true or input is null
-     */
-    public boolean evaluate(Object object) {
-        if (object == null) {
-            return true;
-        }
-        return iPredicate.evaluate(object);
-    }
-
-    /**
-     * Gets the predicate being decorated.
-     * 
-     * @return the predicate as the only element in an array
-     * @since Commons Collections 3.1
-     */
-    public Predicate[] getPredicates() {
-        return new Predicate[] {iPredicate};
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NullPredicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NullPredicate.java
deleted file mode 100755
index 1064bc6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/NullPredicate.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Predicate implementation that returns true if the input is null.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public final class NullPredicate implements Predicate, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 7533784454832764388L;
-    
-    /** Singleton predicate instance */
-    public static final Predicate INSTANCE = new NullPredicate();
-
-    /**
-     * Factory returning the singleton instance.
-     * 
-     * @return the singleton instance
-     * @since Commons Collections 3.1
-     */
-    public static Predicate getInstance() {
-        return INSTANCE;
-    }
-
-    /**
-     * Restricted constructor.
-     */
-    private NullPredicate() {
-        super();
-    }
-
-    /**
-     * Evaluates the predicate returning true if the input is null.
-     * 
-     * @param object  the input object
-     * @return true if input is null
-     */
-    public boolean evaluate(Object object) {
-        return (object == null);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/OnePredicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/OnePredicate.java
deleted file mode 100755
index 111eca6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/OnePredicate.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- *  Copyright 2001-2004,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.commons.collections.functors;
-
-import java.io.Serializable;
-import java.util.Collection;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Predicate implementation that returns true if only one of the
- * predicates return true.
- * If the array of predicates is empty, then this predicate returns false.
- * <p>
- * NOTE: In versions prior to 3.2 an array size of zero or one
- * threw an exception.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- * @author Matt Benson
- */
-public final class OnePredicate implements Predicate, PredicateDecorator, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = -8125389089924745785L;
-    
-    /** The array of predicates to call */
-    private final Predicate[] iPredicates;
-    
-    /**
-     * Factory to create the predicate.
-     * <p>
-     * If the array is size zero, the predicate always returns false.
-     * If the array is size one, then that predicate is returned.
-     *
-     * @param predicates  the predicates to check, cloned, not null
-     * @return the <code>any</code> predicate
-     * @throws IllegalArgumentException if the predicates array is null
-     * @throws IllegalArgumentException if any predicate in the array is null
-     */
-    public static Predicate getInstance(Predicate[] predicates) {
-        FunctorUtils.validate(predicates);
-        if (predicates.length == 0) {
-            return FalsePredicate.INSTANCE;
-        }
-        if (predicates.length == 1) {
-            return predicates[0];
-        }
-        predicates = FunctorUtils.copy(predicates);
-        return new OnePredicate(predicates);
-    }
-
-    /**
-     * Factory to create the predicate.
-     *
-     * @param predicates  the predicates to check, cloned, not null
-     * @return the <code>one</code> predicate
-     * @throws IllegalArgumentException if the predicates array is null
-     * @throws IllegalArgumentException if any predicate in the array is null
-     */
-    public static Predicate getInstance(Collection predicates) {
-        Predicate[] preds = FunctorUtils.validate(predicates);
-        return new OnePredicate(preds);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param predicates  the predicates to check, not cloned, not null
-     */
-    public OnePredicate(Predicate[] predicates) {
-        super();
-        iPredicates = predicates;
-    }
-
-    /**
-     * Evaluates the predicate returning true if only one decorated predicate
-     * returns true.
-     * 
-     * @param object  the input object
-     * @return true if only one decorated predicate returns true
-     */
-    public boolean evaluate(Object object) {
-        boolean match = false;
-        for (int i = 0; i < iPredicates.length; i++) {
-            if (iPredicates[i].evaluate(object)) {
-                if (match) {
-                    return false;
-                }
-                match = true;
-            }
-        }
-        return match;
-    }
-
-    /**
-     * Gets the predicates, do not modify the array.
-     * 
-     * @return the predicates
-     * @since Commons Collections 3.1
-     */
-    public Predicate[] getPredicates() {
-        return iPredicates;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/OrPredicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/OrPredicate.java
deleted file mode 100755
index 4df847a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/OrPredicate.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Predicate implementation that returns true if either of the predicates return true.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public final class OrPredicate implements Predicate, PredicateDecorator, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = -8791518325735182855L;
-    
-    /** The array of predicates to call */
-    private final Predicate iPredicate1;
-    /** The array of predicates to call */
-    private final Predicate iPredicate2;
-    
-    /**
-     * Factory to create the predicate.
-     * 
-     * @param predicate1  the first predicate to check, not null
-     * @param predicate2  the second predicate to check, not null
-     * @return the <code>and</code> predicate
-     * @throws IllegalArgumentException if either predicate is null
-     */
-    public static Predicate getInstance(Predicate predicate1, Predicate predicate2) {
-        if (predicate1 == null || predicate2 == null) {
-            throw new IllegalArgumentException("Predicate must not be null");
-        }
-        return new OrPredicate(predicate1, predicate2);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param predicate1  the first predicate to check, not null
-     * @param predicate2  the second predicate to check, not null
-     */
-    public OrPredicate(Predicate predicate1, Predicate predicate2) {
-        super();
-        iPredicate1 = predicate1;
-        iPredicate2 = predicate2;
-    }
-
-    /**
-     * Evaluates the predicate returning true if either predicate returns true.
-     * 
-     * @param object  the input object
-     * @return true if either decorated predicate returns true
-     */
-    public boolean evaluate(Object object) {
-       return (iPredicate1.evaluate(object) || iPredicate2.evaluate(object));
-    }
-
-    /**
-     * Gets the two predicates being decorated as an array.
-     * 
-     * @return the predicates
-     * @since Commons Collections 3.1
-     */
-    public Predicate[] getPredicates() {
-        return new Predicate[] {iPredicate1, iPredicate2};
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/PredicateDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/PredicateDecorator.java
deleted file mode 100755
index 14a0f67..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/PredicateDecorator.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- *  Copyright 2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Defines a predicate that decorates one or more other predicates.
- * <p>
- * This interface enables tools to access the decorated predicates.
- * 
- * @since Commons Collections 3.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- * 
- * @author Stephen Colebourne
- */
-public interface PredicateDecorator extends Predicate {
-
-    /**
-     * Gets the predicates being decorated as an array.
-     * <p>
-     * The array may be the internal data structure of the predicate and thus
-     * should not be altered.
-     * 
-     * @return the predicates being decorated
-     */
-    Predicate[] getPredicates();
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/PredicateTransformer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/PredicateTransformer.java
deleted file mode 100755
index 0afb889..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/PredicateTransformer.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Predicate;
-import org.apache.commons.collections.Transformer;
-
-/**
- * Transformer implementation that calls a Predicate using the input object
- * and then returns the input.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public class PredicateTransformer implements Transformer, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 5278818408044349346L;
-
-    /** The closure to wrap */
-    private final Predicate iPredicate;
-
-    /**
-     * Factory method that performs validation.
-     * 
-     * @param predicate  the predicate to call, not null
-     * @return the <code>predicate</code> transformer
-     * @throws IllegalArgumentException if the predicate is null
-     */
-    public static Transformer getInstance(Predicate predicate) {
-        if (predicate == null) {
-            throw new IllegalArgumentException("Predicate must not be null");
-        }
-        return new PredicateTransformer(predicate);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param predicate  the predicate to call, not null
-     */
-    public PredicateTransformer(Predicate predicate) {
-        super();
-        iPredicate = predicate;
-    }
-
-    /**
-     * Transforms the input to result by calling a predicate.
-     * 
-     * @param input  the input object to transform
-     * @return the transformed result
-     */
-    public Object transform(Object input) {
-        return (iPredicate.evaluate(input) ? Boolean.TRUE : Boolean.FALSE);
-    }
-
-    /**
-     * Gets the predicate.
-     * 
-     * @return the predicate
-     * @since Commons Collections 3.1
-     */
-    public Predicate getPredicate() {
-        return iPredicate;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/PrototypeFactory.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/PrototypeFactory.java
deleted file mode 100755
index fbcff89..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/PrototypeFactory.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-import org.apache.commons.collections.Factory;
-import org.apache.commons.collections.FunctorException;
-
-/**
- * Factory implementation that creates a new instance each time based on a prototype.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public class PrototypeFactory {
-
-    /**
-     * Factory method that performs validation.
-     * <p>
-     * Creates a Factory that will return a clone of the same prototype object
-     * each time the factory is used. The prototype will be cloned using one of these
-     * techniques (in order):
-     * <ul>
-     * <li>public clone method
-     * <li>public copy constructor
-     * <li>serialization clone
-     * <ul>
-     *
-     * @param prototype  the object to clone each time in the factory
-     * @return the <code>prototype</code> factory
-     * @throws IllegalArgumentException if the prototype is null
-     * @throws IllegalArgumentException if the prototype cannot be cloned
-     */
-    public static Factory getInstance(Object prototype) {
-        if (prototype == null) {
-            return ConstantFactory.NULL_INSTANCE;
-        }
-        try {
-            Method method = prototype.getClass().getMethod("clone", (Class[]) null);
-            return new PrototypeCloneFactory(prototype, method);
-
-        } catch (NoSuchMethodException ex) {
-            try {
-                prototype.getClass().getConstructor(new Class[] { prototype.getClass()});
-                return new InstantiateFactory(
-                    prototype.getClass(),
-                    new Class[] { prototype.getClass()},
-                    new Object[] { prototype });
-
-            } catch (NoSuchMethodException ex2) {
-                if (prototype instanceof Serializable) {
-                    return new PrototypeSerializationFactory((Serializable) prototype);
-                }
-            }
-        }
-        throw new IllegalArgumentException("The prototype must be cloneable via a public clone method");
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     */
-    private PrototypeFactory() {
-        super();
-    }
-
-    // PrototypeCloneFactory
-    //-----------------------------------------------------------------------
-    /**
-     * PrototypeCloneFactory creates objects by copying a prototype using the clone method.
-     */
-    static class PrototypeCloneFactory implements Factory, Serializable {
-        
-        /** The serial version */
-        private static final long serialVersionUID = 5604271422565175555L;
-        
-        /** The object to clone each time */
-        private final Object iPrototype;
-        /** The method used to clone */
-        private transient Method iCloneMethod;
-
-        /**
-         * Constructor to store prototype.
-         */
-        private PrototypeCloneFactory(Object prototype, Method method) {
-            super();
-            iPrototype = prototype;
-            iCloneMethod = method;
-        }
-
-        /**
-         * Find the Clone method for the class specified.
-         */
-        private void findCloneMethod() {
-            try {
-                iCloneMethod = iPrototype.getClass().getMethod("clone", (Class[]) null);
-
-            } catch (NoSuchMethodException ex) {
-                throw new IllegalArgumentException("PrototypeCloneFactory: The clone method must exist and be public ");
-            }
-        }
-
-        /**
-         * Creates an object by calling the clone method.
-         * 
-         * @return the new object
-         */
-        public Object create() {
-            // needed for post-serialization
-            if (iCloneMethod == null) {
-                findCloneMethod();
-            }
-
-            try {
-                return iCloneMethod.invoke(iPrototype, (Object[])null);
-
-            } catch (IllegalAccessException ex) {
-                throw new FunctorException("PrototypeCloneFactory: Clone method must be public", ex);
-            } catch (InvocationTargetException ex) {
-                throw new FunctorException("PrototypeCloneFactory: Clone method threw an exception", ex);
-            }
-        }
-    }
-
-    // PrototypeSerializationFactory
-    //-----------------------------------------------------------------------
-    /**
-     * PrototypeSerializationFactory creates objects by cloning a prototype using serialization.
-     */
-    static class PrototypeSerializationFactory implements Factory, Serializable {
-        
-        /** The serial version */
-        private static final long serialVersionUID = -8704966966139178833L;
-        
-        /** The object to clone via serialization each time */
-        private final Serializable iPrototype;
-
-        /**
-         * Constructor to store prototype
-         */
-        private PrototypeSerializationFactory(Serializable prototype) {
-            super();
-            iPrototype = prototype;
-        }
-
-        /**
-         * Creates an object using serialization.
-         * 
-         * @return the new object
-         */
-        public Object create() {
-            ByteArrayOutputStream baos = new ByteArrayOutputStream(512);
-            ByteArrayInputStream bais = null;
-            try {
-                ObjectOutputStream out = new ObjectOutputStream(baos);
-                out.writeObject(iPrototype);
-
-                bais = new ByteArrayInputStream(baos.toByteArray());
-                ObjectInputStream in = new ObjectInputStream(bais);
-                return in.readObject();
-
-            } catch (ClassNotFoundException ex) {
-                throw new FunctorException(ex);
-            } catch (IOException ex) {
-                throw new FunctorException(ex);
-            } finally {
-                try {
-                    if (bais != null) {
-                        bais.close();
-                    }
-                } catch (IOException ex) {
-                    // ignore
-                }
-                try {
-                    if (baos != null) {
-                        baos.close();
-                    }
-                } catch (IOException ex) {
-                    // ignore
-                }
-            }
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/StringValueTransformer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/StringValueTransformer.java
deleted file mode 100755
index af372b5..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/StringValueTransformer.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- *  Copyright 2001-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.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Transformer;
-
-/**
- * Transformer implementation that returns the result of calling
- * <code>String.valueOf</code> on the input object.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public final class StringValueTransformer implements Transformer, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 7511110693171758606L;
-
-    /** Singleton predicate instance */
-    public static final Transformer INSTANCE = new StringValueTransformer();
-
-    /**
-     * Factory returning the singleton instance.
-     * 
-     * @return the singleton instance
-     * @since Commons Collections 3.1
-     */
-    public static Transformer getInstance() {
-        return INSTANCE;
-    }
-
-    /**
-     * Restricted constructor.
-     */
-    private StringValueTransformer() {
-        super();
-    }
-
-    /**
-     * Transforms the input to result by calling <code>String.valueOf</code>.
-     * 
-     * @param input  the input object to transform
-     * @return the transformed result
-     */
-    public Object transform(Object input) {
-        return String.valueOf(input);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/SwitchClosure.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/SwitchClosure.java
deleted file mode 100755
index 7b53f2a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/SwitchClosure.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.commons.collections.Closure;
-import org.apache.commons.collections.Predicate;
-
-/**
- * Closure implementation calls the closure whose predicate returns true,
- * like a switch statement.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- *
- * @author Stephen Colebourne
- */
-public class SwitchClosure implements Closure, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 3518477308466486130L;
-
-    /** The tests to consider */
-    private final Predicate[] iPredicates;
-    /** The matching closures to call */
-    private final Closure[] iClosures;
-    /** The default closure to call if no tests match */
-    private final Closure iDefault;
-
-    /**
-     * Factory method that performs validation and copies the parameter arrays.
-     * 
-     * @param predicates  array of predicates, cloned, no nulls
-     * @param closures  matching array of closures, cloned, no nulls
-     * @param defaultClosure  the closure to use if no match, null means nop
-     * @return the <code>chained</code> closure
-     * @throws IllegalArgumentException if array is null
-     * @throws IllegalArgumentException if any element in the array is null
-     */
-    public static Closure getInstance(Predicate[] predicates, Closure[] closures, Closure defaultClosure) {
-        FunctorUtils.validate(predicates);
-        FunctorUtils.validate(closures);
-        if (predicates.length != closures.length) {
-            throw new IllegalArgumentException("The predicate and closure arrays must be the same size");
-        }
-        if (predicates.length == 0) {
-            return (defaultClosure == null ? NOPClosure.INSTANCE : defaultClosure);
-        }
-        predicates = FunctorUtils.copy(predicates);
-        closures = FunctorUtils.copy(closures);
-        return new SwitchClosure(predicates, closures, defaultClosure);
-    }
-
-    /**
-     * Create a new Closure that calls one of the closures depending 
-     * on the predicates. 
-     * <p>
-     * The Map consists of Predicate keys and Closure values. A closure 
-     * is called if its matching predicate returns true. Each predicate is evaluated
-     * until one returns true. If no predicates evaluate to true, the default
-     * closure is called. The default closure is set in the map with a 
-     * null key. The ordering is that of the iterator() method on the entryset 
-     * collection of the map.
-     * 
-     * @param predicatesAndClosures  a map of predicates to closures
-     * @return the <code>switch</code> closure
-     * @throws IllegalArgumentException if the map is null
-     * @throws IllegalArgumentException if any closure in the map is null
-     * @throws ClassCastException  if the map elements are of the wrong type
-     */
-    public static Closure getInstance(Map predicatesAndClosures) {
-        Closure[] closures = null;
-        Predicate[] preds = null;
-        if (predicatesAndClosures == null) {
-            throw new IllegalArgumentException("The predicate and closure map must not be null");
-        }
-        if (predicatesAndClosures.size() == 0) {
-            return NOPClosure.INSTANCE;
-        }
-        // convert to array like this to guarantee iterator() ordering
-        Closure defaultClosure = (Closure) predicatesAndClosures.remove(null);
-        int size = predicatesAndClosures.size();
-        if (size == 0) {
-            return (defaultClosure == null ? NOPClosure.INSTANCE : defaultClosure);
-        }
-        closures = new Closure[size];
-        preds = new Predicate[size];
-        int i = 0;
-        for (Iterator it = predicatesAndClosures.entrySet().iterator(); it.hasNext();) {
-            Map.Entry entry = (Map.Entry) it.next();
-            preds[i] = (Predicate) entry.getKey();
-            closures[i] = (Closure) entry.getValue();
-            i++;
-        }
-        return new SwitchClosure(preds, closures, defaultClosure);
-    }
-    
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param predicates  array of predicates, not cloned, no nulls
-     * @param closures  matching array of closures, not cloned, no nulls
-     * @param defaultClosure  the closure to use if no match, null means nop
-     */
-    public SwitchClosure(Predicate[] predicates, Closure[] closures, Closure defaultClosure) {
-        super();
-        iPredicates = predicates;
-        iClosures = closures;
-        iDefault = (defaultClosure == null ? NOPClosure.INSTANCE : defaultClosure);
-    }
-
-    /**
-     * Executes the closure whose matching predicate returns true
-     * 
-     * @param input  the input object
-     */
-    public void execute(Object input) {
-        for (int i = 0; i < iPredicates.length; i++) {
-            if (iPredicates[i].evaluate(input) == true) {
-                iClosures[i].execute(input);
-                return;
-            }
-        }
-        iDefault.execute(input);
-    }
-
-    /**
-     * Gets the predicates, do not modify the array.
-     * 
-     * @return the predicates
-     * @since Commons Collections 3.1
-     */
-    public Predicate[] getPredicates() {
-        return iPredicates;
-    }
-
-    /**
-     * Gets the closures, do not modify the array.
-     * 
-     * @return the closures
-     * @since Commons Collections 3.1
-     */
-    public Closure[] getClosures() {
-        return iClosures;
-    }
-
-    /**
-     * Gets the default closure.
-     * 
-     * @return the default closure
-     * @since Commons Collections 3.1
-     */
-    public Closure getDefaultClosure() {
-        return iDefault;
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/SwitchTransformer.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/SwitchTransformer.java
deleted file mode 100755
index 9e26e12..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/SwitchTransformer.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- *  Copyright 2001-2004,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.commons.collections.functors;
-
-import java.io.Serializable;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.commons.collections.Predicate;
-import org.apache.commons.collections.Transformer;
-
-/**
- * Transformer implementation calls the transformer whose predicate returns true,
- * like a switch statement.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- *
- * @author Stephen Colebourne
- */
-public class SwitchTransformer implements Transformer, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = -6404460890903469332L;
-
-    /** The tests to consider */
-    private final Predicate[] iPredicates;
-    /** The matching transformers to call */
-    private final Transformer[] iTransformers;
-    /** The default transformer to call if no tests match */
-    private final Transformer iDefault;
-
-    /**
-     * Factory method that performs validation and copies the parameter arrays.
-     * 
-     * @param predicates  array of predicates, cloned, no nulls
-     * @param transformers  matching array of transformers, cloned, no nulls
-     * @param defaultTransformer  the transformer to use if no match, null means return null
-     * @return the <code>chained</code> transformer
-     * @throws IllegalArgumentException if array is null
-     * @throws IllegalArgumentException if any element in the array is null
-     */
-    public static Transformer getInstance(Predicate[] predicates, Transformer[] transformers, Transformer defaultTransformer) {
-        FunctorUtils.validate(predicates);
-        FunctorUtils.validate(transformers);
-        if (predicates.length != transformers.length) {
-            throw new IllegalArgumentException("The predicate and transformer arrays must be the same size");
-        }
-        if (predicates.length == 0) {
-            return (defaultTransformer == null ? ConstantTransformer.NULL_INSTANCE : defaultTransformer);
-        }
-        predicates = FunctorUtils.copy(predicates);
-        transformers = FunctorUtils.copy(transformers);
-        return new SwitchTransformer(predicates, transformers, defaultTransformer);
-    }
-
-    /**
-     * Create a new Transformer that calls one of the transformers depending 
-     * on the predicates. 
-     * <p>
-     * The Map consists of Predicate keys and Transformer values. A transformer 
-     * is called if its matching predicate returns true. Each predicate is evaluated
-     * until one returns true. If no predicates evaluate to true, the default
-     * transformer is called. The default transformer is set in the map with a 
-     * null key. The ordering is that of the iterator() method on the entryset 
-     * collection of the map.
-     * 
-     * @param predicatesAndTransformers  a map of predicates to transformers
-     * @return the <code>switch</code> transformer
-     * @throws IllegalArgumentException if the map is null
-     * @throws IllegalArgumentException if any transformer in the map is null
-     * @throws ClassCastException  if the map elements are of the wrong type
-     */
-    public static Transformer getInstance(Map predicatesAndTransformers) {
-        Transformer[] transformers = null;
-        Predicate[] preds = null;
-        if (predicatesAndTransformers == null) {
-            throw new IllegalArgumentException("The predicate and transformer map must not be null");
-        }
-        if (predicatesAndTransformers.size() == 0) {
-            return ConstantTransformer.NULL_INSTANCE;
-        }
-        // convert to array like this to guarantee iterator() ordering
-        Transformer defaultTransformer = (Transformer) predicatesAndTransformers.remove(null);
-        int size = predicatesAndTransformers.size();
-        if (size == 0) {
-            return (defaultTransformer == null ? ConstantTransformer.NULL_INSTANCE : defaultTransformer);
-        }
-        transformers = new Transformer[size];
-        preds = new Predicate[size];
-        int i = 0;
-        for (Iterator it = predicatesAndTransformers.entrySet().iterator(); it.hasNext();) {
-            Map.Entry entry = (Map.Entry) it.next();
-            preds[i] = (Predicate) entry.getKey();
-            transformers[i] = (Transformer) entry.getValue();
-            i++;
-        }
-        return new SwitchTransformer(preds, transformers, defaultTransformer);
-    }
-    
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param predicates  array of predicates, not cloned, no nulls
-     * @param transformers  matching array of transformers, not cloned, no nulls
-     * @param defaultTransformer  the transformer to use if no match, null means return null
-     */
-    public SwitchTransformer(Predicate[] predicates, Transformer[] transformers, Transformer defaultTransformer) {
-        super();
-        iPredicates = predicates;
-        iTransformers = transformers;
-        iDefault = (defaultTransformer == null ? ConstantTransformer.NULL_INSTANCE : defaultTransformer);
-    }
-
-    /**
-     * Transforms the input to result by calling the transformer whose matching
-     * predicate returns true.
-     * 
-     * @param input  the input object to transform
-     * @return the transformed result
-     */
-    public Object transform(Object input) {
-        for (int i = 0; i < iPredicates.length; i++) {
-            if (iPredicates[i].evaluate(input) == true) {
-                return iTransformers[i].transform(input);
-            }
-        }
-        return iDefault.transform(input);
-    }
-
-    /**
-     * Gets the predicates, do not modify the array.
-     * 
-     * @return the predicates
-     * @since Commons Collections 3.1
-     */
-    public Predicate[] getPredicates() {
-        return iPredicates;
-    }
-
-    /**
-     * Gets the transformers, do not modify the array.
-     * 
-     * @return the transformers
-     * @since Commons Collections 3.1
-     */
-    public Transformer[] getTransformers() {
-        return iTransformers;
-    }
-
-    /**
-     * Gets the default transformer.
-     * 
-     * @return the default transformer
-     * @since Commons Collections 3.1
-     */
-    public Transformer getDefaultTransformer() {
-        return iDefault;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/TransformedPredicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/TransformedPredicate.java
deleted file mode 100755
index f8875f8..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/TransformedPredicate.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Predicate;
-import org.apache.commons.collections.Transformer;
-
-/**
- * Predicate implementation that transforms the given object before invoking
- * another <code>Predicate</code>.
- * 
- * @since Commons Collections 3.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- * @author Alban Peignier
- * @author Stephen Colebourne
- */
-public final class TransformedPredicate implements Predicate, PredicateDecorator, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = -5596090919668315834L;
-    
-    /** The transformer to call */
-    private final Transformer iTransformer;
-    /** The predicate to call */
-    private final Predicate iPredicate;
-
-    /**
-     * Factory to create the predicate.
-     * 
-     * @param transformer  the transformer to call
-     * @param predicate  the predicate to call with the result of the transform
-     * @return the predicate
-     * @throws IllegalArgumentException if the transformer or the predicate is null
-     */
-    public static Predicate getInstance(Transformer transformer, Predicate predicate) {
-        if (transformer == null) {
-            throw new IllegalArgumentException("The transformer to call must not be null");
-        }
-        if (predicate == null) {
-            throw new IllegalArgumentException("The predicate to call must not be null");
-        }
-        return new TransformedPredicate(transformer, predicate);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param transformer  the transformer to use
-     * @param predicate  the predicate to decorate
-     */
-    public TransformedPredicate(Transformer transformer, Predicate predicate) {
-        iTransformer = transformer;
-        iPredicate = predicate;
-    }
-    
-    /**
-     * Evaluates the predicate returning the result of the decorated predicate
-     * once the input has been transformed
-     * 
-     * @param object  the input object which will be transformed
-     * @return true if decorated predicate returns true
-     */
-    public boolean evaluate(Object object) {
-        Object result = iTransformer.transform(object);
-        return iPredicate.evaluate(result);
-    }
-
-    /**
-     * Gets the predicate being decorated.
-     * 
-     * @return the predicate as the only element in an array
-     * @since Commons Collections 3.1
-     */
-    public Predicate[] getPredicates() {
-        return new Predicate[] {iPredicate};
-    }
-
-    /**
-     * Gets the transformer in use.
-     * 
-     * @return the transformer
-     */
-    public Transformer getTransformer() {
-        return iTransformer;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/TransformerClosure.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/TransformerClosure.java
deleted file mode 100755
index a86eefa..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/TransformerClosure.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Closure;
-import org.apache.commons.collections.Transformer;
-
-/**
- * Closure implementation that calls a Transformer using the input object
- * and ignore the result.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public class TransformerClosure implements Closure, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = -5194992589193388969L;
-
-    /** The transformer to wrap */
-    private final Transformer iTransformer;
-
-    /**
-     * Factory method that performs validation.
-     * <p>
-     * A null transformer will return the <code>NOPClosure</code>.
-     * 
-     * @param transformer  the transformer to call, null means nop
-     * @return the <code>transformer</code> closure
-     */
-    public static Closure getInstance(Transformer transformer) {
-        if (transformer == null) {
-            return NOPClosure.INSTANCE;
-        }
-        return new TransformerClosure(transformer);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param transformer  the transformer to call, not null
-     */
-    public TransformerClosure(Transformer transformer) {
-        super();
-        iTransformer = transformer;
-    }
-
-    /**
-     * Executes the closure by calling the decorated transformer.
-     * 
-     * @param input  the input object
-     */
-    public void execute(Object input) {
-        iTransformer.transform(input);
-    }
-
-    /**
-     * Gets the transformer.
-     * 
-     * @return the transformer
-     * @since Commons Collections 3.1
-     */
-    public Transformer getTransformer() {
-        return iTransformer;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/TransformerPredicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/TransformerPredicate.java
deleted file mode 100755
index 76f6bd8..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/TransformerPredicate.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.FunctorException;
-import org.apache.commons.collections.Predicate;
-import org.apache.commons.collections.Transformer;
-
-/**
- * Predicate implementation that returns the result of a transformer.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public final class TransformerPredicate implements Predicate, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = -2407966402920578741L;
-    
-    /** The transformer to call */
-    private final Transformer iTransformer;
-    
-    /**
-     * Factory to create the predicate.
-     * 
-     * @param transformer  the transformer to decorate
-     * @return the predicate
-     * @throws IllegalArgumentException if the transformer is null
-     */
-    public static Predicate getInstance(Transformer transformer) {
-        if (transformer == null) {
-            throw new IllegalArgumentException("The transformer to call must not be null");
-        }
-        return new TransformerPredicate(transformer);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param transformer  the transformer to decorate
-     */
-    public TransformerPredicate(Transformer transformer) {
-        super();
-        iTransformer = transformer;
-    }
-
-    /**
-     * Evaluates the predicate returning the result of the decorated transformer.
-     * 
-     * @param object  the input object
-     * @return true if decorated transformer returns Boolean.TRUE
-     * @throws FunctorException if the transformer returns an invalid type
-     */
-    public boolean evaluate(Object object) {
-        Object result = iTransformer.transform(object);
-        if (result instanceof Boolean == false) {
-            throw new FunctorException(
-                "Transformer must return an instanceof Boolean, it was a "
-                    + (result == null ? "null object" : result.getClass().getName()));
-        }
-        return ((Boolean) result).booleanValue();
-    }
-
-    /**
-     * Gets the transformer.
-     * 
-     * @return the transformer
-     * @since Commons Collections 3.1
-     */
-    public Transformer getTransformer() {
-        return iTransformer;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/TruePredicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/TruePredicate.java
deleted file mode 100755
index 6c9542a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/TruePredicate.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Predicate implementation that always returns true.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:33 $
- *
- * @author Stephen Colebourne
- */
-public final class TruePredicate implements Predicate, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = 3374767158756189740L;
-    
-    /** Singleton predicate instance */
-    public static final Predicate INSTANCE = new TruePredicate();
-
-    /**
-     * Factory returning the singleton instance.
-     * 
-     * @return the singleton instance
-     * @since Commons Collections 3.1
-     */
-    public static Predicate getInstance() {
-        return INSTANCE;
-    }
-
-    /**
-     * Restricted constructor.
-     */
-    private TruePredicate() {
-        super();
-    }
-
-    /**
-     * Evaluates the predicate returning true always.
-     * 
-     * @param object  the input object
-     * @return true always
-     */
-    public boolean evaluate(Object object) {
-        return true;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/UniquePredicate.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/UniquePredicate.java
deleted file mode 100755
index b74c724..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/UniquePredicate.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Predicate implementation that returns true the first time an object is
- * passed into the predicate.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- *
- * @author Stephen Colebourne
- */
-public final class UniquePredicate implements Predicate, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = -3319417438027438040L;
-    
-    /** The set of previously seen objects */
-    private final Set iSet = new HashSet();
-    
-    /**
-     * Factory to create the predicate.
-     * 
-     * @return the predicate
-     * @throws IllegalArgumentException if the predicate is null
-     */
-    public static Predicate getInstance() {
-        return new UniquePredicate();
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     */
-    public UniquePredicate() {
-        super();
-    }
-
-    /**
-     * Evaluates the predicate returning true if the input object hasn't been
-     * received yet.
-     * 
-     * @param object  the input object
-     * @return true if this is the first time the object is seen
-     */
-    public boolean evaluate(Object object) {
-        return iSet.add(object);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/WhileClosure.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/WhileClosure.java
deleted file mode 100755
index 46df8aa..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/WhileClosure.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.functors;
-
-import java.io.Serializable;
-
-import org.apache.commons.collections.Closure;
-import org.apache.commons.collections.Predicate;
-
-/**
- * Closure implementation that executes a closure repeatedly until a condition is met,
- * like a do-while or while loop.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- *
- * @author Stephen Colebourne
- */
-public class WhileClosure implements Closure, Serializable {
-
-    /** Serial version UID */
-    private static final long serialVersionUID = -3110538116913760108L;
-
-    /** The test condition */
-    private final Predicate iPredicate;
-    /** The closure to call */
-    private final Closure iClosure;
-    /** The flag, true is a do loop, false is a while */
-    private final boolean iDoLoop;
-
-    /**
-     * Factory method that performs validation.
-     * 
-     * @param predicate  the predicate used to evaluate when the loop terminates, not null
-     * @param closure  the closure the execute, not null
-     * @param doLoop  true to act as a do-while loop, always executing the closure once
-     * @return the <code>while</code> closure
-     * @throws IllegalArgumentException if the predicate or closure is null
-     */
-    public static Closure getInstance(Predicate predicate, Closure closure, boolean doLoop) {
-        if (predicate == null) {
-            throw new IllegalArgumentException("Predicate must not be null");
-        }
-        if (closure == null) {
-            throw new IllegalArgumentException("Closure must not be null");
-        }
-        return new WhileClosure(predicate, closure, doLoop);
-    }
-
-    /**
-     * Constructor that performs no validation.
-     * Use <code>getInstance</code> if you want that.
-     * 
-     * @param predicate  the predicate used to evaluate when the loop terminates, not null
-     * @param closure  the closure the execute, not null
-     * @param doLoop  true to act as a do-while loop, always executing the closure once
-     */
-    public WhileClosure(Predicate predicate, Closure closure, boolean doLoop) {
-        super();
-        iPredicate = predicate;
-        iClosure = closure;
-        iDoLoop = doLoop;
-    }
-
-    /**
-     * Executes the closure until the predicate is false.
-     * 
-     * @param input  the input object
-     */
-    public void execute(Object input) {
-        if (iDoLoop) {
-            iClosure.execute(input);
-        }
-        while (iPredicate.evaluate(input)) {
-            iClosure.execute(input);
-        }
-    }
-
-    /**
-     * Gets the predicate in use.
-     * 
-     * @return the predicate
-     * @since Commons Collections 3.1
-     */
-    public Predicate getPredicate() {
-        return iPredicate;
-    }
-
-    /**
-     * Gets the closure.
-     * 
-     * @return the closure
-     * @since Commons Collections 3.1
-     */
-    public Closure getClosure() {
-        return iClosure;
-    }
-
-    /**
-     * Is the loop a do-while loop.
-     * 
-     * @return true is do-while, false if while
-     * @since Commons Collections 3.1
-     */
-    public boolean isDoLoop() {
-        return iDoLoop;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/package.html b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/package.html
deleted file mode 100755
index 39c8cba..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/functors/package.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!-- $Id: package.html,v 1.1 2009/05/27 22:16:33 mparker Exp $ -->
- <!--
-   Copyright 2003-2005 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-  -->
-<BODY>
-<p>
-This package contains implementations of the
-{@link org.apache.commons.collections.Closure Closure},
-{@link org.apache.commons.collections.Predicate Predicate},
-{@link org.apache.commons.collections.Transformer Transformer} and
-{@link org.apache.commons.collections.Factory Factory} interfaces.
-These provide simple callbacks for processing with collections.
-</p>
-</BODY>
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/AbstractEmptyIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/AbstractEmptyIterator.java
deleted file mode 100755
index a551114..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/AbstractEmptyIterator.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- *  Copyright 2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.NoSuchElementException;
-
-/** 
- * Provides an implementation of an empty iterator.
- *
- * @since Commons Collections 3.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Stephen Colebourne
- */
-abstract class AbstractEmptyIterator {
- 
-    /**
-     * Constructor.
-     */
-    protected AbstractEmptyIterator() {
-        super();
-    }
-
-    public boolean hasNext() {
-        return false;
-    }
-
-    public Object next() {
-        throw new NoSuchElementException("Iterator contains no elements");
-    }
-
-    public boolean hasPrevious() {
-        return false;
-    }
-
-    public Object previous() {
-        throw new NoSuchElementException("Iterator contains no elements");
-    }
-
-    public int nextIndex() {
-        return 0;
-    }
-
-    public int previousIndex() {
-        return -1;
-    }
-
-    public void add(Object obj) {
-        throw new UnsupportedOperationException("add() not supported for empty Iterator");
-    }
-
-    public void set(Object obj) {
-        throw new IllegalStateException("Iterator contains no elements");
-    }
-
-    public void remove() {
-        throw new IllegalStateException("Iterator contains no elements");
-    }
-
-    public Object getKey() {
-        throw new IllegalStateException("Iterator contains no elements");
-    }
-
-    public Object getValue() {
-        throw new IllegalStateException("Iterator contains no elements");
-    }
-
-    public Object setValue(Object value) {
-        throw new IllegalStateException("Iterator contains no elements");
-    }
-
-    public void reset() {
-        // do nothing
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/AbstractIteratorDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/AbstractIteratorDecorator.java
deleted file mode 100755
index 41508b0..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/AbstractIteratorDecorator.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.Iterator;
-
-/** 
- * Provides basic behaviour for decorating an iterator with extra functionality.
- * <p>
- * All methods are forwarded to the decorated iterator.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author James Strachan
- * @author Stephen Colebourne
- */
-public class AbstractIteratorDecorator implements Iterator {
-
-    /** The iterator being decorated */
-    protected final Iterator iterator;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that decorates the specified iterator.
-     *
-     * @param iterator  the iterator to decorate, must not be null
-     * @throws IllegalArgumentException if the collection is null
-     */
-    public AbstractIteratorDecorator(Iterator iterator) {
-        super();
-        if (iterator == null) {
-            throw new IllegalArgumentException("Iterator must not be null");
-        }
-        this.iterator = iterator;
-    }
-
-    /**
-     * Gets the iterator being decorated.
-     * 
-     * @return the decorated iterator
-     */
-    protected Iterator getIterator() {
-        return iterator;
-    }
-
-    //-----------------------------------------------------------------------
-    public boolean hasNext() {
-        return iterator.hasNext();
-    }
-
-    public Object next() {
-        return iterator.next();
-    }
-
-    public void remove() {
-        iterator.remove();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/AbstractListIteratorDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/AbstractListIteratorDecorator.java
deleted file mode 100755
index 5451cca..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/AbstractListIteratorDecorator.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.ListIterator;
-
-/**
- * Provides basic behaviour for decorating a list iterator with extra functionality.
- * <p>
- * All methods are forwarded to the decorated list iterator.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Rodney Waldhoff
- * @author Stephen Colebourne
- */
-public class AbstractListIteratorDecorator implements ListIterator {
-
-    /** The iterator being decorated */
-    protected final ListIterator iterator;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that decorates the specified iterator.
-     *
-     * @param iterator  the iterator to decorate, must not be null
-     * @throws IllegalArgumentException if the collection is null
-     */
-    public AbstractListIteratorDecorator(ListIterator iterator) {
-        super();
-        if (iterator == null) {
-            throw new IllegalArgumentException("ListIterator must not be null");
-        }
-        this.iterator = iterator;
-    }
-
-    /**
-     * Gets the iterator being decorated.
-     * 
-     * @return the decorated iterator
-     */
-    protected ListIterator getListIterator() {
-        return iterator;
-    }
-
-    //-----------------------------------------------------------------------
-    public boolean hasNext() {
-        return iterator.hasNext();
-    }
-
-    public Object next() {
-        return iterator.next();
-    }
-
-    public int nextIndex() {
-        return iterator.nextIndex();
-    }
-
-    public boolean hasPrevious() {
-        return iterator.hasPrevious();
-    }
-
-    public Object previous() {
-        return iterator.previous();
-    }
-
-    public int previousIndex() {
-        return iterator.previousIndex();
-    }
-
-    public void remove() {
-        iterator.remove();
-    }
-
-    public void set(Object obj) {
-        iterator.set(obj);
-    }
-
-    public void add(Object obj) {
-        iterator.add(obj);
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/AbstractMapIteratorDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/AbstractMapIteratorDecorator.java
deleted file mode 100755
index 91522f2..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/AbstractMapIteratorDecorator.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import org.apache.commons.collections.MapIterator;
-
-/**
- * Provides basic behaviour for decorating a map iterator with extra functionality.
- * <p>
- * All methods are forwarded to the decorated map iterator.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Stephen Colebourne
- */
-public class AbstractMapIteratorDecorator implements MapIterator {
-
-    /** The iterator being decorated */
-    protected final MapIterator iterator;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that decorates the specified iterator.
-     *
-     * @param iterator  the iterator to decorate, must not be null
-     * @throws IllegalArgumentException if the collection is null
-     */
-    public AbstractMapIteratorDecorator(MapIterator iterator) {
-        super();
-        if (iterator == null) {
-            throw new IllegalArgumentException("MapIterator must not be null");
-        }
-        this.iterator = iterator;
-    }
-
-    /**
-     * Gets the iterator being decorated.
-     * 
-     * @return the decorated iterator
-     */
-    protected MapIterator getMapIterator() {
-        return iterator;
-    }
-
-    //-----------------------------------------------------------------------
-    public boolean hasNext() {
-        return iterator.hasNext();
-    }
-
-    public Object next() {
-        return iterator.next();
-    }
-
-    public void remove() {
-        iterator.remove();
-    }
-    
-    public Object getKey() {
-        return iterator.getKey();
-    }
-
-    public Object getValue() {
-        return iterator.getValue();
-    }
-
-    public Object setValue(Object obj) {
-        return iterator.setValue(obj);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/AbstractOrderedMapIteratorDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/AbstractOrderedMapIteratorDecorator.java
deleted file mode 100755
index b7006ae..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/AbstractOrderedMapIteratorDecorator.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import org.apache.commons.collections.OrderedMapIterator;
-
-/**
- * Provides basic behaviour for decorating an ordered map iterator with extra functionality.
- * <p>
- * All methods are forwarded to the decorated map iterator.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Stephen Colebourne
- */
-public class AbstractOrderedMapIteratorDecorator implements OrderedMapIterator {
-
-    /** The iterator being decorated */
-    protected final OrderedMapIterator iterator;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that decorates the specified iterator.
-     *
-     * @param iterator  the iterator to decorate, must not be null
-     * @throws IllegalArgumentException if the collection is null
-     */
-    public AbstractOrderedMapIteratorDecorator(OrderedMapIterator iterator) {
-        super();
-        if (iterator == null) {
-            throw new IllegalArgumentException("OrderedMapIterator must not be null");
-        }
-        this.iterator = iterator;
-    }
-
-    /**
-     * Gets the iterator being decorated.
-     * 
-     * @return the decorated iterator
-     */
-    protected OrderedMapIterator getOrderedMapIterator() {
-        return iterator;
-    }
-
-    //-----------------------------------------------------------------------
-    public boolean hasNext() {
-        return iterator.hasNext();
-    }
-
-    public Object next() {
-        return iterator.next();
-    }
-
-    public boolean hasPrevious() {
-        return iterator.hasPrevious();
-    }
-
-    public Object previous() {
-        return iterator.previous();
-    }
-
-    public void remove() {
-        iterator.remove();
-    }
-    
-    public Object getKey() {
-        return iterator.getKey();
-    }
-
-    public Object getValue() {
-        return iterator.getValue();
-    }
-
-    public Object setValue(Object obj) {
-        return iterator.setValue(obj);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ArrayIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ArrayIterator.java
deleted file mode 100755
index 46c22d9..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ArrayIterator.java
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- *  Copyright 1999-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.lang.reflect.Array;
-import java.util.NoSuchElementException;
-
-import org.apache.commons.collections.ResettableIterator;
-
-/** 
- * Implements an {@link java.util.Iterator Iterator} over any array.
- * <p>
- * The array can be either an array of object or of primitives. If you know 
- * that you have an object array, the 
- * {@link org.apache.commons.collections.iterators.ObjectArrayIterator ObjectArrayIterator}
- * class is a better choice, as it will perform better.
- * <p>
- * The iterator implements a {@link #reset} method, allowing the reset of 
- * the iterator back to the start if required.
- *
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- *
- * @author James Strachan
- * @author Mauricio S. Moura
- * @author Michael A. Smith
- * @author Neil O'Toole
- * @author Stephen Colebourne
- */
-public class ArrayIterator implements ResettableIterator {
-
-    /** The array to iterate over */    
-    protected Object array;
-    /** The start index to loop from */
-    protected int startIndex = 0;
-    /** The end index to loop to */
-	protected int endIndex = 0;
-    /** The current iterator index */
-	protected int index = 0;
-    
-    // Constructors
-    // ----------------------------------------------------------------------
-    /**
-     * Constructor for use with <code>setArray</code>.
-     * <p>
-     * Using this constructor, the iterator is equivalent to an empty iterator
-     * until {@link #setArray(Object)} is  called to establish the array to iterate over.
-     */
-    public ArrayIterator() {
-        super();
-    }
-   
-    /**
-     * Constructs an ArrayIterator that will iterate over the values in the
-     * specified array.
-     *
-     * @param array the array to iterate over.
-     * @throws IllegalArgumentException if <code>array</code> is not an array.
-     * @throws NullPointerException if <code>array</code> is <code>null</code>
-     */
-    public ArrayIterator(final Object array) {
-        super();
-        setArray(array);
-    }
-
-    /**
-     * Constructs an ArrayIterator that will iterate over the values in the
-     * specified array from a specific start index.
-     *
-     * @param array  the array to iterate over.
-     * @param startIndex  the index to start iterating at.
-     * @throws IllegalArgumentException if <code>array</code> is not an array.
-     * @throws NullPointerException if <code>array</code> is <code>null</code>
-     * @throws IndexOutOfBoundsException if the index is invalid
-     */
-    public ArrayIterator(final Object array, final int startIndex) {
-        super();
-        setArray(array);
-        checkBound(startIndex, "start");
-        this.startIndex = startIndex;
-        this.index = startIndex;
-    }
-
-    /**
-     * Construct an ArrayIterator that will iterate over a range of values 
-     * in the specified array.
-     *
-     * @param array  the array to iterate over.
-     * @param startIndex  the index to start iterating at.
-     * @param endIndex  the index to finish iterating at.
-     * @throws IllegalArgumentException if <code>array</code> is not an array.
-     * @throws NullPointerException if <code>array</code> is <code>null</code>
-     * @throws IndexOutOfBoundsException if either index is invalid
-     */
-    public ArrayIterator(final Object array, final int startIndex, final int endIndex) {
-        super();
-        setArray(array);
-        checkBound(startIndex, "start");
-        checkBound(endIndex, "end");
-        if (endIndex < startIndex) {
-            throw new IllegalArgumentException("End index must not be less than start index.");
-        }
-        this.startIndex = startIndex;
-        this.endIndex = endIndex;
-        this.index = startIndex;
-    }
-
-    /**
-     * Checks whether the index is valid or not.
-     * 
-     * @param bound  the index to check
-     * @param type  the index type (for error messages)
-     * @throws IndexOutOfBoundsException if the index is invalid
-     */
-    protected void checkBound(final int bound, final String type ) {
-        if (bound > this.endIndex) {
-            throw new ArrayIndexOutOfBoundsException(
-              "Attempt to make an ArrayIterator that " + type +
-              "s beyond the end of the array. "
-            );
-        }
-        if (bound < 0) {
-            throw new ArrayIndexOutOfBoundsException(
-              "Attempt to make an ArrayIterator that " + type +
-              "s before the start of the array. "
-            );
-        }
-    }
-
-    // Iterator interface
-    //-----------------------------------------------------------------------
-    /**
-     * Returns true if there are more elements to return from the array.
-     *
-     * @return true if there is a next element to return
-     */
-    public boolean hasNext() {
-        return (index < endIndex);
-    }
-
-    /**
-     * Returns the next element in the array.
-     *
-     * @return the next element in the array
-     * @throws NoSuchElementException if all the elements in the array
-     *  have already been returned
-     */
-    public Object next() {
-        if (hasNext() == false) {
-            throw new NoSuchElementException();
-        }
-        return Array.get(array, index++);
-    }
-
-    /**
-     * Throws {@link UnsupportedOperationException}.
-     *
-     * @throws UnsupportedOperationException always
-     */
-    public void remove() {
-        throw new UnsupportedOperationException("remove() method is not supported");
-    }
-
-    // Properties
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the array that this iterator is iterating over. 
-     *
-     * @return the array this iterator iterates over, or <code>null</code> if
-     *  the no-arg constructor was used and {@link #setArray(Object)} has never
-     *  been called with a valid array.
-     */
-    public Object getArray() {
-        return array;
-    }
-    
-    /**
-     * Sets the array that the ArrayIterator should iterate over.
-     * <p>
-     * If an array has previously been set (using the single-arg constructor
-     * or this method) then that array is discarded in favour of this one.
-     * Iteration is restarted at the start of the new array.
-     * Although this can be used to reset iteration, the {@link #reset()} method
-     * is a more effective choice.
-     *
-     * @param array the array that the iterator should iterate over.
-     * @throws IllegalArgumentException if <code>array</code> is not an array.
-     * @throws NullPointerException if <code>array</code> is <code>null</code>
-     */
-    public void setArray(final Object array) {
-        // Array.getLength throws IllegalArgumentException if the object is not
-        // an array or NullPointerException if the object is null.  This call
-        // is made before saving the array and resetting the index so that the
-        // array iterator remains in a consistent state if the argument is not
-        // an array or is null.
-        this.endIndex = Array.getLength(array);
-        this.startIndex = 0;
-        this.array = array;
-        this.index = 0;
-    }
-    
-    /**
-     * Resets the iterator back to the start index.
-     */
-    public void reset() {
-        this.index = this.startIndex;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ArrayListIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ArrayListIterator.java
deleted file mode 100755
index 5dbcbc6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ArrayListIterator.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- *  Copyright 1999-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.lang.reflect.Array;
-import java.util.ListIterator;
-import java.util.NoSuchElementException;
-
-import org.apache.commons.collections.ResettableListIterator;
-
-/**
- * Implements a {@link ListIterator} over an array. 
- * <p>
- * The array can be either an array of object or of primitives. If you know 
- * that you have an object array, the {@link ObjectArrayListIterator}
- * class is a better choice, as it will perform better.
- * 
- * <p>
- * This iterator does not support {@link #add(Object)} or {@link #remove()}, as the array 
- * cannot be changed in size. The {@link #set(Object)} method is supported however.
- *
- * @see org.apache.commons.collections.iterators.ArrayIterator
- * @see java.util.Iterator
- * @see java.util.ListIterator
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- *
- * @author Neil O'Toole
- * @author Stephen Colebourne
- * @author Phil Steitz
- */
-public class ArrayListIterator extends ArrayIterator
-		implements ListIterator, ResettableListIterator {
-
-    /**
-     * Holds the index of the last item returned by a call to <code>next()</code>
-     * or <code>previous()</code>. This is set to <code>-1</code> if neither method
-     * has yet been invoked. <code>lastItemIndex</code> is used to to implement 
-     * the {@link #set} method.
-     *
-     */
-    protected int lastItemIndex = -1;
-
-    // Constructors
-    // ----------------------------------------------------------------------
-    /**
-     * Constructor for use with <code>setArray</code>.
-     * <p>
-     * Using this constructor, the iterator is equivalent to an empty iterator
-     * until {@link #setArray(Object)} is  called to establish the array to iterate over.
-     */
-    public ArrayListIterator() {
-        super();
-    }
-
-    /**
-     * Constructs an ArrayListIterator that will iterate over the values in the
-     * specified array.
-     *
-     * @param array the array to iterate over
-     * @throws IllegalArgumentException if <code>array</code> is not an array.
-     * @throws NullPointerException if <code>array</code> is <code>null</code>
-     */
-    public ArrayListIterator(Object array) {
-        super(array);
-    }
-
-    /**
-     * Constructs an ArrayListIterator that will iterate over the values in the
-     * specified array from a specific start index.
-     *
-     * @param array  the array to iterate over
-     * @param startIndex  the index to start iterating at
-     * @throws IllegalArgumentException if <code>array</code> is not an array.
-     * @throws NullPointerException if <code>array</code> is <code>null</code>
-     * @throws IndexOutOfBoundsException if the start index is out of bounds
-     */
-    public ArrayListIterator(Object array, int startIndex) {
-        super(array, startIndex);
-        this.startIndex = startIndex;
-    }
-
-    /**
-     * Construct an ArrayListIterator that will iterate over a range of values 
-     * in the specified array.
-     *
-     * @param array  the array to iterate over
-     * @param startIndex  the index to start iterating at
-     * @param endIndex  the index (exclusive) to finish iterating at
-     * @throws IllegalArgumentException if <code>array</code> is not an array.
-     * @throws IndexOutOfBoundsException if the start or end index is out of bounds
-     * @throws IllegalArgumentException if end index is before the start
-     * @throws NullPointerException if <code>array</code> is <code>null</code>
-     */
-    public ArrayListIterator(Object array, int startIndex, int endIndex) {
-        super(array, startIndex, endIndex);
-        this.startIndex = startIndex;
-    }
-
-    // ListIterator interface
-    //-----------------------------------------------------------------------
-    /**
-     * Returns true if there are previous elements to return from the array.
-     *
-     * @return true if there is a previous element to return
-     */
-    public boolean hasPrevious() {
-        return (this.index > this.startIndex);
-    }
-
-    /**
-     * Gets the previous element from the array.
-     * 
-     * @return the previous element
-     * @throws NoSuchElementException if there is no previous element
-     */
-    public Object previous() {
-        if (hasPrevious() == false) {
-            throw new NoSuchElementException();
-        }
-        this.lastItemIndex = --this.index;
-        return Array.get(this.array, this.index);
-    }
-
-    /**
-     * Gets the next element from the array.
-     * 
-     * @return the next element
-     * @throws NoSuchElementException if there is no next element
-     */
-    public Object next() {
-        if (hasNext() == false) {
-            throw new NoSuchElementException();
-        }
-        this.lastItemIndex = this.index;
-        return Array.get(this.array, this.index++);
-    }
-
-    /**
-     * Gets the next index to be retrieved.
-     * 
-     * @return the index of the item to be retrieved next
-     */
-    public int nextIndex() {
-        return this.index - this.startIndex;
-    }
-
-    /**
-     * Gets the index of the item to be retrieved if {@link #previous()} is called.
-     * 
-     * @return the index of the item to be retrieved next
-     */
-    public int previousIndex() {
-        return this.index - this.startIndex - 1;
-    }
-
-    /**
-     * This iterator does not support modification of its backing collection, and so will
-     * always throw an {@link UnsupportedOperationException} when this method is invoked.
-     *
-     * @throws UnsupportedOperationException always thrown.
-     * @see java.util.ListIterator#set
-     */
-    public void add(Object o) {
-        throw new UnsupportedOperationException("add() method is not supported");
-    }
-
-    /**
-     * Sets the element under the cursor.
-     * <p>
-     * This method sets the element that was returned by the last call 
-     * to {@link #next()} of {@link #previous()}. 
-     * <p>
-     * <b>Note:</b> {@link ListIterator} implementations that support
-     * <code>add()</code> and <code>remove()</code> only allow <code>set()</code> to be called
-     * once per call to <code>next()</code> or <code>previous</code> (see the {@link ListIterator}
-     * javadoc for more details). Since this implementation does
-     * not support <code>add()</code> or <code>remove()</code>, <code>set()</code> may be
-     * called as often as desired.
-     *
-     * @see java.util.ListIterator#set
-     */
-    public void set(Object o) {
-        if (this.lastItemIndex == -1) {
-            throw new IllegalStateException("must call next() or previous() before a call to set()");
-        }
-
-        Array.set(this.array, this.lastItemIndex, o);
-    }
-
-    /**
-     * Resets the iterator back to the start index.
-     */
-    public void reset() {
-        super.reset();
-        this.lastItemIndex = -1;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/CollatingIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/CollatingIterator.java
deleted file mode 100755
index 6a18634..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/CollatingIterator.java
+++ /dev/null
@@ -1,370 +0,0 @@
-/*
- *  Copyright 1999-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-
-import org.apache.commons.collections.list.UnmodifiableList;
-
-/**
- * Provides an ordered iteration over the elements contained in
- * a collection of ordered Iterators.
- * <p>
- * Given two ordered {@link Iterator} instances <code>A</code> and <code>B</code>,
- * the {@link #next} method on this iterator will return the lesser of 
- * <code>A.next()</code> and <code>B.next()</code>.
- *
- * @since Commons Collections 2.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Rodney Waldhoff
- * @author Stephen Colebourne
- */
-public class CollatingIterator implements Iterator {
-
-    /** The {@link Comparator} used to evaluate order. */
-    private Comparator comparator = null;
-
-    /** The list of {@link Iterator}s to evaluate. */
-    private ArrayList iterators = null;
-   
-    /** {@link Iterator#next Next} objects peeked from each iterator. */
-    private ArrayList values = null;
-    
-    /** Whether or not each {@link #values} element has been set. */
-    private BitSet valueSet = null;
-
-    /** Index of the {@link #iterators iterator} from whom the last returned value was obtained. */
-    private int lastReturned = -1;
-
-    // Constructors
-    // ----------------------------------------------------------------------
-    /**
-     * Constructs a new <code>CollatingIterator</code>.  Natural sort order
-     * will be used, and child iterators will have to be manually added 
-     * using the {@link #addIterator(Iterator)} method.
-     */
-    public CollatingIterator() {
-        this(null,2);
-    }
-    
-    /**
-     * Constructs a new <code>CollatingIterator</code> that will used the
-     * specified comparator for ordering.  Child iterators will have to be 
-     * manually added using the {@link #addIterator(Iterator)} method.
-     *
-     * @param comp  the comparator to use to sort, or null to use natural sort order
-     */
-    public CollatingIterator(final Comparator comp) {
-        this(comp,2);
-    }
-    
-    /**
-     * Constructs a new <code>CollatingIterator</code> that will used the
-     * specified comparator for ordering and have the specified initial
-     * capacity.  Child iterators will have to be 
-     * manually added using the {@link #addIterator(Iterator)} method.
-     *
-     * @param comp  the comparator to use to sort, or null to use natural sort order
-     * @param initIterCapacity  the initial capacity for the internal list
-     *    of child iterators
-     */
-    public CollatingIterator(final Comparator comp, final int initIterCapacity) {
-        iterators = new ArrayList(initIterCapacity);
-        setComparator(comp);
-    }
-
-    /**
-     * Constructs a new <code>CollatingIterator</code> that will use the
-     * specified comparator to provide ordered iteration over the two
-     * given iterators.
-     *
-     * @param comp  the comparator to use to sort, or null to use natural sort order
-     * @param a  the first child ordered iterator
-     * @param b  the second child ordered iterator
-     * @throws NullPointerException if either iterator is null
-     */
-    public CollatingIterator(final Comparator comp, final Iterator a, final Iterator b) {
-        this(comp,2);
-        addIterator(a);
-        addIterator(b);
-    }
-
-    /**
-     * Constructs a new <code>CollatingIterator</code> that will use the
-     * specified comparator to provide ordered iteration over the array
-     * of iterators.
-     *
-     * @param comp  the comparator to use to sort, or null to use natural sort order
-     * @param iterators  the array of iterators
-     * @throws NullPointerException if iterators array is or contains null
-     */
-    public CollatingIterator(final Comparator comp, final Iterator[] iterators) {
-        this(comp, iterators.length);
-        for (int i = 0; i < iterators.length; i++) {
-            addIterator(iterators[i]);
-        }
-    }
-
-    /**
-     * Constructs a new <code>CollatingIterator</code> that will use the
-     * specified comparator to provide ordered iteration over the collection
-     * of iterators.
-     *
-     * @param comp  the comparator to use to sort, or null to use natural sort order
-     * @param iterators  the collection of iterators
-     * @throws NullPointerException if the iterators collection is or contains null
-     * @throws ClassCastException if the iterators collection contains an
-     *         element that's not an {@link Iterator}
-     */
-    public CollatingIterator(final Comparator comp, final Collection iterators) {
-        this(comp, iterators.size());
-        for (Iterator it = iterators.iterator(); it.hasNext();) {
-            Iterator item = (Iterator) it.next();
-            addIterator(item);
-        }
-    }
-
-    // Public Methods
-    // ----------------------------------------------------------------------
-    /**
-     * Adds the given {@link Iterator} to the iterators being collated.
-     * 
-     * @param iterator  the iterator to add to the collation, must not be null
-     * @throws IllegalStateException if iteration has started
-     * @throws NullPointerException if the iterator is null
-     */
-    public void addIterator(final Iterator iterator) {
-        checkNotStarted();
-        if (iterator == null) {
-            throw new NullPointerException("Iterator must not be null");
-        }
-        iterators.add(iterator);
-    }
-
-    /**
-     * Sets the iterator at the given index.
-     * 
-     * @param index  index of the Iterator to replace
-     * @param iterator  Iterator to place at the given index
-     * @throws IndexOutOfBoundsException if index &lt; 0 or index &gt; size()
-     * @throws IllegalStateException if iteration has started
-     * @throws NullPointerException if the iterator is null
-     */
-    public void setIterator(final int index, final Iterator iterator) {
-        checkNotStarted();
-        if (iterator == null) {
-            throw new NullPointerException("Iterator must not be null");
-        }
-        iterators.set(index, iterator);
-    }
-
-    /**
-     * Gets the list of Iterators (unmodifiable).
-     * 
-     * @return the unmodifiable list of iterators added
-     */
-    public List getIterators() {
-        return UnmodifiableList.decorate(iterators);
-    }
-
-    /**
-     * Gets the {@link Comparator} by which collatation occurs.
-     */
-    public Comparator getComparator() {
-        return comparator;
-    }
-
-    /**
-     * Sets the {@link Comparator} by which collation occurs.
-     * 
-     * @throws IllegalStateException if iteration has started
-     */
-    public void setComparator(final Comparator comp) {
-        checkNotStarted();
-        comparator = comp;
-    }
-
-    // Iterator Methods
-    // -------------------------------------------------------------------
-    /**
-     * Returns <code>true</code> if any child iterator has remaining elements.
-     *
-     * @return true if this iterator has remaining elements
-     */
-    public boolean hasNext() {
-        start();
-        return anyValueSet(valueSet) || anyHasNext(iterators);
-    }
-
-    /**
-     * Returns the next ordered element from a child iterator.
-     *
-     * @return the next ordered element
-     * @throws NoSuchElementException if no child iterator has any more elements
-     */
-    public Object next() throws NoSuchElementException {
-        if (hasNext() == false) {
-            throw new NoSuchElementException();
-        }
-        int leastIndex = least();
-        if (leastIndex == -1) {
-            throw new NoSuchElementException();
-        } else {
-            Object val = values.get(leastIndex);
-            clear(leastIndex);
-            lastReturned = leastIndex;
-            return val;
-        }
-    }
-
-    /**
-     * Removes the last returned element from the child iterator that 
-     * produced it.
-     *
-     * @throws IllegalStateException if there is no last returned element,
-     *  or if the last returned element has already been removed
-     */
-    public void remove() {
-        if (lastReturned == -1) {
-            throw new IllegalStateException("No value can be removed at present");
-        }
-        Iterator it = (Iterator) (iterators.get(lastReturned));
-        it.remove();
-    }
-
-    // Private Methods
-    // -------------------------------------------------------------------
-    /** 
-     * Initializes the collating state if it hasn't been already.
-     */
-    private void start() {
-        if (values == null) {
-            values = new ArrayList(iterators.size());
-            valueSet = new BitSet(iterators.size());
-            for (int i = 0; i < iterators.size(); i++) {
-                values.add(null);
-                valueSet.clear(i);
-            }
-        }
-    }
-
-    /** 
-     * Sets the {@link #values} and {@link #valueSet} attributes 
-     * at position <i>i</i> to the next value of the 
-     * {@link #iterators iterator} at position <i>i</i>, or 
-     * clear them if the <i>i</i><sup>th</sup> iterator
-     * has no next value.
-     *
-     * @return <tt>false</tt> iff there was no value to set
-     */
-    private boolean set(int i) {
-        Iterator it = (Iterator)(iterators.get(i));
-        if (it.hasNext()) {
-            values.set(i, it.next());
-            valueSet.set(i);
-            return true;
-        } else {
-            values.set(i,null);
-            valueSet.clear(i);
-            return false;
-        }
-    }
-
-    /** 
-     * Clears the {@link #values} and {@link #valueSet} attributes 
-     * at position <i>i</i>.
-     */
-    private void clear(int i) {
-        values.set(i,null);
-        valueSet.clear(i);
-    }
-
-    /** 
-     * Throws {@link IllegalStateException} if iteration has started 
-     * via {@link #start}.
-     * 
-     * @throws IllegalStateException if iteration started
-     */
-    private void checkNotStarted() throws IllegalStateException {
-        if (values != null) {
-            throw new IllegalStateException("Can't do that after next or hasNext has been called.");
-        }
-    }
-
-    /** 
-     * Returns the index of the least element in {@link #values},
-     * {@link #set(int) setting} any uninitialized values.
-     * 
-     * @throws IllegalStateException
-     */
-    private int least() {
-        int leastIndex = -1;
-        Object leastObject = null;                
-        for (int i = 0; i < values.size(); i++) {
-            if (valueSet.get(i) == false) {
-                set(i);
-            }
-            if (valueSet.get(i)) {
-                if (leastIndex == -1) {
-                    leastIndex = i;
-                    leastObject = values.get(i);
-                } else {
-                    Object curObject = values.get(i);
-                    if (comparator.compare(curObject,leastObject) < 0) {
-                        leastObject = curObject;
-                        leastIndex = i;
-                    }
-                }
-            }
-        }
-        return leastIndex;
-    }
-
-    /**
-     * Returns <code>true</code> iff any bit in the given set is 
-     * <code>true</code>.
-     */
-    private boolean anyValueSet(BitSet set) {
-        for (int i = 0; i < set.size(); i++) {
-            if (set.get(i)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Returns <code>true</code> iff any {@link Iterator} 
-     * in the given list has a next value.
-     */
-    private boolean anyHasNext(ArrayList iters) {
-        for (int i = 0; i < iters.size(); i++) {
-            Iterator it = (Iterator) iters.get(i);
-            if (it.hasNext()) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/EmptyIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/EmptyIterator.java
deleted file mode 100755
index 19402b8..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/EmptyIterator.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- *  Copyright 2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.Iterator;
-
-import org.apache.commons.collections.ResettableIterator;
-
-/** 
- * Provides an implementation of an empty iterator.
- * <p>
- * This class provides an implementation of an empty iterator.
- * This class provides for binary compatability between Commons Collections
- * 2.1.1 and 3.1 due to issues with <code>IteratorUtils</code>.
- *
- * @since Commons Collections 2.1.1 and 3.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Stephen Colebourne
- */
-public class EmptyIterator extends AbstractEmptyIterator implements ResettableIterator {
-
-    /**
-     * Singleton instance of the iterator.
-     * @since Commons Collections 3.1
-     */
-    public static final ResettableIterator RESETTABLE_INSTANCE = new EmptyIterator();
-    /**
-     * Singleton instance of the iterator.
-     * @since Commons Collections 2.1.1 and 3.1
-     */
-    public static final Iterator INSTANCE = RESETTABLE_INSTANCE;
-
-    /**
-     * Constructor.
-     */
-    protected EmptyIterator() {
-        super();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/EmptyListIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/EmptyListIterator.java
deleted file mode 100755
index 7118229..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/EmptyListIterator.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- *  Copyright 2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.ListIterator;
-
-import org.apache.commons.collections.ResettableListIterator;
-
-/** 
- * Provides an implementation of an empty list iterator.
- * <p>
- * This class provides an implementation of an empty list iterator.
- * This class provides for binary compatability between Commons Collections
- * 2.1.1 and 3.1 due to issues with <code>IteratorUtils</code>.
- *
- * @since Commons Collections 2.1.1 and 3.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Stephen Colebourne
- */
-public class EmptyListIterator extends AbstractEmptyIterator implements ResettableListIterator {
-
-    /**
-     * Singleton instance of the iterator.
-     * @since Commons Collections 3.1
-     */
-    public static final ResettableListIterator RESETTABLE_INSTANCE = new EmptyListIterator();
-    /**
-     * Singleton instance of the iterator.
-     * @since Commons Collections 2.1.1 and 3.1
-     */
-    public static final ListIterator INSTANCE = RESETTABLE_INSTANCE;
-
-    /**
-     * Constructor.
-     */
-    protected EmptyListIterator() {
-        super();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/EmptyMapIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/EmptyMapIterator.java
deleted file mode 100755
index 548793b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/EmptyMapIterator.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- *  Copyright 2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.ResettableIterator;
-
-/** 
- * Provides an implementation of an empty map iterator.
- *
- * @since Commons Collections 3.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Stephen Colebourne
- */
-public class EmptyMapIterator extends AbstractEmptyIterator implements MapIterator, ResettableIterator {
-
-    /**
-     * Singleton instance of the iterator.
-     * @since Commons Collections 3.1
-     */
-    public static final MapIterator INSTANCE = new EmptyMapIterator();
-
-    /**
-     * Constructor.
-     */
-    protected EmptyMapIterator() {
-        super();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/EmptyOrderedIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/EmptyOrderedIterator.java
deleted file mode 100755
index 76b3a7f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/EmptyOrderedIterator.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- *  Copyright 2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import org.apache.commons.collections.OrderedIterator;
-import org.apache.commons.collections.ResettableIterator;
-
-/** 
- * Provides an implementation of an empty ordered iterator.
- *
- * @since Commons Collections 3.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Stephen Colebourne
- */
-public class EmptyOrderedIterator extends AbstractEmptyIterator implements OrderedIterator, ResettableIterator {
-
-    /**
-     * Singleton instance of the iterator.
-     * @since Commons Collections 3.1
-     */
-    public static final OrderedIterator INSTANCE = new EmptyOrderedIterator();
-
-    /**
-     * Constructor.
-     */
-    protected EmptyOrderedIterator() {
-        super();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/EmptyOrderedMapIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/EmptyOrderedMapIterator.java
deleted file mode 100755
index 8da1efa..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/EmptyOrderedMapIterator.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- *  Copyright 2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import org.apache.commons.collections.OrderedMapIterator;
-import org.apache.commons.collections.ResettableIterator;
-
-/** 
- * Provides an implementation of an empty ordered map iterator.
- *
- * @since Commons Collections 3.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Stephen Colebourne
- */
-public class EmptyOrderedMapIterator extends AbstractEmptyIterator implements OrderedMapIterator, ResettableIterator {
-
-    /**
-     * Singleton instance of the iterator.
-     * @since Commons Collections 3.1
-     */
-    public static final OrderedMapIterator INSTANCE = new EmptyOrderedMapIterator();
-
-    /**
-     * Constructor.
-     */
-    protected EmptyOrderedMapIterator() {
-        super();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/EntrySetMapIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/EntrySetMapIterator.java
deleted file mode 100755
index a138a4d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/EntrySetMapIterator.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- *  Copyright 2001-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.ResettableIterator;
-
-/**
- * Implements a <code>MapIterator</code> using a Map entrySet.
- * Reverse iteration is not supported.
- * <pre>
- * MapIterator it = map.mapIterator();
- * while (it.hasNext()) {
- *   Object key = it.next();
- *   Object value = it.getValue();
- *   it.setValue(newValue);
- * }
- * </pre>
- *  
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- *
- * @author Stephen Colebourne
- */
-public class EntrySetMapIterator implements MapIterator, ResettableIterator {
-    
-    private final Map map;
-    private Iterator iterator;
-    private Map.Entry last;
-    private boolean canRemove = false;
-    
-    /**
-     * Constructor.
-     * 
-     * @param map  the map to iterate over
-     */
-    public EntrySetMapIterator(Map map) {
-        super();
-        this.map = map;
-        this.iterator = map.entrySet().iterator();
-    }
-
-    //-----------------------------------------------------------------------    
-    /**
-     * Checks to see if there are more entries still to be iterated.
-     *
-     * @return <code>true</code> if the iterator has more elements
-     */
-    public boolean hasNext() {
-        return iterator.hasNext();
-    }
-
-    /**
-     * Gets the next <em>key</em> from the <code>Map</code>.
-     *
-     * @return the next key in the iteration
-     * @throws java.util.NoSuchElementException if the iteration is finished
-     */
-    public Object next() {
-        last = (Map.Entry) iterator.next();
-        canRemove = true;
-        return last.getKey();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Removes the last returned key from the underlying <code>Map</code>.
-     * <p>
-     * This method can be called once per call to <code>next()</code>.
-     *
-     * @throws UnsupportedOperationException if remove is not supported by the map
-     * @throws IllegalStateException if <code>next()</code> has not yet been called
-     * @throws IllegalStateException if <code>remove()</code> has already been called
-     *  since the last call to <code>next()</code>
-     */
-    public void remove() {
-        if (canRemove == false) {
-            throw new IllegalStateException("Iterator remove() can only be called once after next()");
-        }
-        iterator.remove();
-        last = null;
-        canRemove = false;
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the current key, which is the key returned by the last call
-     * to <code>next()</code>.
-     *
-     * @return the current key
-     * @throws IllegalStateException if <code>next()</code> has not yet been called
-     */
-    public Object getKey() {
-        if (last == null) {
-            throw new IllegalStateException("Iterator getKey() can only be called after next() and before remove()");
-        }
-        return last.getKey();
-    }
-
-    /**
-     * Gets the current value, which is the value associated with the last key
-     * returned by <code>next()</code>.
-     *
-     * @return the current value
-     * @throws IllegalStateException if <code>next()</code> has not yet been called
-     */
-    public Object getValue() {
-        if (last == null) {
-            throw new IllegalStateException("Iterator getValue() can only be called after next() and before remove()");
-        }
-        return last.getValue();
-    }
-
-    /**
-     * Sets the value associated with the current key.
-     *
-     * @param value  the new value
-     * @return the previous value
-     * @throws UnsupportedOperationException if setValue is not supported by the map
-     * @throws IllegalStateException if <code>next()</code> has not yet been called
-     * @throws IllegalStateException if <code>remove()</code> has been called since the
-     *  last call to <code>next()</code>
-     */
-    public Object setValue(Object value) {
-        if (last == null) {
-            throw new IllegalStateException("Iterator setValue() can only be called after next() and before remove()");
-        }
-        return last.setValue(value);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Resets the state of the iterator.
-     */
-    public void reset() {
-        iterator = map.entrySet().iterator();
-        last = null;
-        canRemove = false;
-    }
-    
-    /**
-     * Gets the iterator as a String.
-     * 
-     * @return a string version of the iterator
-     */    
-    public String toString() {
-        if (last != null) {
-            return "MapIterator[" + getKey() + "=" + getValue() + "]";
-        } else {
-            return "MapIterator[]";
-        }
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/EnumerationIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/EnumerationIterator.java
deleted file mode 100755
index 2dd46f5..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/EnumerationIterator.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- *  Copyright 1999-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.Iterator;
-
-/** 
- * Adapter to make {@link Enumeration Enumeration} instances appear
- * to be {@link Iterator Iterator} instances.
- *
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @author <a href="mailto:dlr@finemaltcoding.com">Daniel Rall</a>
- */
-public class EnumerationIterator implements Iterator {
-    
-    /** The collection to remove elements from */
-    private Collection collection;
-    /** The enumeration being converted */
-    private Enumeration enumeration;
-    /** The last object retrieved */
-    private Object last;
-    
-    // Constructors
-    //-----------------------------------------------------------------------
-    /**
-     * Constructs a new <code>EnumerationIterator</code> that will not
-     * function until {@link #setEnumeration(Enumeration)} is called.
-     */
-    public EnumerationIterator() {
-        this(null, null);
-    }
-
-    /**
-     * Constructs a new <code>EnumerationIterator</code> that provides
-     * an iterator view of the given enumeration.
-     *
-     * @param enumeration  the enumeration to use
-     */
-    public EnumerationIterator(final Enumeration enumeration) {
-        this(enumeration, null);
-    }
-
-    /**
-     * Constructs a new <code>EnumerationIterator</code> that will remove
-     * elements from the specified collection.
-     *
-     * @param enumeration  the enumeration to use
-     * @param collection  the collection to remove elements form
-     */
-    public EnumerationIterator(final Enumeration enumeration, final Collection collection) {
-        super();
-        this.enumeration = enumeration;
-        this.collection = collection;
-        this.last = null;
-    }
-
-    // Iterator interface
-    //-----------------------------------------------------------------------
-    /**
-     * Returns true if the underlying enumeration has more elements.
-     *
-     * @return true if the underlying enumeration has more elements
-     * @throws NullPointerException  if the underlying enumeration is null
-     */
-    public boolean hasNext() {
-        return enumeration.hasMoreElements();
-    }
-
-    /**
-     * Returns the next object from the enumeration.
-     *
-     * @return the next object from the enumeration
-     * @throws NullPointerException if the enumeration is null
-     */
-    public Object next() {
-        last = enumeration.nextElement();
-        return last;
-    }
-
-    /**
-     * Removes the last retrieved element if a collection is attached.
-     * <p>
-     * Functions if an associated <code>Collection</code> is known.
-     * If so, the first occurrence of the last returned object from this
-     * iterator will be removed from the collection.
-     *
-     * @exception IllegalStateException <code>next()</code> not called.
-     * @exception UnsupportedOperationException if no associated collection
-     */
-    public void remove() {
-        if (collection != null) {
-            if (last != null) {
-                collection.remove(last);
-            } else {
-                throw new IllegalStateException("next() must have been called for remove() to function");
-            }
-        } else {
-            throw new UnsupportedOperationException("No Collection associated with this Iterator");
-        }
-    }
-
-    // Properties
-    //-----------------------------------------------------------------------
-    /**
-     * Returns the underlying enumeration.
-     *
-     * @return the underlying enumeration
-     */
-    public Enumeration getEnumeration() {
-        return enumeration;
-    }
-
-    /**
-     * Sets the underlying enumeration.
-     *
-     * @param enumeration  the new underlying enumeration
-     */
-    public void setEnumeration(final Enumeration enumeration) {
-        this.enumeration = enumeration;
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/FilterIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/FilterIterator.java
deleted file mode 100755
index 0745665..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/FilterIterator.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- *  Copyright 1999-2004,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.commons.collections.iterators;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import org.apache.commons.collections.Predicate;
-
-/** 
- * Decorates another {@link Iterator} using a predicate to filter elements.
- * <p>
- * This iterator decorates the underlying iterator, only allowing through
- * those elements that match the specified {@link Predicate Predicate}.
- *
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author James Strachan
- * @author Jan Sorensen
- * @author Ralph Wagner
- * @author Stephen Colebourne
- */
-public class FilterIterator implements Iterator {
-
-    /** The iterator being used */
-    private Iterator iterator;
-    /** The predicate being used */
-    private Predicate predicate;
-    /** The next object in the iteration */
-    private Object nextObject;
-    /** Whether the next object has been calculated yet */
-    private boolean nextObjectSet = false;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructs a new <code>FilterIterator</code> that will not function
-     * until {@link #setIterator(Iterator) setIterator} is invoked.
-     */
-    public FilterIterator() {
-        super();
-    }
-
-    /**
-     * Constructs a new <code>FilterIterator</code> that will not function
-     * until {@link #setPredicate(Predicate) setPredicate} is invoked.
-     *
-     * @param iterator  the iterator to use
-     */
-    public FilterIterator(Iterator iterator) {
-        super();
-        this.iterator = iterator;
-    }
-
-    /**
-     * Constructs a new <code>FilterIterator</code> that will use the
-     * given iterator and predicate.
-     *
-     * @param iterator  the iterator to use
-     * @param predicate  the predicate to use
-     */
-    public FilterIterator(Iterator iterator, Predicate predicate) {
-        super();
-        this.iterator = iterator;
-        this.predicate = predicate;
-    }
-
-    //-----------------------------------------------------------------------
-    /** 
-     * Returns true if the underlying iterator contains an object that 
-     * matches the predicate.
-     *
-     * @return true if there is another object that matches the predicate
-     * @throws NullPointerException if either the iterator or predicate are null
-     */
-    public boolean hasNext() {
-        if (nextObjectSet) {
-            return true;
-        } else {
-            return setNextObject();
-        }
-    }
-
-    /** 
-     * Returns the next object that matches the predicate.
-     *
-     * @return the next object which matches the given predicate
-     * @throws NullPointerException if either the iterator or predicate are null
-     * @throws NoSuchElementException if there are no more elements that
-     *  match the predicate 
-     */
-    public Object next() {
-        if (!nextObjectSet) {
-            if (!setNextObject()) {
-                throw new NoSuchElementException();
-            }
-        }
-        nextObjectSet = false;
-        return nextObject;
-    }
-
-    /**
-     * Removes from the underlying collection of the base iterator the last
-     * element returned by this iterator.
-     * This method can only be called
-     * if <code>next()</code> was called, but not after
-     * <code>hasNext()</code>, because the <code>hasNext()</code> call
-     * changes the base iterator.
-     *
-     * @throws IllegalStateException if <code>hasNext()</code> has already
-     *  been called.
-     */
-    public void remove() {
-        if (nextObjectSet) {
-            throw new IllegalStateException("remove() cannot be called");
-        }
-        iterator.remove();
-    }
-
-    //-----------------------------------------------------------------------
-    /** 
-     * Gets the iterator this iterator is using.
-     *
-     * @return the iterator
-     */
-    public Iterator getIterator() {
-        return iterator;
-    }
-
-    /** 
-     * Sets the iterator for this iterator to use.
-     * If iteration has started, this effectively resets the iterator.
-     *
-     * @param iterator  the iterator to use
-     */
-    public void setIterator(Iterator iterator) {
-        this.iterator = iterator;
-        nextObject = null;
-        nextObjectSet = false;
-    }
-
-    //-----------------------------------------------------------------------
-    /** 
-     * Gets the predicate this iterator is using.
-     *
-     * @return the predicate
-     */
-    public Predicate getPredicate() {
-        return predicate;
-    }
-
-    /** 
-     * Sets the predicate this the iterator to use.
-     *
-     * @param predicate  the predicate to use
-     */
-    public void setPredicate(Predicate predicate) {
-        this.predicate = predicate;
-        nextObject = null;
-        nextObjectSet = false;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Set nextObject to the next object. If there are no more 
-     * objects then return false. Otherwise, return true.
-     */
-    private boolean setNextObject() {
-        while (iterator.hasNext()) {
-            Object object = iterator.next();
-            if (predicate.evaluate(object)) {
-                nextObject = object;
-                nextObjectSet = true;
-                return true;
-            }
-        }
-        return false;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/FilterListIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/FilterListIterator.java
deleted file mode 100755
index 0332dd4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/FilterListIterator.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- *  Copyright 1999-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.ListIterator;
-import java.util.NoSuchElementException;
-
-import org.apache.commons.collections.Predicate;
-
-/** 
- * Decorates another {@link ListIterator} using a predicate to filter elements.
- * <p>
- * This iterator decorates the underlying iterator, only allowing through
- * those elements that match the specified {@link Predicate Predicate}.
- *
- * @since Commons Collections 2.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Rodney Waldhoff
- */
-public class FilterListIterator implements ListIterator {
-
-    /** The iterator being used */
-    private ListIterator iterator;
-    
-    /** The predicate being used */
-    private Predicate predicate;
-
-    /** 
-     * The value of the next (matching) object, when 
-     * {@link #nextObjectSet} is true. 
-     */
-    private Object nextObject;
-
-    /** 
-     * Whether or not the {@link #nextObject} has been set
-     * (possibly to <code>null</code>). 
-     */
-    private boolean nextObjectSet = false;   
-
-    /** 
-     * The value of the previous (matching) object, when 
-     * {@link #previousObjectSet} is true. 
-     */
-    private Object previousObject;
-
-    /** 
-     * Whether or not the {@link #previousObject} has been set
-     * (possibly to <code>null</code>). 
-     */
-    private boolean previousObjectSet = false;   
-
-    /** 
-     * The index of the element that would be returned by {@link #next}.
-     */
-    private int nextIndex = 0;
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructs a new <code>FilterListIterator</code> that will not function
-     * until {@link #setListIterator(ListIterator) setListIterator}
-     * and {@link #setPredicate(Predicate) setPredicate} are invoked.
-     */
-    public FilterListIterator() {
-        super();
-    }
-
-    /**
-     * Constructs a new <code>FilterListIterator</code> that will not 
-     * function until {@link #setPredicate(Predicate) setPredicate} is invoked.
-     *
-     * @param iterator  the iterator to use
-     */
-    public FilterListIterator(ListIterator iterator ) {
-        super();
-        this.iterator = iterator;
-    }
-
-    /**
-     * Constructs a new <code>FilterListIterator</code>.
-     *
-     * @param iterator  the iterator to use
-     * @param predicate  the predicate to use
-     */
-    public FilterListIterator(ListIterator iterator, Predicate predicate) {
-        super();
-        this.iterator = iterator;
-        this.predicate = predicate;
-    }
-
-    /**
-     * Constructs a new <code>FilterListIterator</code> that will not function
-     * until {@link #setListIterator(ListIterator) setListIterator} is invoked.
-     *
-     * @param predicate  the predicate to use.
-     */
-    public FilterListIterator(Predicate predicate) {
-        super();
-        this.predicate = predicate;
-    }
-
-    //-----------------------------------------------------------------------
-    /** Not supported. */
-    public void add(Object o) {
-        throw new UnsupportedOperationException("FilterListIterator.add(Object) is not supported.");
-    }
-
-    public boolean hasNext() {
-        if(nextObjectSet) {
-            return true;
-        } else {
-            return setNextObject();
-        }
-    }
-
-    public boolean hasPrevious() {
-        if(previousObjectSet) {
-            return true;
-        } else {
-            return setPreviousObject();
-        }
-    }
-
-    public Object next() {
-        if(!nextObjectSet) {
-            if(!setNextObject()) {
-                throw new NoSuchElementException();
-            }
-        }
-        nextIndex++;
-        Object temp = nextObject;
-        clearNextObject();
-        return temp;
-    }
-
-    public int nextIndex() {
-        return nextIndex;
-    }
-
-    public Object previous() {
-        if(!previousObjectSet) {
-            if(!setPreviousObject()) {
-                throw new NoSuchElementException();
-            }
-        }
-        nextIndex--;
-        Object temp = previousObject;
-        clearPreviousObject();
-        return temp;
-    }
-
-    public int previousIndex() {
-        return (nextIndex-1);
-    }
-
-    /** Not supported. */
-    public void remove() {
-        throw new UnsupportedOperationException("FilterListIterator.remove() is not supported.");
-    }
-
-    /** Not supported. */
-    public void set(Object o) {
-        throw new UnsupportedOperationException("FilterListIterator.set(Object) is not supported.");
-    }
-
-    //-----------------------------------------------------------------------
-    /** 
-     * Gets the iterator this iterator is using.
-     * 
-     * @return the iterator.
-     */
-    public ListIterator getListIterator() {
-        return iterator;
-    }
-
-    /** 
-     * Sets the iterator for this iterator to use.
-     * If iteration has started, this effectively resets the iterator.
-     * 
-     * @param iterator  the iterator to use
-     */
-    public void setListIterator(ListIterator iterator) {
-        this.iterator = iterator;
-    }
-
-    //-----------------------------------------------------------------------
-    /** 
-     * Gets the predicate this iterator is using.
-     * 
-     * @return the predicate.
-     */
-    public Predicate getPredicate() {
-        return predicate;
-    }
-
-    /** 
-     * Sets the predicate this the iterator to use.
-     * 
-     * @param predicate  the transformer to use
-     */
-    public void setPredicate(Predicate predicate) {
-        this.predicate = predicate;
-    }
-
-    //-----------------------------------------------------------------------
-    private void clearNextObject() {
-        nextObject = null;
-        nextObjectSet = false;
-    }
-
-    private boolean setNextObject() {
-        // if previousObjectSet,
-        // then we've walked back one step in the 
-        // underlying list (due to a hasPrevious() call)
-        // so skip ahead one matching object
-        if(previousObjectSet) {
-            clearPreviousObject();
-            if(!setNextObject()) {
-                return false;
-            } else {
-                clearNextObject();
-            }
-        }
-
-        while(iterator.hasNext()) {
-            Object object = iterator.next();
-            if(predicate.evaluate(object)) {
-                nextObject = object;
-                nextObjectSet = true;
-                return true;
-            }
-        }
-        return false;
-    }
-
-    private void clearPreviousObject() {
-        previousObject = null;
-        previousObjectSet = false;
-    }
-
-    private boolean setPreviousObject() {
-        // if nextObjectSet,
-        // then we've walked back one step in the 
-        // underlying list (due to a hasNext() call)
-        // so skip ahead one matching object
-        if(nextObjectSet) {
-            clearNextObject();
-            if(!setPreviousObject()) {
-                return false;
-            } else {
-                clearPreviousObject();
-            }
-        }
-
-        while(iterator.hasPrevious()) {
-            Object object = iterator.previous();
-            if(predicate.evaluate(object)) {
-                previousObject = object;
-                previousObjectSet = true;
-                return true;
-            }
-        }
-        return false;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/IteratorChain.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/IteratorChain.java
deleted file mode 100755
index 69812c4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/IteratorChain.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- *  Copyright 1999-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.commons.collections.list.UnmodifiableList;
-
-/**
- * An IteratorChain is an Iterator that wraps a number of Iterators.
- * <p>
- * This class makes multiple iterators look like one to the caller
- * When any method from the Iterator interface is called, the IteratorChain
- * will delegate to a single underlying Iterator. The IteratorChain will
- * invoke the Iterators in sequence until all Iterators are exhausted.
- * <p>
- * Under many circumstances, linking Iterators together in this manner is
- * more efficient (and convenient) than reading out the contents of each
- * Iterator into a List and creating a new Iterator.
- * <p>
- * Calling a method that adds new Iterator<i>after a method in the Iterator
- * interface has been called</i> will result in an UnsupportedOperationException.
- * Subclasses should <i>take care</i> to not alter the underlying List of Iterators.
- * <p>
- * NOTE: As from version 3.0, the IteratorChain may contain no
- * iterators. In this case the class will function as an empty iterator.
- *
- * @since Commons Collections 2.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- *
- * @author Morgan Delagrange
- * @author Stephen Colebourne
- */
-public class IteratorChain implements Iterator {
-
-	/** The chain of iterators */
-    protected final List iteratorChain = new ArrayList();
-    /** The index of the current iterator */
-    protected int currentIteratorIndex = 0;
-    /** The current iterator */
-    protected Iterator currentIterator = null;
-    /**
-     * The "last used" Iterator is the Iterator upon which
-     * next() or hasNext() was most recently called
-     * used for the remove() operation only
-     */
-    protected Iterator lastUsedIterator = null;
-    /**
-     * ComparatorChain is "locked" after the first time
-     * compare(Object,Object) is called
-     */
-    protected boolean isLocked = false;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Construct an IteratorChain with no Iterators.
-     * <p>
-     * You will normally use {@link #addIterator(Iterator)} to add
-     * some iterators after using this constructor.
-     */
-    public IteratorChain() {
-        super();
-    }
-
-    /**
-     * Construct an IteratorChain with a single Iterator.
-     *
-     * @param iterator first Iterator in the IteratorChain
-     * @throws NullPointerException if the iterator is null
-     */
-    public IteratorChain(Iterator iterator) {
-        super();
-        addIterator(iterator);
-    }
-
-    /**
-     * Constructs a new <code>IteratorChain</code> over the two
-     * given iterators.
-     *
-     * @param a  the first child iterator
-     * @param b  the second child iterator
-     * @throws NullPointerException if either iterator is null
-     */
-    public IteratorChain(Iterator a, Iterator b) {
-        super();
-        addIterator(a);
-        addIterator(b);
-    }
-
-    /**
-     * Constructs a new <code>IteratorChain</code> over the array
-     * of iterators.
-     *
-     * @param iterators  the array of iterators
-     * @throws NullPointerException if iterators array is or contains null
-     */
-    public IteratorChain(Iterator[] iterators) {
-        super();
-        for (int i = 0; i < iterators.length; i++) {
-            addIterator(iterators[i]);
-        }
-    }
-
-    /**
-     * Constructs a new <code>IteratorChain</code> over the collection
-     * of iterators.
-     *
-     * @param iterators  the collection of iterators
-     * @throws NullPointerException if iterators collection is or contains null
-     * @throws ClassCastException if iterators collection doesn't contain an iterator
-     */
-    public IteratorChain(Collection iterators) {
-        super();
-        for (Iterator it = iterators.iterator(); it.hasNext();) {
-            Iterator item = (Iterator) it.next();
-            addIterator(item);
-        }
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Add an Iterator to the end of the chain
-     *
-     * @param iterator Iterator to add
-     * @throws IllegalStateException if I've already started iterating
-     * @throws NullPointerException if the iterator is null
-     */
-    public void addIterator(Iterator iterator) {
-        checkLocked();
-        if (iterator == null) {
-            throw new NullPointerException("Iterator must not be null");
-        }
-        iteratorChain.add(iterator);
-    }
-
-    /**
-     * Set the Iterator at the given index
-     *
-     * @param index      index of the Iterator to replace
-     * @param iterator   Iterator to place at the given index
-     * @throws IndexOutOfBoundsException if index &lt; 0 or index &gt; size()
-     * @throws IllegalStateException if I've already started iterating
-     * @throws NullPointerException if the iterator is null
-     */
-    public void setIterator(int index, Iterator iterator) throws IndexOutOfBoundsException {
-        checkLocked();
-        if (iterator == null) {
-            throw new NullPointerException("Iterator must not be null");
-        }
-        iteratorChain.set(index, iterator);
-    }
-
-    /**
-     * Get the list of Iterators (unmodifiable)
-     *
-     * @return the unmodifiable list of iterators added
-     */
-    public List getIterators() {
-        return UnmodifiableList.decorate(iteratorChain);
-    }
-
-    /**
-     * Number of Iterators in the current IteratorChain.
-     *
-     * @return Iterator count
-     */
-    public int size() {
-        return iteratorChain.size();
-    }
-
-    /**
-     * Determine if modifications can still be made to the IteratorChain.
-     * IteratorChains cannot be modified once they have executed a method
-     * from the Iterator interface.
-     *
-     * @return true if IteratorChain cannot be modified, false if it can
-     */
-    public boolean isLocked() {
-        return isLocked;
-    }
-
-    /**
-     * Checks whether the iterator chain is now locked and in use.
-     */
-    private void checkLocked() {
-        if (isLocked == true) {
-            throw new UnsupportedOperationException("IteratorChain cannot be changed after the first use of a method from the Iterator interface");
-        }
-    }
-
-    /**
-     * Lock the chain so no more iterators can be added.
-     * This must be called from all Iterator interface methods.
-     */
-    private void lockChain() {
-        if (isLocked == false) {
-            isLocked = true;
-        }
-    }
-
-    /**
-     * Updates the current iterator field to ensure that the current Iterator
-     * is not exhausted
-     */
-    protected void updateCurrentIterator() {
-        if (currentIterator == null) {
-            if (iteratorChain.isEmpty()) {
-                currentIterator = EmptyIterator.INSTANCE;
-            } else {
-                currentIterator = (Iterator) iteratorChain.get(0);
-            }
-            // set last used iterator here, in case the user calls remove
-            // before calling hasNext() or next() (although they shouldn't)
-            lastUsedIterator = currentIterator;
-        }
-
-        while (currentIterator.hasNext() == false && currentIteratorIndex < iteratorChain.size() - 1) {
-            currentIteratorIndex++;
-            currentIterator = (Iterator) iteratorChain.get(currentIteratorIndex);
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Return true if any Iterator in the IteratorChain has a remaining element.
-     *
-     * @return true if elements remain
-     */
-    public boolean hasNext() {
-        lockChain();
-        updateCurrentIterator();
-        lastUsedIterator = currentIterator;
-
-        return currentIterator.hasNext();
-    }
-
-    /**
-     * Returns the next Object of the current Iterator
-     *
-     * @return Object from the current Iterator
-     * @throws java.util.NoSuchElementException if all the Iterators are exhausted
-     */
-    public Object next() {
-        lockChain();
-        updateCurrentIterator();
-        lastUsedIterator = currentIterator;
-
-        return currentIterator.next();
-    }
-
-    /**
-     * Removes from the underlying collection the last element
-     * returned by the Iterator.  As with next() and hasNext(),
-     * this method calls remove() on the underlying Iterator.
-     * Therefore, this method may throw an
-     * UnsupportedOperationException if the underlying
-     * Iterator does not support this method.
-     *
-     * @throws UnsupportedOperationException
-     *   if the remove operator is not supported by the underlying Iterator
-     * @throws IllegalStateException
-     *   if the next method has not yet been called, or the remove method has
-     *   already been called after the last call to the next method.
-     */
-    public void remove() {
-        lockChain();
-        if (currentIterator == null) {
-            updateCurrentIterator();
-        }
-        lastUsedIterator.remove();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/IteratorEnumeration.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/IteratorEnumeration.java
deleted file mode 100755
index 4eba033..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/IteratorEnumeration.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- *  Copyright 1999-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.Enumeration;
-import java.util.Iterator;
-
-/** 
- * Adapter to make an {@link Iterator Iterator} instance appear to be
- * an {@link Enumeration Enumeration} instance.
- *
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- */
-public class IteratorEnumeration implements Enumeration {
-    
-    /** The iterator being decorated. */
-    private Iterator iterator;
-    
-    /**
-     * Constructs a new <code>IteratorEnumeration</code> that will not 
-     * function until {@link #setIterator(Iterator) setIterator} is  
-     * invoked.
-     */
-    public IteratorEnumeration() {
-        super();
-    }
-
-    /**
-     * Constructs a new <code>IteratorEnumeration</code> that will use
-     * the given iterator. 
-     * 
-     * @param iterator  the iterator to use
-     */
-    public IteratorEnumeration( Iterator iterator ) {
-        super();
-        this.iterator = iterator;
-    }
-
-    // Iterator interface
-    //-------------------------------------------------------------------------
-
-    /**
-     *  Returns true if the underlying iterator has more elements.
-     *
-     *  @return true if the underlying iterator has more elements
-     */
-    public boolean hasMoreElements() {
-        return iterator.hasNext();
-    }
-
-    /**
-     *  Returns the next element from the underlying iterator.
-     *
-     *  @return the next element from the underlying iterator.
-     *  @throws java.util.NoSuchElementException  if the underlying iterator has no
-     *    more elements
-     */
-    public Object nextElement() {
-        return iterator.next();
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     *  Returns the underlying iterator.
-     * 
-     *  @return the underlying iterator
-     */
-    public Iterator getIterator() {
-        return iterator;
-    }
-
-    /**
-     *  Sets the underlying iterator.
-     *
-     *  @param iterator  the new underlying iterator
-     */
-    public void setIterator( Iterator iterator ) {
-        this.iterator = iterator;
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ListIteratorWrapper.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ListIteratorWrapper.java
deleted file mode 100755
index 1f26d2d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ListIteratorWrapper.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- *  Copyright 1999-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.commons.collections.iterators;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-
-import org.apache.commons.collections.ResettableListIterator;
-
-/**
- * Converts an iterator into a list iterator by caching the returned entries.
- * <p>
- * The <code>ListIterator</code> interface has additional useful methods
- * for navigation - <code>previous()</code> and the index methods.
- * This class allows a regular <code>Iterator</code> to behave as a
- * <code>ListIterator</code>. It achieves this by building a list internally
- * of as the underlying iterator is traversed.
- * <p>
- * The optional operations of <code>ListIterator</code> are not supported.
- * <p>
- * This class implements ResettableListIterator from Commons Collections 3.2.
- *
- * @since Commons Collections 2.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- *
- * @author Morgan Delagrange
- * @author Stephen Colebourne
- */
-public class ListIteratorWrapper implements ResettableListIterator {
-
-    /** Message used when remove, set or add are called. */
-    private static final String UNSUPPORTED_OPERATION_MESSAGE =
-        "ListIteratorWrapper does not support optional operations of ListIterator.";
-
-    /** The underlying iterator being decorated. */
-    private final Iterator iterator;
-    /** The list being used to cache the iterator. */
-    private final List list = new ArrayList();
-
-    /** The current index of this iterator. */
-    private int currentIndex = 0;
-    /** The current index of the wrapped iterator. */
-    private int wrappedIteratorIndex = 0;
-
-    // Constructor
-    //-------------------------------------------------------------------------
-    /**
-     * Constructs a new <code>ListIteratorWrapper</code> that will wrap
-     * the given iterator.
-     *
-     * @param iterator  the iterator to wrap
-     * @throws NullPointerException if the iterator is null
-     */
-    public ListIteratorWrapper(Iterator iterator) {
-        super();
-        if (iterator == null) {
-            throw new NullPointerException("Iterator must not be null");
-        }
-        this.iterator = iterator;
-    }
-
-    // ListIterator interface
-    //-------------------------------------------------------------------------
-    /**
-     * Throws {@link UnsupportedOperationException}.
-     *
-     * @param obj  the object to add, ignored
-     * @throws UnsupportedOperationException always
-     */
-    public void add(Object obj) throws UnsupportedOperationException {
-        throw new UnsupportedOperationException(UNSUPPORTED_OPERATION_MESSAGE);
-    }
-
-    /**
-     * Returns true if there are more elements in the iterator.
-     *
-     * @return true if there are more elements
-     */
-    public boolean hasNext() {
-        if (currentIndex == wrappedIteratorIndex) {
-            return iterator.hasNext();
-        }
-        return true;
-    }
-
-    /**
-     * Returns true if there are previous elements in the iterator.
-     *
-     * @return true if there are previous elements
-     */
-    public boolean hasPrevious() {
-        if (currentIndex == 0) {
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * Returns the next element from the iterator.
-     *
-     * @return the next element from the iterator
-     * @throws NoSuchElementException if there are no more elements
-     */
-    public Object next() throws NoSuchElementException {
-        if (currentIndex < wrappedIteratorIndex) {
-            ++currentIndex;
-            return list.get(currentIndex - 1);
-        }
-
-        Object retval = iterator.next();
-        list.add(retval);
-        ++currentIndex;
-        ++wrappedIteratorIndex;
-        return retval;
-    }
-
-    /**
-     * Returns in the index of the next element.
-     *
-     * @return the index of the next element
-     */
-    public int nextIndex() {
-        return currentIndex;
-    }
-
-    /**
-     * Returns the the previous element.
-     *
-     * @return the previous element
-     * @throws NoSuchElementException  if there are no previous elements
-     */
-    public Object previous() throws NoSuchElementException {
-        if (currentIndex == 0) {
-            throw new NoSuchElementException();
-        }
-        --currentIndex;
-        return list.get(currentIndex);    
-    }
-
-    /**
-     * Returns the index of the previous element.
-     *
-     * @return  the index of the previous element
-     */
-    public int previousIndex() {
-        return currentIndex - 1;
-    }
-
-    /**
-     * Throws {@link UnsupportedOperationException}.
-     *
-     * @throws UnsupportedOperationException always
-     */
-    public void remove() throws UnsupportedOperationException {
-        throw new UnsupportedOperationException(UNSUPPORTED_OPERATION_MESSAGE);
-    }
-
-    /**
-     * Throws {@link UnsupportedOperationException}.
-     *
-     * @param obj  the object to set, ignored
-     * @throws UnsupportedOperationException always
-     */
-    public void set(Object obj) throws UnsupportedOperationException {
-        throw new UnsupportedOperationException(UNSUPPORTED_OPERATION_MESSAGE);
-    }
-
-    // ResettableIterator interface
-    //-------------------------------------------------------------------------
-    /**
-     * Resets this iterator back to the position at which the iterator
-     * was created.
-     *
-     * @since Commons Collections 3.2
-     */
-    public void reset()  {
-        currentIndex = 0;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/LoopingIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/LoopingIterator.java
deleted file mode 100755
index 0adbf1f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/LoopingIterator.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- *  Copyright 1999-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import org.apache.commons.collections.ResettableIterator;
-
-/**
- * An Iterator that restarts when it reaches the end.
- * <p>
- * The iterator will loop continuously around the provided elements, unless 
- * there are no elements in the collection to begin with, or all the elements
- * have been {@link #remove removed}.
- * <p>
- * Concurrent modifications are not directly supported, and for most collection
- * implementations will throw a ConcurrentModificationException. 
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- *
- * @author <a href="mailto:joncrlsn@users.sf.net">Jonathan Carlson</a>
- * @author Stephen Colebourne
- */
-public class LoopingIterator implements ResettableIterator {
-    
-    /** The collection to base the iterator on */
-    private Collection collection;
-    /** The current iterator */
-    private Iterator iterator;
-
-    /**
-     * Constructor that wraps a collection.
-     * <p>
-     * There is no way to reset an Iterator instance without recreating it from
-     * the original source, so the Collection must be passed in.
-     * 
-     * @param coll  the collection to wrap
-     * @throws NullPointerException if the collection is null
-     */
-    public LoopingIterator(Collection coll) {
-        if (coll == null) {
-            throw new NullPointerException("The collection must not be null");
-        }
-        collection = coll;
-        reset();
-    }
-
-    /** 
-     * Has the iterator any more elements.
-     * <p>
-     * Returns false only if the collection originally had zero elements, or
-     * all the elements have been {@link #remove removed}.
-     * 
-     * @return <code>true</code> if there are more elements
-     */
-    public boolean hasNext() {
-        return (collection.size() > 0);
-    }
-
-    /**
-     * Returns the next object in the collection.
-     * <p>
-     * If at the end of the collection, return the first element.
-     * 
-     * @throws NoSuchElementException if there are no elements
-     *         at all.  Use {@link #hasNext} to avoid this error.
-     */
-    public Object next() {
-        if (collection.size() == 0) {
-            throw new NoSuchElementException("There are no elements for this iterator to loop on");
-        }
-        if (iterator.hasNext() == false) {
-            reset();
-        }
-        return iterator.next();
-    }
-
-    /**
-     * Removes the previously retrieved item from the underlying collection.
-     * <p>
-     * This feature is only supported if the underlying collection's 
-     * {@link Collection#iterator iterator} method returns an implementation 
-     * that supports it.
-     * <p>
-     * This method can only be called after at least one {@link #next} method call.
-     * After a removal, the remove method may not be called again until another
-     * next has been performed. If the {@link #reset} is called, then remove may
-     * not be called until {@link #next} is called again.
-     */
-    public void remove() {
-        iterator.remove();
-    }
-
-    /**
-     * Resets the iterator back to the start of the collection.
-     */
-    public void reset() {
-        iterator = collection.iterator();
-    }
-
-    /**
-     * Gets the size of the collection underlying the iterator.
-     * 
-     * @return the current collection size
-     */
-    public int size() {
-        return collection.size();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/LoopingListIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/LoopingListIterator.java
deleted file mode 100755
index 2298a92..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/LoopingListIterator.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- *  Copyright 2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.List;
-import java.util.ListIterator;
-import java.util.NoSuchElementException;
-
-import org.apache.commons.collections.ResettableListIterator;
-
-/**
- * A ListIterator that restarts when it reaches the end or when it
- * reaches the beginning.
- * <p>
- * The iterator will loop continuously around the provided list,
- * unless there are no elements in the collection to begin with, or
- * all of the elements have been {@link #remove removed}.
- * <p>
- * Concurrent modifications are not directly supported, and for most
- * collection implementations will throw a
- * ConcurrentModificationException.
- *
- * @since Commons Collections 3.2
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- *
- * @author Eric Crampton <ccesc@eonomine.com>
- */
-public class LoopingListIterator implements ResettableListIterator {
-
-    /** The list to base the iterator on */
-    private List list;
-    /** The current list iterator */
-    private ListIterator iterator;
-
-    /**
-     * Constructor that wraps a list.
-     * <p>
-     * There is no way to reset a ListIterator instance without
-     * recreating it from the original source, so the List must be
-     * passed in and a reference to it held.
-     *
-     * @param list the list to wrap
-     * @throws NullPointerException if the list it null
-     */
-    public LoopingListIterator(List list) {
-        if (list == null) {
-            throw new NullPointerException("The list must not be null");
-        }
-        this.list = list;
-        reset();
-    }
-
-    /**
-     * Returns whether this iterator has any more elements.
-     * <p>
-     * Returns false only if the list originally had zero elements, or
-     * all elements have been {@link #remove removed}.
-     *
-     * @return <code>true</code> if there are more elements
-     */
-    public boolean hasNext() {
-        return !list.isEmpty();
-    }
-
-    /**
-     * Returns the next object in the list.
-     * <p>
-     * If at the end of the list, returns the first element.
-     *
-     * @return the object after the last element returned
-     * @throws NoSuchElementException if there are no elements in the list
-     */
-    public Object next() {
-        if (list.isEmpty()) {
-            throw new NoSuchElementException(
-                "There are no elements for this iterator to loop on");
-        }
-        if (iterator.hasNext() == false) {
-            reset();
-        }
-        return iterator.next();
-    }
-
-    /**
-     * Returns the index of the element that would be returned by a
-     * subsequent call to {@link #next}.
-     * <p>
-     * As would be expected, if the iterator is at the physical end of
-     * the underlying list, 0 is returned, signifying the beginning of
-     * the list.
-     *
-     * @return the index of the element that would be returned if next() were called
-     * @throws NoSuchElementException if there are no elements in the list
-     */
-    public int nextIndex() {
-        if (list.isEmpty()) {
-            throw new NoSuchElementException(
-                "There are no elements for this iterator to loop on");
-        }
-        if (iterator.hasNext() == false) {
-            return 0;
-        } else {
-            return iterator.nextIndex();
-        }
-    }
-
-    /**
-     * Returns whether this iterator has any more previous elements.
-     * <p>
-     * Returns false only if the list originally had zero elements, or
-     * all elements have been {@link #remove removed}.
-     *
-     * @return <code>true</code> if there are more elements
-     */
-    public boolean hasPrevious() {
-        return !list.isEmpty();
-    }
-
-    /**
-     * Returns the previous object in the list.
-     * <p>
-     * If at the beginning of the list, return the last element. Note
-     * that in this case, traversal to find that element takes linear time.
-     *
-     * @return the object before the last element returned
-     * @throws NoSuchElementException if there are no elements in the list
-     */
-    public Object previous() {
-        if (list.isEmpty()) {
-            throw new NoSuchElementException(
-                "There are no elements for this iterator to loop on");
-        }
-        if (iterator.hasPrevious() == false) {
-            Object result = null;
-            while (iterator.hasNext()) {
-                result = iterator.next();
-            }
-            iterator.previous();
-            return result;
-        } else {
-            return iterator.previous();
-        }
-    }
-
-    /**
-     * Returns the index of the element that would be returned by a
-     * subsequent call to {@link #previous}.
-     * <p>
-     * As would be expected, if at the iterator is at the physical
-     * beginning of the underlying list, the list's size minus one is
-     * returned, signifying the end of the list.
-     *
-     * @return the index of the element that would be returned if previous() were called
-     * @throws NoSuchElementException if there are no elements in the list
-     */
-    public int previousIndex() {
-        if (list.isEmpty()) {
-            throw new NoSuchElementException(
-                "There are no elements for this iterator to loop on");
-        }
-        if (iterator.hasPrevious() == false) {
-            return list.size() - 1;
-        } else {
-            return iterator.previousIndex();
-        }
-    }
-
-    /**
-     * Removes the previously retrieved item from the underlying list.
-     * <p>
-     * This feature is only supported if the underlying list's
-     * {@link List#iterator iterator} method returns an implementation
-     * that supports it.
-     * <p>
-     * This method can only be called after at least one {@link #next}
-     * or {@link #previous} method call. After a removal, the remove
-     * method may not be called again until another {@link #next} or
-     * {@link #previous} has been performed. If the {@link #reset} is
-     * called, then remove may not be called until {@link #next} or
-     * {@link #previous} is called again.
-     *
-     * @throws UnsupportedOperationException if the remove method is
-     * not supported by the iterator implementation of the underlying
-     * list
-     */
-    public void remove() {
-        iterator.remove();
-    }
-
-    /**
-     * Inserts the specified element into the underlying list.
-     * <p>
-     * The element is inserted before the next element that would be
-     * returned by {@link #next}, if any, and after the next element
-     * that would be returned by {@link #previous}, if any.
-     * <p>
-     * This feature is only supported if the underlying list's
-     * {@link List#listIterator} method returns an implementation
-     * that supports it.
-     *
-     * @param obj  the element to insert
-     * @throws UnsupportedOperationException if the add method is not
-     *  supported by the iterator implementation of the underlying list
-     */
-    public void add(Object obj) {
-        iterator.add(obj);
-    }
-
-    /**
-     * Replaces the last element that was returned by {@link #next} or
-     * {@link #previous}.
-     * <p>
-     * This feature is only supported if the underlying list's
-     * {@link List#listIterator} method returns an implementation
-     * that supports it.
-     *
-     * @param obj  the element with which to replace the last element returned
-     * @throws UnsupportedOperationException if the set method is not
-     *  supported by the iterator implementation of the underlying list
-     */
-    public void set(Object obj) {
-        iterator.set(obj);
-    }
-
-    /**
-     * Resets the iterator back to the start of the list.
-     */
-    public void reset() {
-        iterator = list.listIterator();
-    }
-
-    /**
-     * Gets the size of the list underlying the iterator.
-     *
-     * @return the current list size
-     */
-    public int size() {
-        return list.size();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ObjectArrayIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ObjectArrayIterator.java
deleted file mode 100755
index 68248ab..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ObjectArrayIterator.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- *  Copyright 1999-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import org.apache.commons.collections.ResettableIterator;
-
-/** 
- * An {@link Iterator} over an array of objects.
- * <p>
- * This iterator does not support {@link #remove}, as the object array cannot be
- * structurally modified.
- * <p>
- * The iterator implements a {@link #reset} method, allowing the reset of the iterator
- * back to the start if required.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author James Strachan
- * @author Mauricio S. Moura
- * @author Michael A. Smith
- * @author Neil O'Toole
- * @author Stephen Colebourne
- * @author Phil Steitz
- */
-public class ObjectArrayIterator
-        implements Iterator, ResettableIterator {
-
-    /** The array */
-    protected Object[] array = null;
-    /** The start index to loop from */
-    protected int startIndex = 0;
-    /** The end index to loop to */
-    protected int endIndex = 0;
-    /** The current iterator index */
-    protected int index = 0;
-
-    /**
-     * Constructor for use with <code>setArray</code>.
-     * <p>
-     * Using this constructor, the iterator is equivalent to an empty iterator
-     * until {@link #setArray} is  called to establish the array to iterate over.
-     */
-    public ObjectArrayIterator() {
-        super();
-    }
-
-    /**
-     * Constructs an ObjectArrayIterator that will iterate over the values in the
-     * specified array.
-     *
-     * @param array the array to iterate over
-     * @throws NullPointerException if <code>array</code> is <code>null</code>
-     */
-    public ObjectArrayIterator(Object[] array) {
-        this(array, 0, array.length);
-    }
-
-    /**
-     * Constructs an ObjectArrayIterator that will iterate over the values in the
-     * specified array from a specific start index.
-     *
-     * @param array  the array to iterate over
-     * @param start  the index to start iterating at
-     * @throws NullPointerException if <code>array</code> is <code>null</code>
-     * @throws IndexOutOfBoundsException if the start index is out of bounds
-     */
-    public ObjectArrayIterator(Object array[], int start) {
-        this(array, start, array.length);
-    }
-
-    /**
-     * Construct an ObjectArrayIterator that will iterate over a range of values 
-     * in the specified array.
-     *
-     * @param array  the array to iterate over
-     * @param start  the index to start iterating at
-     * @param end  the index (exclusive) to finish iterating at
-     * @throws IndexOutOfBoundsException if the start or end index is out of bounds
-     * @throws IllegalArgumentException if end index is before the start
-     * @throws NullPointerException if <code>array</code> is <code>null</code>
-     */
-    public ObjectArrayIterator(Object array[], int start, int end) {
-        super();
-        if (start < 0) {
-            throw new ArrayIndexOutOfBoundsException("Start index must not be less than zero");
-        }
-        if (end > array.length) {
-            throw new ArrayIndexOutOfBoundsException("End index must not be greater than the array length");
-        }
-        if (start > array.length) {
-            throw new ArrayIndexOutOfBoundsException("Start index must not be greater than the array length");
-        }
-        if (end < start) {
-            throw new IllegalArgumentException("End index must not be less than start index");
-        }
-        this.array = array;
-        this.startIndex = start;
-        this.endIndex = end;
-        this.index = start;
-    }
-
-    // Iterator interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * Returns true if there are more elements to return from the array.
-     *
-     * @return true if there is a next element to return
-     */
-    public boolean hasNext() {
-        return (this.index < this.endIndex);
-    }
-
-    /**
-     * Returns the next element in the array.
-     *
-     * @return the next element in the array
-     * @throws NoSuchElementException if all the elements in the array
-     *    have already been returned
-     */
-    public Object next() {
-        if (hasNext() == false) {
-            throw new NoSuchElementException();
-        }
-        return this.array[this.index++];
-    }
-
-    /**
-     * Throws {@link UnsupportedOperationException}.
-     *
-     * @throws UnsupportedOperationException always
-     */
-    public void remove() {
-        throw new UnsupportedOperationException("remove() method is not supported for an ObjectArrayIterator");
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /**
-     * Gets the array that this iterator is iterating over. 
-     *
-     * @return the array this iterator iterates over, or <code>null</code> if
-     * the no-arg constructor was used and {@link #setArray} has never
-     * been called with a valid array.
-     */
-    public Object[] getArray() {
-        return this.array;
-    }
-
-    /**
-     * Sets the array that the ArrayIterator should iterate over.
-     * <p>
-     * This method may only be called once, otherwise an IllegalStateException
-     * will occur.
-     * <p>
-     * The {@link #reset} method can be used to reset the iterator if required.
-     *
-     * @param array  the array that the iterator should iterate over
-     * @throws IllegalStateException if the <code>array</code> was set in the constructor
-     * @throws NullPointerException if <code>array</code> is <code>null</code>
-     */
-    public void setArray(Object[] array) {
-        if (this.array != null) {
-            throw new IllegalStateException("The array to iterate over has already been set");
-        }
-        this.array = array;
-        this.startIndex = 0;
-        this.endIndex = array.length;
-        this.index = 0;
-    }
-
-    /**
-     * Gets the start index to loop from.
-     * 
-     * @return the start index
-     */
-    public int getStartIndex() {
-        return this.startIndex;
-    }
-
-    /**
-     * Gets the end index to loop to.
-     * 
-     * @return the end index
-     */
-    public int getEndIndex() {
-        return this.endIndex;
-    }
-
-    /**
-     * Resets the iterator back to the start index.
-     */
-    public void reset() {
-        this.index = this.startIndex;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ObjectArrayListIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ObjectArrayListIterator.java
deleted file mode 100755
index 8bc0a7b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ObjectArrayListIterator.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- *  Copyright 1999-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.ListIterator;
-import java.util.NoSuchElementException;
-
-import org.apache.commons.collections.ResettableListIterator;
-
-/**
- * Implements a {@link ListIterator} over an array of objects.
- * <p>
- * This iterator does not support {@link #add} or {@link #remove}, as the object array 
- * cannot be structurally modified. The {@link #set} method is supported however.
- * <p>
- * The iterator implements a {@link #reset} method, allowing the reset of the iterator
- * back to the start if required.
- *
- * @see org.apache.commons.collections.iterators.ObjectArrayIterator
- * @see java.util.Iterator
- * @see java.util.ListIterator
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Neil O'Toole
- * @author Stephen Colebourne
- * @author Phil Steitz
- */
-public class ObjectArrayListIterator extends ObjectArrayIterator
-		implements ListIterator, ResettableListIterator {
-
-    /**
-     * Holds the index of the last item returned by a call to <code>next()</code> 
-     * or <code>previous()</code>. This is set to <code>-1</code> if neither method
-     * has yet been invoked. <code>lastItemIndex</code> is used to to implement the
-     * {@link #set} method.
-     */
-    protected int lastItemIndex = -1;
-
-    /**
-     * Constructor for use with <code>setArray</code>.
-     * <p>
-     * Using this constructor, the iterator is equivalent to an empty iterator
-     * until {@link #setArray} is  called to establish the array to iterate over.
-     */
-    public ObjectArrayListIterator() {
-        super();
-    }
-
-    /**
-     * Constructs an ObjectArrayListIterator that will iterate over the values in the
-     * specified array.
-     *
-     * @param array the array to iterate over
-     * @throws NullPointerException if <code>array</code> is <code>null</code>
-     */
-    public ObjectArrayListIterator(Object[] array) {
-        super(array);
-    }
-
-    /**
-     * Constructs an ObjectArrayListIterator that will iterate over the values in the
-     * specified array from a specific start index.
-     *
-     * @param array  the array to iterate over
-     * @param start  the index to start iterating at
-     * @throws NullPointerException if <code>array</code> is <code>null</code>
-     * @throws IndexOutOfBoundsException if the start index is out of bounds
-     */
-    public ObjectArrayListIterator(Object[] array, int start) {
-        super(array, start);
-    }
-    
-    /**
-     * Construct an ObjectArrayListIterator that will iterate over a range of values 
-     * in the specified array.
-     *
-     * @param array  the array to iterate over
-     * @param start  the index to start iterating at
-     * @param end  the index (exclusive) to finish iterating at
-     * @throws IndexOutOfBoundsException if the start or end index is out of bounds
-     * @throws IllegalArgumentException if end index is before the start
-     * @throws NullPointerException if <code>array</code> is <code>null</code>
-     */
-    public ObjectArrayListIterator(Object[] array, int start, int end) {
-        super(array, start, end);
-    }
-
-    // ListIterator interface
-    //-------------------------------------------------------------------------
-
-    /**
-     * Returns true if there are previous elements to return from the array.
-     *
-     * @return true if there is a previous element to return
-     */
-    public boolean hasPrevious() {
-        return (this.index > this.startIndex);
-    }
-
-    /**
-     * Gets the previous element from the array.
-     * 
-     * @return the previous element
-     * @throws NoSuchElementException if there is no previous element
-     */
-    public Object previous() {
-        if (hasPrevious() == false) {
-            throw new NoSuchElementException();
-        }
-        this.lastItemIndex = --this.index;
-        return this.array[this.index];
-    }
-
-    /**
-     * Gets the next element from the array.
-     * 
-     * @return the next element
-     * @throws NoSuchElementException if there is no next element
-     */
-    public Object next() {
-        if (hasNext() == false) {
-            throw new NoSuchElementException();
-        }
-        this.lastItemIndex = this.index;
-        return this.array[this.index++];
-    }
-
-    /**
-     * Gets the next index to be retrieved.
-     * 
-     * @return the index of the item to be retrieved next
-     */
-    public int nextIndex() {
-        return this.index - this.startIndex;
-    }
-
-    /**
-     * Gets the index of the item to be retrieved if {@link #previous()} is called.
-     * 
-     * @return the index of the item to be retrieved next
-     */
-    public int previousIndex() {
-        return this.index - this.startIndex - 1;
-    }
-
-    /**
-     * This iterator does not support modification of its backing array's size, and so will
-     * always throw an {@link UnsupportedOperationException} when this method is invoked.
-     *
-     * @param obj  the object to add
-     * @throws UnsupportedOperationException always thrown.
-     */
-    public void add(Object obj) {
-        throw new UnsupportedOperationException("add() method is not supported");
-    }
-
-    /**
-     * Sets the element under the cursor.
-     * <p>
-     * This method sets the element that was returned by the last call 
-     * to {@link #next()} of {@link #previous()}. 
-     * 
-     * <b>Note:</b> {@link ListIterator} implementations that support <code>add()</code>
-     * and <code>remove()</code> only allow <code>set()</code> to be called once per call 
-     * to <code>next()</code> or <code>previous</code> (see the {@link ListIterator}
-     * javadoc for more details). Since this implementation does not support 
-     * <code>add()</code> or <code>remove()</code>, <code>set()</code> may be
-     * called as often as desired.
-     * 
-     * @param obj  the object to set into the array
-     * @throws IllegalStateException if next() has not yet been called.
-     * @throws ClassCastException if the object type is unsuitable for the array
-     */
-    public void set(Object obj) {
-        if (this.lastItemIndex == -1) {
-            throw new IllegalStateException("must call next() or previous() before a call to set()");
-        }
-
-        this.array[this.lastItemIndex] = obj;
-    }
-
-    /**
-     * Resets the iterator back to the start index.
-     */
-    public void reset() {
-        super.reset();
-        this.lastItemIndex = -1;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ObjectGraphIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ObjectGraphIterator.java
deleted file mode 100755
index 1913422..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ObjectGraphIterator.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- *  Copyright 2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import org.apache.commons.collections.ArrayStack;
-import org.apache.commons.collections.Transformer;
-
-/**
- * An Iterator that can traverse multiple iterators down an object graph.
- * <p>
- * This iterator can extract multiple objects from a complex tree-like object graph.
- * The iteration starts from a single root object.
- * It uses a <code>Transformer</code> to extract the iterators and elements.
- * Its main benefit is that no intermediate <code>List</code> is created.
- * <p>
- * For example, consider an object graph:
- * <pre>
- *                 |- Branch -- Leaf
- *                 |         \- Leaf
- *         |- Tree |         /- Leaf
- *         |       |- Branch -- Leaf
- *  Forest |                 \- Leaf
- *         |       |- Branch -- Leaf
- *         |       |         \- Leaf
- *         |- Tree |         /- Leaf
- *                 |- Branch -- Leaf
- *                 |- Branch -- Leaf</pre>
- * The following <code>Transformer</code>, used in this class, will extract all
- * the Leaf objects without creating a combined intermediate list:
- * <pre>
- * public Object transform(Object input) {
- *   if (input instanceof Forest) {
- *     return ((Forest) input).treeIterator();
- *   }
- *   if (input instanceof Tree) {
- *     return ((Tree) input).branchIterator();
- *   }
- *   if (input instanceof Branch) {
- *     return ((Branch) input).leafIterator();
- *   }
- *   if (input instanceof Leaf) {
- *     return input;
- *   }
- *   throw new ClassCastException();
- * }</pre>
- * <p>
- * Internally, iteration starts from the root object. When next is called,
- * the transformer is called to examine the object. The transformer will return
- * either an iterator or an object. If the object is an Iterator, the next element
- * from that iterator is obtained and the process repeats. If the element is an object
- * it is returned.
- * <p>
- * Under many circumstances, linking Iterators together in this manner is
- * more efficient (and convenient) than using nested for loops to extract a list.
- * 
- * @since Commons Collections 3.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Stephen Colebourne
- */
-public class ObjectGraphIterator implements Iterator {
-
-    /** The stack of iterators */
-    protected final ArrayStack stack = new ArrayStack(8);
-	/** The root object in the tree */
-    protected Object root;
-    /** The transformer to use */
-    protected Transformer transformer;
-
-    /** Whether there is another element in the iteration */
-    protected boolean hasNext = false;    
-    /** The current iterator */
-    protected Iterator currentIterator;
-    /** The current value */
-    protected Object currentValue;
-    /** The last used iterator, needed for remove() */
-    protected Iterator lastUsedIterator;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructs an ObjectGraphIterator using a root object and transformer.
-     * <p>
-     * The root object can be an iterator, in which case it will be immediately
-     * looped around.
-     * 
-     * @param root  the root object, null will result in an empty iterator
-     * @param transformer  the transformer to use, null will use a no effect transformer
-     */
-    public ObjectGraphIterator(Object root, Transformer transformer) {
-        super();
-        if (root instanceof Iterator) {
-            this.currentIterator = (Iterator) root;
-        } else {
-            this.root = root;
-        }
-        this.transformer = transformer;
-    }
-
-    /**
-     * Constructs a ObjectGraphIterator that will handle an iterator of iterators.
-     * <p>
-     * This constructor exists for convenience to emphasise that this class can
-     * be used to iterate over nested iterators. That is to say that the iterator
-     * passed in here contains other iterators, which may in turn contain further
-     * iterators.
-     * 
-     * @param rootIterator  the root iterator, null will result in an empty iterator
-     */
-    public ObjectGraphIterator(Iterator rootIterator) {
-        super();
-        this.currentIterator = rootIterator;
-        this.transformer = null;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Loops around the iterators to find the next value to return.
-     */
-    protected void updateCurrentIterator() {
-        if (hasNext) {
-            return;
-        }
-        if (currentIterator == null) {
-            if (root == null) {
-                // do nothing, hasNext will be false
-            } else {
-                if (transformer == null) {
-                    findNext(root);
-                } else {
-                    findNext(transformer.transform(root));
-                }
-                root = null;
-            }
-        } else {
-            findNextByIterator(currentIterator);
-        }
-    }
-
-    /**
-     * Finds the next object in the iteration given any start object.
-     * 
-     * @param value  the value to start from
-     */
-    protected void findNext(Object value) {
-        if (value instanceof Iterator) {
-            // need to examine this iterator
-            findNextByIterator((Iterator) value);
-        } else {
-            // next value found
-            currentValue = value;
-            hasNext = true;
-        }
-    }
-    
-    /**
-     * Finds the next object in the iteration given an iterator.
-     * 
-     * @param iterator  the iterator to start from
-     */
-    protected void findNextByIterator(Iterator iterator) {
-        if (iterator != currentIterator) {
-            // recurse a level
-            if (currentIterator != null) {
-                stack.push(currentIterator);
-            }
-            currentIterator = iterator;
-        }
-        
-        while (currentIterator.hasNext() && hasNext == false) {
-            Object next = currentIterator.next();
-            if (transformer != null) {
-                next = transformer.transform(next);
-            }
-            findNext(next);
-        }
-        if (hasNext) {
-            // next value found
-        } else if (stack.isEmpty()) {
-            // all iterators exhausted
-        } else {
-            // current iterator exhausted, go up a level
-            currentIterator = (Iterator) stack.pop();
-            findNextByIterator(currentIterator);
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Checks whether there are any more elements in the iteration to obtain.
-     * 
-     * @return true if elements remain in the iteration
-     */
-    public boolean hasNext() {
-        updateCurrentIterator();
-        return hasNext;
-    }
-
-    /**
-     * Gets the next element of the iteration.
-     * 
-     * @return the next element from the iteration
-     * @throws NoSuchElementException if all the Iterators are exhausted
-     */
-    public Object next() {
-        updateCurrentIterator();
-        if (hasNext == false) {
-            throw new NoSuchElementException("No more elements in the iteration");
-        }
-        lastUsedIterator = currentIterator;
-        Object result = currentValue;
-        currentValue = null;
-        hasNext = false;
-        return result;
-    }
-
-    /**
-     * Removes from the underlying collection the last element returned.
-     * <p>
-     * This method calls remove() on the underlying Iterator and it may
-     * throw an UnsupportedOperationException if the underlying Iterator
-     * does not support this method. 
-     * 
-     * @throws UnsupportedOperationException
-     *   if the remove operator is not supported by the underlying Iterator
-     * @throws IllegalStateException
-     *   if the next method has not yet been called, or the remove method has
-     *   already been called after the last call to the next method.
-     */
-    public void remove() {
-        if (lastUsedIterator == null) {
-            throw new IllegalStateException("Iterator remove() cannot be called at this time");
-        }
-        lastUsedIterator.remove();
-        lastUsedIterator = null;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ProxyIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ProxyIterator.java
deleted file mode 100755
index 7c2634c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ProxyIterator.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- *  Copyright 1999-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.Iterator;
-
-/** 
- * A Proxy {@link Iterator Iterator} which delegates its methods to a proxy instance.
- *
- * @deprecated Use AbstractIteratorDecorator. Will be removed in v4.0
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author James Strachan
- */
-public class ProxyIterator implements Iterator {
-    
-    /** Holds value of property iterator. */
-    private Iterator iterator;
-    
-    // Constructors
-    //-------------------------------------------------------------------------
-
-    /**
-     * Constructs a new <code>ProxyIterator</code> that will not function
-     * until {@link #setIterator(Iterator)} is called.
-     */
-    public ProxyIterator() {
-        super();
-    }
-    
-    /**
-     * Constructs a new <code>ProxyIterator</code> that will use the
-     * given iterator.
-     *
-     * @param iterator  the underlying iterator
-     */
-    public ProxyIterator(Iterator iterator) {
-        super();
-        this.iterator = iterator;
-    }
-
-    // Iterator interface
-    //-------------------------------------------------------------------------
-
-    /**
-     *  Returns true if the underlying iterator has more elements.
-     *
-     *  @return true if the underlying iterator has more elements
-     */
-    public boolean hasNext() {
-        return getIterator().hasNext();
-    }
-
-    /**
-     *  Returns the next element from the underlying iterator.
-     *
-     *  @return the next element from the underlying iterator
-     *  @throws java.util.NoSuchElementException  if the underlying iterator 
-     *    raises it because it has no more elements
-     */
-    public Object next() {
-        return getIterator().next();
-    }
-
-    /**
-     *  Removes the last returned element from the collection that spawned
-     *  the underlying iterator.
-     */
-    public void remove() {
-        getIterator().remove();
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-    /** Getter for property iterator.
-     * @return Value of property iterator.
-     */
-    public Iterator getIterator() {
-        return iterator;
-    }
-    /** Setter for property iterator.
-     * @param iterator New value of property iterator.
-     */
-    public void setIterator(Iterator iterator) {
-        this.iterator = iterator;
-    }
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ProxyListIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ProxyListIterator.java
deleted file mode 100755
index 8a60595..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ProxyListIterator.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- *  Copyright 1999-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.ListIterator;
-
-/**
- * A proxy {@link ListIterator ListIterator} which delegates its
- * methods to a proxy instance.
- *
- * @deprecated Use AbstractListIteratorDecorator. Will be removed in v4.0
- * @since Commons Collections 2.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Rodney Waldhoff
- */
-public class ProxyListIterator implements ListIterator {
-
-    /** Holds value of property "iterator". */
-    private ListIterator iterator;
-
-    // Constructors
-    //-------------------------------------------------------------------------
-
-    /**
-     * Constructs a new <code>ProxyListIterator</code> that will not 
-     * function until {@link #setListIterator(ListIterator) setListIterator}
-     * is invoked.
-     */
-    public ProxyListIterator() {
-        super();
-    }
-
-    /**
-     * Constructs a new <code>ProxyListIterator</code> that will use the
-     * given list iterator.
-     *
-     * @param iterator  the list iterator to use
-     */
-    public ProxyListIterator(ListIterator iterator) {
-        super();
-        this.iterator = iterator;
-    }
-
-    // ListIterator interface
-    //-------------------------------------------------------------------------
-
-    /**
-     *  Invokes the underlying {@link ListIterator#add(Object)} method.
-     *
-     *  @throws NullPointerException  if the underlying iterator is null
-     */
-    public void add(Object o) {
-        getListIterator().add(o);
-    }
-
-    /**
-     *  Invokes the underlying {@link ListIterator#hasNext()} method.
-     *
-     *  @throws NullPointerException  if the underlying iterator is null
-     */
-    public boolean hasNext() {
-        return getListIterator().hasNext();
-    }
-
-    /**
-     *  Invokes the underlying {@link ListIterator#hasPrevious()} method.
-     *
-     *  @throws NullPointerException  if the underlying iterator is null
-     */
-    public boolean hasPrevious() {
-        return getListIterator().hasPrevious();
-    }
-
-    /**
-     *  Invokes the underlying {@link ListIterator#next()} method.
-     *
-     *  @throws NullPointerException  if the underlying iterator is null
-     */
-    public Object next() {
-        return getListIterator().next();
-    }
-
-    /**
-     *  Invokes the underlying {@link ListIterator#nextIndex()} method.
-     *
-     *  @throws NullPointerException  if the underlying iterator is null
-     */
-    public int nextIndex() {
-        return getListIterator().nextIndex();
-    }
-
-    /**
-     *  Invokes the underlying {@link ListIterator#previous()} method.
-     *
-     *  @throws NullPointerException  if the underlying iterator is null
-     */
-    public Object previous() {
-        return getListIterator().previous();
-    }
-
-    /**
-     *  Invokes the underlying {@link ListIterator#previousIndex()} method.
-     *
-     *  @throws NullPointerException  if the underlying iterator is null
-     */
-    public int previousIndex() {
-        return getListIterator().previousIndex();
-    }
-
-    /**
-     *  Invokes the underlying {@link ListIterator#remove()} method.
-     *
-     *  @throws NullPointerException  if the underlying iterator is null
-     */
-    public void remove() {
-        getListIterator().remove();
-    }
-
-    /**
-     *  Invokes the underlying {@link ListIterator#set(Object)} method.
-     *
-     *  @throws NullPointerException  if the underlying iterator is null
-     */
-    public void set(Object o) {
-        getListIterator().set(o);
-    }
-
-    // Properties
-    //-------------------------------------------------------------------------
-
-    /** 
-     * Getter for property iterator.
-     * @return Value of property iterator.
-     */
-    public ListIterator getListIterator() {
-        return iterator;
-    }
-
-    /**
-     * Setter for property iterator.
-     * @param iterator New value of property iterator.
-     */
-    public void setListIterator(ListIterator iterator) {
-        this.iterator = iterator;
-    }
-
-}
-
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ReverseListIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ReverseListIterator.java
deleted file mode 100755
index 72c3fff..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/ReverseListIterator.java
+++ /dev/null
@@ -1,175 +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.commons.collections.iterators;
-
-import java.util.List;
-import java.util.ListIterator;
-
-import org.apache.commons.collections.ResettableListIterator;
-
-/**
- * Iterates backwards through a List, starting with the last element
- * and continuing to the first. This is useful for looping around
- * a list in reverse order without needing to actually reverse the list.
- * <p>
- * The first call to <code>next()</code> will return the last element
- * from the list, and so on. The <code>hasNext()</code> method works
- * in concert with the <code>next()</code> method as expected.
- * However, the <code>nextIndex()</code> method returns the correct
- * index in the list, thus it starts high and reduces as the iteration
- * continues. The previous methods work similarly.
- *
- * @author Serge Knystautas
- * @author Stephen Colebourne
- * @since Commons Collections 3.2
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- */
-public class ReverseListIterator implements ResettableListIterator {
-
-    /** The list being wrapped. */
-    private final List list;
-    /** The list iterator being wrapped. */
-    private ListIterator iterator;
-    /** Flag to indicate if updating is possible at the moment. */
-    private boolean validForUpdate = true;
-
-    /**
-     * Constructor that wraps a list.
-     *
-     * @param list  the list to create a reversed iterator for
-     * @throws NullPointerException if the list is null
-     */
-    public ReverseListIterator(List list) {
-        super();
-        this.list = list;
-        iterator = list.listIterator(list.size());
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Checks whether there is another element.
-     *
-     * @return true if there is another element
-     */
-    public boolean hasNext() {
-        return iterator.hasPrevious();
-    }
-
-    /**
-     * Gets the next element.
-     * The next element is the previous in the list.
-     *
-     * @return the next element in the iterator
-     */
-    public Object next() {
-        Object obj = iterator.previous();
-        validForUpdate = true;
-        return obj;
-    }
-
-    /**
-     * Gets the index of the next element.
-     *
-     * @return the index of the next element in the iterator
-     */
-    public int nextIndex() {
-        return iterator.previousIndex();
-    }
-
-    /**
-     * Checks whether there is a previous element.
-     *
-     * @return true if there is a previous element
-     */
-    public boolean hasPrevious() {
-        return iterator.hasNext();
-    }
-
-    /**
-     * Gets the previous element.
-     * The next element is the previous in the list.
-     *
-     * @return the previous element in the iterator
-     */
-    public Object previous() {
-        Object obj = iterator.next();
-        validForUpdate = true;
-        return obj;
-    }
-
-    /**
-     * Gets the index of the previous element.
-     *
-     * @return the index of the previous element in the iterator
-     */
-    public int previousIndex() {
-        return iterator.nextIndex();
-    }
-
-    /**
-     * Removes the last returned element.
-     *
-     * @throws UnsupportedOperationException if the list is unmodifiable
-     * @throws IllegalStateException if there is no element to remove
-     */
-    public void remove() {
-        if (validForUpdate == false) {
-            throw new IllegalStateException("Cannot remove from list until next() or previous() called");
-        }
-        iterator.remove();
-    }
-
-    /**
-     * Replaces the last returned element.
-     *
-     * @param obj  the object to set
-     * @throws UnsupportedOperationException if the list is unmodifiable
-     * @throws IllegalStateException if the iterator is not in a valid state for set
-     */
-    public void set(Object obj) {
-        if (validForUpdate == false) {
-            throw new IllegalStateException("Cannot set to list until next() or previous() called");
-        }
-        iterator.set(obj);
-    }
-
-    /**
-     * Adds a new element to the list between the next and previous elements.
-     *
-     * @param obj  the object to add
-     * @throws UnsupportedOperationException if the list is unmodifiable
-     * @throws IllegalStateException if the iterator is not in a valid state for set
-     */
-    public void add(Object obj) {
-        // the validForUpdate flag is needed as the necessary previous()
-        // method call re-enables remove and add
-        if (validForUpdate == false) {
-            throw new IllegalStateException("Cannot add to list until next() or previous() called");
-        }
-        validForUpdate = false;
-        iterator.add(obj);
-        iterator.previous();
-    }
-
-    /**
-     * Resets the iterator back to the start (which is the
-     * end of the list as this is a reversed iterator)
-     */
-    public void reset() {
-        iterator = list.listIterator(list.size());
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/SingletonIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/SingletonIterator.java
deleted file mode 100755
index 24ef677..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/SingletonIterator.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- *  Copyright 1999-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import org.apache.commons.collections.ResettableIterator;
-
-/** 
- * <code>SingletonIterator</code> is an {@link Iterator} over a single 
- * object instance.
- *
- * @since Commons Collections 2.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author James Strachan
- * @author Stephen Colebourne
- * @author Rodney Waldhoff
- */
-public class SingletonIterator
-		implements Iterator, ResettableIterator {
-
-    /** Whether remove is allowed */
-    private final boolean removeAllowed;
-    /** Is the cursor before the first element */
-    private boolean beforeFirst = true;
-    /** Has the element been removed */
-    private boolean removed = false;
-    /** The object */
-    private Object object;
-
-    /**
-     * Constructs a new <code>SingletonIterator</code> where <code>remove</code>
-     * is a permitted operation.
-     *
-     * @param object  the single object to return from the iterator
-     */
-    public SingletonIterator(Object object) {
-        this(object, true);
-    }
-
-    /**
-     * Constructs a new <code>SingletonIterator</code> optionally choosing if
-     * <code>remove</code> is a permitted operation.
-     *
-     * @param object  the single object to return from the iterator
-     * @param removeAllowed  true if remove is allowed
-     * @since Commons Collections 3.1
-     */
-    public SingletonIterator(Object object, boolean removeAllowed) {
-        super();
-        this.object = object;
-        this.removeAllowed = removeAllowed;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Is another object available from the iterator?
-     * <p>
-     * This returns true if the single object hasn't been returned yet.
-     * 
-     * @return true if the single object hasn't been returned yet
-     */
-    public boolean hasNext() {
-        return (beforeFirst && !removed);
-    }
-
-    /**
-     * Get the next object from the iterator.
-     * <p>
-     * This returns the single object if it hasn't been returned yet.
-     *
-     * @return the single object
-     * @throws NoSuchElementException if the single object has already 
-     *    been returned
-     */
-    public Object next() {
-        if (!beforeFirst || removed) {
-            throw new NoSuchElementException();
-        }
-        beforeFirst = false;
-        return object;
-    }
-
-    /**
-     * Remove the object from this iterator.
-     * 
-     * @throws IllegalStateException if the <tt>next</tt> method has not
-     *        yet been called, or the <tt>remove</tt> method has already
-     *        been called after the last call to the <tt>next</tt>
-     *        method.
-     * @throws UnsupportedOperationException if remove is not supported
-     */
-    public void remove() {
-        if (removeAllowed) {
-            if (removed || beforeFirst) {
-                throw new IllegalStateException();
-            } else {
-                object = null;
-                removed = true;
-            }
-        } else {
-            throw new UnsupportedOperationException();
-        }
-    }
-    
-    /**
-     * Reset the iterator to the start.
-     */
-    public void reset() {
-        beforeFirst = true;
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/SingletonListIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/SingletonListIterator.java
deleted file mode 100755
index 16b7f50..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/SingletonListIterator.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- *  Copyright 1999-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.ListIterator;
-import java.util.NoSuchElementException;
-
-import org.apache.commons.collections.ResettableListIterator;
-
-/**
- * <code>SingletonIterator</code> is an {@link ListIterator} over a single 
- * object instance.
- *
- * @since Commons Collections 2.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Stephen Colebourne
- * @author Rodney Waldhoff
- */
-public class SingletonListIterator implements ListIterator, ResettableListIterator {
-
-    private boolean beforeFirst = true;
-    private boolean nextCalled = false;
-    private boolean removed = false;
-    private Object object;
-
-    /**
-     * Constructs a new <code>SingletonListIterator</code>.
-     *
-     * @param object  the single object to return from the iterator
-     */
-    public SingletonListIterator(Object object) {
-        super();
-        this.object = object;
-    }
-
-    /**
-     * Is another object available from the iterator?
-     * <p>
-     * This returns true if the single object hasn't been returned yet.
-     * 
-     * @return true if the single object hasn't been returned yet
-     */
-    public boolean hasNext() {
-        return beforeFirst && !removed;
-    }
-
-    /**
-     * Is a previous object available from the iterator?
-     * <p>
-     * This returns true if the single object has been returned.
-     * 
-     * @return true if the single object has been returned
-     */
-    public boolean hasPrevious() {
-        return !beforeFirst && !removed;
-    }
-
-    /**
-     * Returns the index of the element that would be returned by a subsequent
-     * call to <tt>next</tt>.
-     *
-     * @return 0 or 1 depending on current state. 
-     */
-    public int nextIndex() {
-        return (beforeFirst ? 0 : 1);
-    }
-
-    /**
-     * Returns the index of the element that would be returned by a subsequent
-     * call to <tt>previous</tt>. A return value of -1 indicates that the iterator is currently at
-     * the start.
-     *
-     * @return 0 or -1 depending on current state. 
-     */
-    public int previousIndex() {
-        return (beforeFirst ? -1 : 0);
-    }
-
-    /**
-     * Get the next object from the iterator.
-     * <p>
-     * This returns the single object if it hasn't been returned yet.
-     *
-     * @return the single object
-     * @throws NoSuchElementException if the single object has already 
-     *    been returned
-     */
-    public Object next() {
-        if (!beforeFirst || removed) {
-            throw new NoSuchElementException();
-        }
-        beforeFirst = false;
-        nextCalled = true;
-        return object;
-    }
-
-    /**
-     * Get the previous object from the iterator.
-     * <p>
-     * This returns the single object if it has been returned.
-     *
-     * @return the single object
-     * @throws NoSuchElementException if the single object has not already 
-     *    been returned
-     */
-    public Object previous() {
-        if (beforeFirst || removed) {
-            throw new NoSuchElementException();
-        }
-        beforeFirst = true;
-        return object;
-    }
-
-    /**
-     * Remove the object from this iterator.
-     * @throws IllegalStateException if the <tt>next</tt> or <tt>previous</tt> 
-     *        method has not yet been called, or the <tt>remove</tt> method 
-     *        has already been called after the last call to <tt>next</tt>
-     *        or <tt>previous</tt>.
-     */
-    public void remove() {
-        if(!nextCalled || removed) {
-            throw new IllegalStateException();
-        } else {
-            object = null;
-            removed = true;
-        }
-    }
-    
-    /**
-     * Add always throws {@link UnsupportedOperationException}.
-     *
-     * @throws UnsupportedOperationException always
-     */
-    public void add(Object obj) {
-        throw new UnsupportedOperationException("add() is not supported by this iterator");
-    }
-    
-    /**
-     * Set sets the value of the singleton.
-     *
-     * @param obj  the object to set
-     * @throws IllegalStateException if <tt>next</tt> has not been called 
-     *          or the object has been removed
-     */
-    public void set(Object obj) {
-        if (!nextCalled || removed) {
-            throw new IllegalStateException();
-        }
-        this.object = obj;
-    }
-    
-    /**
-     * Reset the iterator back to the start.
-     */
-    public void reset() {
-        beforeFirst = true;
-        nextCalled = false;
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/TransformIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/TransformIterator.java
deleted file mode 100755
index fde26fc..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/TransformIterator.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- *  Copyright 1999-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.Iterator;
-
-import org.apache.commons.collections.Transformer;
-
-/** 
- * Decorates an iterator such that each element returned is transformed.
- *
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author James Strachan
- * @author Stephen Colebourne
- */
-public class TransformIterator implements Iterator {
-
-    /** The iterator being used */
-    private Iterator iterator;
-    /** The transformer being used */
-    private Transformer transformer;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructs a new <code>TransformIterator</code> that will not function
-     * until the {@link #setIterator(Iterator) setIterator} method is 
-     * invoked.
-     */
-    public TransformIterator() {
-        super();
-    }
-
-    /**
-     * Constructs a new <code>TransformIterator</code> that won't transform
-     * elements from the given iterator.
-     *
-     * @param iterator  the iterator to use
-     */
-    public TransformIterator(Iterator iterator) {
-        super();
-        this.iterator = iterator;
-    }
-
-    /**
-     * Constructs a new <code>TransformIterator</code> that will use the
-     * given iterator and transformer.  If the given transformer is null,
-     * then objects will not be transformed.
-     *
-     * @param iterator  the iterator to use
-     * @param transformer  the transformer to use
-     */
-    public TransformIterator(Iterator iterator, Transformer transformer) {
-        super();
-        this.iterator = iterator;
-        this.transformer = transformer;
-    }
-
-    //-----------------------------------------------------------------------
-    public boolean hasNext() {
-        return iterator.hasNext();
-    }
-
-    /**
-     * Gets the next object from the iteration, transforming it using the
-     * current transformer. If the transformer is null, no transformation
-     * occurs and the object from the iterator is returned directly.
-     * 
-     * @return the next object
-     * @throws java.util.NoSuchElementException if there are no more elements
-     */
-    public Object next() {
-        return transform(iterator.next());
-    }
-
-    public void remove() {
-        iterator.remove();
-    }
-
-    //-----------------------------------------------------------------------
-    /** 
-     * Gets the iterator this iterator is using.
-     * 
-     * @return the iterator.
-     */
-    public Iterator getIterator() {
-        return iterator;
-    }
-
-    /** 
-     * Sets the iterator for this iterator to use.
-     * If iteration has started, this effectively resets the iterator.
-     * 
-     * @param iterator  the iterator to use
-     */
-    public void setIterator(Iterator iterator) {
-        this.iterator = iterator;
-    }
-
-    //-----------------------------------------------------------------------
-    /** 
-     * Gets the transformer this iterator is using.
-     * 
-     * @return the transformer.
-     */
-    public Transformer getTransformer() {
-        return transformer;
-    }
-
-    /** 
-     * Sets the transformer this the iterator to use.
-     * A null transformer is a no-op transformer.
-     * 
-     * @param transformer  the transformer to use
-     */
-    public void setTransformer(Transformer transformer) {
-        this.transformer = transformer;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Transforms the given object using the transformer.
-     * If the transformer is null, the original object is returned as-is.
-     *
-     * @param source  the object to transform
-     * @return the transformed object
-     */
-    protected Object transform(Object source) {
-        if (transformer != null) {
-            return transformer.transform(source);
-        }
-        return source;
-    }
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/UniqueFilterIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/UniqueFilterIterator.java
deleted file mode 100755
index 10a015d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/UniqueFilterIterator.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  Copyright 1999-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.Iterator;
-
-import org.apache.commons.collections.functors.UniquePredicate;
-
-/** 
- * A FilterIterator which only returns "unique" Objects.  Internally,
- * the Iterator maintains a Set of objects it has already encountered,
- * and duplicate Objects are skipped.
- *
- * @since Commons Collections 2.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Morgan Delagrange
- */
-public class UniqueFilterIterator extends FilterIterator {
-       
-    //-------------------------------------------------------------------------
-    
-    /**
-     *  Constructs a new <code>UniqueFilterIterator</code>.
-     *
-     *  @param iterator  the iterator to use
-     */
-    public UniqueFilterIterator( Iterator iterator ) {
-        super(iterator, UniquePredicate.getInstance());
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/UnmodifiableIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/UnmodifiableIterator.java
deleted file mode 100755
index cd7ab39..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/UnmodifiableIterator.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- *  Copyright 1999-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.Iterator;
-
-import org.apache.commons.collections.Unmodifiable;
-
-/** 
- * Decorates an iterator such that it cannot be modified.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Stephen Colebourne
- */
-public final class UnmodifiableIterator implements Iterator, Unmodifiable {
-
-    /** The iterator being decorated */
-    private Iterator iterator;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Decorates the specified iterator such that it cannot be modified.
-     * <p>
-     * If the iterator is already unmodifiable it is returned directly.
-     *
-     * @param iterator  the iterator to decorate
-     * @throws IllegalArgumentException if the iterator is null
-     */
-    public static Iterator decorate(Iterator iterator) {
-        if (iterator == null) {
-            throw new IllegalArgumentException("Iterator must not be null");
-        }
-        if (iterator instanceof Unmodifiable) {
-            return iterator;
-        }
-        return new UnmodifiableIterator(iterator);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor.
-     *
-     * @param iterator  the iterator to decorate
-     */
-    private UnmodifiableIterator(Iterator iterator) {
-        super();
-        this.iterator = iterator;
-    }
-
-    //-----------------------------------------------------------------------
-    public boolean hasNext() {
-        return iterator.hasNext();
-    }
-
-    public Object next() {
-        return iterator.next();
-    }
-
-    public void remove() {
-        throw new UnsupportedOperationException("remove() is not supported");
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/UnmodifiableListIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/UnmodifiableListIterator.java
deleted file mode 100755
index 78ec609..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/UnmodifiableListIterator.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- *  Copyright 1999-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import java.util.ListIterator;
-
-import org.apache.commons.collections.Unmodifiable;
-
-/** 
- * Decorates a list iterator such that it cannot be modified.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Stephen Colebourne
- */
-public final class UnmodifiableListIterator implements ListIterator, Unmodifiable {
-
-    /** The iterator being decorated */
-    private ListIterator iterator;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Decorates the specified iterator such that it cannot be modified.
-     *
-     * @param iterator  the iterator to decorate
-     * @throws IllegalArgumentException if the iterator is null
-     */
-    public static ListIterator decorate(ListIterator iterator) {
-        if (iterator == null) {
-            throw new IllegalArgumentException("ListIterator must not be null");
-        }
-        if (iterator instanceof Unmodifiable) {
-            return iterator;
-        }
-        return new UnmodifiableListIterator(iterator);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor.
-     *
-     * @param iterator  the iterator to decorate
-     */
-    private UnmodifiableListIterator(ListIterator iterator) {
-        super();
-        this.iterator = iterator;
-    }
-
-    //-----------------------------------------------------------------------
-    public boolean hasNext() {
-        return iterator.hasNext();
-    }
-
-    public Object next() {
-        return iterator.next();
-    }
-
-    public int nextIndex() {
-        return iterator.nextIndex();
-    }
-
-    public boolean hasPrevious() {
-        return iterator.hasPrevious();
-    }
-
-    public Object previous() {
-        return iterator.previous();
-    }
-
-    public int previousIndex() {
-        return iterator.previousIndex();
-    }
-
-    public void remove() {
-        throw new UnsupportedOperationException("remove() is not supported");
-    }
-
-    public void set(Object obj) {
-        throw new UnsupportedOperationException("set() is not supported");
-    }
-
-    public void add(Object obj) {
-        throw new UnsupportedOperationException("add() is not supported");
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/UnmodifiableMapIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/UnmodifiableMapIterator.java
deleted file mode 100755
index 8e679a4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/UnmodifiableMapIterator.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- *  Copyright 1999-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.Unmodifiable;
-
-/** 
- * Decorates a map iterator such that it cannot be modified.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Stephen Colebourne
- */
-public final class UnmodifiableMapIterator implements MapIterator, Unmodifiable {
-
-    /** The iterator being decorated */
-    private MapIterator iterator;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Decorates the specified iterator such that it cannot be modified.
-     *
-     * @param iterator  the iterator to decorate
-     * @throws IllegalArgumentException if the iterator is null
-     */
-    public static MapIterator decorate(MapIterator iterator) {
-        if (iterator == null) {
-            throw new IllegalArgumentException("MapIterator must not be null");
-        }
-        if (iterator instanceof Unmodifiable) {
-            return iterator;
-        }
-        return new UnmodifiableMapIterator(iterator);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor.
-     *
-     * @param iterator  the iterator to decorate
-     */
-    private UnmodifiableMapIterator(MapIterator iterator) {
-        super();
-        this.iterator = iterator;
-    }
-
-    //-----------------------------------------------------------------------
-    public boolean hasNext() {
-        return iterator.hasNext();
-    }
-
-    public Object next() {
-        return iterator.next();
-    }
-
-    public Object getKey() {
-        return iterator.getKey();
-    }
-
-    public Object getValue() {
-        return iterator.getValue();
-    }
-
-    public Object setValue(Object value) {
-        throw new UnsupportedOperationException("setValue() is not supported");
-    }
-
-    public void remove() {
-        throw new UnsupportedOperationException("remove() is not supported");
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/UnmodifiableOrderedMapIterator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/UnmodifiableOrderedMapIterator.java
deleted file mode 100755
index 72e086b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/UnmodifiableOrderedMapIterator.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- *  Copyright 1999-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.iterators;
-
-import org.apache.commons.collections.OrderedMapIterator;
-import org.apache.commons.collections.Unmodifiable;
-
-/** 
- * Decorates an ordered map iterator such that it cannot be modified.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:27 $
- * 
- * @author Stephen Colebourne
- */
-public final class UnmodifiableOrderedMapIterator implements OrderedMapIterator, Unmodifiable {
-
-    /** The iterator being decorated */
-    private OrderedMapIterator iterator;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Decorates the specified iterator such that it cannot be modified.
-     *
-     * @param iterator  the iterator to decorate
-     * @throws IllegalArgumentException if the iterator is null
-     */
-    public static OrderedMapIterator decorate(OrderedMapIterator iterator) {
-        if (iterator == null) {
-            throw new IllegalArgumentException("OrderedMapIterator must not be null");
-        }
-        if (iterator instanceof Unmodifiable) {
-            return iterator;
-        }
-        return new UnmodifiableOrderedMapIterator(iterator);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor.
-     *
-     * @param iterator  the iterator to decorate
-     */
-    private UnmodifiableOrderedMapIterator(OrderedMapIterator iterator) {
-        super();
-        this.iterator = iterator;
-    }
-
-    //-----------------------------------------------------------------------
-    public boolean hasNext() {
-        return iterator.hasNext();
-    }
-
-    public Object next() {
-        return iterator.next();
-    }
-
-    public boolean hasPrevious() {
-        return iterator.hasPrevious();
-    }
-
-    public Object previous() {
-        return iterator.previous();
-    }
-
-    public Object getKey() {
-        return iterator.getKey();
-    }
-
-    public Object getValue() {
-        return iterator.getValue();
-    }
-
-    public Object setValue(Object value) {
-        throw new UnsupportedOperationException("setValue() is not supported");
-    }
-
-    public void remove() {
-        throw new UnsupportedOperationException("remove() is not supported");
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/package.html b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/package.html
deleted file mode 100755
index eab0904..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/iterators/package.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!-- $Id: package.html,v 1.1 2009/05/27 22:16:27 mparker Exp $ -->
- <!--
-   Copyright 2002-2004 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-  -->
-<body>
-<p>
-This package contains implementations of the
-{@link java.util.Iterator Iterator} interface.
-<p>
-You may also consider using 
-{@link org.apache.commons.collections.IteratorUtils IteratorUtils},
-which is a single class that uses static methods to construct instances
-of the classes in this package.
-</body>
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/AbstractKeyValue.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/AbstractKeyValue.java
deleted file mode 100755
index 4e3ac3f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/AbstractKeyValue.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- *  Copyright 2003-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.commons.collections.keyvalue;
-
-import org.apache.commons.collections.KeyValue;
-
-/**
- * Abstract pair class to assist with creating <code>KeyValue</code>
- * and {@link java.util.Map.Entry Map.Entry} implementations.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:28 $
- * 
- * @author James Strachan
- * @author Michael A. Smith
- * @author Neil O'Toole
- * @author Stephen Colebourne
- */
-public abstract class AbstractKeyValue implements KeyValue {
-
-    /** The key */
-    protected Object key;
-    /** The value */
-    protected Object value;
-
-    /**
-     * Constructs a new pair with the specified key and given value.
-     *
-     * @param key  the key for the entry, may be null
-     * @param value  the value for the entry, may be null
-     */
-    protected AbstractKeyValue(Object key, Object value) {
-        super();
-        this.key = key;
-        this.value = value;
-    }
-
-    /**
-     * Gets the key from the pair.
-     *
-     * @return the key 
-     */
-    public Object getKey() {
-        return key;
-    }
-
-    /**
-     * Gets the value from the pair.
-     *
-     * @return the value
-     */
-    public Object getValue() {
-        return value;
-    }
-
-    /**
-     * Gets a debugging String view of the pair.
-     * 
-     * @return a String view of the entry
-     */
-    public String toString() {
-        return new StringBuffer()
-            .append(getKey())
-            .append('=')
-            .append(getValue())
-            .toString();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/AbstractMapEntry.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/AbstractMapEntry.java
deleted file mode 100755
index 86baaa2..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/AbstractMapEntry.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- *  Copyright 2003-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.commons.collections.keyvalue;
-
-import java.util.Map;
-
-/**
- * Abstract Pair class to assist with creating correct
- * {@link java.util.Map.Entry Map.Entry} implementations.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:29 $
- * 
- * @author James Strachan
- * @author Michael A. Smith
- * @author Neil O'Toole
- * @author Stephen Colebourne
- */
-public abstract class AbstractMapEntry extends AbstractKeyValue implements Map.Entry {
-
-    /**
-     * Constructs a new entry with the given key and given value.
-     *
-     * @param key  the key for the entry, may be null
-     * @param value  the value for the entry, may be null
-     */
-    protected AbstractMapEntry(Object key, Object value) {
-        super(key, value);
-    }
-
-    // Map.Entry interface
-    //-------------------------------------------------------------------------
-    /** 
-     * Sets the value stored in this <code>Map.Entry</code>.
-     * <p>
-     * This <code>Map.Entry</code> is not connected to a Map, so only the
-     * local data is changed.
-     *
-     * @param value  the new value
-     * @return the previous value
-     */
-    public Object setValue(Object value) {
-        Object answer = this.value;
-        this.value = value;
-        return answer;
-    }
-
-    /**
-     * Compares this <code>Map.Entry</code> with another <code>Map.Entry</code>.
-     * <p>
-     * Implemented per API documentation of {@link java.util.Map.Entry#equals(Object)}
-     * 
-     * @param obj  the object to compare to
-     * @return true if equal key and value
-     */
-    public boolean equals(Object obj) {
-        if (obj == this) {
-            return true;
-        }
-        if (obj instanceof Map.Entry == false) {
-            return false;
-        }
-        Map.Entry other = (Map.Entry) obj;
-        return
-            (getKey() == null ? other.getKey() == null : getKey().equals(other.getKey())) &&
-            (getValue() == null ? other.getValue() == null : getValue().equals(other.getValue()));
-    }
-
-    /**
-     * Gets a hashCode compatible with the equals method.
-     * <p>
-     * Implemented per API documentation of {@link java.util.Map.Entry#hashCode()}
-     * 
-     * @return a suitable hash code
-     */
-    public int hashCode() {
-        return (getKey() == null ? 0 : getKey().hashCode()) ^
-               (getValue() == null ? 0 : getValue().hashCode()); 
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/AbstractMapEntryDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/AbstractMapEntryDecorator.java
deleted file mode 100755
index 5268c40..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/AbstractMapEntryDecorator.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- *  Copyright 2003-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.commons.collections.keyvalue;
-
-import java.util.Map;
-
-import org.apache.commons.collections.KeyValue;
-
-/**
- * Provides a base decorator that allows additional functionality to be
- * added to a {@link java.util.Map.Entry Map.Entry}.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:28 $
- * 
- * @author Stephen Colebourne
- */
-public abstract class AbstractMapEntryDecorator implements Map.Entry, KeyValue {
-    
-    /** The <code>Map.Entry</code> to decorate */
-    protected final Map.Entry entry;
-
-    /**
-     * Constructor that wraps (not copies).
-     *
-     * @param entry  the <code>Map.Entry</code> to decorate, must not be null
-     * @throws IllegalArgumentException if the collection is null
-     */
-    public AbstractMapEntryDecorator(Map.Entry entry) {
-        if (entry == null) {
-            throw new IllegalArgumentException("Map Entry must not be null");
-        }
-        this.entry = entry;
-    }
-
-    /**
-     * Gets the map being decorated.
-     * 
-     * @return the decorated map
-     */
-    protected Map.Entry getMapEntry() {
-        return entry;
-    }
-
-    //-----------------------------------------------------------------------
-    public Object getKey() {
-        return entry.getKey();
-    }
-
-    public Object getValue() {
-        return entry.getValue();
-    }
-
-    public Object setValue(Object object) {
-        return entry.setValue(object);
-    }
-   
-    public boolean equals(Object object) {
-        if (object == this) {
-            return true;
-        }
-        return entry.equals(object);
-    }
-
-    public int hashCode() {
-        return entry.hashCode();
-    }
-
-    public String toString() {
-        return entry.toString();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/DefaultKeyValue.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/DefaultKeyValue.java
deleted file mode 100755
index 92a4fe6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/DefaultKeyValue.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- *  Copyright 2003-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.commons.collections.keyvalue;
-
-import java.util.Map;
-
-import org.apache.commons.collections.KeyValue;
-
-/**
- * A mutable <code>KeyValue</code> pair that does not implement
- * {@link java.util.Map.Entry Map.Entry}.
- * <p>
- * Note that a <code>DefaultKeyValue</code> instance may not contain
- * itself as a key or value.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:29 $
- * 
- * @author James Strachan
- * @author Michael A. Smith
- * @author Neil O'Toole
- * @author Stephen Colebourne
- */
-public class DefaultKeyValue extends AbstractKeyValue {
-
-    /**
-     * Constructs a new pair with a null key and null value.
-     */
-    public DefaultKeyValue() {
-        super(null, null);
-    }
-
-    /**
-     * Constructs a new pair with the specified key and given value.
-     *
-     * @param key  the key for the entry, may be null
-     * @param value  the value for the entry, may be null
-     */
-    public DefaultKeyValue(final Object key, final Object value) {
-        super(key, value);
-    }
-
-    /**
-     * Constructs a new pair from the specified <code>KeyValue</code>.
-     *
-     * @param pair  the pair to copy, must not be null
-     * @throws NullPointerException if the entry is null
-     */
-    public DefaultKeyValue(final KeyValue pair) {
-        super(pair.getKey(), pair.getValue());
-    }
-
-    /**
-     * Constructs a new pair from the specified <code>Map.Entry</code>.
-     *
-     * @param entry  the entry to copy, must not be null
-     * @throws NullPointerException if the entry is null
-     */
-    public DefaultKeyValue(final Map.Entry entry) {
-        super(entry.getKey(), entry.getValue());
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Sets the key.
-     *
-     * @param key  the new key
-     * @return the old key
-     * @throws IllegalArgumentException if key is this object
-     */
-    public Object setKey(final Object key) {
-        if (key == this) {
-            throw new IllegalArgumentException("DefaultKeyValue may not contain itself as a key.");
-        }
-
-        final Object old = this.key;
-        this.key = key;
-        return old;
-    }
-
-    /** 
-     * Sets the value.
-     *
-     * @return the old value of the value
-     * @param value the new value
-     * @throws IllegalArgumentException if value is this object
-     */
-    public Object setValue(final Object value) {
-        if (value == this) {
-            throw new IllegalArgumentException("DefaultKeyValue may not contain itself as a value.");
-        }
-
-        final Object old = this.value;
-        this.value = value;
-        return old;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns a new <code>Map.Entry</code> object with key and value from this pair.
-     * 
-     * @return a MapEntry instance
-     */
-    public Map.Entry toMapEntry() {
-        return new DefaultMapEntry(this);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Compares this <code>Map.Entry</code> with another <code>Map.Entry</code>.
-     * <p>
-     * Returns true if the compared object is also a <code>DefaultKeyValue</code>,
-     * and its key and value are equal to this object's key and value.
-     * 
-     * @param obj  the object to compare to
-     * @return true if equal key and value
-     */
-    public boolean equals(final Object obj) {
-        if (obj == this) {
-            return true;
-        }
-        if (obj instanceof DefaultKeyValue == false) {
-            return false;
-        }
-
-        DefaultKeyValue other = (DefaultKeyValue) obj;
-        return 
-            (getKey() == null ? other.getKey() == null : getKey().equals(other.getKey())) &&
-            (getValue() == null ? other.getValue() == null : getValue().equals(other.getValue()));
-    }
-
-    /**
-     * Gets a hashCode compatible with the equals method.
-     * <p>
-     * Implemented per API documentation of {@link java.util.Map.Entry#hashCode()},
-     * however subclasses may override this.
-     * 
-     * @return a suitable hash code
-     */
-    public int hashCode() {
-        return (getKey() == null ? 0 : getKey().hashCode()) ^
-               (getValue() == null ? 0 : getValue().hashCode());
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/DefaultMapEntry.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/DefaultMapEntry.java
deleted file mode 100755
index d37489c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/DefaultMapEntry.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- *  Copyright 2001-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.commons.collections.keyvalue;
-
-import java.util.Map;
-
-import org.apache.commons.collections.KeyValue;
-
-/**
- * A restricted implementation of {@link java.util.Map.Entry} that prevents
- * the <code>Map.Entry</code> contract from being broken.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:28 $
- * 
- * @author James Strachan
- * @author Michael A. Smith
- * @author Neil O'Toole
- * @author Stephen Colebourne
- */
-public final class DefaultMapEntry extends AbstractMapEntry {
-
-    /**
-     * Constructs a new entry with the specified key and given value.
-     *
-     * @param key  the key for the entry, may be null
-     * @param value  the value for the entry, may be null
-     */
-    public DefaultMapEntry(final Object key, final Object value) {
-        super(key, value);
-    }
-
-    /**
-     * Constructs a new entry from the specified <code>KeyValue</code>.
-     *
-     * @param pair  the pair to copy, must not be null
-     * @throws NullPointerException if the entry is null
-     */
-    public DefaultMapEntry(final KeyValue pair) {
-        super(pair.getKey(), pair.getValue());
-    }
-
-    /**
-     * Constructs a new entry from the specified <code>Map.Entry</code>.
-     *
-     * @param entry  the entry to copy, must not be null
-     * @throws NullPointerException if the entry is null
-     */
-    public DefaultMapEntry(final Map.Entry entry) {
-        super(entry.getKey(), entry.getValue());
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/MultiKey.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/MultiKey.java
deleted file mode 100755
index 1f80086..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/MultiKey.java
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.keyvalue;
-
-import java.io.Serializable;
-import java.util.Arrays;
-
-/** 
- * A <code>MultiKey</code> allows multiple map keys to be merged together.
- * <p>
- * The purpose of this class is to avoid the need to write code to handle
- * maps of maps. An example might be the need to lookup a filename by 
- * key and locale. The typical solution might be nested maps. This class
- * can be used instead by creating an instance passing in the key and locale.
- * <p>
- * Example usage:
- * <pre>
- * // populate map with data mapping key+locale to localizedText
- * Map map = new HashMap();
- * MultiKey multiKey = new MultiKey(key, locale);
- * map.put(multiKey, localizedText);
- *
- * // later retireve the localized text
- * MultiKey multiKey = new MultiKey(key, locale);
- * String localizedText = (String) map.get(multiKey);
- * </pre>
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:29 $
- * 
- * @author Howard Lewis Ship
- * @author Stephen Colebourne
- */
-public class MultiKey implements Serializable {
-    // This class could implement List, but that would confuse it's purpose
-
-    /** Serialisation version */
-    private static final long serialVersionUID = 4465448607415788805L;
-
-    /** The individual keys */
-    private final Object[] keys;
-    /** The cached hashCode */
-    private final int hashCode;
-    
-    /**
-     * Constructor taking two keys.
-     * <p>
-     * The keys should be immutable
-     * If they are not then they must not be changed after adding to the MultiKey.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     */
-    public MultiKey(Object key1, Object key2) {
-        this(new Object[] {key1, key2}, false);
-    }
-    
-    /**
-     * Constructor taking three keys.
-     * <p>
-     * The keys should be immutable
-     * If they are not then they must not be changed after adding to the MultiKey.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     */
-    public MultiKey(Object key1, Object key2, Object key3) {
-        this(new Object[] {key1, key2, key3}, false);
-    }
-    
-    /**
-     * Constructor taking four keys.
-     * <p>
-     * The keys should be immutable
-     * If they are not then they must not be changed after adding to the MultiKey.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @param key4  the fourth key
-     */
-    public MultiKey(Object key1, Object key2, Object key3, Object key4) {
-        this(new Object[] {key1, key2, key3, key4}, false);
-    }
-    
-    /**
-     * Constructor taking five keys.
-     * <p>
-     * The keys should be immutable
-     * If they are not then they must not be changed after adding to the MultiKey.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @param key4  the fourth key
-     * @param key5  the fifth key
-     */
-    public MultiKey(Object key1, Object key2, Object key3, Object key4, Object key5) {
-        this(new Object[] {key1, key2, key3, key4, key5}, false);
-    }
-    
-    /**
-     * Constructor taking an array of keys which is cloned.
-     * <p>
-     * The keys should be immutable
-     * If they are not then they must not be changed after adding to the MultiKey.
-     * <p>
-     * This is equivalent to <code>new MultiKey(keys, true)</code>.
-     *
-     * @param keys  the array of keys, not null
-     * @throws IllegalArgumentException if the key array is null
-     */
-    public MultiKey(Object[] keys) {
-        this(keys, true);
-    }
-    
-    /**
-     * Constructor taking an array of keys, optionally choosing whether to clone.
-     * <p>
-     * <b>If the array is not cloned, then it must not be modified.</b>
-     * <p>
-     * This method is public for performance reasons only, to avoid a clone.
-     * The hashcode is calculated once here in this method.
-     * Therefore, changing the array passed in would not change the hashcode but
-     * would change the equals method, which is a bug.
-     * <p>
-     * This is the only fully safe usage of this constructor, as the object array
-     * is never made available in a variable:
-     * <pre>
-     * new MultiKey(new Object[] {...}, false);
-     * </pre>
-     * <p>
-     * The keys should be immutable
-     * If they are not then they must not be changed after adding to the MultiKey.
-     *
-     * @param keys  the array of keys, not null
-     * @param makeClone  true to clone the array, false to assign it
-     * @throws IllegalArgumentException if the key array is null
-     * @since Commons Collections 3.1
-     */
-    public MultiKey(Object[] keys, boolean makeClone) {
-        super();
-        if (keys == null) {
-            throw new IllegalArgumentException("The array of keys must not be null");
-        }
-        if (makeClone) {
-            this.keys = (Object[]) keys.clone();
-        } else {
-            this.keys = keys;
-        }
-        
-        int total = 0;
-        for (int i = 0; i < keys.length; i++) {
-            if (keys[i] != null) {
-                total ^= keys[i].hashCode();
-            }
-        }
-        hashCode = total;
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Gets a clone of the array of keys.
-     * <p>
-     * The keys should be immutable
-     * If they are not then they must not be changed.
-     * 
-     * @return the individual keys
-     */
-    public Object[] getKeys() {
-        return (Object[]) keys.clone();
-    }
-    
-    /**
-     * Gets the key at the specified index.
-     * <p>
-     * The key should be immutable.
-     * If it is not then it must not be changed.
-     * 
-     * @param index  the index to retrieve
-     * @return the key at the index
-     * @throws IndexOutOfBoundsException if the index is invalid
-     * @since Commons Collections 3.1
-     */
-    public Object getKey(int index) {
-        return keys[index];
-    }
-    
-    /**
-     * Gets the size of the list of keys.
-     * 
-     * @return the size of the list of keys
-     * @since Commons Collections 3.1
-     */
-    public int size() {
-        return keys.length;
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Compares this object to another.
-     * <p>
-     * To be equal, the other object must be a <code>MultiKey</code> with the
-     * same number of keys which are also equal.
-     * 
-     * @param other  the other object to compare to
-     * @return true if equal
-     */
-    public boolean equals(Object other) {
-        if (other == this) {
-            return true;
-        }
-        if (other instanceof MultiKey) {
-            MultiKey otherMulti = (MultiKey) other;
-            return Arrays.equals(keys, otherMulti.keys);
-        }
-        return false;
-    }
-
-    /**
-     * Gets the combined hash code that is computed from all the keys.
-     * <p>
-     * This value is computed once and then cached, so elements should not
-     * change their hash codes once created (note that this is the same 
-     * constraint that would be used if the individual keys elements were
-     * themselves {@link java.util.Map Map} keys.
-     * 
-     * @return the hash code
-     */
-    public int hashCode() {
-        return hashCode;
-    }
-
-    /**
-     * Gets a debugging string version of the key.
-     * 
-     * @return a debugging string
-     */
-    public String toString() {
-        return "MultiKey" + Arrays.asList(keys).toString();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/TiedMapEntry.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/TiedMapEntry.java
deleted file mode 100755
index 5373bd4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/TiedMapEntry.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- *  Copyright 2003-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.commons.collections.keyvalue;
-
-import java.io.Serializable;
-import java.util.Map;
-
-import org.apache.commons.collections.KeyValue;
-
-/**
- * A {@link java.util.Map.Entry Map.Entry} tied to a map underneath.
- * <p>
- * This can be used to enable a map entry to make changes on the underlying
- * map, however this will probably mess up any iterators.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:28 $
- * 
- * @author Stephen Colebourne
- */
-public class TiedMapEntry implements Map.Entry, KeyValue, Serializable {
-
-    /** Serialization version */    
-    private static final long serialVersionUID = -8453869361373831205L;
-
-    /** The map underlying the entry/iterator */    
-    private final Map map;
-    /** The key */
-    private final Object key;
-
-    /**
-     * Constructs a new entry with the given Map and key.
-     *
-     * @param map  the map
-     * @param key  the key
-     */
-    public TiedMapEntry(Map map, Object key) {
-        super();
-        this.map = map;
-        this.key = key;
-    }
-
-    // Map.Entry interface
-    //-------------------------------------------------------------------------
-    /**
-     * Gets the key of this entry
-     * 
-     * @return the key
-     */
-    public Object getKey() {
-        return key;
-    }
-
-    /**
-     * Gets the value of this entry direct from the map.
-     * 
-     * @return the value
-     */
-    public Object getValue() {
-        return map.get(key);
-    }
-
-    /**
-     * Sets the value associated with the key direct onto the map.
-     * 
-     * @param value  the new value
-     * @return the old value
-     * @throws IllegalArgumentException if the value is set to this map entry
-     */
-    public Object setValue(Object value) {
-        if (value == this) {
-            throw new IllegalArgumentException("Cannot set value to this map entry");
-        }
-        return map.put(key, value);
-    }
-
-    /**
-     * Compares this <code>Map.Entry</code> with another <code>Map.Entry</code>.
-     * <p>
-     * Implemented per API documentation of {@link java.util.Map.Entry#equals(Object)}
-     * 
-     * @param obj  the object to compare to
-     * @return true if equal key and value
-     */
-    public boolean equals(Object obj) {
-        if (obj == this) {
-            return true;
-        }
-        if (obj instanceof Map.Entry == false) {
-            return false;
-        }
-        Map.Entry other = (Map.Entry) obj;
-        Object value = getValue();
-        return
-            (key == null ? other.getKey() == null : key.equals(other.getKey())) &&
-            (value == null ? other.getValue() == null : value.equals(other.getValue()));
-    }
-
-    /**
-     * Gets a hashCode compatible with the equals method.
-     * <p>
-     * Implemented per API documentation of {@link java.util.Map.Entry#hashCode()}
-     * 
-     * @return a suitable hash code
-     */
-    public int hashCode() {
-        Object value = getValue();
-        return (getKey() == null ? 0 : getKey().hashCode()) ^
-               (value == null ? 0 : value.hashCode()); 
-    }
-
-    /**
-     * Gets a string version of the entry.
-     * 
-     * @return entry as a string
-     */
-    public String toString() {
-        return getKey() + "=" + getValue();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/UnmodifiableMapEntry.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/UnmodifiableMapEntry.java
deleted file mode 100755
index 1399e0b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/UnmodifiableMapEntry.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- *  Copyright 2003-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.commons.collections.keyvalue;
-
-import java.util.Map;
-
-import org.apache.commons.collections.KeyValue;
-import org.apache.commons.collections.Unmodifiable;
-
-/**
- * A {@link java.util.Map.Entry Map.Entry} that throws
- * UnsupportedOperationException when <code>setValue</code> is called.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:28 $
- * 
- * @author Stephen Colebourne
- */
-public final class UnmodifiableMapEntry extends AbstractMapEntry implements Unmodifiable {
-
-    /**
-     * Constructs a new entry with the specified key and given value.
-     *
-     * @param key  the key for the entry, may be null
-     * @param value  the value for the entry, may be null
-     */
-    public UnmodifiableMapEntry(final Object key, final Object value) {
-        super(key, value);
-    }
-
-    /**
-     * Constructs a new entry from the specified <code>KeyValue</code>.
-     *
-     * @param pair  the pair to copy, must not be null
-     * @throws NullPointerException if the entry is null
-     */
-    public UnmodifiableMapEntry(final KeyValue pair) {
-        super(pair.getKey(), pair.getValue());
-    }
-
-    /**
-     * Constructs a new entry from the specified <code>Map.Entry</code>.
-     *
-     * @param entry  the entry to copy, must not be null
-     * @throws NullPointerException if the entry is null
-     */
-    public UnmodifiableMapEntry(final Map.Entry entry) {
-        super(entry.getKey(), entry.getValue());
-    }
-
-    /**
-     * Throws UnsupportedOperationException.
-     * 
-     * @param value  the new value
-     * @return the previous value
-     * @throws UnsupportedOperationException always
-     */
-    public Object setValue(Object value) {
-        throw new UnsupportedOperationException("setValue() is not supported");
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/package.html b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/package.html
deleted file mode 100755
index 31218ac..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/keyvalue/package.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!-- $Id: package.html,v 1.1 2009/05/27 22:16:29 mparker Exp $ -->
- <!--
-   Copyright 2003-2004 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-  -->
-<BODY>
-<p>
-This package contains implementations of collection and map related key/value classes.
-These are usually used in maps, however they can be used as data holders in any collection.
-<p>
-The following key/value designs are included:
-<ul>
-<li>Map Entry - various map entry implementations
-<li>KeyValue - a key and value pair, without map entry semantics
-<li>MultiKey - a holder of multiple keys tied together
-</ul>
-</pre>
-</BODY>
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/AbstractLinkedList.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/AbstractLinkedList.java
deleted file mode 100755
index 83aa8af..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/AbstractLinkedList.java
+++ /dev/null
@@ -1,1011 +0,0 @@
-/*
- *  Copyright 2001-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.list;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.lang.reflect.Array;
-import java.util.AbstractList;
-import java.util.Collection;
-import java.util.ConcurrentModificationException;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.NoSuchElementException;
-
-import org.apache.commons.collections.OrderedIterator;
-
-/**
- * An abstract implementation of a linked list which provides numerous points for
- * subclasses to override.
- * <p>
- * Overridable methods are provided to change the storage node and to change how
- * nodes are added to and removed. Hopefully, all you need for unusual subclasses
- * is here.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:31 $
- *
- * @author Rich Dougherty
- * @author Phil Steitz
- * @author Stephen Colebourne
- */
-public abstract class AbstractLinkedList implements List {
-
-    /*
-     * Implementation notes:
-     * - a standard circular doubly-linked list
-     * - a marker node is stored to mark the start and the end of the list
-     * - node creation and removal always occurs through createNode() and
-     *   removeNode().
-     * - a modification count is kept, with the same semantics as
-     * {@link java.util.LinkedList}.
-     * - respects {@link AbstractList#modCount}
-     */
-
-    /**
-     * A {@link Node} which indicates the start and end of the list and does not
-     * hold a value. The value of <code>next</code> is the first item in the
-     * list. The value of of <code>previous</code> is the last item in the list.
-     */
-    protected transient Node header;
-    /** The size of the list */
-    protected transient int size;
-    /** Modification count for iterators */
-    protected transient int modCount;
-
-    /**
-     * Constructor that does nothing intended for deserialization.
-     * <p>
-     * If this constructor is used by a serializable subclass then the init()
-     * method must be called.
-     */
-    protected AbstractLinkedList() {
-        super();
-    }
-
-    /**
-     * Constructs a list copying data from the specified collection.
-     * 
-     * @param coll  the collection to copy
-     */
-    protected AbstractLinkedList(Collection coll) {
-        super();
-        init();
-        addAll(coll);
-    }
-
-    /**
-     * The equivalent of a default constructor, broken out so it can be called
-     * by any constructor and by <code>readObject</code>.
-     * Subclasses which override this method should make sure they call super,
-     * so the list is initialised properly.
-     */
-    protected void init() {
-        header = createHeaderNode();
-    }
-
-    //-----------------------------------------------------------------------
-    public int size() {
-        return size;
-    }
-
-    public boolean isEmpty() {
-        return (size() == 0);
-    }
-
-    public Object get(int index) {
-        Node node = getNode(index, false);
-        return node.getValue();
-    }
-
-    //-----------------------------------------------------------------------
-    public Iterator iterator() {
-        return listIterator();
-    }
-
-    public ListIterator listIterator() {
-        return new LinkedListIterator(this, 0);
-    }
-
-    public ListIterator listIterator(int fromIndex) {
-        return new LinkedListIterator(this, fromIndex);
-    }
-
-    //-----------------------------------------------------------------------
-    public int indexOf(Object value) {
-        int i = 0;
-        for (Node node = header.next; node != header; node = node.next) {
-            if (isEqualValue(node.getValue(), value)) {
-                return i;
-            }
-            i++;
-        }
-        return -1;
-    }
-
-    public int lastIndexOf(Object value) {
-        int i = size - 1;
-        for (Node node = header.previous; node != header; node = node.previous) {
-            if (isEqualValue(node.getValue(), value)) {
-                return i;
-            }
-            i--;
-        }
-        return -1;
-    }
-
-    public boolean contains(Object value) {
-        return indexOf(value) != -1;
-    }
-
-    public boolean containsAll(Collection coll) {
-        Iterator it = coll.iterator();
-        while (it.hasNext()) {
-            if (contains(it.next()) == false) {
-                return false;
-            }
-        }
-        return true;
-    }
-    
-    //-----------------------------------------------------------------------
-    public Object[] toArray() {
-        return toArray(new Object[size]);
-    }
-
-    public Object[] toArray(Object[] array) {
-        // Extend the array if needed
-        if (array.length < size) {
-            Class componentType = array.getClass().getComponentType();
-            array = (Object[]) Array.newInstance(componentType, size);
-        }
-        // Copy the values into the array
-        int i = 0;
-        for (Node node = header.next; node != header; node = node.next, i++) {
-            array[i] = node.getValue();
-        }
-        // Set the value after the last value to null
-        if (array.length > size) {
-            array[size] = null;
-        }
-        return array;
-    }
-
-    /**
-     * Gets a sublist of the main list.
-     * 
-     * @param fromIndexInclusive  the index to start from
-     * @param toIndexExclusive  the index to end at
-     * @return the new sublist
-     */
-    public List subList(int fromIndexInclusive, int toIndexExclusive) {
-        return new LinkedSubList(this, fromIndexInclusive, toIndexExclusive);
-    }
-    
-    //-----------------------------------------------------------------------
-    public boolean add(Object value) {
-        addLast(value);
-        return true;
-    }
-    
-    public void add(int index, Object value) {
-        Node node = getNode(index, true);
-        addNodeBefore(node, value);
-    }
-    
-    public boolean addAll(Collection coll) {
-        return addAll(size, coll);
-    }
-
-    public boolean addAll(int index, Collection coll) {
-        Node node = getNode(index, true);
-        for (Iterator itr = coll.iterator(); itr.hasNext();) {
-            Object value = itr.next();
-            addNodeBefore(node, value);
-        }
-        return true;
-    }
-
-    //-----------------------------------------------------------------------
-    public Object remove(int index) {
-        Node node = getNode(index, false);
-        Object oldValue = node.getValue();
-        removeNode(node);
-        return oldValue;
-    }
-
-    public boolean remove(Object value) {
-        for (Node node = header.next; node != header; node = node.next) {
-            if (isEqualValue(node.getValue(), value)) {
-                removeNode(node);
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public boolean removeAll(Collection coll) {
-        boolean modified = false;
-        Iterator it = iterator();
-        while (it.hasNext()) {
-            if (coll.contains(it.next())) {
-                it.remove();
-                modified = true;
-            }
-        }
-        return modified;
-    }
-
-    //-----------------------------------------------------------------------
-    public boolean retainAll(Collection coll) {
-        boolean modified = false;
-        Iterator it = iterator();
-        while (it.hasNext()) {
-            if (coll.contains(it.next()) == false) {
-                it.remove();
-                modified = true;
-            }
-        }
-        return modified;
-    }
-
-    public Object set(int index, Object value) {
-        Node node = getNode(index, false);
-        Object oldValue = node.getValue();
-        updateNode(node, value);
-        return oldValue;
-    }
-
-    public void clear() {
-        removeAllNodes();
-    }
-    
-    //-----------------------------------------------------------------------
-    public Object getFirst() {
-        Node node = header.next;
-        if (node == header) {
-            throw new NoSuchElementException();
-        }
-        return node.getValue();
-    }
-
-    public Object getLast() {
-        Node node = header.previous;
-        if (node == header) {
-            throw new NoSuchElementException();
-        }
-        return node.getValue();
-    }
-
-    public boolean addFirst(Object o) {
-        addNodeAfter(header, o);
-        return true;
-    }
-
-    public boolean addLast(Object o) {
-        addNodeBefore(header, o);
-        return true;
-    }
-
-    public Object removeFirst() {
-        Node node = header.next;
-        if (node == header) {
-            throw new NoSuchElementException();
-        }
-        Object oldValue = node.getValue();
-        removeNode(node);
-        return oldValue;
-    }
-
-    public Object removeLast() {
-        Node node = header.previous;
-        if (node == header) {
-            throw new NoSuchElementException();
-        }
-        Object oldValue = node.getValue();
-        removeNode(node);
-        return oldValue;
-    }
-
-    //-----------------------------------------------------------------------
-    public boolean equals(Object obj) {
-        if (obj == this) {
-            return true;
-        }
-        if (obj instanceof List == false) {
-            return false;
-        }
-        List other = (List) obj;
-        if (other.size() != size()) {
-            return false;
-        }
-        ListIterator it1 = listIterator();
-        ListIterator it2 = other.listIterator();
-        while (it1.hasNext() && it2.hasNext()) {
-            Object o1 = it1.next();
-            Object o2 = it2.next();
-            if (!(o1 == null ? o2 == null : o1.equals(o2)))
-                return false;
-        }
-        return !(it1.hasNext() || it2.hasNext());
-    }
-
-    public int hashCode() {
-        int hashCode = 1;
-        Iterator it = iterator();
-        while (it.hasNext()) {
-            Object obj = it.next();
-            hashCode = 31 * hashCode + (obj == null ? 0 : obj.hashCode());
-        }
-        return hashCode;
-    }
-
-    public String toString() {
-        if (size() == 0) {
-            return "[]";
-        }
-        StringBuffer buf = new StringBuffer(16 * size());
-        buf.append("[");
-
-        Iterator it = iterator();
-        boolean hasNext = it.hasNext();
-        while (hasNext) {
-            Object value = it.next();
-            buf.append(value == this ? "(this Collection)" : value);
-            hasNext = it.hasNext();
-            if (hasNext) {
-                buf.append(", ");
-            }
-        }
-        buf.append("]");
-        return buf.toString();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Compares two values for equals.
-     * This implementation uses the equals method.
-     * Subclasses can override this to match differently.
-     * 
-     * @param value1  the first value to compare, may be null
-     * @param value2  the second value to compare, may be null
-     * @return true if equal
-     */
-    protected boolean isEqualValue(Object value1, Object value2) {
-        return (value1 == value2 || (value1 == null ? false : value1.equals(value2)));
-    }
-    
-    /**
-     * Updates the node with a new value.
-     * This implementation sets the value on the node.
-     * Subclasses can override this to record the change.
-     * 
-     * @param node  node to update
-     * @param value  new value of the node
-     */
-    protected void updateNode(Node node, Object value) {
-        node.setValue(value);
-    }
-
-    /**
-     * Creates a new node with previous, next and element all set to null.
-     * This implementation creates a new empty Node.
-     * Subclasses can override this to create a different class.
-     * 
-     * @return  newly created node
-     */
-    protected Node createHeaderNode() {
-        return new Node();
-    }
-
-    /**
-     * Creates a new node with the specified properties.
-     * This implementation creates a new Node with data.
-     * Subclasses can override this to create a different class.
-     * 
-     * @param value  value of the new node
-     */
-    protected Node createNode(Object value) {
-        return new Node(value);
-    }
-
-    /**
-     * Creates a new node with the specified object as its 
-     * <code>value</code> and inserts it before <code>node</code>.
-     * <p>
-     * This implementation uses {@link #createNode(Object)} and
-     * {@link #addNode(AbstractLinkedList.Node,AbstractLinkedList.Node)}.
-     *
-     * @param node  node to insert before
-     * @param value  value of the newly added node
-     * @throws NullPointerException if <code>node</code> is null
-     */
-    protected void addNodeBefore(Node node, Object value) {
-        Node newNode = createNode(value);
-        addNode(newNode, node);
-    }
-
-    /**
-     * Creates a new node with the specified object as its 
-     * <code>value</code> and inserts it after <code>node</code>.
-     * <p>
-     * This implementation uses {@link #createNode(Object)} and
-     * {@link #addNode(AbstractLinkedList.Node,AbstractLinkedList.Node)}.
-     * 
-     * @param node  node to insert after
-     * @param value  value of the newly added node
-     * @throws NullPointerException if <code>node</code> is null
-     */
-    protected void addNodeAfter(Node node, Object value) {
-        Node newNode = createNode(value);
-        addNode(newNode, node.next);
-    }
-
-    /**
-     * Inserts a new node into the list.
-     *
-     * @param nodeToInsert  new node to insert
-     * @param insertBeforeNode  node to insert before
-     * @throws NullPointerException if either node is null
-     */
-    protected void addNode(Node nodeToInsert, Node insertBeforeNode) {
-        nodeToInsert.next = insertBeforeNode;
-        nodeToInsert.previous = insertBeforeNode.previous;
-        insertBeforeNode.previous.next = nodeToInsert;
-        insertBeforeNode.previous = nodeToInsert;
-        size++;
-        modCount++;
-    }
-
-    /**
-     * Removes the specified node from the list.
-     *
-     * @param node  the node to remove
-     * @throws NullPointerException if <code>node</code> is null
-     */
-    protected void removeNode(Node node) {
-        node.previous.next = node.next;
-        node.next.previous = node.previous;
-        size--;
-        modCount++;
-    }
-
-    /**
-     * Removes all nodes by resetting the circular list marker.
-     */
-    protected void removeAllNodes() {
-        header.next = header;
-        header.previous = header;
-        size = 0;
-        modCount++;
-    }
-
-    /**
-     * Gets the node at a particular index.
-     * 
-     * @param index  the index, starting from 0
-     * @param endMarkerAllowed  whether or not the end marker can be returned if
-     * startIndex is set to the list's size
-     * @throws IndexOutOfBoundsException if the index is less than 0; equal to
-     * the size of the list and endMakerAllowed is false; or greater than the
-     * size of the list
-     */
-    protected Node getNode(int index, boolean endMarkerAllowed) throws IndexOutOfBoundsException {
-        // Check the index is within the bounds
-        if (index < 0) {
-            throw new IndexOutOfBoundsException("Couldn't get the node: " +
-                    "index (" + index + ") less than zero.");
-        }
-        if (!endMarkerAllowed && index == size) {
-            throw new IndexOutOfBoundsException("Couldn't get the node: " +
-                    "index (" + index + ") is the size of the list.");
-        }
-        if (index > size) {
-            throw new IndexOutOfBoundsException("Couldn't get the node: " +
-                    "index (" + index + ") greater than the size of the " +
-                    "list (" + size + ").");
-        }
-        // Search the list and get the node
-        Node node;
-        if (index < (size / 2)) {
-            // Search forwards
-            node = header.next;
-            for (int currentIndex = 0; currentIndex < index; currentIndex++) {
-                node = node.next;
-            }
-        } else {
-            // Search backwards
-            node = header;
-            for (int currentIndex = size; currentIndex > index; currentIndex--) {
-                node = node.previous;
-            }
-        }
-        return node;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Creates an iterator for the sublist.
-     * 
-     * @param subList  the sublist to get an iterator for
-     */
-    protected Iterator createSubListIterator(LinkedSubList subList) {
-        return createSubListListIterator(subList, 0);
-    }
-
-    /**
-     * Creates a list iterator for the sublist.
-     * 
-     * @param subList  the sublist to get an iterator for
-     * @param fromIndex  the index to start from, relative to the sublist
-     */
-    protected ListIterator createSubListListIterator(LinkedSubList subList, int fromIndex) {
-        return new LinkedSubListIterator(subList, fromIndex);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Serializes the data held in this object to the stream specified.
-     * <p>
-     * The first serializable subclass must call this method from
-     * <code>writeObject</code>.
-     */
-    protected void doWriteObject(ObjectOutputStream outputStream) throws IOException {
-        // Write the size so we know how many nodes to read back
-        outputStream.writeInt(size());
-        for (Iterator itr = iterator(); itr.hasNext();) {
-            outputStream.writeObject(itr.next());
-        }
-    }
-
-    /**
-     * Deserializes the data held in this object to the stream specified.
-     * <p>
-     * The first serializable subclass must call this method from
-     * <code>readObject</code>.
-     */
-    protected void doReadObject(ObjectInputStream inputStream) throws IOException, ClassNotFoundException {
-        init();
-        int size = inputStream.readInt();
-        for (int i = 0; i < size; i++) {
-            add(inputStream.readObject());
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * A node within the linked list.
-     * <p>
-     * From Commons Collections 3.1, all access to the <code>value</code> property
-     * is via the methods on this class.
-     */
-    protected static class Node {
-
-        /** A pointer to the node before this node */
-        protected Node previous;
-        /** A pointer to the node after this node */
-        protected Node next;
-        /** The object contained within this node */
-        protected Object value;
-
-        /**
-         * Constructs a new header node.
-         */
-        protected Node() {
-            super();
-            previous = this;
-            next = this;
-        }
-
-        /**
-         * Constructs a new node.
-         * 
-         * @param value  the value to store
-         */
-        protected Node(Object value) {
-            super();
-            this.value = value;
-        }
-        
-        /**
-         * Constructs a new node.
-         * 
-         * @param previous  the previous node in the list
-         * @param next  the next node in the list
-         * @param value  the value to store
-         */
-        protected Node(Node previous, Node next, Object value) {
-            super();
-            this.previous = previous;
-            this.next = next;
-            this.value = value;
-        }
-        
-        /**
-         * Gets the value of the node.
-         * 
-         * @return the value
-         * @since Commons Collections 3.1
-         */
-        protected Object getValue() {
-            return value;
-        }
-        
-        /**
-         * Sets the value of the node.
-         * 
-         * @param value  the value
-         * @since Commons Collections 3.1
-         */
-        protected void setValue(Object value) {
-            this.value = value;
-        }
-        
-        /**
-         * Gets the previous node.
-         * 
-         * @return the previous node
-         * @since Commons Collections 3.1
-         */
-        protected Node getPreviousNode() {
-            return previous;
-        }
-        
-        /**
-         * Sets the previous node.
-         * 
-         * @param previous  the previous node
-         * @since Commons Collections 3.1
-         */
-        protected void setPreviousNode(Node previous) {
-            this.previous = previous;
-        }
-        
-        /**
-         * Gets the next node.
-         * 
-         * @return the next node
-         * @since Commons Collections 3.1
-         */
-        protected Node getNextNode() {
-            return next;
-        }
-        
-        /**
-         * Sets the next node.
-         * 
-         * @param next  the next node
-         * @since Commons Collections 3.1
-         */
-        protected void setNextNode(Node next) {
-            this.next = next;
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * A list iterator over the linked list.
-     */
-    protected static class LinkedListIterator implements ListIterator, OrderedIterator {
-        
-        /** The parent list */
-        protected final AbstractLinkedList parent;
-
-        /**
-         * The node that will be returned by {@link #next()}. If this is equal
-         * to {@link AbstractLinkedList#header} then there are no more values to return.
-         */
-        protected Node next;
-
-        /**
-         * The index of {@link #next}.
-         */
-        protected int nextIndex;
-
-        /**
-         * The last node that was returned by {@link #next()} or {@link
-         * #previous()}. Set to <code>null</code> if {@link #next()} or {@link
-         * #previous()} haven't been called, or if the node has been removed
-         * with {@link #remove()} or a new node added with {@link #add(Object)}.
-         * Should be accessed through {@link #getLastNodeReturned()} to enforce
-         * this behaviour.
-         */
-        protected Node current;
-
-        /**
-         * The modification count that the list is expected to have. If the list
-         * doesn't have this count, then a
-         * {@link java.util.ConcurrentModificationException} may be thrown by
-         * the operations.
-         */
-        protected int expectedModCount;
-
-        /**
-         * Create a ListIterator for a list.
-         * 
-         * @param parent  the parent list
-         * @param fromIndex  the index to start at
-         */
-        protected LinkedListIterator(AbstractLinkedList parent, int fromIndex) throws IndexOutOfBoundsException {
-            super();
-            this.parent = parent;
-            this.expectedModCount = parent.modCount;
-            this.next = parent.getNode(fromIndex, true);
-            this.nextIndex = fromIndex;
-        }
-
-        /**
-         * Checks the modification count of the list is the value that this
-         * object expects.
-         * 
-         * @throws ConcurrentModificationException If the list's modification
-         * count isn't the value that was expected.
-         */
-        protected void checkModCount() {
-            if (parent.modCount != expectedModCount) {
-                throw new ConcurrentModificationException();
-            }
-        }
-
-        /**
-         * Gets the last node returned.
-         * 
-         * @throws IllegalStateException If {@link #next()} or
-         * {@link #previous()} haven't been called, or if the node has been removed
-         * with {@link #remove()} or a new node added with {@link #add(Object)}.
-         */
-        protected Node getLastNodeReturned() throws IllegalStateException {
-            if (current == null) {
-                throw new IllegalStateException();
-            }
-            return current;
-        }
-
-        public boolean hasNext() {
-            return next != parent.header;
-        }
-
-        public Object next() {
-            checkModCount();
-            if (!hasNext()) {
-                throw new NoSuchElementException("No element at index " + nextIndex + ".");
-            }
-            Object value = next.getValue();
-            current = next;
-            next = next.next;
-            nextIndex++;
-            return value;
-        }
-
-        public boolean hasPrevious() {
-            return next.previous != parent.header;
-        }
-
-        public Object previous() {
-            checkModCount();
-            if (!hasPrevious()) {
-                throw new NoSuchElementException("Already at start of list.");
-            }
-            next = next.previous;
-            Object value = next.getValue();
-            current = next;
-            nextIndex--;
-            return value;
-        }
-
-        public int nextIndex() {
-            return nextIndex;
-        }
-
-        public int previousIndex() {
-            // not normally overridden, as relative to nextIndex()
-            return nextIndex() - 1;
-        }
-
-        public void remove() {
-            checkModCount();
-            if (current == next) {
-                // remove() following previous()
-                next = next.next;
-                parent.removeNode(getLastNodeReturned());
-            } else {
-                // remove() following next()
-                parent.removeNode(getLastNodeReturned());
-                nextIndex--;
-            }
-            current = null;
-            expectedModCount++;
-        }
-
-        public void set(Object obj) {
-            checkModCount();
-            getLastNodeReturned().setValue(obj);
-        }
-
-        public void add(Object obj) {
-            checkModCount();
-            parent.addNodeBefore(next, obj);
-            current = null;
-            nextIndex++;
-            expectedModCount++;
-        }
-
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * A list iterator over the linked sub list.
-     */
-    protected static class LinkedSubListIterator extends LinkedListIterator {
-        
-        /** The parent list */
-        protected final LinkedSubList sub;
-        
-        protected LinkedSubListIterator(LinkedSubList sub, int startIndex) {
-            super(sub.parent, startIndex + sub.offset);
-            this.sub = sub;
-        }
-
-        public boolean hasNext() {
-            return (nextIndex() < sub.size);
-        }
-
-        public boolean hasPrevious() {
-            return (previousIndex() >= 0);
-        }
-
-        public int nextIndex() {
-            return (super.nextIndex() - sub.offset);
-        }
-
-        public void add(Object obj) {
-            super.add(obj);
-            sub.expectedModCount = parent.modCount;
-            sub.size++;
-        }
-        
-        public void remove() {
-            super.remove();
-            sub.expectedModCount = parent.modCount;
-            sub.size--;
-        }
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * The sublist implementation for AbstractLinkedList.
-     */
-    protected static class LinkedSubList extends AbstractList {
-        /** The main list */
-        AbstractLinkedList parent;
-        /** Offset from the main list */
-        int offset;
-        /** Sublist size */
-        int size;
-        /** Sublist modCount */
-        int expectedModCount;
-
-        protected LinkedSubList(AbstractLinkedList parent, int fromIndex, int toIndex) {
-            if (fromIndex < 0) {
-                throw new IndexOutOfBoundsException("fromIndex = " + fromIndex);
-            }
-            if (toIndex > parent.size()) {
-                throw new IndexOutOfBoundsException("toIndex = " + toIndex);
-            }
-            if (fromIndex > toIndex) {
-                throw new IllegalArgumentException("fromIndex(" + fromIndex + ") > toIndex(" + toIndex + ")");
-            }
-            this.parent = parent;
-            this.offset = fromIndex;
-            this.size = toIndex - fromIndex;
-            this.expectedModCount = parent.modCount;
-        }
-
-        public int size() {
-            checkModCount();
-            return size;
-        }
-
-        public Object get(int index) {
-            rangeCheck(index, size);
-            checkModCount();
-            return parent.get(index + offset);
-        }
-
-        public void add(int index, Object obj) {
-            rangeCheck(index, size + 1);
-            checkModCount();
-            parent.add(index + offset, obj);
-            expectedModCount = parent.modCount;
-            size++;
-            LinkedSubList.this.modCount++;
-        }
-
-        public Object remove(int index) {
-            rangeCheck(index, size);
-            checkModCount();
-            Object result = parent.remove(index + offset);
-            expectedModCount = parent.modCount;
-            size--;
-            LinkedSubList.this.modCount++;
-            return result;
-        }
-
-        public boolean addAll(Collection coll) {
-            return addAll(size, coll);
-        }
-
-        public boolean addAll(int index, Collection coll) {
-            rangeCheck(index, size + 1);
-            int cSize = coll.size();
-            if (cSize == 0) {
-                return false;
-            }
-
-            checkModCount();
-            parent.addAll(offset + index, coll);
-            expectedModCount = parent.modCount;
-            size += cSize;
-            LinkedSubList.this.modCount++;
-            return true;
-        }
-
-        public Object set(int index, Object obj) {
-            rangeCheck(index, size);
-            checkModCount();
-            return parent.set(index + offset, obj);
-        }
-
-        public void clear() {
-            checkModCount();
-            Iterator it = iterator();
-            while (it.hasNext()) {
-                it.next();
-                it.remove();
-            }
-        }
-
-        public Iterator iterator() {
-            checkModCount();
-            return parent.createSubListIterator(this);
-        }
-
-        public ListIterator listIterator(final int index) {
-            rangeCheck(index, size + 1);
-            checkModCount();
-            return parent.createSubListListIterator(this, index);
-        }
-
-        public List subList(int fromIndexInclusive, int toIndexExclusive) {
-            return new LinkedSubList(parent, fromIndexInclusive + offset, toIndexExclusive + offset);
-        }
-
-        protected void rangeCheck(int index, int beyond) {
-            if (index < 0 || index >= beyond) {
-                throw new IndexOutOfBoundsException("Index '" + index + "' out of bounds for size '" + size + "'");
-            }
-        }
-
-        protected void checkModCount() {
-            if (parent.modCount != expectedModCount) {
-                throw new ConcurrentModificationException();
-            }
-        }
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/AbstractListDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/AbstractListDecorator.java
deleted file mode 100755
index e187387..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/AbstractListDecorator.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.list;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.ListIterator;
-
-import org.apache.commons.collections.collection.AbstractCollectionDecorator;
-
-/**
- * Decorates another <code>List</code> to provide additional behaviour.
- * <p>
- * Methods are forwarded directly to the decorated list.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:31 $
- * 
- * @author Stephen Colebourne
- */
-public abstract class AbstractListDecorator extends AbstractCollectionDecorator implements List {
-
-    /**
-     * Constructor only used in deserialization, do not use otherwise.
-     * @since Commons Collections 3.1
-     */
-    protected AbstractListDecorator() {
-        super();
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param list  the list to decorate, must not be null
-     * @throws IllegalArgumentException if list is null
-     */
-    protected AbstractListDecorator(List list) {
-        super(list);
-    }
-
-    /**
-     * Gets the list being decorated.
-     * 
-     * @return the decorated list
-     */
-    protected List getList() {
-        return (List) getCollection();
-    }
-
-    //-----------------------------------------------------------------------
-    public void add(int index, Object object) {
-        getList().add(index, object);
-    }
-
-    public boolean addAll(int index, Collection coll) {
-        return getList().addAll(index, coll);
-    }
-
-    public Object get(int index) {
-        return getList().get(index);
-    }
-
-    public int indexOf(Object object) {
-        return getList().indexOf(object);
-    }
-
-    public int lastIndexOf(Object object) {
-        return getList().lastIndexOf(object);
-    }
-
-    public ListIterator listIterator() {
-        return getList().listIterator();
-    }
-
-    public ListIterator listIterator(int index) {
-        return getList().listIterator(index);
-    }
-
-    public Object remove(int index) {
-        return getList().remove(index);
-    }
-
-    public Object set(int index, Object object) {
-        return getList().set(index, object);
-    }
-
-    public List subList(int fromIndex, int toIndex) {
-        return getList().subList(fromIndex, toIndex);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/AbstractSerializableListDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/AbstractSerializableListDecorator.java
deleted file mode 100755
index fbccf54..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/AbstractSerializableListDecorator.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- *  Copyright 2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.list;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * Serializable subclass of AbstractListDecorator.
- * 
- * @author Stephen Colebourne
- * @since Commons Collections 3.1
- */
-public abstract class AbstractSerializableListDecorator
-        extends AbstractListDecorator
-        implements Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 2684959196747496299L;
-
-    /**
-     * Constructor.
-     */
-    protected AbstractSerializableListDecorator(List list) {
-        super(list);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the list out using a custom routine.
-     * 
-     * @param out  the output stream
-     * @throws IOException
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeObject(collection);
-    }
-
-    /**
-     * Read the list in using a custom routine.
-     * 
-     * @param in  the input stream
-     * @throws IOException
-     * @throws ClassNotFoundException
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        collection = (Collection) in.readObject();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/CursorableLinkedList.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/CursorableLinkedList.java
deleted file mode 100755
index de19053..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/CursorableLinkedList.java
+++ /dev/null
@@ -1,604 +0,0 @@
-/*
- *  Copyright 2002-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.list;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.ConcurrentModificationException;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-
-/**
- * A <code>List</code> implementation with a <code>ListIterator</code> that
- * allows concurrent modifications to the underlying list.
- * <p>
- * This implementation supports all of the optional {@link List} operations.
- * It extends <code>AbstractLinkedList</code> and thus provides the
- * stack/queue/dequeue operations available in {@link java.util.LinkedList}.
- * <p>
- * The main feature of this class is the ability to modify the list and the
- * iterator at the same time. Both the {@link #listIterator()} and {@link #cursor()}
- * methods provides access to a <code>Cursor</code> instance which extends
- * <code>ListIterator</code>. The cursor allows changes to the list concurrent
- * with changes to the iterator. Note that the {@link #iterator()} method and
- * sublists do <b>not</b> provide this cursor behaviour.
- * <p>
- * The <code>Cursor</code> class is provided partly for backwards compatibility
- * and partly because it allows the cursor to be directly closed. Closing the
- * cursor is optional because references are held via a <code>WeakReference</code>.
- * For most purposes, simply modify the iterator and list at will, and then let
- * the garbage collector to the rest.
- * <p>
- * <b>Note that this implementation is not synchronized.</b>
- *
- * @see java.util.LinkedList
- * @since Commons Collections 1.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:31 $
- * 
- * @author Rodney Waldhoff
- * @author Janek Bogucki
- * @author Simon Kitching
- * @author Stephen Colebourne
- */
-public class CursorableLinkedList extends AbstractLinkedList implements Serializable {
-
-    /** Ensure serialization compatibility */
-    private static final long serialVersionUID = 8836393098519411393L;
-
-    /** A list of the cursor currently open on this list */
-    protected transient List cursors = new ArrayList();
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that creates.
-     */
-    public CursorableLinkedList() {
-        super();
-        init(); // must call init() as use super();
-    }
-
-    /**
-     * Constructor that copies the specified collection
-     * 
-     * @param coll  the collection to copy
-     */
-    public CursorableLinkedList(Collection coll) {
-        super(coll);
-    }
-
-    /**
-     * The equivalent of a default constructor called
-     * by any constructor and by <code>readObject</code>.
-     */
-    protected void init() {
-        super.init();
-        cursors = new ArrayList();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns an iterator that does <b>not</b> support concurrent modification.
-     * <p>
-     * If the underlying list is modified while iterating using this iterator
-     * a ConcurrentModificationException will occur.
-     * The cursor behaviour is available via {@link #listIterator()}.
-     * 
-     * @return a new iterator that does <b>not</b> support concurrent modification
-     */
-    public Iterator iterator() {
-        return super.listIterator(0);
-    }
-
-    /**
-     * Returns a cursor iterator that allows changes to the underlying list in parallel.
-     * <p>
-     * The cursor enables iteration and list changes to occur in any order without
-     * invalidating the iterator (from one thread). When elements are added to the
-     * list, an event is fired to all active cursors enabling them to adjust to the
-     * change in the list.
-     * <p>
-     * When the "current" (i.e., last returned by {@link ListIterator#next}
-     * or {@link ListIterator#previous}) element of the list is removed,
-     * the cursor automatically adjusts to the change (invalidating the
-     * last returned value such that it cannot be removed).
-     * 
-     * @return a new cursor iterator
-     */
-    public ListIterator listIterator() {
-        return cursor(0);
-    }
-
-    /**
-     * Returns a cursor iterator that allows changes to the underlying list in parallel.
-     * <p>
-     * The cursor enables iteration and list changes to occur in any order without
-     * invalidating the iterator (from one thread). When elements are added to the
-     * list, an event is fired to all active cursors enabling them to adjust to the
-     * change in the list.
-     * <p>
-     * When the "current" (i.e., last returned by {@link ListIterator#next}
-     * or {@link ListIterator#previous}) element of the list is removed,
-     * the cursor automatically adjusts to the change (invalidating the
-     * last returned value such that it cannot be removed).
-     * 
-     * @param fromIndex  the index to start from
-     * @return a new cursor iterator
-     */
-    public ListIterator listIterator(int fromIndex) {
-        return cursor(fromIndex);
-    }
-
-    /**
-     * Returns a {@link Cursor} for iterating through the elements of this list.
-     * <p>
-     * A <code>Cursor</code> is a <code>ListIterator</code> with an additional
-     * <code>close()</code> method. Calling this method immediately discards the
-     * references to the cursor. If it is not called, then the garbage collector
-     * will still remove the reference as it is held via a <code>WeakReference</code>.
-     * <p>
-     * The cursor enables iteration and list changes to occur in any order without
-     * invalidating the iterator (from one thread). When elements are added to the
-     * list, an event is fired to all active cursors enabling them to adjust to the
-     * change in the list.
-     * <p>
-     * When the "current" (i.e., last returned by {@link ListIterator#next}
-     * or {@link ListIterator#previous}) element of the list is removed,
-     * the cursor automatically adjusts to the change (invalidating the
-     * last returned value such that it cannot be removed).
-     * <p>
-     * The {@link #listIterator()} method returns the same as this method, and can
-     * be cast to a <code>Cursor</code> if the <code>close</code> method is required.
-     *
-     * @return a new cursor iterator
-     */
-    public CursorableLinkedList.Cursor cursor() {
-        return cursor(0);
-    }
-
-    /**
-     * Returns a {@link Cursor} for iterating through the elements of this list
-     * starting from a specified index.
-     * <p>
-     * A <code>Cursor</code> is a <code>ListIterator</code> with an additional
-     * <code>close()</code> method. Calling this method immediately discards the
-     * references to the cursor. If it is not called, then the garbage collector
-     * will still remove the reference as it is held via a <code>WeakReference</code>.
-     * <p>
-     * The cursor enables iteration and list changes to occur in any order without
-     * invalidating the iterator (from one thread). When elements are added to the
-     * list, an event is fired to all active cursors enabling them to adjust to the
-     * change in the list.
-     * <p>
-     * When the "current" (i.e., last returned by {@link ListIterator#next}
-     * or {@link ListIterator#previous}) element of the list is removed,
-     * the cursor automatically adjusts to the change (invalidating the
-     * last returned value such that it cannot be removed).
-     * <p>
-     * The {@link #listIterator(int)} method returns the same as this method, and can
-     * be cast to a <code>Cursor</code> if the <code>close</code> method is required.
-     *
-     * @param fromIndex  the index to start from
-     * @return a new cursor iterator
-     * @throws IndexOutOfBoundsException if the index is out of range
-     *      (index &lt; 0 || index &gt; size()).
-     */
-    public CursorableLinkedList.Cursor cursor(int fromIndex) {
-        Cursor cursor = new Cursor(this, fromIndex);
-        registerCursor(cursor);
-        return cursor;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Updates the node with a new value.
-     * This implementation sets the value on the node.
-     * Subclasses can override this to record the change.
-     * 
-     * @param node  node to update
-     * @param value  new value of the node
-     */
-    protected void updateNode(Node node, Object value) {
-        super.updateNode(node, value);
-        broadcastNodeChanged(node);
-    }
-
-    /**
-     * Inserts a new node into the list.
-     *
-     * @param nodeToInsert  new node to insert
-     * @param insertBeforeNode  node to insert before
-     * @throws NullPointerException if either node is null
-     */
-    protected void addNode(Node nodeToInsert, Node insertBeforeNode) {
-        super.addNode(nodeToInsert, insertBeforeNode);
-        broadcastNodeInserted(nodeToInsert);
-    }
-    
-    /**
-     * Removes the specified node from the list.
-     *
-     * @param node  the node to remove
-     * @throws NullPointerException if <code>node</code> is null
-     */
-    protected void removeNode(Node node) {
-        super.removeNode(node);
-        broadcastNodeRemoved(node);
-    }
-
-    /**
-     * Removes all nodes by iteration.
-     */
-    protected void removeAllNodes() {
-        if (size() > 0) {
-            // superclass implementation would break all the iterators
-            Iterator it = iterator();
-            while (it.hasNext()) {
-                it.next();
-                it.remove();
-            }
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Registers a cursor to be notified of changes to this list.
-     * 
-     * @param cursor  the cursor to register
-     */
-    protected void registerCursor(Cursor cursor) {
-        // We take this opportunity to clean the cursors list
-        // of WeakReference objects to garbage-collected cursors.
-        for (Iterator it = cursors.iterator(); it.hasNext();) {
-            WeakReference ref = (WeakReference) it.next();
-            if (ref.get() == null) {
-                it.remove();
-            }
-        }
-        cursors.add(new WeakReference(cursor));
-    }
-
-    /**
-     * Deregisters a cursor from the list to be notified of changes.
-     * 
-     * @param cursor  the cursor to deregister
-     */
-    protected void unregisterCursor(Cursor cursor) {
-        for (Iterator it = cursors.iterator(); it.hasNext();) {
-            WeakReference ref = (WeakReference) it.next();
-            Cursor cur = (Cursor) ref.get();
-            if (cur == null) {
-                // some other unrelated cursor object has been 
-                // garbage-collected; let's take the opportunity to
-                // clean up the cursors list anyway..
-                it.remove();
-
-            } else if (cur == cursor) {
-                ref.clear();
-                it.remove();
-                break;
-            }
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Informs all of my registered cursors that the specified
-     * element was changed.
-     * 
-     * @param node  the node that was changed
-     */
-    protected void broadcastNodeChanged(Node node) {
-        Iterator it = cursors.iterator();
-        while (it.hasNext()) {
-            WeakReference ref = (WeakReference) it.next();
-            Cursor cursor = (Cursor) ref.get();
-            if (cursor == null) {
-                it.remove(); // clean up list
-            } else {
-                cursor.nodeChanged(node);
-            }
-        }
-    }
-
-    /**
-     * Informs all of my registered cursors that the specified
-     * element was just removed from my list.
-     * 
-     * @param node  the node that was changed
-     */
-    protected void broadcastNodeRemoved(Node node) {
-        Iterator it = cursors.iterator();
-        while (it.hasNext()) {
-            WeakReference ref = (WeakReference) it.next();
-            Cursor cursor = (Cursor) ref.get();
-            if (cursor == null) {
-                it.remove(); // clean up list
-            } else {
-                cursor.nodeRemoved(node);
-            }
-        }
-    }
-
-    /**
-     * Informs all of my registered cursors that the specified
-     * element was just added to my list.
-     * 
-     * @param node  the node that was changed
-     */
-    protected void broadcastNodeInserted(Node node) {
-        Iterator it = cursors.iterator();
-        while (it.hasNext()) {
-            WeakReference ref = (WeakReference) it.next();
-            Cursor cursor = (Cursor) ref.get();
-            if (cursor == null) {
-                it.remove(); // clean up list
-            } else {
-                cursor.nodeInserted(node);
-            }
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Serializes the data held in this object to the stream specified.
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        doWriteObject(out);
-    }
-
-    /**
-     * Deserializes the data held in this object to the stream specified.
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        doReadObject(in);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Creates a list iterator for the sublist.
-     * 
-     * @param subList  the sublist to get an iterator for
-     * @param fromIndex  the index to start from, relative to the sublist
-     */
-    protected ListIterator createSubListListIterator(LinkedSubList subList, int fromIndex) {
-        SubCursor cursor = new SubCursor(subList, fromIndex);
-        registerCursor(cursor);
-        return cursor;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * An extended <code>ListIterator</code> that allows concurrent changes to
-     * the underlying list.
-     */
-    public static class Cursor extends AbstractLinkedList.LinkedListIterator {
-        /** Is the cursor valid (not closed) */
-        boolean valid = true;
-        /** Is the next index valid */
-        boolean nextIndexValid = true;
-        /** Flag to indicate if the current element was removed by another object. */
-        boolean currentRemovedByAnother = false;
-        
-        /**
-         * Constructs a new cursor.
-         * 
-         * @param index  the index to start from
-         */
-        protected Cursor(CursorableLinkedList parent, int index) {
-            super(parent, index);
-            valid = true;
-        }
-
-        /**
-         * Removes the item last returned by this iterator.
-         * <p>
-         * There may have been subsequent alterations to the list
-         * since you obtained this item, however you can still remove it.
-         * You can even remove it if the item is no longer in the main list.
-         * However, you can't call this method on the same iterator more
-         * than once without calling next() or previous().
-         *
-         * @throws IllegalStateException if there is no item to remove
-         */
-        public void remove() {
-            // overridden, as the nodeRemoved() method updates the iterator
-            // state in the parent.removeNode() call below
-            if (current == null && currentRemovedByAnother) {
-                // quietly ignore, as the last returned node was removed
-                // by the list or some other iterator
-                // by ignoring it, we keep this iterator independent from
-                // other changes as much as possible
-            } else {
-                checkModCount();
-                parent.removeNode(getLastNodeReturned());
-            }
-            currentRemovedByAnother = false;
-        }
-
-        /**
-         * Adds an object to the list.
-         * The object added here will be the new 'previous' in the iterator.
-         * 
-         * @param obj  the object to add
-         */
-        public void add(Object obj) {
-            // overridden, as the nodeInserted() method updates the iterator state
-            super.add(obj);
-            // matches the (next.previous == node) clause in nodeInserted()
-            // thus next gets changed - reset it again here
-            next = next.next;
-        }
-        
-        // set is not overridden, as it works ok
-        // note that we want it to throw an exception if the element being
-        // set has been removed from the real list (compare this with the
-        // remove method where we silently ignore this case)
-
-        /**
-         * Gets the index of the next element to be returned.
-         * 
-         * @return the next index
-         */
-        public int nextIndex() {
-            if (nextIndexValid == false) {
-                if (next == parent.header) {
-                    nextIndex = parent.size();
-                } else {
-                    int pos = 0;
-                    Node temp = parent.header.next;
-                    while (temp != next) {
-                        pos++;
-                        temp = temp.next;
-                    }
-                    nextIndex = pos;
-                }
-                nextIndexValid = true;
-            }
-            return nextIndex;
-        }
-
-        /**
-         * Handle event from the list when a node has changed.
-         * 
-         * @param node  the node that changed
-         */
-        protected void nodeChanged(Node node) {
-            // do nothing
-        }
-
-        /**
-         * Handle event from the list when a node has been removed.
-         * 
-         * @param node  the node that was removed
-         */
-        protected void nodeRemoved(Node node) {
-            if (node == next && node == current) {
-                // state where next() followed by previous()
-                next = node.next;
-                current = null;
-                currentRemovedByAnother = true;
-            } else if (node == next) {
-                // state where next() not followed by previous()
-                // and we are matching next node
-                next = node.next;
-                currentRemovedByAnother = false;
-            } else if (node == current) {
-                // state where next() not followed by previous()
-                // and we are matching current (last returned) node
-                current = null;
-                currentRemovedByAnother = true;
-                nextIndex--;
-            } else {
-                nextIndexValid = false;
-                currentRemovedByAnother = false;
-            }
-        }
-
-        /**
-         * Handle event from the list when a node has been added.
-         * 
-         * @param node  the node that was added
-         */
-        protected void nodeInserted(Node node) {
-            if (node.previous == current) {
-                next = node;
-            } else if (next.previous == node) {
-                next = node;
-            } else {
-                nextIndexValid = false;
-            }
-        }
-
-        /**
-         * Override superclass modCount check, and replace it with our valid flag.
-         */
-        protected void checkModCount() {
-            if (!valid) {
-                throw new ConcurrentModificationException("Cursor closed");
-            }
-        }
-
-        /**
-         * Mark this cursor as no longer being needed. Any resources
-         * associated with this cursor are immediately released.
-         * In previous versions of this class, it was mandatory to close
-         * all cursor objects to avoid memory leaks. It is <i>no longer</i>
-         * necessary to call this close method; an instance of this class
-         * can now be treated exactly like a normal iterator.
-         */
-        public void close() {
-            if (valid) {
-                ((CursorableLinkedList) parent).unregisterCursor(this);
-                valid = false;
-            }
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * A cursor for the sublist based on LinkedSubListIterator.
-     *
-     * @since Commons Collections 3.2
-     */
-    protected static class SubCursor extends Cursor {
-
-        /** The parent list */
-        protected final LinkedSubList sub;
-
-        /**
-         * Constructs a new cursor.
-         * 
-         * @param index  the index to start from
-         */
-        protected SubCursor(LinkedSubList sub, int index) {
-            super((CursorableLinkedList) sub.parent, index + sub.offset);
-            this.sub = sub;
-        }
-
-        public boolean hasNext() {
-            return (nextIndex() < sub.size);
-        }
-
-        public boolean hasPrevious() {
-            return (previousIndex() >= 0);
-        }
-
-        public int nextIndex() {
-            return (super.nextIndex() - sub.offset);
-        }
-
-        public void add(Object obj) {
-            super.add(obj);
-            sub.expectedModCount = parent.modCount;
-            sub.size++;
-        }
-
-        public void remove() {
-            super.remove();
-            sub.expectedModCount = parent.modCount;
-            sub.size--;
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/FixedSizeList.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/FixedSizeList.java
deleted file mode 100755
index 214dc3c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/FixedSizeList.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.list;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-
-import org.apache.commons.collections.BoundedCollection;
-import org.apache.commons.collections.iterators.AbstractListIteratorDecorator;
-import org.apache.commons.collections.iterators.UnmodifiableIterator;
-
-/**
- * Decorates another <code>List</code> to fix the size preventing add/remove.
- * <p>
- * The add, remove, clear and retain operations are unsupported.
- * The set method is allowed (as it doesn't change the list size).
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- * 
- * @author Stephen Colebourne
- * @author Paul Jack
- */
-public class FixedSizeList
-        extends AbstractSerializableListDecorator
-        implements BoundedCollection {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -2218010673611160319L;
-
-    /**
-     * Factory method to create a fixed size list.
-     * 
-     * @param list  the list to decorate, must not be null
-     * @throws IllegalArgumentException if list is null
-     */
-    public static List decorate(List list) {
-        return new FixedSizeList(list);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param list  the list to decorate, must not be null
-     * @throws IllegalArgumentException if list is null
-     */
-    protected FixedSizeList(List list) {
-        super(list);
-    }
-
-    //-----------------------------------------------------------------------
-    public boolean add(Object object) {
-        throw new UnsupportedOperationException("List is fixed size");
-    }
-
-    public void add(int index, Object object) {
-        throw new UnsupportedOperationException("List is fixed size");
-    }
-
-    public boolean addAll(Collection coll) {
-        throw new UnsupportedOperationException("List is fixed size");
-    }
-
-    public boolean addAll(int index, Collection coll) {
-        throw new UnsupportedOperationException("List is fixed size");
-    }
-
-    public void clear() {
-        throw new UnsupportedOperationException("List is fixed size");
-    }
-
-    public Object get(int index) {
-        return getList().get(index);
-    }
-
-    public int indexOf(Object object) {
-        return getList().indexOf(object);
-    }
-
-    public Iterator iterator() {
-        return UnmodifiableIterator.decorate(getCollection().iterator());
-    }
-
-    public int lastIndexOf(Object object) {
-        return getList().lastIndexOf(object);
-    }
-
-    public ListIterator listIterator() {
-        return new FixedSizeListIterator(getList().listIterator(0));
-    }
-
-    public ListIterator listIterator(int index) {
-        return new FixedSizeListIterator(getList().listIterator(index));
-    }
-
-    public Object remove(int index) {
-        throw new UnsupportedOperationException("List is fixed size");
-    }
-
-    public boolean remove(Object object) {
-        throw new UnsupportedOperationException("List is fixed size");
-    }
-
-    public boolean removeAll(Collection coll) {
-        throw new UnsupportedOperationException("List is fixed size");
-    }
-
-    public boolean retainAll(Collection coll) {
-        throw new UnsupportedOperationException("List is fixed size");
-    }
-
-    public Object set(int index, Object object) {
-        return getList().set(index, object);
-    }
-
-    public List subList(int fromIndex, int toIndex) {
-        List sub = getList().subList(fromIndex, toIndex);
-        return new FixedSizeList(sub);
-    }
-
-    /**
-     * List iterator that only permits changes via set()
-     */
-    static class FixedSizeListIterator extends AbstractListIteratorDecorator {
-        protected FixedSizeListIterator(ListIterator iterator) {
-            super(iterator);
-        }
-        public void remove() {
-            throw new UnsupportedOperationException("List is fixed size");
-        }
-        public void add(Object object) {
-            throw new UnsupportedOperationException("List is fixed size");
-        }
-    }
-
-    public boolean isFull() {
-        return true;
-    }
-
-    public int maxSize() {
-        return size();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/GrowthList.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/GrowthList.java
deleted file mode 100755
index 54eb8b5..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/GrowthList.java
+++ /dev/null
@@ -1,185 +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.
- */
-package org.apache.commons.collections.list;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Decorates another <code>List</code> to make it seamlessly grow when
- * indices larger than the list size are used on add and set,
- * avoiding most IndexOutOfBoundsExceptions.
- * <p>
- * This class avoids errors by growing when a set or add method would
- * normally throw an IndexOutOfBoundsException.
- * Note that IndexOutOfBoundsException IS returned for invalid negative indices.
- * <p>
- * Trying to set or add to an index larger than the size will cause the list
- * to grow (using <code>null</code> elements). Clearly, care must be taken
- * not to use excessively large indices, as the internal list will grow to
- * match.
- * <p>
- * Trying to use any method other than add or set with an invalid index will
- * call the underlying list and probably result in an IndexOutOfBoundsException.
- * <p>
- * Take care when using this list with <code>null</code> values, as
- * <code>null</code> is the value added when growing the list.
- * <p>
- * All sub-lists will access the underlying list directly, and will throw
- * IndexOutOfBoundsExceptions.
- * <p>
- * This class differs from {@link LazyList} because here growth occurs on
- * set and add, where <code>LazyList</code> grows on get. However, they
- * can be used together by decorating twice.
- *
- * @see LazyList
- * @since Commons Collections 3.2
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- *
- * @author Stephen Colebourne
- * @author Paul Legato
- */
-public class GrowthList extends AbstractSerializableListDecorator {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -3620001881672L;
-
-    /**
-     * Factory method to create a growth list.
-     *
-     * @param list  the list to decorate, must not be null
-     * @throws IllegalArgumentException if list is null
-     */
-    public static List decorate(List list) {
-        return new GrowthList(list);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that uses an ArrayList internally.
-     */
-    public GrowthList() {
-        super(new ArrayList());
-    }
-
-    /**
-     * Constructor that uses an ArrayList internally.
-     *
-     * @param initialSize  the initial size of the ArrayList
-     * @throws IllegalArgumentException if initial size is invalid
-     */
-    public GrowthList(int initialSize) {
-        super(new ArrayList(initialSize));
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     *
-     * @param list  the list to decorate, must not be null
-     * @throws IllegalArgumentException if list is null
-     */
-    protected GrowthList(List list) {
-        super(list);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Decorate the add method to perform the growth behaviour.
-     * <p>
-     * If the requested index is greater than the current size, the list will
-     * grow to the new size. Indices between the old size and the requested
-     * size will be filled with <code>null</code>.
-     * <p>
-     * If the index is less than the current size, the value will be added to
-     * the underlying list directly.
-     * If the index is less than zero, the underlying list is called, which
-     * will probably throw an IndexOutOfBoundsException.
-     *
-     * @param index  the index to add at
-     * @param element  the object to add at the specified index
-     * @throws UnsupportedOperationException if the underlying list doesn't implement set
-     * @throws ClassCastException if the underlying list rejects the element
-     * @throws IllegalArgumentException if the underlying list rejects the element
-     */
-    public void add(int index, Object element) {
-        int size = getList().size();
-        if (index > size) {
-            getList().addAll(Collections.nCopies(index - size, null));
-        }
-        getList().add(index, element);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Decorate the addAll method to perform the growth behaviour.
-     * <p>
-     * If the requested index is greater than the current size, the list will
-     * grow to the new size. Indices between the old size and the requested
-     * size will be filled with <code>null</code>.
-     * <p>
-     * If the index is less than the current size, the values will be added to
-     * the underlying list directly.
-     * If the index is less than zero, the underlying list is called, which
-     * will probably throw an IndexOutOfBoundsException.
-     *
-     * @param index  the index to add at
-     * @param coll  the collection to add at the specified index
-     * @return true if the list changed
-     * @throws UnsupportedOperationException if the underlying list doesn't implement set
-     * @throws ClassCastException if the underlying list rejects the element
-     * @throws IllegalArgumentException if the underlying list rejects the element
-     */
-    public boolean addAll(int index, Collection coll) {
-        int size = getList().size();
-        boolean result = false;
-        if (index > size) {
-            getList().addAll(Collections.nCopies(index - size, null));
-            result = true;
-        }
-        return (getList().addAll(index, coll) | result);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Decorate the set method to perform the growth behaviour.
-     * <p>
-     * If the requested index is greater than the current size, the list will
-     * grow to the new size. Indices between the old size and the requested
-     * size will be filled with <code>null</code>.
-     * <p>
-     * If the index is less than the current size, the value will be set onto
-     * the underlying list directly.
-     * If the index is less than zero, the underlying list is called, which
-     * will probably throw an IndexOutOfBoundsException.
-     *
-     * @param index  the index to set
-     * @param element  the object to set at the specified index
-     * @return the object previously at that index
-     * @throws UnsupportedOperationException if the underlying list doesn't implement set
-     * @throws ClassCastException if the underlying list rejects the element
-     * @throws IllegalArgumentException if the underlying list rejects the element
-     */
-    public Object set(int index, Object element) {
-        int size = getList().size();
-        if (index >= size) {
-            getList().addAll(Collections.nCopies((index - size) + 1, null));
-        }
-        return getList().set(index, element);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/LazyList.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/LazyList.java
deleted file mode 100755
index c795164..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/LazyList.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.list;
-
-import java.util.List;
-
-import org.apache.commons.collections.Factory;
-
-/**
- * Decorates another <code>List</code> to create objects in the list on demand.
- * <p>
- * When the {@link #get(int)} method is called with an index greater than
- * the size of the list, the list will automatically grow in size and return
- * a new object from the specified factory. The gaps will be filled by null.
- * If a get method call encounters a null, it will be replaced with a new
- * object from the factory. Thus this list is unsuitable for storing null
- * objects.
- * <p>
- * For instance:
- *
- * <pre>
- * Factory factory = new Factory() {
- *     public Object create() {
- *         return new Date();
- *     }
- * }
- * List lazy = LazyList.decorate(new ArrayList(), factory);
- * Object obj = lazy.get(3);
- * </pre>
- *
- * After the above code is executed, <code>obj</code> will contain
- * a new <code>Date</code> instance.  Furthermore, that <code>Date</code>
- * instance is the fourth element in the list.  The first, second, 
- * and third element are all set to <code>null</code>.
- * <p>
- * This class differs from {@link GrowthList} because here growth occurs on
- * get, where <code>GrowthList</code> grows on set and add. However, they
- * could easily be used together by decorating twice.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @see GrowthList
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- * 
- * @author Stephen Colebourne
- * @author Arron Bates
- * @author Paul Jack
- */
-public class LazyList extends AbstractSerializableListDecorator {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -1708388017160694542L;
-
-    /** The factory to use to lazily instantiate the objects */
-    protected final Factory factory;
-
-    /**
-     * Factory method to create a lazily instantiating list.
-     * 
-     * @param list  the list to decorate, must not be null
-     * @param factory  the factory to use for creation, must not be null
-     * @throws IllegalArgumentException if list or factory is null
-     */
-    public static List decorate(List list, Factory factory) {
-        return new LazyList(list, factory);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param list  the list to decorate, must not be null
-     * @param factory  the factory to use for creation, must not be null
-     * @throws IllegalArgumentException if list or factory is null
-     */
-    protected LazyList(List list, Factory factory) {
-        super(list);
-        if (factory == null) {
-            throw new IllegalArgumentException("Factory must not be null");
-        }
-        this.factory = factory;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Decorate the get method to perform the lazy behaviour.
-     * <p>
-     * If the requested index is greater than the current size, the list will 
-     * grow to the new size and a new object will be returned from the factory.
-     * Indexes in-between the old size and the requested size are left with a 
-     * placeholder that is replaced with a factory object when requested.
-     * 
-     * @param index  the index to retrieve
-     */
-    public Object get(int index) {
-        int size = getList().size();
-        if (index < size) {
-            // within bounds, get the object
-            Object object = getList().get(index);
-            if (object == null) {
-                // item is a place holder, create new one, set and return
-                object = factory.create();
-                getList().set(index, object);
-                return object;
-            } else {
-                // good and ready to go
-                return object;
-            }
-        } else {
-            // we have to grow the list
-            for (int i = size; i < index; i++) {
-                getList().add(null);
-            }
-            // create our last object, set and return
-            Object object = factory.create();
-            getList().add(object);
-            return object;
-        }
-    }
-
-
-    public List subList(int fromIndex, int toIndex) {
-        List sub = getList().subList(fromIndex, toIndex);
-        return new LazyList(sub, factory);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/NodeCachingLinkedList.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/NodeCachingLinkedList.java
deleted file mode 100755
index dda12ef..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/NodeCachingLinkedList.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- *  Copyright 2001-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.list;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Collection;
-
-/**
- * A <code>List</code> implementation that stores a cache of internal Node objects
- * in an effort to reduce wasteful object creation.
- * <p>
- * A linked list creates one Node for each item of data added. This can result in
- * a lot of object creation and garbage collection. This implementation seeks to
- * avoid that by maintaining a store of cached nodes.
- * <p>
- * This implementation is suitable for long-lived lists where both add and remove
- * are used. Short-lived lists, or lists which only grow will have worse performance
- * using this class.
- * <p>
- * <b>Note that this implementation is not synchronized.</b>
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:31 $
- * 
- * @author Jeff Varszegi
- * @author Rich Dougherty
- * @author Phil Steitz
- * @author Stephen Colebourne
- */
-public class NodeCachingLinkedList extends AbstractLinkedList implements Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 6897789178562232073L;
-
-    /**
-     * The default value for {@link #maximumCacheSize}.
-     */
-    protected static final int DEFAULT_MAXIMUM_CACHE_SIZE = 20;
-
-    /**
-     * The first cached node, or <code>null</code> if no nodes are cached.
-     * Cached nodes are stored in a singly-linked list with
-     * <code>next</code> pointing to the next element.
-     */
-    protected transient Node firstCachedNode;
-    
-    /**
-     * The size of the cache.
-     */
-    protected transient int cacheSize;
-
-    /**
-     * The maximum size of the cache.
-     */
-    protected int maximumCacheSize;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that creates.
-     */
-    public NodeCachingLinkedList() {
-        this(DEFAULT_MAXIMUM_CACHE_SIZE);
-    }
-
-    /**
-     * Constructor that copies the specified collection
-     * 
-     * @param coll  the collection to copy
-     */
-    public NodeCachingLinkedList(Collection coll) {
-        super(coll);
-        this.maximumCacheSize = DEFAULT_MAXIMUM_CACHE_SIZE;
-    }
-    
-    /**
-     * Constructor that species the maximum cache size.
-     *
-     * @param maximumCacheSize  the maximum cache size
-     */
-    public NodeCachingLinkedList(int maximumCacheSize) {
-        super();
-        this.maximumCacheSize = maximumCacheSize;
-        init();  // must call init() as use super();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the maximum size of the cache.
-     * 
-     * @return the maximum cache size
-     */
-    protected int getMaximumCacheSize() {
-        return maximumCacheSize;
-    }
-
-    /**
-     * Sets the maximum size of the cache.
-     * 
-     * @param maximumCacheSize  the new maximum cache size
-     */
-    protected void setMaximumCacheSize(int maximumCacheSize) {
-        this.maximumCacheSize = maximumCacheSize;
-        shrinkCacheToMaximumSize();
-    }
-
-    /**
-     * Reduce the size of the cache to the maximum, if necessary.
-     */
-    protected void shrinkCacheToMaximumSize() {
-        // Rich Dougherty: This could be more efficient.
-        while (cacheSize > maximumCacheSize) {
-            getNodeFromCache();
-        }
-    }
-    
-    /**
-     * Gets a node from the cache. If a node is returned, then the value of
-     * {@link #cacheSize} is decreased accordingly. The node that is returned
-     * will have <code>null</code> values for next, previous and element.
-     *
-     * @return a node, or <code>null</code> if there are no nodes in the cache.
-     */
-    protected Node getNodeFromCache() {
-        if (cacheSize == 0) {
-            return null;
-        }
-        Node cachedNode = firstCachedNode;
-        firstCachedNode = cachedNode.next;
-        cachedNode.next = null; // This should be changed anyway, but defensively
-                                // set it to null.                    
-        cacheSize--;
-        return cachedNode;
-    }
-    
-    /**
-     * Checks whether the cache is full.
-     * 
-     * @return true if the cache is full
-     */
-    protected boolean isCacheFull() {
-        return cacheSize >= maximumCacheSize;
-    }
-    
-    /**
-     * Adds a node to the cache, if the cache isn't full.
-     * The node's contents are cleared to so they can be garbage collected.
-     * 
-     * @param node  the node to add to the cache
-     */
-    protected void addNodeToCache(Node node) {
-        if (isCacheFull()) {
-            // don't cache the node.
-            return;
-        }
-        // clear the node's contents and add it to the cache.
-        Node nextCachedNode = firstCachedNode;
-        node.previous = null;
-        node.next = nextCachedNode;
-        node.setValue(null);
-        firstCachedNode = node;
-        cacheSize++;
-    }
-
-    //-----------------------------------------------------------------------    
-    /**
-     * Creates a new node, either by reusing one from the cache or creating
-     * a new one.
-     * 
-     * @param value  value of the new node
-     * @return the newly created node
-     */
-    protected Node createNode(Object value) {
-        Node cachedNode = getNodeFromCache();
-        if (cachedNode == null) {
-            return super.createNode(value);
-        } else {
-            cachedNode.setValue(value);
-            return cachedNode;
-        }
-    }
-
-    /**
-     * Removes the node from the list, storing it in the cache for reuse
-     * if the cache is not yet full.
-     * 
-     * @param node  the node to remove
-     */
-    protected void removeNode(Node node) {
-        super.removeNode(node);
-        addNodeToCache(node);
-    }
-    
-    /**
-     * Removes all the nodes from the list, storing as many as required in the
-     * cache for reuse.
-     * 
-     */
-    protected void removeAllNodes() {
-        // Add the removed nodes to the cache, then remove the rest.
-        // We can add them to the cache before removing them, since
-        // {@link AbstractLinkedList.removeAllNodes()} removes the
-        // nodes by removing references directly from {@link #header}.
-        int numberOfNodesToCache = Math.min(size, maximumCacheSize - cacheSize);
-        Node node = header.next;
-        for (int currentIndex = 0; currentIndex < numberOfNodesToCache; currentIndex++) {
-            Node oldNode = node;
-            node = node.next;
-            addNodeToCache(oldNode);
-        }
-        super.removeAllNodes();        
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Serializes the data held in this object to the stream specified.
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        doWriteObject(out);
-    }
-
-    /**
-     * Deserializes the data held in this object to the stream specified.
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        doReadObject(in);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/PredicatedList.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/PredicatedList.java
deleted file mode 100755
index 3f473b4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/PredicatedList.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.list;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-
-import org.apache.commons.collections.Predicate;
-import org.apache.commons.collections.collection.PredicatedCollection;
-import org.apache.commons.collections.iterators.AbstractListIteratorDecorator;
-
-/**
- * Decorates another <code>List</code> to validate that all additions
- * match a specified predicate.
- * <p>
- * This list exists to provide validation for the decorated list.
- * It is normally created to decorate an empty list.
- * If an object cannot be added to the list, an IllegalArgumentException is thrown.
- * <p>
- * One usage would be to ensure that no null entries are added to the list.
- * <pre>List list = PredicatedList.decorate(new ArrayList(), NotNullPredicate.INSTANCE);</pre>
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:31 $
- * 
- * @author Stephen Colebourne
- * @author Paul Jack
- */
-public class PredicatedList extends PredicatedCollection implements List {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -5722039223898659102L;
-
-    /**
-     * Factory method to create a predicated (validating) list.
-     * <p>
-     * If there are any elements already in the list being decorated, they
-     * are validated.
-     * 
-     * @param list  the list to decorate, must not be null
-     * @param predicate  the predicate to use for validation, must not be null
-     * @throws IllegalArgumentException if list or predicate is null
-     * @throws IllegalArgumentException if the list contains invalid elements
-     */
-    public static List decorate(List list, Predicate predicate) {
-        return new PredicatedList(list, predicate);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * <p>
-     * If there are any elements already in the list being decorated, they
-     * are validated.
-     * 
-     * @param list  the list to decorate, must not be null
-     * @param predicate  the predicate to use for validation, must not be null
-     * @throws IllegalArgumentException if list or predicate is null
-     * @throws IllegalArgumentException if the list contains invalid elements
-     */
-    protected PredicatedList(List list, Predicate predicate) {
-        super(list, predicate);
-    }
-
-    /**
-     * Gets the list being decorated.
-     * 
-     * @return the decorated list
-     */
-    protected List getList() {
-        return (List) getCollection();
-    }
-
-    //-----------------------------------------------------------------------
-    public Object get(int index) {
-        return getList().get(index);
-    }
-
-    public int indexOf(Object object) {
-        return getList().indexOf(object);
-    }
-
-    public int lastIndexOf(Object object) {
-        return getList().lastIndexOf(object);
-    }
-
-    public Object remove(int index) {
-        return getList().remove(index);
-    }
-
-    //-----------------------------------------------------------------------
-    public void add(int index, Object object) {
-        validate(object);
-        getList().add(index, object);
-    }
-
-    public boolean addAll(int index, Collection coll) {
-        for (Iterator it = coll.iterator(); it.hasNext(); ) {
-            validate(it.next());
-        }
-        return getList().addAll(index, coll);
-    }
-
-    public ListIterator listIterator() {
-        return listIterator(0);
-    }
-
-    public ListIterator listIterator(int i) {
-        return new PredicatedListIterator(getList().listIterator(i));
-    }
-
-    public Object set(int index, Object object) {
-        validate(object);
-        return getList().set(index, object);
-    }
-
-    public List subList(int fromIndex, int toIndex) {
-        List sub = getList().subList(fromIndex, toIndex);
-        return new PredicatedList(sub, predicate);
-    }
-
-    /**
-     * Inner class Iterator for the PredicatedList
-     */
-    protected class PredicatedListIterator extends AbstractListIteratorDecorator {
-        
-        protected PredicatedListIterator(ListIterator iterator) {
-            super(iterator);
-        }
-        
-        public void add(Object object) {
-            validate(object);
-            iterator.add(object);
-        }
-        
-        public void set(Object object) {
-            validate(object);
-            iterator.set(object);
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/SetUniqueList.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/SetUniqueList.java
deleted file mode 100755
index b775caa..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/SetUniqueList.java
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- *  Copyright 2001-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.list;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Set;
-
-import org.apache.commons.collections.iterators.AbstractIteratorDecorator;
-import org.apache.commons.collections.iterators.AbstractListIteratorDecorator;
-import org.apache.commons.collections.set.UnmodifiableSet;
-
-/**
- * Decorates a <code>List</code> to ensure that no duplicates are present
- * much like a <code>Set</code>.
- * <p>
- * The <code>List</code> interface makes certain assumptions/requirements.
- * This implementation breaks these in certain ways, but this is merely the
- * result of rejecting duplicates.
- * Each violation is explained in the method, but it should not affect you.
- * Bear in mind that Sets require immutable objects to function correctly.
- * <p>
- * The {@link org.apache.commons.collections.set.ListOrderedSet ListOrderedSet}
- * class provides an alternative approach, by wrapping an existing Set and
- * retaining insertion order in the iterator.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:31 $
- * 
- * @author Matthew Hawthorne
- * @author Stephen Colebourne
- * @author Tom Dunham
- */
-public class SetUniqueList extends AbstractSerializableListDecorator {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 7196982186153478694L;
-
-    /**
-     * Internal Set to maintain uniqueness.
-     */
-    protected final Set set;
-
-    /**
-     * Factory method to create a SetList using the supplied list to retain order.
-     * <p>
-     * If the list contains duplicates, these are removed (first indexed one kept).
-     * A <code>HashSet</code> is used for the set behaviour.
-     * 
-     * @param list  the list to decorate, must not be null
-     * @throws IllegalArgumentException if list is null
-     */
-    public static SetUniqueList decorate(List list) {
-        if (list == null) {
-            throw new IllegalArgumentException("List must not be null");
-        }
-        if (list.isEmpty()) {
-            return new SetUniqueList(list, new HashSet());
-        } else {
-            List temp = new ArrayList(list);
-            list.clear();
-            SetUniqueList sl = new SetUniqueList(list, new HashSet());
-            sl.addAll(temp);
-            return sl;
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies) the List and specifies the set to use.
-     * <p>
-     * The set and list must both be correctly initialised to the same elements.
-     * 
-     * @param set  the set to decorate, must not be null
-     * @param list  the list to decorate, must not be null
-     * @throws IllegalArgumentException if set or list is null
-     */
-    protected SetUniqueList(List list, Set set) {
-        super(list);
-        if (set == null) {
-            throw new IllegalArgumentException("Set must not be null");
-        }
-        this.set = set;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets an unmodifiable view as a Set.
-     * 
-     * @return an unmodifiable set view
-     */
-    public Set asSet() {
-        return UnmodifiableSet.decorate(set);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Adds an element to the list if it is not already present.
-     * <p>
-     * <i>(Violation)</i>
-     * The <code>List</code> interface requires that this method returns
-     * <code>true</code> always. However this class may return <code>false</code>
-     * because of the <code>Set</code> behaviour.
-     * 
-     * @param object the object to add
-     * @return true if object was added
-     */
-    public boolean add(Object object) {
-        // gets initial size
-        final int sizeBefore = size();
-
-        // adds element if unique
-        add(size(), object);
-
-        // compares sizes to detect if collection changed
-        return (sizeBefore != size());
-    }
-
-    /**
-     * Adds an element to a specific index in the list if it is not already present.
-     * <p>
-     * <i>(Violation)</i>
-     * The <code>List</code> interface makes the assumption that the element is
-     * always inserted. This may not happen with this implementation.
-     * 
-     * @param index  the index to insert at
-     * @param object  the object to add
-     */
-    public void add(int index, Object object) {
-        // adds element if it is not contained already
-        if (set.contains(object) == false) {
-            super.add(index, object);
-            set.add(object);
-        }
-    }
-
-    /**
-     * Adds an element to the end of the list if it is not already present.
-     * <p>
-     * <i>(Violation)</i>
-     * The <code>List</code> interface makes the assumption that the element is
-     * always inserted. This may not happen with this implementation.
-     * 
-     * @param coll  the collection to add
-     */
-    public boolean addAll(Collection coll) {
-        return addAll(size(), coll);
-    }
-
-    /**
-     * Adds a collection of objects to the end of the list avoiding duplicates.
-     * <p>
-     * Only elements that are not already in this list will be added, and
-     * duplicates from the specified collection will be ignored.
-     * <p>
-     * <i>(Violation)</i>
-     * The <code>List</code> interface makes the assumption that the elements
-     * are always inserted. This may not happen with this implementation.
-     * 
-     * @param index  the index to insert at
-     * @param coll  the collection to add in iterator order
-     * @return true if this collection changed
-     */
-    public boolean addAll(int index, Collection coll) {
-        // gets initial size
-        final int sizeBefore = size();
-
-        // adds all elements
-        for (final Iterator it = coll.iterator(); it.hasNext();) {
-            add(it.next());
-        }
-
-        // compares sizes to detect if collection changed
-        return sizeBefore != size();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Sets the value at the specified index avoiding duplicates.
-     * <p>
-     * The object is set into the specified index.
-     * Afterwards, any previous duplicate is removed
-     * If the object is not already in the list then a normal set occurs.
-     * If it is present, then the old version is removed.
-     * 
-     * @param index  the index to insert at
-     * @param object  the object to set
-     * @return the previous object
-     */
-    public Object set(int index, Object object) {
-        int pos = indexOf(object);
-        Object removed = super.set(index, object);
-        if (pos == -1 || pos == index) {
-            return removed;
-        }
-        
-        // the object is already in the uniq list
-        // (and it hasn't been swapped with itself)
-        super.remove(pos);  // remove the duplicate by index
-        set.remove(removed);  // remove the item deleted by the set
-        return removed;  // return the item deleted by the set
-    }
-
-    public boolean remove(Object object) {
-        boolean result = super.remove(object);
-        set.remove(object);
-        return result;
-    }
-
-    public Object remove(int index) {
-        Object result = super.remove(index);
-        set.remove(result);
-        return result;
-    }
-
-    public boolean removeAll(Collection coll) {
-        boolean result = super.removeAll(coll);
-        set.removeAll(coll);
-        return result;
-    }
-
-    public boolean retainAll(Collection coll) {
-        boolean result = super.retainAll(coll);
-        set.retainAll(coll);
-        return result;
-    }
-
-    public void clear() {
-        super.clear();
-        set.clear();
-    }
-
-    public boolean contains(Object object) {
-        return set.contains(object);
-    }
-
-    public boolean containsAll(Collection coll) {
-        return set.containsAll(coll);
-    }
-
-    public Iterator iterator() {
-        return new SetListIterator(super.iterator(), set);
-    }
-
-    public ListIterator listIterator() {
-        return new SetListListIterator(super.listIterator(), set);
-    }
-
-    public ListIterator listIterator(int index) {
-        return new SetListListIterator(super.listIterator(index), set);
-    }
-
-    public List subList(int fromIndex, int toIndex) {
-        return new SetUniqueList(super.subList(fromIndex, toIndex), set);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Inner class iterator.
-     */
-    static class SetListIterator extends AbstractIteratorDecorator {
-        
-        protected final Set set;
-        protected Object last = null;
-        
-        protected SetListIterator(Iterator it, Set set) {
-            super(it);
-            this.set = set;
-        }
-        
-        public Object next() {
-            last = super.next();
-            return last;
-        }
-
-        public void remove() {
-            super.remove();
-            set.remove(last);
-            last = null;
-        }
-    }
-    
-    /**
-     * Inner class iterator.
-     */
-    static class SetListListIterator extends AbstractListIteratorDecorator {
-        
-        protected final Set set;
-        protected Object last = null;
-        
-        protected SetListListIterator(ListIterator it, Set set) {
-            super(it);
-            this.set = set;
-        }
-        
-        public Object next() {
-            last = super.next();
-            return last;
-        }
-
-        public Object previous() {
-            last = super.previous();
-            return last;
-        }
-
-        public void remove() {
-            super.remove();
-            set.remove(last);
-            last = null;
-        }
-
-        public void add(Object object) {
-            if (set.contains(object) == false) {
-                super.add(object);
-                set.add(object);
-            }
-        }
-        
-        public void set(Object object) {
-            throw new UnsupportedOperationException("ListIterator does not support set");
-        }
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/SynchronizedList.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/SynchronizedList.java
deleted file mode 100755
index f5d596b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/SynchronizedList.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.list;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.ListIterator;
-
-import org.apache.commons.collections.collection.SynchronizedCollection;
-
-/**
- * Decorates another <code>List</code> to synchronize its behaviour
- * for a multi-threaded environment.
- * <p>
- * Methods are synchronized, then forwarded to the decorated list.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:31 $
- * 
- * @author Stephen Colebourne
- */
-public class SynchronizedList extends SynchronizedCollection implements List {
-
-    /** Serialization version */
-     private static final long serialVersionUID = -1403835447328619437L;
-
-    /**
-     * Factory method to create a synchronized list.
-     * 
-     * @param list  the list to decorate, must not be null
-     * @throws IllegalArgumentException if list is null
-     */
-    public static List decorate(List list) {
-        return new SynchronizedList(list);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param list  the list to decorate, must not be null
-     * @throws IllegalArgumentException if list is null
-     */
-    protected SynchronizedList(List list) {
-        super(list);
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param list  the list to decorate, must not be null
-     * @param lock  the lock to use, must not be null
-     * @throws IllegalArgumentException if list is null
-     */
-    protected SynchronizedList(List list, Object lock) {
-        super(list, lock);
-    }
-
-    /**
-     * Gets the decorated list.
-     * 
-     * @return the decorated list
-     */
-    protected List getList() {
-        return (List) collection;
-    }
-
-    //-----------------------------------------------------------------------
-    public void add(int index, Object object) {
-        synchronized (lock) {
-            getList().add(index, object);
-        }
-    }
-
-    public boolean addAll(int index, Collection coll) {
-        synchronized (lock) {
-            return getList().addAll(index, coll);
-        }
-    }
-
-    public Object get(int index) {
-        synchronized (lock) {
-            return getList().get(index);
-        }
-    }
-
-    public int indexOf(Object object) {
-        synchronized (lock) {
-            return getList().indexOf(object);
-        }
-    }
-
-    public int lastIndexOf(Object object) {
-        synchronized (lock) {
-            return getList().lastIndexOf(object);
-        }
-    }
-
-    /**
-     * Iterators must be manually synchronized.
-     * <pre>
-     * synchronized (coll) {
-     *   ListIterator it = coll.listIterator();
-     *   // do stuff with iterator
-     * }
-     * 
-     * @return an iterator that must be manually synchronized on the collection
-     */
-    public ListIterator listIterator() {
-        return getList().listIterator();
-    }
-
-    /**
-     * Iterators must be manually synchronized.
-     * <pre>
-     * synchronized (coll) {
-     *   ListIterator it = coll.listIterator(3);
-     *   // do stuff with iterator
-     * }
-     * 
-     * @return an iterator that must be manually synchronized on the collection
-     */
-    public ListIterator listIterator(int index) {
-        return getList().listIterator(index);
-    }
-
-    public Object remove(int index) {
-        synchronized (lock) {
-            return getList().remove(index);
-        }
-    }
-
-    public Object set(int index, Object object) {
-        synchronized (lock) {
-            return getList().set(index, object);
-        }
-    }
-
-    public List subList(int fromIndex, int toIndex) {
-        synchronized (lock) {
-            List list = getList().subList(fromIndex, toIndex);
-            // the lock is passed into the constructor here to ensure that the sublist is
-            // synchronized on the same lock as the parent list
-            return new SynchronizedList(list, lock);
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/TransformedList.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/TransformedList.java
deleted file mode 100755
index 7b212b4..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/TransformedList.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.list;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.ListIterator;
-
-import org.apache.commons.collections.Transformer;
-import org.apache.commons.collections.collection.TransformedCollection;
-import org.apache.commons.collections.iterators.AbstractListIteratorDecorator;
-
-/**
- * Decorates another <code>List</code> to transform objects that are added.
- * <p>
- * The add and set methods are affected by this class.
- * Thus objects must be removed or searched for using their transformed form.
- * For example, if the transformation converts Strings to Integers, you must
- * use the Integer form to remove objects.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:31 $
- * 
- * @author Stephen Colebourne
- */
-public class TransformedList extends TransformedCollection implements List {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 1077193035000013141L;
-
-    /**
-     * Factory method to create a transforming list.
-     * <p>
-     * If there are any elements already in the list being decorated, they
-     * are NOT transformed.
-     * 
-     * @param list  the list to decorate, must not be null
-     * @param transformer  the transformer to use for conversion, must not be null
-     * @throws IllegalArgumentException if list or transformer is null
-     */
-    public static List decorate(List list, Transformer transformer) {
-        return new TransformedList(list, transformer);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * <p>
-     * If there are any elements already in the list being decorated, they
-     * are NOT transformed.
-     * 
-     * @param list  the list to decorate, must not be null
-     * @param transformer  the transformer to use for conversion, must not be null
-     * @throws IllegalArgumentException if list or transformer is null
-     */
-    protected TransformedList(List list, Transformer transformer) {
-        super(list, transformer);
-    }
-
-    /**
-     * Gets the decorated list.
-     * 
-     * @return the decorated list
-     */
-    protected List getList() {
-        return (List) collection;
-    }
-
-    //-----------------------------------------------------------------------
-    public Object get(int index) {
-        return getList().get(index);
-    }
-
-    public int indexOf(Object object) {
-        return getList().indexOf(object);
-    }
-
-    public int lastIndexOf(Object object) {
-        return getList().lastIndexOf(object);
-    }
-
-    public Object remove(int index) {
-        return getList().remove(index);
-    }
-
-    //-----------------------------------------------------------------------
-    public void add(int index, Object object) {
-        object = transform(object);
-        getList().add(index, object);
-    }
-
-    public boolean addAll(int index, Collection coll) {
-        coll = transform(coll);
-        return getList().addAll(index, coll);
-    }
-
-    public ListIterator listIterator() {
-        return listIterator(0);
-    }
-
-    public ListIterator listIterator(int i) {
-        return new TransformedListIterator(getList().listIterator(i));
-    }
-
-    public Object set(int index, Object object) {
-        object = transform(object);
-        return getList().set(index, object);
-    }
-
-    public List subList(int fromIndex, int toIndex) {
-        List sub = getList().subList(fromIndex, toIndex);
-        return new TransformedList(sub, transformer);
-    }
-
-    /**
-     * Inner class Iterator for the TransformedList
-     */
-    protected class TransformedListIterator extends AbstractListIteratorDecorator {
-        
-        protected TransformedListIterator(ListIterator iterator) {
-            super(iterator);
-        }
-        
-        public void add(Object object) {
-            object = transform(object);
-            iterator.add(object);
-        }
-        
-        public void set(Object object) {
-            object = transform(object);
-            iterator.set(object);
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/TreeList.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/TreeList.java
deleted file mode 100755
index 6a0e37d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/TreeList.java
+++ /dev/null
@@ -1,915 +0,0 @@
-/*
- *  Copyright 2004-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.commons.collections.list;
-
-import java.util.AbstractList;
-import java.util.Collection;
-import java.util.ConcurrentModificationException;
-import java.util.Iterator;
-import java.util.ListIterator;
-import java.util.NoSuchElementException;
-
-import org.apache.commons.collections.OrderedIterator;
-
-/**
- * A <code>List</code> implementation that is optimised for fast insertions and
- * removals at any index in the list.
- * <p>
- * This list implementation utilises a tree structure internally to ensure that
- * all insertions and removals are O(log n). This provides much faster performance
- * than both an <code>ArrayList</code> and a <code>LinkedList</code> where elements
- * are inserted and removed repeatedly from anywhere in the list.
- * <p>
- * The following relative performance statistics are indicative of this class:
- * <pre>
- *              get  add  insert  iterate  remove
- * TreeList       3    5       1       2       1
- * ArrayList      1    1      40       1      40
- * LinkedList  5800    1     350       2     325
- * </pre>
- * <code>ArrayList</code> is a good general purpose list implementation.
- * It is faster than <code>TreeList</code> for most operations except inserting
- * and removing in the middle of the list. <code>ArrayList</code> also uses less
- * memory as <code>TreeList</code> uses one object per entry.
- * <p>
- * <code>LinkedList</code> is rarely a good choice of implementation.
- * <code>TreeList</code> is almost always a good replacement for it, although it
- * does use sligtly more memory.
- * 
- * @since Commons Collections 3.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:31 $
- *
- * @author Joerg Schmuecker
- * @author Stephen Colebourne
- */
-public class TreeList extends AbstractList {
-//    add; toArray; iterator; insert; get; indexOf; remove
-//    TreeList = 1260;7360;3080;  160;   170;3400;  170;
-//   ArrayList =  220;1480;1760; 6870;    50;1540; 7200;
-//  LinkedList =  270;7360;3350;55860;290720;2910;55200;
-
-    /** The root node in the AVL tree */
-    private AVLNode root;
-
-    /** The current size of the list */
-    private int size;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructs a new empty list.
-     */
-    public TreeList() {
-        super();
-    }
-
-    /**
-     * Constructs a new empty list that copies the specified list.
-     * 
-     * @param coll  the collection to copy
-     * @throws NullPointerException if the collection is null
-     */
-    public TreeList(Collection coll) {
-        super();
-        addAll(coll);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the element at the specified index.
-     * 
-     * @param index  the index to retrieve
-     * @return the element at the specified index
-     */
-    public Object get(int index) {
-        checkInterval(index, 0, size() - 1);
-        return root.get(index).getValue();
-    }
-
-    /**
-     * Gets the current size of the list.
-     * 
-     * @return the current size
-     */
-    public int size() {
-        return size;
-    }
-
-    /**
-     * Gets an iterator over the list.
-     * 
-     * @return an iterator over the list
-     */
-    public Iterator iterator() {
-        // override to go 75% faster
-        return listIterator(0);
-    }
-
-    /**
-     * Gets a ListIterator over the list.
-     * 
-     * @return the new iterator
-     */
-    public ListIterator listIterator() {
-        // override to go 75% faster
-        return listIterator(0);
-    }
-
-    /**
-     * Gets a ListIterator over the list.
-     * 
-     * @param fromIndex  the index to start from
-     * @return the new iterator
-     */
-    public ListIterator listIterator(int fromIndex) {
-        // override to go 75% faster
-        // cannot use EmptyIterator as iterator.add() must work
-        checkInterval(fromIndex, 0, size());
-        return new TreeListIterator(this, fromIndex);
-    }
-
-    /**
-     * Searches for the index of an object in the list.
-     * 
-     * @return the index of the object, -1 if not found
-     */
-    public int indexOf(Object object) {
-        // override to go 75% faster
-        if (root == null) {
-            return -1;
-        }
-        return root.indexOf(object, root.relativePosition);
-    }
-
-    /**
-     * Searches for the presence of an object in the list.
-     * 
-     * @return true if the object is found
-     */
-    public boolean contains(Object object) {
-        return (indexOf(object) >= 0);
-    }
-
-    /**
-     * Converts the list into an array.
-     * 
-     * @return the list as an array
-     */
-    public Object[] toArray() {
-        // override to go 20% faster
-        Object[] array = new Object[size()];
-        if (root != null) {
-            root.toArray(array, root.relativePosition);
-        }
-        return array;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Adds a new element to the list.
-     * 
-     * @param index  the index to add before
-     * @param obj  the element to add
-     */
-    public void add(int index, Object obj) {
-        modCount++;
-        checkInterval(index, 0, size());
-        if (root == null) {
-            root = new AVLNode(index, obj, null, null);
-        } else {
-            root = root.insert(index, obj);
-        }
-        size++;
-    }
-
-    /**
-     * Sets the element at the specified index.
-     * 
-     * @param index  the index to set
-     * @param obj  the object to store at the specified index
-     * @return the previous object at that index
-     * @throws IndexOutOfBoundsException if the index is invalid
-     */
-    public Object set(int index, Object obj) {
-        checkInterval(index, 0, size() - 1);
-        AVLNode node = root.get(index);
-        Object result = node.value;
-        node.setValue(obj);
-        return result;
-    }
-
-    /**
-     * Removes the element at the specified index.
-     * 
-     * @param index  the index to remove
-     * @return the previous object at that index
-     */
-    public Object remove(int index) {
-        modCount++;
-        checkInterval(index, 0, size() - 1);
-        Object result = get(index);
-        root = root.remove(index);
-        size--;
-        return result;
-    }
-
-    /**
-     * Clears the list, removing all entries.
-     */
-    public void clear() {
-        modCount++;
-        root = null;
-        size = 0;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Checks whether the index is valid.
-     * 
-     * @param index  the index to check
-     * @param startIndex  the first allowed index
-     * @param endIndex  the last allowed index
-     * @throws IndexOutOfBoundsException if the index is invalid
-     */
-    private void checkInterval(int index, int startIndex, int endIndex) {
-        if (index < startIndex || index > endIndex) {
-            throw new IndexOutOfBoundsException("Invalid index:" + index + ", size=" + size());
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Implements an AVLNode which keeps the offset updated.
-     * <p>
-     * This node contains the real work.
-     * TreeList is just there to implement {@link java.util.List}.
-     * The nodes don't know the index of the object they are holding.  They
-     * do know however their position relative to their parent node.
-     * This allows to calculate the index of a node while traversing the tree.
-     * <p>
-     * The Faedelung calculation stores a flag for both the left and right child
-     * to indicate if they are a child (false) or a link as in linked list (true).
-     */
-    static class AVLNode {
-        /** The left child node or the predecessor if {@link #leftIsPrevious}.*/
-        private AVLNode left;
-        /** Flag indicating that left reference is not a subtree but the predecessor. */
-        private boolean leftIsPrevious;
-        /** The right child node or the successor if {@link #rightIsNext}. */
-        private AVLNode right;
-        /** Flag indicating that right reference is not a subtree but the successor. */
-        private boolean rightIsNext;
-        /** How many levels of left/right are below this one. */
-        private int height;
-        /** The relative position, root holds absolute position. */
-        private int relativePosition;
-        /** The stored element. */
-        private Object value;
-
-        /**
-         * Constructs a new node with a relative position.
-         * 
-         * @param relativePosition  the relative position of the node
-         * @param obj  the value for the ndoe
-         * @param rightFollower the node with the value following this one
-         * @param leftFollower the node with the value leading this one
-         */
-        private AVLNode(int relativePosition, Object obj, AVLNode rightFollower, AVLNode leftFollower) {
-            this.relativePosition = relativePosition;
-            value = obj;
-            rightIsNext = true;
-            leftIsPrevious = true;
-            right = rightFollower;
-            left = leftFollower;
-        }
-
-        /**
-         * Gets the value.
-         * 
-         * @return the value of this node
-         */
-        Object getValue() {
-            return value;
-        }
-
-        /**
-         * Sets the value.
-         * 
-         * @param obj  the value to store
-         */
-        void setValue(Object obj) {
-            this.value = obj;
-        }
-
-        /**
-         * Locate the element with the given index relative to the
-         * offset of the parent of this node.
-         */
-        AVLNode get(int index) {
-            int indexRelativeToMe = index - relativePosition;
-
-            if (indexRelativeToMe == 0) {
-                return this;
-            }
-
-            AVLNode nextNode = ((indexRelativeToMe < 0) ? getLeftSubTree() : getRightSubTree());
-            if (nextNode == null) {
-                return null;
-            }
-            return nextNode.get(indexRelativeToMe);
-        }
-
-        /**
-         * Locate the index that contains the specified object.
-         */
-        int indexOf(Object object, int index) {
-            if (getLeftSubTree() != null) {
-                int result = left.indexOf(object, index + left.relativePosition);
-                if (result != -1) {
-                    return result;
-                }
-            }
-            if (value == null ? value == object : value.equals(object)) {
-                return index;
-            }
-            if (getRightSubTree() != null) {
-                return right.indexOf(object, index + right.relativePosition);
-            }
-            return -1;
-        }
-
-        /**
-         * Stores the node and its children into the array specified.
-         * 
-         * @param array the array to be filled
-         * @param index the index of this node
-         */
-        void toArray(Object[] array, int index) {
-            array[index] = value;
-            if (getLeftSubTree() != null) {
-                left.toArray(array, index + left.relativePosition);
-            }
-            if (getRightSubTree() != null) {
-                right.toArray(array, index + right.relativePosition);
-            }
-        }
-
-        /**
-         * Gets the next node in the list after this one.
-         * 
-         * @return the next node
-         */
-        AVLNode next() {
-            if (rightIsNext || right == null) {
-                return right;
-            }
-            return right.min();
-        }
-
-        /**
-         * Gets the node in the list before this one.
-         * 
-         * @return the previous node
-         */
-        AVLNode previous() {
-            if (leftIsPrevious || left == null) {
-                return left;
-            }
-            return left.max();
-        }
-
-        /**
-         * Inserts a node at the position index.  
-         * 
-         * @param index is the index of the position relative to the position of 
-         * the parent node.
-         * @param obj is the object to be stored in the position.
-         */
-        AVLNode insert(int index, Object obj) {
-            int indexRelativeToMe = index - relativePosition;
-
-            if (indexRelativeToMe <= 0) {
-                return insertOnLeft(indexRelativeToMe, obj);
-            } else {
-                return insertOnRight(indexRelativeToMe, obj);
-            }
-        }
-
-        private AVLNode insertOnLeft(int indexRelativeToMe, Object obj) {
-            AVLNode ret = this;
-
-            if (getLeftSubTree() == null) {
-                setLeft(new AVLNode(-1, obj, this, left), null);
-            } else {
-                setLeft(left.insert(indexRelativeToMe, obj), null);
-            }
-
-            if (relativePosition >= 0) {
-                relativePosition++;
-            }
-            ret = balance();
-            recalcHeight();
-            return ret;
-        }
-
-        private AVLNode insertOnRight(int indexRelativeToMe, Object obj) {
-            AVLNode ret = this;
-
-            if (getRightSubTree() == null) {
-                setRight(new AVLNode(+1, obj, right, this), null);
-            } else {
-                setRight(right.insert(indexRelativeToMe, obj), null);
-            }
-            if (relativePosition < 0) {
-                relativePosition--;
-            }
-            ret = balance();
-            recalcHeight();
-            return ret;
-        }
-
-        //-----------------------------------------------------------------------
-        /**
-         * Gets the left node, returning null if its a faedelung.
-         */
-        private AVLNode getLeftSubTree() {
-            return (leftIsPrevious ? null : left);
-        }
-
-        /**
-         * Gets the right node, returning null if its a faedelung.
-         */
-        private AVLNode getRightSubTree() {
-            return (rightIsNext ? null : right);
-        }
-
-        /**
-         * Gets the rightmost child of this node.
-         * 
-         * @return the rightmost child (greatest index)
-         */
-        private AVLNode max() {
-            return (getRightSubTree() == null) ? this : right.max();
-        }
-
-        /**
-         * Gets the leftmost child of this node.
-         * 
-         * @return the leftmost child (smallest index)
-         */
-        private AVLNode min() {
-            return (getLeftSubTree() == null) ? this : left.min();
-        }
-
-        /**
-         * Removes the node at a given position.
-         * 
-         * @param index is the index of the element to be removed relative to the position of 
-         * the parent node of the current node.
-         */
-        AVLNode remove(int index) {
-            int indexRelativeToMe = index - relativePosition;
-
-            if (indexRelativeToMe == 0) {
-                return removeSelf();
-            }
-            if (indexRelativeToMe > 0) {
-                setRight(right.remove(indexRelativeToMe), right.right);
-                if (relativePosition < 0) {
-                    relativePosition++;
-                }
-            } else {
-                setLeft(left.remove(indexRelativeToMe), left.left);
-                if (relativePosition > 0) {
-                    relativePosition--;
-                }
-            }
-            recalcHeight();
-            return balance();
-        }
-
-        private AVLNode removeMax() {
-            if (getRightSubTree() == null) {
-                return removeSelf();
-            }
-            setRight(right.removeMax(), right.right);
-            if (relativePosition < 0) {
-                relativePosition++;
-            }
-            recalcHeight();
-            return balance();
-        }
-
-        private AVLNode removeMin() {
-            if (getLeftSubTree() == null) {
-                return removeSelf();
-            }
-            setLeft(left.removeMin(), left.left);
-            if (relativePosition > 0) {
-                relativePosition--;
-            }
-            recalcHeight();
-            return balance();
-        }
-
-        /**
-         * Removes this node from the tree.
-         *
-         * @return the node that replaces this one in the parent
-         */
-        private AVLNode removeSelf() {
-            if (getRightSubTree() == null && getLeftSubTree() == null) {
-                return null;
-            }
-            if (getRightSubTree() == null) {
-                if (relativePosition > 0) {
-                    left.relativePosition += relativePosition + (relativePosition > 0 ? 0 : 1);
-                }
-                left.max().setRight(null, right);
-                return left;
-            }
-            if (getLeftSubTree() == null) {
-                right.relativePosition += relativePosition - (relativePosition < 0 ? 0 : 1);
-                right.min().setLeft(null, left);
-                return right;
-            }
-
-            if (heightRightMinusLeft() > 0) {
-                // more on the right, so delete from the right
-                AVLNode rightMin = right.min();
-                value = rightMin.value;
-                if (leftIsPrevious) {
-                    left = rightMin.left;
-                }
-                right = right.removeMin();
-                if (relativePosition < 0) {
-                    relativePosition++;
-                }
-            } else {
-                // more on the left or equal, so delete from the left
-                AVLNode leftMax = left.max();
-                value = leftMax.value;
-                if (rightIsNext) {
-                    right = leftMax.right;
-                }
-                AVLNode leftPrevious = left.left;
-                left = left.removeMax();
-                if (left == null) {
-                    // special case where left that was deleted was a double link
-                    // only occurs when height difference is equal
-                    left = leftPrevious;
-                    leftIsPrevious = true;
-                }
-                if (relativePosition > 0) {
-                    relativePosition--;
-                }
-            }
-            recalcHeight();
-            return this;
-        }
-
-        //-----------------------------------------------------------------------
-        /**
-         * Balances according to the AVL algorithm.
-         */
-        private AVLNode balance() {
-            switch (heightRightMinusLeft()) {
-                case 1 :
-                case 0 :
-                case -1 :
-                    return this;
-                case -2 :
-                    if (left.heightRightMinusLeft() > 0) {
-                        setLeft(left.rotateLeft(), null);
-                    }
-                    return rotateRight();
-                case 2 :
-                    if (right.heightRightMinusLeft() < 0) {
-                        setRight(right.rotateRight(), null);
-                    }
-                    return rotateLeft();
-                default :
-                    throw new RuntimeException("tree inconsistent!");
-            }
-        }
-
-        /**
-         * Gets the relative position.
-         */
-        private int getOffset(AVLNode node) {
-            if (node == null) {
-                return 0;
-            }
-            return node.relativePosition;
-        }
-
-        /**
-         * Sets the relative position.
-         */
-        private int setOffset(AVLNode node, int newOffest) {
-            if (node == null) {
-                return 0;
-            }
-            int oldOffset = getOffset(node);
-            node.relativePosition = newOffest;
-            return oldOffset;
-        }
-
-        /**
-         * Sets the height by calculation.
-         */
-        private void recalcHeight() {
-            height = Math.max(
-                getLeftSubTree() == null ? -1 : getLeftSubTree().height,
-                getRightSubTree() == null ? -1 : getRightSubTree().height) + 1;
-        }
-
-        /**
-         * Returns the height of the node or -1 if the node is null.
-         */
-        private int getHeight(AVLNode node) {
-            return (node == null ? -1 : node.height);
-        }
-
-        /**
-         * Returns the height difference right - left
-         */
-        private int heightRightMinusLeft() {
-            return getHeight(getRightSubTree()) - getHeight(getLeftSubTree());
-        }
-
-        private AVLNode rotateLeft() {
-            AVLNode newTop = right; // can't be faedelung!
-            AVLNode movedNode = getRightSubTree().getLeftSubTree();
-
-            int newTopPosition = relativePosition + getOffset(newTop);
-            int myNewPosition = -newTop.relativePosition;
-            int movedPosition = getOffset(newTop) + getOffset(movedNode);
-
-            setRight(movedNode, newTop);
-            newTop.setLeft(this, null);
-
-            setOffset(newTop, newTopPosition);
-            setOffset(this, myNewPosition);
-            setOffset(movedNode, movedPosition);
-            return newTop;
-        }
-
-        private AVLNode rotateRight() {
-            AVLNode newTop = left; // can't be faedelung
-            AVLNode movedNode = getLeftSubTree().getRightSubTree();
-
-            int newTopPosition = relativePosition + getOffset(newTop);
-            int myNewPosition = -newTop.relativePosition;
-            int movedPosition = getOffset(newTop) + getOffset(movedNode);
-
-            setLeft(movedNode, newTop);
-            newTop.setRight(this, null);
-
-            setOffset(newTop, newTopPosition);
-            setOffset(this, myNewPosition);
-            setOffset(movedNode, movedPosition);
-            return newTop;
-        }
-
-        /**
-         * Sets the left field to the node, or the previous node if that is null
-         *
-         * @param node  the new left subtree node
-         * @param previous  the previous node in the linked list
-         */
-        private void setLeft(AVLNode node, AVLNode previous) {
-            leftIsPrevious = (node == null);
-            left = (leftIsPrevious ? previous : node);
-            recalcHeight();
-        }
-
-        /**
-         * Sets the right field to the node, or the next node if that is null
-         *
-         * @param node  the new left subtree node
-         * @param next  the next node in the linked list
-         */
-        private void setRight(AVLNode node, AVLNode next) {
-            rightIsNext = (node == null);
-            right = (rightIsNext ? next : node);
-            recalcHeight();
-        }
-
-//      private void checkFaedelung() {
-//          AVLNode maxNode = left.max();
-//          if (!maxNode.rightIsFaedelung || maxNode.right != this) {
-//              throw new RuntimeException(maxNode + " should right-faedel to " + this);
-//          }
-//          AVLNode minNode = right.min();
-//          if (!minNode.leftIsFaedelung || minNode.left != this) {
-//              throw new RuntimeException(maxNode + " should left-faedel to " + this);
-//          }
-//      }
-//
-//        private int checkTreeDepth() {
-//            int hright = (getRightSubTree() == null ? -1 : getRightSubTree().checkTreeDepth());
-//            //          System.out.print("checkTreeDepth");
-//            //          System.out.print(this);
-//            //          System.out.print(" left: ");
-//            //          System.out.print(_left);
-//            //          System.out.print(" right: ");
-//            //          System.out.println(_right);
-//
-//            int hleft = (left == null ? -1 : left.checkTreeDepth());
-//            if (height != Math.max(hright, hleft) + 1) {
-//                throw new RuntimeException(
-//                    "height should be max" + hleft + "," + hright + " but is " + height);
-//            }
-//            return height;
-//        }
-//
-//        private int checkLeftSubNode() {
-//            if (getLeftSubTree() == null) {
-//                return 0;
-//            }
-//            int count = 1 + left.checkRightSubNode();
-//            if (left.relativePosition != -count) {
-//                throw new RuntimeException();
-//            }
-//            return count + left.checkLeftSubNode();
-//        }
-//        
-//        private int checkRightSubNode() {
-//            AVLNode right = getRightSubTree();
-//            if (right == null) {
-//                return 0;
-//            }
-//            int count = 1;
-//            count += right.checkLeftSubNode();
-//            if (right.relativePosition != count) {
-//                throw new RuntimeException();
-//            }
-//            return count + right.checkRightSubNode();
-//        }
-
-        /**
-         * Used for debugging.
-         */
-        public String toString() {
-            return "AVLNode(" + relativePosition + "," + (left != null) + "," + value +
-                "," + (getRightSubTree() != null) + ", faedelung " + rightIsNext + " )";
-        }
-    }
-
-    /**
-     * A list iterator over the linked list.
-     */
-    static class TreeListIterator implements ListIterator, OrderedIterator {
-        /** The parent list */
-        protected final TreeList parent;
-        /**
-         * Cache of the next node that will be returned by {@link #next()}.
-         */
-        protected AVLNode next;
-        /**
-         * The index of the next node to be returned.
-         */
-        protected int nextIndex;
-        /**
-         * Cache of the last node that was returned by {@link #next()}
-         * or {@link #previous()}.
-         */
-        protected AVLNode current;
-        /**
-         * The index of the last node that was returned.
-         */
-        protected int currentIndex;
-        /**
-         * The modification count that the list is expected to have. If the list
-         * doesn't have this count, then a
-         * {@link java.util.ConcurrentModificationException} may be thrown by
-         * the operations.
-         */
-        protected int expectedModCount;
-
-        /**
-         * Create a ListIterator for a list.
-         * 
-         * @param parent  the parent list
-         * @param fromIndex  the index to start at
-         */
-        protected TreeListIterator(TreeList parent, int fromIndex) throws IndexOutOfBoundsException {
-            super();
-            this.parent = parent;
-            this.expectedModCount = parent.modCount;
-            this.next = (parent.root == null ? null : parent.root.get(fromIndex));
-            this.nextIndex = fromIndex;
-            this.currentIndex = -1;
-        }
-
-        /**
-         * Checks the modification count of the list is the value that this
-         * object expects.
-         * 
-         * @throws ConcurrentModificationException If the list's modification
-         * count isn't the value that was expected.
-         */
-        protected void checkModCount() {
-            if (parent.modCount != expectedModCount) {
-                throw new ConcurrentModificationException();
-            }
-        }
-
-        public boolean hasNext() {
-            return (nextIndex < parent.size());
-        }
-
-        public Object next() {
-            checkModCount();
-            if (!hasNext()) {
-                throw new NoSuchElementException("No element at index " + nextIndex + ".");
-            }
-            if (next == null) {
-                next = parent.root.get(nextIndex);
-            }
-            Object value = next.getValue();
-            current = next;
-            currentIndex = nextIndex++;
-            next = next.next();
-            return value;
-        }
-
-        public boolean hasPrevious() {
-            return (nextIndex > 0);
-        }
-
-        public Object previous() {
-            checkModCount();
-            if (!hasPrevious()) {
-                throw new NoSuchElementException("Already at start of list.");
-            }
-            if (next == null) {
-                next = parent.root.get(nextIndex - 1);
-            } else {
-                next = next.previous();
-            }
-            Object value = next.getValue();
-            current = next;
-            currentIndex = --nextIndex;
-            return value;
-        }
-
-        public int nextIndex() {
-            return nextIndex;
-        }
-
-        public int previousIndex() {
-            return nextIndex() - 1;
-        }
-
-        public void remove() {
-            checkModCount();
-            if (currentIndex == -1) {
-                throw new IllegalStateException();
-            }
-            if (nextIndex == currentIndex) {
-                // remove() following previous()
-                next = next.next();
-                parent.remove(currentIndex);
-            } else {
-                // remove() following next()
-                parent.remove(currentIndex);
-                nextIndex--;
-            }
-            current = null;
-            currentIndex = -1;
-            expectedModCount++;
-        }
-
-        public void set(Object obj) {
-            checkModCount();
-            if (current == null) {
-                throw new IllegalStateException();
-            }
-            current.setValue(obj);
-        }
-
-        public void add(Object obj) {
-            checkModCount();
-            parent.add(nextIndex, obj);
-            current = null;
-            currentIndex = -1;
-            nextIndex++;
-            expectedModCount++;
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/TypedList.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/TypedList.java
deleted file mode 100755
index ea71494..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/TypedList.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.list;
-
-import java.util.List;
-
-import org.apache.commons.collections.functors.InstanceofPredicate;
-
-/**
- * Decorates another <code>List</code> to validate that elements
- * added are of a specific type.
- * <p>
- * The validation of additions is performed via an instanceof test against 
- * a specified <code>Class</code>. If an object cannot be added to the
- * collection, an IllegalArgumentException is thrown.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- * 
- * @author Stephen Colebourne
- * @author Matthew Hawthorne
- */
-public class TypedList {
-
-    /**
-     * Factory method to create a typed list.
-     * <p>
-     * If there are any elements already in the list being decorated, they
-     * are validated.
-     * 
-     * @param list  the list to decorate, must not be null
-     * @param type  the type to allow into the collection, must not be null
-     * @throws IllegalArgumentException if list or type is null
-     * @throws IllegalArgumentException if the list contains invalid elements
-     */
-    public static List decorate(List list, Class type) {
-        return new PredicatedList(list, InstanceofPredicate.getInstance(type));
-    }
-    
-    /**
-     * Restrictive constructor.
-     */
-    protected TypedList() {
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/UnmodifiableList.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/UnmodifiableList.java
deleted file mode 100755
index 999b73f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/UnmodifiableList.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.list;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-
-import org.apache.commons.collections.Unmodifiable;
-import org.apache.commons.collections.iterators.UnmodifiableIterator;
-import org.apache.commons.collections.iterators.UnmodifiableListIterator;
-
-/**
- * Decorates another <code>List</code> to ensure it can't be altered.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- * 
- * @author Stephen Colebourne
- */
-public final class UnmodifiableList
-        extends AbstractSerializableListDecorator
-        implements Unmodifiable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 6595182819922443652L;
-
-    /**
-     * Factory method to create an unmodifiable list.
-     * 
-     * @param list  the list to decorate, must not be null
-     * @throws IllegalArgumentException if list is null
-     */
-    public static List decorate(List list) {
-        if (list instanceof Unmodifiable) {
-            return list;
-        }
-        return new UnmodifiableList(list);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param list  the list to decorate, must not be null
-     * @throws IllegalArgumentException if list is null
-     */
-    private UnmodifiableList(List list) {
-        super(list);
-    }
-
-    //-----------------------------------------------------------------------
-    public Iterator iterator() {
-        return UnmodifiableIterator.decorate(getCollection().iterator());
-    }
-
-    public boolean add(Object object) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean addAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void clear() {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean remove(Object object) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean removeAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean retainAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    //-----------------------------------------------------------------------
-    public ListIterator listIterator() {
-        return UnmodifiableListIterator.decorate(getList().listIterator());
-    }
-
-    public ListIterator listIterator(int index) {
-        return UnmodifiableListIterator.decorate(getList().listIterator(index));
-    }
-
-    public void add(int index, Object object) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean addAll(int index, Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    public Object remove(int index) {
-        throw new UnsupportedOperationException();
-    }
-
-    public Object set(int index, Object object) {
-        throw new UnsupportedOperationException();
-    }
-
-    public List subList(int fromIndex, int toIndex) {
-        List sub = getList().subList(fromIndex, toIndex);
-        return new UnmodifiableList(sub);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/package.html b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/package.html
deleted file mode 100755
index ba339bf..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/list/package.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!-- $Id: package.html,v 1.1 2009/05/27 22:16:31 mparker Exp $ -->
- <!--
-   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.
-  -->
-<BODY>
-<p>
-This package contains implementations of the
-{@link java.util.List List} interface.
-</p>
-<p>
-The following implementations are provided in the package:
-<ul>
-<li>TreeList - a list that is optimised for insertions and removals at any index in the list</li>
-<li>CursorableLinkedList - a list that can be modified while the listIterator (cursor) is being used</li>
-<li>NodeCachingLinkedList - a linked list that caches the storage nodes for a performance gain</li>
-</ul>
-</p>
-<p>
-The following decorators are provided in the package:
-<ul>
-<li>Synchronized - synchronizes method access for multi-threaded environments</li>
-<li>Unmodifiable - ensures the collection cannot be altered</li>
-<li>Predicated - ensures that only elements that are valid according to a predicate can be added</li>
-<li>Typed - ensures that only elements that are of a specific type can be added</li>
-<li>Transformed - transforms each element added</li>
-<li>FixedSize - ensures that the size of the list cannot change</li>
-<li>Lazy - creates objects in the list on demand</li>
-<li>Growth - grows the list instead of erroring when set/add used with index beyond the list size</li>
-<li>SetUnique - a list that avoids duplicate entries like a Set</li>
-</ul>
-</p>
-</BODY>
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/AbstractHashedMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/AbstractHashedMap.java
deleted file mode 100755
index 9b9344d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/AbstractHashedMap.java
+++ /dev/null
@@ -1,1328 +0,0 @@
-/*
- *  Copyright 2003-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.util.AbstractCollection;
-import java.util.AbstractMap;
-import java.util.AbstractSet;
-import java.util.Collection;
-import java.util.ConcurrentModificationException;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-import org.apache.commons.collections.IterableMap;
-import org.apache.commons.collections.KeyValue;
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.iterators.EmptyIterator;
-import org.apache.commons.collections.iterators.EmptyMapIterator;
-
-/**
- * An abstract implementation of a hash-based map which provides numerous points for
- * subclasses to override.
- * <p>
- * This class implements all the features necessary for a subclass hash-based map.
- * Key-value entries are stored in instances of the <code>HashEntry</code> class,
- * which can be overridden and replaced. The iterators can similarly be replaced,
- * without the need to replace the KeySet, EntrySet and Values view classes.
- * <p>
- * Overridable methods are provided to change the default hashing behaviour, and
- * to change how entries are added to and removed from the map. Hopefully, all you
- * need for unusual subclasses is here.
- * <p>
- * NOTE: From Commons Collections 3.1 this class extends AbstractMap.
- * This is to provide backwards compatibility for ReferenceMap between v3.0 and v3.1.
- * This extends clause will be removed in v4.0.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:29 $
- *
- * @author java util HashMap
- * @author Stephen Colebourne
- * @author Christian Siefkes
- */
-public class AbstractHashedMap extends AbstractMap implements IterableMap {
-    
-    protected static final String NO_NEXT_ENTRY = "No next() entry in the iteration";
-    protected static final String NO_PREVIOUS_ENTRY = "No previous() entry in the iteration";
-    protected static final String REMOVE_INVALID = "remove() can only be called once after next()";
-    protected static final String GETKEY_INVALID = "getKey() can only be called after next() and before remove()";
-    protected static final String GETVALUE_INVALID = "getValue() can only be called after next() and before remove()";
-    protected static final String SETVALUE_INVALID = "setValue() can only be called after next() and before remove()";
-    
-    /** The default capacity to use */
-    protected static final int DEFAULT_CAPACITY = 16;
-    /** The default threshold to use */
-    protected static final int DEFAULT_THRESHOLD = 12;
-    /** The default load factor to use */
-    protected static final float DEFAULT_LOAD_FACTOR = 0.75f;
-    /** The maximum capacity allowed */
-    protected static final int MAXIMUM_CAPACITY = 1 << 30;
-    /** An object for masking null */
-    protected static final Object NULL = new Object();
-    
-    /** Load factor, normally 0.75 */
-    protected transient float loadFactor;
-    /** The size of the map */
-    protected transient int size;
-    /** Map entries */
-    protected transient HashEntry[] data;
-    /** Size at which to rehash */
-    protected transient int threshold;
-    /** Modification count for iterators */
-    protected transient int modCount;
-    /** Entry set */
-    protected transient EntrySet entrySet;
-    /** Key set */
-    protected transient KeySet keySet;
-    /** Values */
-    protected transient Values values;
-
-    /**
-     * Constructor only used in deserialization, do not use otherwise.
-     */
-    protected AbstractHashedMap() {
-        super();
-    }
-
-    /**
-     * Constructor which performs no validation on the passed in parameters.
-     * 
-     * @param initialCapacity  the initial capacity, must be a power of two
-     * @param loadFactor  the load factor, must be &gt; 0.0f and generally &lt; 1.0f
-     * @param threshold  the threshold, must be sensible
-     */
-    protected AbstractHashedMap(int initialCapacity, float loadFactor, int threshold) {
-        super();
-        this.loadFactor = loadFactor;
-        this.data = new HashEntry[initialCapacity];
-        this.threshold = threshold;
-        init();
-    }
-
-    /**
-     * Constructs a new, empty map with the specified initial capacity and
-     * default load factor. 
-     *
-     * @param initialCapacity  the initial capacity
-     * @throws IllegalArgumentException if the initial capacity is less than one
-     */
-    protected AbstractHashedMap(int initialCapacity) {
-        this(initialCapacity, DEFAULT_LOAD_FACTOR);
-    }
-
-    /**
-     * Constructs a new, empty map with the specified initial capacity and
-     * load factor. 
-     *
-     * @param initialCapacity  the initial capacity
-     * @param loadFactor  the load factor
-     * @throws IllegalArgumentException if the initial capacity is less than one
-     * @throws IllegalArgumentException if the load factor is less than or equal to zero
-     */
-    protected AbstractHashedMap(int initialCapacity, float loadFactor) {
-        super();
-        if (initialCapacity < 1) {
-            throw new IllegalArgumentException("Initial capacity must be greater than 0");
-        }
-        if (loadFactor <= 0.0f || Float.isNaN(loadFactor)) {
-            throw new IllegalArgumentException("Load factor must be greater than 0");
-        }
-        this.loadFactor = loadFactor;
-        initialCapacity = calculateNewCapacity(initialCapacity);
-        this.threshold = calculateThreshold(initialCapacity, loadFactor);
-        this.data = new HashEntry[initialCapacity];
-        init();
-    }
-
-    /**
-     * Constructor copying elements from another map.
-     *
-     * @param map  the map to copy
-     * @throws NullPointerException if the map is null
-     */
-    protected AbstractHashedMap(Map map) {
-        this(Math.max(2 * map.size(), DEFAULT_CAPACITY), DEFAULT_LOAD_FACTOR);
-        putAll(map);
-    }
-
-    /**
-     * Initialise subclasses during construction, cloning or deserialization.
-     */
-    protected void init() {
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the value mapped to the key specified.
-     * 
-     * @param key  the key
-     * @return the mapped value, null if no match
-     */
-    public Object get(Object key) {
-        key = convertKey(key);
-        int hashCode = hash(key);
-        HashEntry entry = data[hashIndex(hashCode, data.length)]; // no local for hash index
-        while (entry != null) {
-            if (entry.hashCode == hashCode && isEqualKey(key, entry.key)) {
-                return entry.getValue();
-            }
-            entry = entry.next;
-        }
-        return null;
-    }
-
-    /**
-     * Gets the size of the map.
-     * 
-     * @return the size
-     */
-    public int size() {
-        return size;
-    }
-
-    /**
-     * Checks whether the map is currently empty.
-     * 
-     * @return true if the map is currently size zero
-     */
-    public boolean isEmpty() {
-        return (size == 0);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Checks whether the map contains the specified key.
-     * 
-     * @param key  the key to search for
-     * @return true if the map contains the key
-     */
-    public boolean containsKey(Object key) {
-        key = convertKey(key);
-        int hashCode = hash(key);
-        HashEntry entry = data[hashIndex(hashCode, data.length)]; // no local for hash index
-        while (entry != null) {
-            if (entry.hashCode == hashCode && isEqualKey(key, entry.key)) {
-                return true;
-            }
-            entry = entry.next;
-        }
-        return false;
-    }
-
-    /**
-     * Checks whether the map contains the specified value.
-     * 
-     * @param value  the value to search for
-     * @return true if the map contains the value
-     */
-    public boolean containsValue(Object value) {
-        if (value == null) {
-            for (int i = 0, isize = data.length; i < isize; i++) {
-                HashEntry entry = data[i];
-                while (entry != null) {
-                    if (entry.getValue() == null) {
-                        return true;
-                    }
-                    entry = entry.next;
-                }
-            }
-        } else {
-            for (int i = 0, isize = data.length; i < isize; i++) {
-                HashEntry entry = data[i];
-                while (entry != null) {
-                    if (isEqualValue(value, entry.getValue())) {
-                        return true;
-                    }
-                    entry = entry.next;
-                }
-            }
-        }
-        return false;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Puts a key-value mapping into this map.
-     * 
-     * @param key  the key to add
-     * @param value  the value to add
-     * @return the value previously mapped to this key, null if none
-     */
-    public Object put(Object key, Object value) {
-        key = convertKey(key);
-        int hashCode = hash(key);
-        int index = hashIndex(hashCode, data.length);
-        HashEntry entry = data[index];
-        while (entry != null) {
-            if (entry.hashCode == hashCode && isEqualKey(key, entry.key)) {
-                Object oldValue = entry.getValue();
-                updateEntry(entry, value);
-                return oldValue;
-            }
-            entry = entry.next;
-        }
-        
-        addMapping(index, hashCode, key, value);
-        return null;
-    }
-
-    /**
-     * Puts all the values from the specified map into this map.
-     * <p>
-     * This implementation iterates around the specified map and
-     * uses {@link #put(Object, Object)}.
-     * 
-     * @param map  the map to add
-     * @throws NullPointerException if the map is null
-     */
-    public void putAll(Map map) {
-        int mapSize = map.size();
-        if (mapSize == 0) {
-            return;
-        }
-        int newSize = (int) ((size + mapSize) / loadFactor + 1);
-        ensureCapacity(calculateNewCapacity(newSize));
-        for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
-            Map.Entry entry = (Map.Entry) it.next();
-            put(entry.getKey(), entry.getValue());
-        }
-    }
-
-    /**
-     * Removes the specified mapping from this map.
-     * 
-     * @param key  the mapping to remove
-     * @return the value mapped to the removed key, null if key not in map
-     */
-    public Object remove(Object key) {
-        key = convertKey(key);
-        int hashCode = hash(key);
-        int index = hashIndex(hashCode, data.length);
-        HashEntry entry = data[index];
-        HashEntry previous = null;
-        while (entry != null) {
-            if (entry.hashCode == hashCode && isEqualKey(key, entry.key)) {
-                Object oldValue = entry.getValue();
-                removeMapping(entry, index, previous);
-                return oldValue;
-            }
-            previous = entry;
-            entry = entry.next;
-        }
-        return null;
-    }
-
-    /**
-     * Clears the map, resetting the size to zero and nullifying references
-     * to avoid garbage collection issues.
-     */
-    public void clear() {
-        modCount++;
-        HashEntry[] data = this.data;
-        for (int i = data.length - 1; i >= 0; i--) {
-            data[i] = null;
-        }
-        size = 0;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Converts input keys to another object for storage in the map.
-     * This implementation masks nulls.
-     * Subclasses can override this to perform alternate key conversions.
-     * <p>
-     * The reverse conversion can be changed, if required, by overriding the
-     * getKey() method in the hash entry.
-     * 
-     * @param key  the key convert
-     * @return the converted key
-     */
-    protected Object convertKey(Object key) {
-        return (key == null ? NULL : key);
-    }
-    
-    /**
-     * Gets the hash code for the key specified.
-     * This implementation uses the additional hashing routine from JDK1.4.
-     * Subclasses can override this to return alternate hash codes.
-     * 
-     * @param key  the key to get a hash code for
-     * @return the hash code
-     */
-    protected int hash(Object key) {
-        // same as JDK 1.4
-        int h = key.hashCode();
-        h += ~(h << 9);
-        h ^=  (h >>> 14);
-        h +=  (h << 4);
-        h ^=  (h >>> 10);
-        return h;
-    }
-    
-    /**
-     * Compares two keys, in internal converted form, to see if they are equal.
-     * This implementation uses the equals method and assumes neither key is null.
-     * Subclasses can override this to match differently.
-     * 
-     * @param key1  the first key to compare passed in from outside
-     * @param key2  the second key extracted from the entry via <code>entry.key</code>
-     * @return true if equal
-     */
-    protected boolean isEqualKey(Object key1, Object key2) {
-        return (key1 == key2 || key1.equals(key2));
-    }
-    
-    /**
-     * Compares two values, in external form, to see if they are equal.
-     * This implementation uses the equals method and assumes neither value is null.
-     * Subclasses can override this to match differently.
-     * 
-     * @param value1  the first value to compare passed in from outside
-     * @param value2  the second value extracted from the entry via <code>getValue()</code>
-     * @return true if equal
-     */
-    protected boolean isEqualValue(Object value1, Object value2) {
-        return (value1 == value2 || value1.equals(value2));
-    }
-    
-    /**
-     * Gets the index into the data storage for the hashCode specified.
-     * This implementation uses the least significant bits of the hashCode.
-     * Subclasses can override this to return alternate bucketing.
-     * 
-     * @param hashCode  the hash code to use
-     * @param dataSize  the size of the data to pick a bucket from
-     * @return the bucket index
-     */
-    protected int hashIndex(int hashCode, int dataSize) {
-        return hashCode & (dataSize - 1);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the entry mapped to the key specified.
-     * <p>
-     * This method exists for subclasses that may need to perform a multi-step
-     * process accessing the entry. The public methods in this class don't use this
-     * method to gain a small performance boost.
-     * 
-     * @param key  the key
-     * @return the entry, null if no match
-     */
-    protected HashEntry getEntry(Object key) {
-        key = convertKey(key);
-        int hashCode = hash(key);
-        HashEntry entry = data[hashIndex(hashCode, data.length)]; // no local for hash index
-        while (entry != null) {
-            if (entry.hashCode == hashCode && isEqualKey(key, entry.key)) {
-                return entry;
-            }
-            entry = entry.next;
-        }
-        return null;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Updates an existing key-value mapping to change the value.
-     * <p>
-     * This implementation calls <code>setValue()</code> on the entry.
-     * Subclasses could override to handle changes to the map.
-     * 
-     * @param entry  the entry to update
-     * @param newValue  the new value to store
-     */
-    protected void updateEntry(HashEntry entry, Object newValue) {
-        entry.setValue(newValue);
-    }
-    
-    /**
-     * Reuses an existing key-value mapping, storing completely new data.
-     * <p>
-     * This implementation sets all the data fields on the entry.
-     * Subclasses could populate additional entry fields.
-     * 
-     * @param entry  the entry to update, not null
-     * @param hashIndex  the index in the data array
-     * @param hashCode  the hash code of the key to add
-     * @param key  the key to add
-     * @param value  the value to add
-     */
-    protected void reuseEntry(HashEntry entry, int hashIndex, int hashCode, Object key, Object value) {
-        entry.next = data[hashIndex];
-        entry.hashCode = hashCode;
-        entry.key = key;
-        entry.value = value;
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Adds a new key-value mapping into this map.
-     * <p>
-     * This implementation calls <code>createEntry()</code>, <code>addEntry()</code>
-     * and <code>checkCapacity()</code>.
-     * It also handles changes to <code>modCount</code> and <code>size</code>.
-     * Subclasses could override to fully control adds to the map.
-     * 
-     * @param hashIndex  the index into the data array to store at
-     * @param hashCode  the hash code of the key to add
-     * @param key  the key to add
-     * @param value  the value to add
-     */
-    protected void addMapping(int hashIndex, int hashCode, Object key, Object value) {
-        modCount++;
-        HashEntry entry = createEntry(data[hashIndex], hashCode, key, value);
-        addEntry(entry, hashIndex);
-        size++;
-        checkCapacity();
-    }
-    
-    /**
-     * Creates an entry to store the key-value data.
-     * <p>
-     * This implementation creates a new HashEntry instance.
-     * Subclasses can override this to return a different storage class,
-     * or implement caching.
-     * 
-     * @param next  the next entry in sequence
-     * @param hashCode  the hash code to use
-     * @param key  the key to store
-     * @param value  the value to store
-     * @return the newly created entry
-     */
-    protected HashEntry createEntry(HashEntry next, int hashCode, Object key, Object value) {
-        return new HashEntry(next, hashCode, key, value);
-    }
-    
-    /**
-     * Adds an entry into this map.
-     * <p>
-     * This implementation adds the entry to the data storage table.
-     * Subclasses could override to handle changes to the map.
-     *
-     * @param entry  the entry to add
-     * @param hashIndex  the index into the data array to store at
-     */
-    protected void addEntry(HashEntry entry, int hashIndex) {
-        data[hashIndex] = entry;
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Removes a mapping from the map.
-     * <p>
-     * This implementation calls <code>removeEntry()</code> and <code>destroyEntry()</code>.
-     * It also handles changes to <code>modCount</code> and <code>size</code>.
-     * Subclasses could override to fully control removals from the map.
-     * 
-     * @param entry  the entry to remove
-     * @param hashIndex  the index into the data structure
-     * @param previous  the previous entry in the chain
-     */
-    protected void removeMapping(HashEntry entry, int hashIndex, HashEntry previous) {
-        modCount++;
-        removeEntry(entry, hashIndex, previous);
-        size--;
-        destroyEntry(entry);
-    }
-    
-    /**
-     * Removes an entry from the chain stored in a particular index.
-     * <p>
-     * This implementation removes the entry from the data storage table.
-     * The size is not updated.
-     * Subclasses could override to handle changes to the map.
-     * 
-     * @param entry  the entry to remove
-     * @param hashIndex  the index into the data structure
-     * @param previous  the previous entry in the chain
-     */
-    protected void removeEntry(HashEntry entry, int hashIndex, HashEntry previous) {
-        if (previous == null) {
-            data[hashIndex] = entry.next;
-        } else {
-            previous.next = entry.next;
-        }
-    }
-    
-    /**
-     * Kills an entry ready for the garbage collector.
-     * <p>
-     * This implementation prepares the HashEntry for garbage collection.
-     * Subclasses can override this to implement caching (override clear as well).
-     * 
-     * @param entry  the entry to destroy
-     */
-    protected void destroyEntry(HashEntry entry) {
-        entry.next = null;
-        entry.key = null;
-        entry.value = null;
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Checks the capacity of the map and enlarges it if necessary.
-     * <p>
-     * This implementation uses the threshold to check if the map needs enlarging
-     */
-    protected void checkCapacity() {
-        if (size >= threshold) {
-            int newCapacity = data.length * 2;
-            if (newCapacity <= MAXIMUM_CAPACITY) {
-                ensureCapacity(newCapacity);
-            }
-        }
-    }
-    
-    /**
-     * Changes the size of the data structure to the capacity proposed.
-     * 
-     * @param newCapacity  the new capacity of the array (a power of two, less or equal to max)
-     */
-    protected void ensureCapacity(int newCapacity) {
-        int oldCapacity = data.length;
-        if (newCapacity <= oldCapacity) {
-            return;
-        }
-        if (size == 0) {
-            threshold = calculateThreshold(newCapacity, loadFactor);
-            data = new HashEntry[newCapacity];
-        } else {
-            HashEntry oldEntries[] = data;
-            HashEntry newEntries[] = new HashEntry[newCapacity];
-
-            modCount++;
-            for (int i = oldCapacity - 1; i >= 0; i--) {
-                HashEntry entry = oldEntries[i];
-                if (entry != null) {
-                    oldEntries[i] = null;  // gc
-                    do {
-                        HashEntry next = entry.next;
-                        int index = hashIndex(entry.hashCode, newCapacity);  
-                        entry.next = newEntries[index];
-                        newEntries[index] = entry;
-                        entry = next;
-                    } while (entry != null);
-                }
-            }
-            threshold = calculateThreshold(newCapacity, loadFactor);
-            data = newEntries;
-        }
-    }
-
-    /**
-     * Calculates the new capacity of the map.
-     * This implementation normalizes the capacity to a power of two.
-     * 
-     * @param proposedCapacity  the proposed capacity
-     * @return the normalized new capacity
-     */
-    protected int calculateNewCapacity(int proposedCapacity) {
-        int newCapacity = 1;
-        if (proposedCapacity > MAXIMUM_CAPACITY) {
-            newCapacity = MAXIMUM_CAPACITY;
-        } else {
-            while (newCapacity < proposedCapacity) {
-                newCapacity <<= 1;  // multiply by two
-            }
-            if (newCapacity > MAXIMUM_CAPACITY) {
-                newCapacity = MAXIMUM_CAPACITY;
-            }
-        }
-        return newCapacity;
-    }
-    
-    /**
-     * Calculates the new threshold of the map, where it will be resized.
-     * This implementation uses the load factor.
-     * 
-     * @param newCapacity  the new capacity
-     * @param factor  the load factor
-     * @return the new resize threshold
-     */
-    protected int calculateThreshold(int newCapacity, float factor) {
-        return (int) (newCapacity * factor);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the <code>next</code> field from a <code>HashEntry</code>.
-     * Used in subclasses that have no visibility of the field.
-     * 
-     * @param entry  the entry to query, must not be null
-     * @return the <code>next</code> field of the entry
-     * @throws NullPointerException if the entry is null
-     * @since Commons Collections 3.1
-     */
-    protected HashEntry entryNext(HashEntry entry) {
-        return entry.next;
-    }
-    
-    /**
-     * Gets the <code>hashCode</code> field from a <code>HashEntry</code>.
-     * Used in subclasses that have no visibility of the field.
-     * 
-     * @param entry  the entry to query, must not be null
-     * @return the <code>hashCode</code> field of the entry
-     * @throws NullPointerException if the entry is null
-     * @since Commons Collections 3.1
-     */
-    protected int entryHashCode(HashEntry entry) {
-        return entry.hashCode;
-    }
-    
-    /**
-     * Gets the <code>key</code> field from a <code>HashEntry</code>.
-     * Used in subclasses that have no visibility of the field.
-     * 
-     * @param entry  the entry to query, must not be null
-     * @return the <code>key</code> field of the entry
-     * @throws NullPointerException if the entry is null
-     * @since Commons Collections 3.1
-     */
-    protected Object entryKey(HashEntry entry) {
-        return entry.key;
-    }
-    
-    /**
-     * Gets the <code>value</code> field from a <code>HashEntry</code>.
-     * Used in subclasses that have no visibility of the field.
-     * 
-     * @param entry  the entry to query, must not be null
-     * @return the <code>value</code> field of the entry
-     * @throws NullPointerException if the entry is null
-     * @since Commons Collections 3.1
-     */
-    protected Object entryValue(HashEntry entry) {
-        return entry.value;
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Gets an iterator over the map.
-     * Changes made to the iterator affect this map.
-     * <p>
-     * A MapIterator returns the keys in the map. It also provides convenient
-     * methods to get the key and value, and set the value.
-     * It avoids the need to create an entrySet/keySet/values object.
-     * It also avoids creating the Map.Entry object.
-     * 
-     * @return the map iterator
-     */
-    public MapIterator mapIterator() {
-        if (size == 0) {
-            return EmptyMapIterator.INSTANCE;
-        }
-        return new HashMapIterator(this);
-    }
-
-    /**
-     * MapIterator implementation.
-     */
-    protected static class HashMapIterator extends HashIterator implements MapIterator {
-        
-        protected HashMapIterator(AbstractHashedMap parent) {
-            super(parent);
-        }
-
-        public Object next() {
-            return super.nextEntry().getKey();
-        }
-
-        public Object getKey() {
-            HashEntry current = currentEntry();
-            if (current == null) {
-                throw new IllegalStateException(AbstractHashedMap.GETKEY_INVALID);
-            }
-            return current.getKey();
-        }
-
-        public Object getValue() {
-            HashEntry current = currentEntry();
-            if (current == null) {
-                throw new IllegalStateException(AbstractHashedMap.GETVALUE_INVALID);
-            }
-            return current.getValue();
-        }
-
-        public Object setValue(Object value) {
-            HashEntry current = currentEntry();
-            if (current == null) {
-                throw new IllegalStateException(AbstractHashedMap.SETVALUE_INVALID);
-            }
-            return current.setValue(value);
-        }
-    }
-    
-    //-----------------------------------------------------------------------    
-    /**
-     * Gets the entrySet view of the map.
-     * Changes made to the view affect this map.
-     * To simply iterate through the entries, use {@link #mapIterator()}.
-     * 
-     * @return the entrySet view
-     */
-    public Set entrySet() {
-        if (entrySet == null) {
-            entrySet = new EntrySet(this);
-        }
-        return entrySet;
-    }
-    
-    /**
-     * Creates an entry set iterator.
-     * Subclasses can override this to return iterators with different properties.
-     * 
-     * @return the entrySet iterator
-     */
-    protected Iterator createEntrySetIterator() {
-        if (size() == 0) {
-            return EmptyIterator.INSTANCE;
-        }
-        return new EntrySetIterator(this);
-    }
-
-    /**
-     * EntrySet implementation.
-     */
-    protected static class EntrySet extends AbstractSet {
-        /** The parent map */
-        protected final AbstractHashedMap parent;
-        
-        protected EntrySet(AbstractHashedMap parent) {
-            super();
-            this.parent = parent;
-        }
-
-        public int size() {
-            return parent.size();
-        }
-        
-        public void clear() {
-            parent.clear();
-        }
-        
-        public boolean contains(Object entry) {
-            if (entry instanceof Map.Entry) {
-                Map.Entry e = (Map.Entry) entry;
-                Entry match = parent.getEntry(e.getKey());
-                return (match != null && match.equals(e));
-            }
-            return false;
-        }
-        
-        public boolean remove(Object obj) {
-            if (obj instanceof Map.Entry == false) {
-                return false;
-            }
-            if (contains(obj) == false) {
-                return false;
-            }
-            Map.Entry entry = (Map.Entry) obj;
-            Object key = entry.getKey();
-            parent.remove(key);
-            return true;
-        }
-
-        public Iterator iterator() {
-            return parent.createEntrySetIterator();
-        }
-    }
-
-    /**
-     * EntrySet iterator.
-     */
-    protected static class EntrySetIterator extends HashIterator {
-        
-        protected EntrySetIterator(AbstractHashedMap parent) {
-            super(parent);
-        }
-
-        public Object next() {
-            return super.nextEntry();
-        }
-    }
-
-    //-----------------------------------------------------------------------    
-    /**
-     * Gets the keySet view of the map.
-     * Changes made to the view affect this map.
-     * To simply iterate through the keys, use {@link #mapIterator()}.
-     * 
-     * @return the keySet view
-     */
-    public Set keySet() {
-        if (keySet == null) {
-            keySet = new KeySet(this);
-        }
-        return keySet;
-    }
-
-    /**
-     * Creates a key set iterator.
-     * Subclasses can override this to return iterators with different properties.
-     * 
-     * @return the keySet iterator
-     */
-    protected Iterator createKeySetIterator() {
-        if (size() == 0) {
-            return EmptyIterator.INSTANCE;
-        }
-        return new KeySetIterator(this);
-    }
-
-    /**
-     * KeySet implementation.
-     */
-    protected static class KeySet extends AbstractSet {
-        /** The parent map */
-        protected final AbstractHashedMap parent;
-        
-        protected KeySet(AbstractHashedMap parent) {
-            super();
-            this.parent = parent;
-        }
-
-        public int size() {
-            return parent.size();
-        }
-        
-        public void clear() {
-            parent.clear();
-        }
-        
-        public boolean contains(Object key) {
-            return parent.containsKey(key);
-        }
-        
-        public boolean remove(Object key) {
-            boolean result = parent.containsKey(key);
-            parent.remove(key);
-            return result;
-        }
-
-        public Iterator iterator() {
-            return parent.createKeySetIterator();
-        }
-    }
-
-    /**
-     * KeySet iterator.
-     */
-    protected static class KeySetIterator extends EntrySetIterator {
-        
-        protected KeySetIterator(AbstractHashedMap parent) {
-            super(parent);
-        }
-
-        public Object next() {
-            return super.nextEntry().getKey();
-        }
-    }
-    
-    //-----------------------------------------------------------------------    
-    /**
-     * Gets the values view of the map.
-     * Changes made to the view affect this map.
-     * To simply iterate through the values, use {@link #mapIterator()}.
-     * 
-     * @return the values view
-     */
-    public Collection values() {
-        if (values == null) {
-            values = new Values(this);
-        }
-        return values;
-    }
-
-    /**
-     * Creates a values iterator.
-     * Subclasses can override this to return iterators with different properties.
-     * 
-     * @return the values iterator
-     */
-    protected Iterator createValuesIterator() {
-        if (size() == 0) {
-            return EmptyIterator.INSTANCE;
-        }
-        return new ValuesIterator(this);
-    }
-
-    /**
-     * Values implementation.
-     */
-    protected static class Values extends AbstractCollection {
-        /** The parent map */
-        protected final AbstractHashedMap parent;
-        
-        protected Values(AbstractHashedMap parent) {
-            super();
-            this.parent = parent;
-        }
-
-        public int size() {
-            return parent.size();
-        }
-        
-        public void clear() {
-            parent.clear();
-        }
-        
-        public boolean contains(Object value) {
-            return parent.containsValue(value);
-        }
-        
-        public Iterator iterator() {
-            return parent.createValuesIterator();
-        }
-    }
-
-    /**
-     * Values iterator.
-     */
-    protected static class ValuesIterator extends HashIterator {
-        
-        protected ValuesIterator(AbstractHashedMap parent) {
-            super(parent);
-        }
-
-        public Object next() {
-            return super.nextEntry().getValue();
-        }
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * HashEntry used to store the data.
-     * <p>
-     * If you subclass <code>AbstractHashedMap</code> but not <code>HashEntry</code>
-     * then you will not be able to access the protected fields.
-     * The <code>entryXxx()</code> methods on <code>AbstractHashedMap</code> exist
-     * to provide the necessary access.
-     */
-    protected static class HashEntry implements Map.Entry, KeyValue {
-        /** The next entry in the hash chain */
-        protected HashEntry next;
-        /** The hash code of the key */
-        protected int hashCode;
-        /** The key */
-        protected Object key;
-        /** The value */
-        protected Object value;
-        
-        protected HashEntry(HashEntry next, int hashCode, Object key, Object value) {
-            super();
-            this.next = next;
-            this.hashCode = hashCode;
-            this.key = key;
-            this.value = value;
-        }
-        
-        public Object getKey() {
-            return (key == NULL ? null : key);
-        }
-        
-        public Object getValue() {
-            return value;
-        }
-        
-        public Object setValue(Object value) {
-            Object old = this.value;
-            this.value = value;
-            return old;
-        }
-        
-        public boolean equals(Object obj) {
-            if (obj == this) {
-                return true;
-            }
-            if (obj instanceof Map.Entry == false) {
-                return false;
-            }
-            Map.Entry other = (Map.Entry) obj;
-            return
-                (getKey() == null ? other.getKey() == null : getKey().equals(other.getKey())) &&
-                (getValue() == null ? other.getValue() == null : getValue().equals(other.getValue()));
-        }
-        
-        public int hashCode() {
-            return (getKey() == null ? 0 : getKey().hashCode()) ^
-                   (getValue() == null ? 0 : getValue().hashCode()); 
-        }
-        
-        public String toString() {
-            return new StringBuffer().append(getKey()).append('=').append(getValue()).toString();
-        }
-    }
-    
-    /**
-     * Base Iterator
-     */
-    protected static abstract class HashIterator implements Iterator {
-        
-        /** The parent map */
-        protected final AbstractHashedMap parent;
-        /** The current index into the array of buckets */
-        protected int hashIndex;
-        /** The last returned entry */
-        protected HashEntry last;
-        /** The next entry */
-        protected HashEntry next;
-        /** The modification count expected */
-        protected int expectedModCount;
-        
-        protected HashIterator(AbstractHashedMap parent) {
-            super();
-            this.parent = parent;
-            HashEntry[] data = parent.data;
-            int i = data.length;
-            HashEntry next = null;
-            while (i > 0 && next == null) {
-                next = data[--i];
-            }
-            this.next = next;
-            this.hashIndex = i;
-            this.expectedModCount = parent.modCount;
-        }
-
-        public boolean hasNext() {
-            return (next != null);
-        }
-
-        protected HashEntry nextEntry() { 
-            if (parent.modCount != expectedModCount) {
-                throw new ConcurrentModificationException();
-            }
-            HashEntry newCurrent = next;
-            if (newCurrent == null)  {
-                throw new NoSuchElementException(AbstractHashedMap.NO_NEXT_ENTRY);
-            }
-            HashEntry[] data = parent.data;
-            int i = hashIndex;
-            HashEntry n = newCurrent.next;
-            while (n == null && i > 0) {
-                n = data[--i];
-            }
-            next = n;
-            hashIndex = i;
-            last = newCurrent;
-            return newCurrent;
-        }
-
-        protected HashEntry currentEntry() {
-            return last;
-        }
-        
-        public void remove() {
-            if (last == null) {
-                throw new IllegalStateException(AbstractHashedMap.REMOVE_INVALID);
-            }
-            if (parent.modCount != expectedModCount) {
-                throw new ConcurrentModificationException();
-            }
-            parent.remove(last.getKey());
-            last = null;
-            expectedModCount = parent.modCount;
-        }
-
-        public String toString() {
-            if (last != null) {
-                return "Iterator[" + last.getKey() + "=" + last.getValue() + "]";
-            } else {
-                return "Iterator[]";
-            }
-        }
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Writes the map data to the stream. This method must be overridden if a
-     * subclass must be setup before <code>put()</code> is used.
-     * <p>
-     * Serialization is not one of the JDK's nicest topics. Normal serialization will
-     * initialise the superclass before the subclass. Sometimes however, this isn't
-     * what you want, as in this case the <code>put()</code> method on read can be
-     * affected by subclass state.
-     * <p>
-     * The solution adopted here is to serialize the state data of this class in
-     * this protected method. This method must be called by the
-     * <code>writeObject()</code> of the first serializable subclass.
-     * <p>
-     * Subclasses may override if they have a specific field that must be present
-     * on read before this implementation will work. Generally, the read determines
-     * what must be serialized here, if anything.
-     * 
-     * @param out  the output stream
-     */
-    protected void doWriteObject(ObjectOutputStream out) throws IOException {
-        out.writeFloat(loadFactor);
-        out.writeInt(data.length);
-        out.writeInt(size);
-        for (MapIterator it = mapIterator(); it.hasNext();) {
-            out.writeObject(it.next());
-            out.writeObject(it.getValue());
-        }
-    }
-
-    /**
-     * Reads the map data from the stream. This method must be overridden if a
-     * subclass must be setup before <code>put()</code> is used.
-     * <p>
-     * Serialization is not one of the JDK's nicest topics. Normal serialization will
-     * initialise the superclass before the subclass. Sometimes however, this isn't
-     * what you want, as in this case the <code>put()</code> method on read can be
-     * affected by subclass state.
-     * <p>
-     * The solution adopted here is to deserialize the state data of this class in
-     * this protected method. This method must be called by the
-     * <code>readObject()</code> of the first serializable subclass.
-     * <p>
-     * Subclasses may override if the subclass has a specific field that must be present
-     * before <code>put()</code> or <code>calculateThreshold()</code> will work correctly.
-     * 
-     * @param in  the input stream
-     */
-    protected void doReadObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        loadFactor = in.readFloat();
-        int capacity = in.readInt();
-        int size = in.readInt();
-        init();
-        threshold = calculateThreshold(capacity, loadFactor);
-        data = new HashEntry[capacity];
-        for (int i = 0; i < size; i++) {
-            Object key = in.readObject();
-            Object value = in.readObject();
-            put(key, value);
-        }
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Clones the map without cloning the keys or values.
-     * <p>
-     * To implement <code>clone()</code>, a subclass must implement the
-     * <code>Cloneable</code> interface and make this method public.
-     *
-     * @return a shallow clone
-     */
-    protected Object clone() {
-        try {
-            AbstractHashedMap cloned = (AbstractHashedMap) super.clone();
-            cloned.data = new HashEntry[data.length];
-            cloned.entrySet = null;
-            cloned.keySet = null;
-            cloned.values = null;
-            cloned.modCount = 0;
-            cloned.size = 0;
-            cloned.init();
-            cloned.putAll(this);
-            return cloned;
-            
-        } catch (CloneNotSupportedException ex) {
-            return null;  // should never happen
-        }
-    }
-    
-    /**
-     * Compares this map with another.
-     * 
-     * @param obj  the object to compare to
-     * @return true if equal
-     */
-    public boolean equals(Object obj) {
-        if (obj == this) {
-            return true;
-        }
-        if (obj instanceof Map == false) {
-            return false;
-        }
-        Map map = (Map) obj;
-        if (map.size() != size()) {
-            return false;
-        }
-        MapIterator it = mapIterator();
-        try {
-            while (it.hasNext()) {
-                Object key = it.next();
-                Object value = it.getValue();
-                if (value == null) {
-                    if (map.get(key) != null || map.containsKey(key) == false) {
-                        return false;
-                    }
-                } else {
-                    if (value.equals(map.get(key)) == false) {
-                        return false;
-                    }
-                }
-            }
-        } catch (ClassCastException ignored)   {
-            return false;
-        } catch (NullPointerException ignored) {
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * Gets the standard Map hashCode.
-     * 
-     * @return the hash code defined in the Map interface
-     */
-    public int hashCode() {
-        int total = 0;
-        Iterator it = createEntrySetIterator();
-        while (it.hasNext()) {
-            total += it.next().hashCode();
-        }
-        return total;
-    }
-
-    /**
-     * Gets the map as a String.
-     * 
-     * @return a string version of the map
-     */
-    public String toString() {
-        if (size() == 0) {
-            return "{}";
-        }
-        StringBuffer buf = new StringBuffer(32 * size());
-        buf.append('{');
-
-        MapIterator it = mapIterator();
-        boolean hasNext = it.hasNext();
-        while (hasNext) {
-            Object key = it.next();
-            Object value = it.getValue();
-            buf.append(key == this ? "(this Map)" : key)
-               .append('=')
-               .append(value == this ? "(this Map)" : value);
-
-            hasNext = it.hasNext();
-            if (hasNext) {
-                buf.append(',').append(' ');
-            }
-        }
-
-        buf.append('}');
-        return buf.toString();
-    }
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/AbstractInputCheckedMapDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/AbstractInputCheckedMapDecorator.java
deleted file mode 100755
index f76369b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/AbstractInputCheckedMapDecorator.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- *  Copyright 2004-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.lang.reflect.Array;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.collections.iterators.AbstractIteratorDecorator;
-import org.apache.commons.collections.keyvalue.AbstractMapEntryDecorator;
-import org.apache.commons.collections.set.AbstractSetDecorator;
-
-/**
- * An abstract base class that simplifies the task of creating map decorators.
- * <p>
- * The Map API is very difficult to decorate correctly, and involves implementing
- * lots of different classes. This class exists to provide a simpler API.
- * <p>
- * Special hook methods are provided that are called when objects are added to
- * the map. By overriding these methods, the input can be validated or manipulated.
- * In addition to the main map methods, the entrySet is also affected, which is
- * the hardest part of writing map implementations.
- * <p>
- * This class is package-scoped, and may be withdrawn or replaced in future
- * versions of Commons Collections.
- *
- * @since Commons Collections 3.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:29 $
- * 
- * @author Stephen Colebourne
- */
-abstract class AbstractInputCheckedMapDecorator
-        extends AbstractMapDecorator {
-
-    /**
-     * Constructor only used in deserialization, do not use otherwise.
-     */
-    protected AbstractInputCheckedMapDecorator() {
-        super();
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if map is null
-     */
-    protected AbstractInputCheckedMapDecorator(Map map) {
-        super(map);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Hook method called when a value is being set using <code>setValue</code>.
-     * <p>
-     * An implementation may validate the value and throw an exception
-     * or it may transform the value into another object.
-     * <p>
-     * This implementation returns the input value.
-     * 
-     * @param value  the value to check
-     * @throws UnsupportedOperationException if the map may not be changed by setValue
-     * @throws IllegalArgumentException if the specified value is invalid
-     * @throws ClassCastException if the class of the specified value is invalid
-     * @throws NullPointerException if the specified value is null and nulls are invalid
-     */
-    protected abstract Object checkSetValue(Object value);
-
-    /**
-     * Hook method called to determine if <code>checkSetValue</code> has any effect.
-     * <p>
-     * An implementation should return false if the <code>checkSetValue</code> method
-     * has no effect as this optimises the implementation.
-     * <p>
-     * This implementation returns <code>true</code>.
-     * 
-     * @return true always
-     */
-    protected boolean isSetValueChecking() {
-        return true;
-    }
-
-    //-----------------------------------------------------------------------
-    public Set entrySet() {
-        if (isSetValueChecking()) {
-            return new EntrySet(map.entrySet(), this);
-        } else {
-            return map.entrySet();
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Implementation of an entry set that checks additions via setValue.
-     */
-    static class EntrySet extends AbstractSetDecorator {
-        
-        /** The parent map */
-        private final AbstractInputCheckedMapDecorator parent;
-
-        protected EntrySet(Set set, AbstractInputCheckedMapDecorator parent) {
-            super(set);
-            this.parent = parent;
-        }
-
-        public Iterator iterator() {
-            return new EntrySetIterator(collection.iterator(), parent);
-        }
-        
-        public Object[] toArray() {
-            Object[] array = collection.toArray();
-            for (int i = 0; i < array.length; i++) {
-                array[i] = new MapEntry((Map.Entry) array[i], parent);
-            }
-            return array;
-        }
-        
-        public Object[] toArray(Object array[]) {
-            Object[] result = array;
-            if (array.length > 0) {
-                // we must create a new array to handle multi-threaded situations
-                // where another thread could access data before we decorate it
-                result = (Object[]) Array.newInstance(array.getClass().getComponentType(), 0);
-            }
-            result = collection.toArray(result);
-            for (int i = 0; i < result.length; i++) {
-                result[i] = new MapEntry((Map.Entry) result[i], parent);
-            }
-
-            // check to see if result should be returned straight
-            if (result.length > array.length) {
-                return result;
-            }
-
-            // copy back into input array to fulfil the method contract
-            System.arraycopy(result, 0, array, 0, result.length);
-            if (array.length > result.length) {
-                array[result.length] = null;
-            }
-            return array;
-        }
-    }
-
-    /**
-     * Implementation of an entry set iterator that checks additions via setValue.
-     */
-    static class EntrySetIterator extends AbstractIteratorDecorator {
-        
-        /** The parent map */
-        private final AbstractInputCheckedMapDecorator parent;
-        
-        protected EntrySetIterator(Iterator iterator, AbstractInputCheckedMapDecorator parent) {
-            super(iterator);
-            this.parent = parent;
-        }
-        
-        public Object next() {
-            Map.Entry entry = (Map.Entry) iterator.next();
-            return new MapEntry(entry, parent);
-        }
-    }
-
-    /**
-     * Implementation of a map entry that checks additions via setValue.
-     */
-    static class MapEntry extends AbstractMapEntryDecorator {
-
-        /** The parent map */
-        private final AbstractInputCheckedMapDecorator parent;
-
-        protected MapEntry(Map.Entry entry, AbstractInputCheckedMapDecorator parent) {
-            super(entry);
-            this.parent = parent;
-        }
-
-        public Object setValue(Object value) {
-            value = parent.checkSetValue(value);
-            return entry.setValue(value);
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/AbstractLinkedMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/AbstractLinkedMap.java
deleted file mode 100755
index b2c973b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/AbstractLinkedMap.java
+++ /dev/null
@@ -1,612 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.util.ConcurrentModificationException;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.NoSuchElementException;
-
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.OrderedIterator;
-import org.apache.commons.collections.OrderedMap;
-import org.apache.commons.collections.OrderedMapIterator;
-import org.apache.commons.collections.ResettableIterator;
-import org.apache.commons.collections.iterators.EmptyOrderedIterator;
-import org.apache.commons.collections.iterators.EmptyOrderedMapIterator;
-
-/**
- * An abstract implementation of a hash-based map that links entries to create an
- * ordered map and which provides numerous points for subclasses to override.
- * <p>
- * This class implements all the features necessary for a subclass linked
- * hash-based map. Key-value entries are stored in instances of the
- * <code>LinkEntry</code> class which can be overridden and replaced.
- * The iterators can similarly be replaced, without the need to replace the KeySet,
- * EntrySet and Values view classes.
- * <p>
- * Overridable methods are provided to change the default hashing behaviour, and
- * to change how entries are added to and removed from the map. Hopefully, all you
- * need for unusual subclasses is here.
- * <p>
- * This implementation maintains order by original insertion, but subclasses
- * may work differently. The <code>OrderedMap</code> interface is implemented
- * to provide access to bidirectional iteration and extra convenience methods.
- * <p>
- * The <code>orderedMapIterator()</code> method provides direct access to a
- * bidirectional iterator. The iterators from the other views can also be cast
- * to <code>OrderedIterator</code> if required.
- * <p>
- * All the available iterators can be reset back to the start by casting to
- * <code>ResettableIterator</code> and calling <code>reset()</code>.
- * <p>
- * The implementation is also designed to be subclassed, with lots of useful
- * methods exposed.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- *
- * @author java util LinkedHashMap
- * @author Stephen Colebourne
- */
-public class AbstractLinkedMap extends AbstractHashedMap implements OrderedMap {
-    
-    /** Header in the linked list */
-    protected transient LinkEntry header;
-
-    /**
-     * Constructor only used in deserialization, do not use otherwise.
-     */
-    protected AbstractLinkedMap() {
-        super();
-    }
-
-    /**
-     * Constructor which performs no validation on the passed in parameters.
-     * 
-     * @param initialCapacity  the initial capacity, must be a power of two
-     * @param loadFactor  the load factor, must be > 0.0f and generally < 1.0f
-     * @param threshold  the threshold, must be sensible
-     */
-    protected AbstractLinkedMap(int initialCapacity, float loadFactor, int threshold) {
-        super(initialCapacity, loadFactor, threshold);
-    }
-
-    /**
-     * Constructs a new, empty map with the specified initial capacity. 
-     *
-     * @param initialCapacity  the initial capacity
-     * @throws IllegalArgumentException if the initial capacity is less than one
-     */
-    protected AbstractLinkedMap(int initialCapacity) {
-        super(initialCapacity);
-    }
-
-    /**
-     * Constructs a new, empty map with the specified initial capacity and
-     * load factor. 
-     *
-     * @param initialCapacity  the initial capacity
-     * @param loadFactor  the load factor
-     * @throws IllegalArgumentException if the initial capacity is less than one
-     * @throws IllegalArgumentException if the load factor is less than zero
-     */
-    protected AbstractLinkedMap(int initialCapacity, float loadFactor) {
-        super(initialCapacity, loadFactor);
-    }
-
-    /**
-     * Constructor copying elements from another map.
-     *
-     * @param map  the map to copy
-     * @throws NullPointerException if the map is null
-     */
-    protected AbstractLinkedMap(Map map) {
-        super(map);
-    }
-
-    /**
-     * Initialise this subclass during construction.
-     * <p>
-     * NOTE: As from v3.2 this method calls
-     * {@link #createEntry(HashEntry, int, Object, Object)} to create
-     * the map entry object.
-     */
-    protected void init() {
-        header = (LinkEntry) createEntry(null, -1, null, null);
-        header.before = header.after = header;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Checks whether the map contains the specified value.
-     * 
-     * @param value  the value to search for
-     * @return true if the map contains the value
-     */
-    public boolean containsValue(Object value) {
-        // override uses faster iterator
-        if (value == null) {
-            for (LinkEntry entry = header.after; entry != header; entry = entry.after) {
-                if (entry.getValue() == null) {
-                    return true;
-                }
-            }
-        } else {
-            for (LinkEntry entry = header.after; entry != header; entry = entry.after) {
-                if (isEqualValue(value, entry.getValue())) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Clears the map, resetting the size to zero and nullifying references
-     * to avoid garbage collection issues.
-     */
-    public void clear() {
-        // override to reset the linked list
-        super.clear();
-        header.before = header.after = header;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the first key in the map, which is the most recently inserted.
-     * 
-     * @return the most recently inserted key
-     */
-    public Object firstKey() {
-        if (size == 0) {
-            throw new NoSuchElementException("Map is empty");
-        }
-        return header.after.getKey();
-    }
-
-    /**
-     * Gets the last key in the map, which is the first inserted.
-     * 
-     * @return the eldest key
-     */
-    public Object lastKey() {
-        if (size == 0) {
-            throw new NoSuchElementException("Map is empty");
-        }
-        return header.before.getKey();
-    }
-
-    /**
-     * Gets the next key in sequence.
-     * 
-     * @param key  the key to get after
-     * @return the next key
-     */
-    public Object nextKey(Object key) {
-        LinkEntry entry = (LinkEntry) getEntry(key);
-        return (entry == null || entry.after == header ? null : entry.after.getKey());
-    }
-
-    /**
-     * Gets the previous key in sequence.
-     * 
-     * @param key  the key to get before
-     * @return the previous key
-     */
-    public Object previousKey(Object key) {
-        LinkEntry entry = (LinkEntry) getEntry(key);
-        return (entry == null || entry.before == header ? null : entry.before.getKey());
-    }
-
-    //-----------------------------------------------------------------------    
-    /**
-     * Gets the key at the specified index.
-     * 
-     * @param index  the index to retrieve
-     * @return the key at the specified index
-     * @throws IndexOutOfBoundsException if the index is invalid
-     */
-    protected LinkEntry getEntry(int index) {
-        if (index < 0) {
-            throw new IndexOutOfBoundsException("Index " + index + " is less than zero");
-        }
-        if (index >= size) {
-            throw new IndexOutOfBoundsException("Index " + index + " is invalid for size " + size);
-        }
-        LinkEntry entry;
-        if (index < (size / 2)) {
-            // Search forwards
-            entry = header.after;
-            for (int currentIndex = 0; currentIndex < index; currentIndex++) {
-                entry = entry.after;
-            }
-        } else {
-            // Search backwards
-            entry = header;
-            for (int currentIndex = size; currentIndex > index; currentIndex--) {
-                entry = entry.before;
-            }
-        }
-        return entry;
-    }
-    
-    /**
-     * Adds an entry into this map, maintaining insertion order.
-     * <p>
-     * This implementation adds the entry to the data storage table and
-     * to the end of the linked list.
-     * 
-     * @param entry  the entry to add
-     * @param hashIndex  the index into the data array to store at
-     */
-    protected void addEntry(HashEntry entry, int hashIndex) {
-        LinkEntry link = (LinkEntry) entry;
-        link.after  = header;
-        link.before = header.before;
-        header.before.after = link;
-        header.before = link;
-        data[hashIndex] = entry;
-    }
-    
-    /**
-     * Creates an entry to store the data.
-     * <p>
-     * This implementation creates a new LinkEntry instance.
-     * 
-     * @param next  the next entry in sequence
-     * @param hashCode  the hash code to use
-     * @param key  the key to store
-     * @param value  the value to store
-     * @return the newly created entry
-     */
-    protected HashEntry createEntry(HashEntry next, int hashCode, Object key, Object value) {
-        return new LinkEntry(next, hashCode, key, value);
-    }
-    
-    /**
-     * Removes an entry from the map and the linked list.
-     * <p>
-     * This implementation removes the entry from the linked list chain, then
-     * calls the superclass implementation.
-     * 
-     * @param entry  the entry to remove
-     * @param hashIndex  the index into the data structure
-     * @param previous  the previous entry in the chain
-     */
-    protected void removeEntry(HashEntry entry, int hashIndex, HashEntry previous) {
-        LinkEntry link = (LinkEntry) entry;
-        link.before.after = link.after;
-        link.after.before = link.before;
-        link.after = null;
-        link.before = null;
-        super.removeEntry(entry, hashIndex, previous);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the <code>before</code> field from a <code>LinkEntry</code>.
-     * Used in subclasses that have no visibility of the field.
-     * 
-     * @param entry  the entry to query, must not be null
-     * @return the <code>before</code> field of the entry
-     * @throws NullPointerException if the entry is null
-     * @since Commons Collections 3.1
-     */
-    protected LinkEntry entryBefore(LinkEntry entry) {
-        return entry.before;
-    }
-    
-    /**
-     * Gets the <code>after</code> field from a <code>LinkEntry</code>.
-     * Used in subclasses that have no visibility of the field.
-     * 
-     * @param entry  the entry to query, must not be null
-     * @return the <code>after</code> field of the entry
-     * @throws NullPointerException if the entry is null
-     * @since Commons Collections 3.1
-     */
-    protected LinkEntry entryAfter(LinkEntry entry) {
-        return entry.after;
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Gets an iterator over the map.
-     * Changes made to the iterator affect this map.
-     * <p>
-     * A MapIterator returns the keys in the map. It also provides convenient
-     * methods to get the key and value, and set the value.
-     * It avoids the need to create an entrySet/keySet/values object.
-     * 
-     * @return the map iterator
-     */
-    public MapIterator mapIterator() {
-        if (size == 0) {
-            return EmptyOrderedMapIterator.INSTANCE;
-        }
-        return new LinkMapIterator(this);
-    }
-
-    /**
-     * Gets a bidirectional iterator over the map.
-     * Changes made to the iterator affect this map.
-     * <p>
-     * A MapIterator returns the keys in the map. It also provides convenient
-     * methods to get the key and value, and set the value.
-     * It avoids the need to create an entrySet/keySet/values object.
-     * 
-     * @return the map iterator
-     */
-    public OrderedMapIterator orderedMapIterator() {
-        if (size == 0) {
-            return EmptyOrderedMapIterator.INSTANCE;
-        }
-        return new LinkMapIterator(this);
-    }
-
-    /**
-     * MapIterator implementation.
-     */
-    protected static class LinkMapIterator extends LinkIterator implements OrderedMapIterator {
-        
-        protected LinkMapIterator(AbstractLinkedMap parent) {
-            super(parent);
-        }
-
-        public Object next() {
-            return super.nextEntry().getKey();
-        }
-
-        public Object previous() {
-            return super.previousEntry().getKey();
-        }
-
-        public Object getKey() {
-            HashEntry current = currentEntry();
-            if (current == null) {
-                throw new IllegalStateException(AbstractHashedMap.GETKEY_INVALID);
-            }
-            return current.getKey();
-        }
-
-        public Object getValue() {
-            HashEntry current = currentEntry();
-            if (current == null) {
-                throw new IllegalStateException(AbstractHashedMap.GETVALUE_INVALID);
-            }
-            return current.getValue();
-        }
-
-        public Object setValue(Object value) {
-            HashEntry current = currentEntry();
-            if (current == null) {
-                throw new IllegalStateException(AbstractHashedMap.SETVALUE_INVALID);
-            }
-            return current.setValue(value);
-        }
-    }
-    
-    //-----------------------------------------------------------------------    
-    /**
-     * Creates an entry set iterator.
-     * Subclasses can override this to return iterators with different properties.
-     * 
-     * @return the entrySet iterator
-     */
-    protected Iterator createEntrySetIterator() {
-        if (size() == 0) {
-            return EmptyOrderedIterator.INSTANCE;
-        }
-        return new EntrySetIterator(this);
-    }
-
-    /**
-     * EntrySet iterator.
-     */
-    protected static class EntrySetIterator extends LinkIterator {
-        
-        protected EntrySetIterator(AbstractLinkedMap parent) {
-            super(parent);
-        }
-
-        public Object next() {
-            return super.nextEntry();
-        }
-
-        public Object previous() {
-            return super.previousEntry();
-        }
-    }
-
-    //-----------------------------------------------------------------------    
-    /**
-     * Creates a key set iterator.
-     * Subclasses can override this to return iterators with different properties.
-     * 
-     * @return the keySet iterator
-     */
-    protected Iterator createKeySetIterator() {
-        if (size() == 0) {
-            return EmptyOrderedIterator.INSTANCE;
-        }
-        return new KeySetIterator(this);
-    }
-
-    /**
-     * KeySet iterator.
-     */
-    protected static class KeySetIterator extends EntrySetIterator {
-        
-        protected KeySetIterator(AbstractLinkedMap parent) {
-            super(parent);
-        }
-
-        public Object next() {
-            return super.nextEntry().getKey();
-        }
-
-        public Object previous() {
-            return super.previousEntry().getKey();
-        }
-    }
-    
-    //-----------------------------------------------------------------------    
-    /**
-     * Creates a values iterator.
-     * Subclasses can override this to return iterators with different properties.
-     * 
-     * @return the values iterator
-     */
-    protected Iterator createValuesIterator() {
-        if (size() == 0) {
-            return EmptyOrderedIterator.INSTANCE;
-        }
-        return new ValuesIterator(this);
-    }
-
-    /**
-     * Values iterator.
-     */
-    protected static class ValuesIterator extends LinkIterator {
-        
-        protected ValuesIterator(AbstractLinkedMap parent) {
-            super(parent);
-        }
-
-        public Object next() {
-            return super.nextEntry().getValue();
-        }
-
-        public Object previous() {
-            return super.previousEntry().getValue();
-        }
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * LinkEntry that stores the data.
-     * <p>
-     * If you subclass <code>AbstractLinkedMap</code> but not <code>LinkEntry</code>
-     * then you will not be able to access the protected fields.
-     * The <code>entryXxx()</code> methods on <code>AbstractLinkedMap</code> exist
-     * to provide the necessary access.
-     */
-    protected static class LinkEntry extends HashEntry {
-        /** The entry before this one in the order */
-        protected LinkEntry before;
-        /** The entry after this one in the order */
-        protected LinkEntry after;
-        
-        /**
-         * Constructs a new entry.
-         * 
-         * @param next  the next entry in the hash bucket sequence
-         * @param hashCode  the hash code
-         * @param key  the key
-         * @param value  the value
-         */
-        protected LinkEntry(HashEntry next, int hashCode, Object key, Object value) {
-            super(next, hashCode, key, value);
-        }
-    }
-    
-    /**
-     * Base Iterator that iterates in link order.
-     */
-    protected static abstract class LinkIterator
-            implements OrderedIterator, ResettableIterator {
-                
-        /** The parent map */
-        protected final AbstractLinkedMap parent;
-        /** The current (last returned) entry */
-        protected LinkEntry last;
-        /** The next entry */
-        protected LinkEntry next;
-        /** The modification count expected */
-        protected int expectedModCount;
-        
-        protected LinkIterator(AbstractLinkedMap parent) {
-            super();
-            this.parent = parent;
-            this.next = parent.header.after;
-            this.expectedModCount = parent.modCount;
-        }
-
-        public boolean hasNext() {
-            return (next != parent.header);
-        }
-        
-        public boolean hasPrevious() {
-            return (next.before != parent.header);
-        }
-
-        protected LinkEntry nextEntry() {
-            if (parent.modCount != expectedModCount) {
-                throw new ConcurrentModificationException();
-            }
-            if (next == parent.header)  {
-                throw new NoSuchElementException(AbstractHashedMap.NO_NEXT_ENTRY);
-            }
-            last = next;
-            next = next.after;
-            return last;
-        }
-
-        protected LinkEntry previousEntry() {
-            if (parent.modCount != expectedModCount) {
-                throw new ConcurrentModificationException();
-            }
-            LinkEntry previous = next.before;
-            if (previous == parent.header)  {
-                throw new NoSuchElementException(AbstractHashedMap.NO_PREVIOUS_ENTRY);
-            }
-            next = previous;
-            last = previous;
-            return last;
-        }
-        
-        protected LinkEntry currentEntry() {
-            return last;
-        }
-        
-        public void remove() {
-            if (last == null) {
-                throw new IllegalStateException(AbstractHashedMap.REMOVE_INVALID);
-            }
-            if (parent.modCount != expectedModCount) {
-                throw new ConcurrentModificationException();
-            }
-            parent.remove(last.getKey());
-            last = null;
-            expectedModCount = parent.modCount;
-        }
-        
-        public void reset() {
-            last = null;
-            next = parent.header.after;
-        }
-
-        public String toString() {
-            if (last != null) {
-                return "Iterator[" + last.getKey() + "=" + last.getValue() + "]";
-            } else {
-                return "Iterator[]";
-            }
-        }
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/AbstractMapDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/AbstractMapDecorator.java
deleted file mode 100755
index db652b0..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/AbstractMapDecorator.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Provides a base decorator that enables additional functionality to be added
- * to a Map via decoration.
- * <p>
- * Methods are forwarded directly to the decorated map.
- * <p>
- * This implementation does not perform any special processing with
- * {@link #entrySet()}, {@link #keySet()} or {@link #values()}. Instead
- * it simply returns the set/collection from the wrapped map. This may be
- * undesirable, for example if you are trying to write a validating
- * implementation it would provide a loophole around the validation.
- * But, you might want that loophole, so this class is kept simple.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- * 
- * @author Daniel Rall
- * @author Stephen Colebourne
- */
-public abstract class AbstractMapDecorator implements Map {
-
-    /** The map to decorate */
-    protected transient Map map;
-
-    /**
-     * Constructor only used in deserialization, do not use otherwise.
-     * @since Commons Collections 3.1
-     */
-    protected AbstractMapDecorator() {
-        super();
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     *
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if the collection is null
-     */
-    public AbstractMapDecorator(Map map) {
-        if (map == null) {
-            throw new IllegalArgumentException("Map must not be null");
-        }
-        this.map = map;
-    }
-
-    /**
-     * Gets the map being decorated.
-     * 
-     * @return the decorated map
-     */
-    protected Map getMap() {
-        return map;
-    }
-
-    //-----------------------------------------------------------------------
-    public void clear() {
-        map.clear();
-    }
-
-    public boolean containsKey(Object key) {
-        return map.containsKey(key);
-    }
-
-    public boolean containsValue(Object value) {
-        return map.containsValue(value);
-    }
-
-    public Set entrySet() {
-        return map.entrySet();
-    }
-
-    public Object get(Object key) {
-        return map.get(key);
-    }
-
-    public boolean isEmpty() {
-        return map.isEmpty();
-    }
-
-    public Set keySet() {
-        return map.keySet();
-    }
-
-    public Object put(Object key, Object value) {
-        return map.put(key, value);
-    }
-
-    public void putAll(Map mapToCopy) {
-        map.putAll(mapToCopy);
-    }
-
-    public Object remove(Object key) {
-        return map.remove(key);
-    }
-
-    public int size() {
-        return map.size();
-    }
-
-    public Collection values() {
-        return map.values();
-    }
-   
-    public boolean equals(Object object) {
-        if (object == this) {
-            return true;
-        }
-        return map.equals(object);
-    }
-
-    public int hashCode() {
-        return map.hashCode();
-    }
-
-    public String toString() {
-        return map.toString();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/AbstractOrderedMapDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/AbstractOrderedMapDecorator.java
deleted file mode 100755
index 84b2613..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/AbstractOrderedMapDecorator.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.OrderedMap;
-import org.apache.commons.collections.OrderedMapIterator;
-
-/** 
- * Provides a base decorator that enables additional functionality to be added
- * to an OrderedMap via decoration.
- * <p>
- * Methods are forwarded directly to the decorated map.
- * <p>
- * This implementation does not perform any special processing with the map views.
- * Instead it simply returns the set/collection from the wrapped map. This may be
- * undesirable, for example if you are trying to write a validating implementation
- * it would provide a loophole around the validation.
- * But, you might want that loophole, so this class is kept simple.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- * 
- * @author Stephen Colebourne
- */
-public abstract class AbstractOrderedMapDecorator
-        extends AbstractMapDecorator implements OrderedMap {
-
-    /**
-     * Constructor only used in deserialization, do not use otherwise.
-     * @since Commons Collections 3.1
-     */
-    protected AbstractOrderedMapDecorator() {
-        super();
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     *
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if the collection is null
-     */
-    public AbstractOrderedMapDecorator(OrderedMap map) {
-        super(map);
-    }
-
-    /**
-     * Gets the map being decorated.
-     * 
-     * @return the decorated map
-     */
-    protected OrderedMap getOrderedMap() {
-        return (OrderedMap) map;
-    }
-
-    //-----------------------------------------------------------------------
-    public Object firstKey() {
-        return getOrderedMap().firstKey();
-    }
-
-    public Object lastKey() {
-        return getOrderedMap().lastKey();
-    }
-
-    public Object nextKey(Object key) {
-        return getOrderedMap().nextKey(key);
-    }
-
-    public Object previousKey(Object key) {
-        return getOrderedMap().previousKey(key);
-    }
-
-    public MapIterator mapIterator() {
-        return getOrderedMap().mapIterator();
-    }
-
-    public OrderedMapIterator orderedMapIterator() {
-        return getOrderedMap().orderedMapIterator();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/AbstractReferenceMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/AbstractReferenceMap.java
deleted file mode 100755
index 52f13a5..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/AbstractReferenceMap.java
+++ /dev/null
@@ -1,980 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.lang.ref.Reference;
-import java.lang.ref.ReferenceQueue;
-import java.lang.ref.SoftReference;
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.ConcurrentModificationException;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.keyvalue.DefaultMapEntry;
-
-/**
- * An abstract implementation of a hash-based map that allows the entries to
- * be removed by the garbage collector.
- * <p>
- * This class implements all the features necessary for a subclass reference
- * hash-based map. Key-value entries are stored in instances of the
- * <code>ReferenceEntry</code> class which can be overridden and replaced.
- * The iterators can similarly be replaced, without the need to replace the KeySet,
- * EntrySet and Values view classes.
- * <p>
- * Overridable methods are provided to change the default hashing behaviour, and
- * to change how entries are added to and removed from the map. Hopefully, all you
- * need for unusual subclasses is here.
- * <p>
- * When you construct an <code>AbstractReferenceMap</code>, you can specify what
- * kind of references are used to store the map's keys and values.
- * If non-hard references are used, then the garbage collector can remove
- * mappings if a key or value becomes unreachable, or if the JVM's memory is
- * running low. For information on how the different reference types behave,
- * see {@link Reference}.
- * <p>
- * Different types of references can be specified for keys and values.
- * The keys can be configured to be weak but the values hard,
- * in which case this class will behave like a
- * <a href="http://java.sun.com/j2se/1.4/docs/api/java/util/WeakHashMap.html">
- * <code>WeakHashMap</code></a>. However, you can also specify hard keys and
- * weak values, or any other combination. The default constructor uses
- * hard keys and soft values, providing a memory-sensitive cache.
- * <p>
- * This {@link Map} implementation does <i>not</i> allow null elements.
- * Attempting to add a null key or value to the map will raise a
- * <code>NullPointerException</code>.
- * <p>
- * All the available iterators can be reset back to the start by casting to
- * <code>ResettableIterator</code> and calling <code>reset()</code>.
- * <p>
- * This implementation is not synchronized.
- * You can use {@link java.util.Collections#synchronizedMap} to 
- * provide synchronized access to a <code>ReferenceMap</code>.
- *
- * @see java.lang.ref.Reference
- * @since Commons Collections 3.1 (extracted from ReferenceMap in 3.0)
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:29 $
- * 
- * @author Paul Jack
- * @author Stephen Colebourne
- */
-public abstract class AbstractReferenceMap extends AbstractHashedMap {
-
-    /** Constant indicating that hard references should be used */
-    public static final int HARD = 0;
-
-    /** Constant indicating that soft references should be used */
-    public static final int SOFT = 1;
-
-    /** Constant indicating that weak references should be used */
-    public static final int WEAK = 2;
-
-    /**
-     * The reference type for keys.  Must be HARD, SOFT, WEAK.
-     * @serial
-     */
-    protected int keyType;
-
-    /**
-     * The reference type for values.  Must be HARD, SOFT, WEAK.
-     * @serial
-     */
-    protected int valueType;
-
-    /**
-     * Should the value be automatically purged when the associated key has been collected?
-     */
-    protected boolean purgeValues;
-
-    /**
-     * ReferenceQueue used to eliminate stale mappings.
-     * See purge.
-     */
-    private transient ReferenceQueue queue;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor used during deserialization.
-     */
-    protected AbstractReferenceMap() {
-        super();
-    }
-
-    /**
-     * Constructs a new empty map with the specified reference types,
-     * load factor and initial capacity.
-     *
-     * @param keyType  the type of reference to use for keys;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     * @param valueType  the type of reference to use for values;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     * @param capacity  the initial capacity for the map
-     * @param loadFactor  the load factor for the map
-     * @param purgeValues  should the value be automatically purged when the 
-     *   key is garbage collected 
-     */
-    protected AbstractReferenceMap(
-            int keyType, int valueType, int capacity, 
-            float loadFactor, boolean purgeValues) {
-        super(capacity, loadFactor);
-        verify("keyType", keyType);
-        verify("valueType", valueType);
-        this.keyType = keyType;
-        this.valueType = valueType;
-        this.purgeValues = purgeValues;
-    }
-
-    /**
-     * Initialise this subclass during construction, cloning or deserialization.
-     */
-    protected void init() {
-        queue = new ReferenceQueue();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Checks the type int is a valid value.
-     * 
-     * @param name  the name for error messages
-     * @param type  the type value to check
-     * @throws IllegalArgumentException if the value if invalid
-     */
-    private static void verify(String name, int type) {
-        if ((type < HARD) || (type > WEAK)) {
-            throw new IllegalArgumentException(name + " must be HARD, SOFT, WEAK.");
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the size of the map.
-     * 
-     * @return the size
-     */
-    public int size() {
-        purgeBeforeRead();
-        return super.size();
-    }
-
-    /**
-     * Checks whether the map is currently empty.
-     * 
-     * @return true if the map is currently size zero
-     */
-    public boolean isEmpty() {
-        purgeBeforeRead();
-        return super.isEmpty();
-    }
-
-    /**
-     * Checks whether the map contains the specified key.
-     * 
-     * @param key  the key to search for
-     * @return true if the map contains the key
-     */
-    public boolean containsKey(Object key) {
-        purgeBeforeRead();
-        Entry entry = getEntry(key);
-        if (entry == null) {
-            return false;
-        }
-        return (entry.getValue() != null);
-    }
-
-    /**
-     * Checks whether the map contains the specified value.
-     * 
-     * @param value  the value to search for
-     * @return true if the map contains the value
-     */
-    public boolean containsValue(Object value) {
-        purgeBeforeRead();
-        if (value == null) {
-            return false;
-        }
-        return super.containsValue(value);
-    }
-
-    /**
-     * Gets the value mapped to the key specified.
-     * 
-     * @param key  the key
-     * @return the mapped value, null if no match
-     */
-    public Object get(Object key) {
-        purgeBeforeRead();
-        Entry entry = getEntry(key);
-        if (entry == null) {
-            return null;
-        }
-        return entry.getValue();
-    }
-
-
-    /**
-     * Puts a key-value mapping into this map.
-     * Neither the key nor the value may be null.
-     * 
-     * @param key  the key to add, must not be null
-     * @param value  the value to add, must not be null
-     * @return the value previously mapped to this key, null if none
-     * @throws NullPointerException if either the key or value is null
-     */
-    public Object put(Object key, Object value) {
-        if (key == null) {
-            throw new NullPointerException("null keys not allowed");
-        }
-        if (value == null) {
-            throw new NullPointerException("null values not allowed");
-        }
-
-        purgeBeforeWrite();
-        return super.put(key, value);
-    }
-    
-    /**
-     * Removes the specified mapping from this map.
-     * 
-     * @param key  the mapping to remove
-     * @return the value mapped to the removed key, null if key not in map
-     */
-    public Object remove(Object key) {
-        if (key == null) {
-            return null;
-        }
-        purgeBeforeWrite();
-        return super.remove(key);
-    }
-
-    /**
-     * Clears this map.
-     */
-    public void clear() {
-        super.clear();
-        while (queue.poll() != null) {} // drain the queue
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets a MapIterator over the reference map.
-     * The iterator only returns valid key/value pairs.
-     * 
-     * @return a map iterator
-     */
-    public MapIterator mapIterator() {
-        return new ReferenceMapIterator(this);
-    }
-
-    /**
-     * Returns a set view of this map's entries.
-     * An iterator returned entry is valid until <code>next()</code> is called again.
-     * The <code>setValue()</code> method on the <code>toArray</code> entries has no effect.
-     *
-     * @return a set view of this map's entries
-     */
-    public Set entrySet() {
-        if (entrySet == null) {
-            entrySet = new ReferenceEntrySet(this);
-        }
-        return entrySet;
-    }
-
-    /**
-     * Returns a set view of this map's keys.
-     *
-     * @return a set view of this map's keys
-     */
-    public Set keySet() {
-        if (keySet == null) {
-            keySet = new ReferenceKeySet(this);
-        }
-        return keySet;
-    }
-
-    /**
-     * Returns a collection view of this map's values.
-     *
-     * @return a set view of this map's values
-     */
-    public Collection values() {
-        if (values == null) {
-            values = new ReferenceValues(this);
-        }
-        return values;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Purges stale mappings from this map before read operations.
-     * <p>
-     * This implementation calls {@link #purge()} to maintain a consistent state.
-     */
-    protected void purgeBeforeRead() {
-        purge();
-    }
-
-    /**
-     * Purges stale mappings from this map before write operations.
-     * <p>
-     * This implementation calls {@link #purge()} to maintain a consistent state.
-     */
-    protected void purgeBeforeWrite() {
-        purge();
-    }
-
-    /**
-     * Purges stale mappings from this map.
-     * <p>
-     * Note that this method is not synchronized!  Special
-     * care must be taken if, for instance, you want stale
-     * mappings to be removed on a periodic basis by some
-     * background thread.
-     */
-    protected void purge() {
-        Reference ref = queue.poll();
-        while (ref != null) {
-            purge(ref);
-            ref = queue.poll();
-        }
-    }
-
-    /**
-     * Purges the specified reference.
-     * 
-     * @param ref  the reference to purge
-     */
-    protected void purge(Reference ref) {
-        // The hashCode of the reference is the hashCode of the
-        // mapping key, even if the reference refers to the 
-        // mapping value...
-        int hash = ref.hashCode();
-        int index = hashIndex(hash, data.length);
-        HashEntry previous = null;
-        HashEntry entry = data[index];
-        while (entry != null) {
-            if (((ReferenceEntry) entry).purge(ref)) {
-                if (previous == null) {
-                    data[index] = entry.next;
-                } else {
-                    previous.next = entry.next;
-                }
-                this.size--;
-                return;
-            }
-            previous = entry;
-            entry = entry.next;
-        }
-
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the entry mapped to the key specified.
-     * 
-     * @param key  the key
-     * @return the entry, null if no match
-     */
-    protected HashEntry getEntry(Object key) {
-        if (key == null) {
-            return null;
-        } else {
-            return super.getEntry(key);
-        }
-    }
-
-    /**
-     * Gets the hash code for a MapEntry.
-     * Subclasses can override this, for example to use the identityHashCode.
-     * 
-     * @param key  the key to get a hash code for, may be null
-     * @param value  the value to get a hash code for, may be null
-     * @return the hash code, as per the MapEntry specification
-     */
-    protected int hashEntry(Object key, Object value) {
-        return (key == null ? 0 : key.hashCode()) ^
-               (value == null ? 0 : value.hashCode()); 
-    }
-    
-    /**
-     * Compares two keys, in internal converted form, to see if they are equal.
-     * <p>
-     * This implementation converts the key from the entry to a real reference
-     * before comparison.
-     * 
-     * @param key1  the first key to compare passed in from outside
-     * @param key2  the second key extracted from the entry via <code>entry.key</code>
-     * @return true if equal
-     */
-    protected boolean isEqualKey(Object key1, Object key2) {
-        key2 = (keyType > HARD ? ((Reference) key2).get() : key2);
-        return (key1 == key2 || key1.equals(key2));
-    }
-    
-    /**
-     * Creates a ReferenceEntry instead of a HashEntry.
-     * 
-     * @param next  the next entry in sequence
-     * @param hashCode  the hash code to use
-     * @param key  the key to store
-     * @param value  the value to store
-     * @return the newly created entry
-     */
-    protected HashEntry createEntry(HashEntry next, int hashCode, Object key, Object value) {
-        return new ReferenceEntry(this, next, hashCode, key, value);
-    }
-
-    /**
-     * Creates an entry set iterator.
-     * 
-     * @return the entrySet iterator
-     */
-    protected Iterator createEntrySetIterator() {
-        return new ReferenceEntrySetIterator(this);
-    }
-
-    /**
-     * Creates an key set iterator.
-     * 
-     * @return the keySet iterator
-     */
-    protected Iterator createKeySetIterator() {
-        return new ReferenceKeySetIterator(this);
-    }
-
-    /**
-     * Creates an values iterator.
-     * 
-     * @return the values iterator
-     */
-    protected Iterator createValuesIterator() {
-        return new ReferenceValuesIterator(this);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * EntrySet implementation.
-     */
-    static class ReferenceEntrySet extends EntrySet {
-        
-        protected ReferenceEntrySet(AbstractHashedMap parent) {
-            super(parent);
-        }
-
-        public Object[] toArray() {
-            return toArray(new Object[0]);
-        }
-
-        public Object[] toArray(Object[] arr) {
-            // special implementation to handle disappearing entries
-            ArrayList list = new ArrayList();
-            Iterator iterator = iterator();
-            while (iterator.hasNext()) {
-                Entry e = (Entry) iterator.next();
-                list.add(new DefaultMapEntry(e.getKey(), e.getValue()));
-            }
-            return list.toArray(arr);
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * KeySet implementation.
-     */
-    static class ReferenceKeySet extends KeySet {
-        
-        protected ReferenceKeySet(AbstractHashedMap parent) {
-            super(parent);
-        }
-
-        public Object[] toArray() {
-            return toArray(new Object[0]);
-        }
-
-        public Object[] toArray(Object[] arr) {
-            // special implementation to handle disappearing keys
-            List list = new ArrayList(parent.size());
-            for (Iterator it = iterator(); it.hasNext(); ) {
-                list.add(it.next());
-            }
-            return list.toArray(arr);
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Values implementation.
-     */
-    static class ReferenceValues extends Values {
-        
-        protected ReferenceValues(AbstractHashedMap parent) {
-            super(parent);
-        }
-
-        public Object[] toArray() {
-            return toArray(new Object[0]);
-        }
-
-        public Object[] toArray(Object[] arr) {
-            // special implementation to handle disappearing values
-            List list = new ArrayList(parent.size());
-            for (Iterator it = iterator(); it.hasNext(); ) {
-                list.add(it.next());
-            }
-            return list.toArray(arr);
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * A MapEntry implementation for the map.
-     * <p>
-     * If getKey() or getValue() returns null, it means
-     * the mapping is stale and should be removed.
-     * 
-     * @since Commons Collections 3.1
-     */
-    protected static class ReferenceEntry extends HashEntry {
-        /** The parent map */
-        protected final AbstractReferenceMap parent;
-
-        /**
-         * Creates a new entry object for the ReferenceMap.
-         * 
-         * @param parent  the parent map
-         * @param next  the next entry in the hash bucket
-         * @param hashCode  the hash code of the key
-         * @param key  the key
-         * @param value  the value
-         */
-        public ReferenceEntry(AbstractReferenceMap parent, HashEntry next, int hashCode, Object key, Object value) {
-            super(next, hashCode, null, null);
-            this.parent = parent;
-            this.key = toReference(parent.keyType, key, hashCode);
-            this.value = toReference(parent.valueType, value, hashCode); // the key hashCode is passed in deliberately
-        }
-
-        /**
-         * Gets the key from the entry.
-         * This method dereferences weak and soft keys and thus may return null.
-         * 
-         * @return the key, which may be null if it was garbage collected
-         */
-        public Object getKey() {
-            return (parent.keyType > HARD) ? ((Reference) key).get() : key;
-        }
-
-        /**
-         * Gets the value from the entry.
-         * This method dereferences weak and soft value and thus may return null.
-         * 
-         * @return the value, which may be null if it was garbage collected
-         */
-        public Object getValue() {
-            return (parent.valueType > HARD) ? ((Reference) value).get() : value;
-        }
-
-        /**
-         * Sets the value of the entry.
-         * 
-         * @param obj  the object to store
-         * @return the previous value
-         */
-        public Object setValue(Object obj) {
-            Object old = getValue();
-            if (parent.valueType > HARD) {
-                ((Reference)value).clear();
-            }
-            value = toReference(parent.valueType, obj, hashCode);
-            return old;
-        }
-
-        /**
-         * Compares this map entry to another.
-         * <p>
-         * This implementation uses <code>isEqualKey</code> and
-         * <code>isEqualValue</code> on the main map for comparison.
-         * 
-         * @param obj  the other map entry to compare to
-         * @return true if equal, false if not
-         */
-        public boolean equals(Object obj) {
-            if (obj == this) {
-                return true;
-            }
-            if (obj instanceof Map.Entry == false) {
-                return false;
-            }
-            
-            Map.Entry entry = (Map.Entry)obj;
-            Object entryKey = entry.getKey();  // convert to hard reference
-            Object entryValue = entry.getValue();  // convert to hard reference
-            if ((entryKey == null) || (entryValue == null)) {
-                return false;
-            }
-            // compare using map methods, aiding identity subclass
-            // note that key is direct access and value is via method
-            return parent.isEqualKey(entryKey, key) &&
-                   parent.isEqualValue(entryValue, getValue());
-        }
-
-        /**
-         * Gets the hashcode of the entry using temporary hard references.
-         * <p>
-         * This implementation uses <code>hashEntry</code> on the main map.
-         * 
-         * @return the hashcode of the entry
-         */
-        public int hashCode() {
-            return parent.hashEntry(getKey(), getValue());
-        }
-
-        /**
-         * Constructs a reference of the given type to the given referent.
-         * The reference is registered with the queue for later purging.
-         *
-         * @param type  HARD, SOFT or WEAK
-         * @param referent  the object to refer to
-         * @param hash  the hash code of the <i>key</i> of the mapping;
-         *    this number might be different from referent.hashCode() if
-         *    the referent represents a value and not a key
-         */
-        protected Object toReference(int type, Object referent, int hash) {
-            switch (type) {
-                case HARD: return referent;
-                case SOFT: return new SoftRef(hash, referent, parent.queue);
-                case WEAK: return new WeakRef(hash, referent, parent.queue);
-                default: throw new Error();
-            }
-        }
-
-        /**
-         * Purges the specified reference
-         * @param ref  the reference to purge
-         * @return true or false
-         */
-        boolean purge(Reference ref) {
-            boolean r = (parent.keyType > HARD) && (key == ref);
-            r = r || ((parent.valueType > HARD) && (value == ref));
-            if (r) {
-                if (parent.keyType > HARD) {
-                    ((Reference)key).clear();
-                }
-                if (parent.valueType > HARD) {
-                    ((Reference)value).clear();
-                } else if (parent.purgeValues) {
-                    value = null;
-                }
-            }
-            return r;
-        }
-
-        /**
-         * Gets the next entry in the bucket.
-         * 
-         * @return the next entry in the bucket
-         */
-        protected ReferenceEntry next() {
-            return (ReferenceEntry) next;
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * The EntrySet iterator.
-     */
-    static class ReferenceEntrySetIterator implements Iterator {
-        /** The parent map */
-        final AbstractReferenceMap parent;
-        
-        // These fields keep track of where we are in the table.
-        int index;
-        ReferenceEntry entry;
-        ReferenceEntry previous;
-
-        // These Object fields provide hard references to the
-        // current and next entry; this assures that if hasNext()
-        // returns true, next() will actually return a valid element.
-        Object nextKey, nextValue;
-        Object currentKey, currentValue;
-
-        int expectedModCount;
-
-        public ReferenceEntrySetIterator(AbstractReferenceMap parent) {
-            super();
-            this.parent = parent;
-            index = (parent.size() != 0 ? parent.data.length : 0);
-            // have to do this here!  size() invocation above
-            // may have altered the modCount.
-            expectedModCount = parent.modCount;
-        }
-
-        public boolean hasNext() {
-            checkMod();
-            while (nextNull()) {
-                ReferenceEntry e = entry;
-                int i = index;
-                while ((e == null) && (i > 0)) {
-                    i--;
-                    e = (ReferenceEntry) parent.data[i];
-                }
-                entry = e;
-                index = i;
-                if (e == null) {
-                    currentKey = null;
-                    currentValue = null;
-                    return false;
-                }
-                nextKey = e.getKey();
-                nextValue = e.getValue();
-                if (nextNull()) {
-                    entry = entry.next();
-                }
-            }
-            return true;
-        }
-
-        private void checkMod() {
-            if (parent.modCount != expectedModCount) {
-                throw new ConcurrentModificationException();
-            }
-        }
-
-        private boolean nextNull() {
-            return (nextKey == null) || (nextValue == null);
-        }
-
-        protected ReferenceEntry nextEntry() {    
-            checkMod();
-            if (nextNull() && !hasNext()) {
-                throw new NoSuchElementException();
-            }
-            previous = entry;
-            entry = entry.next();
-            currentKey = nextKey;
-            currentValue = nextValue;
-            nextKey = null;
-            nextValue = null;
-            return previous;
-        }
-
-        protected ReferenceEntry currentEntry() {
-            checkMod();
-            return previous;
-        }
-        
-        public Object next() {
-            return nextEntry();
-        }
-
-        public void remove() {
-            checkMod();
-            if (previous == null) {
-                throw new IllegalStateException();
-            }
-            parent.remove(currentKey);
-            previous = null;
-            currentKey = null;
-            currentValue = null;
-            expectedModCount = parent.modCount;
-        }
-    }
-
-    /**
-     * The keySet iterator.
-     */
-    static class ReferenceKeySetIterator extends ReferenceEntrySetIterator {
-        
-        ReferenceKeySetIterator(AbstractReferenceMap parent) {
-            super(parent);
-        }
-        
-        public Object next() {
-            return nextEntry().getKey();
-        }
-    }
-
-    /**
-     * The values iterator.
-     */
-    static class ReferenceValuesIterator extends ReferenceEntrySetIterator {
-        
-        ReferenceValuesIterator(AbstractReferenceMap parent) {
-            super(parent);
-        }
-        
-        public Object next() {
-            return nextEntry().getValue();
-        }
-    }
-
-    /**
-     * The MapIterator implementation.
-     */
-    static class ReferenceMapIterator extends ReferenceEntrySetIterator implements MapIterator {
-        
-        protected ReferenceMapIterator(AbstractReferenceMap parent) {
-            super(parent);
-        }
-
-        public Object next() {
-            return nextEntry().getKey();
-        }
-
-        public Object getKey() {
-            HashEntry current = currentEntry();
-            if (current == null) {
-                throw new IllegalStateException(AbstractHashedMap.GETKEY_INVALID);
-            }
-            return current.getKey();
-        }
-
-        public Object getValue() {
-            HashEntry current = currentEntry();
-            if (current == null) {
-                throw new IllegalStateException(AbstractHashedMap.GETVALUE_INVALID);
-            }
-            return current.getValue();
-        }
-
-        public Object setValue(Object value) {
-            HashEntry current = currentEntry();
-            if (current == null) {
-                throw new IllegalStateException(AbstractHashedMap.SETVALUE_INVALID);
-            }
-            return current.setValue(value);
-        }
-    }
-    
-    //-----------------------------------------------------------------------
-    // These two classes store the hashCode of the key of
-    // of the mapping, so that after they're dequeued a quick
-    // lookup of the bucket in the table can occur.
-
-    /**
-     * A soft reference holder.
-     */
-    static class SoftRef extends SoftReference {
-        /** the hashCode of the key (even if the reference points to a value) */
-        private int hash;
-
-        public SoftRef(int hash, Object r, ReferenceQueue q) {
-            super(r, q);
-            this.hash = hash;
-        }
-
-        public int hashCode() {
-            return hash;
-        }
-    }
-
-    /**
-     * A weak reference holder.
-     */
-    static class WeakRef extends WeakReference {
-        /** the hashCode of the key (even if the reference points to a value) */
-        private int hash;
-
-        public WeakRef(int hash, Object r, ReferenceQueue q) {
-            super(r, q);
-            this.hash = hash;
-        }
-
-        public int hashCode() {
-            return hash;
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Replaces the superclass method to store the state of this class.
-     * <p>
-     * Serialization is not one of the JDK's nicest topics. Normal serialization will
-     * initialise the superclass before the subclass. Sometimes however, this isn't
-     * what you want, as in this case the <code>put()</code> method on read can be
-     * affected by subclass state.
-     * <p>
-     * The solution adopted here is to serialize the state data of this class in
-     * this protected method. This method must be called by the
-     * <code>writeObject()</code> of the first serializable subclass.
-     * <p>
-     * Subclasses may override if they have a specific field that must be present
-     * on read before this implementation will work. Generally, the read determines
-     * what must be serialized here, if anything.
-     * 
-     * @param out  the output stream
-     */
-    protected void doWriteObject(ObjectOutputStream out) throws IOException {
-        out.writeInt(keyType);
-        out.writeInt(valueType);
-        out.writeBoolean(purgeValues);
-        out.writeFloat(loadFactor);
-        out.writeInt(data.length);
-        for (MapIterator it = mapIterator(); it.hasNext();) {
-            out.writeObject(it.next());
-            out.writeObject(it.getValue());
-        }
-        out.writeObject(null);  // null terminate map
-        // do not call super.doWriteObject() as code there doesn't work for reference map
-    }
-
-    /**
-     * Replaces the superclassm method to read the state of this class.
-     * <p>
-     * Serialization is not one of the JDK's nicest topics. Normal serialization will
-     * initialise the superclass before the subclass. Sometimes however, this isn't
-     * what you want, as in this case the <code>put()</code> method on read can be
-     * affected by subclass state.
-     * <p>
-     * The solution adopted here is to deserialize the state data of this class in
-     * this protected method. This method must be called by the
-     * <code>readObject()</code> of the first serializable subclass.
-     * <p>
-     * Subclasses may override if the subclass has a specific field that must be present
-     * before <code>put()</code> or <code>calculateThreshold()</code> will work correctly.
-     * 
-     * @param in  the input stream
-     */
-    protected void doReadObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        this.keyType = in.readInt();
-        this.valueType = in.readInt();
-        this.purgeValues = in.readBoolean();
-        this.loadFactor = in.readFloat();
-        int capacity = in.readInt();
-        init();
-        data = new HashEntry[capacity];
-        while (true) {
-            Object key = in.readObject();
-            if (key == null) {
-                break;
-            }
-            Object value = in.readObject();
-            put(key, value);
-        }
-        threshold = calculateThreshold(data.length, loadFactor);
-        // do not call super.doReadObject() as code there doesn't work for reference map
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/AbstractSortedMapDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/AbstractSortedMapDecorator.java
deleted file mode 100755
index 923e6f9..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/AbstractSortedMapDecorator.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.util.Comparator;
-import java.util.SortedMap;
-
-/** 
- * Provides a base decorator that enables additional functionality to be added
- * to a Map via decoration.
- * <p>
- * Methods are forwarded directly to the decorated map.
- * <p>
- * This implementation does not perform any special processing with the map views.
- * Instead it simply returns the set/collection from the wrapped map. This may be
- * undesirable, for example if you are trying to write a validating implementation
- * it would provide a loophole around the validation.
- * But, you might want that loophole, so this class is kept simple.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:29 $
- * 
- * @author Stephen Colebourne
- */
-public abstract class AbstractSortedMapDecorator
-        extends AbstractMapDecorator implements SortedMap {
-
-    /**
-     * Constructor only used in deserialization, do not use otherwise.
-     * @since Commons Collections 3.1
-     */
-    protected AbstractSortedMapDecorator() {
-        super();
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     *
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if the collection is null
-     */
-    public AbstractSortedMapDecorator(SortedMap map) {
-        super(map);
-    }
-
-    /**
-     * Gets the map being decorated.
-     * 
-     * @return the decorated map
-     */
-    protected SortedMap getSortedMap() {
-        return (SortedMap) map;
-    }
-
-    //-----------------------------------------------------------------------
-    public Comparator comparator() {
-        return getSortedMap().comparator();
-    }
-
-    public Object firstKey() {
-        return getSortedMap().firstKey();
-    }
-
-    public SortedMap headMap(Object toKey) {
-        return getSortedMap().headMap(toKey);
-    }
-
-    public Object lastKey() {
-        return getSortedMap().lastKey();
-    }
-
-    public SortedMap subMap(Object fromKey, Object toKey) {
-        return getSortedMap().subMap(fromKey, toKey);
-    }
-
-    public SortedMap tailMap(Object fromKey) {
-        return getSortedMap().tailMap(fromKey);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/CaseInsensitiveMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/CaseInsensitiveMap.java
deleted file mode 100755
index 47071de..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/CaseInsensitiveMap.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- *  Copyright 2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Map;
-
-/**
- * A case-insensitive <code>Map</code>.
- * <p>
- * As entries are added to the map, keys are converted to all lowercase. A new 
- * key is compared to existing keys by comparing <code>newKey.toString().toLower()</code>
- * to the lowercase values in the current <code>KeySet.</code>
- * <p>
- * Null keys are supported.  
- * <p>
- * The <code>keySet()</code> method returns all lowercase keys, or nulls.
- * <p>
- * Example:
- * <pre><code>
- *  Map map = new CaseInsensitiveMap();
- *  map.put("One", "One");
- *  map.put("Two", "Two");
- *  map.put(null, "Three");
- *  map.put("one", "Four");
- * </code></pre>
- * creates a <code>CaseInsensitiveMap</code> with three entries.<br>
- * <code>map.get(null)</code> returns <code>"Three"</code> and <code>map.get("ONE")</code>
- * returns <code>"Four".</code>  The <code>Set</code> returned by <code>keySet()</code>
- * equals <code>{"one", "two", null}.</code>
- * <p>
- * <strong>Note that CaseInsensitiveMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. The simplest approach is to wrap this map
- * using {@link java.util.Collections#synchronizedMap(Map)}. This class may throw 
- * exceptions when accessed by concurrent threads without synchronization.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:29 $
- *
- * @author Commons-Collections team
- */
-public class CaseInsensitiveMap extends AbstractHashedMap implements Serializable, Cloneable {
-
-    /** Serialisation version */
-    private static final long serialVersionUID = -7074655917369299456L;
-
-    /**
-     * Constructs a new empty map with default size and load factor.
-     */
-    public CaseInsensitiveMap() {
-        super(DEFAULT_CAPACITY, DEFAULT_LOAD_FACTOR, DEFAULT_THRESHOLD);
-    }
-
-    /**
-     * Constructs a new, empty map with the specified initial capacity. 
-     *
-     * @param initialCapacity  the initial capacity
-     * @throws IllegalArgumentException if the initial capacity is less than one
-     */
-    public CaseInsensitiveMap(int initialCapacity) {
-        super(initialCapacity);
-    }
-
-    /**
-     * Constructs a new, empty map with the specified initial capacity and
-     * load factor. 
-     *
-     * @param initialCapacity  the initial capacity
-     * @param loadFactor  the load factor
-     * @throws IllegalArgumentException if the initial capacity is less than one
-     * @throws IllegalArgumentException if the load factor is less than zero
-     */
-    public CaseInsensitiveMap(int initialCapacity, float loadFactor) {
-        super(initialCapacity, loadFactor);
-    }
-
-    /**
-     * Constructor copying elements from another map.
-     * <p>
-     * Keys will be converted to lower case strings, which may cause
-     * some entries to be removed (if string representation of keys differ
-     * only by character case).
-     *
-     * @param map  the map to copy
-     * @throws NullPointerException if the map is null
-     */
-    public CaseInsensitiveMap(Map map) {
-        super(map);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Overrides convertKey() from {@link AbstractHashedMap} to convert keys to 
-     * lower case.
-     * <p>
-     * Returns null if key is null.
-     * 
-     * @param key  the key convert
-     * @return the converted key
-     */
-    protected Object convertKey(Object key) {
-        if (key != null) {
-            return key.toString().toLowerCase();
-        } else {
-            return AbstractHashedMap.NULL;
-        }
-    }   
-
-    //-----------------------------------------------------------------------
-    /**
-     * Clones the map without cloning the keys or values.
-     *
-     * @return a shallow clone
-     */
-    public Object clone() {
-        return super.clone();
-    }
-
-    /**
-     * Write the map out using a custom routine.
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        doWriteObject(out);
-    }
-
-    /**
-     * Read the map in using a custom routine.
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        doReadObject(in);
-    }
- 
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/CompositeMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/CompositeMap.java
deleted file mode 100755
index a9d3eba..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/CompositeMap.java
+++ /dev/null
@@ -1,537 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.collection.CompositeCollection;
-import org.apache.commons.collections.set.CompositeSet;
-
-/**
- * Decorates a map of other maps to provide a single unified view.
- * <p>
- * Changes made to this map will actually be made on the decorated map.
- * Add and remove operations require the use of a pluggable strategy. If no
- * strategy is provided then add and remove are unsupported.
- * <p>
- * <strong>Note that CompositeMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. The simplest approach is to wrap this map
- * using {@link java.util.Collections#synchronizedMap(Map)}. This class may throw 
- * exceptions when accessed by concurrent threads without synchronization.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:29 $
- *
- * @author Brian McCallister
- */
-public class CompositeMap implements Map {
-
-    /** Array of all maps in the composite */
-    private Map[] composite;
-
-    /** Handle mutation operations */
-    private MapMutator mutator;
-
-    /**
-     * Create a new, empty, CompositeMap.
-     */
-    public CompositeMap() {
-        this(new Map[]{}, null);
-    }
-
-    /**
-     * Create a new CompositeMap with two composited Map instances.
-     * 
-     * @param one  the first Map to be composited
-     * @param two  the second Map to be composited
-     * @throws IllegalArgumentException if there is a key collision
-     */
-    public CompositeMap(Map one, Map two) {
-        this(new Map[]{one, two}, null);
-    }
-
-    /**
-     * Create a new CompositeMap with two composited Map instances.
-     * 
-     * @param one  the first Map to be composited
-     * @param two  the second Map to be composited
-     * @param mutator  MapMutator to be used for mutation operations
-     */
-    public CompositeMap(Map one, Map two, MapMutator mutator) {
-        this(new Map[]{one, two}, mutator);
-    }
-
-    /**
-     * Create a new CompositeMap which composites all of the Map instances in the
-     * argument. It copies the argument array, it does not use it directly.
-     * 
-     * @param composite  the Maps to be composited
-     * @throws IllegalArgumentException if there is a key collision
-     */
-    public CompositeMap(Map[] composite) {
-        this(composite, null);
-    }
-
-    /**
-     * Create a new CompositeMap which composites all of the Map instances in the
-     * argument. It copies the argument array, it does not use it directly.
-     * 
-     * @param composite  Maps to be composited
-     * @param mutator  MapMutator to be used for mutation operations
-     */
-    public CompositeMap(Map[] composite, MapMutator mutator) {
-        this.mutator = mutator;
-        this.composite = new Map[0];
-        for (int i = composite.length - 1; i >= 0; --i) {
-            this.addComposited(composite[i]);
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Specify the MapMutator to be used by mutation operations.
-     * 
-     * @param mutator  the MapMutator to be used for mutation delegation
-     */
-    public void setMutator(MapMutator mutator) {
-        this.mutator = mutator;
-    }
-    
-    /**
-     * Add an additional Map to the composite.
-     *
-     * @param map  the Map to be added to the composite
-     * @throws IllegalArgumentException if there is a key collision and there is no
-     *         MapMutator set to handle it.
-     */
-    public synchronized void addComposited(Map map) throws IllegalArgumentException {
-        for (int i = composite.length - 1; i >= 0; --i) {
-            Collection intersect = CollectionUtils.intersection(this.composite[i].keySet(), map.keySet());
-            if (intersect.size() != 0) {
-                if (this.mutator == null) {
-                    throw new IllegalArgumentException("Key collision adding Map to CompositeMap");
-                }
-                else {
-                    this.mutator.resolveCollision(this, this.composite[i], map, intersect);
-                }
-            }
-        }
-        Map[] temp = new Map[this.composite.length + 1];
-        System.arraycopy(this.composite, 0, temp, 0, this.composite.length);
-        temp[temp.length - 1] = map;
-        this.composite = temp;
-    }
-    
-    /**
-     * Remove a Map from the composite.
-     *
-     * @param map  the Map to be removed from the composite
-     * @return The removed Map or <code>null</code> if map is not in the composite
-     */
-    public synchronized Map removeComposited(Map map) {
-        int size = this.composite.length;
-        for (int i = 0; i < size; ++i) {
-            if (this.composite[i].equals(map)) {
-                Map[] temp = new Map[size - 1];
-                System.arraycopy(this.composite, 0, temp, 0, i);
-                System.arraycopy(this.composite, i + 1, temp, i, size - i - 1);
-                this.composite = temp;
-                return map;
-            }
-        }
-        return null;
-    }
-
-    //-----------------------------------------------------------------------    
-    /**
-     * Calls <code>clear()</code> on all composited Maps.
-     *
-     * @throws UnsupportedOperationException if any of the composited Maps do not support clear()
-     */
-    public void clear() {
-        for (int i = this.composite.length - 1; i >= 0; --i) {
-            this.composite[i].clear();
-        }
-    }
-    
-    /**
-     * Returns <tt>true</tt> if this map contains a mapping for the specified
-     * key.  More formally, returns <tt>true</tt> if and only if
-     * this map contains at a mapping for a key <tt>k</tt> such that
-     * <tt>(key==null ? k==null : key.equals(k))</tt>.  (There can be
-     * at most one such mapping.)
-     *
-     * @param key  key whose presence in this map is to be tested.
-     * @return <tt>true</tt> if this map contains a mapping for the specified
-     *         key.
-     *
-     * @throws ClassCastException if the key is of an inappropriate type for
-     * 		  this map (optional).
-     * @throws NullPointerException if the key is <tt>null</tt> and this map
-     *            does not not permit <tt>null</tt> keys (optional).
-     */
-    public boolean containsKey(Object key) {
-        for (int i = this.composite.length - 1; i >= 0; --i) {
-            if (this.composite[i].containsKey(key)) {
-                return true;
-            }
-        }
-        return false;
-    }
-    
-    /**
-     * Returns <tt>true</tt> if this map maps one or more keys to the
-     * specified value.  More formally, returns <tt>true</tt> if and only if
-     * this map contains at least one mapping to a value <tt>v</tt> such that
-     * <tt>(value==null ? v==null : value.equals(v))</tt>.  This operation
-     * will probably require time linear in the map size for most
-     * implementations of the <tt>Map</tt> interface.
-     *
-     * @param value value whose presence in this map is to be tested.
-     * @return <tt>true</tt> if this map maps one or more keys to the
-     *         specified value.
-     * @throws ClassCastException if the value is of an inappropriate type for
-     * 		  this map (optional).
-     * @throws NullPointerException if the value is <tt>null</tt> and this map
-     *            does not not permit <tt>null</tt> values (optional).
-     */
-    public boolean containsValue(Object value) {
-        for (int i = this.composite.length - 1; i >= 0; --i) {
-            if (this.composite[i].containsValue(value)) {
-                return true;
-            }
-        }
-        return false;
-    }
-    
-    /**
-     * Returns a set view of the mappings contained in this map.  Each element
-     * in the returned set is a <code>Map.Entry</code>.  The set is backed by the
-     * map, so changes to the map are reflected in the set, and vice-versa.
-     * If the map is modified while an iteration over the set is in progress,
-     * the results of the iteration are undefined.  The set supports element
-     * removal, which removes the corresponding mapping from the map, via the
-     * <tt>Iterator.remove</tt>, <tt>Set.remove</tt>, <tt>removeAll</tt>,
-     * <tt>retainAll</tt> and <tt>clear</tt> operations.  It does not support
-     * the <tt>add</tt> or <tt>addAll</tt> operations.
-     * <p>
-     * This implementation returns a <code>CompositeSet</code> which
-     * composites the entry sets from all of the composited maps.
-     *
-     * @see CompositeSet
-     * @return a set view of the mappings contained in this map.
-     */
-    public Set entrySet() {
-        CompositeSet entries = new CompositeSet();
-        for (int i = this.composite.length - 1; i >= 0; --i) {
-            entries.addComposited(this.composite[i].entrySet());
-        }
-        return entries;
-    }
-    
-    /**
-     * Returns the value to which this map maps the specified key.  Returns
-     * <tt>null</tt> if the map contains no mapping for this key.  A return
-     * value of <tt>null</tt> does not <i>necessarily</i> indicate that the
-     * map contains no mapping for the key; it's also possible that the map
-     * explicitly maps the key to <tt>null</tt>.  The <tt>containsKey</tt>
-     * operation may be used to distinguish these two cases.
-     *
-     * <p>More formally, if this map contains a mapping from a key
-     * <tt>k</tt> to a value <tt>v</tt> such that <tt>(key==null ? k==null :
-     * key.equals(k))</tt>, then this method returns <tt>v</tt>; otherwise
-     * it returns <tt>null</tt>.  (There can be at most one such mapping.)
-     *
-     * @param key key whose associated value is to be returned.
-     * @return the value to which this map maps the specified key, or
-     *	       <tt>null</tt> if the map contains no mapping for this key.
-     *
-     * @throws ClassCastException if the key is of an inappropriate type for
-     * 		  this map (optional).
-     * @throws NullPointerException key is <tt>null</tt> and this map does not
-     *		  not permit <tt>null</tt> keys (optional).
-     *
-     * @see #containsKey(Object)
-     */
-    public Object get(Object key) {
-        for (int i = this.composite.length - 1; i >= 0; --i) {
-            if (this.composite[i].containsKey(key)) {
-                return this.composite[i].get(key);
-            }
-        }
-        return null;
-    }
-    
-    /**
-     * Returns <tt>true</tt> if this map contains no key-value mappings.
-     *
-     * @return <tt>true</tt> if this map contains no key-value mappings.
-     */
-    public boolean isEmpty() {
-        for (int i = this.composite.length - 1; i >= 0; --i) {
-            if (!this.composite[i].isEmpty()) {
-                return false;
-            }
-        }
-        return true;
-    }
-    
-    /**
-     * Returns a set view of the keys contained in this map.  The set is
-     * backed by the map, so changes to the map are reflected in the set, and
-     * vice-versa.  If the map is modified while an iteration over the set is
-     * in progress, the results of the iteration are undefined.  The set
-     * supports element removal, which removes the corresponding mapping from
-     * the map, via the <tt>Iterator.remove</tt>, <tt>Set.remove</tt>,
-     * <tt>removeAll</tt> <tt>retainAll</tt>, and <tt>clear</tt> operations.
-     * It does not support the add or <tt>addAll</tt> operations.
-     * <p>
-     * This implementation returns a <code>CompositeSet</code> which
-     * composites the key sets from all of the composited maps.
-     *
-     * @return a set view of the keys contained in this map.
-     */
-    public Set keySet() {
-        CompositeSet keys = new CompositeSet();
-        for (int i = this.composite.length - 1; i >= 0; --i) {
-            keys.addComposited(this.composite[i].keySet());
-        }
-        return keys;
-    }
-    
-    /**
-     * Associates the specified value with the specified key in this map
-     * (optional operation).  If the map previously contained a mapping for
-     * this key, the old value is replaced by the specified value.  (A map
-     * <tt>m</tt> is said to contain a mapping for a key <tt>k</tt> if and only
-     * if {@link #containsKey(Object) m.containsKey(k)} would return
-     * <tt>true</tt>.))
-     *
-     * @param key key with which the specified value is to be associated.
-     * @param value value to be associated with the specified key.
-     * @return previous value associated with specified key, or <tt>null</tt>
-     *	       if there was no mapping for key.  A <tt>null</tt> return can
-     *	       also indicate that the map previously associated <tt>null</tt>
-     *	       with the specified key, if the implementation supports
-     *	       <tt>null</tt> values.
-     *
-     * @throws UnsupportedOperationException if no MapMutator has been specified
-     * @throws ClassCastException if the class of the specified key or value
-     * 	          prevents it from being stored in this map.
-     * @throws IllegalArgumentException if some aspect of this key or value
-     *	          prevents it from being stored in this map.
-     * @throws NullPointerException this map does not permit <tt>null</tt>
-     *            keys or values, and the specified key or value is
-     *            <tt>null</tt>.
-     */
-    public Object put(Object key, Object value) {
-        if (this.mutator == null) {
-            throw new UnsupportedOperationException("No mutator specified");
-        }
-        return this.mutator.put(this, this.composite, key, value);
-    }
-    
-    /**
-     * Copies all of the mappings from the specified map to this map
-     * (optional operation).  The effect of this call is equivalent to that
-     * of calling {@link #put(Object,Object) put(k, v)} on this map once
-     * for each mapping from key <tt>k</tt> to value <tt>v</tt> in the
-     * specified map.  The behavior of this operation is unspecified if the
-     * specified map is modified while the operation is in progress.
-     *
-     * @param map Mappings to be stored in this map.
-     *
-     * @throws UnsupportedOperationException if the <tt>putAll</tt> method is
-     * 		  not supported by this map.
-     *
-     * @throws ClassCastException if the class of a key or value in the
-     * 	          specified map prevents it from being stored in this map.
-     *
-     * @throws IllegalArgumentException some aspect of a key or value in the
-     *	          specified map prevents it from being stored in this map.
-     * @throws NullPointerException the specified map is <tt>null</tt>, or if
-     *         this map does not permit <tt>null</tt> keys or values, and the
-     *         specified map contains <tt>null</tt> keys or values.
-     */
-    public void putAll(Map map) {
-        if (this.mutator == null) {
-            throw new UnsupportedOperationException("No mutator specified");
-        }
-        this.mutator.putAll(this, this.composite, map);
-    }
-    
-    /**
-     * Removes the mapping for this key from this map if it is present
-     * (optional operation).   More formally, if this map contains a mapping
-     * from key <tt>k</tt> to value <tt>v</tt> such that
-     * <code>(key==null ?  k==null : key.equals(k))</code>, that mapping
-     * is removed.  (The map can contain at most one such mapping.)
-     *
-     * <p>Returns the value to which the map previously associated the key, or
-     * <tt>null</tt> if the map contained no mapping for this key.  (A
-     * <tt>null</tt> return can also indicate that the map previously
-     * associated <tt>null</tt> with the specified key if the implementation
-     * supports <tt>null</tt> values.)  The map will not contain a mapping for
-     * the specified  key once the call returns.
-     *
-     * @param key key whose mapping is to be removed from the map.
-     * @return previous value associated with specified key, or <tt>null</tt>
-     *	       if there was no mapping for key.
-     *
-     * @throws ClassCastException if the key is of an inappropriate type for
-     * 		  the composited map (optional).
-     * @throws NullPointerException if the key is <tt>null</tt> and the composited map
-     *            does not not permit <tt>null</tt> keys (optional).
-     * @throws UnsupportedOperationException if the <tt>remove</tt> method is
-     *         not supported by the composited map containing the key
-     */
-    public Object remove(Object key) {
-        for (int i = this.composite.length - 1; i >= 0; --i) {
-            if (this.composite[i].containsKey(key)) {
-                return this.composite[i].remove(key);
-            }
-        }
-        return null;
-    }
-    
-    /**
-     * Returns the number of key-value mappings in this map.  If the
-     * map contains more than <tt>Integer.MAX_VALUE</tt> elements, returns
-     * <tt>Integer.MAX_VALUE</tt>.
-     *
-     * @return the number of key-value mappings in this map.
-     */
-    public int size() {
-        int size = 0;
-        for (int i = this.composite.length - 1; i >= 0; --i) {
-            size += this.composite[i].size();
-        }
-        return size;
-    }
-    
-    /**
-     * Returns a collection view of the values contained in this map.  The
-     * collection is backed by the map, so changes to the map are reflected in
-     * the collection, and vice-versa.  If the map is modified while an
-     * iteration over the collection is in progress, the results of the
-     * iteration are undefined.  The collection supports element removal,
-     * which removes the corresponding mapping from the map, via the
-     * <tt>Iterator.remove</tt>, <tt>Collection.remove</tt>,
-     * <tt>removeAll</tt>, <tt>retainAll</tt> and <tt>clear</tt> operations.
-     * It does not support the add or <tt>addAll</tt> operations.
-     *
-     * @return a collection view of the values contained in this map.
-     */
-    public Collection values() {
-        CompositeCollection keys = new CompositeCollection();
-        for (int i = this.composite.length - 1; i >= 0; --i) {
-            keys.addComposited(this.composite[i].values());
-        }
-        return keys;
-    }
-    
-    /**
-     * Checks if this Map equals another as per the Map specification.
-     * 
-     * @param obj  the object to compare to
-     * @return true if the maps are equal
-     */
-    public boolean equals(Object obj) {
-        if (obj instanceof Map) {
-            Map map = (Map) obj;
-            return (this.entrySet().equals(map.entrySet()));
-        }
-        return false;
-    }
-    
-    /**
-     * Gets a hash code for the Map as per the Map specification.
-     */
-    public int hashCode() {
-        int code = 0;
-        for (Iterator i = this.entrySet().iterator(); i.hasNext();) {
-            code += i.next().hashCode();
-        }
-        return code;
-    }
-    
-    /**
-     * This interface allows definition for all of the indeterminate
-     * mutators in a CompositeMap, as well as providing a hook for
-     * callbacks on key collisions.
-     */
-    public static interface MapMutator {
-        /**
-         * Called when adding a new Composited Map results in a
-         * key collision.
-         *
-         * @param composite  the CompositeMap with the collision
-         * @param existing  the Map already in the composite which contains the
-         *        offending key
-         * @param added  the Map being added
-         * @param intersect  the intersection of the keysets of the existing and added maps
-         */
-        public void resolveCollision(
-            CompositeMap composite, Map existing, Map added, Collection intersect);
-        
-        /**
-         * Called when the CompositeMap.put() method is invoked.
-         *
-         * @param map  the CompositeMap which is being modified
-         * @param composited  array of Maps in the CompositeMap being modified
-         * @param key  key with which the specified value is to be associated.
-         * @param value  value to be associated with the specified key.
-         * @return previous value associated with specified key, or <tt>null</tt>
-         *	       if there was no mapping for key.  A <tt>null</tt> return can
-         *	       also indicate that the map previously associated <tt>null</tt>
-         *	       with the specified key, if the implementation supports
-         *	       <tt>null</tt> values.
-         *
-         * @throws UnsupportedOperationException if not defined
-         * @throws ClassCastException if the class of the specified key or value
-         * 	          prevents it from being stored in this map.
-         * @throws IllegalArgumentException if some aspect of this key or value
-         *	          prevents it from being stored in this map.
-         * @throws NullPointerException this map does not permit <tt>null</tt>
-         *            keys or values, and the specified key or value is
-         *            <tt>null</tt>.
-         */
-        public Object put(CompositeMap map, Map[] composited, Object key, Object value);
-        
-        /**
-         * Called when the CompositeMap.putAll() method is invoked.
-         *
-         * @param map  the CompositeMap which is being modified
-         * @param composited  array of Maps in the CompositeMap being modified
-         * @param mapToAdd  Mappings to be stored in this CompositeMap
-         *
-         * @throws UnsupportedOperationException if not defined
-         * @throws ClassCastException if the class of the specified key or value
-         * 	          prevents it from being stored in this map.
-         * @throws IllegalArgumentException if some aspect of this key or value
-         *	          prevents it from being stored in this map.
-         * @throws NullPointerException this map does not permit <tt>null</tt>
-         *            keys or values, and the specified key or value is
-         *            <tt>null</tt>.
-         */
-        public void putAll(CompositeMap map, Map[] composited, Map mapToAdd);
-    }
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/DefaultedMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/DefaultedMap.java
deleted file mode 100755
index 33f6f3d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/DefaultedMap.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- *  Copyright 2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.collections.Factory;
-import org.apache.commons.collections.Transformer;
-import org.apache.commons.collections.functors.ConstantTransformer;
-import org.apache.commons.collections.functors.FactoryTransformer;
-
-/**
- * Decorates another <code>Map</code> returning a default value if the map
- * does not contain the requested key.
- * <p>
- * When the {@link #get(Object)} method is called with a key that does not
- * exist in the map, this map will return the default value specified in
- * the constructor/factory. Only the get method is altered, so the
- * {@link Map#containsKey(Object)} can be used to determine if a key really
- * is in the map or not.
- * <p>
- * The defaulted value is not added to the map.
- * Compare this behaviour with {@link LazyMap}, which does add the value
- * to the map (via a Transformer).
- * <p>
- * For instance:
- * <pre>
- * Map map = new DefaultedMap("NULL");
- * Object obj = map.get("Surname");
- * // obj == "NULL"
- * </pre>
- * After the above code is executed the map is still empty.
- * <p>
- * <strong>Note that DefaultedMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. The simplest approach is to wrap this map
- * using {@link java.util.Collections#synchronizedMap(Map)}. This class may throw 
- * exceptions when accessed by concurrent threads without synchronization.
- *
- * @since Commons Collections 3.2
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- * 
- * @author Stephen Colebourne
- * @author Rafael U.C. Afonso
- * @see LazyMap
- */
-public class DefaultedMap
-        extends AbstractMapDecorator
-        implements Map, Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 19698628745827L;
-
-    /** The transformer to use if the map does not contain a key */
-    protected final Object value;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Factory method to create a defaulting map.
-     * <p>
-     * The value specified is returned when a missing key is found.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param defaultValue  the default value to return when the key is not found
-     * @throws IllegalArgumentException if map is null
-     */
-    public static Map decorate(Map map, Object defaultValue) {
-        if (defaultValue instanceof Transformer) {
-            defaultValue = ConstantTransformer.getInstance(defaultValue);
-        }
-        return new DefaultedMap(map, defaultValue);
-    }
-
-    /**
-     * Factory method to create a defaulting map.
-     * <p>
-     * The factory specified is called when a missing key is found.
-     * The result will be returned as the result of the map get(key) method.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param factory  the factory to use, must not be null
-     * @throws IllegalArgumentException if map or factory is null
-     */
-    public static Map decorate(Map map, Factory factory) {
-        if (factory == null) {
-            throw new IllegalArgumentException("Factory must not be null");
-        }
-        return new DefaultedMap(map, FactoryTransformer.getInstance(factory));
-    }
-
-    /**
-     * Factory method to create a defaulting map.
-     * <p>
-     * The transformer specified is called when a missing key is found.
-     * The key is passed to the transformer as the input, and the result
-     * will be returned as the result of the map get(key) method.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param factory  the factory to use, must not be null
-     * @throws IllegalArgumentException if map or factory is null
-     */
-    public static Map decorate(Map map, Transformer factory) {
-        if (factory == null) {
-           throw new IllegalArgumentException("Transformer must not be null");
-       }
-       return new DefaultedMap(map, factory);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructs a new empty <code>DefaultedMap</code> that decorates
-     * a <code>HashMap</code>.
-     * <p>
-     * The object passed in will be returned by the map whenever an
-     * unknown key is requested.
-     * 
-     * @param defaultValue  the default value to return when the key is not found
-     */
-    public DefaultedMap(Object defaultValue) {
-        super(new HashMap());
-        if (defaultValue instanceof Transformer) {
-            defaultValue = ConstantTransformer.getInstance(defaultValue);
-        }
-        this.value = defaultValue;
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param value  the value to use
-     * @throws IllegalArgumentException if map or transformer is null
-     */
-    protected DefaultedMap(Map map, Object value) {
-        super(map);
-        this.value = value;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the map out using a custom routine.
-     * 
-     * @param out  the output stream
-     * @throws IOException
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeObject(map);
-    }
-
-    /**
-     * Read the map in using a custom routine.
-     * 
-     * @param in  the input stream
-     * @throws IOException
-     * @throws ClassNotFoundException
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        map = (Map) in.readObject();
-    }
-
-    //-----------------------------------------------------------------------
-    public Object get(Object key) {
-        // create value for key if key is not currently in the map
-        if (map.containsKey(key) == false) {
-            if (value instanceof Transformer) {
-                return ((Transformer) value).transform(key);
-            }
-            return value;
-        }
-        return map.get(key);
-    }
-
-    // no need to wrap keySet, entrySet or values as they are views of
-    // existing map entries - you can't do a map-style get on them.
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/FixedSizeMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/FixedSizeMap.java
deleted file mode 100755
index 123c174..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/FixedSizeMap.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.collections.BoundedMap;
-import org.apache.commons.collections.collection.UnmodifiableCollection;
-import org.apache.commons.collections.set.UnmodifiableSet;
-
-/**
- * Decorates another <code>Map</code> to fix the size, preventing add/remove.
- * <p>
- * Any action that would change the size of the map is disallowed.
- * The put method is allowed to change the value associated with an existing
- * key however.
- * <p>
- * If trying to remove or clear the map, an UnsupportedOperationException is
- * thrown. If trying to put a new mapping into the map, an 
- * IllegalArgumentException is thrown. This is because the put method can 
- * succeed if the mapping's key already exists in the map, so the put method
- * is not always unsupported.
- * <p>
- * <strong>Note that FixedSizeMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. The simplest approach is to wrap this map
- * using {@link java.util.Collections#synchronizedMap(Map)}. This class may throw 
- * exceptions when accessed by concurrent threads without synchronization.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- * 
- * @author Stephen Colebourne
- * @author Paul Jack
- */
-public class FixedSizeMap
-        extends AbstractMapDecorator
-        implements Map, BoundedMap, Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 7450927208116179316L;
-
-    /**
-     * Factory method to create a fixed size map.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if map is null
-     */
-    public static Map decorate(Map map) {
-        return new FixedSizeMap(map);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if map is null
-     */
-    protected FixedSizeMap(Map map) {
-        super(map);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the map out using a custom routine.
-     * 
-     * @param out  the output stream
-     * @throws IOException
-     * @since Commons Collections 3.1
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeObject(map);
-    }
-
-    /**
-     * Read the map in using a custom routine.
-     * 
-     * @param in  the input stream
-     * @throws IOException
-     * @throws ClassNotFoundException
-     * @since Commons Collections 3.1
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        map = (Map) in.readObject();
-    }
-
-    //-----------------------------------------------------------------------
-    public Object put(Object key, Object value) {
-        if (map.containsKey(key) == false) {
-            throw new IllegalArgumentException("Cannot put new key/value pair - Map is fixed size");
-        }
-        return map.put(key, value);
-    }
-
-    public void putAll(Map mapToCopy) {
-        for (Iterator it = mapToCopy.keySet().iterator(); it.hasNext(); ) {
-            if (mapToCopy.containsKey(it.next()) == false) {
-                throw new IllegalArgumentException("Cannot put new key/value pair - Map is fixed size");
-            }
-        }
-        map.putAll(mapToCopy);
-    }
-
-    public void clear() {
-        throw new UnsupportedOperationException("Map is fixed size");
-    }
-
-    public Object remove(Object key) {
-        throw new UnsupportedOperationException("Map is fixed size");
-    }
-
-    public Set entrySet() {
-        Set set = map.entrySet();
-        // unmodifiable set will still allow modification via Map.Entry objects
-        return UnmodifiableSet.decorate(set);
-    }
-
-    public Set keySet() {
-        Set set = map.keySet();
-        return UnmodifiableSet.decorate(set);
-    }
-
-    public Collection values() {
-        Collection coll = map.values();
-        return UnmodifiableCollection.decorate(coll);
-    }
-
-    public boolean isFull() {
-        return true;
-    }
-
-    public int maxSize() {
-        return size();
-    }
-   
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/FixedSizeSortedMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/FixedSizeSortedMap.java
deleted file mode 100755
index fe1db56..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/FixedSizeSortedMap.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedMap;
-
-import org.apache.commons.collections.BoundedMap;
-import org.apache.commons.collections.collection.UnmodifiableCollection;
-import org.apache.commons.collections.set.UnmodifiableSet;
-
-/**
- * Decorates another <code>SortedMap</code> to fix the size blocking add/remove.
- * <p>
- * Any action that would change the size of the map is disallowed.
- * The put method is allowed to change the value associated with an existing
- * key however.
- * <p>
- * If trying to remove or clear the map, an UnsupportedOperationException is
- * thrown. If trying to put a new mapping into the map, an 
- * IllegalArgumentException is thrown. This is because the put method can 
- * succeed if the mapping's key already exists in the map, so the put method
- * is not always unsupported.
- * <p>
- * <strong>Note that FixedSizeSortedMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. The simplest approach is to wrap this map
- * using {@link java.util.Collections#synchronizedSortedMap}. This class may throw 
- * exceptions when accessed by concurrent threads without synchronization.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- * 
- * @author Stephen Colebourne
- * @author Paul Jack
- */
-public class FixedSizeSortedMap
-        extends AbstractSortedMapDecorator
-        implements SortedMap, BoundedMap, Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 3126019624511683653L;
-
-    /**
-     * Factory method to create a fixed size sorted map.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if map is null
-     */
-    public static SortedMap decorate(SortedMap map) {
-        return new FixedSizeSortedMap(map);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if map is null
-     */
-    protected FixedSizeSortedMap(SortedMap map) {
-        super(map);
-    }
-
-    /**
-     * Gets the map being decorated.
-     * 
-     * @return the decorated map
-     */
-    protected SortedMap getSortedMap() {
-        return (SortedMap) map;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the map out using a custom routine.
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeObject(map);
-    }
-
-    /**
-     * Read the map in using a custom routine.
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        map = (Map) in.readObject();
-    }
-
-    //-----------------------------------------------------------------------
-    public Object put(Object key, Object value) {
-        if (map.containsKey(key) == false) {
-            throw new IllegalArgumentException("Cannot put new key/value pair - Map is fixed size");
-        }
-        return map.put(key, value);
-    }
-
-    public void putAll(Map mapToCopy) {
-        for (Iterator it = mapToCopy.keySet().iterator(); it.hasNext(); ) {
-            if (mapToCopy.containsKey(it.next()) == false) {
-                throw new IllegalArgumentException("Cannot put new key/value pair - Map is fixed size");
-            }
-        }
-        map.putAll(mapToCopy);
-    }
-
-    public void clear() {
-        throw new UnsupportedOperationException("Map is fixed size");
-    }
-
-    public Object remove(Object key) {
-        throw new UnsupportedOperationException("Map is fixed size");
-    }
-
-    public Set entrySet() {
-        Set set = map.entrySet();
-        return UnmodifiableSet.decorate(set);
-    }
-
-    public Set keySet() {
-        Set set = map.keySet();
-        return UnmodifiableSet.decorate(set);
-    }
-
-    public Collection values() {
-        Collection coll = map.values();
-        return UnmodifiableCollection.decorate(coll);
-    }
-
-    //-----------------------------------------------------------------------
-    public SortedMap subMap(Object fromKey, Object toKey) {
-        SortedMap map = getSortedMap().subMap(fromKey, toKey);
-        return new FixedSizeSortedMap(map);
-    }
-
-    public SortedMap headMap(Object toKey) {
-        SortedMap map = getSortedMap().headMap(toKey);
-        return new FixedSizeSortedMap(map);
-    }
-
-    public SortedMap tailMap(Object fromKey) {
-        SortedMap map = getSortedMap().tailMap(fromKey);
-        return new FixedSizeSortedMap(map);
-    }
-
-    public boolean isFull() {
-        return true;
-    }
-
-    public int maxSize() {
-        return size();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/Flat3Map.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/Flat3Map.java
deleted file mode 100755
index fbf907b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/Flat3Map.java
+++ /dev/null
@@ -1,1132 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.AbstractCollection;
-import java.util.AbstractSet;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-import org.apache.commons.collections.IterableMap;
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.ResettableIterator;
-import org.apache.commons.collections.iterators.EmptyIterator;
-import org.apache.commons.collections.iterators.EmptyMapIterator;
-
-/**
- * A <code>Map</code> implementation that stores data in simple fields until
- * the size is greater than 3.
- * <p>
- * This map is designed for performance and can outstrip HashMap.
- * It also has good garbage collection characteristics.
- * <ul>
- * <li>Optimised for operation at size 3 or less.
- * <li>Still works well once size 3 exceeded.
- * <li>Gets at size 3 or less are about 0-10% faster than HashMap,
- * <li>Puts at size 3 or less are over 4 times faster than HashMap.
- * <li>Performance 5% slower than HashMap once size 3 exceeded once.
- * </ul>
- * The design uses two distinct modes of operation - flat and delegate.
- * While the map is size 3 or less, operations map straight onto fields using
- * switch statements. Once size 4 is reached, the map switches to delegate mode
- * and only switches back when cleared. In delegate mode, all operations are
- * forwarded straight to a HashMap resulting in the 5% performance loss.
- * <p>
- * The performance gains on puts are due to not needing to create a Map Entry
- * object. This is a large saving not only in performance but in garbage collection.
- * <p>
- * Whilst in flat mode this map is also easy for the garbage collector to dispatch.
- * This is because it contains no complex objects or arrays which slow the progress.
- * <p>
- * Do not use <code>Flat3Map</code> if the size is likely to grow beyond 3.
- * <p>
- * <strong>Note that Flat3Map is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. The simplest approach is to wrap this map
- * using {@link java.util.Collections#synchronizedMap(Map)}. This class may throw 
- * exceptions when accessed by concurrent threads without synchronization.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:29 $
- *
- * @author Stephen Colebourne
- */
-public class Flat3Map implements IterableMap, Serializable, Cloneable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -6701087419741928296L;
-
-    /** The size of the map, used while in flat mode */
-    private transient int size;
-    /** Hash, used while in flat mode */
-    private transient int hash1;
-    /** Hash, used while in flat mode */
-    private transient int hash2;
-    /** Hash, used while in flat mode */
-    private transient int hash3;
-    /** Key, used while in flat mode */
-    private transient Object key1;
-    /** Key, used while in flat mode */
-    private transient Object key2;
-    /** Key, used while in flat mode */
-    private transient Object key3;
-    /** Value, used while in flat mode */
-    private transient Object value1;
-    /** Value, used while in flat mode */
-    private transient Object value2;
-    /** Value, used while in flat mode */
-    private transient Object value3;
-    /** Map, used while in delegate mode */
-    private transient AbstractHashedMap delegateMap;
-
-    /**
-     * Constructor.
-     */
-    public Flat3Map() {
-        super();
-    }
-
-    /**
-     * Constructor copying elements from another map.
-     *
-     * @param map  the map to copy
-     * @throws NullPointerException if the map is null
-     */
-    public Flat3Map(Map map) {
-        super();
-        putAll(map);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the value mapped to the key specified.
-     * 
-     * @param key  the key
-     * @return the mapped value, null if no match
-     */
-    public Object get(Object key) {
-        if (delegateMap != null) {
-            return delegateMap.get(key);
-        }
-        if (key == null) {
-            switch (size) {
-                // drop through
-                case 3:
-                    if (key3 == null) return value3;
-                case 2:
-                    if (key2 == null) return value2;
-                case 1:
-                    if (key1 == null) return value1;
-            }
-        } else {
-            if (size > 0) {
-                int hashCode = key.hashCode();
-                switch (size) {
-                    // drop through
-                    case 3:
-                        if (hash3 == hashCode && key.equals(key3)) return value3;
-                    case 2:
-                        if (hash2 == hashCode && key.equals(key2)) return value2;
-                    case 1:
-                        if (hash1 == hashCode && key.equals(key1)) return value1;
-                }
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Gets the size of the map.
-     * 
-     * @return the size
-     */
-    public int size() {
-        if (delegateMap != null) {
-            return delegateMap.size();
-        }
-        return size;
-    }
-
-    /**
-     * Checks whether the map is currently empty.
-     * 
-     * @return true if the map is currently size zero
-     */
-    public boolean isEmpty() {
-        return (size() == 0);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Checks whether the map contains the specified key.
-     * 
-     * @param key  the key to search for
-     * @return true if the map contains the key
-     */
-    public boolean containsKey(Object key) {
-        if (delegateMap != null) {
-            return delegateMap.containsKey(key);
-        }
-        if (key == null) {
-            switch (size) {  // drop through
-                case 3:
-                    if (key3 == null) return true;
-                case 2:
-                    if (key2 == null) return true;
-                case 1:
-                    if (key1 == null) return true;
-            }
-        } else {
-            if (size > 0) {
-                int hashCode = key.hashCode();
-                switch (size) {  // drop through
-                    case 3:
-                        if (hash3 == hashCode && key.equals(key3)) return true;
-                    case 2:
-                        if (hash2 == hashCode && key.equals(key2)) return true;
-                    case 1:
-                        if (hash1 == hashCode && key.equals(key1)) return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Checks whether the map contains the specified value.
-     * 
-     * @param value  the value to search for
-     * @return true if the map contains the key
-     */
-    public boolean containsValue(Object value) {
-        if (delegateMap != null) {
-            return delegateMap.containsValue(value);
-        }
-        if (value == null) {  // drop through
-            switch (size) {
-                case 3:
-                    if (value3 == null) return true;
-                case 2:
-                    if (value2 == null) return true;
-                case 1:
-                    if (value1 == null) return true;
-            }
-        } else {
-            switch (size) {  // drop through
-                case 3:
-                    if (value.equals(value3)) return true;
-                case 2:
-                    if (value.equals(value2)) return true;
-                case 1:
-                    if (value.equals(value1)) return true;
-            }
-        }
-        return false;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Puts a key-value mapping into this map.
-     * 
-     * @param key  the key to add
-     * @param value  the value to add
-     * @return the value previously mapped to this key, null if none
-     */
-    public Object put(Object key, Object value) {
-        if (delegateMap != null) {
-            return delegateMap.put(key, value);
-        }
-        // change existing mapping
-        if (key == null) {
-            switch (size) {  // drop through
-                case 3:
-                    if (key3 == null) {
-                        Object old = value3;
-                        value3 = value;
-                        return old;
-                    }
-                case 2:
-                    if (key2 == null) {
-                        Object old = value2;
-                        value2 = value;
-                        return old;
-                    }
-                case 1:
-                    if (key1 == null) {
-                        Object old = value1;
-                        value1 = value;
-                        return old;
-                    }
-            }
-        } else {
-            if (size > 0) {
-                int hashCode = key.hashCode();
-                switch (size) {  // drop through
-                    case 3:
-                        if (hash3 == hashCode && key.equals(key3)) {
-                            Object old = value3;
-                            value3 = value;
-                            return old;
-                        }
-                    case 2:
-                        if (hash2 == hashCode && key.equals(key2)) {
-                            Object old = value2;
-                            value2 = value;
-                            return old;
-                        }
-                    case 1:
-                        if (hash1 == hashCode && key.equals(key1)) {
-                            Object old = value1;
-                            value1 = value;
-                            return old;
-                        }
-                }
-            }
-        }
-        
-        // add new mapping
-        switch (size) {
-            default:
-                convertToMap();
-                delegateMap.put(key, value);
-                return null;
-            case 2:
-                hash3 = (key == null ? 0 : key.hashCode());
-                key3 = key;
-                value3 = value;
-                break;
-            case 1:
-                hash2 = (key == null ? 0 : key.hashCode());
-                key2 = key;
-                value2 = value;
-                break;
-            case 0:
-                hash1 = (key == null ? 0 : key.hashCode());
-                key1 = key;
-                value1 = value;
-                break;
-        }
-        size++;
-        return null;
-    }
-
-    /**
-     * Puts all the values from the specified map into this map.
-     * 
-     * @param map  the map to add
-     * @throws NullPointerException if the map is null
-     */
-    public void putAll(Map map) {
-        int size = map.size();
-        if (size == 0) {
-            return;
-        }
-        if (delegateMap != null) {
-            delegateMap.putAll(map);
-            return;
-        }
-        if (size < 4) {
-            for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
-                Map.Entry entry = (Map.Entry) it.next();
-                put(entry.getKey(), entry.getValue());
-            }
-        } else {
-            convertToMap();
-            delegateMap.putAll(map);
-        }
-    }
-
-    /**
-     * Converts the flat map data to a map.
-     */
-    private void convertToMap() {
-        delegateMap = createDelegateMap();
-        switch (size) {  // drop through
-            case 3:
-                delegateMap.put(key3, value3);
-            case 2:
-                delegateMap.put(key2, value2);
-            case 1:
-                delegateMap.put(key1, value1);
-        }
-        
-        size = 0;
-        hash1 = hash2 = hash3 = 0;
-        key1 = key2 = key3 = null;
-        value1 = value2 = value3 = null;
-    }
-
-    /**
-     * Create an instance of the map used for storage when in delegation mode.
-     * <p>
-     * This can be overridden by subclasses to provide a different map implementation.
-     * Not every AbstractHashedMap is suitable, identity and reference based maps
-     * would be poor choices.
-     *
-     * @return a new AbstractHashedMap or subclass
-     * @since Commons Collections 3.1
-     */
-    protected AbstractHashedMap createDelegateMap() {
-        return new HashedMap();
-    }
-
-    /**
-     * Removes the specified mapping from this map.
-     * 
-     * @param key  the mapping to remove
-     * @return the value mapped to the removed key, null if key not in map
-     */
-    public Object remove(Object key) {
-        if (delegateMap != null) {
-            return delegateMap.remove(key);
-        }
-        if (size == 0) {
-            return null;
-        }
-        if (key == null) {
-            switch (size) {  // drop through
-                case 3:
-                    if (key3 == null) {
-                        Object old = value3;
-                        hash3 = 0;
-                        key3 = null;
-                        value3 = null;
-                        size = 2;
-                        return old;
-                    }
-                    if (key2 == null) {
-                        Object old = value3;
-                        hash2 = hash3;
-                        key2 = key3;
-                        value2 = value3;
-                        hash3 = 0;
-                        key3 = null;
-                        value3 = null;
-                        size = 2;
-                        return old;
-                    }
-                    if (key1 == null) {
-                        Object old = value3;
-                        hash1 = hash3;
-                        key1 = key3;
-                        value1 = value3;
-                        hash3 = 0;
-                        key3 = null;
-                        value3 = null;
-                        size = 2;
-                        return old;
-                    }
-                    return null;
-                case 2:
-                    if (key2 == null) {
-                        Object old = value2;
-                        hash2 = 0;
-                        key2 = null;
-                        value2 = null;
-                        size = 1;
-                        return old;
-                    }
-                    if (key1 == null) {
-                        Object old = value2;
-                        hash1 = hash2;
-                        key1 = key2;
-                        value1 = value2;
-                        hash2 = 0;
-                        key2 = null;
-                        value2 = null;
-                        size = 1;
-                        return old;
-                    }
-                    return null;
-                case 1:
-                    if (key1 == null) {
-                        Object old = value1;
-                        hash1 = 0;
-                        key1 = null;
-                        value1 = null;
-                        size = 0;
-                        return old;
-                    }
-            }
-        } else {
-            if (size > 0) {
-                int hashCode = key.hashCode();
-                switch (size) {  // drop through
-                    case 3:
-                        if (hash3 == hashCode && key.equals(key3)) {
-                            Object old = value3;
-                            hash3 = 0;
-                            key3 = null;
-                            value3 = null;
-                            size = 2;
-                            return old;
-                        }
-                        if (hash2 == hashCode && key.equals(key2)) {
-                            Object old = value3;
-                            hash2 = hash3;
-                            key2 = key3;
-                            value2 = value3;
-                            hash3 = 0;
-                            key3 = null;
-                            value3 = null;
-                            size = 2;
-                            return old;
-                        }
-                        if (hash1 == hashCode && key.equals(key1)) {
-                            Object old = value3;
-                            hash1 = hash3;
-                            key1 = key3;
-                            value1 = value3;
-                            hash3 = 0;
-                            key3 = null;
-                            value3 = null;
-                            size = 2;
-                            return old;
-                        }
-                        return null;
-                    case 2:
-                        if (hash2 == hashCode && key.equals(key2)) {
-                            Object old = value2;
-                            hash2 = 0;
-                            key2 = null;
-                            value2 = null;
-                            size = 1;
-                            return old;
-                        }
-                        if (hash1 == hashCode && key.equals(key1)) {
-                            Object old = value2;
-                            hash1 = hash2;
-                            key1 = key2;
-                            value1 = value2;
-                            hash2 = 0;
-                            key2 = null;
-                            value2 = null;
-                            size = 1;
-                            return old;
-                        }
-                        return null;
-                    case 1:
-                        if (hash1 == hashCode && key.equals(key1)) {
-                            Object old = value1;
-                            hash1 = 0;
-                            key1 = null;
-                            value1 = null;
-                            size = 0;
-                            return old;
-                        }
-                }
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Clears the map, resetting the size to zero and nullifying references
-     * to avoid garbage collection issues.
-     */
-    public void clear() {
-        if (delegateMap != null) {
-            delegateMap.clear();  // should aid gc
-            delegateMap = null;  // switch back to flat mode
-        } else {
-            size = 0;
-            hash1 = hash2 = hash3 = 0;
-            key1 = key2 = key3 = null;
-            value1 = value2 = value3 = null;
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets an iterator over the map.
-     * Changes made to the iterator affect this map.
-     * <p>
-     * A MapIterator returns the keys in the map. It also provides convenient
-     * methods to get the key and value, and set the value.
-     * It avoids the need to create an entrySet/keySet/values object.
-     * It also avoids creating the Map Entry object.
-     * 
-     * @return the map iterator
-     */
-    public MapIterator mapIterator() {
-        if (delegateMap != null) {
-            return delegateMap.mapIterator();
-        }
-        if (size == 0) {
-            return EmptyMapIterator.INSTANCE;
-        }
-        return new FlatMapIterator(this);
-    }
-
-    /**
-     * FlatMapIterator
-     */
-    static class FlatMapIterator implements MapIterator, ResettableIterator {
-        private final Flat3Map parent;
-        private int nextIndex = 0;
-        private boolean canRemove = false;
-        
-        FlatMapIterator(Flat3Map parent) {
-            super();
-            this.parent = parent;
-        }
-
-        public boolean hasNext() {
-            return (nextIndex < parent.size);
-        }
-
-        public Object next() {
-            if (hasNext() == false) {
-                throw new NoSuchElementException(AbstractHashedMap.NO_NEXT_ENTRY);
-            }
-            canRemove = true;
-            nextIndex++;
-            return getKey();
-        }
-
-        public void remove() {
-            if (canRemove == false) {
-                throw new IllegalStateException(AbstractHashedMap.REMOVE_INVALID);
-            }
-            parent.remove(getKey());
-            nextIndex--;
-            canRemove = false;
-        }
-
-        public Object getKey() {
-            if (canRemove == false) {
-                throw new IllegalStateException(AbstractHashedMap.GETKEY_INVALID);
-            }
-            switch (nextIndex) {
-                case 3:
-                    return parent.key3;
-                case 2:
-                    return parent.key2;
-                case 1:
-                    return parent.key1;
-            }
-            throw new IllegalStateException("Invalid map index");
-        }
-
-        public Object getValue() {
-            if (canRemove == false) {
-                throw new IllegalStateException(AbstractHashedMap.GETVALUE_INVALID);
-            }
-            switch (nextIndex) {
-                case 3:
-                    return parent.value3;
-                case 2:
-                    return parent.value2;
-                case 1:
-                    return parent.value1;
-            }
-            throw new IllegalStateException("Invalid map index");
-        }
-
-        public Object setValue(Object value) {
-            if (canRemove == false) {
-                throw new IllegalStateException(AbstractHashedMap.SETVALUE_INVALID);
-            }
-            Object old = getValue();
-            switch (nextIndex) {
-                case 3: 
-                    parent.value3 = value;
-                case 2:
-                    parent.value2 = value;
-                case 1:
-                    parent.value1 = value;
-            }
-            return old;
-        }
-        
-        public void reset() {
-            nextIndex = 0;
-            canRemove = false;
-        }
-        
-        public String toString() {
-            if (canRemove) {
-                return "Iterator[" + getKey() + "=" + getValue() + "]";
-            } else {
-                return "Iterator[]";
-            }
-        }
-    }
-    
-    /**
-     * Gets the entrySet view of the map.
-     * Changes made to the view affect this map.
-     * The Map Entry is not an independent object and changes as the 
-     * iterator progresses.
-     * To simply iterate through the entries, use {@link #mapIterator()}.
-     * 
-     * @return the entrySet view
-     */
-    public Set entrySet() {
-        if (delegateMap != null) {
-            return delegateMap.entrySet();
-        }
-        return new EntrySet(this);
-    }
-    
-    /**
-     * EntrySet
-     */
-    static class EntrySet extends AbstractSet {
-        private final Flat3Map parent;
-        
-        EntrySet(Flat3Map parent) {
-            super();
-            this.parent = parent;
-        }
-
-        public int size() {
-            return parent.size();
-        }
-        
-        public void clear() {
-            parent.clear();
-        }
-        
-        public boolean remove(Object obj) {
-            if (obj instanceof Map.Entry == false) {
-                return false;
-            }
-            Map.Entry entry = (Map.Entry) obj;
-            Object key = entry.getKey();
-            boolean result = parent.containsKey(key);
-            parent.remove(key);
-            return result;
-        }
-
-        public Iterator iterator() {
-            if (parent.delegateMap != null) {
-                return parent.delegateMap.entrySet().iterator();
-            }
-            if (parent.size() == 0) {
-                return EmptyIterator.INSTANCE;
-            }
-            return new EntrySetIterator(parent);
-        }
-    }
-
-    /**
-     * EntrySetIterator and MapEntry
-     */
-    static class EntrySetIterator implements Iterator, Map.Entry {
-        private final Flat3Map parent;
-        private int nextIndex = 0;
-        private boolean canRemove = false;
-        
-        EntrySetIterator(Flat3Map parent) {
-            super();
-            this.parent = parent;
-        }
-
-        public boolean hasNext() {
-            return (nextIndex < parent.size);
-        }
-
-        public Object next() {
-            if (hasNext() == false) {
-                throw new NoSuchElementException(AbstractHashedMap.NO_NEXT_ENTRY);
-            }
-            canRemove = true;
-            nextIndex++;
-            return this;
-        }
-
-        public void remove() {
-            if (canRemove == false) {
-                throw new IllegalStateException(AbstractHashedMap.REMOVE_INVALID);
-            }
-            parent.remove(getKey());
-            nextIndex--;
-            canRemove = false;
-        }
-
-        public Object getKey() {
-            if (canRemove == false) {
-                throw new IllegalStateException(AbstractHashedMap.GETKEY_INVALID);
-            }
-            switch (nextIndex) {
-                case 3:
-                    return parent.key3;
-                case 2:
-                    return parent.key2;
-                case 1:
-                    return parent.key1;
-            }
-            throw new IllegalStateException("Invalid map index");
-        }
-
-        public Object getValue() {
-            if (canRemove == false) {
-                throw new IllegalStateException(AbstractHashedMap.GETVALUE_INVALID);
-            }
-            switch (nextIndex) {
-                case 3:
-                    return parent.value3;
-                case 2:
-                    return parent.value2;
-                case 1:
-                    return parent.value1;
-            }
-            throw new IllegalStateException("Invalid map index");
-        }
-
-        public Object setValue(Object value) {
-            if (canRemove == false) {
-                throw new IllegalStateException(AbstractHashedMap.SETVALUE_INVALID);
-            }
-            Object old = getValue();
-            switch (nextIndex) {
-                case 3: 
-                    parent.value3 = value;
-                case 2:
-                    parent.value2 = value;
-                case 1:
-                    parent.value1 = value;
-            }
-            return old;
-        }
-        
-        public boolean equals(Object obj) {
-            if (canRemove == false) {
-                return false;
-            }
-            if (obj instanceof Map.Entry == false) {
-                return false;
-            }
-            Map.Entry other = (Map.Entry) obj;
-            Object key = getKey();
-            Object value = getValue();
-            return (key == null ? other.getKey() == null : key.equals(other.getKey())) &&
-                   (value == null ? other.getValue() == null : value.equals(other.getValue()));
-        }
-        
-        public int hashCode() {
-            if (canRemove == false) {
-                return 0;
-            }
-            Object key = getKey();
-            Object value = getValue();
-            return (key == null ? 0 : key.hashCode()) ^
-                   (value == null ? 0 : value.hashCode());
-        }
-        
-        public String toString() {
-            if (canRemove) {
-                return getKey() + "=" + getValue();
-            } else {
-                return "";
-            }
-        }
-    }
-    
-    /**
-     * Gets the keySet view of the map.
-     * Changes made to the view affect this map.
-     * To simply iterate through the keys, use {@link #mapIterator()}.
-     * 
-     * @return the keySet view
-     */
-    public Set keySet() {
-        if (delegateMap != null) {
-            return delegateMap.keySet();
-        }
-        return new KeySet(this);
-    }
-
-    /**
-     * KeySet
-     */
-    static class KeySet extends AbstractSet {
-        private final Flat3Map parent;
-        
-        KeySet(Flat3Map parent) {
-            super();
-            this.parent = parent;
-        }
-
-        public int size() {
-            return parent.size();
-        }
-        
-        public void clear() {
-            parent.clear();
-        }
-        
-        public boolean contains(Object key) {
-            return parent.containsKey(key);
-        }
-
-        public boolean remove(Object key) {
-            boolean result = parent.containsKey(key);
-            parent.remove(key);
-            return result;
-        }
-
-        public Iterator iterator() {
-            if (parent.delegateMap != null) {
-                return parent.delegateMap.keySet().iterator();
-            }
-            if (parent.size() == 0) {
-                return EmptyIterator.INSTANCE;
-            }
-            return new KeySetIterator(parent);
-        }
-    }
-
-    /**
-     * KeySetIterator
-     */
-    static class KeySetIterator extends EntrySetIterator {
-        
-        KeySetIterator(Flat3Map parent) {
-            super(parent);
-        }
-
-        public Object next() {
-            super.next();
-            return getKey();
-        }
-    }
-    
-    /**
-     * Gets the values view of the map.
-     * Changes made to the view affect this map.
-     * To simply iterate through the values, use {@link #mapIterator()}.
-     * 
-     * @return the values view
-     */
-    public Collection values() {
-        if (delegateMap != null) {
-            return delegateMap.values();
-        }
-        return new Values(this);
-    }
-
-    /**
-     * Values
-     */
-    static class Values extends AbstractCollection {
-        private final Flat3Map parent;
-        
-        Values(Flat3Map parent) {
-            super();
-            this.parent = parent;
-        }
-
-        public int size() {
-            return parent.size();
-        }
-        
-        public void clear() {
-            parent.clear();
-        }
-        
-        public boolean contains(Object value) {
-            return parent.containsValue(value);
-        }
-
-        public Iterator iterator() {
-            if (parent.delegateMap != null) {
-                return parent.delegateMap.values().iterator();
-            }
-            if (parent.size() == 0) {
-                return EmptyIterator.INSTANCE;
-            }
-            return new ValuesIterator(parent);
-        }
-    }
-
-    /**
-     * ValuesIterator
-     */
-    static class ValuesIterator extends EntrySetIterator {
-        
-        ValuesIterator(Flat3Map parent) {
-            super(parent);
-        }
-
-        public Object next() {
-            super.next();
-            return getValue();
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the map out using a custom routine.
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeInt(size());
-        for (MapIterator it = mapIterator(); it.hasNext();) {
-            out.writeObject(it.next());  // key
-            out.writeObject(it.getValue());  // value
-        }
-    }
-
-    /**
-     * Read the map in using a custom routine.
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        int count = in.readInt();
-        if (count > 3) {
-            delegateMap = createDelegateMap();
-        }
-        for (int i = count; i > 0; i--) {
-            put(in.readObject(), in.readObject());
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Clones the map without cloning the keys or values.
-     *
-     * @return a shallow clone
-     * @since Commons Collections 3.1
-     */
-    public Object clone() {
-        try {
-            Flat3Map cloned = (Flat3Map) super.clone();
-            if (cloned.delegateMap != null) {
-                cloned.delegateMap = (HashedMap) cloned.delegateMap.clone();
-            }
-            return cloned;
-        } catch (CloneNotSupportedException ex) {
-            throw new InternalError();
-        }
-    }
-
-    /**
-     * Compares this map with another.
-     * 
-     * @param obj  the object to compare to
-     * @return true if equal
-     */
-    public boolean equals(Object obj) {
-        if (obj == this) {
-            return true;
-        }
-        if (delegateMap != null) {
-            return delegateMap.equals(obj);
-        }
-        if (obj instanceof Map == false) {
-            return false;
-        }
-        Map other = (Map) obj;
-        if (size != other.size()) {
-            return false;
-        }
-        if (size > 0) {
-            Object otherValue = null;
-            switch (size) {  // drop through
-                case 3:
-                    if (other.containsKey(key3) == false) {
-                        return false;
-                    }
-                    otherValue = other.get(key3);
-                    if (value3 == null ? otherValue != null : !value3.equals(otherValue)) {
-                        return false;
-                    }
-                case 2:
-                    if (other.containsKey(key2) == false) {
-                        return false;
-                    }
-                    otherValue = other.get(key2);
-                    if (value2 == null ? otherValue != null : !value2.equals(otherValue)) {
-                        return false;
-                    }
-                case 1:
-                    if (other.containsKey(key1) == false) {
-                        return false;
-                    }
-                    otherValue = other.get(key1);
-                    if (value1 == null ? otherValue != null : !value1.equals(otherValue)) {
-                        return false;
-                    }
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Gets the standard Map hashCode.
-     * 
-     * @return the hash code defined in the Map interface
-     */
-    public int hashCode() {
-        if (delegateMap != null) {
-            return delegateMap.hashCode();
-        }
-        int total = 0;
-        switch (size) {  // drop through
-            case 3:
-                total += (hash3 ^ (value3 == null ? 0 : value3.hashCode()));
-            case 2:
-                total += (hash2 ^ (value2 == null ? 0 : value2.hashCode()));
-            case 1:
-                total += (hash1 ^ (value1 == null ? 0 : value1.hashCode()));
-        }
-        return total;
-    }
-
-    /**
-     * Gets the map as a String.
-     * 
-     * @return a string version of the map
-     */
-    public String toString() {
-        if (delegateMap != null) {
-            return delegateMap.toString();
-        }
-        if (size == 0) {
-            return "{}";
-        }
-        StringBuffer buf = new StringBuffer(128);
-        buf.append('{');
-        switch (size) {  // drop through
-            case 3:
-                buf.append((key3 == this ? "(this Map)" : key3));
-                buf.append('=');
-                buf.append((value3 == this ? "(this Map)" : value3));
-                buf.append(',');
-            case 2:
-                buf.append((key2 == this ? "(this Map)" : key2));
-                buf.append('=');
-                buf.append((value2 == this ? "(this Map)" : value2));
-                buf.append(',');
-            case 1:
-                buf.append((key1 == this ? "(this Map)" : key1));
-                buf.append('=');
-                buf.append((value1 == this ? "(this Map)" : value1));
-        }
-        buf.append('}');
-        return buf.toString();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/HashedMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/HashedMap.java
deleted file mode 100755
index bd14445..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/HashedMap.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Map;
-
-/**
- * A <code>Map</code> implementation that is a general purpose alternative
- * to <code>HashMap</code>.
- * <p>
- * This implementation improves on the JDK1.4 HashMap by adding the 
- * {@link org.apache.commons.collections.MapIterator MapIterator}
- * functionality and many methods for subclassing.
- * <p>
- * <strong>Note that HashedMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. The simplest approach is to wrap this map
- * using {@link java.util.Collections#synchronizedMap(Map)}. This class may throw 
- * exceptions when accessed by concurrent threads without synchronization.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- *
- * @author Stephen Colebourne
- */
-public class HashedMap
-        extends AbstractHashedMap implements Serializable, Cloneable {
-
-    /** Serialisation version */
-    private static final long serialVersionUID = -1788199231038721040L;
-    
-    /**
-     * Constructs a new empty map with default size and load factor.
-     */
-    public HashedMap() {
-        super(DEFAULT_CAPACITY, DEFAULT_LOAD_FACTOR, DEFAULT_THRESHOLD);
-    }
-
-    /**
-     * Constructs a new, empty map with the specified initial capacity. 
-     *
-     * @param initialCapacity  the initial capacity
-     * @throws IllegalArgumentException if the initial capacity is less than one
-     */
-    public HashedMap(int initialCapacity) {
-        super(initialCapacity);
-    }
-
-    /**
-     * Constructs a new, empty map with the specified initial capacity and
-     * load factor. 
-     *
-     * @param initialCapacity  the initial capacity
-     * @param loadFactor  the load factor
-     * @throws IllegalArgumentException if the initial capacity is less than one
-     * @throws IllegalArgumentException if the load factor is less than zero
-     */
-    public HashedMap(int initialCapacity, float loadFactor) {
-        super(initialCapacity, loadFactor);
-    }
-
-    /**
-     * Constructor copying elements from another map.
-     *
-     * @param map  the map to copy
-     * @throws NullPointerException if the map is null
-     */
-    public HashedMap(Map map) {
-        super(map);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Clones the map without cloning the keys or values.
-     *
-     * @return a shallow clone
-     */
-    public Object clone() {
-        return super.clone();
-    }
-    
-    /**
-     * Write the map out using a custom routine.
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        doWriteObject(out);
-    }
-
-    /**
-     * Read the map in using a custom routine.
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        doReadObject(in);
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/IdentityMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/IdentityMap.java
deleted file mode 100755
index f6604c1..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/IdentityMap.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Map;
-
-/**
- * A <code>Map</code> implementation that matches keys and values based
- * on <code>==</code> not <code>equals()</code>.
- * <p>
- * This map will violate the detail of various Map and map view contracts.
- * As a general rule, don't compare this map to other maps.
- * <p>
- * <strong>Note that IdentityMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. The simplest approach is to wrap this map
- * using {@link java.util.Collections#synchronizedMap(Map)}. This class may throw 
- * exceptions when accessed by concurrent threads without synchronization.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- *
- * @author java util HashMap
- * @author Stephen Colebourne
- */
-public class IdentityMap
-        extends AbstractHashedMap implements Serializable, Cloneable {
-
-    /** Serialisation version */
-    private static final long serialVersionUID = 2028493495224302329L;
-
-    /**
-     * Constructs a new empty map with default size and load factor.
-     */
-    public IdentityMap() {
-        super(DEFAULT_CAPACITY, DEFAULT_LOAD_FACTOR, DEFAULT_THRESHOLD);
-    }
-
-    /**
-     * Constructs a new, empty map with the specified initial capacity. 
-     *
-     * @param initialCapacity  the initial capacity
-     * @throws IllegalArgumentException if the initial capacity is less than one
-     */
-    public IdentityMap(int initialCapacity) {
-        super(initialCapacity);
-    }
-
-    /**
-     * Constructs a new, empty map with the specified initial capacity and
-     * load factor. 
-     *
-     * @param initialCapacity  the initial capacity
-     * @param loadFactor  the load factor
-     * @throws IllegalArgumentException if the initial capacity is less than one
-     * @throws IllegalArgumentException if the load factor is less than zero
-     */
-    public IdentityMap(int initialCapacity, float loadFactor) {
-        super(initialCapacity, loadFactor);
-    }
-
-    /**
-     * Constructor copying elements from another map.
-     *
-     * @param map  the map to copy
-     * @throws NullPointerException if the map is null
-     */
-    public IdentityMap(Map map) {
-        super(map);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the hash code for the key specified.
-     * This implementation uses the identity hash code.
-     * 
-     * @param key  the key to get a hash code for
-     * @return the hash code
-     */
-    protected int hash(Object key) {
-        return System.identityHashCode(key);
-    }
-    
-    /**
-     * Compares two keys for equals.
-     * This implementation uses <code>==</code>.
-     * 
-     * @param key1  the first key to compare
-     * @param key2  the second key to compare
-     * @return true if equal by identity
-     */
-    protected boolean isEqualKey(Object key1, Object key2) {
-        return (key1 == key2);
-    }
-    
-    /**
-     * Compares two values for equals.
-     * This implementation uses <code>==</code>.
-     * 
-     * @param value1  the first value to compare
-     * @param value2  the second value to compare
-     * @return true if equal by identity
-     */
-    protected boolean isEqualValue(Object value1, Object value2) {
-        return (value1 == value2);
-    }
-    
-    /**
-     * Creates an entry to store the data.
-     * This implementation creates an IdentityEntry instance.
-     * 
-     * @param next  the next entry in sequence
-     * @param hashCode  the hash code to use
-     * @param key  the key to store
-     * @param value  the value to store
-     * @return the newly created entry
-     */
-    protected HashEntry createEntry(HashEntry next, int hashCode, Object key, Object value) {
-        return new IdentityEntry(next, hashCode, key, value);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * HashEntry
-     */
-    protected static class IdentityEntry extends HashEntry {
-        
-        protected IdentityEntry(HashEntry next, int hashCode, Object key, Object value) {
-            super(next, hashCode, key, value);
-        }
-        
-        public boolean equals(Object obj) {
-            if (obj == this) {
-                return true;
-            }
-            if (obj instanceof Map.Entry == false) {
-                return false;
-            }
-            Map.Entry other = (Map.Entry) obj;
-            return
-                (getKey() == other.getKey()) &&
-                (getValue() == other.getValue());
-        }
-        
-        public int hashCode() {
-            return System.identityHashCode(getKey()) ^
-                   System.identityHashCode(getValue());
-        }
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Clones the map without cloning the keys or values.
-     *
-     * @return a shallow clone
-     */
-    public Object clone() {
-        return super.clone();
-    }
-    
-    /**
-     * Write the map out using a custom routine.
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        doWriteObject(out);
-    }
-
-    /**
-     * Read the map in using a custom routine.
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        doReadObject(in);
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/LRUMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/LRUMap.java
deleted file mode 100755
index e979236..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/LRUMap.java
+++ /dev/null
@@ -1,430 +0,0 @@
-/*
- *  Copyright 2001-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Map;
-
-import org.apache.commons.collections.BoundedMap;
-
-/**
- * A <code>Map</code> implementation with a fixed maximum size which removes
- * the least recently used entry if an entry is added when full.
- * <p>
- * The least recently used algorithm works on the get and put operations only.
- * Iteration of any kind, including setting the value by iteration, does not
- * change the order. Queries such as containsKey and containsValue or access
- * via views also do not change the order.
- * <p>
- * The map implements <code>OrderedMap</code> and entries may be queried using
- * the bidirectional <code>OrderedMapIterator</code>. The order returned is
- * least recently used to most recently used. Iterators from map views can 
- * also be cast to <code>OrderedIterator</code> if required.
- * <p>
- * All the available iterators can be reset back to the start by casting to
- * <code>ResettableIterator</code> and calling <code>reset()</code>.
- * <p>
- * <strong>Note that LRUMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. The simplest approach is to wrap this map
- * using {@link java.util.Collections#synchronizedMap(Map)}. This class may throw 
- * <code>NullPointerException</code>'s when accessed by concurrent threads.
- *
- * @since Commons Collections 3.0 (previously in main package v1.0)
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- *
- * @author James Strachan
- * @author Morgan Delagrange
- * @author Stephen Colebourne
- * @author Mike Pettypiece
- * @author Mario Ivankovits
- */
-public class LRUMap
-        extends AbstractLinkedMap implements BoundedMap, Serializable, Cloneable {
-    
-    /** Serialisation version */
-    private static final long serialVersionUID = -612114643488955218L;
-    /** Default maximum size */
-    protected static final int DEFAULT_MAX_SIZE = 100;
-    
-    /** Maximum size */
-    private transient int maxSize;
-    /** Scan behaviour */
-    private boolean scanUntilRemovable;
-
-    /**
-     * Constructs a new empty map with a maximum size of 100.
-     */
-    public LRUMap() {
-        this(DEFAULT_MAX_SIZE, DEFAULT_LOAD_FACTOR, false);
-    }
-
-    /**
-     * Constructs a new, empty map with the specified maximum size.
-     *
-     * @param maxSize  the maximum size of the map
-     * @throws IllegalArgumentException if the maximum size is less than one
-     */
-    public LRUMap(int maxSize) {
-        this(maxSize, DEFAULT_LOAD_FACTOR);
-    }
-
-    /**
-     * Constructs a new, empty map with the specified maximum size.
-     *
-     * @param maxSize  the maximum size of the map
-     * @param scanUntilRemovable  scan until a removeable entry is found, default false
-     * @throws IllegalArgumentException if the maximum size is less than one
-     * @since Commons Collections 3.1
-     */
-    public LRUMap(int maxSize, boolean scanUntilRemovable) {
-        this(maxSize, DEFAULT_LOAD_FACTOR, scanUntilRemovable);
-    }
-
-    /**
-     * Constructs a new, empty map with the specified initial capacity and
-     * load factor. 
-     *
-     * @param maxSize  the maximum size of the map, -1 for no limit,
-     * @param loadFactor  the load factor
-     * @throws IllegalArgumentException if the maximum size is less than one
-     * @throws IllegalArgumentException if the load factor is less than zero
-     */
-    public LRUMap(int maxSize, float loadFactor) {
-        this(maxSize, loadFactor, false);
-    }
-
-    /**
-     * Constructs a new, empty map with the specified initial capacity and
-     * load factor.
-     *
-     * @param maxSize  the maximum size of the map, -1 for no limit,
-     * @param loadFactor  the load factor
-     * @param scanUntilRemovable  scan until a removeable entry is found, default false
-     * @throws IllegalArgumentException if the maximum size is less than one
-     * @throws IllegalArgumentException if the load factor is less than zero
-     * @since Commons Collections 3.1
-     */
-    public LRUMap(int maxSize, float loadFactor, boolean scanUntilRemovable) {
-        super((maxSize < 1 ? DEFAULT_CAPACITY : maxSize), loadFactor);
-        if (maxSize < 1) {
-            throw new IllegalArgumentException("LRUMap max size must be greater than 0");
-        }
-        this.maxSize = maxSize;
-        this.scanUntilRemovable = scanUntilRemovable;
-    }
-
-    /**
-     * Constructor copying elements from another map.
-     * <p>
-     * The maximum size is set from the map's size.
-     *
-     * @param map  the map to copy
-     * @throws NullPointerException if the map is null
-     * @throws IllegalArgumentException if the map is empty
-     */
-    public LRUMap(Map map) {
-        this(map, false);
-    }
-
-    /**
-     * Constructor copying elements from another map.
-     * <p/>
-     * The maximum size is set from the map's size.
-     *
-     * @param map  the map to copy
-     * @param scanUntilRemovable  scan until a removeable entry is found, default false
-     * @throws NullPointerException if the map is null
-     * @throws IllegalArgumentException if the map is empty
-     * @since Commons Collections 3.1
-     */
-    public LRUMap(Map map, boolean scanUntilRemovable) {
-        this(map.size(), DEFAULT_LOAD_FACTOR, scanUntilRemovable);
-        putAll(map);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the value mapped to the key specified.
-     * <p>
-     * This operation changes the position of the key in the map to the
-     * most recently used position (first).
-     * 
-     * @param key  the key
-     * @return the mapped value, null if no match
-     */
-    public Object get(Object key) {
-        LinkEntry entry = (LinkEntry) getEntry(key);
-        if (entry == null) {
-            return null;
-        }
-        moveToMRU(entry);
-        return entry.getValue();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Moves an entry to the MRU position at the end of the list.
-     * <p>
-     * This implementation moves the updated entry to the end of the list.
-     * 
-     * @param entry  the entry to update
-     */
-    protected void moveToMRU(LinkEntry entry) {
-        if (entry.after != header) {
-            modCount++;
-            // remove
-            entry.before.after = entry.after;
-            entry.after.before = entry.before;
-            // add first
-            entry.after = header;
-            entry.before = header.before;
-            header.before.after = entry;
-            header.before = entry;
-        } else if (entry == header) {
-            throw new IllegalStateException("Can't move header to MRU" +
-                " (please report this to commons-dev@jakarta.apache.org)");
-        }
-    }
-    
-    /**
-     * Updates an existing key-value mapping.
-     * <p>
-     * This implementation moves the updated entry to the top of the list
-     * using {@link #moveToMRU(AbstractLinkedMap.LinkEntry)}.
-     * 
-     * @param entry  the entry to update
-     * @param newValue  the new value to store
-     */
-    protected void updateEntry(HashEntry entry, Object newValue) {
-        moveToMRU((LinkEntry) entry);  // handles modCount
-        entry.setValue(newValue);
-    }
-    
-    /**
-     * Adds a new key-value mapping into this map.
-     * <p>
-     * This implementation checks the LRU size and determines whether to
-     * discard an entry or not using {@link #removeLRU(AbstractLinkedMap.LinkEntry)}.
-     * <p>
-     * From Commons Collections 3.1 this method uses {@link #isFull()} rather
-     * than accessing <code>size</code> and <code>maxSize</code> directly.
-     * It also handles the scanUntilRemovable functionality.
-     * 
-     * @param hashIndex  the index into the data array to store at
-     * @param hashCode  the hash code of the key to add
-     * @param key  the key to add
-     * @param value  the value to add
-     */
-    protected void addMapping(int hashIndex, int hashCode, Object key, Object value) {
-        if (isFull()) {
-            LinkEntry reuse = header.after;
-            boolean removeLRUEntry = false;
-            if (scanUntilRemovable) {
-                while (reuse != header && reuse != null) {
-                    if (removeLRU(reuse)) {
-                        removeLRUEntry = true;
-                        break;
-                    }
-                    reuse = reuse.after;
-                }
-                if (reuse == null) {
-                    throw new IllegalStateException(
-                        "Entry.after=null, header.after" + header.after + " header.before" + header.before +
-                        " key=" + key + " value=" + value + " size=" + size + " maxSize=" + maxSize +
-                        " Please check that your keys are immutable, and that you have used synchronization properly." +
-                        " If so, then please report this to commons-dev@jakarta.apache.org as a bug.");
-                }
-            } else {
-                removeLRUEntry = removeLRU(reuse);
-            }
-            
-            if (removeLRUEntry) {
-                if (reuse == null) {
-                    throw new IllegalStateException(
-                        "reuse=null, header.after=" + header.after + " header.before" + header.before +
-                        " key=" + key + " value=" + value + " size=" + size + " maxSize=" + maxSize +
-                        " Please check that your keys are immutable, and that you have used synchronization properly." +
-                        " If so, then please report this to commons-dev@jakarta.apache.org as a bug.");
-                }
-                reuseMapping(reuse, hashIndex, hashCode, key, value);
-            } else {
-                super.addMapping(hashIndex, hashCode, key, value);
-            }
-        } else {
-            super.addMapping(hashIndex, hashCode, key, value);
-        }
-    }
-    
-    /**
-     * Reuses an entry by removing it and moving it to a new place in the map.
-     * <p>
-     * This method uses {@link #removeEntry}, {@link #reuseEntry} and {@link #addEntry}.
-     * 
-     * @param entry  the entry to reuse
-     * @param hashIndex  the index into the data array to store at
-     * @param hashCode  the hash code of the key to add
-     * @param key  the key to add
-     * @param value  the value to add
-     */
-    protected void reuseMapping(LinkEntry entry, int hashIndex, int hashCode, Object key, Object value) {
-        // find the entry before the entry specified in the hash table
-        // remember that the parameters (except the first) refer to the new entry,
-        // not the old one
-        try {
-            int removeIndex = hashIndex(entry.hashCode, data.length);
-            HashEntry[] tmp = data;  // may protect against some sync issues
-            HashEntry loop = tmp[removeIndex];
-            HashEntry previous = null;
-            while (loop != entry && loop != null) {
-                previous = loop;
-                loop = loop.next;
-            }
-            if (loop == null) {
-                throw new IllegalStateException(
-                    "Entry.next=null, data[removeIndex]=" + data[removeIndex] + " previous=" + previous +
-                    " key=" + key + " value=" + value + " size=" + size + " maxSize=" + maxSize +
-                    " Please check that your keys are immutable, and that you have used synchronization properly." +
-                    " If so, then please report this to commons-dev@jakarta.apache.org as a bug.");
-            }
-            
-            // reuse the entry
-            modCount++;
-            removeEntry(entry, removeIndex, previous);
-            reuseEntry(entry, hashIndex, hashCode, key, value);
-            addEntry(entry, hashIndex);
-        } catch (NullPointerException ex) {
-            throw new IllegalStateException(
-                    "NPE, entry=" + entry + " entryIsHeader=" + (entry==header) +
-                    " key=" + key + " value=" + value + " size=" + size + " maxSize=" + maxSize +
-                    " Please check that your keys are immutable, and that you have used synchronization properly." +
-                    " If so, then please report this to commons-dev@jakarta.apache.org as a bug.");
-        }
-    }
-    
-    /**
-     * Subclass method to control removal of the least recently used entry from the map.
-     * <p>
-     * This method exists for subclasses to override. A subclass may wish to
-     * provide cleanup of resources when an entry is removed. For example:
-     * <pre>
-     * protected boolean removeLRU(LinkEntry entry) {
-     *   releaseResources(entry.getValue());  // release resources held by entry
-     *   return true;  // actually delete entry
-     * }
-     * </pre>
-     * <p>
-     * Alternatively, a subclass may choose to not remove the entry or selectively
-     * keep certain LRU entries. For example:
-     * <pre>
-     * protected boolean removeLRU(LinkEntry entry) {
-     *   if (entry.getKey().toString().startsWith("System.")) {
-     *     return false;  // entry not removed from LRUMap
-     *   } else {
-     *     return true;  // actually delete entry
-     *   }
-     * }
-     * </pre>
-     * The effect of returning false is dependent on the scanUntilRemovable flag.
-     * If the flag is true, the next LRU entry will be passed to this method and so on
-     * until one returns false and is removed, or every entry in the map has been passed.
-     * If the scanUntilRemovable flag is false, the map will exceed the maximum size.
-     * <p>
-     * NOTE: Commons Collections 3.0 passed the wrong entry to this method.
-     * This is fixed in version 3.1 onwards.
-     * 
-     * @param entry  the entry to be removed
-     */
-    protected boolean removeLRU(LinkEntry entry) {
-        return true;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns true if this map is full and no new mappings can be added.
-     *
-     * @return <code>true</code> if the map is full
-     */
-    public boolean isFull() {
-        return (size >= maxSize);
-    }
-
-    /**
-     * Gets the maximum size of the map (the bound).
-     *
-     * @return the maximum number of elements the map can hold
-     */
-    public int maxSize() {
-        return maxSize;
-    }
-
-    /**
-     * Whether this LRUMap will scan until a removable entry is found when the
-     * map is full.
-     *
-     * @return true if this map scans
-     * @since Commons Collections 3.1
-     */
-    public boolean isScanUntilRemovable() {
-        return scanUntilRemovable;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Clones the map without cloning the keys or values.
-     *
-     * @return a shallow clone
-     */
-    public Object clone() {
-        return super.clone();
-    }
-    
-    /**
-     * Write the map out using a custom routine.
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        doWriteObject(out);
-    }
-
-    /**
-     * Read the map in using a custom routine.
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        doReadObject(in);
-    }
-    
-    /**
-     * Writes the data necessary for <code>put()</code> to work in deserialization.
-     */
-    protected void doWriteObject(ObjectOutputStream out) throws IOException {
-        out.writeInt(maxSize);
-        super.doWriteObject(out);
-    }
-
-    /**
-     * Reads the data necessary for <code>put()</code> to work in the superclass.
-     */
-    protected void doReadObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        maxSize = in.readInt();
-        super.doReadObject(in);
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/LazyMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/LazyMap.java
deleted file mode 100755
index 64cbfe3..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/LazyMap.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Map;
-
-import org.apache.commons.collections.Factory;
-import org.apache.commons.collections.Transformer;
-import org.apache.commons.collections.functors.FactoryTransformer;
-
-/**
- * Decorates another <code>Map</code> to create objects in the map on demand.
- * <p>
- * When the {@link #get(Object)} method is called with a key that does not
- * exist in the map, the factory is used to create the object. The created
- * object will be added to the map using the requested key.
- * <p>
- * For instance:
- * <pre>
- * Factory factory = new Factory() {
- *     public Object create() {
- *         return new Date();
- *     }
- * }
- * Map lazy = Lazy.map(new HashMap(), factory);
- * Object obj = lazy.get("NOW");
- * </pre>
- *
- * After the above code is executed, <code>obj</code> will contain
- * a new <code>Date</code> instance. Furthermore, that <code>Date</code>
- * instance is mapped to the "NOW" key in the map.
- * <p>
- * <strong>Note that LazyMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. The simplest approach is to wrap this map
- * using {@link java.util.Collections#synchronizedMap(Map)}. This class may throw 
- * exceptions when accessed by concurrent threads without synchronization.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:29 $
- * 
- * @author Stephen Colebourne
- * @author Paul Jack
- */
-public class LazyMap
-        extends AbstractMapDecorator
-        implements Map, Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 7990956402564206740L;
-
-    /** The factory to use to construct elements */
-    protected final Transformer factory;
-
-    /**
-     * Factory method to create a lazily instantiated map.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param factory  the factory to use, must not be null
-     * @throws IllegalArgumentException if map or factory is null
-     */
-    public static Map decorate(Map map, Factory factory) {
-        return new LazyMap(map, factory);
-    }
-
-    /**
-     * Factory method to create a lazily instantiated map.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param factory  the factory to use, must not be null
-     * @throws IllegalArgumentException if map or factory is null
-     */
-    public static Map decorate(Map map, Transformer factory) {
-        return new LazyMap(map, factory);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param factory  the factory to use, must not be null
-     * @throws IllegalArgumentException if map or factory is null
-     */
-    protected LazyMap(Map map, Factory factory) {
-        super(map);
-        if (factory == null) {
-            throw new IllegalArgumentException("Factory must not be null");
-        }
-        this.factory = FactoryTransformer.getInstance(factory);
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param factory  the factory to use, must not be null
-     * @throws IllegalArgumentException if map or factory is null
-     */
-    protected LazyMap(Map map, Transformer factory) {
-        super(map);
-        if (factory == null) {
-            throw new IllegalArgumentException("Factory must not be null");
-        }
-        this.factory = factory;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the map out using a custom routine.
-     * 
-     * @param out  the output stream
-     * @throws IOException
-     * @since Commons Collections 3.1
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeObject(map);
-    }
-
-    /**
-     * Read the map in using a custom routine.
-     * 
-     * @param in  the input stream
-     * @throws IOException
-     * @throws ClassNotFoundException
-     * @since Commons Collections 3.1
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        map = (Map) in.readObject();
-    }
-
-    //-----------------------------------------------------------------------
-    public Object get(Object key) {
-        // create value for key if key is not currently in the map
-        if (map.containsKey(key) == false) {
-            Object value = factory.transform(key);
-            map.put(key, value);
-            return value;
-        }
-        return map.get(key);
-    }
-
-    // no need to wrap keySet, entrySet or values as they are views of
-    // existing map entries - you can't do a map-style get on them.
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/LazySortedMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/LazySortedMap.java
deleted file mode 100755
index 6b74274..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/LazySortedMap.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.util.Comparator;
-import java.util.SortedMap;
-
-import org.apache.commons.collections.Factory;
-import org.apache.commons.collections.Transformer;
-
-/**
- * Decorates another <code>SortedMap</code> to create objects in the map on demand.
- * <p>
- * When the {@link #get(Object)} method is called with a key that does not
- * exist in the map, the factory is used to create the object. The created
- * object will be added to the map using the requested key.
- * <p>
- * For instance:
- * <pre>
- * Factory factory = new Factory() {
- *     public Object create() {
- *         return new Date();
- *     }
- * }
- * SortedMap lazy = Lazy.sortedMap(new HashMap(), factory);
- * Object obj = lazy.get("NOW");
- * </pre>
- *
- * After the above code is executed, <code>obj</code> will contain
- * a new <code>Date</code> instance. Furthermore, that <code>Date</code>
- * instance is mapped to the "NOW" key in the map.
- * <p>
- * <strong>Note that LazySortedMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. The simplest approach is to wrap this map
- * using {@link java.util.Collections#synchronizedSortedMap}. This class may throw 
- * exceptions when accessed by concurrent threads without synchronization.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- * 
- * @author Stephen Colebourne
- * @author Paul Jack
- */
-public class LazySortedMap
-        extends LazyMap
-        implements SortedMap {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 2715322183617658933L;
-
-    /**
-     * Factory method to create a lazily instantiated sorted map.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param factory  the factory to use, must not be null
-     * @throws IllegalArgumentException if map or factory is null
-     */
-    public static SortedMap decorate(SortedMap map, Factory factory) {
-        return new LazySortedMap(map, factory);
-    }
-
-    /**
-     * Factory method to create a lazily instantiated sorted map.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param factory  the factory to use, must not be null
-     * @throws IllegalArgumentException if map or factory is null
-     */
-    public static SortedMap decorate(SortedMap map, Transformer factory) {
-        return new LazySortedMap(map, factory);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param factory  the factory to use, must not be null
-     * @throws IllegalArgumentException if map or factory is null
-     */
-    protected LazySortedMap(SortedMap map, Factory factory) {
-        super(map, factory);
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param factory  the factory to use, must not be null
-     * @throws IllegalArgumentException if map or factory is null
-     */
-    protected LazySortedMap(SortedMap map, Transformer factory) {
-        super(map, factory);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the map being decorated.
-     * 
-     * @return the decorated map
-     */
-    protected SortedMap getSortedMap() {
-        return (SortedMap) map;
-    }
-
-    //-----------------------------------------------------------------------
-    public Object firstKey() {
-        return getSortedMap().firstKey();
-    }
-
-    public Object lastKey() {
-        return getSortedMap().lastKey();
-    }
-
-    public Comparator comparator() {
-        return getSortedMap().comparator();
-    }
-
-    public SortedMap subMap(Object fromKey, Object toKey) {
-        SortedMap map = getSortedMap().subMap(fromKey, toKey);
-        return new LazySortedMap(map, factory);
-    }
-
-    public SortedMap headMap(Object toKey) {
-        SortedMap map = getSortedMap().headMap(toKey);
-        return new LazySortedMap(map, factory);
-    }
-
-    public SortedMap tailMap(Object fromKey) {
-        SortedMap map = getSortedMap().tailMap(fromKey);
-        return new LazySortedMap(map, factory);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/LinkedMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/LinkedMap.java
deleted file mode 100755
index 10f805f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/LinkedMap.java
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.AbstractList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-
-import org.apache.commons.collections.iterators.UnmodifiableIterator;
-import org.apache.commons.collections.iterators.UnmodifiableListIterator;
-import org.apache.commons.collections.list.UnmodifiableList;
-
-/**
- * A <code>Map</code> implementation that maintains the order of the entries.
- * In this implementation order is maintained by original insertion.
- * <p>
- * This implementation improves on the JDK1.4 LinkedHashMap by adding the 
- * {@link org.apache.commons.collections.MapIterator MapIterator}
- * functionality, additional convenience methods and allowing
- * bidirectional iteration. It also implements <code>OrderedMap</code>.
- * In addition, non-interface methods are provided to access the map by index.
- * <p>
- * The <code>orderedMapIterator()</code> method provides direct access to a
- * bidirectional iterator. The iterators from the other views can also be cast
- * to <code>OrderedIterator</code> if required.
- * <p>
- * All the available iterators can be reset back to the start by casting to
- * <code>ResettableIterator</code> and calling <code>reset()</code>.
- * <p>
- * The implementation is also designed to be subclassed, with lots of useful
- * methods exposed.
- * <p>
- * <strong>Note that LinkedMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. The simplest approach is to wrap this map
- * using {@link java.util.Collections#synchronizedMap(Map)}. This class may throw 
- * exceptions when accessed by concurrent threads without synchronization.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:29 $
- *
- * @author Stephen Colebourne
- */
-public class LinkedMap
-        extends AbstractLinkedMap implements Serializable, Cloneable {
-
-    /** Serialisation version */
-    private static final long serialVersionUID = 9077234323521161066L;
-    
-    /**
-     * Constructs a new empty map with default size and load factor.
-     */
-    public LinkedMap() {
-        super(DEFAULT_CAPACITY, DEFAULT_LOAD_FACTOR, DEFAULT_THRESHOLD);
-    }
-
-    /**
-     * Constructs a new, empty map with the specified initial capacity. 
-     *
-     * @param initialCapacity  the initial capacity
-     * @throws IllegalArgumentException if the initial capacity is less than one
-     */
-    public LinkedMap(int initialCapacity) {
-        super(initialCapacity);
-    }
-
-    /**
-     * Constructs a new, empty map with the specified initial capacity and
-     * load factor. 
-     *
-     * @param initialCapacity  the initial capacity
-     * @param loadFactor  the load factor
-     * @throws IllegalArgumentException if the initial capacity is less than one
-     * @throws IllegalArgumentException if the load factor is less than zero
-     */
-    public LinkedMap(int initialCapacity, float loadFactor) {
-        super(initialCapacity, loadFactor);
-    }
-
-    /**
-     * Constructor copying elements from another map.
-     *
-     * @param map  the map to copy
-     * @throws NullPointerException if the map is null
-     */
-    public LinkedMap(Map map) {
-        super(map);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Clones the map without cloning the keys or values.
-     *
-     * @return a shallow clone
-     */
-    public Object clone() {
-        return super.clone();
-    }
-    
-    /**
-     * Write the map out using a custom routine.
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        doWriteObject(out);
-    }
-
-    /**
-     * Read the map in using a custom routine.
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        doReadObject(in);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the key at the specified index.
-     * 
-     * @param index  the index to retrieve
-     * @return the key at the specified index
-     * @throws IndexOutOfBoundsException if the index is invalid
-     */
-    public Object get(int index) {
-        return getEntry(index).getKey();
-    }
-    
-    /**
-     * Gets the value at the specified index.
-     * 
-     * @param index  the index to retrieve
-     * @return the key at the specified index
-     * @throws IndexOutOfBoundsException if the index is invalid
-     */
-    public Object getValue(int index) {
-        return getEntry(index).getValue();
-    }
-    
-    /**
-     * Gets the index of the specified key.
-     * 
-     * @param key  the key to find the index of
-     * @return the index, or -1 if not found
-     */
-    public int indexOf(Object key) {
-        key = convertKey(key);
-        int i = 0;
-        for (LinkEntry entry = header.after; entry != header; entry = entry.after, i++) {
-            if (isEqualKey(key, entry.key)) {
-                return i;
-            }
-        }
-        return -1;
-    }
-
-    /**
-     * Removes the element at the specified index.
-     *
-     * @param index  the index of the object to remove
-     * @return the previous value corresponding the <code>key</code>,
-     *  or <code>null</code> if none existed
-     * @throws IndexOutOfBoundsException if the index is invalid
-     */
-    public Object remove(int index) {
-        return remove(get(index));
-    }
-
-    /**
-     * Gets an unmodifiable List view of the keys.
-     * <p>
-     * The returned list is unmodifiable because changes to the values of
-     * the list (using {@link java.util.ListIterator#set(Object)}) will
-     * effectively remove the value from the list and reinsert that value at
-     * the end of the list, which is an unexpected side effect of changing the
-     * value of a list.  This occurs because changing the key, changes when the
-     * mapping is added to the map and thus where it appears in the list.
-     * <p>
-     * An alternative to this method is to use {@link #keySet()}.
-     *
-     * @see #keySet()
-     * @return The ordered list of keys.  
-     */
-    public List asList() {
-        return new LinkedMapList(this);
-    }
-
-    /**
-     * List view of map.
-     */
-    static class LinkedMapList extends AbstractList {
-        
-        final LinkedMap parent;
-        
-        LinkedMapList(LinkedMap parent) {
-            this.parent = parent;
-        }
-        
-        public int size() {
-            return parent.size();
-        }
-    
-        public Object get(int index) {
-            return parent.get(index);
-        }
-        
-        public boolean contains(Object obj) {
-            return parent.containsKey(obj);
-        }
-
-        public int indexOf(Object obj) {
-            return parent.indexOf(obj);
-        }
-        
-        public int lastIndexOf(Object obj) {
-            return parent.indexOf(obj);
-        }
-        
-        public boolean containsAll(Collection coll) {
-            return parent.keySet().containsAll(coll);
-        }
-        
-        public Object remove(int index) {
-            throw new UnsupportedOperationException();
-        }
-        
-        public boolean remove(Object obj) {
-            throw new UnsupportedOperationException();
-        }
-        
-        public boolean removeAll(Collection coll) {
-            throw new UnsupportedOperationException();
-        }
-        
-        public boolean retainAll(Collection coll) {
-            throw new UnsupportedOperationException();
-        }
-        
-        public void clear() {
-            throw new UnsupportedOperationException();
-        }
-        
-        public Object[] toArray() {
-            return parent.keySet().toArray();
-        }
-
-        public Object[] toArray(Object[] array) {
-            return parent.keySet().toArray(array);
-        }
-        
-        public Iterator iterator() {
-            return UnmodifiableIterator.decorate(parent.keySet().iterator());
-        }
-        
-        public ListIterator listIterator() {
-            return UnmodifiableListIterator.decorate(super.listIterator());
-        }
-        
-        public ListIterator listIterator(int fromIndex) {
-            return UnmodifiableListIterator.decorate(super.listIterator(fromIndex));
-        }
-        
-        public List subList(int fromIndexInclusive, int toIndexExclusive) {
-            return UnmodifiableList.decorate(super.subList(fromIndexInclusive, toIndexExclusive));
-        }
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/ListOrderedMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/ListOrderedMap.java
deleted file mode 100755
index 2afc37b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/ListOrderedMap.java
+++ /dev/null
@@ -1,710 +0,0 @@
-/*
- *  Copyright 2003-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.commons.collections.map;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.AbstractList;
-import java.util.AbstractSet;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.OrderedMap;
-import org.apache.commons.collections.OrderedMapIterator;
-import org.apache.commons.collections.ResettableIterator;
-import org.apache.commons.collections.iterators.AbstractIteratorDecorator;
-import org.apache.commons.collections.keyvalue.AbstractMapEntry;
-import org.apache.commons.collections.list.UnmodifiableList;
-
-/**
- * Decorates a <code>Map</code> to ensure that the order of addition is retained
- * using a <code>List</code> to maintain order.
- * <p>
- * The order will be used via the iterators and toArray methods on the views.
- * The order is also returned by the <code>MapIterator</code>.
- * The <code>orderedMapIterator()</code> method accesses an iterator that can
- * iterate both forwards and backwards through the map.
- * In addition, non-interface methods are provided to access the map by index.
- * <p>
- * If an object is added to the Map for a second time, it will remain in the
- * original position in the iteration.
- * <p>
- * <strong>Note that ListOrderedMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. The simplest approach is to wrap this map
- * using {@link java.util.Collections#synchronizedMap(Map)}. This class may throw 
- * exceptions when accessed by concurrent threads without synchronization.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- * 
- * @author Henri Yandell
- * @author Stephen Colebourne
- * @author Matt Benson
- */
-public class ListOrderedMap
-        extends AbstractMapDecorator
-        implements OrderedMap, Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 2728177751851003750L;
-
-    /** Internal list to hold the sequence of objects */
-    protected final List insertOrder = new ArrayList();
-
-    /**
-     * Factory method to create an ordered map.
-     * <p>
-     * An <code>ArrayList</code> is used to retain order.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if map is null
-     */
-    public static OrderedMap decorate(Map map) {
-        return new ListOrderedMap(map);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructs a new empty <code>ListOrderedMap</code> that decorates
-     * a <code>HashMap</code>.
-     * 
-     * @since Commons Collections 3.1
-     */
-    public ListOrderedMap() {
-        this(new HashMap());
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if map is null
-     */
-    protected ListOrderedMap(Map map) {
-        super(map);
-        insertOrder.addAll(getMap().keySet());
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the map out using a custom routine.
-     * 
-     * @param out  the output stream
-     * @throws IOException
-     * @since Commons Collections 3.1
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeObject(map);
-    }
-
-    /**
-     * Read the map in using a custom routine.
-     * 
-     * @param in  the input stream
-     * @throws IOException
-     * @throws ClassNotFoundException
-     * @since Commons Collections 3.1
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        map = (Map) in.readObject();
-    }
-
-    // Implement OrderedMap
-    //-----------------------------------------------------------------------
-    public MapIterator mapIterator() {
-        return orderedMapIterator();
-    }
-
-    public OrderedMapIterator orderedMapIterator() {
-        return new ListOrderedMapIterator(this);
-    }
-
-    /**
-     * Gets the first key in this map by insert order.
-     *
-     * @return the first key currently in this map
-     * @throws NoSuchElementException if this map is empty
-     */
-    public Object firstKey() {
-        if (size() == 0) {
-            throw new NoSuchElementException("Map is empty");
-        }
-        return insertOrder.get(0);
-    }
-
-    /**
-     * Gets the last key in this map by insert order.
-     *
-     * @return the last key currently in this map
-     * @throws NoSuchElementException if this map is empty
-     */
-    public Object lastKey() {
-        if (size() == 0) {
-            throw new NoSuchElementException("Map is empty");
-        }
-        return insertOrder.get(size() - 1);
-    }
-    
-    /**
-     * Gets the next key to the one specified using insert order.
-     * This method performs a list search to find the key and is O(n).
-     * 
-     * @param key  the key to find previous for
-     * @return the next key, null if no match or at start
-     */
-    public Object nextKey(Object key) {
-        int index = insertOrder.indexOf(key);
-        if (index >= 0 && index < size() - 1) {
-            return insertOrder.get(index + 1);
-        }
-        return null;
-    }
-
-    /**
-     * Gets the previous key to the one specified using insert order.
-     * This method performs a list search to find the key and is O(n).
-     * 
-     * @param key  the key to find previous for
-     * @return the previous key, null if no match or at start
-     */
-    public Object previousKey(Object key) {
-        int index = insertOrder.indexOf(key);
-        if (index > 0) {
-            return insertOrder.get(index - 1);
-        }
-        return null;
-    }
-
-    //-----------------------------------------------------------------------
-    public Object put(Object key, Object value) {
-        if (getMap().containsKey(key)) {
-            // re-adding doesn't change order
-            return getMap().put(key, value);
-        } else {
-            // first add, so add to both map and list
-            Object result = getMap().put(key, value);
-            insertOrder.add(key);
-            return result;
-        }
-    }
-
-    public void putAll(Map map) {
-        for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
-            Map.Entry entry = (Map.Entry) it.next();
-            put(entry.getKey(), entry.getValue());
-        }
-    }
-
-    public Object remove(Object key) {
-        Object result = getMap().remove(key);
-        insertOrder.remove(key);
-        return result;
-    }
-
-    public void clear() {
-        getMap().clear();
-        insertOrder.clear();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets a view over the keys in the map.
-     * <p>
-     * The Collection will be ordered by object insertion into the map.
-     *
-     * @see #keyList()
-     * @return the fully modifiable collection view over the keys
-     */
-    public Set keySet() {
-        return new KeySetView(this);
-    }
-
-    /**
-     * Gets a view over the keys in the map as a List.
-     * <p>
-     * The List will be ordered by object insertion into the map.
-     * The List is unmodifiable.
-     *
-     * @see #keySet()
-     * @return the unmodifiable list view over the keys
-     * @since Commons Collections 3.2
-     */
-    public List keyList() {
-        return UnmodifiableList.decorate(insertOrder);
-    }
-
-    /**
-     * Gets a view over the values in the map.
-     * <p>
-     * The Collection will be ordered by object insertion into the map.
-     * <p>
-     * From Commons Collections 3.2, this Collection can be cast
-     * to a list, see {@link #valueList()}
-     *
-     * @see #valueList()
-     * @return the fully modifiable collection view over the values
-     */
-    public Collection values() {
-        return new ValuesView(this);
-    }
-
-    /**
-     * Gets a view over the values in the map as a List.
-     * <p>
-     * The List will be ordered by object insertion into the map.
-     * The List supports remove and set, but does not support add.
-     *
-     * @see #values()
-     * @return the partially modifiable list view over the values
-     * @since Commons Collections 3.2
-     */
-    public List valueList() {
-        return new ValuesView(this);
-    }
-
-    /**
-     * Gets a view over the entries in the map.
-     * <p>
-     * The Set will be ordered by object insertion into the map.
-     *
-     * @return the fully modifiable set view over the entries
-     */
-    public Set entrySet() {
-        return new EntrySetView(this, this.insertOrder);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Returns the Map as a string.
-     * 
-     * @return the Map as a String
-     */
-    public String toString() {
-        if (isEmpty()) {
-            return "{}";
-        }
-        StringBuffer buf = new StringBuffer();
-        buf.append('{');
-        boolean first = true;
-        Iterator it = entrySet().iterator();
-        while (it.hasNext()) {
-            Map.Entry entry = (Map.Entry) it.next();
-            Object key = entry.getKey();
-            Object value = entry.getValue();
-            if (first) {
-                first = false;
-            } else {
-                buf.append(", ");
-            }
-            buf.append(key == this ? "(this Map)" : key);
-            buf.append('=');
-            buf.append(value == this ? "(this Map)" : value);
-        }
-        buf.append('}');
-        return buf.toString();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the key at the specified index.
-     * 
-     * @param index  the index to retrieve
-     * @return the key at the specified index
-     * @throws IndexOutOfBoundsException if the index is invalid
-     */
-    public Object get(int index) {
-        return insertOrder.get(index);
-    }
-    
-    /**
-     * Gets the value at the specified index.
-     * 
-     * @param index  the index to retrieve
-     * @return the key at the specified index
-     * @throws IndexOutOfBoundsException if the index is invalid
-     */
-    public Object getValue(int index) {
-        return get(insertOrder.get(index));
-    }
-    
-    /**
-     * Gets the index of the specified key.
-     * 
-     * @param key  the key to find the index of
-     * @return the index, or -1 if not found
-     */
-    public int indexOf(Object key) {
-        return insertOrder.indexOf(key);
-    }
-
-    /**
-     * Sets the value at the specified index.
-     *
-     * @param index  the index of the value to set
-     * @return the previous value at that index
-     * @throws IndexOutOfBoundsException if the index is invalid
-     * @since Commons Collections 3.2
-     */
-    public Object setValue(int index, Object value) {
-        Object key = insertOrder.get(index);
-        return put(key, value);
-    }
-
-    /**
-     * Puts a key-value mapping into the map at the specified index.
-     * <p>
-     * If the map already contains the key, then the original mapping
-     * is removed and the new mapping added at the specified index.
-     * The remove may change the effect of the index. The index is
-     * always calculated relative to the original state of the map.
-     * <p>
-     * Thus the steps are: (1) remove the existing key-value mapping,
-     * then (2) insert the new key-value mapping at the position it
-     * would have been inserted had the remove not ocurred.
-     *
-     * @param index  the index at which the mapping should be inserted
-     * @param key  the key
-     * @param value  the value
-     * @return the value previously mapped to the key
-     * @throws IndexOutOfBoundsException if the index is out of range
-     * @since Commons Collections 3.2
-     */
-    public Object put(int index, Object key, Object value) {
-        Map m = getMap();
-        if (m.containsKey(key)) {
-            Object result = m.remove(key);
-            int pos = insertOrder.indexOf(key);
-            insertOrder.remove(pos);
-            if (pos < index) {
-                index--;
-            }
-            insertOrder.add(index, key);
-            m.put(key, value);
-            return result;
-        } else {
-            insertOrder.add(index, key);
-            m.put(key, value);
-            return null;
-        }
-    }
-
-    /**
-     * Removes the element at the specified index.
-     *
-     * @param index  the index of the object to remove
-     * @return the removed value, or <code>null</code> if none existed
-     * @throws IndexOutOfBoundsException if the index is invalid
-     */
-    public Object remove(int index) {
-        return remove(get(index));
-    }
-
-    /**
-     * Gets an unmodifiable List view of the keys which changes as the map changes.
-     * <p>
-     * The returned list is unmodifiable because changes to the values of
-     * the list (using {@link java.util.ListIterator#set(Object)}) will
-     * effectively remove the value from the list and reinsert that value at
-     * the end of the list, which is an unexpected side effect of changing the
-     * value of a list.  This occurs because changing the key, changes when the
-     * mapping is added to the map and thus where it appears in the list.
-     * <p>
-     * An alternative to this method is to use the better named
-     * {@link #keyList()} or {@link #keySet()}.
-     *
-     * @see #keyList()
-     * @see #keySet()
-     * @return The ordered list of keys.  
-     */
-    public List asList() {
-        return keyList();
-    }
-
-    //-----------------------------------------------------------------------
-    static class ValuesView extends AbstractList {
-        private final ListOrderedMap parent;
-
-        ValuesView(ListOrderedMap parent) {
-            super();
-            this.parent = parent;
-        }
-
-        public int size() {
-            return this.parent.size();
-        }
-
-        public boolean contains(Object value) {
-            return this.parent.containsValue(value);
-        }
-
-        public void clear() {
-            this.parent.clear();
-        }
-
-        public Iterator iterator() {
-            return new AbstractIteratorDecorator(parent.entrySet().iterator()) {
-                public Object next() {
-                    return ((Map.Entry) iterator.next()).getValue();
-                }
-            };
-        }
-
-        public Object get(int index) {
-            return this.parent.getValue(index);
-        }
-
-        public Object set(int index, Object value) {
-            return this.parent.setValue(index, value);
-        }
-
-        public Object remove(int index) {
-            return this.parent.remove(index);
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    static class KeySetView extends AbstractSet {
-        private final ListOrderedMap parent;
-
-        KeySetView(ListOrderedMap parent) {
-            super();
-            this.parent = parent;
-        }
-
-        public int size() {
-            return this.parent.size();
-        }
-
-        public boolean contains(Object value) {
-            return this.parent.containsKey(value);
-        }
-
-        public void clear() {
-            this.parent.clear();
-        }
-
-        public Iterator iterator() {
-            return new AbstractIteratorDecorator(parent.entrySet().iterator()) {
-                public Object next() {
-                    return ((Map.Entry) super.next()).getKey();
-                }
-            };
-        }
-    }
-
-    //-----------------------------------------------------------------------    
-    static class EntrySetView extends AbstractSet {
-        private final ListOrderedMap parent;
-        private final List insertOrder;
-        private Set entrySet;
-
-        public EntrySetView(ListOrderedMap parent, List insertOrder) {
-            super();
-            this.parent = parent;
-            this.insertOrder = insertOrder;
-        }
-
-        private Set getEntrySet() {
-            if (entrySet == null) {
-                entrySet = parent.getMap().entrySet();
-            }
-            return entrySet;
-        }
-        
-        public int size() {
-            return this.parent.size();
-        }
-        public boolean isEmpty() {
-            return this.parent.isEmpty();
-        }
-
-        public boolean contains(Object obj) {
-            return getEntrySet().contains(obj);
-        }
-
-        public boolean containsAll(Collection coll) {
-            return getEntrySet().containsAll(coll);
-        }
-
-        public boolean remove(Object obj) {
-            if (obj instanceof Map.Entry == false) {
-                return false;
-            }
-            if (getEntrySet().contains(obj)) {
-                Object key = ((Map.Entry) obj).getKey();
-                parent.remove(key);
-                return true;
-            }
-            return false;
-        }
-
-        public void clear() {
-            this.parent.clear();
-        }
-        
-        public boolean equals(Object obj) {
-            if (obj == this) {
-                return true;
-            }
-            return getEntrySet().equals(obj);
-        }
-        
-        public int hashCode() {
-            return getEntrySet().hashCode();
-        }
-
-        public String toString() {
-            return getEntrySet().toString();
-        }
-        
-        public Iterator iterator() {
-            return new ListOrderedIterator(parent, insertOrder);
-        }
-    }
-    
-    //-----------------------------------------------------------------------
-    static class ListOrderedIterator extends AbstractIteratorDecorator {
-        private final ListOrderedMap parent;
-        private Object last = null;
-        
-        ListOrderedIterator(ListOrderedMap parent, List insertOrder) {
-            super(insertOrder.iterator());
-            this.parent = parent;
-        }
-        
-        public Object next() {
-            last = super.next();
-            return new ListOrderedMapEntry(parent, last);
-        }
-
-        public void remove() {
-            super.remove();
-            parent.getMap().remove(last);
-        }
-    }
-    
-    //-----------------------------------------------------------------------
-    static class ListOrderedMapEntry extends AbstractMapEntry {
-        private final ListOrderedMap parent;
-        
-        ListOrderedMapEntry(ListOrderedMap parent, Object key) {
-            super(key, null);
-            this.parent = parent;
-        }
-        
-        public Object getValue() {
-            return parent.get(key);
-        }
-
-        public Object setValue(Object value) {
-            return parent.getMap().put(key, value);
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    static class ListOrderedMapIterator implements OrderedMapIterator, ResettableIterator {
-        private final ListOrderedMap parent;
-        private ListIterator iterator;
-        private Object last = null;
-        private boolean readable = false;
-        
-        ListOrderedMapIterator(ListOrderedMap parent) {
-            super();
-            this.parent = parent;
-            this.iterator = parent.insertOrder.listIterator();
-        }
-        
-        public boolean hasNext() {
-            return iterator.hasNext();
-        }
-        
-        public Object next() {
-            last = iterator.next();
-            readable = true;
-            return last;
-        }
-        
-        public boolean hasPrevious() {
-            return iterator.hasPrevious();
-        }
-        
-        public Object previous() {
-            last = iterator.previous();
-            readable = true;
-            return last;
-        }
-        
-        public void remove() {
-            if (readable == false) {
-                throw new IllegalStateException(AbstractHashedMap.REMOVE_INVALID);
-            }
-            iterator.remove();
-            parent.map.remove(last);
-            readable = false;
-        }
-        
-        public Object getKey() {
-            if (readable == false) {
-                throw new IllegalStateException(AbstractHashedMap.GETKEY_INVALID);
-            }
-            return last;
-        }
-
-        public Object getValue() {
-            if (readable == false) {
-                throw new IllegalStateException(AbstractHashedMap.GETVALUE_INVALID);
-            }
-            return parent.get(last);
-        }
-        
-        public Object setValue(Object value) {
-            if (readable == false) {
-                throw new IllegalStateException(AbstractHashedMap.SETVALUE_INVALID);
-            }
-            return parent.map.put(last, value);
-        }
-        
-        public void reset() {
-            iterator = parent.insertOrder.listIterator();
-            last = null;
-            readable = false;
-        }
-        
-        public String toString() {
-            if (readable == true) {
-                return "Iterator[" + getKey() + "=" + getValue() + "]";
-            } else {
-                return "Iterator[]";
-            }
-        }
-    }
-    
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/MultiKeyMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/MultiKeyMap.java
deleted file mode 100755
index f9e2e73..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/MultiKeyMap.java
+++ /dev/null
@@ -1,912 +0,0 @@
-/*
- *  Copyright 2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.collections.IterableMap;
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.keyvalue.MultiKey;
-
-/**
- * A <code>Map</code> implementation that uses multiple keys to map the value.
- * <p>
- * This class is the most efficient way to uses multiple keys to map to a value.
- * The best way to use this class is via the additional map-style methods.
- * These provide <code>get</code>, <code>containsKey</code>, <code>put</code> and
- * <code>remove</code> for individual keys which operate without extra object creation.
- * <p>
- * The additional methods are the main interface of this map.
- * As such, you will not normally hold this map in a variable of type <code>Map</code>.
- * <p>
- * The normal map methods take in and return a {@link MultiKey}.
- * If you try to use <code>put()</code> with any other object type a
- * <code>ClassCastException</code> is thrown. If you try to use <code>null</code> as
- * the key in <code>put()</code> a <code>NullPointerException</code> is thrown.
- * <p>
- * This map is implemented as a decorator of a <code>AbstractHashedMap</code> which
- * enables extra behaviour to be added easily.
- * <ul>
- * <li><code>MultiKeyMap.decorate(new LinkedMap())</code> creates an ordered map.
- * <li><code>MultiKeyMap.decorate(new LRUMap())</code> creates an least recently used map.
- * <li><code>MultiKeyMap.decorate(new ReferenceMap())</code> creates a garbage collector sensitive map.
- * </ul>
- * Note that <code>IdentityMap</code> and <code>ReferenceIdentityMap</code> are unsuitable
- * for use as the key comparison would work on the whole MultiKey, not the elements within.
- * <p>
- * As an example, consider a least recently used cache that uses a String airline code
- * and a Locale to lookup the airline's name:
- * <pre>
- * private MultiKeyMap cache = MultiKeyMap.decorate(new LRUMap(50));
- * 
- * public String getAirlineName(String code, String locale) {
- *   String name = (String) cache.get(code, locale);
- *   if (name == null) {
- *     name = getAirlineNameFromDB(code, locale);
- *     cache.put(code, locale, name);
- *   }
- *   return name;
- * }
- * </pre>
- * <p>
- * <strong>Note that MultiKeyMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. This class may throw exceptions when accessed
- * by concurrent threads without synchronization.
- *
- * @since Commons Collections 3.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:29 $
- *
- * @author Stephen Colebourne
- */
-public class MultiKeyMap
-        implements IterableMap, Serializable {
-
-    /** Serialisation version */
-    private static final long serialVersionUID = -1788199231038721040L;
-
-    /** The decorated map */
-    protected final AbstractHashedMap map;
-
-    //-----------------------------------------------------------------------
-    /**
-     * Decorates the specified map to add the MultiKeyMap API and fast query.
-     * The map must not be null and must be empty.
-     *
-     * @param map  the map to decorate, not null
-     * @throws IllegalArgumentException if the map is null or not empty
-     */
-    public static MultiKeyMap decorate(AbstractHashedMap map) {
-        if (map == null) {
-            throw new IllegalArgumentException("Map must not be null");
-        }
-        if (map.size() > 0) {
-            throw new IllegalArgumentException("Map must be empty");
-        }
-        return new MultiKeyMap(map);
-    }
-
-    //-----------------------------------------------------------------------    
-    /**
-     * Constructs a new MultiKeyMap that decorates a <code>HashedMap</code>.
-     */
-    public MultiKeyMap() {
-        super();
-        map = new HashedMap();
-    }
-
-    /**
-     * Constructor that decorates the specified map and is called from
-     * {@link #decorate(AbstractHashedMap)}.
-     * The map must not be null and should be empty or only contain valid keys.
-     * This constructor performs no validation.
-     *
-     * @param map  the map to decorate
-     */
-    protected MultiKeyMap(AbstractHashedMap map) {
-        super();
-        this.map = map;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the value mapped to the specified multi-key.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @return the mapped value, null if no match
-     */
-    public Object get(Object key1, Object key2) {
-        int hashCode = hash(key1, key2);
-        AbstractHashedMap.HashEntry entry = map.data[map.hashIndex(hashCode, map.data.length)];
-        while (entry != null) {
-            if (entry.hashCode == hashCode && isEqualKey(entry, key1, key2)) {
-                return entry.getValue();
-            }
-            entry = entry.next;
-        }
-        return null;
-    }
-
-    /**
-     * Checks whether the map contains the specified multi-key.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @return true if the map contains the key
-     */
-    public boolean containsKey(Object key1, Object key2) {
-        int hashCode = hash(key1, key2);
-        AbstractHashedMap.HashEntry entry = map.data[map.hashIndex(hashCode, map.data.length)];
-        while (entry != null) {
-            if (entry.hashCode == hashCode && isEqualKey(entry, key1, key2)) {
-                return true;
-            }
-            entry = entry.next;
-        }
-        return false;
-    }
-
-    /**
-     * Stores the value against the specified multi-key.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param value  the value to store
-     * @return the value previously mapped to this combined key, null if none
-     */
-    public Object put(Object key1, Object key2, Object value) {
-        int hashCode = hash(key1, key2);
-        int index = map.hashIndex(hashCode, map.data.length);
-        AbstractHashedMap.HashEntry entry = map.data[index];
-        while (entry != null) {
-            if (entry.hashCode == hashCode && isEqualKey(entry, key1, key2)) {
-                Object oldValue = entry.getValue();
-                map.updateEntry(entry, value);
-                return oldValue;
-            }
-            entry = entry.next;
-        }
-        
-        map.addMapping(index, hashCode, new MultiKey(key1, key2), value);
-        return null;
-    }
-
-    /**
-     * Removes the specified multi-key from this map.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @return the value mapped to the removed key, null if key not in map
-     */
-    public Object remove(Object key1, Object key2) {
-        int hashCode = hash(key1, key2);
-        int index = map.hashIndex(hashCode, map.data.length);
-        AbstractHashedMap.HashEntry entry = map.data[index];
-        AbstractHashedMap.HashEntry previous = null;
-        while (entry != null) {
-            if (entry.hashCode == hashCode && isEqualKey(entry, key1, key2)) {
-                Object oldValue = entry.getValue();
-                map.removeMapping(entry, index, previous);
-                return oldValue;
-            }
-            previous = entry;
-            entry = entry.next;
-        }
-        return null;
-    }
-
-    /**
-     * Gets the hash code for the specified multi-key.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @return the hash code
-     */
-    protected int hash(Object key1, Object key2) {
-        int h = 0;
-        if (key1 != null) {
-            h ^= key1.hashCode();
-        }
-        if (key2 != null) {
-            h ^= key2.hashCode();
-        }
-        h += ~(h << 9);
-        h ^=  (h >>> 14);
-        h +=  (h << 4);
-        h ^=  (h >>> 10);
-        return h;
-    }
-
-    /**
-     * Is the key equal to the combined key.
-     * 
-     * @param entry  the entry to compare to
-     * @param key1  the first key
-     * @param key2  the second key
-     * @return true if the key matches
-     */
-    protected boolean isEqualKey(AbstractHashedMap.HashEntry entry, Object key1, Object key2) {
-        MultiKey multi = (MultiKey) entry.getKey();
-        return
-            multi.size() == 2 &&
-            (key1 == null ? multi.getKey(0) == null : key1.equals(multi.getKey(0))) &&
-            (key2 == null ? multi.getKey(1) == null : key2.equals(multi.getKey(1)));
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the value mapped to the specified multi-key.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @return the mapped value, null if no match
-     */
-    public Object get(Object key1, Object key2, Object key3) {
-        int hashCode = hash(key1, key2, key3);
-        AbstractHashedMap.HashEntry entry = map.data[map.hashIndex(hashCode, map.data.length)];
-        while (entry != null) {
-            if (entry.hashCode == hashCode && isEqualKey(entry, key1, key2, key3)) {
-                return entry.getValue();
-            }
-            entry = entry.next;
-        }
-        return null;
-    }
-
-    /**
-     * Checks whether the map contains the specified multi-key.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @return true if the map contains the key
-     */
-    public boolean containsKey(Object key1, Object key2, Object key3) {
-        int hashCode = hash(key1, key2, key3);
-        AbstractHashedMap.HashEntry entry = map.data[map.hashIndex(hashCode, map.data.length)];
-        while (entry != null) {
-            if (entry.hashCode == hashCode && isEqualKey(entry, key1, key2, key3)) {
-                return true;
-            }
-            entry = entry.next;
-        }
-        return false;
-    }
-
-    /**
-     * Stores the value against the specified multi-key.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @param value  the value to store
-     * @return the value previously mapped to this combined key, null if none
-     */
-    public Object put(Object key1, Object key2, Object key3, Object value) {
-        int hashCode = hash(key1, key2, key3);
-        int index = map.hashIndex(hashCode, map.data.length);
-        AbstractHashedMap.HashEntry entry = map.data[index];
-        while (entry != null) {
-            if (entry.hashCode == hashCode && isEqualKey(entry, key1, key2, key3)) {
-                Object oldValue = entry.getValue();
-                map.updateEntry(entry, value);
-                return oldValue;
-            }
-            entry = entry.next;
-        }
-        
-        map.addMapping(index, hashCode, new MultiKey(key1, key2, key3), value);
-        return null;
-    }
-
-    /**
-     * Removes the specified multi-key from this map.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @return the value mapped to the removed key, null if key not in map
-     */
-    public Object remove(Object key1, Object key2, Object key3) {
-        int hashCode = hash(key1, key2, key3);
-        int index = map.hashIndex(hashCode, map.data.length);
-        AbstractHashedMap.HashEntry entry = map.data[index];
-        AbstractHashedMap.HashEntry previous = null;
-        while (entry != null) {
-            if (entry.hashCode == hashCode && isEqualKey(entry, key1, key2, key3)) {
-                Object oldValue = entry.getValue();
-                map.removeMapping(entry, index, previous);
-                return oldValue;
-            }
-            previous = entry;
-            entry = entry.next;
-        }
-        return null;
-    }
-
-    /**
-     * Gets the hash code for the specified multi-key.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @return the hash code
-     */
-    protected int hash(Object key1, Object key2, Object key3) {
-        int h = 0;
-        if (key1 != null) {
-            h ^= key1.hashCode();
-        }
-        if (key2 != null) {
-            h ^= key2.hashCode();
-        }
-        if (key3 != null) {
-            h ^= key3.hashCode();
-        }
-        h += ~(h << 9);
-        h ^=  (h >>> 14);
-        h +=  (h << 4);
-        h ^=  (h >>> 10);
-        return h;
-    }
-
-    /**
-     * Is the key equal to the combined key.
-     * 
-     * @param entry  the entry to compare to
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @return true if the key matches
-     */
-    protected boolean isEqualKey(AbstractHashedMap.HashEntry entry, Object key1, Object key2, Object key3) {
-        MultiKey multi = (MultiKey) entry.getKey();
-        return
-            multi.size() == 3 &&
-            (key1 == null ? multi.getKey(0) == null : key1.equals(multi.getKey(0))) &&
-            (key2 == null ? multi.getKey(1) == null : key2.equals(multi.getKey(1))) &&
-            (key3 == null ? multi.getKey(2) == null : key3.equals(multi.getKey(2)));
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the value mapped to the specified multi-key.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @param key4  the fourth key
-     * @return the mapped value, null if no match
-     */
-    public Object get(Object key1, Object key2, Object key3, Object key4) {
-        int hashCode = hash(key1, key2, key3, key4);
-        AbstractHashedMap.HashEntry entry = map.data[map.hashIndex(hashCode, map.data.length)];
-        while (entry != null) {
-            if (entry.hashCode == hashCode && isEqualKey(entry, key1, key2, key3, key4)) {
-                return entry.getValue();
-            }
-            entry = entry.next;
-        }
-        return null;
-    }
-
-    /**
-     * Checks whether the map contains the specified multi-key.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @param key4  the fourth key
-     * @return true if the map contains the key
-     */
-    public boolean containsKey(Object key1, Object key2, Object key3, Object key4) {
-        int hashCode = hash(key1, key2, key3, key4);
-        AbstractHashedMap.HashEntry entry = map.data[map.hashIndex(hashCode, map.data.length)];
-        while (entry != null) {
-            if (entry.hashCode == hashCode && isEqualKey(entry, key1, key2, key3, key4)) {
-                return true;
-            }
-            entry = entry.next;
-        }
-        return false;
-    }
-
-    /**
-     * Stores the value against the specified multi-key.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @param key4  the fourth key
-     * @param value  the value to store
-     * @return the value previously mapped to this combined key, null if none
-     */
-    public Object put(Object key1, Object key2, Object key3, Object key4, Object value) {
-        int hashCode = hash(key1, key2, key3, key4);
-        int index = map.hashIndex(hashCode, map.data.length);
-        AbstractHashedMap.HashEntry entry = map.data[index];
-        while (entry != null) {
-            if (entry.hashCode == hashCode && isEqualKey(entry, key1, key2, key3, key4)) {
-                Object oldValue = entry.getValue();
-                map.updateEntry(entry, value);
-                return oldValue;
-            }
-            entry = entry.next;
-        }
-        
-        map.addMapping(index, hashCode, new MultiKey(key1, key2, key3, key4), value);
-        return null;
-    }
-
-    /**
-     * Removes the specified multi-key from this map.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @param key4  the fourth key
-     * @return the value mapped to the removed key, null if key not in map
-     */
-    public Object remove(Object key1, Object key2, Object key3, Object key4) {
-        int hashCode = hash(key1, key2, key3, key4);
-        int index = map.hashIndex(hashCode, map.data.length);
-        AbstractHashedMap.HashEntry entry = map.data[index];
-        AbstractHashedMap.HashEntry previous = null;
-        while (entry != null) {
-            if (entry.hashCode == hashCode && isEqualKey(entry, key1, key2, key3, key4)) {
-                Object oldValue = entry.getValue();
-                map.removeMapping(entry, index, previous);
-                return oldValue;
-            }
-            previous = entry;
-            entry = entry.next;
-        }
-        return null;
-    }
-
-    /**
-     * Gets the hash code for the specified multi-key.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @param key4  the fourth key
-     * @return the hash code
-     */
-    protected int hash(Object key1, Object key2, Object key3, Object key4) {
-        int h = 0;
-        if (key1 != null) {
-            h ^= key1.hashCode();
-        }
-        if (key2 != null) {
-            h ^= key2.hashCode();
-        }
-        if (key3 != null) {
-            h ^= key3.hashCode();
-        }
-        if (key4 != null) {
-            h ^= key4.hashCode();
-        }
-        h += ~(h << 9);
-        h ^=  (h >>> 14);
-        h +=  (h << 4);
-        h ^=  (h >>> 10);
-        return h;
-    }
-
-    /**
-     * Is the key equal to the combined key.
-     * 
-     * @param entry  the entry to compare to
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @param key4  the fourth key
-     * @return true if the key matches
-     */
-    protected boolean isEqualKey(AbstractHashedMap.HashEntry entry, Object key1, Object key2, Object key3, Object key4) {
-        MultiKey multi = (MultiKey) entry.getKey();
-        return
-            multi.size() == 4 &&
-            (key1 == null ? multi.getKey(0) == null : key1.equals(multi.getKey(0))) &&
-            (key2 == null ? multi.getKey(1) == null : key2.equals(multi.getKey(1))) &&
-            (key3 == null ? multi.getKey(2) == null : key3.equals(multi.getKey(2))) &&
-            (key4 == null ? multi.getKey(3) == null : key4.equals(multi.getKey(3)));
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the value mapped to the specified multi-key.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @param key4  the fourth key
-     * @param key5  the fifth key
-     * @return the mapped value, null if no match
-     */
-    public Object get(Object key1, Object key2, Object key3, Object key4, Object key5) {
-        int hashCode = hash(key1, key2, key3, key4, key5);
-        AbstractHashedMap.HashEntry entry = map.data[map.hashIndex(hashCode, map.data.length)];
-        while (entry != null) {
-            if (entry.hashCode == hashCode && isEqualKey(entry, key1, key2, key3, key4, key5)) {
-                return entry.getValue();
-            }
-            entry = entry.next;
-        }
-        return null;
-    }
-
-    /**
-     * Checks whether the map contains the specified multi-key.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @param key4  the fourth key
-     * @param key5  the fifth key
-     * @return true if the map contains the key
-     */
-    public boolean containsKey(Object key1, Object key2, Object key3, Object key4, Object key5) {
-        int hashCode = hash(key1, key2, key3, key4, key5);
-        AbstractHashedMap.HashEntry entry = map.data[map.hashIndex(hashCode, map.data.length)];
-        while (entry != null) {
-            if (entry.hashCode == hashCode && isEqualKey(entry, key1, key2, key3, key4, key5)) {
-                return true;
-            }
-            entry = entry.next;
-        }
-        return false;
-    }
-
-    /**
-     * Stores the value against the specified multi-key.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @param key4  the fourth key
-     * @param key5  the fifth key
-     * @param value  the value to store
-     * @return the value previously mapped to this combined key, null if none
-     */
-    public Object put(Object key1, Object key2, Object key3, Object key4, Object key5, Object value) {
-        int hashCode = hash(key1, key2, key3, key4, key5);
-        int index = map.hashIndex(hashCode, map.data.length);
-        AbstractHashedMap.HashEntry entry = map.data[index];
-        while (entry != null) {
-            if (entry.hashCode == hashCode && isEqualKey(entry, key1, key2, key3, key4, key5)) {
-                Object oldValue = entry.getValue();
-                map.updateEntry(entry, value);
-                return oldValue;
-            }
-            entry = entry.next;
-        }
-        
-        map.addMapping(index, hashCode, new MultiKey(key1, key2, key3, key4, key5), value);
-        return null;
-    }
-
-    /**
-     * Removes the specified multi-key from this map.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @param key4  the fourth key
-     * @param key5  the fifth key
-     * @return the value mapped to the removed key, null if key not in map
-     */
-    public Object remove(Object key1, Object key2, Object key3, Object key4, Object key5) {
-        int hashCode = hash(key1, key2, key3, key4, key5);
-        int index = map.hashIndex(hashCode, map.data.length);
-        AbstractHashedMap.HashEntry entry = map.data[index];
-        AbstractHashedMap.HashEntry previous = null;
-        while (entry != null) {
-            if (entry.hashCode == hashCode && isEqualKey(entry, key1, key2, key3, key4, key5)) {
-                Object oldValue = entry.getValue();
-                map.removeMapping(entry, index, previous);
-                return oldValue;
-            }
-            previous = entry;
-            entry = entry.next;
-        }
-        return null;
-    }
-
-    /**
-     * Gets the hash code for the specified multi-key.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @param key4  the fourth key
-     * @param key5  the fifth key
-     * @return the hash code
-     */
-    protected int hash(Object key1, Object key2, Object key3, Object key4, Object key5) {
-        int h = 0;
-        if (key1 != null) {
-            h ^= key1.hashCode();
-        }
-        if (key2 != null) {
-            h ^= key2.hashCode();
-        }
-        if (key3 != null) {
-            h ^= key3.hashCode();
-        }
-        if (key4 != null) {
-            h ^= key4.hashCode();
-        }
-        if (key5 != null) {
-            h ^= key5.hashCode();
-        }
-        h += ~(h << 9);
-        h ^=  (h >>> 14);
-        h +=  (h << 4);
-        h ^=  (h >>> 10);
-        return h;
-    }
-
-    /**
-     * Is the key equal to the combined key.
-     * 
-     * @param entry  the entry to compare to
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @param key4  the fourth key
-     * @param key5  the fifth key
-     * @return true if the key matches
-     */
-    protected boolean isEqualKey(AbstractHashedMap.HashEntry entry, Object key1, Object key2, Object key3, Object key4, Object key5) {
-        MultiKey multi = (MultiKey) entry.getKey();
-        return
-            multi.size() == 5 &&
-            (key1 == null ? multi.getKey(0) == null : key1.equals(multi.getKey(0))) &&
-            (key2 == null ? multi.getKey(1) == null : key2.equals(multi.getKey(1))) &&
-            (key3 == null ? multi.getKey(2) == null : key3.equals(multi.getKey(2))) &&
-            (key4 == null ? multi.getKey(3) == null : key4.equals(multi.getKey(3))) &&
-            (key5 == null ? multi.getKey(4) == null : key5.equals(multi.getKey(4)));
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Removes all mappings where the first key is that specified.
-     * <p>
-     * This method removes all the mappings where the <code>MultiKey</code>
-     * has one or more keys, and the first matches that specified.
-     * 
-     * @param key1  the first key
-     * @return true if any elements were removed
-     */
-    public boolean removeAll(Object key1) {
-        boolean modified = false;
-        MapIterator it = mapIterator();
-        while (it.hasNext()) {
-            MultiKey multi = (MultiKey) it.next();
-            if (multi.size() >= 1 &&
-                (key1 == null ? multi.getKey(0) == null : key1.equals(multi.getKey(0)))) {
-                it.remove();
-                modified = true;
-            }
-        }
-        return modified;
-    }
-
-    /**
-     * Removes all mappings where the first two keys are those specified.
-     * <p>
-     * This method removes all the mappings where the <code>MultiKey</code>
-     * has two or more keys, and the first two match those specified.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @return true if any elements were removed
-     */
-    public boolean removeAll(Object key1, Object key2) {
-        boolean modified = false;
-        MapIterator it = mapIterator();
-        while (it.hasNext()) {
-            MultiKey multi = (MultiKey) it.next();
-            if (multi.size() >= 2 &&
-                (key1 == null ? multi.getKey(0) == null : key1.equals(multi.getKey(0))) &&
-                (key2 == null ? multi.getKey(1) == null : key2.equals(multi.getKey(1)))) {
-                it.remove();
-                modified = true;
-            }
-        }
-        return modified;
-    }
-
-    /**
-     * Removes all mappings where the first three keys are those specified.
-     * <p>
-     * This method removes all the mappings where the <code>MultiKey</code>
-     * has three or more keys, and the first three match those specified.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @return true if any elements were removed
-     */
-    public boolean removeAll(Object key1, Object key2, Object key3) {
-        boolean modified = false;
-        MapIterator it = mapIterator();
-        while (it.hasNext()) {
-            MultiKey multi = (MultiKey) it.next();
-            if (multi.size() >= 3 &&
-                (key1 == null ? multi.getKey(0) == null : key1.equals(multi.getKey(0))) &&
-                (key2 == null ? multi.getKey(1) == null : key2.equals(multi.getKey(1))) &&
-                (key3 == null ? multi.getKey(2) == null : key3.equals(multi.getKey(2)))) {
-                it.remove();
-                modified = true;
-            }
-        }
-        return modified;
-    }
-
-    /**
-     * Removes all mappings where the first four keys are those specified.
-     * <p>
-     * This method removes all the mappings where the <code>MultiKey</code>
-     * has four or more keys, and the first four match those specified.
-     * 
-     * @param key1  the first key
-     * @param key2  the second key
-     * @param key3  the third key
-     * @param key4  the fourth key
-     * @return true if any elements were removed
-     */
-    public boolean removeAll(Object key1, Object key2, Object key3, Object key4) {
-        boolean modified = false;
-        MapIterator it = mapIterator();
-        while (it.hasNext()) {
-            MultiKey multi = (MultiKey) it.next();
-            if (multi.size() >= 4 &&
-                (key1 == null ? multi.getKey(0) == null : key1.equals(multi.getKey(0))) &&
-                (key2 == null ? multi.getKey(1) == null : key2.equals(multi.getKey(1))) &&
-                (key3 == null ? multi.getKey(2) == null : key3.equals(multi.getKey(2))) &&
-                (key4 == null ? multi.getKey(3) == null : key4.equals(multi.getKey(3)))) {
-                it.remove();
-                modified = true;
-            }
-        }
-        return modified;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Check to ensure that input keys are valid MultiKey objects.
-     * 
-     * @param key  the key to check
-     */
-    protected void checkKey(Object key) {
-        if (key == null) {
-            throw new NullPointerException("Key must not be null");
-        }
-        if (key instanceof MultiKey == false) {
-            throw new ClassCastException("Key must be a MultiKey");
-        }
-    }
-
-    /**
-     * Clones the map without cloning the keys or values.
-     *
-     * @return a shallow clone
-     */
-    public Object clone() {
-        return new MultiKeyMap((AbstractHashedMap) map.clone());
-    }
-
-    /**
-     * Puts the key and value into the map, where the key must be a non-null
-     * MultiKey object.
-     * 
-     * @param key  the non-null MultiKey object
-     * @param value  the value to store
-     * @return the previous value for the key
-     * @throws NullPointerException if the key is null
-     * @throws ClassCastException if the key is not a MultiKey
-     */
-    public Object put(Object key, Object value) {
-        checkKey(key);
-        return map.put(key, value);
-    }
-
-    /**
-     * Copies all of the keys and values from the specified map to this map.
-     * Each key must be non-null and a MultiKey object.
-     * 
-     * @param mapToCopy  to this map
-     * @throws NullPointerException if the mapToCopy or any key within is null
-     * @throws ClassCastException if any key in mapToCopy is not a MultiKey
-     */
-    public void putAll(Map mapToCopy) {
-        for (Iterator it = mapToCopy.keySet().iterator(); it.hasNext();) {
-            Object key = it.next();
-            checkKey(key);
-        }
-        map.putAll(mapToCopy);
-    }
-
-    //-----------------------------------------------------------------------
-    public MapIterator mapIterator() {
-        return map.mapIterator();
-    }
-
-    public int size() {
-        return map.size();
-    }
-
-    public boolean isEmpty() {
-        return map.isEmpty();
-    }
-
-    public boolean containsKey(Object key) {
-        return map.containsKey(key);
-    }
-
-    public boolean containsValue(Object value) {
-        return map.containsValue(value);
-    }
-
-    public Object get(Object key) {
-        return map.get(key);
-    }
-
-    public Object remove(Object key) {
-        return map.remove(key);
-    }
-
-    public void clear() {
-        map.clear();
-    }
-
-    public Set keySet() {
-        return map.keySet();
-    }
-
-    public Collection values() {
-        return map.values();
-    }
-
-    public Set entrySet() {
-        return map.entrySet();
-    }
-
-    public boolean equals(Object obj) {
-        if (obj == this) {
-            return true;
-        }
-        return map.equals(obj);
-    }
-
-    public int hashCode() {
-        return map.hashCode();
-    }
-
-    public String toString() {
-        return map.toString();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/MultiValueMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/MultiValueMap.java
deleted file mode 100755
index 2d9f92f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/MultiValueMap.java
+++ /dev/null
@@ -1,439 +0,0 @@
-/*
- *  Copyright 2001-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.util.AbstractCollection;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.collections.Factory;
-import org.apache.commons.collections.FunctorException;
-import org.apache.commons.collections.MultiMap;
-import org.apache.commons.collections.iterators.EmptyIterator;
-import org.apache.commons.collections.iterators.IteratorChain;
-
-/**
- * A MultiValueMap decorates another map, allowing it to have
- * more than one value for a key.
- * <p>
- * A <code>MultiMap</code> is a Map with slightly different semantics.
- * Putting a value into the map will add the value to a Collection at that key.
- * Getting a value will return a Collection, holding all the values put to that key.
- * <p>
- * This implementation is a decorator, allowing any Map implementation
- * to be used as the base.
- * <p>
- * In addition, this implementation allows the type of collection used
- * for the values to be controlled. By default, an <code>ArrayList</code>
- * is used, however a <code>Class</code> to instantiate may be specified,
- * or a factory that returns a <code>Collection</code> instance.
- * <p>
- * <strong>Note that MultiValueMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. This class may throw exceptions when accessed
- * by concurrent threads without synchronization.
- *
- * @author James Carman
- * @author Christopher Berry
- * @author James Strachan
- * @author Steve Downey
- * @author Stephen Colebourne
- * @author Julien Buret
- * @author Serhiy Yevtushenko
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- * @since Commons Collections 3.2
- */
-public class MultiValueMap extends AbstractMapDecorator implements MultiMap {
-
-    /** The factory for creating value collections. */
-    private final Factory collectionFactory;
-    /** The cached values. */
-    private transient Collection values;
-
-    /**
-     * Creates a map which wraps the given map and
-     * maps keys to ArrayLists.
-     *
-     * @param map  the map to wrap
-     */
-    public static MultiValueMap decorate(Map map) {
-        return new MultiValueMap(map, new ReflectionFactory(ArrayList.class));
-    }
-
-    /**
-     * Creates a map which decorates the given <code>map</code> and
-     * maps keys to collections of type <code>collectionClass</code>.
-     *
-     * @param map  the map to wrap
-     * @param collectionClass  the type of the collection class
-     */
-    public static MultiValueMap decorate(Map map, Class collectionClass) {
-        return new MultiValueMap(map, new ReflectionFactory(collectionClass));
-    }
-
-    /**
-     * Creates a map which decorates the given <code>map</code> and
-     * creates the value collections using the supplied <code>collectionFactory</code>.
-     *
-     * @param map  the map to decorate
-     * @param collectionFactory  the collection factory (must return a Collection object).
-     */
-    public static MultiValueMap decorate(Map map, Factory collectionFactory) {
-        return new MultiValueMap(map, collectionFactory);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Creates a MultiValueMap based on a <code>HashMap</code> and
-     * storing the multiple values in an <code>ArrayList</code>.
-     */
-    public MultiValueMap() {
-        this(new HashMap(), new ReflectionFactory(ArrayList.class));
-    }
-
-    /**
-     * Creates a MultiValueMap which decorates the given <code>map</code> and
-     * creates the value collections using the supplied <code>collectionFactory</code>.
-     *
-     * @param map  the map to decorate
-     * @param collectionFactory  the collection factory which must return a Collection instance
-     */
-    protected MultiValueMap(Map map, Factory collectionFactory) {
-        super(map);
-        if (collectionFactory == null) {
-            throw new IllegalArgumentException("The factory must not be null");
-        }
-        this.collectionFactory = collectionFactory;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Clear the map.
-     */
-    public void clear() {
-        // If you believe that you have GC issues here, try uncommenting this code
-//        Set pairs = getMap().entrySet();
-//        Iterator pairsIterator = pairs.iterator();
-//        while (pairsIterator.hasNext()) {
-//            Map.Entry keyValuePair = (Map.Entry) pairsIterator.next();
-//            Collection coll = (Collection) keyValuePair.getValue();
-//            coll.clear();
-//        }
-        getMap().clear();
-    }
-
-    /**
-     * Removes a specific value from map.
-     * <p>
-     * The item is removed from the collection mapped to the specified key.
-     * Other values attached to that key are unaffected.
-     * <p>
-     * If the last value for a key is removed, <code>null</code> will be returned
-     * from a subsequant <code>get(key)</code>.
-     *
-     * @param key  the key to remove from
-     * @param value the value to remove
-     * @return the value removed (which was passed in), null if nothing removed
-     */
-    public Object remove(Object key, Object value) {
-        Collection valuesForKey = getCollection(key);
-        if (valuesForKey == null) {
-            return null;
-        }
-        boolean removed = valuesForKey.remove(value);
-        if (removed == false) {
-            return null;
-        }
-        if (valuesForKey.isEmpty()) {
-            remove(key);
-        }
-        return value;
-    }
-
-    /**
-     * Checks whether the map contains the value specified.
-     * <p>
-     * This checks all collections against all keys for the value, and thus could be slow.
-     *
-     * @param value  the value to search for
-     * @return true if the map contains the value
-     */
-    public boolean containsValue(Object value) {
-        Set pairs = getMap().entrySet();
-        if (pairs == null) {
-            return false;
-        }
-        Iterator pairsIterator = pairs.iterator();
-        while (pairsIterator.hasNext()) {
-            Map.Entry keyValuePair = (Map.Entry) pairsIterator.next();
-            Collection coll = (Collection) keyValuePair.getValue();
-            if (coll.contains(value)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Adds the value to the collection associated with the specified key.
-     * <p>
-     * Unlike a normal <code>Map</code> the previous value is not replaced.
-     * Instead the new value is added to the collection stored against the key.
-     *
-     * @param key  the key to store against
-     * @param value  the value to add to the collection at the key
-     * @return the value added if the map changed and null if the map did not change
-     */
-    public Object put(Object key, Object value) {
-        boolean result = false;
-        Collection coll = getCollection(key);
-        if (coll == null) {
-            coll = createCollection(1);
-            result = coll.add(value);
-            if (coll.size() > 0) {
-                // only add if non-zero size to maintain class state
-                getMap().put(key, coll);
-                result = false;
-            }
-        } else {
-            result = coll.add(value);
-        }
-        return (result ? value : null);
-    }
-
-    /**
-     * Override superclass to ensure that MultiMap instances are
-     * correctly handled.
-     * <p>
-     * If you call this method with a normal map, each entry is
-     * added using <code>put(Object,Object)</code>.
-     * If you call this method with a multi map, each entry is
-     * added using <code>putAll(Object,Collection)</code>.
-     *
-     * @param map  the map to copy (either a normal or multi map)
-     */
-    public void putAll(Map map) {
-        if (map instanceof MultiMap) {
-            for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
-                Map.Entry entry = (Map.Entry) it.next();
-                Collection coll = (Collection) entry.getValue();
-                putAll(entry.getKey(), coll);
-            }
-        } else {
-            for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
-                Map.Entry entry = (Map.Entry) it.next();
-                put(entry.getKey(), entry.getValue());
-            }
-        }
-    }
-
-    /**
-     * Gets a collection containing all the values in the map.
-     * <p>
-     * This returns a collection containing the combination of values from all keys.
-     *
-     * @return a collection view of the values contained in this map
-     */
-    public Collection values() {
-        Collection vs = values;
-        return (vs != null ? vs : (values = new Values()));
-    }
-
-    /**
-     * Checks whether the collection at the specified key contains the value.
-     *
-     * @param value  the value to search for
-     * @return true if the map contains the value
-     */
-    public boolean containsValue(Object key, Object value) {
-        Collection coll = getCollection(key);
-        if (coll == null) {
-            return false;
-        }
-        return coll.contains(value);
-    }
-
-    /**
-     * Gets the collection mapped to the specified key.
-     * This method is a convenience method to typecast the result of <code>get(key)</code>.
-     *
-     * @param key  the key to retrieve
-     * @return the collection mapped to the key, null if no mapping
-     */
-    public Collection getCollection(Object key) {
-        return (Collection) getMap().get(key);
-    }
-
-    /**
-     * Gets the size of the collection mapped to the specified key.
-     *
-     * @param key  the key to get size for
-     * @return the size of the collection at the key, zero if key not in map
-     */
-    public int size(Object key) {
-        Collection coll = getCollection(key);
-        if (coll == null) {
-            return 0;
-        }
-        return coll.size();
-    }
-
-    /**
-     * Adds a collection of values to the collection associated with
-     * the specified key.
-     *
-     * @param key  the key to store against
-     * @param values  the values to add to the collection at the key, null ignored
-     * @return true if this map changed
-     */
-    public boolean putAll(Object key, Collection values) {
-        if (values == null || values.size() == 0) {
-            return false;
-        }
-        Collection coll = getCollection(key);
-        if (coll == null) {
-            coll = createCollection(values.size());
-            boolean result = coll.addAll(values);
-            if (coll.size() > 0) {
-                // only add if non-zero size to maintain class state
-                getMap().put(key, coll);
-                result = false;
-            }
-            return result;
-        } else {
-            return coll.addAll(values);
-        }
-    }
-
-    /**
-     * Gets an iterator for the collection mapped to the specified key.
-     *
-     * @param key  the key to get an iterator for
-     * @return the iterator of the collection at the key, empty iterator if key not in map
-     */
-    public Iterator iterator(Object key) {
-        if (!containsKey(key)) {
-            return EmptyIterator.INSTANCE;
-        } else {
-            return new ValuesIterator(key);
-        }
-    }
-
-    /**
-     * Gets the total size of the map by counting all the values.
-     *
-     * @return the total size of the map counting all values
-     */
-    public int totalSize() {
-        int total = 0;
-        Collection values = getMap().values();
-        for (Iterator it = values.iterator(); it.hasNext();) {
-            Collection coll = (Collection) it.next();
-            total += coll.size();
-        }
-        return total;
-    }
-
-    /**
-     * Creates a new instance of the map value Collection container
-     * using the factory.
-     * <p>
-     * This method can be overridden to perform your own processing
-     * instead of using the factory.
-     *
-     * @param size  the collection size that is about to be added
-     * @return the new collection
-     */
-    protected Collection createCollection(int size) {
-        return (Collection) collectionFactory.create();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Inner class that provides the values view.
-     */
-    private class Values extends AbstractCollection {
-        public Iterator iterator() {
-            final IteratorChain chain = new IteratorChain();
-            for (Iterator it = keySet().iterator(); it.hasNext();) {
-                chain.addIterator(new ValuesIterator(it.next()));
-            }
-            return chain;
-        }
-
-        public int size() {
-            return totalSize();
-        }
-
-        public void clear() {
-            MultiValueMap.this.clear();
-        }
-    }
-
-    /**
-     * Inner class that provides the values iterator.
-     */
-    private class ValuesIterator implements Iterator {
-        private final Object key;
-        private final Collection values;
-        private final Iterator iterator;
-
-        public ValuesIterator(Object key) {
-            this.key = key;
-            this.values = getCollection(key);
-            this.iterator = values.iterator();
-        }
-
-        public void remove() {
-            iterator.remove();
-            if (values.isEmpty()) {
-                MultiValueMap.this.remove(key);
-            }
-        }
-
-        public boolean hasNext() {
-            return iterator.hasNext();
-        }
-
-        public Object next() {
-            return iterator.next();
-        }
-    }
-
-    /**
-     * Inner class that provides a simple reflection factory.
-     */
-    private static class ReflectionFactory implements Factory {
-        private final Class clazz;
-
-        public ReflectionFactory(Class clazz) {
-            this.clazz = clazz;
-        }
-
-        public Object create() {
-            try {
-                return clazz.newInstance();
-            } catch (Exception ex) {
-                throw new FunctorException("Cannot instantiate class: " + clazz, ex);
-            }
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/PredicatedMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/PredicatedMap.java
deleted file mode 100755
index 9dd1ce3..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/PredicatedMap.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Decorates another <code>Map</code> to validate that additions
- * match a specified predicate.
- * <p>
- * This map exists to provide validation for the decorated map.
- * It is normally created to decorate an empty map.
- * If an object cannot be added to the map, an IllegalArgumentException is thrown.
- * <p>
- * One usage would be to ensure that no null keys are added to the map.
- * <pre>Map map = PredicatedSet.decorate(new HashMap(), NotNullPredicate.INSTANCE, null);</pre>
- * <p>
- * <strong>Note that PredicatedMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. The simplest approach is to wrap this map
- * using {@link java.util.Collections#synchronizedMap(Map)}. This class may throw 
- * exceptions when accessed by concurrent threads without synchronization.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- * 
- * @author Stephen Colebourne
- * @author Paul Jack
- */
-public class PredicatedMap
-        extends AbstractInputCheckedMapDecorator
-        implements Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 7412622456128415156L;
-
-    /** The key predicate to use */
-    protected final Predicate keyPredicate;
-    /** The value predicate to use */
-    protected final Predicate valuePredicate;
-
-    /**
-     * Factory method to create a predicated (validating) map.
-     * <p>
-     * If there are any elements already in the list being decorated, they
-     * are validated.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param keyPredicate  the predicate to validate the keys, null means no check
-     * @param valuePredicate  the predicate to validate to values, null means no check
-     * @throws IllegalArgumentException if the map is null
-     */
-    public static Map decorate(Map map, Predicate keyPredicate, Predicate valuePredicate) {
-        return new PredicatedMap(map, keyPredicate, valuePredicate);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param keyPredicate  the predicate to validate the keys, null means no check
-     * @param valuePredicate  the predicate to validate to values, null means no check
-     * @throws IllegalArgumentException if the map is null
-     */
-    protected PredicatedMap(Map map, Predicate keyPredicate, Predicate valuePredicate) {
-        super(map);
-        this.keyPredicate = keyPredicate;
-        this.valuePredicate = valuePredicate;
-        
-        Iterator it = map.entrySet().iterator();
-        while (it.hasNext()) {
-            Map.Entry entry = (Map.Entry) it.next();
-            Object key = entry.getKey();
-            Object value = entry.getValue();
-            validate(key, value);
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the map out using a custom routine.
-     * 
-     * @param out  the output stream
-     * @throws IOException
-     * @since Commons Collections 3.1
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeObject(map);
-    }
-
-    /**
-     * Read the map in using a custom routine.
-     * 
-     * @param in  the input stream
-     * @throws IOException
-     * @throws ClassNotFoundException
-     * @since Commons Collections 3.1
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        map = (Map) in.readObject();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Validates a key value pair.
-     * 
-     * @param key  the key to validate
-     * @param value  the value to validate
-     * @throws IllegalArgumentException if invalid
-     */
-    protected void validate(Object key, Object value) {
-        if (keyPredicate != null && keyPredicate.evaluate(key) == false) {
-            throw new IllegalArgumentException("Cannot add key - Predicate rejected it");
-        }
-        if (valuePredicate != null && valuePredicate.evaluate(value) == false) {
-            throw new IllegalArgumentException("Cannot add value - Predicate rejected it");
-        }
-    }
-
-    /**
-     * Override to validate an object set into the map via <code>setValue</code>.
-     * 
-     * @param value  the value to validate
-     * @throws IllegalArgumentException if invalid
-     * @since Commons Collections 3.1
-     */
-    protected Object checkSetValue(Object value) {
-        if (valuePredicate.evaluate(value) == false) {
-            throw new IllegalArgumentException("Cannot set value - Predicate rejected it");
-        }
-        return value;
-    }
-
-    /**
-     * Override to only return true when there is a value transformer.
-     * 
-     * @return true if a value predicate is in use
-     * @since Commons Collections 3.1
-     */
-    protected boolean isSetValueChecking() {
-        return (valuePredicate != null);
-    }
-
-    //-----------------------------------------------------------------------
-    public Object put(Object key, Object value) {
-        validate(key, value);
-        return map.put(key, value);
-    }
-
-    public void putAll(Map mapToCopy) {
-        Iterator it = mapToCopy.entrySet().iterator();
-        while (it.hasNext()) {
-            Map.Entry entry = (Map.Entry) it.next();
-            Object key = entry.getKey();
-            Object value = entry.getValue();
-            validate(key, value);
-        }
-        map.putAll(mapToCopy);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/PredicatedSortedMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/PredicatedSortedMap.java
deleted file mode 100755
index ab8cf68..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/PredicatedSortedMap.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.util.Comparator;
-import java.util.SortedMap;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Decorates another <code>SortedMap </code> to validate that additions
- * match a specified predicate.
- * <p>
- * This map exists to provide validation for the decorated map.
- * It is normally created to decorate an empty map.
- * If an object cannot be added to the map, an IllegalArgumentException is thrown.
- * <p>
- * One usage would be to ensure that no null keys are added to the map.
- * <pre>SortedMap map = PredicatedSortedSet.decorate(new TreeMap(), NotNullPredicate.INSTANCE, null);</pre>
- * <p>
- * <strong>Note that PredicatedSortedMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. The simplest approach is to wrap this map
- * using {@link java.util.Collections#synchronizedSortedMap}. This class may throw 
- * exceptions when accessed by concurrent threads without synchronization.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- * 
- * @author Stephen Colebourne
- * @author Paul Jack
- */
-public class PredicatedSortedMap
-        extends PredicatedMap
-        implements SortedMap {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 3359846175935304332L;
-
-    /**
-     * Factory method to create a predicated (validating) sorted map.
-     * <p>
-     * If there are any elements already in the list being decorated, they
-     * are validated.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param keyPredicate  the predicate to validate the keys, null means no check
-     * @param valuePredicate  the predicate to validate to values, null means no check
-     * @throws IllegalArgumentException if the map is null
-     */
-    public static SortedMap decorate(SortedMap map, Predicate keyPredicate, Predicate valuePredicate) {
-        return new PredicatedSortedMap(map, keyPredicate, valuePredicate);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param keyPredicate  the predicate to validate the keys, null means no check
-     * @param valuePredicate  the predicate to validate to values, null means no check
-     * @throws IllegalArgumentException if the map is null
-     */
-    protected PredicatedSortedMap(SortedMap map, Predicate keyPredicate, Predicate valuePredicate) {
-        super(map, keyPredicate, valuePredicate);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the map being decorated.
-     * 
-     * @return the decorated map
-     */
-    protected SortedMap getSortedMap() {
-        return (SortedMap) map;
-    }
-
-    //-----------------------------------------------------------------------
-    public Object firstKey() {
-        return getSortedMap().firstKey();
-    }
-
-    public Object lastKey() {
-        return getSortedMap().lastKey();
-    }
-
-    public Comparator comparator() {
-        return getSortedMap().comparator();
-    }
-
-    public SortedMap subMap(Object fromKey, Object toKey) {
-        SortedMap map = getSortedMap().subMap(fromKey, toKey);
-        return new PredicatedSortedMap(map, keyPredicate, valuePredicate);
-    }
-
-    public SortedMap headMap(Object toKey) {
-        SortedMap map = getSortedMap().headMap(toKey);
-        return new PredicatedSortedMap(map, keyPredicate, valuePredicate);
-    }
-
-    public SortedMap tailMap(Object fromKey) {
-        SortedMap map = getSortedMap().tailMap(fromKey);
-        return new PredicatedSortedMap(map, keyPredicate, valuePredicate);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/ReferenceIdentityMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/ReferenceIdentityMap.java
deleted file mode 100755
index eddd94b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/ReferenceIdentityMap.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- *  Copyright 2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.lang.ref.Reference;
-
-/**
- * A <code>Map</code> implementation that allows mappings to be
- * removed by the garbage collector and matches keys and values based
- * on <code>==</code> not <code>equals()</code>.
- * <p>
- * <p>
- * When you construct a <code>ReferenceIdentityMap</code>, you can specify what kind
- * of references are used to store the map's keys and values.
- * If non-hard references are used, then the garbage collector can remove
- * mappings if a key or value becomes unreachable, or if the JVM's memory is
- * running low. For information on how the different reference types behave,
- * see {@link Reference}.
- * <p>
- * Different types of references can be specified for keys and values.
- * The default constructor uses hard keys and soft values, providing a
- * memory-sensitive cache.
- * <p>
- * This map is similar to
- * {@link org.apache.commons.collections.map.ReferenceMap ReferenceMap}.
- * It differs in that keys and values in this class are compared using <code>==</code>.
- * <p>
- * This map will violate the detail of various Map and map view contracts.
- * As a general rule, don't compare this map to other maps.
- * <p>
- * This {@link java.util.Map Map} implementation does <i>not</i> allow null elements.
- * Attempting to add a null key or value to the map will raise a <code>NullPointerException</code>.
- * <p>
- * This implementation is not synchronized.
- * You can use {@link java.util.Collections#synchronizedMap} to 
- * provide synchronized access to a <code>ReferenceIdentityMap</code>.
- * Remember that synchronization will not stop the garbage collecter removing entries.
- * <p>
- * All the available iterators can be reset back to the start by casting to
- * <code>ResettableIterator</code> and calling <code>reset()</code>.
- * <p>
- * <strong>Note that ReferenceIdentityMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. The simplest approach is to wrap this map
- * using {@link java.util.Collections#synchronizedMap}. This class may throw 
- * exceptions when accessed by concurrent threads without synchronization.
- *
- * @see java.lang.ref.Reference
- * 
- * @since Commons Collections 3.0 (previously in main package v2.1)
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- * 
- * @author Stephen Colebourne
- */
-public class ReferenceIdentityMap extends AbstractReferenceMap implements Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -1266190134568365852L;
-
-    /**
-     * Constructs a new <code>ReferenceIdentityMap</code> that will
-     * use hard references to keys and soft references to values.
-     */
-    public ReferenceIdentityMap() {
-        super(HARD, SOFT, DEFAULT_CAPACITY, DEFAULT_LOAD_FACTOR, false);
-    }
-
-    /**
-     * Constructs a new <code>ReferenceIdentityMap</code> that will
-     * use the specified types of references.
-     *
-     * @param keyType  the type of reference to use for keys;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     * @param valueType  the type of reference to use for values;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     */
-    public ReferenceIdentityMap(int keyType, int valueType) {
-        super(keyType, valueType, DEFAULT_CAPACITY, DEFAULT_LOAD_FACTOR, false);
-    }
-
-    /**
-     * Constructs a new <code>ReferenceIdentityMap</code> that will
-     * use the specified types of references.
-     *
-     * @param keyType  the type of reference to use for keys;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     * @param valueType  the type of reference to use for values;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     * @param purgeValues should the value be automatically purged when the 
-     *   key is garbage collected 
-     */
-    public ReferenceIdentityMap(int keyType, int valueType, boolean purgeValues) {
-        super(keyType, valueType, DEFAULT_CAPACITY, DEFAULT_LOAD_FACTOR, purgeValues);
-    }
-
-    /**
-     * Constructs a new <code>ReferenceIdentityMap</code> with the
-     * specified reference types, load factor and initial capacity.
-     *
-     * @param keyType  the type of reference to use for keys;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     * @param valueType  the type of reference to use for values;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     * @param capacity  the initial capacity for the map
-     * @param loadFactor  the load factor for the map
-     */
-    public ReferenceIdentityMap(int keyType, int valueType, int capacity, float loadFactor) {
-        super(keyType, valueType, capacity, loadFactor, false);
-    }
-
-    /**
-     * Constructs a new <code>ReferenceIdentityMap</code> with the
-     * specified reference types, load factor and initial capacity.
-     *
-     * @param keyType  the type of reference to use for keys;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     * @param valueType  the type of reference to use for values;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     * @param capacity  the initial capacity for the map
-     * @param loadFactor  the load factor for the map
-     * @param purgeValues  should the value be automatically purged when the 
-     *   key is garbage collected 
-     */
-    public ReferenceIdentityMap(int keyType, int valueType, int capacity,
-                        float loadFactor, boolean purgeValues) {
-        super(keyType, valueType, capacity, loadFactor, purgeValues);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the hash code for the key specified.
-     * <p>
-     * This implementation uses the identity hash code.
-     * 
-     * @param key  the key to get a hash code for
-     * @return the hash code
-     */
-    protected int hash(Object key) {
-        return System.identityHashCode(key);
-    }
-
-    /**
-     * Gets the hash code for a MapEntry.
-     * <p>
-     * This implementation uses the identity hash code.
-     * 
-     * @param key  the key to get a hash code for, may be null
-     * @param value  the value to get a hash code for, may be null
-     * @return the hash code, as per the MapEntry specification
-     */
-    protected int hashEntry(Object key, Object value) {
-        return System.identityHashCode(key) ^
-               System.identityHashCode(value);
-    }
-
-    /**
-     * Compares two keys for equals.
-     * <p>
-     * This implementation converts the key from the entry to a real reference
-     * before comparison and uses <code>==</code>.
-     * 
-     * @param key1  the first key to compare passed in from outside
-     * @param key2  the second key extracted from the entry via <code>entry.key</code>
-     * @return true if equal by identity
-     */
-    protected boolean isEqualKey(Object key1, Object key2) {
-        key2 = (keyType > HARD ? ((Reference) key2).get() : key2);
-        return (key1 == key2);
-    }
-
-    /**
-     * Compares two values for equals.
-     * <p>
-     * This implementation uses <code>==</code>.
-     * 
-     * @param value1  the first value to compare passed in from outside
-     * @param value2  the second value extracted from the entry via <code>getValue()</code>
-     * @return true if equal by identity
-     */
-    protected boolean isEqualValue(Object value1, Object value2) {
-        return (value1 == value2);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the map out using a custom routine.
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        doWriteObject(out);
-    }
-
-    /**
-     * Read the map in using a custom routine.
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        doReadObject(in);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/ReferenceMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/ReferenceMap.java
deleted file mode 100755
index ee1da2a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/ReferenceMap.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- *  Copyright 2002-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-
-/**
- * A <code>Map</code> implementation that allows mappings to be
- * removed by the garbage collector.
- * <p>
- * When you construct a <code>ReferenceMap</code>, you can specify what kind
- * of references are used to store the map's keys and values.
- * If non-hard references are used, then the garbage collector can remove
- * mappings if a key or value becomes unreachable, or if the JVM's memory is
- * running low. For information on how the different reference types behave,
- * see {@link java.lang.ref.Reference Reference}.
- * <p>
- * Different types of references can be specified for keys and values.
- * The keys can be configured to be weak but the values hard,
- * in which case this class will behave like a
- * <a href="http://java.sun.com/j2se/1.4/docs/api/java/util/WeakHashMap.html">
- * <code>WeakHashMap</code></a>. However, you can also specify hard keys and
- * weak values, or any other combination. The default constructor uses
- * hard keys and soft values, providing a memory-sensitive cache.
- * <p>
- * This map is similar to
- * {@link org.apache.commons.collections.map.ReferenceIdentityMap ReferenceIdentityMap}.
- * It differs in that keys and values in this class are compared using <code>equals()</code>.
- * <p>
- * This {@link java.util.Map Map} implementation does <i>not</i> allow null elements.
- * Attempting to add a null key or value to the map will raise a <code>NullPointerException</code>.
- * <p>
- * This implementation is not synchronized.
- * You can use {@link java.util.Collections#synchronizedMap} to 
- * provide synchronized access to a <code>ReferenceMap</code>.
- * Remember that synchronization will not stop the garbage collecter removing entries.
- * <p>
- * All the available iterators can be reset back to the start by casting to
- * <code>ResettableIterator</code> and calling <code>reset()</code>.
- * <p>
- * <strong>Note that ReferenceMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. The simplest approach is to wrap this map
- * using {@link java.util.Collections#synchronizedMap}. This class may throw 
- * exceptions when accessed by concurrent threads without synchronization.
- * <p>
- * NOTE: As from Commons Collections 3.1 this map extends <code>AbstractReferenceMap</code>
- * (previously it extended AbstractMap). As a result, the implementation is now
- * extensible and provides a <code>MapIterator</code>.
- *
- * @see java.lang.ref.Reference
- * 
- * @since Commons Collections 3.0 (previously in main package v2.1)
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:29 $
- * 
- * @author Paul Jack
- * @author Stephen Colebourne
- */
-public class ReferenceMap extends AbstractReferenceMap implements Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 1555089888138299607L;
-
-    /**
-     * Constructs a new <code>ReferenceMap</code> that will
-     * use hard references to keys and soft references to values.
-     */
-    public ReferenceMap() {
-        super(HARD, SOFT, DEFAULT_CAPACITY, DEFAULT_LOAD_FACTOR, false);
-    }
-
-    /**
-     * Constructs a new <code>ReferenceMap</code> that will
-     * use the specified types of references.
-     *
-     * @param keyType  the type of reference to use for keys;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     * @param valueType  the type of reference to use for values;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     */
-    public ReferenceMap(int keyType, int valueType) {
-        super(keyType, valueType, DEFAULT_CAPACITY, DEFAULT_LOAD_FACTOR, false);
-    }
-
-    /**
-     * Constructs a new <code>ReferenceMap</code> that will
-     * use the specified types of references.
-     *
-     * @param keyType  the type of reference to use for keys;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     * @param valueType  the type of reference to use for values;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     * @param purgeValues should the value be automatically purged when the 
-     *   key is garbage collected 
-     */
-    public ReferenceMap(int keyType, int valueType, boolean purgeValues) {
-        super(keyType, valueType, DEFAULT_CAPACITY, DEFAULT_LOAD_FACTOR, purgeValues);
-    }
-
-    /**
-     * Constructs a new <code>ReferenceMap</code> with the
-     * specified reference types, load factor and initial
-     * capacity.
-     *
-     * @param keyType  the type of reference to use for keys;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     * @param valueType  the type of reference to use for values;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     * @param capacity  the initial capacity for the map
-     * @param loadFactor  the load factor for the map
-     */
-    public ReferenceMap(int keyType, int valueType, int capacity, float loadFactor) {
-        super(keyType, valueType, capacity, loadFactor, false);
-    }
-
-    /**
-     * Constructs a new <code>ReferenceMap</code> with the
-     * specified reference types, load factor and initial
-     * capacity.
-     *
-     * @param keyType  the type of reference to use for keys;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     * @param valueType  the type of reference to use for values;
-     *   must be {@link #HARD}, {@link #SOFT}, {@link #WEAK}
-     * @param capacity  the initial capacity for the map
-     * @param loadFactor  the load factor for the map
-     * @param purgeValues  should the value be automatically purged when the 
-     *   key is garbage collected 
-     */
-    public ReferenceMap(int keyType, int valueType, int capacity,
-                        float loadFactor, boolean purgeValues) {
-        super(keyType, valueType, capacity, loadFactor, purgeValues);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the map out using a custom routine.
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        doWriteObject(out);
-    }
-
-    /**
-     * Read the map in using a custom routine.
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        doReadObject(in);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/SingletonMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/SingletonMap.java
deleted file mode 100755
index 7b8055e..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/SingletonMap.java
+++ /dev/null
@@ -1,592 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.io.Serializable;
-import java.util.AbstractSet;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-import org.apache.commons.collections.BoundedMap;
-import org.apache.commons.collections.KeyValue;
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.OrderedMap;
-import org.apache.commons.collections.OrderedMapIterator;
-import org.apache.commons.collections.ResettableIterator;
-import org.apache.commons.collections.iterators.SingletonIterator;
-import org.apache.commons.collections.keyvalue.TiedMapEntry;
-
-/**
- * A <code>Map</code> implementation that holds a single item and is fixed size.
- * <p>
- * The single key/value pair is specified at creation.
- * The map is fixed size so any action that would change the size is disallowed.
- * However, the <code>put</code> or <code>setValue</code> methods can <i>change</i>
- * the value associated with the key.
- * <p>
- * If trying to remove or clear the map, an UnsupportedOperationException is thrown.
- * If trying to put a new mapping into the map, an  IllegalArgumentException is thrown.
- * The put method will only suceed if the key specified is the same as the 
- * singleton key.
- * <p>
- * The key and value can be obtained by:
- * <ul>
- * <li>normal Map methods and views
- * <li>the <code>MapIterator</code>, see {@link #mapIterator()}
- * <li>the <code>KeyValue</code> interface (just cast - no object creation)
- * </ul>
- * 
- * @since Commons Collections 3.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:29 $
- *
- * @author Stephen Colebourne
- */
-public class SingletonMap
-        implements OrderedMap, BoundedMap, KeyValue, Serializable, Cloneable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -8931271118676803261L;
-
-    /** Singleton key */
-    private final Object key;
-    /** Singleton value */
-    private Object value;
-
-    /**
-     * Constructor that creates a map of <code>null</code> to <code>null</code>.
-     */
-    public SingletonMap() {
-        super();
-        this.key = null;
-    }
-
-    /**
-     * Constructor specifying the key and value.
-     *
-     * @param key  the key to use
-     * @param value  the value to use
-     */
-    public SingletonMap(Object key, Object value) {
-        super();
-        this.key = key;
-        this.value = value;
-    }
-
-    /**
-     * Constructor specifying the key and value as a <code>KeyValue</code>.
-     *
-     * @param keyValue  the key value pair to use
-     */
-    public SingletonMap(KeyValue keyValue) {
-        super();
-        this.key = keyValue.getKey();
-        this.value = keyValue.getValue();
-    }
-
-    /**
-     * Constructor specifying the key and value as a <code>MapEntry</code>.
-     *
-     * @param mapEntry  the mapEntry to use
-     */
-    public SingletonMap(Map.Entry mapEntry) {
-        super();
-        this.key = mapEntry.getKey();
-        this.value = mapEntry.getValue();
-    }
-
-    /**
-     * Constructor copying elements from another map.
-     *
-     * @param map  the map to copy, must be size 1
-     * @throws NullPointerException if the map is null
-     * @throws IllegalArgumentException if the size is not 1
-     */
-    public SingletonMap(Map map) {
-        super();
-        if (map.size() != 1) {
-            throw new IllegalArgumentException("The map size must be 1");
-        }
-        Map.Entry entry = (Map.Entry) map.entrySet().iterator().next();
-        this.key = entry.getKey();
-        this.value = entry.getValue();
-    }
-
-    // KeyValue
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the key.
-     *
-     * @return the key 
-     */
-    public Object getKey() {
-        return key;
-    }
-
-    /**
-     * Gets the value.
-     *
-     * @return the value
-     */
-    public Object getValue() {
-        return value;
-    }
-
-    /**
-     * Sets the value.
-     *
-     * @param value  the new value to set
-     * @return the old value
-     */
-    public Object setValue(Object value) {
-        Object old = this.value;
-        this.value = value;
-        return old;
-    }
-
-    // BoundedMap
-    //-----------------------------------------------------------------------
-    /**
-     * Is the map currently full, always true.
-     *
-     * @return true always
-     */
-    public boolean isFull() {
-        return true;
-    }
-
-    /**
-     * Gets the maximum size of the map, always 1.
-     * 
-     * @return 1 always
-     */
-    public int maxSize() {
-        return 1;
-    }
-
-    // Map
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the value mapped to the key specified.
-     * 
-     * @param key  the key
-     * @return the mapped value, null if no match
-     */
-    public Object get(Object key) {
-        if (isEqualKey(key)) {
-            return value;
-        }
-        return null;
-    }
-
-    /**
-     * Gets the size of the map, always 1.
-     * 
-     * @return the size of 1
-     */
-    public int size() {
-        return 1;
-    }
-
-    /**
-     * Checks whether the map is currently empty, which it never is.
-     * 
-     * @return false always
-     */
-    public boolean isEmpty() {
-        return false;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Checks whether the map contains the specified key.
-     * 
-     * @param key  the key to search for
-     * @return true if the map contains the key
-     */
-    public boolean containsKey(Object key) {
-        return (isEqualKey(key));
-    }
-
-    /**
-     * Checks whether the map contains the specified value.
-     * 
-     * @param value  the value to search for
-     * @return true if the map contains the key
-     */
-    public boolean containsValue(Object value) {
-        return (isEqualValue(value));
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Puts a key-value mapping into this map where the key must match the existing key.
-     * <p>
-     * An IllegalArgumentException is thrown if the key does not match as the map
-     * is fixed size.
-     * 
-     * @param key  the key to set, must be the key of the map
-     * @param value  the value to set
-     * @return the value previously mapped to this key, null if none
-     * @throws IllegalArgumentException if the key does not match
-     */
-    public Object put(Object key, Object value) {
-        if (isEqualKey(key)) {
-            return setValue(value);
-        }
-        throw new IllegalArgumentException("Cannot put new key/value pair - Map is fixed size singleton");
-    }
-
-    /**
-     * Puts the values from the specified map into this map.
-     * <p>
-     * The map must be of size 0 or size 1.
-     * If it is size 1, the key must match the key of this map otherwise an
-     * IllegalArgumentException is thrown.
-     * 
-     * @param map  the map to add, must be size 0 or 1, and the key must match
-     * @throws NullPointerException if the map is null
-     * @throws IllegalArgumentException if the key does not match
-     */
-    public void putAll(Map map) {
-        switch (map.size()) {
-            case 0:
-                return;
-            
-            case 1:
-                Map.Entry entry = (Map.Entry) map.entrySet().iterator().next();
-                put(entry.getKey(), entry.getValue());
-                return;
-            
-            default:
-                throw new IllegalArgumentException("The map size must be 0 or 1");
-        }
-    }
-
-    /**
-     * Unsupported operation.
-     * 
-     * @param key  the mapping to remove
-     * @return the value mapped to the removed key, null if key not in map
-     * @throws UnsupportedOperationException always
-     */
-    public Object remove(Object key) {
-        throw new UnsupportedOperationException();
-    }
-
-    /**
-     * Unsupported operation.
-     */
-    public void clear() {
-        throw new UnsupportedOperationException();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the entrySet view of the map.
-     * Changes made via <code>setValue</code> affect this map.
-     * To simply iterate through the entries, use {@link #mapIterator()}.
-     * 
-     * @return the entrySet view
-     */
-    public Set entrySet() {
-        Map.Entry entry = new TiedMapEntry(this, getKey());
-        return Collections.singleton(entry);
-    }
-    
-    /**
-     * Gets the unmodifiable keySet view of the map.
-     * Changes made to the view affect this map.
-     * To simply iterate through the keys, use {@link #mapIterator()}.
-     * 
-     * @return the keySet view
-     */
-    public Set keySet() {
-        return Collections.singleton(key);
-    }
-
-    /**
-     * Gets the unmodifiable values view of the map.
-     * Changes made to the view affect this map.
-     * To simply iterate through the values, use {@link #mapIterator()}.
-     * 
-     * @return the values view
-     */
-    public Collection values() {
-        return new SingletonValues(this);
-    }
-
-    /**
-     * Gets an iterator over the map.
-     * Changes made to the iterator using <code>setValue</code> affect this map.
-     * The <code>remove</code> method is unsupported.
-     * <p>
-     * A MapIterator returns the keys in the map. It also provides convenient
-     * methods to get the key and value, and set the value.
-     * It avoids the need to create an entrySet/keySet/values object.
-     * It also avoids creating the Map Entry object.
-     * 
-     * @return the map iterator
-     */
-    public MapIterator mapIterator() {
-        return new SingletonMapIterator(this);
-    }
-
-    // OrderedMap
-    //-----------------------------------------------------------------------
-    /**
-     * Obtains an <code>OrderedMapIterator</code> over the map.
-     * <p>
-     * A ordered map iterator is an efficient way of iterating over maps
-     * in both directions.
-     * 
-     * @return an ordered map iterator
-     */
-    public OrderedMapIterator orderedMapIterator() {
-        return new SingletonMapIterator(this);
-    }
-
-    /**
-     * Gets the first (and only) key in the map.
-     * 
-     * @return the key
-     */
-    public Object firstKey() {
-        return getKey();
-    }
-
-    /**
-     * Gets the last (and only) key in the map.
-     * 
-     * @return the key
-     */
-    public Object lastKey() {
-        return getKey();
-    }
-
-    /**
-     * Gets the next key after the key specified, always null.
-     * 
-     * @param key  the next key
-     * @return null always
-     */
-    public Object nextKey(Object key) {
-        return null;
-    }
-
-    /**
-     * Gets the previous key before the key specified, always null.
-     * 
-     * @param key  the next key
-     * @return null always
-     */
-    public Object previousKey(Object key) {
-        return null;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Compares the specified key to the stored key.
-     * 
-     * @param key  the key to compare
-     * @return true if equal
-     */
-    protected boolean isEqualKey(Object key) {
-        return (key == null ? getKey() == null : key.equals(getKey()));
-    }
-
-    /**
-     * Compares the specified value to the stored value.
-     * 
-     * @param value  the value to compare
-     * @return true if equal
-     */
-    protected boolean isEqualValue(Object value) {
-        return (value == null ? getValue() == null : value.equals(getValue()));
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * SingletonMapIterator.
-     */
-    static class SingletonMapIterator implements OrderedMapIterator, ResettableIterator {
-        private final SingletonMap parent;
-        private boolean hasNext = true;
-        private boolean canGetSet = false;
-        
-        SingletonMapIterator(SingletonMap parent) {
-            super();
-            this.parent = parent;
-        }
-
-        public boolean hasNext() {
-            return hasNext;
-        }
-
-        public Object next() {
-            if (hasNext == false) {
-                throw new NoSuchElementException(AbstractHashedMap.NO_NEXT_ENTRY);
-            }
-            hasNext = false;
-            canGetSet = true;
-            return parent.getKey();
-        }
-
-        public boolean hasPrevious() {
-            return (hasNext == false);
-        }
-
-        public Object previous() {
-            if (hasNext == true) {
-                throw new NoSuchElementException(AbstractHashedMap.NO_PREVIOUS_ENTRY);
-            }
-            hasNext = true;
-            return parent.getKey();
-        }
-
-        public void remove() {
-            throw new UnsupportedOperationException();
-        }
-
-        public Object getKey() {
-            if (canGetSet == false) {
-                throw new IllegalStateException(AbstractHashedMap.GETKEY_INVALID);
-            }
-            return parent.getKey();
-        }
-
-        public Object getValue() {
-            if (canGetSet == false) {
-                throw new IllegalStateException(AbstractHashedMap.GETVALUE_INVALID);
-            }
-            return parent.getValue();
-        }
-
-        public Object setValue(Object value) {
-            if (canGetSet == false) {
-                throw new IllegalStateException(AbstractHashedMap.SETVALUE_INVALID);
-            }
-            return parent.setValue(value);
-        }
-        
-        public void reset() {
-            hasNext = true;
-        }
-        
-        public String toString() {
-            if (hasNext) {
-                return "Iterator[]";
-            } else {
-                return "Iterator[" + getKey() + "=" + getValue() + "]";
-            }
-        }
-    }
-    
-    /**
-     * Values implementation for the SingletonMap.
-     * This class is needed as values is a view that must update as the map updates.
-     */
-    static class SingletonValues extends AbstractSet implements Serializable {
-        private static final long serialVersionUID = -3689524741863047872L;
-        private final SingletonMap parent;
-
-        SingletonValues(SingletonMap parent) {
-            super();
-            this.parent = parent;
-        }
-
-        public int size() {
-            return 1;
-        }
-        public boolean isEmpty() {
-            return false;
-        }
-        public boolean contains(Object object) {
-            return parent.containsValue(object);
-        }
-        public void clear() {
-            throw new UnsupportedOperationException();
-        }
-        public Iterator iterator() {
-            return new SingletonIterator(parent.getValue(), false);
-        }
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Clones the map without cloning the key or value.
-     *
-     * @return a shallow clone
-     */
-    public Object clone() {
-        try {
-            SingletonMap cloned = (SingletonMap) super.clone();
-            return cloned;
-        } catch (CloneNotSupportedException ex) {
-            throw new InternalError();
-        }
-    }
-
-    /**
-     * Compares this map with another.
-     * 
-     * @param obj  the object to compare to
-     * @return true if equal
-     */
-    public boolean equals(Object obj) {
-        if (obj == this) {
-            return true;
-        }
-        if (obj instanceof Map == false) {
-            return false;
-        }
-        Map other = (Map) obj;
-        if (other.size() != 1) {
-            return false;
-        }
-        Map.Entry entry = (Map.Entry) other.entrySet().iterator().next();
-        return isEqualKey(entry.getKey()) && isEqualValue(entry.getValue());
-    }
-
-    /**
-     * Gets the standard Map hashCode.
-     * 
-     * @return the hash code defined in the Map interface
-     */
-    public int hashCode() {
-        return (getKey() == null ? 0 : getKey().hashCode()) ^
-               (getValue() == null ? 0 : getValue().hashCode()); 
-    }
-
-    /**
-     * Gets the map as a String.
-     * 
-     * @return a string version of the map
-     */
-    public String toString() {
-        return new StringBuffer(128)
-            .append('{')
-            .append((getKey() == this ? "(this Map)" : getKey()))
-            .append('=')
-            .append((getValue() == this ? "(this Map)" : getValue()))
-            .append('}')
-            .toString();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/StaticBucketMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/StaticBucketMap.java
deleted file mode 100755
index 976652c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/StaticBucketMap.java
+++ /dev/null
@@ -1,700 +0,0 @@
-/*
- *  Copyright 2002-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.util.AbstractCollection;
-import java.util.AbstractSet;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-import org.apache.commons.collections.KeyValue;
-
-/**
- * A StaticBucketMap is an efficient, thread-safe implementation of
- * <code>java.util.Map</code> that performs well in in a highly
- * thread-contentious environment.  The map supports very efficient
- * {@link #get(Object) get}, {@link #put(Object,Object) put}, 
- * {@link #remove(Object) remove} and {@link #containsKey(Object) containsKey}
- * operations, assuming (approximate) uniform hashing and
- * that the number of entries does not exceed the number of buckets.  If the
- * number of entries exceeds the number of buckets or if the hash codes of the
- * objects are not uniformly distributed, these operations have a worst case
- * scenario that is proportional to the number of elements in the map
- * (<i>O(n)</i>).<p>
- *
- * Each bucket in the hash table has its own monitor, so two threads can 
- * safely operate on the map at the same time, often without incurring any 
- * monitor contention.  This means that you don't have to wrap instances
- * of this class with {@link java.util.Collections#synchronizedMap(Map)};
- * instances are already thread-safe.  Unfortunately, however, this means 
- * that this map implementation behaves in ways you may find disconcerting.  
- * Bulk operations, such as {@link #putAll(Map) putAll} or the
- * {@link Collection#retainAll(Collection) retainAll} operation in collection 
- * views, are <i>not</i> atomic.  If two threads are simultaneously 
- * executing 
- *
- * <pre>
- *   staticBucketMapInstance.putAll(map);
- * </pre>
- *
- * and
- *
- * <pre>
- *   staticBucketMapInstance.entrySet().removeAll(map.entrySet());
- * </pre>
- *
- * then the results are generally random.  Those two statement could cancel
- * each other out, leaving <code>staticBucketMapInstance</code> essentially 
- * unchanged, or they could leave some random subset of <code>map</code> in 
- * <code>staticBucketMapInstance</code>.<p>
- *
- * Also, much like an encyclopedia, the results of {@link #size()} and 
- * {@link #isEmpty()} are out-of-date as soon as they are produced.<p>
- *
- * The iterators returned by the collection views of this class are <i>not</i>
- * fail-fast.  They will <i>never</i> raise a 
- * {@link java.util.ConcurrentModificationException}.  Keys and values 
- * added to the map after the iterator is created do not necessarily appear
- * during iteration.  Similarly, the iterator does not necessarily fail to 
- * return keys and values that were removed after the iterator was created.<p>
- *
- * Finally, unlike {@link java.util.HashMap}-style implementations, this
- * class <i>never</i> rehashes the map.  The number of buckets is fixed 
- * at construction time and never altered.  Performance may degrade if 
- * you do not allocate enough buckets upfront.<p>
- *
- * The {@link #atomic(Runnable)} method is provided to allow atomic iterations
- * and bulk operations; however, overuse of {@link #atomic(Runnable) atomic}
- * will basically result in a map that's slower than an ordinary synchronized
- * {@link java.util.HashMap}.
- *
- * Use this class if you do not require reliable bulk operations and 
- * iterations, or if you can make your own guarantees about how bulk 
- * operations will affect the map.<p>
- *
- * @since Commons Collections 3.0 (previously in main package v2.1)
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- * 
- * @author Berin Loritsch
- * @author Gerhard Froehlich
- * @author Michael A. Smith
- * @author Paul Jack
- * @author Leo Sutic
- * @author Janek Bogucki
- * @author Kazuya Ujihara
- */
-public final class StaticBucketMap implements Map {
-
-    /** The default number of buckets to use */
-    private static final int DEFAULT_BUCKETS = 255;
-    /** The array of buckets, where the actual data is held */
-    private Node[] buckets;
-    /** The matching array of locks */
-    private Lock[] locks;
-
-    /**
-     * Initializes the map with the default number of buckets (255).
-     */
-    public StaticBucketMap() {
-        this(DEFAULT_BUCKETS);
-    }
-
-    /**
-     * Initializes the map with a specified number of buckets.  The number
-     * of buckets is never below 17, and is always an odd number (StaticBucketMap
-     * ensures this). The number of buckets is inversely proportional to the
-     * chances for thread contention.  The fewer buckets, the more chances for
-     * thread contention.  The more buckets the fewer chances for thread
-     * contention.
-     *
-     * @param numBuckets  the number of buckets for this map
-     */
-    public StaticBucketMap(int numBuckets) {
-        int size = Math.max(17, numBuckets);
-
-        // Ensure that bucketSize is never a power of 2 (to ensure maximal distribution)
-        if (size % 2 == 0) {
-            size--;
-        }
-
-        buckets = new Node[size];
-        locks = new Lock[size];
-
-        for (int i = 0; i < size; i++) {
-            locks[i] = new Lock();
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Determine the exact hash entry for the key.  The hash algorithm
-     * is rather simplistic, but it does the job:
-     *
-     * <pre>
-     *   He = |Hk mod n|
-     * </pre>
-     *
-     * <p>
-     *   He is the entry's hashCode, Hk is the key's hashCode, and n is
-     *   the number of buckets.
-     * </p>
-     */
-    private final int getHash(Object key) {
-        if (key == null) {
-            return 0;
-        }
-        int hash = key.hashCode();
-        hash += ~(hash << 15);
-        hash ^= (hash >>> 10);
-        hash += (hash << 3);
-        hash ^= (hash >>> 6);
-        hash += ~(hash << 11);
-        hash ^= (hash >>> 16);
-        hash %= buckets.length;
-        return (hash < 0) ? hash * -1 : hash;
-    }
-
-    /**
-     * Gets the current size of the map.
-     * The value is computed fresh each time the method is called.
-     * 
-     * @return the current size
-     */
-    public int size() {
-        int cnt = 0;
-
-        for (int i = 0; i < buckets.length; i++) {
-            cnt += locks[i].size;
-        }
-        return cnt;
-    }
-
-    /**
-     * Checks if the size is currently zero.
-     * 
-     * @return true if empty
-     */
-    public boolean isEmpty() {
-        return (size() == 0);
-    }
-
-    /**
-     * Gets the value associated with the key.
-     * 
-     * @param key  the key to retrieve
-     * @return the associated value
-     */
-    public Object get(final Object key) {
-        int hash = getHash(key);
-
-        synchronized (locks[hash]) {
-            Node n = buckets[hash];
-
-            while (n != null) {
-                if (n.key == key || (n.key != null && n.key.equals(key))) {
-                    return n.value;
-                }
-
-                n = n.next;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Checks if the map contains the specified key.
-     * 
-     * @param key  the key to check
-     * @return true if found
-     */
-    public boolean containsKey(final Object key) {
-        int hash = getHash(key);
-
-        synchronized (locks[hash]) {
-            Node n = buckets[hash];
-
-            while (n != null) {
-                if (n.key == key || (n.key != null && n.key.equals(key))) {
-                    return true;
-                }
-
-                n = n.next;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Checks if the map contains the specified value.
-     * 
-     * @param value  the value to check
-     * @return true if found
-     */
-    public boolean containsValue(final Object value) {
-        for (int i = 0; i < buckets.length; i++) {
-            synchronized (locks[i]) {
-                Node n = buckets[i];
-
-                while (n != null) {
-                    if (n.value == value || (n.value != null && n.value.equals(value))) {
-                        return true;
-                    }
-
-                    n = n.next;
-                }
-            }
-        }
-        return false;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Puts a new key value mapping into the map.
-     * 
-     * @param key  the key to use
-     * @param value  the value to use
-     * @return the previous mapping for the key
-     */
-    public Object put(final Object key, final Object value) {
-        int hash = getHash(key);
-
-        synchronized (locks[hash]) {
-            Node n = buckets[hash];
-
-            if (n == null) {
-                n = new Node();
-                n.key = key;
-                n.value = value;
-                buckets[hash] = n;
-                locks[hash].size++;
-                return null;
-            }
-
-            // Set n to the last node in the linked list.  Check each key along the way
-            //  If the key is found, then change the value of that node and return
-            //  the old value.
-            for (Node next = n; next != null; next = next.next) {
-                n = next;
-
-                if (n.key == key || (n.key != null && n.key.equals(key))) {
-                    Object returnVal = n.value;
-                    n.value = value;
-                    return returnVal;
-                }
-            }
-
-            // The key was not found in the current list of nodes, add it to the end
-            //  in a new node.
-            Node newNode = new Node();
-            newNode.key = key;
-            newNode.value = value;
-            n.next = newNode;
-            locks[hash].size++;
-        }
-        return null;
-    }
-
-    /**
-     * Removes the specified key from the map.
-     * 
-     * @param key  the key to remove
-     * @return the previous value at this key
-     */
-    public Object remove(Object key) {
-        int hash = getHash(key);
-
-        synchronized (locks[hash]) {
-            Node n = buckets[hash];
-            Node prev = null;
-
-            while (n != null) {
-                if (n.key == key || (n.key != null && n.key.equals(key))) {
-                    // Remove this node from the linked list of nodes.
-                    if (null == prev) {
-                        // This node was the head, set the next node to be the new head.
-                        buckets[hash] = n.next;
-                    } else {
-                        // Set the next node of the previous node to be the node after this one.
-                        prev.next = n.next;
-                    }
-                    locks[hash].size--;
-                    return n.value;
-                }
-
-                prev = n;
-                n = n.next;
-            }
-        }
-        return null;
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the key set.
-     * 
-     * @return the key set
-     */
-    public Set keySet() {
-        return new KeySet();
-    }
-
-    /**
-     * Gets the values.
-     * 
-     * @return the values
-     */
-    public Collection values() {
-        return new Values();
-    }
-
-    /**
-     * Gets the entry set.
-     * 
-     * @return the entry set
-     */
-    public Set entrySet() {
-        return new EntrySet();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Puts all the entries from the specified map into this map.
-     * This operation is <b>not atomic</b> and may have undesired effects.
-     * 
-     * @param map  the map of entries to add
-     */
-    public void putAll(Map map) {
-        Iterator i = map.keySet().iterator();
-
-        while (i.hasNext()) {
-            Object key = i.next();
-            put(key, map.get(key));
-        }
-    }
-
-    /**
-     * Clears the map of all entries.
-     */
-    public void clear() {
-        for (int i = 0; i < buckets.length; i++) {
-            Lock lock = locks[i];
-            synchronized (lock) {
-                buckets[i] = null;
-                lock.size = 0;
-            }
-        }
-    }
-
-    /**
-     * Compares this map to another, as per the Map specification.
-     * 
-     * @param obj  the object to compare to
-     * @return true if equal
-     */
-    public boolean equals(Object obj) {
-        if (obj == this) {
-            return true;
-        }
-        if (obj instanceof Map == false) {
-            return false;
-        }
-        Map other = (Map) obj;
-        return entrySet().equals(other.entrySet());
-    }
-
-    /**
-     * Gets the hash code, as per the Map specification.
-     * 
-     * @return the hash code
-     */
-    public int hashCode() {
-        int hashCode = 0;
-
-        for (int i = 0; i < buckets.length; i++) {
-            synchronized (locks[i]) {
-                Node n = buckets[i];
-
-                while (n != null) {
-                    hashCode += n.hashCode();
-                    n = n.next;
-                }
-            }
-        }
-        return hashCode;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * The Map.Entry for the StaticBucketMap.
-     */
-    private static final class Node implements Map.Entry, KeyValue {
-        protected Object key;
-        protected Object value;
-        protected Node next;
-
-        public Object getKey() {
-            return key;
-        }
-
-        public Object getValue() {
-            return value;
-        }
-
-        public int hashCode() {
-            return ((key == null ? 0 : key.hashCode()) ^
-                    (value == null ? 0 : value.hashCode()));
-        }
-
-        public boolean equals(Object obj) {
-            if (obj == this) {
-                return true;
-            }
-            if (obj instanceof Map.Entry == false) {
-                return false;
-            }
-
-            Map.Entry e2 = (Map.Entry) obj;
-            return (
-                (key == null ? e2.getKey() == null : key.equals(e2.getKey())) &&
-                (value == null ? e2.getValue() == null : value.equals(e2.getValue())));
-        }
-
-        public Object setValue(Object obj) {
-            Object retVal = value;
-            value = obj;
-            return retVal;
-        }
-    }
-
-
-    /**
-     * The lock object, which also includes a count of the nodes in this lock.
-     */
-    private final static class Lock {
-        public int size;
-    }
-
-
-    //-----------------------------------------------------------------------
-    private class EntryIterator implements Iterator {
-
-        private ArrayList current = new ArrayList();
-        private int bucket;
-        private Map.Entry last;
-
-
-        public boolean hasNext() {
-            if (current.size() > 0) return true;
-            while (bucket < buckets.length) {
-                synchronized (locks[bucket]) {
-                    Node n = buckets[bucket];
-                    while (n != null) {
-                        current.add(n);
-                        n = n.next;
-                    }
-                    bucket++;
-                    if (current.size() > 0) return true;
-                }
-            }
-            return false;
-        }
-
-        protected Map.Entry nextEntry() {
-            if (!hasNext()) throw new NoSuchElementException();
-            last = (Map.Entry)current.remove(current.size() - 1);
-            return last;
-        }
-
-        public Object next() {
-            return nextEntry();
-        }
-
-        public void remove() {
-            if (last == null) throw new IllegalStateException();
-            StaticBucketMap.this.remove(last.getKey());
-            last = null;
-        }
-
-    }
-
-    private class ValueIterator extends EntryIterator {
-
-        public Object next() {
-            return nextEntry().getValue();
-        }
-
-    }
-
-    private class KeyIterator extends EntryIterator {
-
-        public Object next() {
-            return nextEntry().getKey();
-        }
-
-    }
-
-    private class EntrySet extends AbstractSet {
-
-        public int size() {
-            return StaticBucketMap.this.size();
-        }
-
-        public void clear() {
-            StaticBucketMap.this.clear();
-        }
-
-        public Iterator iterator() {
-            return new EntryIterator();
-        }
-
-        public boolean contains(Object obj) {
-            Map.Entry entry = (Map.Entry) obj;
-            int hash = getHash(entry.getKey());
-            synchronized (locks[hash]) {
-                for (Node n = buckets[hash]; n != null; n = n.next) {
-                    if (n.equals(entry)) return true;
-                }
-            }
-            return false;
-        }
-
-        public boolean remove(Object obj) {
-            if (obj instanceof Map.Entry == false) {
-                return false;
-            }
-            Map.Entry entry = (Map.Entry) obj;
-            int hash = getHash(entry.getKey());
-            synchronized (locks[hash]) {
-                for (Node n = buckets[hash]; n != null; n = n.next) {
-                    if (n.equals(entry)) {
-                        StaticBucketMap.this.remove(n.getKey());
-                        return true;
-                    }
-                }
-            }
-            return false;
-        }
-
-    }
-
-
-    private class KeySet extends AbstractSet {
-
-        public int size() {
-            return StaticBucketMap.this.size();
-        }
-
-        public void clear() {
-            StaticBucketMap.this.clear();
-        }
-
-        public Iterator iterator() {
-            return new KeyIterator();
-        }
-
-        public boolean contains(Object obj) {
-            return StaticBucketMap.this.containsKey(obj);
-        }
-
-        public boolean remove(Object obj) {
-            int hash = getHash(obj);
-            synchronized (locks[hash]) {
-                for (Node n = buckets[hash]; n != null; n = n.next) {
-                    Object k = n.getKey();
-                    if ((k == obj) || ((k != null) && k.equals(obj))) {
-                        StaticBucketMap.this.remove(k);
-                        return true;
-                    }
-                }
-            }
-            return false;
-
-        }
-
-    }
-
-
-    private class Values extends AbstractCollection {
-
-        public int size() {
-            return StaticBucketMap.this.size();
-        }
-
-        public void clear() {
-            StaticBucketMap.this.clear();
-        }
-
-        public Iterator iterator() {
-            return new ValueIterator();
-        }
-
-    }
-
-
-    /**
-     *  Prevents any operations from occurring on this map while the
-     *  given {@link Runnable} executes.  This method can be used, for
-     *  instance, to execute a bulk operation atomically: 
-     *
-     *  <pre>
-     *    staticBucketMapInstance.atomic(new Runnable() {
-     *        public void run() {
-     *            staticBucketMapInstance.putAll(map);
-     *        }
-     *    });
-     *  </pre>
-     *
-     *  It can also be used if you need a reliable iterator:
-     *
-     *  <pre>
-     *    staticBucketMapInstance.atomic(new Runnable() {
-     *        public void run() {
-     *            Iterator iterator = staticBucketMapInstance.iterator();
-     *            while (iterator.hasNext()) {
-     *                foo(iterator.next();
-     *            }
-     *        }
-     *    });
-     *  </pre>
-     *
-     *  <b>Implementation note:</b> This method requires a lot of time
-     *  and a ton of stack space.  Essentially a recursive algorithm is used
-     *  to enter each bucket's monitor.  If you have twenty thousand buckets
-     *  in your map, then the recursive method will be invoked twenty thousand
-     *  times.  You have been warned.
-     *
-     *  @param r  the code to execute atomically
-     */
-    public void atomic(Runnable r) {
-        if (r == null) throw new NullPointerException();
-        atomic(r, 0);
-    }
-
-    private void atomic(Runnable r, int bucket) {
-        if (bucket >= buckets.length) {
-            r.run();
-            return;
-        }
-        synchronized (locks[bucket]) {
-            atomic(r, bucket + 1);
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/TransformedMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/TransformedMap.java
deleted file mode 100755
index cd2de88..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/TransformedMap.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- *  Copyright 2003-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.commons.collections.Transformer;
-
-/**
- * Decorates another <code>Map</code> to transform objects that are added.
- * <p>
- * The Map put methods and Map.Entry setValue method are affected by this class.
- * Thus objects must be removed or searched for using their transformed form.
- * For example, if the transformation converts Strings to Integers, you must
- * use the Integer form to remove objects.
- * <p>
- * <strong>Note that TransformedMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. The simplest approach is to wrap this map
- * using {@link java.util.Collections#synchronizedMap(Map)}. This class may throw 
- * exceptions when accessed by concurrent threads without synchronization.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- * 
- * @author Stephen Colebourne
- */
-public class TransformedMap
-        extends AbstractInputCheckedMapDecorator
-        implements Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 7023152376788900464L;
-
-    /** The transformer to use for the key */
-    protected final Transformer keyTransformer;
-    /** The transformer to use for the value */
-    protected final Transformer valueTransformer;
-
-    /**
-     * Factory method to create a transforming map.
-     * <p>
-     * If there are any elements already in the map being decorated, they
-     * are NOT transformed.
-     * Constrast this with {@link #decorateTransform}.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param keyTransformer  the transformer to use for key conversion, null means no transformation
-     * @param valueTransformer  the transformer to use for value conversion, null means no transformation
-     * @throws IllegalArgumentException if map is null
-     */
-    public static Map decorate(Map map, Transformer keyTransformer, Transformer valueTransformer) {
-        return new TransformedMap(map, keyTransformer, valueTransformer);
-    }
-
-    /**
-     * Factory method to create a transforming map that will transform
-     * existing contents of the specified map.
-     * <p>
-     * If there are any elements already in the map being decorated, they
-     * will be transformed by this method.
-     * Constrast this with {@link #decorate}.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param keyTransformer  the transformer to use for key conversion, null means no transformation
-     * @param valueTransformer  the transformer to use for value conversion, null means no transformation
-     * @throws IllegalArgumentException if map is null
-     * @since Commons Collections 3.2
-     */
-    public static Map decorateTransform(Map map, Transformer keyTransformer, Transformer valueTransformer) {
-        TransformedMap decorated = new TransformedMap(map, keyTransformer, valueTransformer);
-        if (map.size() > 0) {
-            Map transformed = decorated.transformMap(map);
-            decorated.clear();
-            decorated.getMap().putAll(transformed);  // avoids double transformation
-        }
-        return decorated;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * <p>
-     * If there are any elements already in the collection being decorated, they
-     * are NOT transformed.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param keyTransformer  the transformer to use for key conversion, null means no conversion
-     * @param valueTransformer  the transformer to use for value conversion, null means no conversion
-     * @throws IllegalArgumentException if map is null
-     */
-    protected TransformedMap(Map map, Transformer keyTransformer, Transformer valueTransformer) {
-        super(map);
-        this.keyTransformer = keyTransformer;
-        this.valueTransformer = valueTransformer;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the map out using a custom routine.
-     * 
-     * @param out  the output stream
-     * @throws IOException
-     * @since Commons Collections 3.1
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeObject(map);
-    }
-
-    /**
-     * Read the map in using a custom routine.
-     * 
-     * @param in  the input stream
-     * @throws IOException
-     * @throws ClassNotFoundException
-     * @since Commons Collections 3.1
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        map = (Map) in.readObject();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Transforms a key.
-     * <p>
-     * The transformer itself may throw an exception if necessary.
-     * 
-     * @param object  the object to transform
-     * @throws the transformed object
-     */
-    protected Object transformKey(Object object) {
-        if (keyTransformer == null) {
-            return object;
-        }
-        return keyTransformer.transform(object);
-    }
-
-    /**
-     * Transforms a value.
-     * <p>
-     * The transformer itself may throw an exception if necessary.
-     * 
-     * @param object  the object to transform
-     * @throws the transformed object
-     */
-    protected Object transformValue(Object object) {
-        if (valueTransformer == null) {
-            return object;
-        }
-        return valueTransformer.transform(object);
-    }
-
-    /**
-     * Transforms a map.
-     * <p>
-     * The transformer itself may throw an exception if necessary.
-     * 
-     * @param map  the map to transform
-     * @throws the transformed object
-     */
-    protected Map transformMap(Map map) {
-        if (map.isEmpty()) {
-            return map;
-        }
-        Map result = new LinkedMap(map.size());
-        for (Iterator it = map.entrySet().iterator(); it.hasNext(); ) {
-            Map.Entry entry = (Map.Entry) it.next();
-            result.put(transformKey(entry.getKey()), transformValue(entry.getValue()));
-        }
-        return result;
-    }
-
-    /**
-     * Override to transform the value when using <code>setValue</code>.
-     * 
-     * @param value  the value to transform
-     * @return the transformed value
-     * @since Commons Collections 3.1
-     */
-    protected Object checkSetValue(Object value) {
-        return valueTransformer.transform(value);
-    }
-
-    /**
-     * Override to only return true when there is a value transformer.
-     * 
-     * @return true if a value transformer is in use
-     * @since Commons Collections 3.1
-     */
-    protected boolean isSetValueChecking() {
-        return (valueTransformer != null);
-    }
-
-    //-----------------------------------------------------------------------
-    public Object put(Object key, Object value) {
-        key = transformKey(key);
-        value = transformValue(value);
-        return getMap().put(key, value);
-    }
-
-    public void putAll(Map mapToCopy) {
-        mapToCopy = transformMap(mapToCopy);
-        getMap().putAll(mapToCopy);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/TransformedSortedMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/TransformedSortedMap.java
deleted file mode 100755
index 89e6155..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/TransformedSortedMap.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- *  Copyright 2003-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.util.Comparator;
-import java.util.Map;
-import java.util.SortedMap;
-
-import org.apache.commons.collections.Transformer;
-
-/**
- * Decorates another <code>SortedMap </code> to transform objects that are added.
- * <p>
- * The Map put methods and Map.Entry setValue method are affected by this class.
- * Thus objects must be removed or searched for using their transformed form.
- * For example, if the transformation converts Strings to Integers, you must
- * use the Integer form to remove objects.
- * <p>
- * <strong>Note that TransformedSortedMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. The simplest approach is to wrap this map
- * using {@link java.util.Collections#synchronizedSortedMap}. This class may throw 
- * exceptions when accessed by concurrent threads without synchronization.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- * 
- * @author Stephen Colebourne
- */
-public class TransformedSortedMap
-        extends TransformedMap
-        implements SortedMap {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -8751771676410385778L;
-    
-    /**
-     * Factory method to create a transforming sorted map.
-     * <p>
-     * If there are any elements already in the map being decorated, they
-     * are NOT transformed.
-     * Constrast this with {@link #decorateTransform}.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param keyTransformer  the predicate to validate the keys, null means no transformation
-     * @param valueTransformer  the predicate to validate to values, null means no transformation
-     * @throws IllegalArgumentException if the map is null
-     */
-    public static SortedMap decorate(SortedMap map, Transformer keyTransformer, Transformer valueTransformer) {
-        return new TransformedSortedMap(map, keyTransformer, valueTransformer);
-    }
-
-    /**
-     * Factory method to create a transforming sorted map that will transform
-     * existing contents of the specified map.
-     * <p>
-     * If there are any elements already in the map being decorated, they
-     * will be transformed by this method.
-     * Constrast this with {@link #decorate}.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param keyTransformer  the transformer to use for key conversion, null means no transformation
-     * @param valueTransformer  the transformer to use for value conversion, null means no transformation
-     * @throws IllegalArgumentException if map is null
-     * @since Commons Collections 3.2
-     */
-    public static SortedMap decorateTransform(SortedMap map, Transformer keyTransformer, Transformer valueTransformer) {
-        TransformedSortedMap decorated = new TransformedSortedMap(map, keyTransformer, valueTransformer);
-        if (map.size() > 0) {
-            Map transformed = decorated.transformMap(map);
-            decorated.clear();
-            decorated.getMap().putAll(transformed);  // avoids double transformation
-        }
-        return decorated;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * <p>
-     * If there are any elements already in the collection being decorated, they
-     * are NOT transformed.</p>
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param keyTransformer  the predicate to validate the keys, null means no transformation
-     * @param valueTransformer  the predicate to validate to values, null means no transformation
-     * @throws IllegalArgumentException if the map is null
-     */
-    protected TransformedSortedMap(SortedMap map, Transformer keyTransformer, Transformer valueTransformer) {
-        super(map, keyTransformer, valueTransformer);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets the map being decorated.
-     * 
-     * @return the decorated map
-     */
-    protected SortedMap getSortedMap() {
-        return (SortedMap) map;
-    }
-
-    //-----------------------------------------------------------------------
-    public Object firstKey() {
-        return getSortedMap().firstKey();
-    }
-
-    public Object lastKey() {
-        return getSortedMap().lastKey();
-    }
-
-    public Comparator comparator() {
-        return getSortedMap().comparator();
-    }
-
-    public SortedMap subMap(Object fromKey, Object toKey) {
-        SortedMap map = getSortedMap().subMap(fromKey, toKey);
-        return new TransformedSortedMap(map, keyTransformer, valueTransformer);
-    }
-
-    public SortedMap headMap(Object toKey) {
-        SortedMap map = getSortedMap().headMap(toKey);
-        return new TransformedSortedMap(map, keyTransformer, valueTransformer);
-    }
-
-    public SortedMap tailMap(Object fromKey) {
-        SortedMap map = getSortedMap().tailMap(fromKey);
-        return new TransformedSortedMap(map, keyTransformer, valueTransformer);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/TypedMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/TypedMap.java
deleted file mode 100755
index 1b11c5c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/TypedMap.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.util.Map;
-
-import org.apache.commons.collections.functors.InstanceofPredicate;
-
-/**
- * Decorates another <code>Map</code> to validate that elements added
- * are of a specific type.
- * <p>
- * The validation of additions is performed via an instanceof test against 
- * a specified <code>Class</code>. If an object cannot be added to the
- * collection, an IllegalArgumentException is thrown.
- * <p>
- * <strong>Note that TypedMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. The simplest approach is to wrap this map
- * using {@link java.util.Collections#synchronizedMap(Map)}. This class may throw 
- * exceptions when accessed by concurrent threads without synchronization.
- * <p>
- * The returned implementation is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:29 $
- * 
- * @author Stephen Colebourne
- * @author Matthew Hawthorne
- */
-public class TypedMap {
-
-    /**
-     * Factory method to create a typed map.
-     * <p>
-     * If there are any elements already in the map being decorated, they
-     * are validated.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param keyType  the type to allow as keys, must not be null
-     * @param valueType  the type to allow as values, must not be null
-     * @throws IllegalArgumentException if list or type is null
-     * @throws IllegalArgumentException if the list contains invalid elements
-     */
-    public static Map decorate(Map map, Class keyType, Class valueType) {
-        return new PredicatedMap(
-            map,
-            InstanceofPredicate.getInstance(keyType),
-            InstanceofPredicate.getInstance(valueType)
-        );
-    }
-
-    /**
-     * Restrictive constructor.
-     */
-    protected TypedMap() {
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/TypedSortedMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/TypedSortedMap.java
deleted file mode 100755
index b2c8de6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/TypedSortedMap.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.util.SortedMap;
-
-import org.apache.commons.collections.functors.InstanceofPredicate;
-
-/**
- * Decorates another <code>SortedMap</code> to validate that elements added
- * are of a specific type.
- * <p>
- * The validation of additions is performed via an instanceof test against 
- * a specified <code>Class</code>. If an object cannot be added to the
- * collection, an IllegalArgumentException is thrown.
- * <p>
- * <strong>Note that TypedSortedMap is not synchronized and is not thread-safe.</strong>
- * If you wish to use this map from multiple threads concurrently, you must use
- * appropriate synchronization. The simplest approach is to wrap this map
- * using {@link java.util.Collections#synchronizedSortedMap}. This class may throw 
- * exceptions when accessed by concurrent threads without synchronization.
- * <p>
- * The returned implementation is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- * 
- * @author Stephen Colebourne
- * @author Matthew Hawthorne
- */
-public class TypedSortedMap {
-
-    /**
-     * Factory method to create a typed sorted map.
-     * <p>
-     * If there are any elements already in the map being decorated, they
-     * are validated.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param keyType  the type to allow as keys, must not be null
-     * @param valueType  the type to allow as values, must not be null
-     * @throws IllegalArgumentException if list or type is null
-     * @throws IllegalArgumentException if the list contains invalid elements
-     */
-    public static SortedMap decorate(SortedMap map, Class keyType, Class valueType) {
-        return new PredicatedSortedMap(
-            map,
-            InstanceofPredicate.getInstance(keyType),
-            InstanceofPredicate.getInstance(valueType)
-        );
-    }
-
-    /**
-     * Restrictive constructor.
-     */
-    protected TypedSortedMap() {
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/UnmodifiableEntrySet.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/UnmodifiableEntrySet.java
deleted file mode 100755
index c031a63..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/UnmodifiableEntrySet.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.lang.reflect.Array;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.collections.Unmodifiable;
-import org.apache.commons.collections.iterators.AbstractIteratorDecorator;
-import org.apache.commons.collections.keyvalue.AbstractMapEntryDecorator;
-import org.apache.commons.collections.set.AbstractSetDecorator;
-
-/**
- * Decorates a map entry <code>Set</code> to ensure it can't be altered.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:29 $
- * 
- * @author Stephen Colebourne
- */
-public final class UnmodifiableEntrySet
-        extends AbstractSetDecorator implements Unmodifiable {
-
-    /**
-     * Factory method to create an unmodifiable set of Map Entry objects.
-     * 
-     * @param set  the set to decorate, must not be null
-     * @throws IllegalArgumentException if set is null
-     */
-    public static Set decorate(Set set) {
-        if (set instanceof Unmodifiable) {
-            return set;
-        }
-        return new UnmodifiableEntrySet(set);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param set  the set to decorate, must not be null
-     * @throws IllegalArgumentException if set is null
-     */
-    private UnmodifiableEntrySet(Set set) {
-        super(set);
-    }
-
-    //-----------------------------------------------------------------------
-    public boolean add(Object object) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean addAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void clear() {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean remove(Object object) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean removeAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean retainAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    //-----------------------------------------------------------------------
-    public Iterator iterator() {
-        return new UnmodifiableEntrySetIterator(collection.iterator());
-    }
-    
-    public Object[] toArray() {
-        Object[] array = collection.toArray();
-        for (int i = 0; i < array.length; i++) {
-            array[i] = new UnmodifiableEntry((Map.Entry) array[i]);
-        }
-        return array;
-    }
-    
-    public Object[] toArray(Object array[]) {
-        Object[] result = array;
-        if (array.length > 0) {
-            // we must create a new array to handle multi-threaded situations
-            // where another thread could access data before we decorate it
-            result = (Object[]) Array.newInstance(array.getClass().getComponentType(), 0);
-        }
-        result = collection.toArray(result);
-        for (int i = 0; i < result.length; i++) {
-            result[i] = new UnmodifiableEntry((Map.Entry) result[i]);
-        }
-
-        // check to see if result should be returned straight
-        if (result.length > array.length) {
-            return result;
-        }
-
-        // copy back into input array to fulfil the method contract
-        System.arraycopy(result, 0, array, 0, result.length);
-        if (array.length > result.length) {
-            array[result.length] = null;
-        }
-        return array;
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Implementation of an entry set iterator.
-     */
-    final static class UnmodifiableEntrySetIterator extends AbstractIteratorDecorator {
-        
-        protected UnmodifiableEntrySetIterator(Iterator iterator) {
-            super(iterator);
-        }
-        
-        public Object next() {
-            Map.Entry entry = (Map.Entry) iterator.next();
-            return new UnmodifiableEntry(entry);
-        }
-        
-        public void remove() {
-            throw new UnsupportedOperationException();
-        }
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Implementation of a map entry that is unmodifiable.
-     */
-    final static class UnmodifiableEntry extends AbstractMapEntryDecorator {
-
-        protected UnmodifiableEntry(Map.Entry entry) {
-            super(entry);
-        }
-
-        public Object setValue(Object obj) {
-            throw new UnsupportedOperationException();
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/UnmodifiableMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/UnmodifiableMap.java
deleted file mode 100755
index 0e38a7b..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/UnmodifiableMap.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.collections.IterableMap;
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.Unmodifiable;
-import org.apache.commons.collections.collection.UnmodifiableCollection;
-import org.apache.commons.collections.iterators.EntrySetMapIterator;
-import org.apache.commons.collections.iterators.UnmodifiableMapIterator;
-import org.apache.commons.collections.set.UnmodifiableSet;
-
-/**
- * Decorates another <code>Map</code> to ensure it can't be altered.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:29 $
- * 
- * @author Stephen Colebourne
- */
-public final class UnmodifiableMap
-        extends AbstractMapDecorator
-        implements IterableMap, Unmodifiable, Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 2737023427269031941L;
-
-    /**
-     * Factory method to create an unmodifiable map.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if map is null
-     */
-    public static Map decorate(Map map) {
-        if (map instanceof Unmodifiable) {
-            return map;
-        }
-        return new UnmodifiableMap(map);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if map is null
-     */
-    private UnmodifiableMap(Map map) {
-        super(map);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the map out using a custom routine.
-     * 
-     * @param out  the output stream
-     * @throws IOException
-     * @since Commons Collections 3.1
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeObject(map);
-    }
-
-    /**
-     * Read the map in using a custom routine.
-     * 
-     * @param in  the input stream
-     * @throws IOException
-     * @throws ClassNotFoundException
-     * @since Commons Collections 3.1
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        map = (Map) in.readObject();
-    }
-
-    //-----------------------------------------------------------------------
-    public void clear() {
-        throw new UnsupportedOperationException();
-    }
-
-    public Object put(Object key, Object value) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void putAll(Map mapToCopy) {
-        throw new UnsupportedOperationException();
-    }
-
-    public Object remove(Object key) {
-        throw new UnsupportedOperationException();
-    }
-
-    public MapIterator mapIterator() {
-        if (map instanceof IterableMap) {
-            MapIterator it = ((IterableMap) map).mapIterator();
-            return UnmodifiableMapIterator.decorate(it);
-        } else {
-            MapIterator it = new EntrySetMapIterator(map);
-            return UnmodifiableMapIterator.decorate(it);
-        }
-    }
-
-    public Set entrySet() {
-        Set set = super.entrySet();
-        return UnmodifiableEntrySet.decorate(set);
-    }
-
-    public Set keySet() {
-        Set set = super.keySet();
-        return UnmodifiableSet.decorate(set);
-    }
-
-    public Collection values() {
-        Collection coll = super.values();
-        return UnmodifiableCollection.decorate(coll);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/UnmodifiableOrderedMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/UnmodifiableOrderedMap.java
deleted file mode 100755
index 3911e2d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/UnmodifiableOrderedMap.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.collections.MapIterator;
-import org.apache.commons.collections.OrderedMap;
-import org.apache.commons.collections.OrderedMapIterator;
-import org.apache.commons.collections.Unmodifiable;
-import org.apache.commons.collections.collection.UnmodifiableCollection;
-import org.apache.commons.collections.iterators.UnmodifiableMapIterator;
-import org.apache.commons.collections.iterators.UnmodifiableOrderedMapIterator;
-import org.apache.commons.collections.set.UnmodifiableSet;
-
-/**
- * Decorates another <code>OrderedMap</code> to ensure it can't be altered.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:29 $
- * 
- * @author Stephen Colebourne
- */
-public final class UnmodifiableOrderedMap
-        extends AbstractOrderedMapDecorator
-        implements Unmodifiable, Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 8136428161720526266L;
-
-    /**
-     * Factory method to create an unmodifiable sorted map.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if map is null
-     */
-    public static OrderedMap decorate(OrderedMap map) {
-        if (map instanceof Unmodifiable) {
-            return map;
-        }
-        return new UnmodifiableOrderedMap(map);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if map is null
-     */
-    private UnmodifiableOrderedMap(OrderedMap map) {
-        super(map);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the map out using a custom routine.
-     * 
-     * @param out  the output stream
-     * @throws IOException
-     * @since Commons Collections 3.1
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeObject(map);
-    }
-
-    /**
-     * Read the map in using a custom routine.
-     * 
-     * @param in  the input stream
-     * @throws IOException
-     * @throws ClassNotFoundException
-     * @since Commons Collections 3.1
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        map = (Map) in.readObject();
-    }
-
-    //-----------------------------------------------------------------------
-    public MapIterator mapIterator() {
-        MapIterator it = getOrderedMap().mapIterator();
-        return UnmodifiableMapIterator.decorate(it);
-    }
-
-    public OrderedMapIterator orderedMapIterator() {
-        OrderedMapIterator it = getOrderedMap().orderedMapIterator();
-        return UnmodifiableOrderedMapIterator.decorate(it);
-    }
-
-    public void clear() {
-        throw new UnsupportedOperationException();
-    }
-
-    public Object put(Object key, Object value) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void putAll(Map mapToCopy) {
-        throw new UnsupportedOperationException();
-    }
-
-    public Object remove(Object key) {
-        throw new UnsupportedOperationException();
-    }
-
-    public Set entrySet() {
-        Set set = super.entrySet();
-        return UnmodifiableEntrySet.decorate(set);
-    }
-
-    public Set keySet() {
-        Set set = super.keySet();
-        return UnmodifiableSet.decorate(set);
-    }
-
-    public Collection values() {
-        Collection coll = super.values();
-        return UnmodifiableCollection.decorate(coll);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/UnmodifiableSortedMap.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/UnmodifiableSortedMap.java
deleted file mode 100755
index a767697..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/UnmodifiableSortedMap.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.map;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedMap;
-
-import org.apache.commons.collections.Unmodifiable;
-import org.apache.commons.collections.collection.UnmodifiableCollection;
-import org.apache.commons.collections.set.UnmodifiableSet;
-
-/**
- * Decorates another <code>SortedMap</code> to ensure it can't be altered.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:30 $
- * 
- * @author Stephen Colebourne
- */
-public final class UnmodifiableSortedMap
-        extends AbstractSortedMapDecorator
-        implements Unmodifiable, Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 5805344239827376360L;
-
-    /**
-     * Factory method to create an unmodifiable sorted map.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if map is null
-     */
-    public static SortedMap decorate(SortedMap map) {
-        if (map instanceof Unmodifiable) {
-            return map;
-        }
-        return new UnmodifiableSortedMap(map);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if map is null
-     */
-    private UnmodifiableSortedMap(SortedMap map) {
-        super(map);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the map out using a custom routine.
-     * 
-     * @param out  the output stream
-     * @throws IOException
-     * @since Commons Collections 3.1
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeObject(map);
-    }
-
-    /**
-     * Read the map in using a custom routine.
-     * 
-     * @param in  the input stream
-     * @throws IOException
-     * @throws ClassNotFoundException
-     * @since Commons Collections 3.1
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        map = (Map) in.readObject();
-    }
-
-    //-----------------------------------------------------------------------
-    public void clear() {
-        throw new UnsupportedOperationException();
-    }
-
-    public Object put(Object key, Object value) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void putAll(Map mapToCopy) {
-        throw new UnsupportedOperationException();
-    }
-
-    public Object remove(Object key) {
-        throw new UnsupportedOperationException();
-    }
-
-    public Set entrySet() {
-        Set set = super.entrySet();
-        return UnmodifiableEntrySet.decorate(set);
-    }
-
-    public Set keySet() {
-        Set set = super.keySet();
-        return UnmodifiableSet.decorate(set);
-    }
-
-    public Collection values() {
-        Collection coll = super.values();
-        return UnmodifiableCollection.decorate(coll);
-    }
-
-    //-----------------------------------------------------------------------
-    public Object firstKey() {
-        return getSortedMap().firstKey();
-    }
-
-    public Object lastKey() {
-        return getSortedMap().lastKey();
-    }
-
-    public Comparator comparator() {
-        return getSortedMap().comparator();
-    }
-
-    public SortedMap subMap(Object fromKey, Object toKey) {
-        SortedMap map = getSortedMap().subMap(fromKey, toKey);
-        return new UnmodifiableSortedMap(map);
-    }
-
-    public SortedMap headMap(Object toKey) {
-        SortedMap map = getSortedMap().headMap(toKey);
-        return new UnmodifiableSortedMap(map);
-    }
-
-    public SortedMap tailMap(Object fromKey) {
-        SortedMap map = getSortedMap().tailMap(fromKey);
-        return new UnmodifiableSortedMap(map);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/package.html b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/package.html
deleted file mode 100755
index de1db3d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/map/package.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!-- $Id: package.html,v 1.1 2009/05/27 22:16:30 mparker Exp $ -->
- <!--
-   Copyright 2003-2004 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-  -->
-<BODY>
-<p>
-This package contains implementations of the 
-{@link java.util.Map Map},
-{@link org.apache.commons.collections.IterableMap IterableMap},
-{@link org.apache.commons.collections.OrderedMap OrderedMap} and
-{@link java.util.SortedMap SortedMap} interfaces.
-A Map provides a lookup from a key to a value.
-A number of implementations also support the new MapIterator interface that enables
-simple iteration of map keys and values.
-<p>
-The following implementations are provided:
-<ul>
-<li>CaseInsensitiveMap - map that compares keys in a case insensitive way
-<li>CompositeMap - map that combines multiple maps into a single view
-<li>HashedMap - general purpose HashMap replacement supporting MapIterator
-<li>IdentityMap - map that uses == for comparison instead of equals()
-<li>Flat3Map - designed for good performance at size 3 or less
-<li>LinkedMap - a hash map that maintains insertion order, supporting OrderedMapIterator
-<li>MultiKeyMap - map that provides special methods for using more than one key to access the value
-<li>ReferenceMap - allows the garbage collector to collect keys and values using equals() for comparison
-<li>ReferenceIdentityMap - allows the garbage collector to collect keys and values using == for comparison
-<li>SingletonMap - a fully featured map to hold one key-value pair
-<li>StaticBucketMap - internally synchronized and designed for thread-contentious environments
-</ul>
-<p>
-The following decorators are provided:
-<ul>
-<li>Unmodifiable - ensures the collection cannot be altered
-<li>Predicated - ensures that only elements that are valid according to a predicate can be added
-<li>Typed - ensures that only elements that are of a specific type can be added
-<li>Transformed - transforms each element added
-<li>FixedSize - ensures that the size of the map cannot change
-<li>Lazy - creates objects in the map on demand
-<li>ListOrdered - ensures that insertion order is retained
-</ul>
-</pre>
-</BODY>
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/overview.html b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/overview.html
deleted file mode 100755
index 3d82baf..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/overview.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<!-- $Id: overview.html,v 1.1 2009/05/27 22:16:18 mparker Exp $ -->
- <!--
-   Copyright 2003-2004 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-  -->
-<body>
-  <p>
-     Commons-Collections contains implementations, enhancements and utilities
-     that complement the Java Collections Framework.
-  </p>
-  <p>
-     The Apache Jakarta Commons Collections Framework component adds a significant
-     amount of enhancements to the standard JDK collections. These enhancements
-     come in the form of new interfaces, new implementations and utility classes.
-  </p>
-  <p>
-     See also the <code>java.util</code> package for the standard Java collections.
-  </p>
-     
-  <h4>Main features</h4>
-  <p>
-     Commons-Collections defines a number of key interfaces:
-  </p>
-  <table border="1" cellspacing="0" cellpadding="3">
-  <tr bgcolor="#CCCCFF" class="TableHeadingColor">
-    <th>Interface</th><th>Description</th>
-  </tr>
-  <tr>
-    <td>
-      {@link org.apache.commons.collections.Bag}
-    </td>
-    <td valign="top">
-      A new <code>Collection</code> subinterface that stores each object together
-      with the number of occurances. Methods are provided to get the number of
-      occurances, and to add and remove a certain number of that object.
-    </td>
-  </tr>
-  <tr>
-    <td>
-      {@link org.apache.commons.collections.Buffer}
-    </td>
-    <td valign="top">
-      A new <code>Collection</code> subinterface that allows objects to be removed
-      in some well-defined order. Methods enable the next item to be peeked and removed.
-    </td>
-  </tr>
-  <tr>
-    <td>
-      {@link org.apache.commons.collections.BidiMap}
-    </td>
-    <td valign="top">
-      A new <code>Map</code> subinterface that allows lookup from key to value and
-      from value to key with equal ease.
-    </td>
-  </tr>
-  <tr>
-    <td>
-      {@link org.apache.commons.collections.OrderedMap}
-    </td>
-    <td valign="top">
-      A new <code>Map</code> subinterface that is used when a map has an order, but is
-      not sorted. Methods enable bidriectional iteration through the map.
-    </td>
-  </tr>
-  <tr>
-    <td>
-      {@link org.apache.commons.collections.MapIterator}
-    </td>
-    <td valign="top">
-      A new <code>Iterator</code> subinterface specially designed for maps. This iterator
-      avoids the need for entrySet iteration of a map, and is simpler to use.
-    </td>
-  </tr>
-  <tr>
-    <td>
-      {@link org.apache.commons.collections.ResettableIterator}
-    </td>
-    <td valign="top">
-      A new <code>Iterator</code> subinterface that allows the iteration to be reset back
-      to the start. Many iterators in this library have this functionality.
-    </td>
-  </tr>
-  <tr>
-    <td>
-      {@link org.apache.commons.collections.Closure}<br />
-      {@link org.apache.commons.collections.Predicate}<br />
-      {@link org.apache.commons.collections.Transformer}<br />
-      {@link org.apache.commons.collections.Factory}<br />
-    </td>
-    <td valign="top">
-      A group of <i>functor</i> interfaces that provide plugin behaviour to various
-      collections and utilities.
-    </td>
-  </tr>
-  </table>
-  <p>
-     In addition to the interfaces, there are many implementations.
-     Consult each subpackage for full details of these.
-  </p>
-     
-</body>
\ No newline at end of file
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/package.html b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/package.html
deleted file mode 100755
index 3b206e7..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/package.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!-- $Id: package.html,v 1.1 2009/05/27 22:16:18 mparker Exp $ -->
- <!--
-   Copyright 2003-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.
-  -->
-<body>
-<p>
-This package contains the interfaces and utilities shared across all the subpackages of this component.
-</p>
-<p>
-The following collection implementations are provided in the package:
-<ul>
-<li>ArrayStack - a non synchronized Stack that follows the same API as java util Stack
-<li>ExtendedProperties - extends the Properties class to add extra functionality
-</ul>
-<p>
-
-</body>
\ No newline at end of file
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/AbstractSerializableSetDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/AbstractSerializableSetDecorator.java
deleted file mode 100755
index dc1a5b0..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/AbstractSerializableSetDecorator.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- *  Copyright 2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.set;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Set;
-
-/**
- * Serializable subclass of AbstractSetDecorator.
- * 
- * @author Stephen Colebourne
- * @since Commons Collections 3.1
- */
-public abstract class AbstractSerializableSetDecorator
-        extends AbstractSetDecorator
-        implements Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 1229469966212206107L;
-
-    /**
-     * Constructor.
-     */
-    protected AbstractSerializableSetDecorator(Set set) {
-        super(set);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the set out using a custom routine.
-     * 
-     * @param out  the output stream
-     * @throws IOException
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeObject(collection);
-    }
-
-    /**
-     * Read the set in using a custom routine.
-     * 
-     * @param in  the input stream
-     * @throws IOException
-     * @throws ClassNotFoundException
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        collection = (Collection) in.readObject();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/AbstractSetDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/AbstractSetDecorator.java
deleted file mode 100755
index 7e3ef8a..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/AbstractSetDecorator.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.set;
-
-import java.util.Set;
-
-import org.apache.commons.collections.collection.AbstractCollectionDecorator;
-
-/**
- * Decorates another <code>Set</code> to provide additional behaviour.
- * <p>
- * Methods are forwarded directly to the decorated set.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * 
- * @author Stephen Colebourne
- */
-public abstract class AbstractSetDecorator extends AbstractCollectionDecorator implements Set {
-
-    /**
-     * Constructor only used in deserialization, do not use otherwise.
-     * @since Commons Collections 3.1
-     */
-    protected AbstractSetDecorator() {
-        super();
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param set  the set to decorate, must not be null
-     * @throws IllegalArgumentException if set is null
-     */
-    protected AbstractSetDecorator(Set set) {
-        super(set);
-    }
-
-    /**
-     * Gets the set being decorated.
-     * 
-     * @return the decorated set
-     */
-    protected Set getSet() {
-        return (Set) getCollection();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/AbstractSortedSetDecorator.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/AbstractSortedSetDecorator.java
deleted file mode 100755
index 5efbf81..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/AbstractSortedSetDecorator.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.set;
-
-import java.util.Comparator;
-import java.util.Set;
-import java.util.SortedSet;
-
-/**
- * Decorates another <code>SortedSet</code> to provide additional behaviour.
- * <p>
- * Methods are forwarded directly to the decorated set.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:31 $
- * 
- * @author Stephen Colebourne
- */
-public abstract class AbstractSortedSetDecorator extends AbstractSetDecorator implements SortedSet {
-
-    /**
-     * Constructor only used in deserialization, do not use otherwise.
-     * @since Commons Collections 3.1
-     */
-    protected AbstractSortedSetDecorator() {
-        super();
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param set  the set to decorate, must not be null
-     * @throws IllegalArgumentException if set is null
-     */
-    protected AbstractSortedSetDecorator(Set set) {
-        super(set);
-    }
-
-    /**
-     * Gets the sorted set being decorated.
-     * 
-     * @return the decorated set
-     */
-    protected SortedSet getSortedSet() {
-        return (SortedSet) getCollection();
-    }
-    
-    //-----------------------------------------------------------------------
-    public SortedSet subSet(Object fromElement, Object toElement) {
-        return getSortedSet().subSet(fromElement, toElement);
-    }
-
-    public SortedSet headSet(Object toElement) {
-        return getSortedSet().headSet(toElement);
-    }
-
-    public SortedSet tailSet(Object fromElement) {
-        return getSortedSet().tailSet(fromElement);
-    }
-
-    public Object first() {
-        return getSortedSet().first();
-    }
-
-    public Object last() {
-        return getSortedSet().last();
-    }
-
-    public Comparator comparator() {
-        return getSortedSet().comparator();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/CompositeSet.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/CompositeSet.java
deleted file mode 100755
index af5ac53..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/CompositeSet.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.set;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.collection.CompositeCollection;
-
-/**
- * Decorates a set of other sets to provide a single unified view.
- * <p>
- * Changes made to this set will actually be made on the decorated set.
- * Add operations require the use of a pluggable strategy.
- * If no strategy is provided then add is unsupported.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:31 $
- *
- * @author Brian McCallister
- */
-public class CompositeSet extends CompositeCollection implements Set {
-    /**
-     * Create an empty CompositeSet
-     */
-    public CompositeSet() {
-        super();
-    }
-    
-    /**
-     * Create a CompositeSet with just <code>set</code> composited
-     * @param set The initial set in the composite
-     */
-    public CompositeSet(Set set) {
-        super(set);
-    }
-    
-    /**
-     * Create a composite set with sets as the initial set of composited Sets
-     */
-    public CompositeSet(Set[] sets) {
-        super(sets);
-    }
-    
-    /**
-     * Add a Set to this composite
-     *
-     * @param c Must implement Set
-     * @throws IllegalArgumentException if c does not implement java.util.Set
-     *         or if a SetMutator is set, but fails to resolve a collision
-     * @throws UnsupportedOperationException if there is no SetMutator set, or
-     *         a CollectionMutator is set instead of a SetMutator
-     * @see org.apache.commons.collections.collection.CompositeCollection.CollectionMutator
-     * @see SetMutator
-     */
-    public synchronized void addComposited(Collection c) {
-        if (!(c instanceof Set)) {
-            throw new IllegalArgumentException("Collections added must implement java.util.Set");
-        }
-        
-        for (Iterator i = this.getCollections().iterator(); i.hasNext();) {
-            Set set = (Set) i.next();
-            Collection intersects = CollectionUtils.intersection(set, c);
-            if (intersects.size() > 0) {
-                if (this.mutator == null) {
-                    throw new UnsupportedOperationException(
-                        "Collision adding composited collection with no SetMutator set");
-                }
-                else if (!(this.mutator instanceof SetMutator)) {
-                    throw new UnsupportedOperationException(
-                        "Collision adding composited collection to a CompositeSet with a CollectionMutator instead of a SetMutator");
-                }
-                ((SetMutator) this.mutator).resolveCollision(this, set, (Set) c, intersects);
-                if (CollectionUtils.intersection(set, c).size() > 0) {
-                    throw new IllegalArgumentException(
-                        "Attempt to add illegal entry unresolved by SetMutator.resolveCollision()");
-                }
-            }
-        }
-        super.addComposited(new Collection[]{c});
-    }
-    
-    /**
-     * Add two sets to this composite
-     *
-     * @throws IllegalArgumentException if c or d does not implement java.util.Set
-     */
-    public synchronized void addComposited(Collection c, Collection d) {
-        if (!(c instanceof Set)) throw new IllegalArgumentException("Argument must implement java.util.Set");
-        if (!(d instanceof Set)) throw new IllegalArgumentException("Argument must implement java.util.Set");
-        this.addComposited(new Set[]{(Set) c, (Set) d});
-    }
-    
-    /**
-     * Add an array of sets to this composite
-     * @param comps
-     * @throws IllegalArgumentException if any of the collections in comps do not implement Set
-     */
-    public synchronized void addComposited(Collection[] comps) {
-        for (int i = comps.length - 1; i >= 0; --i) {
-            this.addComposited(comps[i]);
-        }
-    }
-    
-    /**
-     * This can receive either a <code>CompositeCollection.CollectionMutator</code>
-     * or a <code>CompositeSet.SetMutator</code>. If a
-     * <code>CompositeCollection.CollectionMutator</code> is used than conflicts when adding
-     * composited sets will throw IllegalArgumentException
-     * <p>
-     */
-    public void setMutator(CollectionMutator mutator) {
-        super.setMutator(mutator);
-    }
-    
-    /* Set operations */
-    
-    /**
-     * If a <code>CollectionMutator</code> is defined for this CompositeSet then this
-     * method will be called anyway.
-     *
-     * @param obj Object to be removed
-     * @return true if the object is removed, false otherwise
-     */
-    public boolean remove(Object obj) {
-        for (Iterator i = this.getCollections().iterator(); i.hasNext();) {
-            Set set = (Set) i.next();
-            if (set.contains(obj)) return set.remove(obj);
-        }
-        return false;
-    }
-    
-    
-    /**
-     * @see Set#equals
-     */
-    public boolean equals(Object obj) {
-        if (obj instanceof Set) {
-            Set set = (Set) obj;
-            if (set.containsAll(this) && set.size() == this.size()) {
-                return true;
-            }
-        }
-        return false;
-    }
-    
-    /**
-     * @see Set#hashCode
-     */
-    public int hashCode() {
-        int code = 0;
-        for (Iterator i = this.iterator(); i.hasNext();) {
-            Object next = i.next();
-            code += (next != null ? next.hashCode() : 0);
-        }
-        return code;
-    }
-    
-    /**
-     * Define callbacks for mutation operations.
-     * <p>
-     * Defining remove() on implementations of SetMutator is pointless
-     * as they are never called by CompositeSet.
-     */
-    public static interface SetMutator extends CompositeCollection.CollectionMutator {
-        /**
-         * <p>
-         * Called when a Set is added to the CompositeSet and there is a
-         * collision between existing and added sets.
-         * </p>
-         * <p>
-         * If <code>added</code> and <code>existing</code> still have any intersects
-         * after this method returns an IllegalArgumentException will be thrown.
-         * </p>
-         * @param comp The CompositeSet being modified
-         * @param existing The Set already existing in the composite
-         * @param added the Set being added to the composite
-         * @param intersects the intersection of th existing and added sets
-         */
-        public void resolveCollision(CompositeSet comp, Set existing, Set added, Collection intersects);
-    }
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/ListOrderedSet.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/ListOrderedSet.java
deleted file mode 100755
index ba9f0ae..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/ListOrderedSet.java
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- *  Copyright 2003-2005 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.set;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.commons.collections.iterators.AbstractIteratorDecorator;
-import org.apache.commons.collections.list.UnmodifiableList;
-
-/**
- * Decorates another <code>Set</code> to ensure that the order of addition
- * is retained and used by the iterator.
- * <p>
- * If an object is added to the set for a second time, it will remain in the
- * original position in the iteration.
- * The order can be observed from the set via the iterator or toArray methods.
- * <p>
- * The ListOrderedSet also has various useful direct methods. These include many
- * from <code>List</code>, such as <code>get(int)</code>, <code>remove(int)</code>
- * and <code>indexOf(int)</code>. An unmodifiable <code>List</code> view of 
- * the set can be obtained via <code>asList()</code>.
- * <p>
- * This class cannot implement the <code>List</code> interface directly as
- * various interface methods (notably equals/hashCode) are incompatable with a set.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * 
- * @author Stephen Colebourne
- * @author Henning P. Schmiedehausen
- */
-public class ListOrderedSet extends AbstractSerializableSetDecorator implements Set {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -228664372470420141L;
-
-    /** Internal list to hold the sequence of objects */
-    protected final List setOrder;
-
-    /**
-     * Factory method to create an ordered set specifying the list and set to use.
-     * <p>
-     * The list and set must both be empty.
-     * 
-     * @param set  the set to decorate, must be empty and not null
-     * @param list  the list to decorate, must be empty and not null
-     * @throws IllegalArgumentException if set or list is null
-     * @throws IllegalArgumentException if either the set or list is not empty
-     * @since Commons Collections 3.1
-     */
-    public static ListOrderedSet decorate(Set set, List list) {
-        if (set == null) {
-            throw new IllegalArgumentException("Set must not be null");
-        }
-        if (list == null) {
-            throw new IllegalArgumentException("List must not be null");
-        }
-        if (set.size() > 0 || list.size() > 0) {
-            throw new IllegalArgumentException("Set and List must be empty");
-        }
-        return new ListOrderedSet(set, list);
-    }
-
-    /**
-     * Factory method to create an ordered set.
-     * <p>
-     * An <code>ArrayList</code> is used to retain order.
-     * 
-     * @param set  the set to decorate, must not be null
-     * @throws IllegalArgumentException if set is null
-     */
-    public static ListOrderedSet decorate(Set set) {
-        return new ListOrderedSet(set);
-    }
-
-    /**
-     * Factory method to create an ordered set using the supplied list to retain order.
-     * <p>
-     * A <code>HashSet</code> is used for the set behaviour.
-     * <p>
-     * NOTE: If the list contains duplicates, the duplicates are removed,
-     * altering the specified list.
-     * 
-     * @param list  the list to decorate, must not be null
-     * @throws IllegalArgumentException if list is null
-     */
-    public static ListOrderedSet decorate(List list) {
-        if (list == null) {
-            throw new IllegalArgumentException("List must not be null");
-        }
-        Set set = new HashSet(list);
-        list.retainAll(set);
-        
-        return new ListOrderedSet(set, list);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructs a new empty <code>ListOrderedSet</code> using
-     * a <code>HashSet</code> and an <code>ArrayList</code> internally.
-     * 
-     * @since Commons Collections 3.1
-     */
-    public ListOrderedSet() {
-        super(new HashSet());
-        setOrder = new ArrayList();
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param set  the set to decorate, must not be null
-     * @throws IllegalArgumentException if set is null
-     */
-    protected ListOrderedSet(Set set) {
-        super(set);
-        setOrder = new ArrayList(set);
-    }
-
-    /**
-     * Constructor that wraps (not copies) the Set and specifies the list to use.
-     * <p>
-     * The set and list must both be correctly initialised to the same elements.
-     * 
-     * @param set  the set to decorate, must not be null
-     * @param list  the list to decorate, must not be null
-     * @throws IllegalArgumentException if set or list is null
-     */
-    protected ListOrderedSet(Set set, List list) {
-        super(set);
-        if (list == null) {
-            throw new IllegalArgumentException("List must not be null");
-        }
-        setOrder = list;
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Gets an unmodifiable view of the order of the Set.
-     * 
-     * @return an unmodifiable list view
-     */
-    public List asList() {
-        return UnmodifiableList.decorate(setOrder);
-    }
-
-    //-----------------------------------------------------------------------
-    public void clear() {
-        collection.clear();
-        setOrder.clear();
-    }
-
-    public Iterator iterator() {
-        return new OrderedSetIterator(setOrder.iterator(), collection);
-    }
-
-    public boolean add(Object object) {
-        if (collection.contains(object)) {
-            // re-adding doesn't change order
-            return collection.add(object);
-        } else {
-            // first add, so add to both set and list
-            boolean result = collection.add(object);
-            setOrder.add(object);
-            return result;
-        }
-    }
-
-    public boolean addAll(Collection coll) {
-        boolean result = false;
-        for (Iterator it = coll.iterator(); it.hasNext();) {
-            Object object = it.next();
-            result = result | add(object);
-        }
-        return result;
-    }
-
-    public boolean remove(Object object) {
-        boolean result = collection.remove(object);
-        setOrder.remove(object);
-        return result;
-    }
-
-    public boolean removeAll(Collection coll) {
-        boolean result = false;
-        for (Iterator it = coll.iterator(); it.hasNext();) {
-            Object object = it.next();
-            result = result | remove(object);
-        }
-        return result;
-    }
-
-    public boolean retainAll(Collection coll) {
-        boolean result = collection.retainAll(coll);
-        if (result == false) {
-            return false;
-        } else if (collection.size() == 0) {
-            setOrder.clear();
-        } else {
-            for (Iterator it = setOrder.iterator(); it.hasNext();) {
-                Object object = it.next();
-                if (collection.contains(object) == false) {
-                    it.remove();
-                }
-            }
-        }
-        return result;
-    }
-
-    public Object[] toArray() {
-        return setOrder.toArray();
-    }
-
-    public Object[] toArray(Object a[]) {
-        return setOrder.toArray(a);
-    }
-
-    //-----------------------------------------------------------------------
-    public Object get(int index) {
-        return setOrder.get(index);
-    }
-
-    public int indexOf(Object object) {
-        return setOrder.indexOf(object);
-    }
-
-    public void add(int index, Object object) {
-        if (contains(object) == false) {
-            collection.add(object);
-            setOrder.add(index, object);
-        }
-    }
-
-    public boolean addAll(int index, Collection coll) {
-        boolean changed = false;
-        for (Iterator it = coll.iterator(); it.hasNext();) {
-            Object object = it.next();
-            if (contains(object) == false) {
-                collection.add(object);
-                setOrder.add(index, object);
-                index++;
-                changed = true;
-            }
-        }
-        return changed;
-    }
-
-    public Object remove(int index) {
-        Object obj = setOrder.remove(index);
-        remove(obj);
-        return obj;
-    }
-
-    /**
-     * Uses the underlying List's toString so that order is achieved. 
-     * This means that the decorated Set's toString is not used, so 
-     * any custom toStrings will be ignored. 
-     */
-    // Fortunately List.toString and Set.toString look the same
-    public String toString() {
-        return setOrder.toString();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Internal iterator handle remove.
-     */
-    static class OrderedSetIterator extends AbstractIteratorDecorator {
-        
-        /** Object we iterate on */
-        protected final Collection set;
-        /** Last object retrieved */
-        protected Object last;
-
-        private OrderedSetIterator(Iterator iterator, Collection set) {
-            super(iterator);
-            this.set = set;
-        }
-
-        public Object next() {
-            last = iterator.next();
-            return last;
-        }
-
-        public void remove() {
-            set.remove(last);
-            iterator.remove();
-            last = null;
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/MapBackedSet.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/MapBackedSet.java
deleted file mode 100755
index b503032..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/MapBackedSet.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- *  Copyright 2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.set;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Decorates a <code>Map</code> to obtain <code>Set</code> behaviour.
- * <p>
- * This class is used to create a <code>Set</code> with the same properties as
- * the key set of any map. Thus, a ReferenceSet can be created by wrapping a
- * <code>ReferenceMap</code> in an instance of this class.
- * <p>
- * Most map implementation can be used to create a set by passing in dummy values.
- * Exceptions include <code>BidiMap</code> implementations, as they require unique values.
- *
- * @since Commons Collections 3.1
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:31 $
- * 
- * @author Stephen Colebourne
- */
-public final class MapBackedSet implements Set, Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 6723912213766056587L;
-
-    /** The map being used as the backing store */
-    protected final Map map;
-    /** The dummyValue to use */
-    protected final Object dummyValue;
-
-    /**
-     * Factory method to create a set from a map.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @throws IllegalArgumentException if set is null
-     */
-    public static Set decorate(Map map) {
-        return decorate(map, null);
-    }
-
-    /**
-     * Factory method to create a set from a map.
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param dummyValue  the dummy value to use
-     * @throws IllegalArgumentException if map is null
-     */
-    public static Set decorate(Map map, Object dummyValue) {
-        if (map == null) {
-            throw new IllegalArgumentException("The map must not be null");
-        }
-        return new MapBackedSet(map, dummyValue);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param map  the map to decorate, must not be null
-     * @param dummyValue  the dummy value to use
-     * @throws IllegalArgumentException if map is null
-     */
-    private MapBackedSet(Map map, Object dummyValue) {
-        super();
-        this.map = map;
-        this.dummyValue = dummyValue;
-    }
-
-    //-----------------------------------------------------------------------
-    public int size() {
-        return map.size();
-    }
-
-    public boolean isEmpty() {
-        return map.isEmpty();
-    }
-
-    public Iterator iterator() {
-        return map.keySet().iterator();
-    }
-
-    public boolean contains(Object obj) {
-        return map.containsKey(obj);
-    }
-
-    public boolean containsAll(Collection coll) {
-        return map.keySet().containsAll(coll);
-    }
-
-    public boolean add(Object obj) {
-        int size = map.size();
-        map.put(obj, dummyValue);
-        return (map.size() != size);
-    }
-
-    public boolean addAll(Collection coll) {
-        int size = map.size();
-        for (Iterator it = coll.iterator(); it.hasNext();) {
-            Object obj = it.next();
-            map.put(obj, dummyValue);
-        }
-        return (map.size() != size);
-    }
-
-    public boolean remove(Object obj) {
-        int size = map.size();
-        map.remove(obj);
-        return (map.size() != size);
-    }
-
-    public boolean removeAll(Collection coll) {
-        return map.keySet().removeAll(coll);
-    }
-
-    public boolean retainAll(Collection coll) {
-        return map.keySet().retainAll(coll);
-    }
-
-    public void clear() {
-        map.clear();
-    }
-
-    public Object[] toArray() {
-        return map.keySet().toArray();
-    }
-
-    public Object[] toArray(Object[] array) {
-        return map.keySet().toArray(array);
-    }
-
-    public boolean equals(Object obj) {
-        return map.keySet().equals(obj);
-    }
-
-    public int hashCode() {
-        return map.keySet().hashCode();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/PredicatedSet.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/PredicatedSet.java
deleted file mode 100755
index 300d8ab..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/PredicatedSet.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.set;
-
-import java.util.Set;
-
-import org.apache.commons.collections.Predicate;
-import org.apache.commons.collections.collection.PredicatedCollection;
-
-/**
- * Decorates another <code>Set</code> to validate that all additions
- * match a specified predicate.
- * <p>
- * This set exists to provide validation for the decorated set.
- * It is normally created to decorate an empty set.
- * If an object cannot be added to the set, an IllegalArgumentException is thrown.
- * <p>
- * One usage would be to ensure that no null entries are added to the set.
- * <pre>Set set = PredicatedSet.decorate(new HashSet(), NotNullPredicate.INSTANCE);</pre>
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:31 $
- * 
- * @author Stephen Colebourne
- * @author Paul Jack
- */
-public class PredicatedSet extends PredicatedCollection implements Set {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -684521469108685117L;
-
-    /**
-     * Factory method to create a predicated (validating) set.
-     * <p>
-     * If there are any elements already in the set being decorated, they
-     * are validated.
-     * 
-     * @param set  the set to decorate, must not be null
-     * @param predicate  the predicate to use for validation, must not be null
-     * @throws IllegalArgumentException if set or predicate is null
-     * @throws IllegalArgumentException if the set contains invalid elements
-     */
-    public static Set decorate(Set set, Predicate predicate) {
-        return new PredicatedSet(set, predicate);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * <p>
-     * If there are any elements already in the set being decorated, they
-     * are validated.
-     * 
-     * @param set  the set to decorate, must not be null
-     * @param predicate  the predicate to use for validation, must not be null
-     * @throws IllegalArgumentException if set or predicate is null
-     * @throws IllegalArgumentException if the set contains invalid elements
-     */
-    protected PredicatedSet(Set set, Predicate predicate) {
-        super(set, predicate);
-    }
-
-    /**
-     * Gets the set being decorated.
-     * 
-     * @return the decorated set
-     */
-    protected Set getSet() {
-        return (Set) getCollection();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/PredicatedSortedSet.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/PredicatedSortedSet.java
deleted file mode 100755
index 00dc05d..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/PredicatedSortedSet.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.set;
-
-import java.util.Comparator;
-import java.util.SortedSet;
-
-import org.apache.commons.collections.Predicate;
-
-/**
- * Decorates another <code>SortedSet</code> to validate that all additions
- * match a specified predicate.
- * <p>
- * This set exists to provide validation for the decorated set.
- * It is normally created to decorate an empty set.
- * If an object cannot be added to the set, an IllegalArgumentException is thrown.
- * <p>
- * One usage would be to ensure that no null entries are added to the set.
- * <pre>SortedSet set = PredicatedSortedSet.decorate(new TreeSet(), NotNullPredicate.INSTANCE);</pre>
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:31 $
- * 
- * @author Stephen Colebourne
- * @author Paul Jack
- */
-public class PredicatedSortedSet extends PredicatedSet implements SortedSet {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -9110948148132275052L;
-
-    /**
-     * Factory method to create a predicated (validating) sorted set.
-     * <p>
-     * If there are any elements already in the set being decorated, they
-     * are validated.
-     * 
-     * @param set  the set to decorate, must not be null
-     * @param predicate  the predicate to use for validation, must not be null
-     * @throws IllegalArgumentException if set or predicate is null
-     * @throws IllegalArgumentException if the set contains invalid elements
-     */
-    public static SortedSet decorate(SortedSet set, Predicate predicate) {
-        return new PredicatedSortedSet(set, predicate);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * <p>
-     * If there are any elements already in the set being decorated, they
-     * are validated.
-     * 
-     * @param set  the set to decorate, must not be null
-     * @param predicate  the predicate to use for validation, must not be null
-     * @throws IllegalArgumentException if set or predicate is null
-     * @throws IllegalArgumentException if the set contains invalid elements
-     */
-    protected PredicatedSortedSet(SortedSet set, Predicate predicate) {
-        super(set, predicate);
-    }
-
-    /**
-     * Gets the sorted set being decorated.
-     * 
-     * @return the decorated sorted set
-     */
-    private SortedSet getSortedSet() {
-        return (SortedSet) getCollection();
-    }
-
-    //-----------------------------------------------------------------------
-    public SortedSet subSet(Object fromElement, Object toElement) {
-        SortedSet sub = getSortedSet().subSet(fromElement, toElement);
-        return new PredicatedSortedSet(sub, predicate);
-    }
-
-    public SortedSet headSet(Object toElement) {
-        SortedSet sub = getSortedSet().headSet(toElement);
-        return new PredicatedSortedSet(sub, predicate);
-    }
-
-    public SortedSet tailSet(Object fromElement) {
-        SortedSet sub = getSortedSet().tailSet(fromElement);
-        return new PredicatedSortedSet(sub, predicate);
-    }
-
-    public Object first() {
-        return getSortedSet().first();
-    }
-
-    public Object last() {
-        return getSortedSet().last();
-    }
-
-    public Comparator comparator() {
-        return getSortedSet().comparator();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/SynchronizedSet.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/SynchronizedSet.java
deleted file mode 100755
index b1a588f..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/SynchronizedSet.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.set;
-
-import java.util.Set;
-
-import org.apache.commons.collections.collection.SynchronizedCollection;
-
-/**
- * Decorates another <code>Set</code> to synchronize its behaviour for a
- * multi-threaded environment.
- * <p>
- * Methods are synchronized, then forwarded to the decorated set.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:31 $
- * 
- * @author Stephen Colebourne
- */
-public class SynchronizedSet extends SynchronizedCollection implements Set {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -8304417378626543635L;
-
-    /**
-     * Factory method to create a synchronized set.
-     * 
-     * @param set  the set to decorate, must not be null
-     * @throws IllegalArgumentException if set is null
-     */
-    public static Set decorate(Set set) {
-        return new SynchronizedSet(set);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param set  the set to decorate, must not be null
-     * @throws IllegalArgumentException if set is null
-     */
-    protected SynchronizedSet(Set set) {
-        super(set);
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param set  the set to decorate, must not be null
-     * @param lock  the lock object to use, must not be null
-     * @throws IllegalArgumentException if set is null
-     */
-    protected SynchronizedSet(Set set, Object lock) {
-        super(set, lock);
-    }
-
-    /**
-     * Gets the decorated set.
-     * 
-     * @return the decorated set
-     */
-    protected Set getSet() {
-        return (Set) collection;
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/SynchronizedSortedSet.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/SynchronizedSortedSet.java
deleted file mode 100755
index a93ae65..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/SynchronizedSortedSet.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.set;
-
-import java.util.Comparator;
-import java.util.SortedSet;
-
-import org.apache.commons.collections.collection.SynchronizedCollection;
-
-/**
- * Decorates another <code>SortedSet</code> to synchronize its behaviour
- * for a multi-threaded environment.
- * <p>
- * Methods are synchronized, then forwarded to the decorated set.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * 
- * @author Stephen Colebourne
- */
-public class SynchronizedSortedSet extends SynchronizedCollection implements SortedSet {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 2775582861954500111L;
-
-    /**
-     * Factory method to create a synchronized set.
-     * 
-     * @param set  the set to decorate, must not be null
-     * @throws IllegalArgumentException if set is null
-     */
-    public static SortedSet decorate(SortedSet set) {
-        return new SynchronizedSortedSet(set);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param set  the set to decorate, must not be null
-     * @throws IllegalArgumentException if set is null
-     */
-    protected SynchronizedSortedSet(SortedSet set) {
-        super(set);
-    }
-
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param set  the set to decorate, must not be null
-     * @param lock  the lock object to use, must not be null
-     * @throws IllegalArgumentException if set is null
-     */
-    protected SynchronizedSortedSet(SortedSet set, Object lock) {
-        super(set, lock);
-    }
-
-    /**
-     * Gets the decorated set.
-     * 
-     * @return the decorated set
-     */
-    protected SortedSet getSortedSet() {
-        return (SortedSet) collection;
-    }
-
-    //-----------------------------------------------------------------------
-    public SortedSet subSet(Object fromElement, Object toElement) {
-        synchronized (lock) {
-            SortedSet set = getSortedSet().subSet(fromElement, toElement);
-            // the lock is passed into the constructor here to ensure that the
-            // subset is synchronized on the same lock as the parent
-            return new SynchronizedSortedSet(set, lock);
-        }
-    }
-
-    public SortedSet headSet(Object toElement) {
-        synchronized (lock) {
-            SortedSet set = getSortedSet().headSet(toElement);
-            // the lock is passed into the constructor here to ensure that the
-            // headset is synchronized on the same lock as the parent
-            return new SynchronizedSortedSet(set, lock);
-        }
-    }
-
-    public SortedSet tailSet(Object fromElement) {
-        synchronized (lock) {
-            SortedSet set = getSortedSet().tailSet(fromElement);
-            // the lock is passed into the constructor here to ensure that the
-            // tailset is synchronized on the same lock as the parent
-            return new SynchronizedSortedSet(set, lock);
-        }
-    }
-
-    public Object first() {
-        synchronized (lock) {
-            return getSortedSet().first();
-        }
-    }
-
-    public Object last() {
-        synchronized (lock) {
-            return getSortedSet().last();
-        }
-    }
-
-    public Comparator comparator() {
-        synchronized (lock) {
-            return getSortedSet().comparator();
-        }
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/TransformedSet.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/TransformedSet.java
deleted file mode 100755
index 27aa255..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/TransformedSet.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.set;
-
-import java.util.Set;
-
-import org.apache.commons.collections.Transformer;
-import org.apache.commons.collections.collection.TransformedCollection;
-
-/**
- * Decorates another <code>Set</code> to transform objects that are added.
- * <p>
- * The add methods are affected by this class.
- * Thus objects must be removed or searched for using their transformed form.
- * For example, if the transformation converts Strings to Integers, you must
- * use the Integer form to remove objects.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * 
- * @author Stephen Colebourne
- */
-public class TransformedSet extends TransformedCollection implements Set {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 306127383500410386L;
-
-    /**
-     * Factory method to create a transforming set.
-     * <p>
-     * If there are any elements already in the set being decorated, they
-     * are NOT transformed.
-     * 
-     * @param set  the set to decorate, must not be null
-     * @param transformer  the transformer to use for conversion, must not be null
-     * @throws IllegalArgumentException if set or transformer is null
-     */
-    public static Set decorate(Set set, Transformer transformer) {
-        return new TransformedSet(set, transformer);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * <p>
-     * If there are any elements already in the set being decorated, they
-     * are NOT transformed.
-     * 
-     * @param set  the set to decorate, must not be null
-     * @param transformer  the transformer to use for conversion, must not be null
-     * @throws IllegalArgumentException if set or transformer is null
-     */
-    protected TransformedSet(Set set, Transformer transformer) {
-        super(set, transformer);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/TransformedSortedSet.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/TransformedSortedSet.java
deleted file mode 100755
index 0458d09..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/TransformedSortedSet.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.set;
-
-import java.util.Comparator;
-import java.util.SortedSet;
-
-import org.apache.commons.collections.Transformer;
-
-/**
- * Decorates another <code>SortedSet</code> to transform objects that are added.
- * <p>
- * The add methods are affected by this class.
- * Thus objects must be removed or searched for using their transformed form.
- * For example, if the transformation converts Strings to Integers, you must
- * use the Integer form to remove objects.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- * 
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:32 $
- * 
- * @author Stephen Colebourne
- */
-public class TransformedSortedSet extends TransformedSet implements SortedSet {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -1675486811351124386L;
-
-    /**
-     * Factory method to create a transforming sorted set.
-     * <p>
-     * If there are any elements already in the set being decorated, they
-     * are NOT transformed.
-     * 
-     * @param set  the set to decorate, must not be null
-     * @param transformer  the transformer to use for conversion, must not be null
-     * @throws IllegalArgumentException if set or transformer is null
-     */
-    public static SortedSet decorate(SortedSet set, Transformer transformer) {
-        return new TransformedSortedSet(set, transformer);
-    }
-    
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * <p>
-     * If there are any elements already in the set being decorated, they
-     * are NOT transformed.
-     * 
-     * @param set  the set to decorate, must not be null
-     * @param transformer  the transformer to use for conversion, must not be null
-     * @throws IllegalArgumentException if set or transformer is null
-     */
-    protected TransformedSortedSet(SortedSet set, Transformer transformer) {
-        super(set, transformer);
-    }
-
-    /**
-     * Gets the decorated set.
-     * 
-     * @return the decorated set
-     */
-    protected SortedSet getSortedSet() {
-        return (SortedSet) collection;
-    }
-
-    //-----------------------------------------------------------------------
-    public Object first() {
-        return getSortedSet().first();
-    }
-
-    public Object last() {
-        return getSortedSet().last();
-    }
-
-    public Comparator comparator() {
-        return getSortedSet().comparator();
-    }
-
-    //-----------------------------------------------------------------------
-    public SortedSet subSet(Object fromElement, Object toElement) {
-        SortedSet set = getSortedSet().subSet(fromElement, toElement);
-        return new TransformedSortedSet(set, transformer);
-    }
-
-    public SortedSet headSet(Object toElement) {
-        SortedSet set = getSortedSet().headSet(toElement);
-        return new TransformedSortedSet(set, transformer);
-    }
-
-    public SortedSet tailSet(Object fromElement) {
-        SortedSet set = getSortedSet().tailSet(fromElement);
-        return new TransformedSortedSet(set, transformer);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/TypedSet.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/TypedSet.java
deleted file mode 100755
index fc8c1a6..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/TypedSet.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.set;
-
-import java.util.Set;
-
-import org.apache.commons.collections.functors.InstanceofPredicate;
-
-/**
- * Decorates another <code>Set</code> to validate that elements
- * added are of a specific type.
- * <p>
- * The validation of additions is performed via an instanceof test against 
- * a specified <code>Class</code>. If an object cannot be added to the
- * collection, an IllegalArgumentException is thrown.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:31 $
- * 
- * @author Stephen Colebourne
- * @author Matthew Hawthorne
- */
-public class TypedSet {
-
-    /**
-     * Factory method to create a typed set.
-     * <p>
-     * If there are any elements already in the set being decorated, they
-     * are validated.
-     * 
-     * @param set  the set to decorate, must not be null
-     * @param type  the type to allow into the collection, must not be null
-     * @throws IllegalArgumentException if set or type is null
-     * @throws IllegalArgumentException if the set contains invalid elements
-     */
-    public static Set decorate(Set set, Class type) {
-        return new PredicatedSet(set, InstanceofPredicate.getInstance(type));
-    }
-    
-    /**
-     * Restrictive constructor.
-     */
-    protected TypedSet() {
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/TypedSortedSet.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/TypedSortedSet.java
deleted file mode 100755
index f665c0c..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/TypedSortedSet.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.set;
-
-import java.util.SortedSet;
-
-import org.apache.commons.collections.functors.InstanceofPredicate;
-
-/**
- * Decorates another <code>SortedSet</code> to validate that elements
- * added are of a specific type.
- * <p>
- * The validation of additions is performed via an instanceof test against 
- * a specified <code>Class</code>. If an object cannot be added to the
- * collection, an IllegalArgumentException is thrown.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:31 $
- * 
- * @author Stephen Colebourne
- * @author Matthew Hawthorne
- */
-public class TypedSortedSet {
-
-    /**
-     * Factory method to create a typed sorted set.
-     * <p>
-     * If there are any elements already in the set being decorated, they
-     * are validated.
-     * 
-     * @param set  the set to decorate, must not be null
-     * @param type  the type to allow into the collection, must not be null
-     * @throws IllegalArgumentException if set or type is null
-     * @throws IllegalArgumentException if the set contains invalid elements
-     */
-    public static SortedSet decorate(SortedSet set, Class type) {
-        return new PredicatedSortedSet(set, InstanceofPredicate.getInstance(type));
-    }
-    
-    /**
-     * Restrictive constructor.
-     */
-    protected TypedSortedSet() {
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/UnmodifiableSet.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/UnmodifiableSet.java
deleted file mode 100755
index cf14353..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/UnmodifiableSet.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.set;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.apache.commons.collections.Unmodifiable;
-import org.apache.commons.collections.iterators.UnmodifiableIterator;
-
-/**
- * Decorates another <code>Set</code> to ensure it can't be altered.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:31 $
- * 
- * @author Stephen Colebourne
- */
-public final class UnmodifiableSet
-        extends AbstractSerializableSetDecorator
-        implements Unmodifiable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = 6499119872185240161L;
-
-    /**
-     * Factory method to create an unmodifiable set.
-     * 
-     * @param set  the set to decorate, must not be null
-     * @throws IllegalArgumentException if set is null
-     */
-    public static Set decorate(Set set) {
-        if (set instanceof Unmodifiable) {
-            return set;
-        }
-        return new UnmodifiableSet(set);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param set  the set to decorate, must not be null
-     * @throws IllegalArgumentException if set is null
-     */
-    private UnmodifiableSet(Set set) {
-        super(set);
-    }
-
-    //-----------------------------------------------------------------------
-    public Iterator iterator() {
-        return UnmodifiableIterator.decorate(getCollection().iterator());
-    }
-
-    public boolean add(Object object) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean addAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void clear() {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean remove(Object object) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean removeAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean retainAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/UnmodifiableSortedSet.java b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/UnmodifiableSortedSet.java
deleted file mode 100755
index 43cbd34..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/UnmodifiableSortedSet.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- *  Copyright 2003-2004 The Apache Software Foundation
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.commons.collections.set;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.SortedSet;
-
-import org.apache.commons.collections.Unmodifiable;
-import org.apache.commons.collections.iterators.UnmodifiableIterator;
-
-/**
- * Decorates another <code>SortedSet</code> to ensure it can't be altered.
- * <p>
- * This class is Serializable from Commons Collections 3.1.
- *
- * @since Commons Collections 3.0
- * @version $Revision: 1.1 $ $Date: 2009/05/27 22:16:31 $
- * 
- * @author Stephen Colebourne
- */
-public final class UnmodifiableSortedSet
-        extends AbstractSortedSetDecorator
-        implements Unmodifiable, Serializable {
-
-    /** Serialization version */
-    private static final long serialVersionUID = -725356885467962424L;
-
-    /**
-     * Factory method to create an unmodifiable set.
-     * 
-     * @param set  the set to decorate, must not be null
-     * @throws IllegalArgumentException if set is null
-     */
-    public static SortedSet decorate(SortedSet set) {
-        if (set instanceof Unmodifiable) {
-            return set;
-        }
-        return new UnmodifiableSortedSet(set);
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Write the collection out using a custom routine.
-     * 
-     * @param out  the output stream
-     * @throws IOException
-     */
-    private void writeObject(ObjectOutputStream out) throws IOException {
-        out.defaultWriteObject();
-        out.writeObject(collection);
-    }
-
-    /**
-     * Read the collection in using a custom routine.
-     * 
-     * @param in  the input stream
-     * @throws IOException
-     * @throws ClassNotFoundException
-     */
-    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-        collection = (Collection) in.readObject();
-    }
-
-    //-----------------------------------------------------------------------
-    /**
-     * Constructor that wraps (not copies).
-     * 
-     * @param set  the set to decorate, must not be null
-     * @throws IllegalArgumentException if set is null
-     */
-    private UnmodifiableSortedSet(SortedSet set) {
-        super(set);
-    }
-
-    //-----------------------------------------------------------------------
-    public Iterator iterator() {
-        return UnmodifiableIterator.decorate(getCollection().iterator());
-    }
-
-    public boolean add(Object object) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean addAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void clear() {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean remove(Object object) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean removeAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    public boolean retainAll(Collection coll) {
-        throw new UnsupportedOperationException();
-    }
-
-    //-----------------------------------------------------------------------
-    public SortedSet subSet(Object fromElement, Object toElement) {
-        SortedSet sub = getSortedSet().subSet(fromElement, toElement);
-        return new UnmodifiableSortedSet(sub);
-    }
-
-    public SortedSet headSet(Object toElement) {
-        SortedSet sub = getSortedSet().headSet(toElement);
-        return new UnmodifiableSortedSet(sub);
-    }
-
-    public SortedSet tailSet(Object fromElement) {
-        SortedSet sub = getSortedSet().tailSet(fromElement);
-        return new UnmodifiableSortedSet(sub);
-    }
-
-}
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/package.html b/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/package.html
deleted file mode 100755
index 633c5ca..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/org/apache/commons/collections/set/package.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!-- $Id: package.html,v 1.1 2009/05/27 22:16:32 mparker Exp $ -->
- <!--
-   Copyright 2003-2004 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-  -->
-<BODY>
-<p>
-This package contains implementations of the
-{@link java.util.Set Set} and
-{@link java.util.SortedSet SortedSet} interfaces.
-<p>
-The implementations are in the form of direct implementations and decorators.
-A decorator wraps another implementation of the interface to add some
-specific additional functionality.
-<p>
-The following implementations are provided in the package:
-<ul>
-<li>CompositeSet - a set that combines multiple sets into one
-</ul>
-The following decorators are provided in the package:
-<ul>
-<li>Synchronized - synchronizes method access for multi-threaded environments
-<li>Unmodifiable - ensures the collection cannot be altered
-<li>Predicated - ensures that only elements that are valid according to a predicate can be added
-<li>Typed - ensures that only elements that are of a specific type can be added
-<li>Transformed - transforms each element added
-<li>ListOrdered - ensures that insertion order is retained
-<li>MapBackedSet - a set formed by decorating a Map
-</ul>
-</pre>
-</BODY>
diff --git a/dependencies/plugins/org.apache.commons.collections/source-bundle/plugin.properties b/dependencies/plugins/org.apache.commons.collections/source-bundle/plugin.properties
deleted file mode 100755
index 3219fa5..0000000
--- a/dependencies/plugins/org.apache.commons.collections/source-bundle/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-################################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials 
-# are made available under the terms of the Eclipse Public License v1.0 
-# which accompanies this distribution, and is available at 
-# http://www.eclipse.org/legal/epl-v10.html 
-# 
-# Contributors: 
-# Chris Aniszczyk - initial API and implementation 
-################################################################################
-pluginName=Apache Commons Collections
-providerName=Eclipse.org
\ No newline at end of file
diff --git a/dependencies/plugins/org.apache.commons.lang/.classpath b/dependencies/plugins/org.apache.commons.lang/.classpath
deleted file mode 100755
index 59e47c7..0000000
--- a/dependencies/plugins/org.apache.commons.lang/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry exported="true" kind="lib" path="" sourcepath="source-bundle"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="javaBin"/>
-</classpath>
diff --git a/dependencies/plugins/org.apache.commons.lang/.cvsignore b/dependencies/plugins/org.apache.commons.lang/.cvsignore
deleted file mode 100755
index 43568b0..0000000
--- a/dependencies/plugins/org.apache.commons.lang/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-bin
-javaBin
-build.xml
diff --git a/dependencies/plugins/org.apache.commons.lang/.project b/dependencies/plugins/org.apache.commons.lang/.project
deleted file mode 100755
index 64dd30e..0000000
--- a/dependencies/plugins/org.apache.commons.lang/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.apache.commons.lang</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/dependencies/plugins/org.apache.commons.lang/META-INF/MANIFEST.MF b/dependencies/plugins/org.apache.commons.lang/META-INF/MANIFEST.MF
deleted file mode 100755
index 27461ac..0000000
--- a/dependencies/plugins/org.apache.commons.lang/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,17 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.apache.commons.lang
-Bundle-Version: 2.4.0.qualifier
-Bundle-Localization: plugin
-Bundle-Vendor: %providerName
-Bundle-RequiredExecutionEnvironment: JRE-1.1
-Export-Package: org.apache.commons.lang;version="2.4.0",
- org.apache.commons.lang.builder;version="2.4.0",
- org.apache.commons.lang.enum;version="2.4.0",
- org.apache.commons.lang.enums;version="2.4.0",
- org.apache.commons.lang.exception;version="2.4.0",
- org.apache.commons.lang.math;version="2.4.0",
- org.apache.commons.lang.mutable;version="2.4.0",
- org.apache.commons.lang.text;version="2.4.0",
- org.apache.commons.lang.time;version="2.4.0"
diff --git a/dependencies/plugins/org.apache.commons.lang/about.html b/dependencies/plugins/org.apache.commons.lang/about.html
deleted file mode 100755
index c9c0992..0000000
--- a/dependencies/plugins/org.apache.commons.lang/about.html
+++ /dev/null
@@ -1,55 +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>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>June 8, 2007</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was 
-provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
-		
-<h3>Third Party Content</h3>
-<p>The Content includes items that have been sourced from third parties as set out below. If you 
-did not receive this Content directly from the Eclipse Foundation, the following is provided 
-for informational purposes only, and you should look to the Redistributor&rsquo;s license for 
-terms and conditions of use.</p>
-
-<h4>Jakarta Commons Lang 2.4</h4>
-<p>The plug-in includes Jakarta Commons Lang 2.4 (&quot;Commons Lang&quot;) developed by the Apache Software Foundation as part of the Jakarta project.  Therefore:</p>
-
-<blockquote>
-This product includes software developed by the Apache Software Foundation (<a href="http://www.apache.org/">http://www.apache.org/</a>).
-</blockquote>
-
-<p>The Commons Lang binary code is included with no modifications except postprocessing
-(pack200 conditioning and signing). The corresponding Commons Lang source code is located in src.zip.</p>
-
-<p>Commons Net is:</p>
-
-<blockquote>Copyright (c) 1997-2005 The Apache Software Foundation. All rights reserved.</blockquote>
-
-<p>Your use of the Commons Lang code is subject to the terms and conditions of the Apache Software License 2.0.  A copy of the license is contained
-in the file <a href="about_files/LICENSE.txt">LICENSE.txt</a> and is also available at <a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a>.
-
-<p>The Apache attribution <a href="about_files/NOTICE.txt">NOTICE.txt</a> file is included with the Content in accordance with 4d of the Apache License, Version 2.0.</p>
-
-<p>Examples and documentation as well as updated source code for Commons Lang is available at <a href="http://jakarta.apache.org/commons/lang/">http://jakarta.apache.org/commons/lang/</a>.</p>
-
-</body>
-</html>
diff --git a/dependencies/plugins/org.apache.commons.lang/about_files/LICENSE.txt b/dependencies/plugins/org.apache.commons.lang/about_files/LICENSE.txt
deleted file mode 100755
index d645695..0000000
--- a/dependencies/plugins/org.apache.commons.lang/about_files/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/dependencies/plugins/org.apache.commons.lang/about_files/NOTICE.txt b/dependencies/plugins/org.apache.commons.lang/about_files/NOTICE.txt
deleted file mode 100755
index b4862de..0000000
--- a/dependencies/plugins/org.apache.commons.lang/about_files/NOTICE.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-Apache Commons Lang
-Copyright 2001-2008 The Apache Software Foundation
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
diff --git a/dependencies/plugins/org.apache.commons.lang/about_files/RELEASE-NOTES.txt b/dependencies/plugins/org.apache.commons.lang/about_files/RELEASE-NOTES.txt
deleted file mode 100755
index 97c8c8e..0000000
--- a/dependencies/plugins/org.apache.commons.lang/about_files/RELEASE-NOTES.txt
+++ /dev/null
@@ -1,124 +0,0 @@
-$Id: RELEASE-NOTES.txt,v 1.1 2009/05/27 22:11:31 mparker Exp $
-
-                        Commons Lang Package
-                            Version 2.4
-                           Release Notes
-
-
-INTRODUCTION:
-
-This document contains the release notes for the 2.4 version of Apache Commons Lang.
-Commons Lang is a set of utility functions and reusable components that should be of use in any Java environment.
-
-Lang 2.4 no longer attempts to target the Java 1.1 environment and now targets Java 1.2. While previous versions 
-were built for 1.1, some parts were using methods that were only available in 1.2, and the Enum class had 
-become dependent on Java 1.3. 
-
-INCOMPATIBLE CHANGES WITH VERSION 2.3:
-
-- None
-
-INCOMPATIBLE CHANGES WITH VERSION 2.2:
-
-- Calling stop on a suspended StopWatch will no longer change the underlying time. 
-  It's very unlikely anyone was relying on that bug as a feature.
-
-ADDITIONAL INCOMPATIBLE CHANGES WITH VERSION 2.0:
-
-- The Nestable interface defines the method indexOfThrowable(Class).
-Previously the implementations checked only for a specific Class.
-Now they check for subclasses of that Class as well.
-For most situations this will be the expected behaviour (ie. its a bug fix).
-If it causes problems, please use the ExceptionUtils.indexOfThrowable(Class) method instead.
-Note that the ExceptionUtils method is available in v1.0 and v2.0 of commons-lang and has not been changed.
-(An alternative to this is to change the public static matchSubclasses flag on NestableDelegate.
-However, we don't recommend that as a long-term solution.)
-
-- The StopWatch class has had much extra validation added.
-If your code previously relied on unusual aspects, it may no longer work.
-
-- Starting with version 2.1, Ant version 1.6.x is required to build. Copy 
-junit.jar to ANT_HOME/lib. You can get JUnit from http://www.junit.org. See the developer's guide
-for more details.
-
-DEPRECATIONS FROM 2.3 to 2.4:
-
-- ObjectUtils.appendIdentityToString(StringBuffer, Object) - has very odd semantics, use 
-  ObjectUtils.identityToString(StringBuffer, Object) instead.
-
-- public static java.util.Date add(java.util.Date, int, int) - it is not intended for this 
-  method to be public. Please let us know if you use this. 
-
-DEPRECATIONS FROM 2.2 to 2.3:
-
-- None
-
-DEPRECATIONS FROM 2.1 to 2.2:
-
-- None
-
-DEPRECATIONS FROM 2.0 to 2.1:
-
-- The enum package has been renamed to enums for JDK1.5 compilance.
-All functionality is identical, just the package has changed.
-This package will be removed in v3.0.
-
-- NumberUtils.stringToInt - renamed to toInt
-
-- DateUtils - four constants, MILLIS_IN_* have been deprecated as they were defined
-as int not long. The replacements are MILLIS_PER_*. 
-
-
-BUG FIXES IN 2.4:
-
-    * [LANG-76 ] - EnumUtils.getEnum() doesn't work well in 1.5
-    * [LANG-328] - LocaleUtils.toLocale() rejects strings with only language+variant
-    * [LANG-334] - Enum is not thread-safe
-    * [LANG-346] - Dates.round() behaves incorrectly for minutes and seconds
-    * [LANG-349] - Deadlock using ReflectionToStringBuilder
-    * [LANG-353] - Javadoc Example for EqualsBuilder is questionable
-    * [LANG-360] - Why does appendIdentityToString return null?
-    * [LANG-361] - BooleanUtils toBooleanObject javadoc does not match implementation
-    * [LANG-363] - StringEscapeUtils..escapeJavaScript() method did not escape '/' into '\/', it will make IE render page uncorrectly
-    * [LANG-364] - Documentation bug for ignoreEmptyTokens accessors in StrTokenizer
-    * [LANG-365] - BooleanUtils.toBoolean() - invalid drop-thru in case statement causes StringIndexOutOfBoundsException
-    * [LANG-367] - FastDateFormat thread safety
-    * [LANG-368] - FastDateFormat getDateInstance() and getDateTimeInstance() assume Locale.getDefault() won't change
-    * [LANG-369] - ExceptionUtils not thread-safe
-    * [LANG-372] - ToStringBuilder: MULTI_LINE_STYLE does not print anything from appendToString methods.
-    * [LANG-380] - infinite loop in Fraction.reduce when numerator == 0
-    * [LANG-381] - NumberUtils.min(floatArray) returns wrong value if floatArray[0] happens to be Float.NaN
-    * [LANG-385] - http://commons.apache.org/lang/developerguide.html "Building" section is incorrect and incomplete
-    * [LANG-393] - EqualsBuilder don't compare BigDecimals correctly
-    * [LANG-399] - Javadoc bugs - cannot find object
-    * [LANG-410] - Ambiguous / confusing names in StringUtils replace* methods
-    * [LANG-412] - StrBuilder appendFixedWidth does not handle nulls
-    * [LANG-414] - DateUtils.round() often fails
-
-IMPROVEMENTS IN 2.4:
-
-    * [LANG-180] - adding a StringUtils.replace method that takes an array or List of replacement strings
-    * [LANG-192] - Split camel case strings
-    * [LANG-257] - Add new splitByWholeSeparatorPreserveAllTokens() methods to StringUtils
-    * [LANG-269] - Shouldn't Commons Lang's StringUtils have a "common" string method?
-    * [LANG-298] - ClassUtils.getShortClassName and ClassUtils.getPackageName and class of array
-    * [LANG-321] - Add toArray() method to IntRange and LongRange classes
-    * [LANG-322] - ClassUtils.getShortClassName(String) inefficient
-    * [LANG-326] - StringUtils: startsWith / endsWith / startsWithIgnoreCase / endsWithIgnoreCase / removeStartIgnoreCase / removeEndIgnoreCase methods
-    * [LANG-329] - Pointless synchronized in ThreadLocal.initialValue should be removed
-    * [LANG-333] - ArrayUtils.toClass
-    * [LANG-337] - Utility class constructor javadocs should acknowledge that they may sometimes be used, e.g. with Velocity.
-    * [LANG-338] - truncateNicely method which avoids truncating in the middle of a word
-    * [LANG-345] - Optimize HashCodeBuilder.append(Object)
-    * [LANG-351] - Extension to ClassUtils: Obtain the primitive class from a wrapper
-    * [LANG-356] - Add getStartTime to StopWatch
-    * [LANG-362] - Add ExtendedMessageFormat to org.apache.commons.lang.text
-    * [LANG-371] - ToStringStyle javadoc should show examples of styles
-    * [LANG-374] - Add escaping for CSV columns to StringEscapeUtils
-    * [LANG-375] - add SystemUtils.IS_OS_WINDOWS_VISTA field
-    * [LANG-379] - Calculating A date fragment in any time-unit
-    * [LANG-383] - Adding functionality to DateUtils to allow direct setting of various fields.
-    * [LANG-402] - OSGi-ify Lang
-    * [LANG-404] - Add Calendar flavour format methods to DateFormatUtils
-    * [LANG-407] - StringUtils.length(String) returns null-safe length
-    * [LANG-413] - Memory usage improvement for StringUtils#getLevenshteinDistance()
diff --git a/dependencies/plugins/org.apache.commons.lang/build.properties b/dependencies/plugins/org.apache.commons.lang/build.properties
deleted file mode 100755
index 8c48e67..0000000
--- a/dependencies/plugins/org.apache.commons.lang/build.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-bin.includes = META-INF/,\
-               about.html,\
-               plugin.properties,\
-               org/,\
-               about_files/
-output.. = .
\ No newline at end of file
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/ArrayUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/ArrayUtils.class
deleted file mode 100755
index 0ee81a1..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/ArrayUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/BitField.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/BitField.class
deleted file mode 100755
index ec94b66..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/BitField.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/BooleanUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/BooleanUtils.class
deleted file mode 100755
index 30ac4d7..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/BooleanUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/CharEncoding.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/CharEncoding.class
deleted file mode 100755
index 7635e25..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/CharEncoding.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/CharRange.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/CharRange.class
deleted file mode 100755
index 38f12d2..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/CharRange.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/CharSet.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/CharSet.class
deleted file mode 100755
index 832fb92..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/CharSet.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/CharSetUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/CharSetUtils.class
deleted file mode 100755
index 640a2a6..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/CharSetUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/CharUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/CharUtils.class
deleted file mode 100755
index 7ca6e73..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/CharUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/ClassUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/ClassUtils.class
deleted file mode 100755
index 447b986..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/ClassUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$ArrayEntityMap.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$ArrayEntityMap.class
deleted file mode 100755
index dd94ce4..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$ArrayEntityMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$BinaryEntityMap.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$BinaryEntityMap.class
deleted file mode 100755
index a738090..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$BinaryEntityMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$EntityMap.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$EntityMap.class
deleted file mode 100755
index 877ff3d..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$EntityMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$HashEntityMap.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$HashEntityMap.class
deleted file mode 100755
index 84617da..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$HashEntityMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$LookupEntityMap.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$LookupEntityMap.class
deleted file mode 100755
index d35776b..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$LookupEntityMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$MapIntMap.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$MapIntMap.class
deleted file mode 100755
index 2ae3b5c..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$MapIntMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$PrimitiveEntityMap.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$PrimitiveEntityMap.class
deleted file mode 100755
index d038ee9..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$PrimitiveEntityMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$TreeEntityMap.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$TreeEntityMap.class
deleted file mode 100755
index 2f251ba..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities$TreeEntityMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities.class
deleted file mode 100755
index 3e37875..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Entities.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/IllegalClassException.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/IllegalClassException.class
deleted file mode 100755
index 85d94e0..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/IllegalClassException.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/IncompleteArgumentException.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/IncompleteArgumentException.class
deleted file mode 100755
index a2e812b..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/IncompleteArgumentException.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/IntHashMap$Entry.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/IntHashMap$Entry.class
deleted file mode 100755
index 561d17b..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/IntHashMap$Entry.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/IntHashMap.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/IntHashMap.class
deleted file mode 100755
index ba3664f..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/IntHashMap.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/LocaleUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/LocaleUtils.class
deleted file mode 100755
index 49b753e..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/LocaleUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/NotImplementedException.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/NotImplementedException.class
deleted file mode 100755
index 745553a..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/NotImplementedException.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/NullArgumentException.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/NullArgumentException.class
deleted file mode 100755
index 0c23e31..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/NullArgumentException.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/NumberRange.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/NumberRange.class
deleted file mode 100755
index 088f3c0..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/NumberRange.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/NumberUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/NumberUtils.class
deleted file mode 100755
index e4ff80d..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/NumberUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/ObjectUtils$Null.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/ObjectUtils$Null.class
deleted file mode 100755
index 82a029f..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/ObjectUtils$Null.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/ObjectUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/ObjectUtils.class
deleted file mode 100755
index e862296..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/ObjectUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/RandomStringUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/RandomStringUtils.class
deleted file mode 100755
index bc6c91d..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/RandomStringUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/SerializationException.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/SerializationException.class
deleted file mode 100755
index f512e2e..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/SerializationException.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/SerializationUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/SerializationUtils.class
deleted file mode 100755
index 58bedf6..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/SerializationUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/StringEscapeUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/StringEscapeUtils.class
deleted file mode 100755
index 20e6366..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/StringEscapeUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/StringUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/StringUtils.class
deleted file mode 100755
index 7213ee6..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/StringUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/SystemUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/SystemUtils.class
deleted file mode 100755
index 41beedb..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/SystemUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/UnhandledException.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/UnhandledException.class
deleted file mode 100755
index ecf27d3..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/UnhandledException.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Validate.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Validate.class
deleted file mode 100755
index 7eb8957..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/Validate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/WordUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/WordUtils.class
deleted file mode 100755
index 6ff5ee9..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/WordUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/CompareToBuilder.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/CompareToBuilder.class
deleted file mode 100755
index 338da97..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/CompareToBuilder.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/EqualsBuilder.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/EqualsBuilder.class
deleted file mode 100755
index 4bf2d16..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/EqualsBuilder.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/HashCodeBuilder$1.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/HashCodeBuilder$1.class
deleted file mode 100755
index fbe25ac..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/HashCodeBuilder$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/HashCodeBuilder.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/HashCodeBuilder.class
deleted file mode 100755
index 8285d5a..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/HashCodeBuilder.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ReflectionToStringBuilder.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ReflectionToStringBuilder.class
deleted file mode 100755
index abdeae6..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ReflectionToStringBuilder.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/StandardToStringStyle.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/StandardToStringStyle.class
deleted file mode 100755
index d7d8d94..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/StandardToStringStyle.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringBuilder.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringBuilder.class
deleted file mode 100755
index f01ef93..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringBuilder.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringStyle$1.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringStyle$1.class
deleted file mode 100755
index c65df5c..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringStyle$1.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringStyle$DefaultToStringStyle.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringStyle$DefaultToStringStyle.class
deleted file mode 100755
index 4625157..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringStyle$DefaultToStringStyle.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringStyle$MultiLineToStringStyle.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringStyle$MultiLineToStringStyle.class
deleted file mode 100755
index d956d2d..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringStyle$MultiLineToStringStyle.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringStyle$NoFieldNameToStringStyle.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringStyle$NoFieldNameToStringStyle.class
deleted file mode 100755
index bcf3c93..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringStyle$NoFieldNameToStringStyle.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringStyle$ShortPrefixToStringStyle.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringStyle$ShortPrefixToStringStyle.class
deleted file mode 100755
index 43ef31a..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringStyle$ShortPrefixToStringStyle.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringStyle$SimpleToStringStyle.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringStyle$SimpleToStringStyle.class
deleted file mode 100755
index 419e6fd..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringStyle$SimpleToStringStyle.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringStyle.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringStyle.class
deleted file mode 100755
index a4ce49d..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/builder/ToStringStyle.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enum/Enum$Entry.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enum/Enum$Entry.class
deleted file mode 100755
index 37c07e0..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enum/Enum$Entry.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enum/Enum.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enum/Enum.class
deleted file mode 100755
index 299c645..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enum/Enum.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enum/EnumUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enum/EnumUtils.class
deleted file mode 100755
index 5f36991..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enum/EnumUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enum/ValuedEnum.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enum/ValuedEnum.class
deleted file mode 100755
index df0bcfc..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enum/ValuedEnum.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enums/Enum$Entry.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enums/Enum$Entry.class
deleted file mode 100755
index a159374..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enums/Enum$Entry.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enums/Enum.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enums/Enum.class
deleted file mode 100755
index fc60c0e..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enums/Enum.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enums/EnumUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enums/EnumUtils.class
deleted file mode 100755
index 590ca6f..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enums/EnumUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enums/ValuedEnum.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enums/ValuedEnum.class
deleted file mode 100755
index d7e6f20..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/enums/ValuedEnum.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/exception/ExceptionUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/exception/ExceptionUtils.class
deleted file mode 100755
index 3abe9c0..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/exception/ExceptionUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/exception/Nestable.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/exception/Nestable.class
deleted file mode 100755
index 7c1510e..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/exception/Nestable.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/exception/NestableDelegate.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/exception/NestableDelegate.class
deleted file mode 100755
index ceef3e6..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/exception/NestableDelegate.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/exception/NestableError.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/exception/NestableError.class
deleted file mode 100755
index c7c328c..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/exception/NestableError.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/exception/NestableException.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/exception/NestableException.class
deleted file mode 100755
index 3a2e520..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/exception/NestableException.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/exception/NestableRuntimeException.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/exception/NestableRuntimeException.class
deleted file mode 100755
index 2d9c5e0..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/exception/NestableRuntimeException.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/DoubleRange.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/DoubleRange.class
deleted file mode 100755
index fb515da..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/DoubleRange.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/FloatRange.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/FloatRange.class
deleted file mode 100755
index ed1fe8a..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/FloatRange.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/Fraction.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/Fraction.class
deleted file mode 100755
index dd8708d..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/Fraction.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/IEEE754rUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/IEEE754rUtils.class
deleted file mode 100755
index 5de33b9..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/IEEE754rUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/IntRange.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/IntRange.class
deleted file mode 100755
index 63c4540..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/IntRange.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/JVMRandom.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/JVMRandom.class
deleted file mode 100755
index 447ecc4..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/JVMRandom.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/LongRange.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/LongRange.class
deleted file mode 100755
index 42896c8..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/LongRange.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/NumberRange.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/NumberRange.class
deleted file mode 100755
index d40bc7b..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/NumberRange.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/NumberUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/NumberUtils.class
deleted file mode 100755
index e76d6b9..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/NumberUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/RandomUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/RandomUtils.class
deleted file mode 100755
index 44c2de5..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/RandomUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/Range.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/Range.class
deleted file mode 100755
index 408730b..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/math/Range.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/Mutable.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/Mutable.class
deleted file mode 100755
index 388074e..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/Mutable.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableBoolean.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableBoolean.class
deleted file mode 100755
index f02d934..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableBoolean.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableByte.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableByte.class
deleted file mode 100755
index e555a06..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableByte.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableDouble.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableDouble.class
deleted file mode 100755
index 3e8383a..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableDouble.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableFloat.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableFloat.class
deleted file mode 100755
index 9a98ad6..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableFloat.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableInt.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableInt.class
deleted file mode 100755
index 83e88a5..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableInt.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableLong.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableLong.class
deleted file mode 100755
index cec53b4..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableLong.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableObject.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableObject.class
deleted file mode 100755
index 6dba7b0..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableObject.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableShort.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableShort.class
deleted file mode 100755
index 96fa7f7..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/mutable/MutableShort.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/CompositeFormat.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/CompositeFormat.class
deleted file mode 100755
index 927edab..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/CompositeFormat.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/ExtendedMessageFormat.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/ExtendedMessageFormat.class
deleted file mode 100755
index 14195f6..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/ExtendedMessageFormat.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/FormatFactory.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/FormatFactory.class
deleted file mode 100755
index e2c7fac..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/FormatFactory.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrBuilder$StrBuilderReader.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrBuilder$StrBuilderReader.class
deleted file mode 100755
index 1f9c810..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrBuilder$StrBuilderReader.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrBuilder$StrBuilderTokenizer.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrBuilder$StrBuilderTokenizer.class
deleted file mode 100755
index ed993e9..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrBuilder$StrBuilderTokenizer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrBuilder$StrBuilderWriter.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrBuilder$StrBuilderWriter.class
deleted file mode 100755
index 6e104f3..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrBuilder$StrBuilderWriter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrBuilder.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrBuilder.class
deleted file mode 100755
index 244fb16..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrBuilder.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrLookup$MapStrLookup.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrLookup$MapStrLookup.class
deleted file mode 100755
index dc7c7b3..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrLookup$MapStrLookup.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrLookup.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrLookup.class
deleted file mode 100755
index 3a2efc3..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrLookup.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrMatcher$CharMatcher.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrMatcher$CharMatcher.class
deleted file mode 100755
index ff68bf8..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrMatcher$CharMatcher.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrMatcher$CharSetMatcher.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrMatcher$CharSetMatcher.class
deleted file mode 100755
index a625f1c..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrMatcher$CharSetMatcher.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrMatcher$NoMatcher.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrMatcher$NoMatcher.class
deleted file mode 100755
index fff8f95..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrMatcher$NoMatcher.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrMatcher$StringMatcher.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrMatcher$StringMatcher.class
deleted file mode 100755
index 7574f7a..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrMatcher$StringMatcher.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrMatcher$TrimMatcher.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrMatcher$TrimMatcher.class
deleted file mode 100755
index b87f5a0..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrMatcher$TrimMatcher.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrMatcher.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrMatcher.class
deleted file mode 100755
index 3beb081..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrMatcher.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrSubstitutor.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrSubstitutor.class
deleted file mode 100755
index fc99752..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrSubstitutor.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrTokenizer.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrTokenizer.class
deleted file mode 100755
index bbc90c4..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/text/StrTokenizer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/DateFormatUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/DateFormatUtils.class
deleted file mode 100755
index 5f03473..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/DateFormatUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/DateUtils$DateIterator.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/DateUtils$DateIterator.class
deleted file mode 100755
index 2b3a62f..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/DateUtils$DateIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/DateUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/DateUtils.class
deleted file mode 100755
index 6fbbda8..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/DateUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/DurationFormatUtils$Token.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/DurationFormatUtils$Token.class
deleted file mode 100755
index 9dbc619..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/DurationFormatUtils$Token.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/DurationFormatUtils.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/DurationFormatUtils.class
deleted file mode 100755
index 03df684..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/DurationFormatUtils.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$CharacterLiteral.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$CharacterLiteral.class
deleted file mode 100755
index af44106..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$CharacterLiteral.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$NumberRule.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$NumberRule.class
deleted file mode 100755
index fae4ec9..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$NumberRule.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$PaddedNumberField.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$PaddedNumberField.class
deleted file mode 100755
index b047eca..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$PaddedNumberField.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$Pair.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$Pair.class
deleted file mode 100755
index 7b3c76a..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$Pair.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$Rule.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$Rule.class
deleted file mode 100755
index e9f6ce0..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$Rule.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$StringLiteral.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$StringLiteral.class
deleted file mode 100755
index b1bf5a1..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$StringLiteral.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TextField.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TextField.class
deleted file mode 100755
index a436b98..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TextField.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TimeZoneDisplayKey.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TimeZoneDisplayKey.class
deleted file mode 100755
index d475f2c..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TimeZoneDisplayKey.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TimeZoneNameRule.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TimeZoneNameRule.class
deleted file mode 100755
index 96272b6..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TimeZoneNameRule.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TimeZoneNumberRule.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TimeZoneNumberRule.class
deleted file mode 100755
index 74a687c..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TimeZoneNumberRule.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TwelveHourField.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TwelveHourField.class
deleted file mode 100755
index d0058eb..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TwelveHourField.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TwentyFourHourField.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TwentyFourHourField.class
deleted file mode 100755
index 31c60d5..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TwentyFourHourField.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TwoDigitMonthField.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TwoDigitMonthField.class
deleted file mode 100755
index d93780a..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TwoDigitMonthField.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TwoDigitNumberField.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TwoDigitNumberField.class
deleted file mode 100755
index e0e42c6..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TwoDigitNumberField.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TwoDigitYearField.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TwoDigitYearField.class
deleted file mode 100755
index 9085d31..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$TwoDigitYearField.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$UnpaddedMonthField.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$UnpaddedMonthField.class
deleted file mode 100755
index 2453383..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$UnpaddedMonthField.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$UnpaddedNumberField.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$UnpaddedNumberField.class
deleted file mode 100755
index 51a84a0..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat$UnpaddedNumberField.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat.class
deleted file mode 100755
index 678d42c..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/FastDateFormat.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/StopWatch.class b/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/StopWatch.class
deleted file mode 100755
index 1fb5dde..0000000
--- a/dependencies/plugins/org.apache.commons.lang/org/apache/commons/lang/time/StopWatch.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.apache.commons.lang/plugin.properties b/dependencies/plugins/org.apache.commons.lang/plugin.properties
deleted file mode 100755
index 64b32a4..0000000
--- a/dependencies/plugins/org.apache.commons.lang/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-################################################################################
-# Copyright (c) 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials 
-# are made available under the terms of the Eclipse Public License v1.0 
-# which accompanies this distribution, and is available at 
-# http://www.eclipse.org/legal/epl-v10.html 
-# 
-# Contributors: 
-# Chris Aniszczyk - initial API and implementation 
-################################################################################
-pluginName=Apache Jakarta Commons Lang
-providerName=Eclipse.org
\ No newline at end of file
diff --git a/dependencies/plugins/org.jdom/.classpath b/dependencies/plugins/org.jdom/.classpath
deleted file mode 100644
index 48d32ae..0000000
--- a/dependencies/plugins/org.jdom/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry exported="true" kind="lib" path="" sourcepath="source-bundle"/>
-	<classpathentry kind="output" path=""/>
-</classpath>
diff --git a/dependencies/plugins/org.jdom/.project b/dependencies/plugins/org.jdom/.project
deleted file mode 100644
index 5a849a8..0000000
--- a/dependencies/plugins/org.jdom/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.jdom</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/dependencies/plugins/org.jdom/META-INF/MANIFEST.MF b/dependencies/plugins/org.jdom/META-INF/MANIFEST.MF
deleted file mode 100644
index c0fb3db..0000000
--- a/dependencies/plugins/org.jdom/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,16 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %Bundle-Name.0
-Bundle-SymbolicName: org.jdom
-Bundle-Localization: plugin
-Bundle-Version: 1.0.0.qualifier
-Bundle-Vendor: %Bundle-Vendor.0
-Export-Package: org.jdom;version="1.0.0",
- org.jdom.adapters;version="1.0.0",
- org.jdom.filter;version="1.0.0",
- org.jdom.input;version="1.0.0",
- org.jdom.output;version="1.0.0",
- org.jdom.transform;version="1.0.0",
- org.jdom.xpath;version="1.0.0"
-Require-Bundle: org.apache.xerces;resolution:=optional
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/dependencies/plugins/org.jdom/about.html b/dependencies/plugins/org.jdom/about.html
deleted file mode 100644
index f58fd51..0000000
--- a/dependencies/plugins/org.jdom/about.html
+++ /dev/null
@@ -1,41 +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>
-
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>About</title></head><script charset="utf-8" id="injection_graph_func" src="about_files/injection_graph_func.js"></script><link href="about_files/injection_graph.css" type="text/css" rel="stylesheet" charset="utf-8" id="injection_graph_css"><body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>June 08, 2007</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in ("Content").  Unless otherwise 
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 ("EPL").  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, "Program" will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party ("Redistributor") and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was 
-provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-		
-<h3>Third Party Content</h3>
-<p>The Content includes items that have been sourced from third parties as set out below. If you 
-did not receive this Content directly from the Eclipse Foundation, the following is provided 
-for informational purposes only, and you should look to the Redistributor's license for 
-terms and conditions of use.</p>
-
-<h4>JDOM 1.0</h4>
-
-<p>JDOM is available under an Apache-style open source license, with the acknowledgment clause removed. 
-This license is among the least restrictive license available, enabling developers to use JDOM in 
-creating new products without requiring them to release their own products as open source. 
-This is the license model used by the Apache Project, which created the Apache server. 
-A copy of the license is contained in the file <a href="about_files/LICENSE.txt">LICENSE.txt</a> and 
-is also available at the top of every source file and in LICENSE.txt in the root of the distribution.
-</p>
-
-<h4>Source</h4>
-<p>Source is available from the Orbit Project at the Eclipse Foundation. The location of the repository is - dev.eclipse.org:/cvsroot/tools:org.eclipse.orbit/org.jdom</p>
-</body></html>
\ No newline at end of file
diff --git a/dependencies/plugins/org.jdom/about_files/LICENSE.txt b/dependencies/plugins/org.jdom/about_files/LICENSE.txt
deleted file mode 100644
index 16ab58a..0000000
--- a/dependencies/plugins/org.jdom/about_files/LICENSE.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-/*-- 
-
- $Id: LICENSE.txt,v 1.1 2009/05/27 21:46:21 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>. 
-
- */
-
diff --git a/dependencies/plugins/org.jdom/build.properties b/dependencies/plugins/org.jdom/build.properties
deleted file mode 100644
index a381b3c..0000000
--- a/dependencies/plugins/org.jdom/build.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-bin.includes = META-INF/,\
-               about.html,\
-               plugin.properties,\
-               about_files/,\
-               org/
-output..=.               
-               
\ No newline at end of file
diff --git a/dependencies/plugins/org.jdom/org/jdom/Attribute.class b/dependencies/plugins/org.jdom/org/jdom/Attribute.class
deleted file mode 100644
index 16abbc3..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/Attribute.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/AttributeList.class b/dependencies/plugins/org.jdom/org/jdom/AttributeList.class
deleted file mode 100644
index 2593a41..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/AttributeList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/CDATA.class b/dependencies/plugins/org.jdom/org/jdom/CDATA.class
deleted file mode 100644
index 2fd7b4c..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/CDATA.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/Comment.class b/dependencies/plugins/org.jdom/org/jdom/Comment.class
deleted file mode 100644
index 6306501..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/Comment.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/Content.class b/dependencies/plugins/org.jdom/org/jdom/Content.class
deleted file mode 100644
index 9984aa0..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/Content.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/ContentList$FilterList.class b/dependencies/plugins/org.jdom/org/jdom/ContentList$FilterList.class
deleted file mode 100644
index f78a256..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/ContentList$FilterList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/ContentList$FilterListIterator.class b/dependencies/plugins/org.jdom/org/jdom/ContentList$FilterListIterator.class
deleted file mode 100644
index 0b84325..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/ContentList$FilterListIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/ContentList.class b/dependencies/plugins/org.jdom/org/jdom/ContentList.class
deleted file mode 100644
index 4808c1d..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/ContentList.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/DataConversionException.class b/dependencies/plugins/org.jdom/org/jdom/DataConversionException.class
deleted file mode 100644
index d2e1ad4..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/DataConversionException.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/DefaultJDOMFactory.class b/dependencies/plugins/org.jdom/org/jdom/DefaultJDOMFactory.class
deleted file mode 100644
index fd6c5c2..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/DefaultJDOMFactory.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/DescendantIterator.class b/dependencies/plugins/org.jdom/org/jdom/DescendantIterator.class
deleted file mode 100644
index 335b120..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/DescendantIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/DocType.class b/dependencies/plugins/org.jdom/org/jdom/DocType.class
deleted file mode 100644
index 9b55959..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/DocType.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/Document.class b/dependencies/plugins/org.jdom/org/jdom/Document.class
deleted file mode 100644
index d212a39..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/Document.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/Element.class b/dependencies/plugins/org.jdom/org/jdom/Element.class
deleted file mode 100644
index a499570..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/Element.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/EntityRef.class b/dependencies/plugins/org.jdom/org/jdom/EntityRef.class
deleted file mode 100644
index dc09bae..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/EntityRef.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/FilterIterator.class b/dependencies/plugins/org.jdom/org/jdom/FilterIterator.class
deleted file mode 100644
index 07638f6..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/FilterIterator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/IllegalAddException.class b/dependencies/plugins/org.jdom/org/jdom/IllegalAddException.class
deleted file mode 100644
index 5dbf23e..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/IllegalAddException.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/IllegalDataException.class b/dependencies/plugins/org.jdom/org/jdom/IllegalDataException.class
deleted file mode 100644
index bcf6dea..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/IllegalDataException.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/IllegalNameException.class b/dependencies/plugins/org.jdom/org/jdom/IllegalNameException.class
deleted file mode 100644
index e904b43..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/IllegalNameException.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/IllegalTargetException.class b/dependencies/plugins/org.jdom/org/jdom/IllegalTargetException.class
deleted file mode 100644
index 60eac6a..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/IllegalTargetException.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/JDOMException.class b/dependencies/plugins/org.jdom/org/jdom/JDOMException.class
deleted file mode 100644
index d415e82..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/JDOMException.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/JDOMFactory.class b/dependencies/plugins/org.jdom/org/jdom/JDOMFactory.class
deleted file mode 100644
index 8e1d010..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/JDOMFactory.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/Namespace.class b/dependencies/plugins/org.jdom/org/jdom/Namespace.class
deleted file mode 100644
index 4bba684..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/Namespace.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/Parent.class b/dependencies/plugins/org.jdom/org/jdom/Parent.class
deleted file mode 100644
index 58ea714..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/Parent.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/ProcessingInstruction.class b/dependencies/plugins/org.jdom/org/jdom/ProcessingInstruction.class
deleted file mode 100644
index a7ef909..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/ProcessingInstruction.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/Text.class b/dependencies/plugins/org.jdom/org/jdom/Text.class
deleted file mode 100644
index 086854a..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/Text.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/UncheckedJDOMFactory.class b/dependencies/plugins/org.jdom/org/jdom/UncheckedJDOMFactory.class
deleted file mode 100644
index 51cca64..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/UncheckedJDOMFactory.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/Verifier.class b/dependencies/plugins/org.jdom/org/jdom/Verifier.class
deleted file mode 100644
index f54ca57..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/Verifier.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/adapters/AbstractDOMAdapter.class b/dependencies/plugins/org.jdom/org/jdom/adapters/AbstractDOMAdapter.class
deleted file mode 100644
index 1313f7e..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/adapters/AbstractDOMAdapter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/adapters/CrimsonDOMAdapter.class b/dependencies/plugins/org.jdom/org/jdom/adapters/CrimsonDOMAdapter.class
deleted file mode 100644
index aa95e8a..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/adapters/CrimsonDOMAdapter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/adapters/DOMAdapter.class b/dependencies/plugins/org.jdom/org/jdom/adapters/DOMAdapter.class
deleted file mode 100644
index e837f38..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/adapters/DOMAdapter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/adapters/JAXPDOMAdapter.class b/dependencies/plugins/org.jdom/org/jdom/adapters/JAXPDOMAdapter.class
deleted file mode 100644
index a7df2b7..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/adapters/JAXPDOMAdapter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/adapters/OracleV1DOMAdapter.class b/dependencies/plugins/org.jdom/org/jdom/adapters/OracleV1DOMAdapter.class
deleted file mode 100644
index d2484b9..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/adapters/OracleV1DOMAdapter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/adapters/OracleV2DOMAdapter.class b/dependencies/plugins/org.jdom/org/jdom/adapters/OracleV2DOMAdapter.class
deleted file mode 100644
index 4a868b9..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/adapters/OracleV2DOMAdapter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/adapters/XML4JDOMAdapter.class b/dependencies/plugins/org.jdom/org/jdom/adapters/XML4JDOMAdapter.class
deleted file mode 100644
index a95866d..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/adapters/XML4JDOMAdapter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/adapters/XercesDOMAdapter.class b/dependencies/plugins/org.jdom/org/jdom/adapters/XercesDOMAdapter.class
deleted file mode 100644
index 19be5db..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/adapters/XercesDOMAdapter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/filter/AbstractFilter.class b/dependencies/plugins/org.jdom/org/jdom/filter/AbstractFilter.class
deleted file mode 100644
index b7a2741..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/filter/AbstractFilter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/filter/AndFilter.class b/dependencies/plugins/org.jdom/org/jdom/filter/AndFilter.class
deleted file mode 100644
index 71c5c42..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/filter/AndFilter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/filter/ContentFilter.class b/dependencies/plugins/org.jdom/org/jdom/filter/ContentFilter.class
deleted file mode 100644
index 6f1fd9e..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/filter/ContentFilter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/filter/ElementFilter.class b/dependencies/plugins/org.jdom/org/jdom/filter/ElementFilter.class
deleted file mode 100644
index 3c53b75..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/filter/ElementFilter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/filter/Filter.class b/dependencies/plugins/org.jdom/org/jdom/filter/Filter.class
deleted file mode 100644
index bd6fb8b..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/filter/Filter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/filter/NegateFilter.class b/dependencies/plugins/org.jdom/org/jdom/filter/NegateFilter.class
deleted file mode 100644
index 5a3fd44..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/filter/NegateFilter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/filter/OrFilter.class b/dependencies/plugins/org.jdom/org/jdom/filter/OrFilter.class
deleted file mode 100644
index 94afe4c..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/filter/OrFilter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/input/BuilderErrorHandler.class b/dependencies/plugins/org.jdom/org/jdom/input/BuilderErrorHandler.class
deleted file mode 100644
index 20c32a6..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/input/BuilderErrorHandler.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/input/DOMBuilder.class b/dependencies/plugins/org.jdom/org/jdom/input/DOMBuilder.class
deleted file mode 100644
index e01817c..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/input/DOMBuilder.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/input/JAXPParserFactory.class b/dependencies/plugins/org.jdom/org/jdom/input/JAXPParserFactory.class
deleted file mode 100644
index 711e139..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/input/JAXPParserFactory.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/input/JDOMParseException.class b/dependencies/plugins/org.jdom/org/jdom/input/JDOMParseException.class
deleted file mode 100644
index e45f406..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/input/JDOMParseException.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/input/SAXBuilder.class b/dependencies/plugins/org.jdom/org/jdom/input/SAXBuilder.class
deleted file mode 100644
index 71f18f8..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/input/SAXBuilder.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/input/SAXHandler.class b/dependencies/plugins/org.jdom/org/jdom/input/SAXHandler.class
deleted file mode 100644
index 2366028..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/input/SAXHandler.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/input/TextBuffer.class b/dependencies/plugins/org.jdom/org/jdom/input/TextBuffer.class
deleted file mode 100644
index 1982c02..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/input/TextBuffer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/output/DOMOutputter.class b/dependencies/plugins/org.jdom/org/jdom/output/DOMOutputter.class
deleted file mode 100644
index d24523c..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/output/DOMOutputter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/output/EscapeStrategy.class b/dependencies/plugins/org.jdom/org/jdom/output/EscapeStrategy.class
deleted file mode 100644
index a95ec06..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/output/EscapeStrategy.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/output/Format$DefaultEscapeStrategy.class b/dependencies/plugins/org.jdom/org/jdom/output/Format$DefaultEscapeStrategy.class
deleted file mode 100644
index 9550f53..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/output/Format$DefaultEscapeStrategy.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/output/Format$TextMode.class b/dependencies/plugins/org.jdom/org/jdom/output/Format$TextMode.class
deleted file mode 100644
index 131533b..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/output/Format$TextMode.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/output/Format.class b/dependencies/plugins/org.jdom/org/jdom/output/Format.class
deleted file mode 100644
index 5da8e26..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/output/Format.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/output/JDOMLocator.class b/dependencies/plugins/org.jdom/org/jdom/output/JDOMLocator.class
deleted file mode 100644
index fcad601..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/output/JDOMLocator.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/output/NamespaceStack.class b/dependencies/plugins/org.jdom/org/jdom/output/NamespaceStack.class
deleted file mode 100644
index db5ef1c..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/output/NamespaceStack.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/output/SAXOutputter.class b/dependencies/plugins/org.jdom/org/jdom/output/SAXOutputter.class
deleted file mode 100644
index aa118ed..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/output/SAXOutputter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/output/XMLOutputter$NamespaceStack.class b/dependencies/plugins/org.jdom/org/jdom/output/XMLOutputter$NamespaceStack.class
deleted file mode 100644
index db54e60..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/output/XMLOutputter$NamespaceStack.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/output/XMLOutputter.class b/dependencies/plugins/org.jdom/org/jdom/output/XMLOutputter.class
deleted file mode 100644
index 76814ab..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/output/XMLOutputter.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/transform/JDOMResult$DocumentBuilder.class b/dependencies/plugins/org.jdom/org/jdom/transform/JDOMResult$DocumentBuilder.class
deleted file mode 100644
index 0e42fbd..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/transform/JDOMResult$DocumentBuilder.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/transform/JDOMResult$FragmentHandler.class b/dependencies/plugins/org.jdom/org/jdom/transform/JDOMResult$FragmentHandler.class
deleted file mode 100644
index fe533e4..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/transform/JDOMResult$FragmentHandler.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/transform/JDOMResult.class b/dependencies/plugins/org.jdom/org/jdom/transform/JDOMResult.class
deleted file mode 100644
index 8535575..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/transform/JDOMResult.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/transform/JDOMSource$DocumentReader.class b/dependencies/plugins/org.jdom/org/jdom/transform/JDOMSource$DocumentReader.class
deleted file mode 100644
index 9dca098..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/transform/JDOMSource$DocumentReader.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/transform/JDOMSource$JDOMInputSource.class b/dependencies/plugins/org.jdom/org/jdom/transform/JDOMSource$JDOMInputSource.class
deleted file mode 100644
index 6efb2e5..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/transform/JDOMSource$JDOMInputSource.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/transform/JDOMSource.class b/dependencies/plugins/org.jdom/org/jdom/transform/JDOMSource.class
deleted file mode 100644
index 58aecd2..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/transform/JDOMSource.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/transform/XSLTransformException.class b/dependencies/plugins/org.jdom/org/jdom/transform/XSLTransformException.class
deleted file mode 100644
index bbac343..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/transform/XSLTransformException.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/transform/XSLTransformer.class b/dependencies/plugins/org.jdom/org/jdom/transform/XSLTransformer.class
deleted file mode 100644
index 61bc730..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/transform/XSLTransformer.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/xpath/JaxenXPath$NSContext.class b/dependencies/plugins/org.jdom/org/jdom/xpath/JaxenXPath$NSContext.class
deleted file mode 100644
index e27b9b5..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/xpath/JaxenXPath$NSContext.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/xpath/JaxenXPath.class b/dependencies/plugins/org.jdom/org/jdom/xpath/JaxenXPath.class
deleted file mode 100644
index 23dbcb1..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/xpath/JaxenXPath.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/xpath/XPath$XPathString.class b/dependencies/plugins/org.jdom/org/jdom/xpath/XPath$XPathString.class
deleted file mode 100644
index cb537d3..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/xpath/XPath$XPathString.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/org/jdom/xpath/XPath.class b/dependencies/plugins/org.jdom/org/jdom/xpath/XPath.class
deleted file mode 100644
index eef765c..0000000
--- a/dependencies/plugins/org.jdom/org/jdom/xpath/XPath.class
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.jdom/plugin.properties b/dependencies/plugins/org.jdom/plugin.properties
deleted file mode 100644
index 8d354d3..0000000
--- a/dependencies/plugins/org.jdom/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-################################################################################
-# Copyright (c) 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials 
-# are made available under the terms of the Eclipse Public License v1.0 
-# which accompanies this distribution, and is available at 
-# http://www.eclipse.org/legal/epl-v10.html 
-# 
-# Contributors: 
-# Chris Aniszczyk - initial API and implementation 
-################################################################################
-Bundle-Vendor.0 = Eclipse.org
-Bundle-Name.0 = JDOM
\ No newline at end of file
diff --git a/dependencies/plugins/org.jdom/source-bundle/META-INF/MANIFEST.MF b/dependencies/plugins/org.jdom/source-bundle/META-INF/MANIFEST.MF
deleted file mode 100644
index ceef158..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.jdom.source
-Bundle-Version: 1.0.0.qualifier
-Bundle-Localization: plugin
-Bundle-Vendor: %providerName
-Eclipse-SourceBundle: org.jdom;version="1.0.0.qualifier"
diff --git a/dependencies/plugins/org.jdom/source-bundle/about.html b/dependencies/plugins/org.jdom/source-bundle/about.html
deleted file mode 100644
index 56f09b6..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/about.html
+++ /dev/null
@@ -1,46 +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>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>June 5, 2007</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was 
-provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
-
-<h3>Source Code</h3>
-
-<p>This plug-in contains source code zip files ("Source Zips") that correspond to binary content
-in other plug-ins. These Source Zips may be distributed under different license agreements and/or notices.
-Details about these license agreements and notices are contained in "about.html" files ("Abouts") located
-in sub-directories in the src/ directory of this plug-in. Such Abouts govern your use of the Source Zips
-in that directory, not the EPL.</p>
-
-<h4>JDOM 1.0</h4>
-
-<p>JDOM is available under an Apache-style open source license, with the acknowledgment clause removed. 
-This license is among the least restrictive license available, enabling developers to use JDOM in 
-creating new products without requiring them to release their own products as open source. 
-This is the license model used by the Apache Project, which created the Apache server. 
-A copy of the license is contained in the file <a href="about_files/LICENSE.txt">LICENSE.txt</a> and 
-is also available at the top of every source file and in LICENSE.txt in the root of the distribution.
-</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/dependencies/plugins/org.jdom/source-bundle/about_files/LICENSE.txt b/dependencies/plugins/org.jdom/source-bundle/about_files/LICENSE.txt
deleted file mode 100644
index 62c10d8..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/about_files/LICENSE.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-/*-- 
-
- $Id: LICENSE.txt,v 1.1 2009/05/27 21:46:20 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>. 
-
- */
-
diff --git a/dependencies/plugins/org.jdom/source-bundle/build.properties b/dependencies/plugins/org.jdom/source-bundle/build.properties
deleted file mode 100644
index 4554292..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/build.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2007, 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials 
-# are made available under the terms of the Common Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/cpl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = about.html,\
-               about_files/,\
-               plugin.properties,\
-               META-INF/,\
-               org/
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/Attribute.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/Attribute.java
deleted file mode 100644
index 9d0080b..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/Attribute.java
+++ /dev/null
@@ -1,701 +0,0 @@
-/*--
-
- $Id: Attribute.java,v 1.1 2009/05/27 21:46:17 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom;
-
-import java.io.*;
-
-/**
- * An XML attribute. Methods allow the user to obtain the value of the attribute
- * as well as namespace and type information.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:17 $
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- * @author  Elliotte Rusty Harold
- * @author  Wesley Biggs
- */
-public class Attribute implements Serializable, Cloneable {
-
-    private static final String CVS_ID =
-      "@(#) $RCSfile: Attribute.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:17 $ $Name:  $";
-
-    /**
-     * Attribute type: the attribute has not been declared or type
-     * is unknown.
-     *
-     * @see #getAttributeType
-     */
-    public final static int UNDECLARED_TYPE = 0;
-
-    /**
-     * Attribute type: the attribute value is a string.
-     *
-     * @see #getAttributeType
-     */
-    public final static int CDATA_TYPE = 1;
-
-    /**
-     * Attribute type: the attribute value is a unique identifier.
-     *
-     * @see #getAttributeType
-     */
-    public final static int ID_TYPE = 2;
-
-    /**
-     * Attribute type: the attribute value is a reference to a
-     * unique identifier.
-     *
-     * @see #getAttributeType
-     */
-    public final static int IDREF_TYPE = 3;
-
-    /**
-     * Attribute type: the attribute value is a list of references to
-     * unique identifiers.
-     *
-     * @see #getAttributeType
-     */
-    public final static int IDREFS_TYPE = 4;
-
-    /**
-     * Attribute type: the attribute value is the name of an entity.
-     *
-     * @see #getAttributeType
-     */
-    public final static int ENTITY_TYPE = 5;
-
-    /**
-     * <p>
-     * Attribute type: the attribute value is a list of entity names.
-     * </p>
-     *
-     * @see #getAttributeType
-     */
-    public final static int ENTITIES_TYPE = 6;
-
-    /**
-     * Attribute type: the attribute value is a name token.
-     * <p>
-     * According to SAX 2.0 specification, attributes of enumerated
-     * types should be reported as "NMTOKEN" by SAX parsers.  But the
-     * major parsers (Xerces and Crimson) provide specific values
-     * that permit to recognize them as {@link #ENUMERATED_TYPE}.
-     *
-     * @see #getAttributeType
-     */
-    public final static int NMTOKEN_TYPE = 7;
-
-    /**
-     * Attribute type: the attribute value is a list of name tokens.
-     *
-     * @see #getAttributeType
-     */
-    public final static int NMTOKENS_TYPE = 8;
-
-    /**
-     * Attribute type: the attribute value is the name of a notation.
-     *
-     * @see #getAttributeType
-     */
-    public final static int NOTATION_TYPE = 9;
-
-    /**
-     * Attribute type: the attribute value is a name token from an
-     * enumeration.
-     *
-     * @see #getAttributeType
-     */
-    public final static int ENUMERATED_TYPE = 10;
-
-    // Keep the old constant names for one beta cycle to help migration
-
-
-
-    /** The local name of the <code>Attribute</code> */
-    protected String name;
-
-    /** The <code>{@link Namespace}</code> of the <code>Attribute</code> */
-    protected transient Namespace namespace;
-
-    /** The value of the <code>Attribute</code> */
-    protected String value;
-
-    /** The type of the <code>Attribute</code> */
-    protected int type = UNDECLARED_TYPE;
-
-    /** Parent element, or null if none */
-    protected Object parent;
-
-    /**
-     * Default, no-args constructor for implementations to use if needed.
-     */
-    protected Attribute() {}
-
-    /**
-     * This will create a new <code>Attribute</code> with the
-     * specified (local) name and value, and in the provided
-     * <code>{@link Namespace}</code>.
-     *
-     * @param name <code>String</code> name of <code>Attribute</code>.
-     * @param value <code>String</code> value for new attribute.
-     * @param namespace <code>Namespace</code> namespace for new attribute.
-     * @throws IllegalNameException if the given name is illegal as an
-     *         attribute name or if if the new namespace is the default
-     *         namespace. Attributes cannot be in a default namespace.
-     * @throws IllegalDataException if the given attribute value is
-     *         illegal character data (as determined by
-     *         {@link org.jdom.Verifier#checkCharacterData}).
-     */
-    public Attribute(String name, String value, Namespace namespace) {
-        setName(name);
-        setValue(value);
-        setNamespace(namespace);
-    }
-
-    /**
-     * This will create a new <code>Attribute</code> with the
-     * specified (local) name, value, and type, and in the provided
-     * <code>{@link Namespace}</code>.
-     *
-     * @param name <code>String</code> name of <code>Attribute</code>.
-     * @param value <code>String</code> value for new attribute.
-     * @param type <code>int</code> type for new attribute.
-     * @param namespace <code>Namespace</code> namespace for new attribute.
-     * @throws IllegalNameException if the given name is illegal as an
-     *         attribute name or if if the new namespace is the default
-     *         namespace. Attributes cannot be in a default namespace.
-     * @throws IllegalDataException if the given attribute value is
-     *         illegal character data (as determined by
-     *         {@link org.jdom.Verifier#checkCharacterData}) or
-     *         if the given attribute type is not one of the
-     *         supported types.
-     */
-    public Attribute(String name, String value, int type, Namespace namespace) {
-        setName(name);
-        setValue(value);
-        setAttributeType(type);
-        setNamespace(namespace);
-    }
-
-    /**
-     * This will create a new <code>Attribute</code> with the
-     * specified (local) name and value, and does not place
-     * the attribute in a <code>{@link Namespace}</code>.
-     * <p>
-     * <b>Note</b>: This actually explicitly puts the
-     * <code>Attribute</code> in the "empty" <code>Namespace</code>
-     * (<code>{@link Namespace#NO_NAMESPACE}</code>).
-     *
-     * @param name <code>String</code> name of <code>Attribute</code>.
-     * @param value <code>String</code> value for new attribute.
-     * @throws IllegalNameException if the given name is illegal as an
-     *         attribute name.
-     * @throws IllegalDataException if the given attribute value is
-     *         illegal character data (as determined by
-     *         {@link org.jdom.Verifier#checkCharacterData}).
-     */
-    public Attribute(String name, String value) {
-        this(name, value, UNDECLARED_TYPE, Namespace.NO_NAMESPACE);
-    }
-
-    /**
-     * This will create a new <code>Attribute</code> with the
-     * specified (local) name, value and type, and does not place
-     * the attribute in a <code>{@link Namespace}</code>.
-     * <p>
-     * <b>Note</b>: This actually explicitly puts the
-     * <code>Attribute</code> in the "empty" <code>Namespace</code>
-     * (<code>{@link Namespace#NO_NAMESPACE}</code>).
-     *
-     * @param name <code>String</code> name of <code>Attribute</code>.
-     * @param value <code>String</code> value for new attribute.
-     * @param type <code>int</code> type for new attribute.
-     * @throws IllegalNameException if the given name is illegal as an
-     *         attribute name.
-     * @throws IllegalDataException if the given attribute value is
-     *         illegal character data (as determined by
-     *         {@link org.jdom.Verifier#checkCharacterData}) or
-     *         if the given attribute type is not one of the
-     *         supported types.
-     */
-    public Attribute(String name, String value, int type) {
-        this(name, value, type, Namespace.NO_NAMESPACE);
-    }
-
-    /**
-     * This will return the parent of this <code>Attribute</code>.
-     * If there is no parent, then this returns <code>null</code>.
-     *
-     * @return parent of this <code>Attribute</code>
-     */
-    public Element getParent() {
-        return (Element) parent;
-    }
-
-    /**
-     * This retrieves the owning <code>{@link Document}</code> for
-     * this Attribute, or null if not a currently a member of a
-     * <code>{@link Document}</code>.
-     *
-     * @return <code>Document</code> owning this Attribute, or null.
-     */
-    public Document getDocument() {
-        if (parent != null) {
-            return ((Element)parent).getDocument();
-        }
-        return null;
-    }
-
-    /**
-     * This will set the parent of this <code>Attribute</code>.
-     *
-     * @param parent <code>Element</code> to be new parent.
-     * @return this <code>Attribute</code> modified.
-     */
-    protected Attribute setParent(Element parent) {
-        this.parent = parent;
-        return this;
-    }
-
-    /**
-     * This detaches the <code>Attribute</code> from its parent, or does
-     * nothing if the <code>Attribute</code> has no parent.
-     *
-     * @return <code>Attribute</code> - this <code>Attribute</code> modified.
-     */
-    public Attribute detach() {
-        Element p = getParent();
-        if (p != null) {
-            p.removeAttribute(this.getName(), this.getNamespace());
-        }
-        return this;
-    }
-
-    /**
-     * This will retrieve the local name of the
-     * <code>Attribute</code>. For any XML attribute
-     * which appears as
-     * <code>[namespacePrefix]:[attributeName]</code>,
-     * the local name of the attribute would be
-     * <code>[attributeName]</code>. When the attribute
-     * has no namespace, the local name is simply the attribute
-     * name.
-     * <p>
-     * To obtain the namespace prefix for this
-     * attribute, the
-     * <code>{@link #getNamespacePrefix()}</code>
-     * method should be used.
-     *
-     * @return <code>String</code> - name of this attribute,
-     *                               without any namespace prefix.
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * This sets the local name of the <code>Attribute</code>.
-     *
-     * @param name the new local name to set
-     * @return <code>Attribute</code> - the attribute modified.
-     * @throws IllegalNameException if the given name is illegal as an
-     *         attribute name.
-     */
-    public Attribute setName(String name) {
-        String reason;
-        if ((reason = Verifier.checkAttributeName(name)) != null) {
-            throw new IllegalNameException(name, "attribute", reason);
-        }
-        this.name = name;
-        return this;
-    }
-
-    /**
-     * This will retrieve the qualified name of the <code>Attribute</code>.
-     * For any XML attribute whose name is
-     * <code>[namespacePrefix]:[elementName]</code>,
-     * the qualified name of the attribute would be
-     * everything (both namespace prefix and
-     * element name). When the attribute has no
-     * namespace, the qualified name is simply the attribute's
-     * local name.
-     * <p>
-     * To obtain the local name of the attribute, the
-     * <code>{@link #getName()}</code> method should be used.
-     * <p>
-     * To obtain the namespace prefix for this attribute,
-     * the <code>{@link #getNamespacePrefix()}</code>
-     * method should be used.
-     *
-     * @return <code>String</code> - full name for this element.
-     */
-    public String getQualifiedName() {
-        // Note: Any changes here should be reflected in
-        // XMLOutputter.printQualifiedName()
-        String prefix = namespace.getPrefix();
-        if ((prefix != null) && (!prefix.equals(""))) {
-            return new StringBuffer(prefix)
-                .append(':')
-                .append(getName())
-                .toString();
-        } else {
-            return getName();
-        }
-    }
-
-    /**
-     * This will retrieve the namespace prefix of the
-     * <code>Attribute</code>. For any XML attribute
-     * which appears as
-     * <code>[namespacePrefix]:[attributeName]</code>,
-     * the namespace prefix of the attribute would be
-     * <code>[namespacePrefix]</code>. When the attribute
-     * has no namespace, an empty <code>String</code> is returned.
-     *
-     * @return <code>String</code> - namespace prefix of this
-     *                               attribute.
-     */
-    public String getNamespacePrefix() {
-        return namespace.getPrefix();
-    }
-
-    /**
-     * This returns the URI mapped to this <code>Attribute</code>'s
-     * prefix. If no mapping is found, an empty <code>String</code> is
-     * returned.
-     *
-     * @return <code>String</code> - namespace URI for this <code>Attribute</code>.
-     */
-    public String getNamespaceURI() {
-        return namespace.getURI();
-    }
-
-    /**
-     * This will return this <code>Attribute</code>'s
-     * <code>{@link Namespace}</code>.
-     *
-     * @return <code>Namespace</code> - Namespace object for this <code>Attribute</code>
-     */
-    public Namespace getNamespace() {
-        return namespace;
-    }
-
-    /**
-     * This sets this <code>Attribute</code>'s <code>{@link Namespace}</code>.
-     * If the provided namespace is null, the attribute will have no namespace.
-     * The namespace must have a prefix.
-     *
-     * @param namespace the new namespace
-     * @return <code>Element</code> - the element modified.
-     * @throws IllegalNameException if the new namespace is the default
-     *         namespace. Attributes cannot be in a default namespace.
-     */
-    public Attribute setNamespace(Namespace namespace) {
-        if (namespace == null) {
-            namespace = Namespace.NO_NAMESPACE;
-        }
-
-        // Verify the attribute isn't trying to be in a default namespace
-        // Attributes can't be in a default namespace
-        if (namespace != Namespace.NO_NAMESPACE &&
-            namespace.getPrefix().equals("")) {
-            throw new IllegalNameException("", "attribute namespace",
-                "An attribute namespace without a prefix can only be the " +
-                "NO_NAMESPACE namespace");
-        }
-        this.namespace = namespace;
-        return this;
-    }
-    /**
-     * This will return the actual textual value of this
-     * <code>Attribute</code>.  This will include all text
-     * within the quotation marks.
-     *
-     * @return <code>String</code> - value for this attribute.
-     */
-    public String getValue() {
-        return value;
-    }
-
-    /**
-     * This will set the value of the <code>Attribute</code>.
-     *
-     * @param value <code>String</code> value for the attribute.
-     * @return <code>Attribute</code> - this Attribute modified.
-     * @throws IllegalDataException if the given attribute value is
-     *         illegal character data (as determined by
-     *         {@link org.jdom.Verifier#checkCharacterData}).
-     */
-    public Attribute setValue(String value) {
-        String reason = null;
-        if ((reason = Verifier.checkCharacterData(value)) != null) {
-            throw new IllegalDataException(value, "attribute", reason);
-        }
-        this.value = value;
-        return this;
-    }
-
-    /**
-     * This will return the actual declared type of this
-     * <code>Attribute</code>.
-     *
-     * @return <code>int</code> - type for this attribute.
-     */
-    public int getAttributeType() {
-        return type;
-    }
-
-    /**
-     * This will set the type of the <code>Attribute</code>.
-     *
-     * @param type <code>int</code> type for the attribute.
-     * @return <code>Attribute</code> - this Attribute modified.
-     * @throws IllegalDataException if the given attribute type is
-     *         not one of the supported types.
-     */
-    public Attribute setAttributeType(int type) {
-        if ((type < UNDECLARED_TYPE) || (type > ENUMERATED_TYPE)) {
-            throw new IllegalDataException(String.valueOf(type),
-                                        "attribute", "Illegal attribute type");
-        }
-        this.type = type;
-        return this;
-    }
-
-    /**
-     * This returns a <code>String</code> representation of the
-     * <code>Attribute</code>, suitable for debugging.
-     *
-     * @return <code>String</code> - information about the
-     *         <code>Attribute</code>
-     */
-    public String toString() {
-        return new StringBuffer()
-            .append("[Attribute: ")
-            .append(getQualifiedName())
-            .append("=\"")
-            .append(value)
-            .append("\"")
-            .append("]")
-            .toString();
-    }
-
-    /**
-     * This tests for equality of this <code>Attribute</code> to the supplied
-     * <code>Object</code>.
-     *
-     * @param ob <code>Object</code> to compare to.
-     * @return <code>boolean</code> - whether the <code>Attribute</code> is
-     *         equal to the supplied <code>Object</code>.
-     */
-    public final boolean equals(Object ob) {
-        return (ob == this);
-    }
-
-    /**
-     * This returns the hash code for this <code>Attribute</code>.
-     *
-     * @return <code>int</code> - hash code.
-     */
-    public final int hashCode() {
-        return super.hashCode();
-    }
-
-    /**
-     * This will return a clone of this <code>Attribute</code>.
-     *
-     * @return <code>Object</code> - clone of this <code>Attribute</code>.
-     */
-    public Object clone() {
-        Attribute attribute = null;
-
-        try {
-            attribute = (Attribute) super.clone();
-        } catch(CloneNotSupportedException ce) {
-            // Won't happen
-        }
-
-        // Name, namespace, and value are references to imutable objects
-        // and are copied by super.clone() (aka Object.clone())
-
-        // super.clone() copies reference to set parent to null
-        attribute.parent = null;
-        return attribute;
-    }
-
-    /////////////////////////////////////////////////////////////////
-    // Convenience Methods below here
-    /////////////////////////////////////////////////////////////////
-
-    /**
-     * This gets the value of the attribute, in
-     * <code>int</code> form, and if no conversion
-     * can occur, throws a
-     * <code>{@link DataConversionException}</code>
-     *
-     * @return <code>int</code> value of attribute.
-     * @throws DataConversionException when conversion fails.
-     */
-    public int getIntValue() throws DataConversionException {
-        try {
-            return Integer.parseInt(value.trim());
-        } catch (NumberFormatException e) {
-            throw new DataConversionException(name, "int");
-        }
-    }
-
-    /**
-     * This gets the value of the attribute, in
-     * <code>long</code> form, and if no conversion
-     * can occur, throws a
-     * <code>{@link DataConversionException}</code>
-     *
-     * @return <code>long</code> value of attribute.
-     * @throws DataConversionException when conversion fails.
-     */
-    public long getLongValue() throws DataConversionException {
-        try {
-            return Long.parseLong(value.trim());
-        } catch (NumberFormatException e) {
-            throw new DataConversionException(name, "long");
-        }
-    }
-
-    /**
-     * This gets the value of the attribute, in
-     * <code>float</code> form, and if no conversion
-     * can occur, throws a
-     * <code>{@link DataConversionException}</code>
-     *
-     * @return <code>float</code> value of attribute.
-     * @throws DataConversionException when conversion fails.
-     */
-    public float getFloatValue() throws DataConversionException {
-        try {
-            // Avoid Float.parseFloat() to support JDK 1.1
-            return Float.valueOf(value.trim()).floatValue();
-        } catch (NumberFormatException e) {
-            throw new DataConversionException(name, "float");
-        }
-    }
-
-    /**
-     * This gets the value of the attribute, in
-     * <code>double</code> form, and if no conversion
-     * can occur, throws a
-     * <code>{@link DataConversionException}</code>
-     *
-     * @return <code>double</code> value of attribute.
-     * @throws DataConversionException when conversion fails.
-     */
-    public double getDoubleValue() throws DataConversionException {
-        try {
-            // Avoid Double.parseDouble() to support JDK 1.1
-            return Double.valueOf(value.trim()).doubleValue();
-        } catch (NumberFormatException e) {
-            throw new DataConversionException(name, "double");
-        }
-    }
-
-    /**
-     * This gets the effective boolean value of the attribute, or throws a
-     * <code>{@link DataConversionException}</code> if a conversion can't be
-     * performed.  True values are: "true", "on", "1", and "yes".  False
-     * values are: "false", "off", "0", and "no".  Values are trimmed before
-     * comparison.  Values other than those listed here throw the exception.
-     *
-     * @return <code>boolean</code> value of attribute.
-     * @throws DataConversionException when conversion fails.
-     */
-    public boolean getBooleanValue() throws DataConversionException {
-        String valueTrim = value.trim();
-        if ((valueTrim.equalsIgnoreCase("true")) ||
-            (valueTrim.equalsIgnoreCase("on")) ||
-            (valueTrim.equalsIgnoreCase("1")) ||
-            (valueTrim.equalsIgnoreCase("yes"))) {
-            return true;
-        } else if ((valueTrim.equalsIgnoreCase("false")) ||
-                   (valueTrim.equalsIgnoreCase("off")) ||
-                   (valueTrim.equalsIgnoreCase("0")) ||
-                   (valueTrim.equalsIgnoreCase("no"))) {
-            return false;
-        } else {
-            throw new DataConversionException(name, "boolean");
-        }
-    }
-
-    // Support a custom Namespace serialization so no two namespace
-    // object instances may exist for the same prefix/uri pair
-    private void writeObject(ObjectOutputStream out) throws IOException {
-
-        out.defaultWriteObject();
-
-        // We use writeObject() and not writeUTF() to minimize space
-        // This allows for writing pointers to already written strings
-        out.writeObject(namespace.getPrefix());
-        out.writeObject(namespace.getURI());
-    }
-
-    private void readObject(ObjectInputStream in)
-        throws IOException, ClassNotFoundException {
-
-        in.defaultReadObject();
-
-        namespace = Namespace.getNamespace(
-            (String)in.readObject(), (String)in.readObject());
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/AttributeList.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/AttributeList.java
deleted file mode 100644
index 84de138..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/AttributeList.java
+++ /dev/null
@@ -1,518 +0,0 @@
-/*--
-
- $Id: AttributeList.java,v 1.1 2009/05/27 21:46:18 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom;
-
-import java.util.*;
-
-/**
- * <code>AttributeList</code> represents legal JDOM <code>Attribute</code>
- * content.  This class is NOT PUBLIC; users should see it as a simple List
- * implementation.
- *
- * @author Alex Rosen
- * @author Philippe Riand
- * @author Bradley S. Huffman
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:18 $
- * @see CDATA
- * @see Comment
- * @see Element
- * @see EntityRef
- * @see ProcessingInstruction
- * @see Text
- */
-class AttributeList extends AbstractList
-                    implements List, java.io.Serializable {
-
-    private static final String CVS_ID =
-      "@(#) $RCSfile: AttributeList.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:18 $ $Name:  $";
-
-    private static final int INITIAL_ARRAY_SIZE = 5;
-
-    /** The backing list */
-    private Attribute elementData[];
-    private int size;
-
-    /** The parent Element */
-    private Element parent;
-
-    /** Force an Element parent */
-    private AttributeList() {}
-
-    /**
-     * Create a new instance of the AttributeList representing
-     * Element content
-     *
-     * @param parent element whose attributes are to be held
-     */
-    AttributeList(Element parent) {
-        this.parent = parent;
-    }
-
-    /**
-     * Package internal method to support building from sources that are
-     * 100% trusted.
-     *
-     * @param a attribute to add without any checks
-     */ 
-    final void uncheckedAddAttribute(Attribute a) {
-        a.parent = parent;
-        ensureCapacity(size + 1);
-        elementData[size++] = a;
-        modCount++;
-    }
-
-    /**
-     * Add a attribute to the end of the list or replace a existing
-     * attribute with the same name and <code>Namespace</code>.
-     *
-     * @param obj The object to insert into the list.
-     * @return true (as per the general contract of Collection.add).
-     * @throws IndexOutOfBoundsException if index < 0 || index > size()
-     */
-    public boolean add(Object obj) {
-        if (obj instanceof Attribute) {
-            Attribute attribute = (Attribute) obj;
-            int duplicate = indexOfDuplicate(attribute);
-            if (duplicate < 0) {
-                add(size(), attribute);
-            }
-            else {
-                set(duplicate, attribute);
-            }
-        }
-        else if (obj == null) {
-            throw new IllegalAddException("Cannot add null attribute");
-        }
-        else {
-            throw new IllegalAddException("Class " +
-                                          obj.getClass().getName() +
-                                          " is not an attribute");
-        }
-        return true;
-    }
-
-    /**
-     * Inserts the specified attribute at the specified position in this list.
-     * Shifts the attribute currently at that position (if any) and any
-     * subsequent attributes to the right (adds one to their indices).
-     *
-     * @param index The location to set the value to.
-     * @param obj The object to insert into the list.
-     * throws IndexOutOfBoundsException if index < 0 || index > size()
-     */
-    public void add(int index, Object obj) {
-        if (obj instanceof Attribute) {
-            Attribute attribute = (Attribute) obj;
-            int duplicate = indexOfDuplicate(attribute);
-            if (duplicate >= 0) {
-                throw new IllegalAddException("Cannot add duplicate attribute");
-            }
-            add(index, attribute);
-        }
-        else if (obj == null) {
-            throw new IllegalAddException("Cannot add null attribute");
-        }
-        else {
-            throw new IllegalAddException("Class " +
-                                          obj.getClass().getName() +
-                                          " is not an attribute");
-        }
-        modCount++;
-    }
-
-    /**
-     * Check and add the <code>Attribute</code> to this list at
-     * the given index. Note: does not check for duplicate
-     * attributes.
-     *
-     * @param index index where to add <code>Attribute</code>
-     * @param attribute <code>Attribute</code> to add
-     */
-    void add(int index, Attribute attribute) {
-        if (attribute.getParent() != null) {
-            throw new IllegalAddException(
-                          "The attribute already has an existing parent \"" +
-                          attribute.getParent().getQualifiedName() + "\"");
-        }
-
-        String reason = Verifier.checkNamespaceCollision(attribute, parent);
-        if (reason != null) {
-            throw new IllegalAddException(parent, attribute, reason);
-        }
-
-        if (index<0 || index>size) {
-            throw new IndexOutOfBoundsException("Index: " + index +
-                                                " Size: " + size());
-        }
-
-        attribute.setParent(parent);
-
-        ensureCapacity(size+1);
-        if( index==size ) {
-            elementData[size++] = attribute;
-        } else {
-            System.arraycopy(elementData, index, elementData, index + 1, size - index);
-            elementData[index] = attribute;
-            size++;
-        }
-        modCount++;
-    }
-
-    /**
-     * Add all the objects in the specified collection.
-     *
-     * @param collection The collection containing all the objects to add.
-     * @return <code>true</code> if the list was modified as a result of
-     * the add.
-     */
-    public boolean addAll(Collection collection) {
-        return addAll(size(), collection);
-    }
-
-    /**
-     * Inserts the specified collecton at the specified position in this list.
-     * Shifts the attribute currently at that position (if any) and any
-     * subsequent attributes to the right (adds one to their indices).
-     *
-     * @param index The offset to start adding the data in the collection
-     * @param collection The collection to insert into the list.
-     * @return <code>true</code> if the list was modified as a result of
-     *                           the add.
-     * throws IndexOutOfBoundsException if index < 0 || index > size()
-     */
-    public boolean addAll(int index, Collection collection) {
-        if (index<0 || index>size) {
-            throw new IndexOutOfBoundsException("Index: " + index +
-                                                " Size: " + size());
-        }
-
-        if ((collection == null) || (collection.size() == 0)) {
-            return false;
-        }
-        ensureCapacity(size() + collection.size());
-
-        int count = 0;
-
-        try {
-            Iterator i = collection.iterator();
-            while (i.hasNext()) {
-                Object obj = i.next();
-                add(index + count, obj);
-                count++;
-            }
-        }
-        catch (RuntimeException exception) {
-            for (int i = 0; i < count; i++) {
-                remove(index);
-            }
-            throw exception;
-        }
-
-        return true;
-    }
-
-    /**
-     * Clear the current list.
-     */
-    public void clear() {
-        if (elementData != null) {
-            for (int i = 0; i < size; i++) {
-                Attribute attribute = elementData[i];
-                attribute.setParent(null);
-            }
-            elementData = null;
-            size = 0;
-        }
-        modCount++;
-    }
-
-    /**
-     * Clear the current list and set it to the contents
-     * of the <code>Collection</code>.
-     * object.
-     *
-     * @param collection The collection to use.
-     */
-    void clearAndSet(Collection collection) {
-        Attribute[] old = elementData;
-        int oldSize = size;
-
-        elementData = null;
-        size = 0;
-
-        if ((collection != null) && (collection.size() != 0)) {
-            ensureCapacity(collection.size());
-            try {
-                addAll(0, collection);
-            }
-            catch (RuntimeException exception) {
-                elementData = old;
-                size = oldSize;
-                throw exception;
-            }
-        }
-
-        if (old != null) {
-            for (int i = 0; i < oldSize; i++) {
-                Attribute attribute = old[i];
-                attribute.setParent(null);
-            }
-        }
-        modCount++;
-    }
-
-    /**
-     * Increases the capacity of this <code>AttributeList</code> instance,
-     * if necessary, to ensure that it can hold at least the number of
-     * items specified by the minimum capacity argument.
-     *
-     * @param minCapacity the desired minimum capacity.
-     */
-    private void ensureCapacity(int minCapacity) {
-        if (elementData == null) {
-            elementData = new Attribute[Math.max(minCapacity, INITIAL_ARRAY_SIZE)];
-        }
-        else {
-            int oldCapacity = elementData.length;
-            if (minCapacity > oldCapacity) {
-                Attribute oldData[] = elementData;
-                int newCapacity = (oldCapacity * 3)/2 + 1;
-                if (newCapacity < minCapacity)
-                    newCapacity = minCapacity;
-                elementData = new Attribute[newCapacity];
-                System.arraycopy(oldData, 0, elementData, 0, size);
-            }
-        }
-    }
-
-    /**
-     * Return the object at the specified offset.
-     *
-     * @param index The offset of the object.
-     * @return The Object which was returned.
-     */
-    public Object get(int index) {
-        if (index<0 || index>=size) {
-            throw new IndexOutOfBoundsException("Index: " + index +
-                                                " Size: " + size());
-        }
-
-        return elementData[index];
-    }
-
-    /**
-     * Return the <code>Attribute</code> with the
-     * given name and <code>Namespace</code>.
-     *
-     * @param name name of attribute to return
-     * @param namespace <code>Namespace</code> to match
-     * @return the <code>Attribute</code>, or null if one doesn't exist.
-     */
-    Object get(String name, Namespace namespace) {
-        int index = indexOf(name, namespace);
-        if (index < 0) {
-            return null;
-        }
-        return elementData[index];
-    }
-
-    /**
-     * Return index of the <code>Attribute</code> with the
-     * given name and uri.
-     */
-    int indexOf(String name, Namespace namespace) {
-        String uri = namespace.getURI();
-        if (elementData != null) {
-            for (int i = 0; i < size; i++) {
-                Attribute old = elementData[i];
-                String oldURI = old.getNamespaceURI();
-                String oldName = old.getName();
-                if (oldURI.equals(uri) && oldName.equals(name)) {
-                    return i;
-                }
-            }
-        }
-        return -1;
-    }
-
-    /**
-     * Remove the object at the specified offset.
-     *
-     * @param index The offset of the object.
-     * @return The Object which was removed.
-     */
-    public Object remove(int index) {
-        if (index<0 || index>=size)
-            throw new IndexOutOfBoundsException("Index: " + index +
-                                                " Size: " + size());
-
-        Attribute old = elementData[index];
-        old.setParent(null);
-        int numMoved = size - index - 1;
-        if (numMoved > 0)
-            System.arraycopy(elementData, index+1, elementData, index,numMoved);
-        elementData[--size] = null; // Let gc do its work
-        modCount++;
-        return old;
-    }
-
-    /**
-     * Remove the <code>Attribute</code> with the
-     * given name and <code>Namespace</code>.
-     *
-     * @param namespace <code>Namespace</code> to match
-     * @return the <code>true</code> if attribute was removed,
-     *             <code>false</code> otherwise
-     */
-    boolean remove(String name, Namespace namespace) {
-        int index = indexOf(name, namespace);
-        if (index < 0) {
-            return false;
-        }
-        remove(index);
-        return true;
-    }
-
-    /**
-     * Set the object at the specified location to the supplied
-     * object.
-     *
-     * @param index The location to set the value to.
-     * @param obj The location to set the value to.
-     * @return The object which was replaced.
-     * throws IndexOutOfBoundsException if index < 0 || index >= size()
-     */
-    public Object set(int index, Object obj) {
-        if (obj instanceof Attribute) {
-            Attribute attribute = (Attribute) obj;
-            int duplicate = indexOfDuplicate(attribute);
-            if ((duplicate >= 0) && (duplicate != index)) {
-                throw new IllegalAddException("Cannot set duplicate attribute");
-            }
-            return set(index, attribute);
-        }
-        else if (obj == null) {
-            throw new IllegalAddException("Cannot add null attribute");
-        }
-        else {
-            throw new IllegalAddException("Class " +
-                                          obj.getClass().getName() +
-                                          " is not an attribute");
-        }
-    }
-
-    /**
-     * Set the object at the specified location to the supplied
-     * object. Note: does not check for duplicate attributes.
-     *
-     * @param index The location to set the value to.
-     * @param attribute The attribute to set.
-     * @return The object which was replaced.
-     * throws IndexOutOfBoundsException if index < 0 || index >= size()
-     */
-    Object set(int index, Attribute attribute) {
-        if (index < 0 || index >= size)
-            throw new IndexOutOfBoundsException("Index: " + index +
-                                                " Size: " + size());
-
-        if (attribute.getParent() != null) {
-            throw new IllegalAddException(
-                          "The attribute already has an existing parent \"" +
-                          attribute.getParent().getQualifiedName() + "\"");
-        }
-
-        String reason = Verifier.checkNamespaceCollision(attribute, parent);
-        if (reason != null) {
-            throw new IllegalAddException(parent, attribute, reason);
-        }
-
-        Attribute old = (Attribute) elementData[index];
-        old.setParent(null);
-
-        elementData[index] = attribute;
-        attribute.setParent(parent);
-        return old;
-    }
-
-    /**
-     * Return index of attribute with same name and Namespace, or
-     * -1 if one doesn't exist
-     */
-    private int indexOfDuplicate(Attribute attribute) {
-        int duplicate = -1;
-        String name = attribute.getName();
-        Namespace namespace = attribute.getNamespace();
-        duplicate = indexOf(name, namespace);
-        return duplicate;
-    }
-
-    /**
-     * Return the number of items in this list
-     *
-     * @return The number of items in this list.
-     */
-    public int size() {
-        return size;
-    }
-
-    /**
-     * Return this list as a <code>String</code>
-     */
-    public String toString() {
-        return super.toString();
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/CDATA.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/CDATA.java
deleted file mode 100644
index 9b142fa..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/CDATA.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*--
-
- $Id: CDATA.java,v 1.1 2009/05/27 21:46:19 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom;
-
-/**
- * An XML CDATA section. Represents character-based content within an XML
- * document that should be output within special CDATA tags. Semantically it's
- * identical to a simple {@link Text} object, but output behavior is different.
- * CDATA makes no guarantees about the underlying textual representation of
- * character data, but does expose that data as a Java String.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:19 $
- * @author  Dan Schaffer
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- * @author  Bradley S. Huffman
- */
-public class CDATA extends Text {
-
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: CDATA.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:19 $ $Name:  $";
-
-    /**
-     * This is the protected, no-args constructor standard in all JDOM
-     * classes. It allows subclassers to get a raw instance with no
-     * initialization.
-     */
-    protected CDATA() { }
-
-    /**
-     * This constructor creates a new <code>CDATA</code> node, with the
-     * supplied string value as it's character content.
-     *
-     * @param str the node's character content.
-     * @throws IllegalDataException if <code>str</code> contains an 
-     *         illegal character such as a vertical tab (as determined
-     *          by {@link org.jdom.Verifier#checkCharacterData})
-     *         or the CDATA end delimiter <code>]]&gt;</code>.
-     */
-    public CDATA(String str) {
-        setText(str);
-    }
-
-    /**
-     * This will set the value of this <code>CDATA</code> node.
-     *
-     * @param str value for node's content.
-     * @return the object on which the method was invoked
-     * @throws IllegalDataException if <code>str</code> contains an 
-     *         illegal character such as a vertical tab (as determined
-     *          by {@link org.jdom.Verifier#checkCharacterData})
-     *         or the CDATA end delimiter <code>]]&gt;</code>.
-     */
-    public Text setText(String str) {
-        // Overrides Text.setText() because this needs to check CDATA
-        // rules are enforced.  We could have a separate Verifier check
-        // for CDATA beyond Text and call that alone before super.setText().
-
-        String reason;
-
-        if (str == null) {
-            value = EMPTY_STRING;
-            return this;
-        }
-
-        if ((reason = Verifier.checkCDATASection(str)) != null) {
-            throw new IllegalDataException(str, "CDATA section", reason);
-        }
-        value = str;
-        return this;
-    }
-
-    /**
-     * This will append character content to whatever content already
-     * exists within this <code>CDATA</code> node.
-     *
-     * @param str character content to append.
-     * @throws IllegalDataException if <code>str</code> contains an 
-     *         illegal character such as a vertical tab (as determined
-     *          by {@link org.jdom.Verifier#checkCharacterData})
-     *         or the CDATA end delimiter <code>]]&gt;</code>.
-     */
-    public void append(String str) {
-        // Overrides Text.setText() because this needs to check CDATA
-        // rules are enforced.  We could have a separate Verifier check
-        // for CDATA beyond Text and call that alone before super.setText().
-
-        String reason;
-
-        if (str == null) {
-            return;
-        }
-        if ((reason = Verifier.checkCDATASection(str)) != null) {
-            throw new IllegalDataException(str, "CDATA section", reason);
-        }
-
-        if (value == EMPTY_STRING)
-             value = str;
-        else value += str;
-    }
-
-    /**
-     * This returns a <code>String</code> representation of the
-     * <code>CDATA</code> node, suitable for debugging. If the XML
-     * representation of the <code>CDATA</code> node is desired,
-     * either <code>{@link #getText}</code> or
-     * {@link org.jdom.output.XMLOutputter#output(CDATA, java.io.Writer)}</code>
-     * should be used.
-     *
-     * @return <code>String</code> - information about this node.
-     */
-    public String toString() {
-        return new StringBuffer(64)
-            .append("[CDATA: ")
-            .append(getText())
-            .append("]")
-            .toString();
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/Comment.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/Comment.java
deleted file mode 100644
index 6b8b417..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/Comment.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*--
-
- $Id: Comment.java,v 1.1 2009/05/27 21:46:18 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom;
-
-/**
- * An XML comment. Methods allow the user to get and set the text of the
- * comment.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:18 $
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- */
-public class Comment extends Content {
-
-    private static final String CVS_ID =
-      "@(#) $RCSfile: Comment.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:18 $ $Name:  $";
-
-    /** Text of the <code>Comment</code> */
-    protected String text;
-
-    /**
-     * Default, no-args constructor for implementations to use if needed.
-     */
-    protected Comment() {}
-
-    /**
-     * This creates the comment with the supplied text.
-     *
-     * @param text <code>String</code> content of comment.
-     */
-    public Comment(String text) {
-        setText(text);
-    }
-
-
-    /**
-     * Returns the XPath 1.0 string value of this element, which is the
-     * text of this comment.
-     *
-     * @return the text of this comment
-     */
-    public String getValue() {
-        return text;
-    }
-
-    /**
-     * This returns the textual data within the <code>Comment</code>.
-     *
-     * @return <code>String</code> - text of comment.
-     */
-    public String getText() {
-        return text;
-    }
-
-    /**
-     * This will set the value of the <code>Comment</code>.
-     *
-     * @param text <code>String</code> text for comment.
-     * @return <code>Comment</code> - this Comment modified.
-     * @throws IllegalDataException if the given text is illegal for a
-     *         Comment.
-     */
-    public Comment setText(String text) {
-        String reason;
-        if ((reason = Verifier.checkCommentData(text)) != null) {
-            throw new IllegalDataException(text, "comment", reason);
-        }
-
-        this.text = text;
-        return this;
-    }
-
-    /**
-     * This returns a <code>String</code> representation of the
-     * <code>Comment</code>, suitable for debugging. If the XML
-     * representation of the <code>Comment</code> is desired,
-     * {@link org.jdom.output.XMLOutputter#outputString(Comment)}
-     * should be used.
-     *
-     * @return <code>String</code> - information about the
-     *         <code>Attribute</code>
-     */
-    public String toString() {
-        return new StringBuffer()
-            .append("[Comment: ")
-            .append(new org.jdom.output.XMLOutputter().outputString(this))
-            .append("]")
-            .toString();
-    }
-
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/Content.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/Content.java
deleted file mode 100644
index 6ee8e75..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/Content.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*--
-
- $Id: Content.java,v 1.1 2009/05/27 21:46:19 mparker Exp $
-
- Copyright (C) 2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom;
-
-import java.io.*;
-
-/**
- * Superclass for JDOM objects which can be legal child content
- * of {@link org.jdom.Parent} nodes.
- *
- * @see org.jdom.Comment
- * @see org.jdom.DocType
- * @see org.jdom.Element
- * @see org.jdom.EntityRef
- * @see org.jdom.Parent
- * @see org.jdom.ProcessingInstruction
- * @see org.jdom.Text
- *
- * @author Bradley S. Huffman
- * @author Jason Hunter
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:19 $
- */
-public abstract class Content implements Cloneable, Serializable {
-
-    protected Parent parent = null;
-
-    protected Content() {}
-
-    /**
-     * Detaches this child from its parent or does nothing if the child
-     * has no parent.
-     *
-     * @return this child detached
-     */
-    public Content detach() {
-        if (parent != null) {
-            parent.removeContent(this);
-        }
-        return this;
-    }
-
-    /**
-     * Return this child's parent, or null if this child is currently
-     * not attached. The parent can be either an {@link Element}
-     * or a {@link Document}.
-     *
-     * @return this child's parent or null if none
-     */
-    public Parent getParent() {
-        return parent;
-    }
-
-    /**
-     * A convenience method that returns any parent element for this element,
-     * or null if the element is unattached or is a root element.  This was the
-     * original behavior of getParent() in JDOM Beta 9 which began returning
-     * Parent in Beta 10.  This method provides a convenient upgrade path for
-     * JDOM Beta 10 and 1.0 users.
-     *
-     * @return the containing Element or null if unattached or a root element
-     */
-    public Element getParentElement() {
-        Parent parent = getParent();
-        return (Element) ((parent instanceof Element) ? parent : null);
-    }
-
-    /**
-     * Sets the parent of this Content. The caller is responsible for removing
-     * any pre-existing parentage.
-     *
-     * @param  parent              new parent element
-     * @return                     the target element
-     */
-    protected Content setParent(Parent parent) {
-        this.parent = parent;
-        return this;
-    }
-
-    /**
-     * Return this child's owning document or null if the branch containing
-     * this child is currently not attached to a document.
-     *
-     * @return this child's owning document or null if none
-     */
-    public Document getDocument() {
-        if (parent == null) return null;
-        return parent.getDocument();
-    }
-
-
-    /**
-     * Returns the XPath 1.0 string value of this child.
-     *
-     * @return xpath string value of this child.
-     */
-    public abstract String getValue();
-
-    /**
-     * Returns a deep, unattached copy of this child and its descendants
-     * detached from any parent or document.
-     *
-     * @return a detached deep copy of this child and descendants
-     */
-    public Object clone() {
-        try {
-            Content c = (Content)super.clone();
-            c.parent = null;
-            return c;
-        } catch (CloneNotSupportedException e) {
-            //Can not happen ....
-            //e.printStackTrace();
-            return null;
-        }
-    }
-
-    /**
-     * This tests for equality of this Content object to the supplied object.
-     * Content items are considered equal only if they are referentially equal
-     * (i&#46;e&#46; the same object).  User code may choose to compare objects
-     * based on their properties instead.
-     *
-     * @param ob <code>Object</code> to compare to.
-     * @return <code>boolean</code> - whether the <code>Content</code> is
-     *         equal to the supplied <code>Object</code>.
-     */
-    public final boolean equals(Object ob) {
-        return (ob == this);
-    }
-
-    /**
-     * This returns the hash code for this <code>Content</code> item.
-     *
-     * @return <code>int</code> - hash code.
-     */
-    public final int hashCode() {
-        return super.hashCode();
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/ContentList.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/ContentList.java
deleted file mode 100644
index 04eb078..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/ContentList.java
+++ /dev/null
@@ -1,1045 +0,0 @@
-/*--
-
- $Id: ContentList.java,v 1.1 2009/05/27 21:46:18 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org).
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom;
-
-import java.util.*;
-
-import org.jdom.filter.*;
-
-/**
- * A non-public list implementation holding only legal JDOM content, including
- * content for Document or Element nodes. Users see this class as a simple List
- * implementation.
- *
- * @see     CDATA
- * @see     Comment
- * @see     Element
- * @see     EntityRef
- * @see     ProcessingInstruction
- * @see     Text
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:18 $
- * @author  Alex Rosen
- * @author  Philippe Riand
- * @author  Bradley S. Huffman
- */
-final class ContentList extends AbstractList implements java.io.Serializable {
-
-    private static final String CVS_ID =
-      "@(#) $RCSfile: ContentList.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:18 $ $Name:  $";
-
-    private static final int INITIAL_ARRAY_SIZE = 5;
-
-    /**
-     * Used inner class FilterListIterator to help hasNext and
-     * hasPrevious the next index of our cursor (must be here
-     * for JDK1.1).
-     */
-    private static final int CREATE  = 0;
-    private static final int HASPREV = 1;
-    private static final int HASNEXT = 2;
-    private static final int PREV    = 3;
-    private static final int NEXT    = 4;
-    private static final int ADD     = 5;
-    private static final int REMOVE  = 6;
-
-    /** Our backing list */
-//    protected ArrayList list;
-    private Content elementData[];
-    private int size;
-
-    /** Document or Element this list belongs to */
-    private Parent parent;
-
-    /** Force either a Document or Element parent */
-    ContentList(Parent parent) {
-        this.parent = parent;
-    }
-
-    /**
-     * Package internal method to support building from sources that are
-     * 100% trusted.
-     *
-     * @param c content to add without any checks
-     */
-    final void uncheckedAddContent(Content c) {
-        c.parent = parent;
-        ensureCapacity(size + 1);
-        elementData[size++] = c;
-        modCount++;
-    }
-
-    /**
-     * Inserts the specified object at the specified position in this list.
-     * Shifts the object currently at that position (if any) and any
-     * subsequent objects to the right (adds one to their indices).
-     *
-     * @param index The location to set the value to.
-     * @param obj The object to insert into the list.
-     * throws IndexOutOfBoundsException if index < 0 || index > size()
-     */
-    public void add(int index, Object obj) {
-        if (obj == null) {
-            throw new IllegalAddException("Cannot add null object");
-        }
-        if ((obj instanceof Content)) {
-            add(index, (Content) obj);
-        } else {
-            throw new IllegalAddException("Class " +
-                         obj.getClass().getName() +
-                         " is of unrecognized type and cannot be added");
-        }
-    }
-
-    /**
-     * @see org.jdom.ContentList#add(int, org.jdom.Content)
-     */
-    private void documentCanContain(int index, Content child) throws IllegalAddException {
-        if (child instanceof Element) {
-            if (indexOfFirstElement() >= 0) {
-                throw new IllegalAddException(
-                        "Cannot add a second root element, only one is allowed");
-            }
-            if (indexOfDocType() > index) {
-                throw new IllegalAddException(
-                        "A root element cannot be added before the DocType");
-            }
-        }
-        if (child instanceof DocType) {
-            if (indexOfDocType() >= 0) {
-                throw new IllegalAddException(
-                        "Cannot add a second doctype, only one is allowed");
-            }
-            int firstElt = indexOfFirstElement();
-            if (firstElt != -1 && firstElt < index) {
-                throw new IllegalAddException(
-                        "A DocType cannot be added after the root element");
-            }
-        }
-        if (child instanceof CDATA) {
-            throw new IllegalAddException("A CDATA is not allowed at the document root");
-        }
-
-        if (child instanceof Text) {
-            throw new IllegalAddException("A Text is not allowed at the document root");
-        }
-
-        if (child instanceof EntityRef) {
-            throw new IllegalAddException("An EntityRef is not allowed at the document root");
-        }
-    }
-
-    private static void elementCanContain(int index, Content child) throws IllegalAddException {
-        if (child instanceof DocType) {
-            throw new IllegalAddException(
-                    "A DocType is not allowed except at the document level");
-        }
-    }
-
-    /**
-     * Check and add the <code>Element</code> to this list at
-     * the given index.
-     *
-     * @param index index where to add <code>Element</code>
-     * @param child <code>Element</code> to add
-     */
-    void add(int index, Content child) {
-        if (child == null) {
-            throw new IllegalAddException("Cannot add null object");
-        }
-        if (parent instanceof Document) {
-          documentCanContain(index, child);
-        }
-        else {
-          elementCanContain(index, child);
-        }
-
-        if (child.getParent() != null) {
-            Parent p = child.getParent();
-            if (p instanceof Document) {
-                throw new IllegalAddException((Element)child,
-                   "The Content already has an existing parent document");
-            }
-            else {
-                throw new IllegalAddException(
-                     "The Content already has an existing parent \"" +
-                     ((Element)p).getQualifiedName() + "\"");
-            }
-        }
-
-        if (child == parent) {
-            throw new IllegalAddException(
-                "The Element cannot be added to itself");
-        }
-
-        // Detect if we have <a><b><c/></b></a> and c.add(a)
-        if ((parent instanceof Element && child instanceof Element) &&
-                ((Element) child).isAncestor((Element)parent)) {
-            throw new IllegalAddException(
-                "The Element cannot be added as a descendent of itself");
-        }
-
-        if (index<0 || index>size) {
-            throw new IndexOutOfBoundsException("Index: " + index +
-                                                " Size: " + size());
-        }
-
-        child.setParent(parent);
-
-        ensureCapacity(size+1);
-        if( index==size ) {
-            elementData[size++] = child;
-        } else {
-            System.arraycopy(elementData, index, elementData, index + 1, size - index);
-            elementData[index] = child;
-            size++;
-        }
-        modCount++;
-    }
-
-    /**
-     * Add the specified collecton to the end of this list.
-     *
-     * @param collection The collection to add to the list.
-     * @return <code>true</code> if the list was modified as a result of
-     *                           the add.
-     */
-    public boolean addAll(Collection collection) {
-        return addAll(size(), collection);
-    }
-
-    /**
-     * Inserts the specified collecton at the specified position in this list.
-     * Shifts the object currently at that position (if any) and any
-     * subsequent objects to the right (adds one to their indices).
-     *
-     * @param index The offset to start adding the data in the collection
-     * @param collection The collection to insert into the list.
-     * @return <code>true</code> if the list was modified as a result of
-     *                           the add.
-     * throws IndexOutOfBoundsException if index < 0 || index > size()
-     */
-    public boolean addAll(int index, Collection collection) {
-        if (index<0 || index>size) {
-            throw new IndexOutOfBoundsException("Index: " + index +
-                                                " Size: " + size());
-        }
-
-        if ((collection == null) || (collection.size() == 0)) {
-            return false;
-        }
-        ensureCapacity(size() + collection.size());
-
-        int count = 0;
-        try {
-            Iterator i = collection.iterator();
-            while (i.hasNext()) {
-                Object obj = i.next();
-                add(index + count, obj);
-                count++;
-            }
-        }
-        catch (RuntimeException exception) {
-            for (int i = 0; i < count; i++) {
-                remove(index);
-            }
-            throw exception;
-        }
-
-        return true;
-    }
-
-    /**
-     * Clear the current list.
-     */
-    public void clear() {
-        if (elementData != null) {
-            for (int i = 0; i < size; i++) {
-                Content obj = elementData[i];
-                removeParent(obj);
-            }
-            elementData = null;
-            size = 0;
-        }
-        modCount++;
-    }
-
-    /**
-     * Clear the current list and set it to the contents
-     * of the <code>Collection</code>.
-     * object.
-     *
-     * @param collection The collection to use.
-     */
-    void clearAndSet(Collection collection) {
-        Content[] old = elementData;
-        int oldSize = size;
-
-        elementData = null;
-        size = 0;
-
-        if ((collection != null) && (collection.size() != 0)) {
-            ensureCapacity(collection.size());
-            try {
-                addAll(0, collection);
-            }
-            catch (RuntimeException exception) {
-                elementData = old;
-                size = oldSize;
-                throw exception;
-            }
-        }
-
-        if (old != null) {
-            for (int i = 0; i < oldSize; i++) {
-                removeParent(old[i]);
-            }
-        }
-        modCount++;
-    }
-
-    /**
-     * Increases the capacity of this <code>ContentList</code> instance,
-     * if necessary, to ensure that it can hold at least the number of
-     * items specified by the minimum capacity argument.
-     *
-     * @param minCapacity the desired minimum capacity.
-     */
-    void ensureCapacity(int minCapacity) {
-        if( elementData==null ) {
-            elementData = new Content[Math.max(minCapacity, INITIAL_ARRAY_SIZE)];
-        } else {
-            int oldCapacity = elementData.length;
-            if (minCapacity > oldCapacity) {
-                Object oldData[] = elementData;
-                int newCapacity = (oldCapacity * 3)/2 + 1;
-                if (newCapacity < minCapacity)
-                    newCapacity = minCapacity;
-                elementData = new Content[newCapacity];
-                System.arraycopy(oldData, 0, elementData, 0, size);
-            }
-        }
-    }
-
-    /**
-     * Return the object at the specified offset.
-     *
-     * @param index The offset of the object.
-     * @return The Object which was returned.
-     */
-    public Object get(int index) {
-        if (index<0 || index>=size) {
-            throw new IndexOutOfBoundsException("Index: " + index +
-                                                " Size: " + size());
-        }
-        return elementData[index];
-    }
-
-    /**
-     * Return a view of this list based on the given filter.
-     *
-     * @param filter <code>Filter</code> for this view.
-     * @return a list representing the rules of the <code>Filter</code>.
-     */
-    List getView(Filter filter) {
-        return new FilterList(filter);
-    }
-
-    /**
-     * Return the index of the first Element in the list.  If the parent
-     * is a <code>Document</code> then the element is the root element.
-     * If the list contains no Elements, it returns -1.
-     *
-     * @return index of first element, or -1 if one doesn't exist
-     */
-    int indexOfFirstElement() {
-        if( elementData!=null ) {
-            for (int i = 0; i < size; i++) {
-                if (elementData[i] instanceof Element) {
-                    return i;
-                }
-            }
-        }
-        return -1;
-    }
-
-    /**
-     * Return the index of the DocType element in the list. If the list contains
-     * no DocType, it returns -1.
-     *
-     * @return                     index of the DocType, or -1 if it doesn't
-     *                             exist
-     */
-    int indexOfDocType() {
-        if (elementData != null) {
-            for (int i = 0; i < size; i++) {
-                if (elementData[i] instanceof DocType) {
-                    return i;
-                }
-            }
-        }
-        return -1;
-    }
-
-    /**
-     * Remove the object at the specified offset.
-     *
-     * @param index The offset of the object.
-     * @return The Object which was removed.
-     */
-    public Object remove(int index) {
-        if (index<0 || index>=size)
-            throw new IndexOutOfBoundsException("Index: " + index +
-                                                 " Size: " + size());
-
-        Content old = elementData[index];
-        removeParent(old);
-        int numMoved = size - index - 1;
-        if (numMoved > 0)
-            System.arraycopy(elementData, index+1, elementData, index,numMoved);
-        elementData[--size] = null; // Let gc do its work
-        modCount++;
-        return old;
-    }
-
-
-    /** Remove the parent of a Object */
-    private static void removeParent(Content c) {
-        c.setParent(null);
-    }
-
-    /**
-     * Set the object at the specified location to the supplied
-     * object.
-     *
-     * @param index The location to set the value to.
-     * @param obj The location to set the value to.
-     * @return The object which was replaced.
-     * throws IndexOutOfBoundsException if index < 0 || index >= size()
-     */
-    public Object set(int index, Object obj) {
-        if (index<0 || index>=size)
-            throw new IndexOutOfBoundsException("Index: " + index +
-                                                 " Size: " + size());
-
-        if ((obj instanceof Element) && (parent instanceof Document)) {
-            int root = indexOfFirstElement();
-            if ((root >= 0) && (root != index)) {
-                throw new IllegalAddException(
-                  "Cannot add a second root element, only one is allowed");
-            }
-        }
-
-        if ((obj instanceof DocType) && (parent instanceof Document)) {
-            int docTypeIndex = indexOfDocType();
-            if ((docTypeIndex >= 0) && (docTypeIndex != index)) {
-                throw new IllegalAddException(
-                        "Cannot add a second doctype, only one is allowed");
-            }
-        }
-
-        Object old = remove(index);
-        try {
-            add(index, obj);
-        }
-        catch (RuntimeException exception) {
-            add(index, old);
-            throw exception;
-        }
-        return old;
-    }
-
-    /**
-     * Return the number of items in this list
-     *
-     * @return The number of items in this list.
-     */
-    public int size() {
-        return size;
-    }
-
-    /**
-     * Return this list as a <code>String</code>
-     *
-     * @return The number of items in this list.
-     */
-    public String toString() {
-        return super.toString();
-    }
-
-    /** Give access of ContentList.modCount to FilterList */
-    private int getModCount() {
-        return modCount;
-    }
-
-    /* * * * * * * * * * * * * FilterList * * * * * * * * * * * * * * * */
-    /* * * * * * * * * * * * * FilterList * * * * * * * * * * * * * * * */
-
-    /**
-     * <code>FilterList</code> represents legal JDOM content, including content
-     * for <code>Document</code>s or <code>Element</code>s.
-     */
-
-    class FilterList extends AbstractList implements java.io.Serializable {
-
-        /** The Filter */
-        Filter filter;
-
-        /** Current number of items in this view */
-        int count = 0;
-
-        /** Expected modCount in our backing list */
-        int expected = -1;
-
-        // Implementation Note: Directly after size() is called, expected
-        //       is sync'd with ContentList.modCount and count provides
-        //       the true size of this view.  Before the first call to
-        //       size() or if the backing list is modified outside this
-        //       FilterList, both might contain bogus values and should
-        //       not be used without first calling size();
-
-        /**
-         * Create a new instance of the FilterList with the specified Filter.
-         */
-        FilterList(Filter filter) {
-            this.filter = filter;
-        }
-
-        /**
-         * Inserts the specified object at the specified position in this list.
-         * Shifts the object currently at that position (if any) and any
-         * subsequent objects to the right (adds one to their indices).
-         *
-         * @param index The location to set the value to.
-         * @param obj The object to insert into the list.
-         * throws IndexOutOfBoundsException if index < 0 || index > size()
-         */
-        public void add(int index, Object obj) {
-            if (filter.matches(obj)) {
-                int adjusted = getAdjustedIndex(index);
-                ContentList.this.add(adjusted, obj);
-                expected++;
-                count++;
-            }
-            else throw new IllegalAddException("Filter won't allow the " +
-                                obj.getClass().getName() +
-                                " '" + obj + "' to be added to the list");
-        }
-
-        /**
-         * Return the object at the specified offset.
-         *
-         * @param index The offset of the object.
-         * @return The Object which was returned.
-         */
-        public Object get(int index) {
-            int adjusted = getAdjustedIndex(index);
-            return ContentList.this.get(adjusted);
-        }
-
-        public Iterator iterator() {
-            return new FilterListIterator(filter, 0);
-        }
-
-        public ListIterator listIterator() {
-            return new FilterListIterator(filter, 0);
-        }
-
-        public ListIterator listIterator(int index) {
-            return new FilterListIterator(filter,  index);
-        }
-
-        /**
-         * Remove the object at the specified offset.
-         *
-         * @param index The offset of the object.
-         * @return The Object which was removed.
-         */
-        public Object remove(int index) {
-            int adjusted = getAdjustedIndex(index);
-            Object old = ContentList.this.get(adjusted);
-            if (filter.matches(old)) {
-                old = ContentList.this.remove(adjusted);
-                expected++;
-                count--;
-            }
-            else {
-                throw new IllegalAddException("Filter won't allow the " +
-                                             (old.getClass()).getName() +
-                                             " '" + old + "' (index " + index +
-                                             ") to be removed");
-            }
-            return old;
-        }
-
-        /**
-         * Set the object at the specified location to the supplied
-         * object.
-         *
-         * @param index The location to set the value to.
-         * @param obj The location to set the value to.
-         * @return The object which was replaced.
-         * throws IndexOutOfBoundsException if index < 0 || index >= size()
-         */
-        public Object set(int index, Object obj) {
-            Object old = null;
-            if (filter.matches(obj)) {
-                int adjusted = getAdjustedIndex(index);
-                old = ContentList.this.get(adjusted);
-                if (!filter.matches(old)) {
-                    throw new IllegalAddException("Filter won't allow the " +
-                                             (old.getClass()).getName() +
-                                             " '" + old + "' (index " + index +
-                                             ") to be removed");
-                }
-                old = ContentList.this.set(adjusted, obj);
-                expected += 2;
-            }
-            else {
-                throw new IllegalAddException("Filter won't allow index " +
-                                              index + " to be set to " +
-                                              (obj.getClass()).getName());
-            }
-            return old;
-        }
-
-        /**
-         * Return the number of items in this list
-         *
-         * @return The number of items in this list.
-         */
-        public int size() {
-            // Implementation Note: Directly after size() is called, expected
-            //       is sync'd with ContentList.modCount and count provides
-            //       the true size of this view.  Before the first call to
-            //       size() or if the backing list is modified outside this
-            //       FilterList, both might contain bogus values and should
-            //       not be used without first calling size();
-
-            if (expected == ContentList.this.getModCount()) {
-                return count;
-            }
-
-            count = 0;
-            for (int i = 0; i < ContentList.this.size(); i++) {
-                Object obj = ContentList.this.elementData[i];
-                if (filter.matches(obj)) {
-                    count++;
-                }
-            }
-            expected = ContentList.this.getModCount();
-            return count;
-        }
-
-        /**
-         * Return the adjusted index
-         *
-         * @param index Index of in this view.
-         * @return True index in backing list
-         */
-        final private int getAdjustedIndex(int index) {
-            int adjusted = 0;
-            for (int i = 0; i < ContentList.this.size; i++) {
-                Object obj = ContentList.this.elementData[i];
-                if (filter.matches(obj)) {
-                    if (index == adjusted) {
-                        return i;
-                    }
-                    adjusted++;
-                }
-            }
-
-            if (index == adjusted) {
-                return ContentList.this.size;
-            }
-
-            return ContentList.this.size + 1;
-        }
-    }
-
-    /* * * * * * * * * * * * * FilterListIterator * * * * * * * * * * * */
-    /* * * * * * * * * * * * * FilterListIterator * * * * * * * * * * * */
-
-    class FilterListIterator implements ListIterator {
-
-        /** The Filter that applies */
-        Filter filter;
-
-        /** The last operation performed */
-        int lastOperation;
-
-        /** Initial start index in backing list */
-        int initialCursor;
-
-        /** Index in backing list of next object */
-        int cursor;
-
-        /** Index in backing list of last object returned */
-        int last;
-
-        /** Expected modCount in our backing list */
-        int expected;
-
-        /**
-         * Default constructor
-         */
-        FilterListIterator(Filter filter, int start) {
-            this.filter = filter;
-            initialCursor = initializeCursor(start);
-            last = -1;
-            expected = ContentList.this.getModCount();
-            lastOperation = CREATE;
-        }
-
-        /**
-         * Returns <code>true</code> if this list iterator has a next element.
-         */
-        public boolean hasNext() {
-            checkConcurrentModification();
-
-            switch(lastOperation) {
-            case CREATE:  cursor = initialCursor;
-                          break;
-            case PREV:    cursor = last;
-                          break;
-            case ADD:
-            case NEXT:    cursor = moveForward(last + 1);
-                          break;
-            case REMOVE:  cursor = moveForward(last);
-                          break;
-            case HASPREV: cursor = moveForward(cursor + 1);
-                          break;
-            case HASNEXT: break;
-            default:      throw new IllegalStateException("Unknown operation");
-            }
-
-            if (lastOperation != CREATE) {
-                lastOperation = HASNEXT;
-            }
-
-            return (cursor < ContentList.this.size()) ? true : false;
-        }
-
-        /**
-         * Returns the next element in the list.
-         */
-        public Object next() {
-            checkConcurrentModification();
-
-            if (hasNext()) {
-                last = cursor;
-            }
-            else {
-                last = ContentList.this.size();
-                throw new NoSuchElementException();
-            }
-
-            lastOperation = NEXT;
-            return ContentList.this.get(last);
-        }
-
-        /**
-         * Returns <code>true</code> if this list iterator has more
-         * elements when traversing the list in the reverse direction.
-         */
-        public boolean hasPrevious() {
-            checkConcurrentModification();
-
-            switch(lastOperation) {
-            case CREATE:  cursor = initialCursor;
-                          int size = ContentList.this.size();
-                          if (cursor >= size) {
-                              cursor = moveBackward(size - 1);
-                          }
-                          break;
-            case PREV:
-            case REMOVE:  cursor = moveBackward(last - 1);
-                          break;
-            case HASNEXT: cursor = moveBackward(cursor - 1);
-                          break;
-            case ADD:
-            case NEXT:    cursor = last;
-                          break;
-            case HASPREV: break;
-            default:      throw new IllegalStateException("Unknown operation");
-            }
-
-            if (lastOperation != CREATE) {
-                lastOperation = HASPREV;
-            }
-
-            return (cursor < 0) ? false : true;
-        }
-
-        /**
-         * Returns the previous element in the list.
-         */
-        public Object previous() {
-            checkConcurrentModification();
-
-            if (hasPrevious()) {
-                last = cursor;
-            }
-            else {
-                last = -1;
-                throw new NoSuchElementException();
-            }
-
-            lastOperation = PREV;
-            return ContentList.this.get(last);
-        }
-
-        /**
-         * Returns the index of the element that would be returned by a
-         * subsequent call to <code>next</code>.
-         */
-        public int nextIndex() {
-            checkConcurrentModification();
-            hasNext();
-
-            int count = 0;
-            for (int i = 0; i < ContentList.this.size(); i++) {
-                if (filter.matches(ContentList.this.get(i))) {
-                    if (i == cursor) {
-                        return count;
-                    }
-                    count++;
-                }
-            }
-            expected = ContentList.this.getModCount();
-            return count;
-        }
-
-        /**
-         * Returns the index of the element that would be returned by a
-         * subsequent call to <code>previous</code>. (Returns -1 if the
-         * list iterator is at the beginning of the list.)
-         */
-        public int previousIndex() {
-            checkConcurrentModification();
-
-            if (hasPrevious()) {
-                int count = 0;
-                for (int i = 0; i < ContentList.this.size(); i++) {
-                    if (filter.matches(ContentList.this.get(i))) {
-                        if (i == cursor) {
-                            return count;
-                        }
-                        count++;
-                    }
-                }
-            }
-            return -1;
-        }
-
-        /**
-         * Inserts the specified element into the list.
-         */
-        public void add(Object obj) {
-            checkConcurrentModification();
-
-            if (filter.matches(obj)) {
-                last = cursor + 1;
-                ContentList.this.add(last, obj);
-            }
-            else {
-                throw new IllegalAddException("Filter won't allow add of " +
-                                              (obj.getClass()).getName());
-            }
-            expected = ContentList.this.getModCount();
-            lastOperation = ADD;
-        }
-
-        /**
-         * Removes from the list the last element that was returned by
-         * <code>next</code> or <code>previous</code>.
-         * the last call to <code>next</code> or <code>previous</code>.
-         */
-        public void remove() {
-            checkConcurrentModification();
-
-            if ((last < 0) || (lastOperation == REMOVE)) {
-                throw new IllegalStateException("no preceeding call to " +
-                                                "prev() or next()");
-            }
-
-            if (lastOperation == ADD) {
-                throw new IllegalStateException("cannot call remove() " +
-                                                "after add()");
-            }
-
-            Object old = ContentList.this.get(last);
-            if (filter.matches(old)) {
-                ContentList.this.remove(last);
-            }
-            else throw new IllegalAddException("Filter won't allow " +
-                                                (old.getClass()).getName() +
-                                                " (index " + last +
-                                                ") to be removed");
-            expected = ContentList.this.getModCount();
-            lastOperation = REMOVE;
-        }
-
-        /**
-         * Replaces the last element returned by <code>next</code> or
-         * <code>previous</code> with the specified element.
-         */
-        public void set(Object obj) {
-            checkConcurrentModification();
-
-            if ((lastOperation == ADD) || (lastOperation == REMOVE)) {
-                throw new IllegalStateException("cannot call set() after " +
-                                                "add() or remove()");
-            }
-
-            if (last < 0) {
-                throw new IllegalStateException("no preceeding call to " +
-                                                "prev() or next()");
-            }
-
-            if (filter.matches(obj)) {
-                Object old = ContentList.this.get(last);
-                if (!filter.matches(old)) {
-                    throw new IllegalAddException("Filter won't allow " +
-                                  (old.getClass()).getName() + " (index " +
-                                  last + ") to be removed");
-                }
-                ContentList.this.set(last, obj);
-            }
-            else {
-                throw new IllegalAddException("Filter won't allow index " +
-                                              last + " to be set to " +
-                                              (obj.getClass()).getName());
-            }
-
-            expected = ContentList.this.getModCount();
-            // Don't set lastOperation
-        }
-
-        /**
-         * Returns index in the backing list by moving forward start
-         * objects that match our filter.
-         */
-        private int initializeCursor(int start) {
-            if (start < 0) {
-                throw new IndexOutOfBoundsException("Index: " + start);
-            }
-
-            int count = 0;
-            for (int i = 0; i < ContentList.this.size(); i++) {
-                Object obj = ContentList.this.get(i);
-                if (filter.matches(obj)) {
-                    if (start == count) {
-                        return i;
-                    }
-                    count++;
-                }
-            }
-
-            if (start > count) {
-                throw new IndexOutOfBoundsException("Index: " + start +
-                                                    " Size: " + count);
-            }
-
-            return ContentList.this.size();
-        }
-
-        /**
-         * Returns index in the backing list of the next object matching
-         * our filter, starting at the given index and moving forwards.
-         */
-        private int moveForward(int start) {
-            if (start < 0) {
-                start = 0;
-            }
-            for (int i = start; i < ContentList.this.size(); i++) {
-                Object obj = ContentList.this.get(i);
-                if (filter.matches(obj)) {
-                    return i;
-                }
-            }
-            return ContentList.this.size();
-        }
-
-        /**
-         * Returns index in the backing list of the next object matching
-         * our filter, starting at the given index and moving backwards.
-         */
-        private int moveBackward(int start) {
-            if (start >= ContentList.this.size()) {
-                start = ContentList.this.size() - 1;
-            }
-
-            for (int i = start; i >= 0; --i) {
-                Object obj = ContentList.this.get(i);
-                if (filter.matches(obj)) {
-                    return i;
-                }
-            }
-            return -1;
-        }
-
-        /**
-         * Check if are backing list is being modified by someone else.
-         */
-        private void checkConcurrentModification() {
-            if (expected != ContentList.this.getModCount()) {
-                throw new ConcurrentModificationException();
-            }
-        }
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/DataConversionException.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/DataConversionException.java
deleted file mode 100644
index 0ba930b..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/DataConversionException.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*-- 
-
- $Id: DataConversionException.java,v 1.1 2009/05/27 21:46:19 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-package org.jdom;
-
-/**
- * Thrown when a data conversion from a string to value type fails, such as
- * can happen with the {@link Attribute} convenience getter functions.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:19 $
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- */
-public class DataConversionException extends JDOMException {
-
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: DataConversionException.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:19 $ $Name:  $";
-
-    /**
-     * Constructs an exception where the named construct couldn't be converted
-     * to the named data type.
-     *
-     * @param name name of the construct whose value failed conversion
-     * @param dataType type the conversion was attempting to create
-     */
-    public DataConversionException(String name, String dataType) {
-        super(new StringBuffer()
-              .append("The XML construct ")
-              .append(name)
-              .append(" could not be converted to a ")
-              .append(dataType)
-              .toString());
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/DefaultJDOMFactory.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/DefaultJDOMFactory.java
deleted file mode 100644
index fd7f1e5..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/DefaultJDOMFactory.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*--
-
- $Id: DefaultJDOMFactory.java,v 1.1 2009/05/27 21:46:18 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom;
-
-import java.util.*;
-
-/**
- * Creates the standard top-level JDOM classes (Element, Document, Comment,
- * etc). A subclass of this factory might construct custom classes.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:18 $
- * @author  Ken Rune Holland
- * @author  Phil Nelson
- * @author  Bradley S. Huffman
- */
-public class DefaultJDOMFactory implements JDOMFactory {
-
-    private static final String CVS_ID =
-    "@(#) $RCSfile: DefaultJDOMFactory.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:18 $ $Name:  $";
-
-    public DefaultJDOMFactory() { }
-
-    // Allow Javadocs to inherit from JDOMFactory
-
-    public Attribute attribute(String name, String value, Namespace namespace) {
-        return new Attribute(name, value, namespace);
-    }
-
-    public Attribute attribute(String name, String value,
-                                            int type, Namespace namespace) {
-        return new Attribute(name, value, type, namespace);
-    }
-
-    public Attribute attribute(String name, String value) {
-        return new Attribute(name, value);
-    }
-
-    public Attribute attribute(String name, String value, int type) {
-        return new Attribute(name, value, type);
-    }
-
-    public CDATA cdata(String text) {
-        return new CDATA(text);
-    }
-
-    public Text text(String text) {
-        return new Text(text);
-    }
-
-    public Comment comment(String text) {
-        return new Comment(text);
-    }
-
-    public DocType docType(String elementName,
-                           String publicID, String systemID) {
-        return new DocType(elementName, publicID, systemID);
-    }
-
-    public DocType docType(String elementName, String systemID) {
-        return new DocType(elementName, systemID);
-    }
-
-    public DocType docType(String elementName) {
-        return new DocType(elementName);
-    }
-
-    public Document document(Element rootElement, DocType docType) {
-        return new Document(rootElement, docType);
-    }
-
-    public Document document(Element rootElement, DocType docType, String baseURI) {
-        return new Document(rootElement, docType, baseURI);
-    }
-
-    public Document document(Element rootElement) {
-        return new Document(rootElement);
-    }
-
-    public Element element(String name, Namespace namespace) {
-        return new Element(name, namespace);
-    }
-
-    public Element element(String name) {
-        return new Element(name);
-    }
-
-    public Element element(String name, String uri) {
-        return new Element(name, uri);
-    }
-
-    public Element element(String name, String prefix, String uri) {
-        return new Element(name, prefix, uri);
-    }
-
-    public ProcessingInstruction processingInstruction(String target,
-                                                       Map data) {
-        return new ProcessingInstruction(target, data);
-    }
-
-    public ProcessingInstruction processingInstruction(String target,
-                                                       String data) {
-        return new ProcessingInstruction(target, data);
-    }
-
-    public EntityRef entityRef(String name) {
-        return new EntityRef(name);
-    }
-
-    public EntityRef entityRef(String name, String publicID, String systemID) {
-        return new EntityRef(name, publicID, systemID);
-    }
-
-    public EntityRef entityRef(String name, String systemID) {
-        return new EntityRef(name, systemID);
-    }
-
-    // =====================================================================
-    // List manipulation
-    // =====================================================================
-
-    public void addContent(Parent parent, Content child) {
-        if (parent instanceof Document) {
-            ((Document) parent).addContent(child);
-        }
-        else {
-            ((Element) parent).addContent(child);
-        }
-    }
-
-    public void setAttribute(Element parent, Attribute a) {
-        parent.setAttribute(a);
-    }
-
-    public void addNamespaceDeclaration(Element parent, Namespace additional) {
-        parent.addNamespaceDeclaration(additional);
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/DescendantIterator.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/DescendantIterator.java
deleted file mode 100644
index a7cdb70..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/DescendantIterator.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*--
-
- $Id: DescendantIterator.java,v 1.1 2009/05/27 21:46:18 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom;
-
-import java.util.*;
-import org.jdom.Content;
-import org.jdom.Element;
-import org.jdom.Parent;
-
-/**
- * Traverse all a parent's descendants (all children at any level below
- * the parent).
- *
- * @author Bradley S. Huffman
- * @author Jason Hunter
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:18 $
- */
-class DescendantIterator implements Iterator {
-
-    private Iterator iterator;
-    private Iterator nextIterator;
-    private List stack = new ArrayList();
-
-    private static final String CVS_ID =
-            "@(#) $RCSfile: DescendantIterator.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:18 $ $Name:  $";
-
-    /**
-     * Iterator for the descendants of the supplied object.
-     *
-     * @param parent document or element whose descendants will be iterated
-     */
-    DescendantIterator(Parent parent) {
-        if (parent == null) {
-            throw new IllegalArgumentException("parent parameter was null");
-        }
-        this.iterator = parent.getContent().iterator();
-    }
-
-    /**
-     * Returns true> if the iteration has more {@link Content} descendants.
-     *
-     * @return true is the iterator has more descendants
-     */
-    public boolean hasNext() {
-        if (iterator != null && iterator.hasNext()) return true;
-        if (nextIterator != null && nextIterator.hasNext()) return true;
-        if (stackHasAnyNext()) return true;
-        return false;
-    }
-
-    /**
-     * Returns the next {@link Content} descendant.
-     *
-     * @return the next descendant
-     */
-    public Object next() {
-        if (!hasNext()) {
-            throw new NoSuchElementException();
-        }
-
-        // If we need to descend, go for it and record where we are.
-        // We do the shuffle here on the next next() call so remove() is easy
-        // to code up.
-        if (nextIterator != null) {
-            push(iterator);
-            iterator = nextIterator;
-            nextIterator = null;
-        }
-
-        // If this iterator is finished, try moving up the stack
-        while (!iterator.hasNext()) {
-            if (stack.size() > 0) {
-                iterator = pop();
-            }
-            else {
-              throw new NoSuchElementException("Somehow we lost our iterator");
-            }
-        }
-
-        Content child = (Content) iterator.next();
-        if (child instanceof Element) {
-            nextIterator = ((Element)child).getContent().iterator();
-        }
-        return child;
-    }
-
-    /**
-     * Detaches the last {@link org.jdom.Content} returned by the last call to
-     * next from it's parent.  <b>Note</b>: this <b>does not</b> affect
-     * iteration and all children, siblings, and any node following the
-     * removed node (in document order) will be visited.
-     */
-    public void remove() {
-        iterator.remove();
-    }
-
-    private Iterator pop() {
-        int stackSize = stack.size();
-        if (stackSize == 0) {
-            throw new NoSuchElementException("empty stack");
-        }
-        return (Iterator) stack.remove(stackSize - 1);
-    }
-
-    private void push(Iterator itr) {
-        stack.add(itr);
-    }
-
-    private boolean stackHasAnyNext() {
-        int size = stack.size();
-        for (int i = 0; i < size; i++) {
-            Iterator itr = (Iterator) stack.get(i);
-            if (itr.hasNext()) {
-                return true;
-            }
-        }
-        return false;
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/DocType.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/DocType.java
deleted file mode 100644
index c2e3468..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/DocType.java
+++ /dev/null
@@ -1,280 +0,0 @@
-/*--
-
- $Id: DocType.java,v 1.1 2009/05/27 21:46:18 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom;
-
-/**
- * An XML DOCTYPE declaration.  Method allow the user to get and set the
- * root element name, public id, and system id.
- *
- * @author Brett McLaughlin
- * @author Jason Hunter
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:18 $
- */
-public class DocType extends Content {
-
-    private static final String CVS_ID =
-      "@(#) $RCSfile: DocType.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:18 $ $Name:  $";
-
-    /** The element being constrained */
-    protected String elementName;
-
-    /** The public ID of the DOCTYPE */
-    protected String publicID;
-
-    /** The system ID of the DOCTYPE */
-    protected String systemID;
-
-    /** The internal subset of the DOCTYPE */
-    protected String internalSubset;
-
-    /**
-     * Default, no-args constructor for implementations to use if needed.
-     */
-    protected DocType() {}
-
-    /*
-     * XXX:
-     *   We need to take care of entities and notations here.
-     */
-
-    /**
-     * This will create the <code>DocType</code> with
-     * the specified element name and a reference to an
-     * external DTD.
-     *
-     * @param elementName <code>String</code> name of
-     *        element being constrained.
-     * @param publicID <code>String</code> public ID of
-     *        referenced DTD
-     * @param systemID <code>String</code> system ID of
-     *        referenced DTD
-     * @throws IllegalDataException if the given system ID is not a legal
-     *         system literal or the public ID is not a legal public ID.
-     * @throws IllegalNameException if the given root element name is not a
-     *         legal XML element name.
-     */
-    public DocType(String elementName, String publicID, String systemID) {
-        setElementName(elementName);
-        setPublicID(publicID);
-        setSystemID(systemID);
-    }
-
-    /**
-     * This will create the <code>DocType</code> with
-     * the specified element name and reference to an
-     * external DTD.
-     *
-     * @param elementName <code>String</code> name of
-     *        element being constrained.
-     * @param systemID <code>String</code> system ID of
-     *        referenced DTD
-     * @throws IllegalDataException if the given system ID is not a legal
-     *         system literal.
-     * @throws IllegalNameException if the given root element name is not a
-     *         legal XML element name.
-     */
-    public DocType(String elementName, String systemID) {
-        this(elementName, null, systemID);
-    }
-
-    /**
-     * This will create the <code>DocType</code> with
-     * the specified element name
-     *
-     * @param elementName <code>String</code> name of
-     *        element being constrained.
-     * @throws IllegalNameException if the given root element name is not a
-     *         legal XML element name.
-     */
-    public DocType(String elementName) {
-        this(elementName, null, null);
-    }
-
-    /**
-     * This will retrieve the element name being constrained.
-     *
-     * @return <code>String</code> - element name for DOCTYPE
-     */
-    public String getElementName() {
-        return elementName;
-    }
-
-    /**
-     * This will set the root element name declared by this
-     * DOCTYPE declaration.
-     *
-     * @return DocType <code>DocType</code> this DocType object
-     * @param elementName <code>String</code> name of
-     *        root element being constrained.
-     * @throws IllegalNameException if the given root element name is not a
-     *         legal XML element name.
-     */
-    public DocType setElementName(String elementName) {
-        // This can contain a colon so we use checkXMLName()
-        // instead of checkElementName()
-        String reason = Verifier.checkXMLName(elementName);
-        if (reason != null) {
-            throw new IllegalNameException(elementName, "DocType", reason);
-        }
-        this.elementName = elementName;
-        return this;
-    }
-
-    /**
-     * This will retrieve the public ID of an externally
-     * referenced DTD, or an empty <code>String</code> if
-     * none is referenced.
-     *
-     * @return <code>String</code> - public ID of referenced DTD.
-     */
-    public String getPublicID() {
-        return publicID;
-    }
-
-    /**
-     * This will set the public ID of an externally
-     * referenced DTD.
-     *
-     * @param publicID id to set
-     * @return DocType <code>DocType</code> this DocType object
-     * @throws IllegalDataException if the given public ID is not a legal
-     *         public ID.
-     */
-    public DocType setPublicID(String publicID) {
-        String reason = Verifier.checkPublicID(publicID);
-        if (reason != null) {
-            throw new IllegalDataException(publicID, "DocType", reason);
-        }
-        this.publicID = publicID;
-
-        return this;
-    }
-
-    /**
-     * This will retrieve the system ID of an externally
-     * referenced DTD, or an empty <code>String</code> if
-     * none is referenced.
-     *
-     * @return <code>String</code> - system ID of referenced DTD.
-     */
-    public String getSystemID() {
-        return systemID;
-    }
-
-    /**
-     * This will set the system ID of an externally
-     * referenced DTD.
-     *
-     * @param systemID id to set
-     * @return systemID <code>String</code> system ID of
-     *                  referenced DTD.
-     * @throws IllegalDataException if the given system ID is not a legal
-     *         system literal.
-     */
-    public DocType setSystemID(String systemID) {
-        String reason = Verifier.checkSystemLiteral(systemID);
-        if (reason != null) {
-            throw new IllegalDataException(systemID, "DocType", reason);
-        }
-        this.systemID = systemID;
-
-        return this;
-    }
-
-    /**
-     * Returns the empty string since doctypes don't have an XPath
-     * 1.0 string value.
-     * @return the empty string
-     */
-    public String getValue() {
-        return "";  // doctypes don't have an XPath string value
-    }
-
-    /**
-     * This sets the data for the internal subset.
-     *
-     * @param newData data for the internal subset, as a
-     *        <code>String</code>.
-     */
-    public void setInternalSubset(String newData) {
-        internalSubset = newData;
-    }
-
-    /**
-     * This returns the data for the internal subset.
-     *
-     * @return <code>String</code> - the internal subset
-     */
-    public String getInternalSubset() {
-        return internalSubset;
-    }
-
-    /**
-     * This returns a <code>String</code> representation of the
-     * <code>DocType</code>, suitable for debugging.
-     *
-     * @return <code>String</code> - information about the
-     *         <code>DocType</code>
-     */
-    public String toString() {
-        return new StringBuffer()
-            .append("[DocType: ")
-            .append(new org.jdom.output.XMLOutputter().outputString(this))
-            .append("]")
-            .toString();
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/Document.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/Document.java
deleted file mode 100644
index 7fe89d7..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/Document.java
+++ /dev/null
@@ -1,767 +0,0 @@
-/*--
-
- $Id: Document.java,v 1.1 2009/05/27 21:46:19 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom;
-
-import java.util.*;
-import org.jdom.filter.*;
-
-/**
- * An XML document. Methods allow access to the root element as well as the
- * {@link DocType} and other document-level information.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:19 $
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- * @author  Jools Enticknap
- * @author  Bradley S. Huffman
- */
-public class Document implements Parent {
-
-    private static final String CVS_ID =
-      "@(#) $RCSfile: Document.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:19 $ $Name:  $";
-
-    /**
-     * This document's content including comments, PIs, a possible
-     * DocType, and a root element.
-     * Subclassers have to track content using their own
-     * mechanism.
-     */
-    ContentList content = new ContentList(this);
-
-    /**
-     *  See http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/core.html#baseURIs-Considerations
-     */
-    protected String baseURI = null;
-
-    // Supports the setProperty/getProperty calls
-    private HashMap propertyMap = null;
-
-    /**
-     * Creates a new empty document.  A document must have a root element,
-     * so this document will not be well-formed and accessor methods will
-     * throw an IllegalStateException if this document is accessed before a
-     * root element is added.  This method is most useful for build tools.
-     */
-    public Document() {}
-
-    /**
-     * This will create a new <code>Document</code>,
-     * with the supplied <code>{@link Element}</code>
-     * as the root element, the supplied
-     * <code>{@link DocType}</code> declaration, and the specified
-     * base URI.
-     *
-     * @param rootElement <code>Element</code> for document root.
-     * @param docType <code>DocType</code> declaration.
-     * @param baseURI the URI from which this doucment was loaded.
-     * @throws IllegalAddException if the given docType object
-     *         is already attached to a document or the given
-     *         rootElement already has a parent
-     */
-    public Document(Element rootElement, DocType docType, String baseURI) {
-        if (rootElement != null) {
-            setRootElement(rootElement);
-        }
-        if (docType != null) {
-            setDocType(docType);
-        }
-        if (baseURI != null) {
-            setBaseURI(baseURI);
-        }
-    }
-
-    /**
-     * This will create a new <code>Document</code>,
-     * with the supplied <code>{@link Element}</code>
-     * as the root element and the supplied
-     * <code>{@link DocType}</code> declaration.
-     *
-     * @param rootElement <code>Element</code> for document root.
-     * @param docType <code>DocType</code> declaration.
-     * @throws IllegalAddException if the given DocType object
-     *         is already attached to a document or the given
-     *         rootElement already has a parent
-     */
-    public Document(Element rootElement, DocType docType) {
-        this(rootElement, docType, null);
-    }
-
-    /**
-     * This will create a new <code>Document</code>,
-     * with the supplied <code>{@link Element}</code>
-     * as the root element, and no <code>{@link DocType}</code>
-     * declaration.
-     *
-     * @param rootElement <code>Element</code> for document root
-     * @throws IllegalAddException if the given rootElement already has
-     *         a parent.
-     */
-    public Document(Element rootElement) {
-        this(rootElement, null, null);
-    }
-
-    /**
-     * This will create a new <code>Document</code>,
-     * with the supplied list of content, and a
-     * <code>{@link DocType}</code> declaration only if the content
-     * contains a DocType instance.  A null list is treated the
-     * same as the no-arg constructor.
-     *
-     * @param content <code>List</code> of starter content
-     * @throws IllegalAddException if the List contains more than
-     *         one Element or objects of illegal types.
-     */
-    public Document(List content) {
-        setContent(content);
-    }
-
-    public int getContentSize() {
-        return content.size();
-    }
-
-    public int indexOf(Content child) {
-        return content.indexOf(child);
-    }
-
-//    /**
-//     * Starting at the given index (inclusive), return the index of
-//     * the first child matching the supplied filter, or -1
-//     * if none is found.
-//     *
-//     * @return index of child, or -1 if none found.
-//     */
-//    private int indexOf(int start, Filter filter) {
-//        int size = getContentSize();
-//        for (int i = start; i < size; i++) {
-//            if (filter.matches(getContent(i))) {
-//                return i;
-//            }
-//        }
-//        return -1;
-//    }
-
-    /**
-     * This will return <code>true</code> if this document has a
-     * root element, <code>false</code> otherwise.
-     *
-     * @return <code>true</code> if this document has a root element,
-     *         <code>false</code> otherwise.
-     */
-    public boolean hasRootElement() {
-        return (content.indexOfFirstElement() < 0) ? false : true;
-    }
-
-    /**
-     * This will return the root <code>Element</code>
-     * for this <code>Document</code>
-     *
-     * @return <code>Element</code> - the document's root element
-     * @throws IllegalStateException if the root element hasn't been set
-     */
-    public Element getRootElement() {
-        int index = content.indexOfFirstElement();
-        if (index < 0) {
-            throw new IllegalStateException("Root element not set");
-        }
-        return (Element) content.get(index);
-    }
-
-    /**
-     * This sets the root <code>{@link Element}</code> for the
-     * <code>Document</code>. If the document already has a root
-     * element, it is replaced.
-     *
-     * @param rootElement <code>Element</code> to be new root.
-     * @return <code>Document</code> - modified Document.
-     * @throws IllegalAddException if the given rootElement already has
-     *         a parent.
-     */
-    public Document setRootElement(Element rootElement) {
-        int index = content.indexOfFirstElement();
-        if (index < 0) {
-            content.add(rootElement);
-        }
-        else {
-            content.set(index, rootElement);
-        }
-        return this;
-    }
-
-    /**
-     * Detach the root <code>{@link Element}</code> from this document.
-     *
-     * @return removed root <code>Element</code>
-     */
-    public Element detachRootElement() {
-        int index = content.indexOfFirstElement();
-        if (index < 0)
-            return null;
-        return (Element) removeContent(index);
-    }
-
-    /**
-     * This will return the <code>{@link DocType}</code>
-     * declaration for this <code>Document</code>, or
-     * <code>null</code> if none exists.
-     *
-     * @return <code>DocType</code> - the DOCTYPE declaration.
-     */
-    public DocType getDocType() {
-        int index = content.indexOfDocType();
-        if (index < 0) {
-            return null;
-        }
-        else {
-            return (DocType) content.get(index);
-        }
-    }
-
-    /**
-     * This will set the <code>{@link DocType}</code>
-     * declaration for this <code>Document</code>. Note
-     * that a DocType can only be attached to one Document.
-     * Attempting to set the DocType to a DocType object
-     * that already belongs to a Document will result in an
-     * IllegalAddException being thrown.
-     *
-     * @param docType <code>DocType</code> declaration.
-     * @return object on which the method was invoked
-     * @throws IllegalAddException if the given docType is
-     *   already attached to a Document.
-     */
-    public Document setDocType(DocType docType) {
-        if (docType == null) {
-            // Remove any existing doctype
-            int docTypeIndex = content.indexOfDocType();
-            if (docTypeIndex >= 0) content.remove(docTypeIndex);
-            return this;
-        }
-
-        if (docType.getParent() != null) {
-            throw new IllegalAddException(docType,
-                              "The DocType already is attached to a document");
-        }
-
-        // Add DocType to head if new, replace old otherwise
-        int docTypeIndex = content.indexOfDocType();
-        if (docTypeIndex < 0) {
-            content.add(0, docType);
-        }
-        else {
-            content.set(docTypeIndex, docType);
-        }
-
-        return this;
-    }
-
-    /**
-     * Appends the child to the end of the content list.
-     *
-     * @param child   child to append to end of content list
-     * @return        the document on which the method was called
-     * @throws IllegalAddException if the given child already has a parent.
-     */
-    public Document addContent(Content child) {
-        content.add(child);
-        return this;
-    }
-
-    /**
-     * Appends all children in the given collection to the end of
-     * the content list.  In event of an exception during add the
-     * original content will be unchanged and the objects in the supplied
-     * collection will be unaltered.
-     *
-     * @param c   collection to append
-     * @return    the document on which the method was called
-     * @throws IllegalAddException if any item in the collection
-     *         already has a parent or is of an illegal type.
-     */
-    public Document addContent(Collection c) {
-        content.addAll(c);
-        return this;
-    }
-
-    /**
-     * Inserts the child into the content list at the given index.
-     *
-     * @param index location for adding the collection
-     * @param child      child to insert
-     * @return           the parent on which the method was called
-     * @throws IndexOutOfBoundsException if index is negative or beyond
-     *         the current number of children
-     * @throws IllegalAddException if the given child already has a parent.
-     */
-    public Document addContent(int index, Content child) {
-        content.add(index, child);
-        return this;
-    }
-
-    /**
-     * Inserts the content in a collection into the content list
-     * at the given index.  In event of an exception the original content
-     * will be unchanged and the objects in the supplied collection will be
-     * unaltered.
-     *
-     * @param index location for adding the collection
-     * @param c  collection to insert
-     * @return            the parent on which the method was called
-     * @throws IndexOutOfBoundsException if index is negative or beyond
-     *         the current number of children
-     * @throws IllegalAddException if any item in the collection
-     *         already has a parent or is of an illegal type.
-     */
-    public Document addContent(int index, Collection c) {
-        content.addAll(index, c);
-        return this;
-    }
-
-    public List cloneContent() {
-        int size = getContentSize();
-        List list = new ArrayList(size);
-        for (int i = 0; i < size; i++) {
-            Content child = getContent(i);
-            list.add(child.clone());
-        }
-        return list;
-    }
-
-    public Content getContent(int index) {
-        return (Content) content.get(index);
-    }
-
-//    public Content getChild(Filter filter) {
-//        int i = indexOf(0, filter);
-//        return (i < 0) ? null : getContent(i);
-//    }
-
-    /**
-     * This will return all content for the <code>Document</code>.
-     * The returned list is "live" in document order and changes to it
-     * affect the document's actual content.
-     *
-     * <p>
-     * Sequential traversal through the List is best done with a Iterator
-     * since the underlying implement of List.size() may require walking the
-     * entire list.
-     * </p>
-     *
-     * @return <code>List</code> - all Document content
-     * @throws IllegalStateException if the root element hasn't been set
-     */
-    public List getContent() {
-        if (!hasRootElement())
-            throw new IllegalStateException("Root element not set");
-        return content;
-    }
-
-    /**
-     * Return a filtered view of this <code>Document</code>'s content.
-     *
-     * <p>
-     * Sequential traversal through the List is best done with a Iterator
-     * since the underlying implement of List.size() may require walking the
-     * entire list.
-     * </p>
-     *
-     * @param filter <code>Filter</code> to apply
-     * @return <code>List</code> - filtered Document content
-     * @throws IllegalStateException if the root element hasn't been set
-     */
-    public List getContent(Filter filter) {
-        if (!hasRootElement())
-            throw new IllegalStateException("Root element not set");
-        return content.getView(filter);
-    }
-
-    /**
-     * Removes all child content from this parent.
-     *
-     * @return list of the old children detached from this parent
-     */
-    public List removeContent() {
-        List old = new ArrayList(content);
-        content.clear();
-        return old;
-    }
-
-    /**
-     * Remove all child content from this parent matching the supplied filter.
-     *
-     * @param filter filter to select which content to remove
-     * @return list of the old children detached from this parent
-     */
-    public List removeContent(Filter filter) {
-        List old = new ArrayList();
-        Iterator itr = content.getView(filter).iterator();
-        while (itr.hasNext()) {
-            Content child = (Content) itr.next();
-            old.add(child);
-            itr.remove();
-        }
-        return old;
-    }
-
-    /**
-     * This sets the content of the <code>Document</code>.  The supplied
-     * List should contain only objects of type <code>Element</code>,
-     * <code>Comment</code>, and <code>ProcessingInstruction</code>.
-     *
-     * <p>
-     * When all objects in the supplied List are legal and before the new
-     * content is added, all objects in the old content will have their
-     * parentage set to null (no parent) and the old content list will be
-     * cleared. This has the effect that any active list (previously obtained
-     * with a call to {@link #getContent}) will also
-     * change to reflect the new content.  In addition, all objects in the
-     * supplied List will have their parentage set to this document, but the
-     * List itself will not be "live" and further removals and additions will
-     * have no effect on this document content. If the user wants to continue
-     * working with a "live" list, then a call to setContent should be
-     * followed by a call to {@link #getContent} to
-     * obtain a "live" version of the content.
-     * </p>
-     *
-     * <p>
-     * Passing a null or empty List clears the existing content.
-     * </p>
-     *
-     * <p>
-     * In event of an exception the original content will be unchanged and
-     * the objects in the supplied content will be unaltered.
-     * </p>
-     *
-     * @param newContent <code>List</code> of content to set
-     * @return this document modified
-     * @throws IllegalAddException if the List contains objects of
-     *         illegal types or with existing parentage.
-     */
-    public Document setContent(Collection newContent) {
-        content.clearAndSet(newContent);
-        return this;
-    }
-
-    /**
-     *
-     * <p>
-     * Sets the effective URI from which this document was loaded,
-     * and against which relative URLs in this document will be resolved.
-     * </p>
-     *
-     * @param uri the base URI of this document
-     */
-    public final void setBaseURI(String uri) {
-        this.baseURI = uri;  // XXX We don't check the URI
-    }
-
-    /**
-     * <p>
-     *   Returns the URI from which this document was loaded,
-     *   or null if this is not known.
-     * </p>
-     *
-     * @return the base URI of this document
-     */
-    public final String getBaseURI() {
-        return baseURI;
-    }
-
-    /*
-     * Replace the current child the given index with the supplied child.
-     * <p>
-     * In event of an exception the original content will be unchanged and
-     * the supplied child will be unaltered.
-     * </p>
-     *
-     * @param index - index of child to replace.
-     * @param child - child to add.
-     * @throws IllegalAddException if the supplied child is already attached
-     *                             or not legal content for this parent.
-     * @throws IndexOutOfBoundsException if index is negative or greater
-     *         than the current number of children.
-     */
-    public Document setContent(int index, Content child) {
-        content.set(index, child);
-        return this;
-    }
-
-    /**
-     * Replace the child at the given index whith the supplied
-     * collection.
-     * <p>
-     * In event of an exception the original content will be unchanged and
-     * the content in the supplied collection will be unaltered.
-     * </p>
-     *
-     * @param index - index of child to replace.
-     * @param collection - collection of content to add.
-     * @return object on which the method was invoked
-     * @throws IllegalAddException if the collection contains objects of
-     *         illegal types.
-     * @throws IndexOutOfBoundsException if index is negative or greater
-     *         than the current number of children.
-     */
-    public Document setContent(int index, Collection collection) {
-        content.remove(index);
-        content.addAll(index, collection);
-        return this;
-    }
-
-    public boolean removeContent(Content child) {
-        return content.remove(child);
-    }
-
-    public Content removeContent(int index) {
-        return (Content) content.remove(index);
-    }
-
-    /**
-     * Set this document's content to be the supplied child.
-     * <p>
-     * If the supplied child is legal content for a Document and before
-     * it is added, all content in the current content list will
-     * be cleared and all current children will have their parentage set to
-     * null.
-     * <p>
-     * This has the effect that any active list (previously obtained with
-     * a call to one of the {@link #getContent} methods will also change
-     * to reflect the new content.  In addition, all content in the supplied
-     * collection will have their parentage set to this Document.  If the user
-     * wants to continue working with a <b>"live"</b> list of this Document's
-     * child, then a call to setContent should be followed by a call to one
-     * of the {@link #getContent} methods to obtain a <b>"live"</b>
-     * version of the children.
-     * <p>
-     * Passing a null child clears the existing content.
-     * <p>
-     * In event of an exception the original content will be unchanged and
-     * the supplied child will be unaltered.
-     *
-     * @param child new content to replace existing content
-     * @return           the parent on which the method was called
-     * @throws IllegalAddException if the supplied child is already attached
-     *                             or not legal content for this parent
-     */
-    public Document setContent(Content child) {
-        content.clear();
-        content.add(child);
-        return this;
-    }
-
-    /**
-     * This returns a <code>String</code> representation of the
-     * <code>Document</code>, suitable for debugging. If the XML
-     * representation of the <code>Document</code> is desired,
-     * {@link org.jdom.output.XMLOutputter#outputString(Document)}
-     * should be used.
-     *
-     * @return <code>String</code> - information about the
-     *         <code>Document</code>
-     */
-    public String toString() {
-        StringBuffer stringForm = new StringBuffer()
-            .append("[Document: ");
-
-        DocType docType = getDocType();
-        if (docType != null) {
-            stringForm.append(docType.toString())
-                      .append(", ");
-        } else {
-            stringForm.append(" No DOCTYPE declaration, ");
-        }
-
-        Element rootElement = getRootElement();
-        if (rootElement != null) {
-            stringForm.append("Root is ")
-                      .append(rootElement.toString());
-        } else {
-            stringForm.append(" No root element"); // shouldn't happen
-        }
-
-        stringForm.append("]");
-
-        return stringForm.toString();
-    }
-
-    /**
-     * This tests for equality of this <code>Document</code> to the supplied
-     * <code>Object</code>.
-     *
-     * @param ob <code>Object</code> to compare to
-     * @return <code>boolean</code> whether the <code>Document</code> is
-     *         equal to the supplied <code>Object</code>
-     */
-    public final boolean equals(Object ob) {
-        return (ob == this);
-    }
-
-    /**
-     * This returns the hash code for this <code>Document</code>.
-     *
-     * @return <code>int</code> hash code
-     */
-    public final int hashCode() {
-        return super.hashCode();
-    }
-
-    /**
-     * This will return a deep clone of this <code>Document</code>.
-     *
-     * @return <code>Object</code> clone of this <code>Document</code>
-     */
-    public Object clone() {
-        Document doc = null;
-
-        try {
-            doc = (Document) super.clone();
-        } catch (CloneNotSupportedException ce) {
-            // Can't happen
-        }
-
-        // The clone has a reference to this object's content list, so
-        // owerwrite with a empty list
-        doc.content = new ContentList(doc);
-
-        // Add the cloned content to clone
-
-        for (int i = 0; i < content.size(); i++) {
-            Object obj = content.get(i);
-            if (obj instanceof Element) {
-                Element element = (Element)((Element)obj).clone();
-                doc.content.add(element);
-            }
-            else if (obj instanceof Comment) {
-                Comment comment = (Comment)((Comment)obj).clone();
-                doc.content.add(comment);
-            }
-            else if (obj instanceof ProcessingInstruction) {
-                ProcessingInstruction pi = (ProcessingInstruction)
-                           ((ProcessingInstruction)obj).clone();
-                doc.content.add(pi);
-            }
-            else if (obj instanceof DocType) {
-                DocType dt = (DocType) ((DocType)obj).clone();
-                doc.content.add(dt);
-            }
-        }
-
-        return doc;
-    }
-
-    /**
-     * Returns an iterator that walks over all descendants in document order.
-     *
-     * @return an iterator to walk descendants
-     */
-    public Iterator getDescendants() {
-        return new DescendantIterator(this);
-    }
-
-    /**
-     * Returns an iterator that walks over all descendants in document order
-     * applying the Filter to return only elements that match the filter rule.
-     * With filters you can match only Elements, only Comments, Elements or
-     * Comments, only Elements with a given name and/or prefix, and so on.
-     *
-     * @param filter filter to select which descendants to see
-     * @return an iterator to walk descendants within a filter
-     */
-    public Iterator getDescendants(Filter filter) {
-        return new FilterIterator(new DescendantIterator(this), filter);
-    }
-
-    public Parent getParent() {
-        return null;  // documents never have parents
-    }
-
-
-
-    /**
-     * @see org.jdom.Parent#getDocument()
-     */
-    public Document getDocument() {
-        return this;
-    }
-
-    /**
-     * Assigns an arbitrary object to be associated with this document under
-     * the given "id" string.  Null values are permitted.  Strings beginning
-     * with "http://www.jdom.org/ are reserved for JDOM use.
-     *
-     * @param id     the id of the stored object
-     * @param value  the object to store
-     */
-    public void setProperty(String id, Object value) {
-        if (propertyMap == null) {
-            propertyMap = new HashMap();
-        }
-        propertyMap.put(id, value);
-    }
-
-    /**
-     * Returns the object associated with this document under the given "id"
-     * string, or null if there is no binding or if the binding explicitly
-     * stored a null value.
-     *
-     * @param id   the id of the stored object to return
-     * @return     the object associated with the given id
-     */
-    public Object getProperty(String id) {
-        if (propertyMap == null) return null;
-        return propertyMap.get(id);
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/Element.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/Element.java
deleted file mode 100644
index c91a48e..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/Element.java
+++ /dev/null
@@ -1,1560 +0,0 @@
-/*--
-
- $Id: Element.java,v 1.1 2009/05/27 21:46:19 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom;
-
-import java.io.*;
-import java.util.*;
-
-import org.jdom.filter.*;
-
-/**
- * An XML element. Methods allow the user to get and manipulate its child
- * elements and content, directly access the element's textual content,
- * manipulate its attributes, and manage namespaces.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:19 $
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- * @author  Lucas Gonze
- * @author  Kevin Regan
- * @author  Dan Schaffer
- * @author  Yusuf Goolamabbas
- * @author  Kent C. Johnson
- * @author  Jools Enticknap
- * @author  Alex Rosen
- * @author  Bradley S. Huffman
- */
-public class Element extends Content implements Parent {
-
-    private static final String CVS_ID =
-    "@(#) $RCSfile: Element.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:19 $ $Name:  $";
-
-    private static final int INITIAL_ARRAY_SIZE = 5;
-
-    /** The local name of the element */
-    protected String name;
-
-    /** The namespace of the element */
-    protected transient Namespace namespace;
-
-    /** Additional namespace declarations to store on this element; useful
-     * during output */
-    protected transient List additionalNamespaces;
-
-    // See http://lists.denveronline.net/lists/jdom-interest/2000-September/003030.html
-    // for a possible memory optimization here (using a RootElement subclass)
-
-    /**
-     *  The attributes of the element.  Subclassers have to
-     * track attributes using their own mechanism.
-     */
-    AttributeList attributes = new AttributeList(this);
-
-    /**
-     * The content of the element.  Subclassers have to
-     * track content using their own mechanism.
-     */
-    ContentList content = new ContentList(this);
-
-    /**
-     * This protected constructor is provided in order to support an Element
-     * subclass that wants full control over variable initialization. It
-     * intentionally leaves all instance variables null, allowing a lightweight
-     * subclass implementation. The subclass is responsible for ensuring all the
-     * get and set methods on Element behave as documented.
-     * <p>
-     * When implementing an Element subclass which doesn't require full control
-     * over variable initialization, be aware that simply calling super() (or
-     * letting the compiler add the implicit super() call) will not initialize
-     * the instance variables which will cause many of the methods to throw a
-     * NullPointerException. Therefore, the constructor for these subclasses
-     * should call one of the public constructors so variable initialization is
-     * handled automatically.
-     */
-    protected Element() { }
-
-    /**
-     * Creates a new element with the supplied (local) name and namespace. If
-     * the provided namespace is null, the element will have no namespace.
-     *
-     * @param  name                 local name of the element
-     * @param  namespace            namespace for the element
-     * @throws IllegalNameException if the given name is illegal as an element
-     *                              name
-     */
-    public Element(String name, Namespace namespace) {
-        setName(name);
-        setNamespace(namespace);
-    }
-
-    /**
-     * Create a new element with the supplied (local) name and no namespace.
-     *
-     * @param  name                 local name of the element
-     * @throws IllegalNameException if the given name is illegal as an element
-     *                              name.
-     */
-    public Element(String name) {
-        this(name, (Namespace) null);
-    }
-
-    /**
-     * Creates a new element with the supplied (local) name and a namespace
-     * given by a URI. The element will be put into the unprefixed (default)
-     * namespace.
-     *
-     * @param  name                 name of the element
-     * @param  uri                  namespace URI for the element
-     * @throws IllegalNameException if the given name is illegal as an element
-     *                              name or the given URI is illegal as a
-     *                              namespace URI
-     */
-    public Element(String name, String uri) {
-        this(name, Namespace.getNamespace("", uri));
-    }
-
-    /**
-     * Creates a new element with the supplied (local) name and a namespace
-     * given by the supplied prefix and URI combination.
-     *
-     * @param  name                 local name of the element
-     * @param  prefix               namespace prefix
-     * @param  uri                  namespace URI for the element
-     * @throws IllegalNameException if the given name is illegal as an element
-     *                              name, the given prefix is illegal as a
-     *                              namespace prefix, or the given URI is
-     *                              illegal as a namespace URI
-     */
-    public Element(String name, String prefix, String uri) {
-        this(name, Namespace.getNamespace(prefix, uri));
-    }
-
-    /**
-     * Returns the (local) name of the element (without any namespace prefix).
-     *
-     * @return                     local element name
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Sets the (local) name of the element.
-     *
-     * @param  name                 the new (local) name of the element
-     * @return                      the target element
-     * @throws IllegalNameException if the given name is illegal as an Element
-     *                              name
-     */
-    public Element setName(String name) {
-        String reason = Verifier.checkElementName(name);
-        if (reason != null) {
-            throw new IllegalNameException(name, "element", reason);
-        }
-        this.name = name;
-        return this;
-    }
-
-    /**
-     * Returns the element's {@link Namespace}.
-     *
-     * @return                     the element's namespace
-     */
-    public Namespace getNamespace() {
-        return namespace;
-    }
-
-    /**
-     * Sets the element's {@link Namespace}. If the provided namespace is null,
-     * the element will have no namespace.
-     *
-     * @param  namespace           the new namespace
-     * @return                     the target element
-     */
-    public Element setNamespace(Namespace namespace) {
-        if (namespace == null) {
-            namespace = Namespace.NO_NAMESPACE;
-        }
-
-        this.namespace = namespace;
-        return this;
-    }
-
-    /**
-     * Returns the namespace prefix of the element or an empty string if none
-     * exists.
-     *
-     * @return                     the namespace prefix
-     */
-    public String getNamespacePrefix() {
-        return namespace.getPrefix();
-    }
-
-    /**
-     * Returns the namespace URI mapped to this element's prefix (or the
-     * in-scope default namespace URI if no prefix). If no mapping is found, an
-     * empty string is returned.
-     *
-     * @return                     the namespace URI for this element
-     */
-    public String getNamespaceURI() {
-        return namespace.getURI();
-    }
-
-    /**
-     * Returns the {@link Namespace} corresponding to the given prefix in scope
-     * for this element. This involves searching up the tree, so the results
-     * depend on the current location of the element. Returns null if there is
-     * no namespace in scope with the given prefix at this point in the
-     * document.
-     *
-     * @param  prefix              namespace prefix to look up
-     * @return                     the Namespace for this prefix at this
-     *                             location, or null if none
-     */
-    public Namespace getNamespace(String prefix) {
-        if (prefix == null) {
-            return null;
-        }
-
-        if (prefix.equals("xml")) {
-            // Namespace "xml" is always bound.
-            return Namespace.XML_NAMESPACE;
-        }
-
-        // Check if the prefix is the prefix for this element
-        if (prefix.equals(getNamespacePrefix())) {
-            return getNamespace();
-        }
-
-        // Scan the additional namespaces
-        if (additionalNamespaces != null) {
-            for (int i = 0; i < additionalNamespaces.size(); i++) {
-                Namespace ns = (Namespace) additionalNamespaces.get(i);
-                if (prefix.equals(ns.getPrefix())) {
-                    return ns;
-                }
-            }
-        }
-
-        // If we still don't have a match, ask the parent
-        if (parent instanceof Element) {
-            return ((Element)parent).getNamespace(prefix);
-        }
-
-        return null;
-    }
-
-    /**
-     * Returns the full name of the element, in the form
-     * [namespacePrefix]:[localName]. If the element does not have a namespace
-     * prefix, then the local name is returned.
-     *
-     * @return                     qualified name of the element (including
-     *                             namespace prefix)
-     */
-    public String getQualifiedName() {
-        // Note: Any changes here should be reflected in
-        // XMLOutputter.printQualifiedName()
-        if (namespace.getPrefix().equals("")) {
-            return getName();
-        }
-
-        return new StringBuffer(namespace.getPrefix())
-            .append(':')
-            .append(name)
-            .toString();
-    }
-
-    /**
-     * Adds a namespace declarations to this element. This should <i>not</i> be
-     * used to add the declaration for this element itself; that should be
-     * assigned in the construction of the element. Instead, this is for adding
-     * namespace declarations on the element not relating directly to itself.
-     * It's used during output to for stylistic reasons move namespace
-     * declarations higher in the tree than they would have to be.
-     *
-     * @param  additional          namespace to add
-     * @throws IllegalAddException if the namespace prefix collides with another
-     *                             namespace prefix on the element
-     */
-    public void addNamespaceDeclaration(Namespace additional) {
-
-        // Verify the new namespace prefix doesn't collide with another
-        // declared namespace, an attribute prefix, or this element's prefix
-        String reason = Verifier.checkNamespaceCollision(additional, this);
-        if (reason != null) {
-            throw new IllegalAddException(this, additional, reason);
-        }
-
-        if (additionalNamespaces == null) {
-            additionalNamespaces = new ArrayList(INITIAL_ARRAY_SIZE);
-        }
-
-        additionalNamespaces.add(additional);
-    }
-
-    /**
-     * Removes an additional namespace declarations from this element. This
-     * should <i>not</i> be used to remove the declaration for this element
-     * itself; that should be handled in the construction of the element.
-     * Instead, this is for removing namespace declarations on the element not
-     * relating directly to itself. If the declaration is not present, this
-     * method does nothing.
-     *
-     * @param additionalNamespace namespace to remove
-     */
-    public void removeNamespaceDeclaration(Namespace additionalNamespace) {
-        if (additionalNamespaces == null) {
-            return;
-        }
-        additionalNamespaces.remove(additionalNamespace);
-    }
-
-    /**
-     * Returns a list of the additional namespace declarations on this element.
-     * This includes only additional namespace, not the namespace of the element
-     * itself, which can be obtained through {@link #getNamespace()}. If there
-     * are no additional declarations, this returns an empty list. Note, the
-     * returned list is unmodifiable.
-     *
-     * @return                     a List of the additional namespace
-     *                             declarations
-     */
-    public List getAdditionalNamespaces() {
-        // Not having the returned list be live allows us to avoid creating a
-        // new list object when XMLOutputter calls this method on an element
-        // with an empty list.
-        if (additionalNamespaces == null) {
-            return Collections.EMPTY_LIST;
-        }
-        return Collections.unmodifiableList(additionalNamespaces);
-    }
-
-    /**
-     * Returns the XPath 1.0 string value of this element, which is the
-     * complete, ordered content of all text node descendants of this element
-     * (i&#46;e&#46; the text that's left after all references are resolved
-     * and all other markup is stripped out.)
-     *
-     * @return a concatentation of all text node descendants
-     */
-    public String getValue() {
-        StringBuffer buffer = new StringBuffer();
-
-        Iterator itr = getContent().iterator();
-        while (itr.hasNext()) {
-            Content child = (Content) itr.next();
-            if (child instanceof Element || child instanceof Text) {
-                buffer.append(child.getValue());
-            }
-        }
-        return buffer.toString();
-    }
-
-    /**
-     * Returns whether this element is a root element. This can be used in
-     * tandem with {@link #getParent} to determine if an element has any
-     * "attachments" to a parent element or document.
-     *
-     * @return                     whether this is a root element
-     */
-    public boolean isRootElement() {
-        return parent instanceof Document;
-    }
-
-    public int getContentSize() {
-        return content.size();
-    }
-
-    public int indexOf(Content child) {
-        return content.indexOf(child);
-    }
-
-//    private int indexOf(int start, Filter filter) {
-//        int size = getContentSize();
-//        for (int i = start; i < size; i++) {
-//            if (filter.matches(getContent(i))) {
-//                return i;
-//            }
-//        }
-//        return -1;
-//    }
-
-
-    /**
-     * Returns the textual content directly held under this element as a string.
-     * This includes all text within this single element, including whitespace
-     * and CDATA sections if they exist. It's essentially the concatenation of
-     * all {@link Text} and {@link CDATA} nodes returned by {@link #getContent}.
-     * The call does not recurse into child elements. If no textual value exists
-     * for the element, an empty string is returned.
-     *
-     * @return                     text content for this element, or empty
-     *                             string if none
-     */
-    public String getText() {
-        if (content.size() == 0) {
-            return "";
-        }
-
-        // If we hold only a Text or CDATA, return it directly
-        if (content.size() == 1) {
-            Object obj = content.get(0);
-            if (obj instanceof Text) {
-                return ((Text) obj).getText();
-            } else {
-                return "";
-            }
-        }
-
-        // Else build String up
-        StringBuffer textContent = new StringBuffer();
-        boolean hasText = false;
-
-        for (int i = 0; i < content.size(); i++) {
-            Object obj = content.get(i);
-            if (obj instanceof Text) {
-                textContent.append(((Text) obj).getText());
-                hasText = true;
-            }
-        }
-
-        if (!hasText) {
-            return "";
-        }
-        else {
-            return textContent.toString();
-        }
-    }
-
-    /**
-     * Returns the textual content of this element with all surrounding
-     * whitespace removed. If no textual value exists for the element, or if
-     * only whitespace exists, the empty string is returned.
-     *
-     * @return                     trimmed text content for this element, or
-     *                             empty string if none
-     */
-    public String getTextTrim() {
-        return getText().trim();
-    }
-
-    /**
-     * Returns the textual content of this element with all surrounding
-     * whitespace removed and internal whitespace normalized to a single space.
-     * If no textual value exists for the element, or if only whitespace exists,
-     * the empty string is returned.
-     *
-     * @return                     normalized text content for this element, or
-     *                             empty string if none
-     */
-    public String getTextNormalize() {
-        return Text.normalizeString(getText());
-    }
-
-    /**
-     * Returns the textual content of the named child element, or null if
-     * there's no such child. This method is a convenience because calling
-     * <code>getChild().getText()</code> can throw a NullPointerException.
-     *
-     * @param  name                the name of the child
-     * @return                     text content for the named child, or null if
-     *                             no such child
-     */
-    public String getChildText(String name) {
-        Element child = getChild(name);
-        if (child == null) {
-            return null;
-        }
-        return child.getText();
-    }
-
-    /**
-     * Returns the trimmed textual content of the named child element, or null
-     * if there's no such child. See <code>{@link #getTextTrim()}</code> for
-     * details of text trimming.
-     *
-     * @param  name                the name of the child
-     * @return                     trimmed text content for the named child, or
-     *                             null if no such child
-     */
-    public String getChildTextTrim(String name) {
-        Element child = getChild(name);
-        if (child == null) {
-            return null;
-        }
-        return child.getTextTrim();
-    }
-
-    /**
-     * Returns the normalized textual content of the named child element, or
-     * null if there's no such child. See <code>{@link
-     * #getTextNormalize()}</code> for details of text normalizing.
-     *
-     * @param  name                the name of the child
-     * @return                     normalized text content for the named child,
-     *                             or null if no such child
-     */
-    public String getChildTextNormalize(String name) {
-        Element child = getChild(name);
-        if (child == null) {
-            return null;
-        }
-        return child.getTextNormalize();
-    }
-
-    /**
-     * Returns the textual content of the named child element, or null if
-     * there's no such child.
-     *
-     * @param  name                the name of the child
-     * @param  ns                  the namespace of the child
-     * @return                     text content for the named child, or null if
-     *                             no such child
-     */
-    public String getChildText(String name, Namespace ns) {
-        Element child = getChild(name, ns);
-        if (child == null) {
-            return null;
-        }
-        return child.getText();
-    }
-
-    /**
-     * Returns the trimmed textual content of the named child element, or null
-     * if there's no such child.
-     *
-     * @param  name                the name of the child
-     * @param  ns                  the namespace of the child
-     * @return                     trimmed text content for the named child, or
-     *                             null if no such child
-     */
-    public String getChildTextTrim(String name, Namespace ns) {
-        Element child = getChild(name, ns);
-        if (child == null) {
-            return null;
-        }
-        return child.getTextTrim();
-    }
-
-    /**
-     * Returns the normalized textual content of the named child element, or
-     * null if there's no such child.
-     *
-     * @param  name                the name of the child
-     * @param  ns                  the namespace of the child
-     * @return                     normalized text content for the named child,
-     *                             or null if no such child
-     */
-    public String getChildTextNormalize(String name, Namespace ns) {
-        Element child = getChild(name, ns);
-        if (child == null) {
-            return null;
-        }
-        return child.getTextNormalize();
-    }
-
-    /**
-     * Sets the content of the element to be the text given. All existing text
-     * content and non-text context is removed. If this element should have both
-     * textual content and nested elements, use <code>{@link #setContent}</code>
-     * instead. Setting a null text value is equivalent to setting an empty
-     * string value.
-     *
-     * @param  text                 new text content for the element
-     * @return                      the target element
-     * @throws IllegalDataException if the assigned text contains an illegal
-     *                              character such as a vertical tab (as
-     *                              determined by {@link
-     *                              org.jdom.Verifier#checkCharacterData})
-     */
-    public Element setText(String text) {
-        content.clear();
-
-        if (text != null) {
-            addContent(new Text(text));
-        }
-
-        return this;
-    }
-
-    /**
-     * This returns the full content of the element as a List which
-     * may contain objects of type <code>Text</code>, <code>Element</code>,
-     * <code>Comment</code>, <code>ProcessingInstruction</code>,
-     * <code>CDATA</code>, and <code>EntityRef</code>.
-     * The List returned is "live" in document order and modifications
-     * to it affect the element's actual contents.  Whitespace content is
-     * returned in its entirety.
-     *
-     * <p>
-     * Sequential traversal through the List is best done with an Iterator
-     * since the underlying implement of List.size() may require walking the
-     * entire list.
-     * </p>
-     *
-     * @return a <code>List</code> containing the mixed content of the
-     *         element: may contain <code>Text</code>,
-     *         <code>{@link Element}</code>, <code>{@link Comment}</code>,
-     *         <code>{@link ProcessingInstruction}</code>,
-     *         <code>{@link CDATA}</code>, and
-     *         <code>{@link EntityRef}</code> objects.
-     */
-    public List getContent() {
-        return content;
-    }
-
-    /**
-     * Return a filter view of this <code>Element</code>'s content.
-     *
-     * <p>
-     * Sequential traversal through the List is best done with a Iterator
-     * since the underlying implement of List.size() may require walking the
-     * entire list.
-     * </p>
-     *
-     * @param filter <code>Filter</code> to apply
-     * @return <code>List</code> - filtered Element content
-     */
-    public List getContent(Filter filter) {
-        return content.getView(filter);
-    }
-
-    /**
-     * Removes all child content from this parent.
-     *
-     * @return list of the old children detached from this parent
-     */
-    public List removeContent() {
-        List old = new ArrayList(content);
-        content.clear();
-        return old;
-    }
-
-    /**
-     * Remove all child content from this parent matching the supplied filter.
-     *
-     * @param filter filter to select which content to remove
-     * @return list of the old children detached from this parent
-     */
-    public List removeContent(Filter filter) {
-        List old = new ArrayList();
-        Iterator itr = content.getView(filter).iterator();
-        while (itr.hasNext()) {
-            Content child = (Content) itr.next();
-            old.add(child);
-            itr.remove();
-        }
-        return old;
-    }
-
-    /**
-     * This sets the content of the element.  The supplied List should
-     * contain only objects of type <code>Element</code>, <code>Text</code>,
-     * <code>CDATA</code>, <code>Comment</code>,
-     * <code>ProcessingInstruction</code>, and <code>EntityRef</code>.
-     *
-     * <p>
-     * When all objects in the supplied List are legal and before the new
-     * content is added, all objects in the old content will have their
-     * parentage set to null (no parent) and the old content list will be
-     * cleared. This has the effect that any active list (previously obtained
-     * with a call to {@link #getContent} or {@link #getChildren}) will also
-     * change to reflect the new content.  In addition, all objects in the
-     * supplied List will have their parentage set to this element, but the
-     * List itself will not be "live" and further removals and additions will
-     * have no effect on this elements content. If the user wants to continue
-     * working with a "live" list, then a call to setContent should be
-     * followed by a call to {@link #getContent} or {@link #getChildren} to
-     * obtain a "live" version of the content.
-     * </p>
-     *
-     * <p>
-     * Passing a null or empty List clears the existing content.
-     * </p>
-     *
-     * <p>
-     * In event of an exception the original content will be unchanged and
-     * the objects in the supplied content will be unaltered.
-     * </p>
-     *
-     * @param newContent <code>List</code> of content to set
-     * @return this element modified
-     * @throws IllegalAddException if the List contains objects of
-     *         illegal types or with existing parentage.
-     */
-    public Element setContent(Collection newContent) {
-        content.clearAndSet(newContent);
-        return this;
-    }
-
-    /**
-     * Replace the current child the given index with the supplied child.
-     * <p>
-     * In event of an exception the original content will be unchanged and
-     * the supplied child will be unaltered.
-     * </p>
-     *
-     * @param index - index of child to replace.
-     * @param child - child to add.
-     * @return element on which this method was invoked
-     * @throws IllegalAddException if the supplied child is already attached
-     *                             or not legal content for this parent.
-     * @throws IndexOutOfBoundsException if index is negative or greater
-     *         than the current number of children.
-     */
-    public Element setContent(int index, Content child) {
-        content.set(index, child);
-        return this;
-    }
-
-    /**
-     * Replace the child at the given index whith the supplied
-     * collection.
-     * <p>
-     * In event of an exception the original content will be unchanged and
-     * the content in the supplied collection will be unaltered.
-     * </p>
-     *
-     * @param index - index of child to replace.
-     * @param collection - collection of content to add.
-     * @return object on which this method was invoked
-     * @throws IllegalAddException if the collection contains objects of
-     *         illegal types.
-     * @throws IndexOutOfBoundsException if index is negative or greater
-     *         than the current number of children.
-     */
-    public Parent setContent(int index, Collection collection) {
-        content.remove(index);
-        content.addAll(index, collection);
-        return this;
-    }
-
-    /**
-     * This adds text content to this element.  It does not replace the
-     * existing content as does <code>setText()</code>.
-     *
-     * @param str <code>String</code> to add
-     * @return this element modified
-     * @throws IllegalDataException if <code>str</code> contains an
-     *         illegal character such as a vertical tab (as determined
-     *         by {@link org.jdom.Verifier#checkCharacterData})
-     */
-    public Element addContent(String str) {
-        return addContent(new Text(str));
-    }
-
-    /**
-     * Appends the child to the end of the element's content list.
-     *
-     * @param child   child to append to end of content list
-     * @return        the element on which the method was called
-     * @throws IllegalAddException if the given child already has a parent.     */
-    public Element addContent(Content child) {
-        content.add(child);
-        return this;
-    }
-
-    /**
-     * Appends all children in the given collection to the end of
-     * the content list.  In event of an exception during add the
-     * original content will be unchanged and the objects in the supplied
-     * collection will be unaltered.
-     *
-     * @param collection collection to append
-     * @return           the element on which the method was called
-     * @throws IllegalAddException if any item in the collection
-     *         already has a parent or is of an inappropriate type.
-     */
-    public Element addContent(Collection collection) {
-        content.addAll(collection);
-        return this;
-    }
-
-    /**
-     * Inserts the child into the content list at the given index.
-     *
-     * @param index location for adding the collection
-     * @param child      child to insert
-     * @return           the parent on which the method was called
-     * @throws IndexOutOfBoundsException if index is negative or beyond
-     *         the current number of children
-     * @throws IllegalAddException if the given child already has a parent.
-     */
-    public Element addContent(int index, Content child) {
-        content.add(index, child);
-        return this;
-    }
-
-    /**
-     * Inserts the content in a collection into the content list
-     * at the given index.  In event of an exception the original content
-     * will be unchanged and the objects in the supplied collection will be
-     * unaltered.
-     *
-     * @param index location for adding the collection
-     * @param c  collection to insert
-     * @return            the parent on which the method was called
-     * @throws IndexOutOfBoundsException if index is negative or beyond
-     *         the current number of children
-     * @throws IllegalAddException if any item in the collection
-     *         already has a parent or is of an inappropriate type.
-     */
-    public Element addContent(int index, Collection c) {
-        content.addAll(index, c);
-        return this;
-    }
-
-    public List cloneContent() {
-        int size = getContentSize();
-        List list = new ArrayList(size);
-        for (int i = 0; i < size; i++) {
-            Content child = getContent(i);
-            list.add(child.clone());
-        }
-        return list;
-    }
-
-    public Content getContent(int index) {
-        return (Content) content.get(index);
-    }
-
-//    public Content getChild(Filter filter) {
-//        int i = indexOf(0, filter);
-//        return (i < 0) ? null : getContent(i);
-//    }
-
-    public boolean removeContent(Content child) {
-        return content.remove(child);
-    }
-
-    public Content removeContent(int index) {
-        return (Content) content.remove(index);
-    }
-
-    /**
-     * Set this element's content to be the supplied child.
-     * <p>
-     * If the supplied child is legal content for this parent and before
-     * it is added, all content in the current content list will
-     * be cleared and all current children will have their parentage set to
-     * null.
-     * <p>
-     * This has the effect that any active list (previously obtained with
-     * a call to one of the {@link #getContent} methods will also change
-     * to reflect the new content.  In addition, all content in the supplied
-     * collection will have their parentage set to this parent.  If the user
-     * wants to continue working with a <b>"live"</b> list of this parent's
-     * child, then a call to setContent should be followed by a call to one
-     * of the {@link #getContent} methods to obtain a <b>"live"</b>
-     * version of the children.
-     * <p>
-     * Passing a null child clears the existing content.
-     * <p>
-     * In event of an exception the original content will be unchanged and
-     * the supplied child will be unaltered.
-     *
-     * @param child new content to replace existing content
-     * @return           the parent on which the method was called
-     * @throws IllegalAddException if the supplied child is already attached
-     *                             or not legal content for an Element
-     */
-    public Element setContent(Content child) {
-        content.clear();
-        content.add(child);
-        return this;
-    }
-
-
-    /**
-     * Determines if this element is the ancestor of another element.
-     *
-     * @param element <code>Element</code> to check against
-     * @return <code>true</code> if this element is the ancestor of the
-     *         supplied element
-     */
-    public boolean isAncestor(Element element) {
-        Object p = element.getParent();
-        while (p instanceof Element) {
-            if (p == this) {
-                return true;
-            }
-            p = ((Element) p).getParent();
-        }
-        return false;
-    }
-
-    /**
-     * <p>
-     * This returns the complete set of attributes for this element, as a
-     * <code>List</code> of <code>Attribute</code> objects in no particular
-     * order, or an empty list if there are none.
-     * The returned list is "live" and changes to it affect the
-     * element's actual attributes.
-     * </p>
-     *
-     * @return attributes for the element
-     */
-    public List getAttributes() {
-        return attributes;
-    }
-
-    /**
-     * <p>
-     * This returns the attribute for this element with the given name
-     * and within no namespace, or null if no such attribute exists.
-     * </p>
-     *
-     * @param name name of the attribute to return
-     * @return attribute for the element
-     */
-    public Attribute getAttribute(String name) {
-        return getAttribute(name, Namespace.NO_NAMESPACE);
-    }
-
-    /**
-     * <p>
-     * This returns the attribute for this element with the given name
-     * and within the given Namespace, or null if no such attribute exists.
-     * </p>
-     *
-     * @param name name of the attribute to return
-     * @param ns <code>Namespace</code> to search within
-     * @return attribute for the element
-     */
-    public Attribute getAttribute(String name, Namespace ns) {
-        return (Attribute) attributes.get(name, ns);
-    }
-
-    /**
-     * <p>
-     * This returns the attribute value for the attribute with the given name
-     * and within no namespace, null if there is no such attribute, and the
-     * empty string if the attribute value is empty.
-     * </p>
-     *
-     * @param name name of the attribute whose value to be returned
-     * @return the named attribute's value, or null if no such attribute
-     */
-    public String getAttributeValue(String name) {
-        return getAttributeValue(name, Namespace.NO_NAMESPACE);
-    }
-
-    /**
-     * <p>
-     * This returns the attribute value for the attribute with the given name
-     * and within no namespace, or the passed-in default if there is no
-     * such attribute.
-     * </p>
-     *
-     * @param name name of the attribute whose value to be returned
-     * @param def a default value to return if the attribute does not exist
-     * @return the named attribute's value, or the default if no such attribute
-     */
-    public String getAttributeValue(String name, String def) {
-        return getAttributeValue(name, Namespace.NO_NAMESPACE, def);
-    }
-
-    /**
-     * <p>
-     * This returns the attribute value for the attribute with the given name
-     * and within the given Namespace, null if there is no such attribute, and
-     * the empty string if the attribute value is empty.
-     * </p>
-     *
-     * @param name name of the attribute whose valud is to be returned
-     * @param ns <code>Namespace</code> to search within
-     * @return the named attribute's value, or null if no such attribute
-     */
-    public String getAttributeValue(String name, Namespace ns) {
-        return getAttributeValue(name, ns, null);
-    }
-
-    /**
-     * <p>
-     * This returns the attribute value for the attribute with the given name
-     * and within the given Namespace, or the passed-in default if there is no
-     * such attribute.
-     * </p>
-     *
-     * @param name name of the attribute whose valud is to be returned
-     * @param ns <code>Namespace</code> to search within
-     * @param def a default value to return if the attribute does not exist
-     * @return the named attribute's value, or the default if no such attribute
-     */
-    public String getAttributeValue(String name, Namespace ns, String def) {
-        Attribute attribute = (Attribute) attributes.get(name, ns);
-        return (attribute == null) ? def : attribute.getValue();
-    }
-
-    /**
-     * <p>
-     * This sets the attributes of the element.  The supplied List should
-     * contain only objects of type <code>Attribute</code>.
-     * </p>
-     *
-     * <p>
-     * When all objects in the supplied List are legal and before the new
-     * attributes are added, all old attributes will have their
-     * parentage set to null (no parent) and the old attribute list will be
-     * cleared. This has the effect that any active attribute list (previously
-     * obtained with a call to {@link #getAttributes}) will also change to
-     * reflect the new attributes.  In addition, all attributes in the supplied
-     * List will have their parentage set to this element, but the List itself
-     * will not be "live" and further removals and additions will have no
-     * effect on this elements attributes. If the user wants to continue
-     * working with a "live" attribute list, then a call to setAttributes
-     * should be followed by a call to {@link #getAttributes} to obtain a
-     * "live" version of the attributes.
-     * </p>
-     *
-     * <p>
-     * Passing a null or empty List clears the existing attributes.
-     * </p>
-     *
-     * <p>
-     * In cases where the List contains duplicate attributes, only the last
-     * one will be retained.  This has the same effect as calling
-     * {@link #setAttribute(Attribute)} sequentially.
-     * </p>
-     *
-     * <p>
-     * In event of an exception the original attributes will be unchanged and
-     * the attributes in the supplied attributes will be unaltered.
-     * </p>
-     *
-     * @param newAttributes <code>List</code> of attributes to set
-     * @return this element modified
-     * @throws IllegalAddException if the List contains objects
-     *         that are not instances of <code>Attribute</code>,
-     *         or if any of the <code>Attribute</code> objects have
-     *         conflicting namespace prefixes.
-     */
-    public Element setAttributes(List newAttributes) {
-        attributes.clearAndSet(newAttributes);
-        return this;
-    }
-
-    /**
-     * <p>
-     * This sets an attribute value for this element.  Any existing attribute
-     * with the same name and namespace URI is removed.
-     * </p>
-     *
-     * @param name name of the attribute to set
-     * @param value value of the attribute to set
-     * @return this element modified
-     * @throws IllegalNameException if the given name is illegal as an
-     *         attribute name.
-     * @throws IllegalDataException if the given attribute value is
-     *         illegal character data (as determined by
-     *         {@link org.jdom.Verifier#checkCharacterData}).
-     */
-    public Element setAttribute(String name, String value) {
-        return setAttribute(new Attribute(name, value));
-    }
-
-    /**
-     * <p>
-     * This sets an attribute value for this element.  Any existing attribute
-     * with the same name and namespace URI is removed.
-     * </p>
-     *
-     * @param name name of the attribute to set
-     * @param value value of the attribute to set
-     * @param ns namespace of the attribute to set
-     * @return this element modified
-     * @throws IllegalNameException if the given name is illegal as an
-     *         attribute name, or if the namespace is an unprefixed default
-     *         namespace
-     * @throws IllegalDataException if the given attribute value is
-     *         illegal character data (as determined by
-     *         {@link org.jdom.Verifier#checkCharacterData}).
-     * @throws IllegalAddException if the attribute namespace prefix
-     *         collides with another namespace prefix on the element.
-     */
-    public Element setAttribute(String name, String value, Namespace ns) {
-        return setAttribute(new Attribute(name, value, ns));
-    }
-
-    /**
-     * <p>
-     * This sets an attribute value for this element.  Any existing attribute
-     * with the same name and namespace URI is removed.
-     * </p>
-     *
-     * @param attribute <code>Attribute</code> to set
-     * @return this element modified
-     * @throws IllegalAddException if the attribute being added already has a
-     *   parent or if the attribute namespace prefix collides with another
-     *   namespace prefix on the element.
-     */
-    public Element setAttribute(Attribute attribute) {
-        attributes.add(attribute);
-        return this;
-    }
-
-    /**
-     * <p>
-     * This removes the attribute with the given name and within no
-     * namespace. If no such attribute exists, this method does nothing.
-     * </p>
-     *
-     * @param name name of attribute to remove
-     * @return whether the attribute was removed
-     */
-    public boolean removeAttribute(String name) {
-        return removeAttribute(name, Namespace.NO_NAMESPACE);
-    }
-
-    /**
-     * <p>
-     * This removes the attribute with the given name and within the
-     * given Namespace.  If no such attribute exists, this method does
-     * nothing.
-     * </p>
-     *
-     * @param name name of attribute to remove
-     * @param ns namespace URI of attribute to remove
-     * @return whether the attribute was removed
-     */
-    public boolean removeAttribute(String name, Namespace ns) {
-        return attributes.remove(name, ns);
-    }
-
-    /**
-     * <p>
-     * This removes the supplied Attribute should it exist.
-     * </p>
-     *
-     * @param attribute Reference to the attribute to be removed.
-     * @return whether the attribute was removed
-     */
-    public boolean removeAttribute(Attribute attribute) {
-        return attributes.remove(attribute);
-    }
-
-    /**
-     * <p>
-     *  This returns a <code>String</code> representation of the
-     *    <code>Element</code>, suitable for debugging. If the XML
-     *    representation of the <code>Element</code> is desired,
-     *    {@link org.jdom.output.XMLOutputter#outputString(Element)}
-     *    should be used.
-     * </p>
-     *
-     * @return <code>String</code> - information about the
-     *         <code>Element</code>
-     */
-    public String toString() {
-        StringBuffer stringForm = new StringBuffer(64)
-            .append("[Element: <")
-            .append(getQualifiedName());
-
-        String nsuri = getNamespaceURI();
-        if (!nsuri.equals("")) {
-            stringForm
-            .append(" [Namespace: ")
-            .append(nsuri)
-            .append("]");
-        }
-        stringForm.append("/>]");
-
-        return stringForm.toString();
-    }
-
-    /**
-     * <p>
-     *  This returns a deep clone of this element.
-     *  The new element is detached from its parent, and getParent()
-     *  on the clone will return null.
-     * </p>
-     *
-     * @return the clone of this element
-     */
-    public Object clone() {
-
-        // Ken Rune Helland <kenh@csc.no> is our local clone() guru
-
-        Element element = null;
-
-        element = (Element) super.clone();
-
-        // name and namespace are references to immutable objects
-        // so super.clone() handles them ok
-
-        // Reference to parent is copied by super.clone()
-        // (Object.clone()) so we have to remove it
-        // Actually, super is a Content, which has already detached in the clone().
-        // element.parent = null;
-
-        // Reference to content list and attribute lists are copyed by
-        // super.clone() so we set it new lists if the original had lists
-        element.content = new ContentList(element);
-        element.attributes = new AttributeList(element);
-
-        // Cloning attributes
-        if (attributes != null) {
-            for (int i = 0; i < attributes.size(); i++) {
-                Object obj = attributes.get(i);
-                Attribute attribute = (Attribute)((Attribute)obj).clone();
-                element.attributes.add(attribute);
-            }
-        }
-
-        // Cloning additional namespaces
-        if (additionalNamespaces != null) {
-            int additionalSize = additionalNamespaces.size();
-            element.additionalNamespaces = new ArrayList(additionalSize);
-            for (int i = 0; i < additionalSize; i++) {
-                Object additional = additionalNamespaces.get(i);
-                element.additionalNamespaces.add(additional);
-            }
-        }
-
-        // Cloning content
-        if (content != null) {
-            for (int i = 0; i < content.size(); i++) {
-                Object obj = content.get(i);
-                if (obj instanceof Element) {
-                    Element elt = (Element)((Element)obj).clone();
-                    element.content.add(elt);
-                }  else if (obj instanceof CDATA) {
-                    CDATA cdata = (CDATA)((CDATA)obj).clone();
-                    element.content.add(cdata);
-                } else if (obj instanceof Text) {
-                    Text text = (Text)((Text)obj).clone();
-                    element.content.add(text);
-                } else if (obj instanceof Comment) {
-                    Comment comment = (Comment)((Comment)obj).clone();
-                    element.content.add(comment);
-                } else if (obj instanceof ProcessingInstruction) {
-                    ProcessingInstruction pi = (ProcessingInstruction)
-                        ((ProcessingInstruction)obj).clone();
-                    element.content.add(pi);
-                } else if (obj instanceof EntityRef) {
-                    EntityRef entity = (EntityRef)((EntityRef)obj).clone();
-                    element.content.add(entity);
-                }
-            }
-        }
-
-        // Handle additional namespaces
-        if (additionalNamespaces != null) {
-            // Avoid additionalNamespaces.clone() because List isn't Cloneable
-            element.additionalNamespaces = new ArrayList();
-            element.additionalNamespaces.addAll(additionalNamespaces);
-        }
-
-        return element;
-    }
-
-    // Support a custom Namespace serialization so no two namespace
-    // object instances may exist for the same prefix/uri pair
-    private void writeObject(ObjectOutputStream out) throws IOException {
-
-        out.defaultWriteObject();
-
-        // We use writeObject() and not writeUTF() to minimize space
-        // This allows for writing pointers to already written strings
-        out.writeObject(namespace.getPrefix());
-        out.writeObject(namespace.getURI());
-
-        if (additionalNamespaces == null) {
-            out.write(0);
-        }
-        else {
-            int size = additionalNamespaces.size();
-            out.write(size);
-            for (int i = 0; i < size; i++) {
-                Namespace additional = (Namespace) additionalNamespaces.get(i);
-                out.writeObject(additional.getPrefix());
-                out.writeObject(additional.getURI());
-            }
-        }
-    }
-
-    private void readObject(ObjectInputStream in)
-        throws IOException, ClassNotFoundException {
-
-        in.defaultReadObject();
-
-        namespace = Namespace.getNamespace(
-            (String)in.readObject(), (String)in.readObject());
-
-        int size = in.read();
-
-        if (size != 0) {
-            additionalNamespaces = new ArrayList(size);
-            for (int i = 0; i < size; i++) {
-                Namespace additional = Namespace.getNamespace(
-                    (String)in.readObject(), (String)in.readObject());
-                additionalNamespaces.add(additional);
-            }
-        }
-    }
-
-    /**
-     * Returns an iterator that walks over all descendants in document order.
-     *
-     * @return an iterator to walk descendants
-     */
-    public Iterator getDescendants() {
-        return new DescendantIterator(this);
-    }
-
-    /**
-     * Returns an iterator that walks over all descendants in document order
-     * applying the Filter to return only elements that match the filter rule.
-     * With filters you can match only Elements, only Comments, Elements or
-     * Comments, only Elements with a given name and/or prefix, and so on.
-     *
-     * @param filter filter to select which descendants to see
-     * @return an iterator to walk descendants within a filter
-     */
-    public Iterator getDescendants(Filter filter) {
-        return new FilterIterator(new DescendantIterator(this), filter);
-    }
-
-
-
-    /**
-     * This returns a <code>List</code> of all the child elements
-     * nested directly (one level deep) within this element, as
-     * <code>Element</code> objects.  If this target element has no nested
-     * elements, an empty List is returned.  The returned list is "live"
-     * in document order and changes to it affect the element's actual
-     * contents.
-     *
-     * <p>
-     * Sequential traversal through the List is best done with a Iterator
-     * since the underlying implement of List.size() may not be the most
-     * efficient.
-     * </p>
-     *
-     * <p>
-     * No recursion is performed, so elements nested two levels deep
-     * would have to be obtained with:
-     * <pre>
-     * <code>
-     *   Iterator itr = (currentElement.getChildren()).iterator();
-     *   while(itr.hasNext()) {
-     *     Element oneLevelDeep = (Element)itr.next();
-     *     List twoLevelsDeep = oneLevelDeep.getChildren();
-     *     // Do something with these children
-     *   }
-     * </code>
-     * </pre>
-     * </p>
-     *
-     * @return list of child <code>Element</code> objects for this element
-     */
-    public List getChildren() {
-        return content.getView(new ElementFilter());
-    }
-
-    /**
-     * This returns a <code>List</code> of all the child elements
-     * nested directly (one level deep) within this element with the given
-     * local name and belonging to no namespace, returned as
-     * <code>Element</code> objects.  If this target element has no nested
-     * elements with the given name outside a namespace, an empty List
-     * is returned.  The returned list is "live" in document order
-     * and changes to it affect the element's actual contents.
-     * <p>
-     * Please see the notes for <code>{@link #getChildren}</code>
-     * for a code example.
-     * </p>
-     *
-     * @param name local name for the children to match
-     * @return all matching child elements
-     */
-    public List getChildren(String name) {
-        return getChildren(name, Namespace.NO_NAMESPACE);
-    }
-
-    /**
-     * This returns a <code>List</code> of all the child elements
-     * nested directly (one level deep) within this element with the given
-     * local name and belonging to the given Namespace, returned as
-     * <code>Element</code> objects.  If this target element has no nested
-     * elements with the given name in the given Namespace, an empty List
-     * is returned.  The returned list is "live" in document order
-     * and changes to it affect the element's actual contents.
-     * <p>
-     * Please see the notes for <code>{@link #getChildren}</code>
-     * for a code example.
-     * </p>
-     *
-     * @param name local name for the children to match
-     * @param ns <code>Namespace</code> to search within
-     * @return all matching child elements
-     */
-    public List getChildren(String name, Namespace ns) {
-        return content.getView(new ElementFilter(name, ns));
-    }
-
-    /**
-     * This returns the first child element within this element with the
-     * given local name and belonging to the given namespace.
-     * If no elements exist for the specified name and namespace, null is
-     * returned.
-     *
-     * @param name local name of child element to match
-     * @param ns <code>Namespace</code> to search within
-     * @return the first matching child element, or null if not found
-     */
-    public Element getChild(String name, Namespace ns) {
-        List elements = content.getView(new ElementFilter(name, ns));
-        Iterator i = elements.iterator();
-        if (i.hasNext()) {
-            return (Element) i.next();
-        }
-        return null;
-    }
-
-    /**
-     * This returns the first child element within this element with the
-     * given local name and belonging to no namespace.
-     * If no elements exist for the specified name and namespace, null is
-     * returned.
-     *
-     * @param name local name of child element to match
-     * @return the first matching child element, or null if not found
-     */
-    public Element getChild(String name) {
-        return getChild(name, Namespace.NO_NAMESPACE);
-    }
-
-    /**
-     * <p>
-     * This removes the first child element (one level deep) with the
-     * given local name and belonging to no namespace.
-     * Returns true if a child was removed.
-     * </p>
-     *
-     * @param name the name of child elements to remove
-     * @return whether deletion occurred
-     */
-    public boolean removeChild(String name) {
-        return removeChild(name, Namespace.NO_NAMESPACE);
-    }
-
-    /**
-     * <p>
-     * This removes the first child element (one level deep) with the
-     * given local name and belonging to the given namespace.
-     * Returns true if a child was removed.
-     * </p>
-     *
-     * @param name the name of child element to remove
-     * @param ns <code>Namespace</code> to search within
-     * @return whether deletion occurred
-     */
-    public boolean removeChild(String name, Namespace ns) {
-        List old = content.getView(new ElementFilter(name, ns));
-        Iterator i = old.iterator();
-        if (i.hasNext()) {
-            i.next();
-            i.remove();
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * <p>
-     * This removes all child elements (one level deep) with the
-     * given local name and belonging to no namespace.
-     * Returns true if any were removed.
-     * </p>
-     *
-     * @param name the name of child elements to remove
-     * @return whether deletion occurred
-     */
-    public boolean removeChildren(String name) {
-        return removeChildren(name, Namespace.NO_NAMESPACE);
-    }
-
-    /**
-     * <p>
-     * This removes all child elements (one level deep) with the
-     * given local name and belonging to the given namespace.
-     * Returns true if any were removed.
-     * </p>
-     *
-     * @param name the name of child elements to remove
-     * @param ns <code>Namespace</code> to search within
-     * @return whether deletion occurred
-     */
-    public boolean removeChildren(String name, Namespace ns) {
-        boolean deletedSome = false;
-
-        List old = content.getView(new ElementFilter(name, ns));
-        Iterator i = old.iterator();
-        while (i.hasNext()) {
-            i.next();
-            i.remove();
-            deletedSome = true;
-        }
-
-        return deletedSome;
-    }
-
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/EntityRef.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/EntityRef.java
deleted file mode 100644
index 0322474..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/EntityRef.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*--
-
- $Id: EntityRef.java,v 1.1 2009/05/27 21:46:18 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom;
-
-/**
- * An XML entity reference. Methods allow the user to manage its name, public
- * id, and system id.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:18 $
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- * @author  Philip Nelson
- */
-public class EntityRef extends Content {
-
-    private static final String CVS_ID =
-      "@(#) $RCSfile: EntityRef.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:18 $ $Name:  $";
-
-    /** The name of the <code>EntityRef</code> */
-    protected String name;
-
-    /** The PublicID of the <code>EntityRef</code> */
-    protected String publicID;
-
-    /** The SystemID of the <code>EntityRef</code> */
-    protected String systemID;
-
-    /**
-     * Default, no-args constructor for implementations to use if needed.
-     */
-    protected EntityRef() {}
-
-    /**
-     * This will create a new <code>EntityRef</code> with the supplied name.
-     *
-     * @param name <code>String</code> name of element.
-     * @throws IllegalNameException if the given name is not a legal
-     *         XML name.
-     */
-    public EntityRef(String name) {
-        this(name, null, null);
-    }
-
-    /**
-     * This will create a new <code>EntityRef</code>
-     * with the supplied name and system id.
-     *
-     * @param name <code>String</code> name of element.
-     * @param systemID system id of the entity reference being constructed
-     * @throws IllegalNameException if the given name is not a legal
-     *         XML name.
-     * @throws IllegalDataException if the given system ID is not a legal
-     *         system literal.
-     */
-    public EntityRef(String name, String systemID) {
-        this(name, null, systemID);
-    }
-
-    /**
-     * This will create a new <code>EntityRef</code>
-     * with the supplied name, public id, and system id.
-     *
-     * @param name <code>String</code> name of element.
-     * @param publicID public id of the entity reference being constructed
-     * @param systemID system id of the entity reference being constructed
-     * @throws IllegalDataException if the given system ID is not a legal
-     *         system literal or the the given public ID is not a
-     *         legal public ID
-     * @throws IllegalNameException if the given name is not a legal
-     *         XML name.
-     */
-    public EntityRef(String name, String publicID, String systemID) {
-        setName(name);
-        setPublicID(publicID);
-        setSystemID(systemID);
-    }
-
-    /**
-     * This returns the name of the <code>EntityRef</code>.
-     *
-     * @return <code>String</code> - entity name.
-     */
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * Returns the empty string since entity references don't have an XPath
-     * 1.0 string value.
-     * @return the empty string
-     */
-    public String getValue() {
-        return "";  // entity references don't have XPath string values
-    }
-
-    /**
-     * This will return the publid ID of this <code>EntityRef</code>.
-     * If there is no public ID, then this returns <code>null</code>.
-     *
-     * @return public ID of this <code>EntityRef</code>
-     */
-    public String getPublicID() {
-        return publicID;
-    }
-
-    /**
-     * This will return the system ID of this <code>EntityRef</code>.
-     * If there is no system ID, then this returns <code>null</code>.
-     *
-     * @return system ID of this <code>EntityRef</code>
-     */
-    public String getSystemID() {
-        return systemID;
-    }
-
-    /**
-     * This will set the name of this <code>EntityRef</code>.
-     *
-     * @param name new name of the entity
-     * @return this <code>EntityRef</code> modified.
-     * @throws IllegalNameException if the given name is not a legal
-     *         XML name.
-     */
-    public EntityRef setName(String name) {
-        // This can contain a colon so we use checkXMLName()
-        // instead of checkElementName()
-        String reason = Verifier.checkXMLName(name);
-        if (reason != null) {
-            throw new IllegalNameException(name, "EntityRef", reason);
-        }
-        this.name = name;
-        return this;
-    }
-
-    /**
-     * This will set the public ID of this <code>EntityRef</code>.
-     *
-     * @param publicID new public id
-     * @return this <code>EntityRef</code> modified.
-     * @throws IllegalDataException if the given public ID is not a legal
-     *         public ID.
-     */
-    public EntityRef setPublicID(String publicID) {
-        String reason = Verifier.checkPublicID(publicID);
-        if (reason != null) {
-            throw new IllegalDataException(publicID, "EntityRef", reason);
-        }
-        this.publicID = publicID;
-        return this;
-    }
-
-    /**
-     * This will set the system ID of this <code>EntityRef</code>.
-     *
-     * @param systemID new system id
-     * @throws IllegalDataException if the given system ID is not a legal
-     *         system literal.
-     * @return this <code>EntityRef</code> modified.
-     */
-    public EntityRef setSystemID(String systemID) {
-        String reason = Verifier.checkSystemLiteral(systemID);
-        if (reason != null) {
-            throw new IllegalDataException(systemID, "EntityRef", reason);
-        }
-        this.systemID = systemID;
-        return this;
-    }
-
-    /**
-     * This returns a <code>String</code> representation of the
-     * <code>EntityRef</code>, suitable for debugging.
-     *
-     * @return <code>String</code> - information about the
-     *         <code>EntityRef</code>
-     */
-    public String toString() {
-        return new StringBuffer()
-            .append("[EntityRef: ")
-            .append("&")
-            .append(name)
-            .append(";")
-            .append("]")
-            .toString();
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/FilterIterator.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/FilterIterator.java
deleted file mode 100644
index a4612ec..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/FilterIterator.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*--
-
- $Id: FilterIterator.java,v 1.1 2009/05/27 21:46:17 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom;
-
-import java.util.*;
-import org.jdom.filter.*;
-
-/**
- * Traverse a parent's children that match the supplied filter.
- *
- * @author Bradley S. Huffman
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:17 $
- */
-class FilterIterator implements Iterator {
-
-    private Iterator iterator;
-    private Filter filter;
-    private Object nextObject;
-
-    private static final String CVS_ID =
-            "@(#) $RCSfile: FilterIterator.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:17 $ $Name:  $";
-
-    public FilterIterator(Iterator iterator, Filter filter) {
-        if ((iterator == null) || (filter == null)) {
-            throw new IllegalArgumentException("null parameter");
-        }
-        this.iterator = iterator;
-        this.filter = filter;
-    }
-
-    public boolean hasNext() {
-        if (nextObject != null) {
-            return true;
-        }
-
-        while (iterator.hasNext()) {
-            Object obj = iterator.next();
-            if (filter.matches(obj)) {
-                nextObject = obj;
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public Object next() {
-        if (!hasNext()) {
-            throw new NoSuchElementException();
-        }
-
-        Object obj = nextObject;
-        nextObject = null;
-        return obj;
-    }
-
-    public void remove() {
-        // XXX Could cause probs for sure if hasNext() is
-        // called before the remove(), although that's unlikely.
-        iterator.remove();
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/IllegalAddException.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/IllegalAddException.java
deleted file mode 100644
index 89bdf0a..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/IllegalAddException.java
+++ /dev/null
@@ -1,323 +0,0 @@
-/*-- 
-
- $Id: IllegalAddException.java,v 1.1 2009/05/27 21:46:18 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-package org.jdom;
-
-/**
- * Thrown when trying to add a illegal object to a JDOM construct.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:18 $
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- */
-public class IllegalAddException extends IllegalArgumentException {
-
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: IllegalAddException.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:18 $ $Name:  $";
-
-    /**
-     * This will create an <code>Exception</code> indicating
-     * that the addition of the <code>{@link Attribute}</code>
-     * to the <code>{@link Element}</code> is illegal.
-     *
-     * @param base <code>Element</code> that <code>Attribute</code>
-     *        couldn't be added to
-     * @param added <code>Attribute</code> that could not be added
-     * @param reason cause of the problem
-     */
-    IllegalAddException(Element base, Attribute added, String reason) {
-        super(new StringBuffer()
-              .append("The attribute \"")
-              .append(added.getQualifiedName())
-              .append("\" could not be added to the element \"")
-              .append(base.getQualifiedName())
-              .append("\": ")
-              .append(reason)
-              .toString());
-    }
-
-    /**
-     * This will create an <code>Exception</code> indicating
-     * that the addition of the <code>{@link Element}</code>
-     * to parent is illegal.
-     *
-     * @param base <code>Element</code> that the child
-     *        couldn't be added to
-     * @param added <code>Element</code> that could not be added
-     * @param reason cause of the problem
-     */
-    IllegalAddException(Element base, Element added, String reason) {
-        super(new StringBuffer()
-              .append("The element \"")
-              .append(added.getQualifiedName())
-              .append("\" could not be added as a child of \"")
-              .append(base.getQualifiedName())
-              .append("\": ")
-              .append(reason)
-              .toString());
-    }
-
-    /**
-     * This will create an <code>Exception</code> indicating
-     * that the addition of the <code>{@link Element}</code>
-     * to the <code>{@link Document}</code> is illegal.
-     *
-     * @param added <code>Element</code> that could not be added
-     * @param reason cause of the problem
-     */
-    IllegalAddException(Element added, String reason) {
-        super(new StringBuffer()
-              .append("The element \"")
-              .append(added.getQualifiedName())
-              .append("\" could not be added as the root of the document: ")
-              .append(reason)
-              .toString());
-    }
-
-    /**
-     * This will create an <code>Exception</code> indicating
-     * that the addition of the <code>{@link ProcessingInstruction}</code>
-     * to the <code>{@link Element}</code> is illegal.
-     *
-     * @param base <code>Element</code> that the
-     *              <code>ProcessingInstruction</code> couldn't be added to
-     * @param added <code>ProcessingInstruction</code> that could not be added
-     * @param reason cause of the problem
-     */
-    IllegalAddException(Element base, ProcessingInstruction added,
-                               String reason) {
-        super(new StringBuffer()
-              .append("The PI \"")
-              .append(added.getTarget())
-              .append("\" could not be added as content to \"")
-              .append(base.getQualifiedName())
-              .append("\": ")
-              .append(reason)
-              .toString());
-    }
-
-    /**
-     * This will create an <code>Exception</code> indicating
-     * that the addition of the <code>{@link ProcessingInstruction}</code>
-     * to the <code>{@link Document}</code> is illegal.
-     *
-     * @param added <code>ProcessingInstruction</code> that could not be added
-     * @param reason cause of the problem
-     */
-    IllegalAddException(ProcessingInstruction added,
-                               String reason) {
-        super(new StringBuffer()
-              .append("The PI \"")
-              .append(added.getTarget())
-              .append("\" could not be added to the top level of the document: ")
-              .append(reason)
-              .toString());
-    }
-
-    /**
-     * This will create an <code>Exception</code> indicating
-     * that the addition of the <code>{@link Comment}</code>
-     * to the <code>{@link Element}</code> is illegal.
-     *
-     * @param base <code>Element</code> that the <code>Comment</code>
-     *             couldn't be added to
-     * @param added <code>Comment</code> that could not be added
-     * @param reason cause of the problem
-     */
-    IllegalAddException(Element base, Comment added, String reason) {
-        super(new StringBuffer()
-              .append("The comment \"")
-              .append(added.getText())
-              .append("\" could not be added as content to \"")
-              .append(base.getQualifiedName())
-              .append("\": ")
-              .append(reason)
-              .toString());
-    }
-
-
-    /**
-     * This will create an <code>Exception</code> indicating
-     * that the addition of the <code>{@link CDATA}</code>
-     *
-     * @param base <code>Element</code> that the <code>CDATA</code>
-     *             couldn't be added to
-     * @param added <code>CDATA</code> that could not be added
-     * @param reason cause of the problem
-     */
-    IllegalAddException(Element base, CDATA added, String reason) {
-        super(new StringBuffer()
-              .append("The CDATA \"")
-              .append(added.getText())
-              .append("\" could not be added as content to \"")
-              .append(base.getQualifiedName())
-              .append("\": ")
-              .append(reason)
-              .toString());
-    }
-
-
-    /**
-     * This will create an <code>Exception</code> indicating
-     * that the addition of the <code>{@link Text}</code>
-     * to the <code>{@link Element}</code> is illegal.
-     *
-     * @param base <code>Element</code> that the <code>Comment</code>
-     *             couldn't be added to
-     * @param added <code>Text</code> that could not be added
-     * @param reason cause of the problem
-     */
-    IllegalAddException(Element base, Text added, String reason) {
-        super(new StringBuffer()
-              .append("The Text \"")
-              .append(added.getText())
-              .append("\" could not be added as content to \"")
-              .append(base.getQualifiedName())
-              .append("\": ")
-              .append(reason)
-              .toString());
-    }
-
-    /**
-     * This will create an <code>Exception</code> indicating
-     * that the addition of the <code>{@link Comment}</code>
-     * to the <code>{@link Document}</code> is illegal.
-     *
-     * @param added <code>Comment</code> that could not be added
-     * @param reason cause of the problem
-     */
-    IllegalAddException(Comment added, String reason) {
-        super(new StringBuffer()
-              .append("The comment \"")
-              .append(added.getText())
-              .append("\" could not be added to the top level of the document: ")
-              .append(reason)
-              .toString());
-    }
-
-    /**
-     * This will create an <code>Exception</code> indicating
-     * that the addition of the <code>{@link EntityRef}</code>
-     * to the <code>{@link Element}</code> is illegal.
-     *
-     * @param base <code>Element</code> that the <code>EntityRef</code>
-     *             couldn't be added to
-     * @param added <code>EntityRef</code> reference that could not be added
-     * @param reason cause of the problem
-     */
-    IllegalAddException(Element base, EntityRef added, String reason) {
-        super(new StringBuffer()
-              .append("The entity reference\"")
-              .append(added.getName())
-              .append("\" could not be added as content to \"")
-              .append(base.getQualifiedName())
-              .append("\": ")
-              .append(reason)
-              .toString());
-    }
-
-    /**
-     * This will create an <code>Exception</code> indicating
-     * that the addition of the <code>{@link Namespace}</code>
-     * to the <code>{@link Element}</code> is illegal.
-     *
-     * @param base <code>Element</code> that the <code>Namespace</code>
-     *             couldn't be added to
-     * @param added <code>Namespace</code> that could not be added
-     * @param reason cause of the problem
-     */
-    IllegalAddException(Element base, Namespace added, String reason) {
-        super(new StringBuffer()
-              .append("The namespace xmlns")
-              .append((added.getPrefix() == null ||
-                       added.getPrefix().equals("")) ? "=" 
-                                   : ":" + added.getPrefix() + "=")
-              .append("\"")
-              .append(added.getURI())
-              .append("\" could not be added as a namespace to \"")
-              .append(base.getQualifiedName())
-              .append("\": ")
-              .append(reason)
-              .toString());
-    }
-
-    /**
-     * This will create an <code>Exception</code> indicating
-     * that the addition of the <code>{@link DocType}</code>
-     * to the <code>{@link Document}</code> is illegal.
-     *
-     * @param added <code>DocType</code> that could not be added
-     * @param reason cause of the problem
-     */
-    IllegalAddException(DocType added, String reason) {
-        super(new StringBuffer()
-              .append("The DOCTYPE ")
-              .append(added.toString())
-              .append(" could not be added to the document: ")
-              .append(reason)
-              .toString());
-    }
-
-    /**
-     * This will create an <code>Exception</code> with the specified
-     * error message.
-     *
-     * @param reason cause of the problem
-     */
-    public IllegalAddException(String reason) {
-        super(reason);
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/IllegalDataException.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/IllegalDataException.java
deleted file mode 100644
index 326e9ff..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/IllegalDataException.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*-- 
-
- $Id: IllegalDataException.java,v 1.1 2009/05/27 21:46:18 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-package org.jdom;
-
-/**
- * Thrown when illegal text is supplied to a JDOM construct.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:18 $
- * @author  Brett McLaughlin
- * @author  Elliotte Rusty Harold
- */
-public class IllegalDataException extends IllegalArgumentException {
-
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: IllegalDataException.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:18 $ $Name:  $";
-
-    /**
-     * This will create an <code>Exception</code> indicating
-     * that the specified data is illegal for the construct
-     * it was supplied to.
-     *
-     * @param data <code>String</code> data that breaks rules.
-     * @param construct <code>String</code> construct that data is illegal for.
-     * @param reason <code>String</code> message or reason data is illegal.
-     */
-    IllegalDataException(String data, String construct, String reason) {
-        super(new StringBuffer()
-              .append("The data \"")
-              .append(data)
-              .append("\" is not legal for a JDOM ")
-              .append(construct)
-              .append(": ")
-              .append(reason)
-              .append(".")
-              .toString());
-    }
-
-    /**
-     * This will create an <code>Exception</code> indicating
-     * that the specified data is illegal for the construct
-     * it was supplied to.
-     *
-     * @param data <code>String</code> data that breaks rules.
-     * @param construct <code>String</code> construct that data is illegal for.
-     */
-    IllegalDataException(String data, String construct) {
-        super(new StringBuffer()
-              .append("The data \"")
-              .append(data)
-              .append("\" is not legal for a JDOM ")
-              .append(construct)
-              .append(".")
-              .toString());
-    }
-
-    /**
-     * This will create an exceptoin with the specified error message.
-     *
-     * @param reason cause of the problem
-     */
-    public IllegalDataException(String reason) {
-        super(reason);
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/IllegalNameException.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/IllegalNameException.java
deleted file mode 100644
index 82d563e..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/IllegalNameException.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*-- 
-
- $Id: IllegalNameException.java,v 1.1 2009/05/27 21:46:17 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-package org.jdom;
-
-/**
- * Thrown when a name is supplied in construction of a JDOM construct whose
- * where the name breaks XML naming conventions.
- * 
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:17 $
- * @author  Brett McLaughlin
- * @author  Elliotte Rusty Harold
- */
-public class IllegalNameException extends IllegalArgumentException {
-
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: IllegalNameException.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:17 $ $Name:  $";
-
-    /**
-     * This will create an <code>Exception</code> indicating
-     * that the specified name is illegal for the construct
-     * it was supplied to.
-     *
-     * @param name <code>String</code> name that breaks rules.
-     * @param construct <code>String</code> name of JDOM construct
-     *        that <code>name</code> was supplied to.
-     * @param reason <code>String</code> message or reason name is illegal.
-     */
-    IllegalNameException(String name, String construct, String reason) {
-        super(new StringBuffer()
-              .append("The name \"")
-              .append(name)
-              .append("\" is not legal for JDOM/XML ")
-              .append(construct)
-              .append("s: ")
-              .append(reason)
-              .append(".")
-              .toString());
-    }
-
-    /**
-     * This will create an <code>Exception</code> indicating
-     * that the specified name is illegal for the construct
-     * it was supplied to.
-     *
-     * @param name <code>String</code> name that breaks rules.
-     * @param construct <code>String</code> name of JDOM construct
-     *        that <code>name</code> was supplied to.
-     */
-    IllegalNameException(String name, String construct) {
-        super(new StringBuffer()
-              .append("The name \"")
-              .append(name)
-              .append("\" is not legal for JDOM/XML ")
-              .append(construct)
-              .append("s.")
-              .toString());
-    }
-
-    /**
-     * Creates an exception with the specified error message.
-     *
-     * @param reason cause of the problem
-     */
-    public IllegalNameException(String reason) {
-        super(reason);
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/IllegalTargetException.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/IllegalTargetException.java
deleted file mode 100644
index 3abf852..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/IllegalTargetException.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*-- 
-
- $Id: IllegalTargetException.java,v 1.1 2009/05/27 21:46:19 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-package org.jdom;
-
-/**
- * Thrown when a target is supplied in construction of a JDOM {@link
- * ProcessingInstruction}, and that name breaks XML naming conventions.
- * 
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:19 $
- * @author  Brett McLaughlin
- */
-public class IllegalTargetException extends IllegalArgumentException {
-
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: IllegalTargetException.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:19 $ $Name:  $";
-
-    /**
-     * This will create an <code>Exception</code> indicating
-     * that the specified target is illegal for the
-     * <code>{@link ProcessingInstruction}</code> it was supplied to.
-     *
-     * @param target <code>String</code> target that breaks rules.
-     * @param reason <code>String</code> message or reason target is illegal.
-     */
-    IllegalTargetException(String target, String reason) {
-        super(new StringBuffer()
-              .append("The target \"")
-              .append(target)
-              .append("\" is not legal for JDOM/XML Processing Instructions: ")
-              .append(reason)
-              .append(".")
-              .toString());
-    }
-
-    /**
-     * Creates an exception with the specified error message.
-     *
-     * @param reason cause of the problem
-     */
-    public IllegalTargetException(String reason) {
-        super(reason);
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/JDOMException.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/JDOMException.java
deleted file mode 100644
index 39e9103..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/JDOMException.java
+++ /dev/null
@@ -1,339 +0,0 @@
-/*-- 
-
- $Id: JDOMException.java,v 1.1 2009/05/27 21:46:17 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-package org.jdom;
-
-import java.io.*;
-import java.lang.reflect.*;
-import java.rmi.*;
-import java.sql.*;
-
-import org.xml.sax.*;
-
-/**
- * The top level exception that JDOM classes can throw. Its subclasses add
- * specificity to the problems that can occur using JDOM. This single exception
- * can be caught to handle all JDOM specific problems (some methods may throw
- * {@link java.io.IOException} and such).
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:17 $
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- */
-public class JDOMException extends Exception {
-
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: JDOMException.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:17 $ $Name:  $";
-
-    /** A wrapped <code>Throwable</code> */
-    private Throwable cause;
-
-    /**
-     * This will create an <code>Exception</code>.
-     */
-    public JDOMException() {
-        super("Error occurred in JDOM application.");
-    }
-
-    /**
-     * This will create an <code>Exception</code> with the given message.
-     *
-     * @param message <code>String</code> message indicating
-     *                the problem that occurred.
-     */    
-    public JDOMException(String message)  {
-        super(message);
-    }
-
-    /**
-     * This will create an <code>Exception</code> with the given message
-     * and wrap another <code>Exception</code>.  This is useful when
-     * the originating <code>Exception</code> should be held on to.
-     *
-     * @param message <code>String</code> message indicating
-     *                the problem that occurred.
-     * @param cause <code>Throwable</code> that caused this
-     *                  to be thrown.
-     */    
-    public JDOMException(String message, Throwable cause)  {
-        super(message);    
-        this.cause = cause;
-    }    
-
-    /** 
-     * Intializes the cause of this exception to be the specified value.
-     *
-     * @param cause <code>Throwable</code> that caused this
-     *                  to be thrown.
-     * @return a pointer to this throwable
-     */
-    // Created to match the JDK 1.4 Throwable method.
-    public Throwable initCause(Throwable cause)  {
-        this.cause = cause;
-        return this;
-    }    
-
-    /**
-     * This returns the message for the <code>Exception</code>. If
-     * there are one or more nested exceptions, their messages
-     * are appended.
-     *
-     * @return <code>String</code> - message for <code>Exception</code>.
-     */
-    public String getMessage() {
-        // Get this exception's message.
-        String msg = super.getMessage();
-
-        Throwable parent = this;
-        Throwable child;
-        
-        // Look for nested exceptions.
-        while((child = getNestedException(parent)) != null) {
-            // Get the child's message.
-            String msg2 = child.getMessage();
-            
-            // Special case: If a SAXException has no message of its own, but has a 
-            // nested exception, then it returns the nested exception's message as its
-            // message. We don't want to add that message twice.
-            if (child instanceof SAXException) {
-                Throwable grandchild = ((SAXException)child).getException();
-                // If the SAXException tells us that it's message is identical to 
-                // its nested exception's message, then we skip it, so we don't
-                // add it twice.
-                if (grandchild != null && msg2 != null && msg2.equals(grandchild.getMessage())) {
-                    msg2 = null;
-                }
-            }
-
-            // If we found a message for the child exception, we append it.
-            if (msg2 != null) {
-                if (msg != null) {
-                    msg += ": " + msg2;
-                } else {
-                    msg = msg2;
-                }
-            }
-
-            // Any nested JDOMException will append its own children,
-            // so we need to break out of here.
-            if (child instanceof JDOMException) {
-                break;
-            }
-            parent = child;
-        }
-
-        // Return the completed message.
-        return msg;
-    }
-
-    /**
-     * This prints the stack trace of the <code>Exception</code>. If
-     * there is a root cause, the stack trace of the root
-     * <code>Exception</code> is printed right after.
-     */
-    public void printStackTrace() {
-        // Print the stack trace for this exception.
-        super.printStackTrace();
-
-        Throwable parent = this;
-        Throwable child;
-
-        // Print the stack trace for each nested exception.
-        while((child = getNestedException(parent)) != null) {
-            System.err.print("Caused by: ");
-            child.printStackTrace();
-            // Any nested JDOMException will print its own children,
-            // so we need to break out of here.
-            if (child instanceof JDOMException) {
-                break;
-            }
-            parent = child;
-        }
-    }
-
-    /**
-     * Prints the stack trace of the <code>Exception</code> to the given
-     * PrintStream. If there is a root cause, the stack trace of the root
-     * <code>Exception</code> is printed right after.
-     *
-     * @param s PrintStream to print to
-     */
-    public void printStackTrace(PrintStream s) {
-        // Print the stack trace for this exception.
-        super.printStackTrace(s);
-
-        Throwable parent = this;
-        Throwable child;
-
-        // Print the stack trace for each nested exception.
-        while((child = getNestedException(parent)) != null) {
-            s.print("Caused by: ");
-            child.printStackTrace(s);
-            // Any nested JDOMException will print its own children,
-            // so we need to break out of here.
-            if (child instanceof JDOMException) {
-                break;
-            }
-            parent = child;
-        }
-    }
-
-    /**
-     * Prints the stack trace of the <code>Exception</code> to the given
-     * PrintWriter. If there is a root cause, the stack trace of the root
-     * <code>Exception</code> is printed right after.
-     *
-     * @param w PrintWriter to print to
-     */
-    public void printStackTrace(PrintWriter w) {
-        // Print the stack trace for this exception.
-        super.printStackTrace(w);
-
-        Throwable parent = this;
-        Throwable child;
-
-        // Print the stack trace for each nested exception.
-        while((child = getNestedException(parent)) != null) {
-            w.print("Caused by: ");
-            child.printStackTrace(w);
-            // Any nested JDOMException will print its own children,
-            // so we need to break out of here.
-            if (child instanceof JDOMException) {
-                break;
-            }
-            parent = child;
-        }
-    }
-
-    /**
-     * This will return the root cause <code>Throwable</code>, or null
-     * if one does not exist.
-     * 
-     * @return <code>Throwable</code> - the wrapped <code>Throwable</code>.
-     */
-    public Throwable getCause()  {
-        return cause;             
-    }
-
-    // If this Throwable has a nested (child) exception, then we return it.
-    // Otherwise we return null.
-    private static Throwable getNestedException(Throwable parent) {
-        if (parent instanceof JDOMException) {
-            return ((JDOMException)parent).getCause();
-        }
-        
-        if (parent instanceof SAXException) {
-            return ((SAXException)parent).getException();
-        }
-        
-        if (parent instanceof SQLException) {
-            return ((SQLException)parent).getNextException();
-        }
-        
-        if (parent instanceof InvocationTargetException) {
-            return ((InvocationTargetException)parent).getTargetException();
-        }
-        
-        if (parent instanceof ExceptionInInitializerError) {
-            return ((ExceptionInInitializerError)parent).getException();
-        }
-        
-        if (parent instanceof RemoteException) {
-            return ((RemoteException)parent).detail;
-        }
-        
-        // These classes are not part of standard JDK 1.1 or 1.2, so we 
-        // use reflection to access them.
-
-        Throwable nestedException = getNestedException(parent, "javax.naming.NamingException", "getRootCause");
-        if (nestedException != null) {
-            return nestedException;
-        }
-        
-        nestedException = getNestedException(parent, "javax.servlet.ServletException", "getRootCause");
-        if (nestedException != null) {
-            return nestedException;
-        }
-
-        return null;
-    }
-
-    // This method uses reflection to obtain the nest exception of a Throwable. We use reflection
-    // because the desired class may not exist in the currently-running VM.
-    private static Throwable getNestedException(
-                                 Throwable parent, String className, String methodName) {
-        try {
-            // See if this Throwable is of the desired type, by using isAssignableFrom().
-            Class testClass = Class.forName(className);
-            Class objectClass = parent.getClass();
-            if (testClass.isAssignableFrom(objectClass)) {
-                // Use reflection to call the specified method.
-                Class[] argClasses = new Class[0];
-                Method method = testClass.getMethod(methodName, argClasses);
-                Object[] args = new Object[0];
-                return (Throwable)method.invoke(parent, args);
-            }
-        }
-        catch(Exception ex) {
-            // Most likely, the desired class is not available in this VM. That's fine.
-            // Even if it's caused by something else, we don't want to display an error
-            // here, since we're already in the process of trying to display the original
-            // error - another error here will just confuse things.
-        }
-
-        return null;
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/JDOMFactory.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/JDOMFactory.java
deleted file mode 100644
index 1a9d336..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/JDOMFactory.java
+++ /dev/null
@@ -1,338 +0,0 @@
-/*--
-
- $Id: JDOMFactory.java,v 1.1 2009/05/27 21:46:18 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom;
-
-import java.util.*;
-
-/**
- * An interface to be used by builders when constructing JDOM objects. The
- * <code>DefaultJDOMFactory</code> creates the standard top-level JDOM classes
- * (Element, Document, Comment, etc). Another implementation of this factory
- * could be used to create custom classes.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:18 $
- * @author  Ken Rune Holland
- * @author  Phil Nelson
- * @author  Bradley S. Huffman
- */
-public interface JDOMFactory {
-
-    // **** constructing Attributes ****
-
-    /**
-     * <p>
-     * This will create a new <code>Attribute</code> with the
-     *   specified (local) name and value, and in the provided
-     *   <code>{@link org.jdom.Namespace}</code>.
-     * </p>
-     *
-     * @param name <code>String</code> name of <code>Attribute</code>.
-     * @param value <code>String</code> value for new attribute.
-     */
-    public Attribute attribute(String name, String value, Namespace namespace);
-
-    /**
-     * This will create a new <code>Attribute</code> with the
-     * specified (local) name, value, and type, and in the provided
-     * <code>{@link org.jdom.Namespace}</code>.
-     *
-     * @param name <code>String</code> name of <code>Attribute</code>.
-     * @param value <code>String</code> value for new attribute.
-     * @param type <code>int</code> type for new attribute.
-     * @param namespace <code>Namespace</code> namespace for new attribute.
-     */
-    public Attribute attribute(String name, String value,
-                                            int type, Namespace namespace);
-
-    /**
-     * This will create a new <code>Attribute</code> with the
-     * specified (local) name and value, and does not place
-     * the attribute in a <code>{@link org.jdom.Namespace}</code>.
-     * <p>
-     * <b>Note</b>: This actually explicitly puts the
-     * <code>Attribute</code> in the "empty" <code>Namespace</code>
-     * (<code>{@link org.jdom.Namespace#NO_NAMESPACE}</code>).
-     * </p>
-     *
-     * @param name <code>String</code> name of <code>Attribute</code>.
-     * @param value <code>String</code> value for new attribute.
-     */
-    public Attribute attribute(String name, String value);
-
-    /**
-     * This will create a new <code>Attribute</code> with the
-     * specified (local) name, value and type, and does not place
-     * the attribute in a <code>{@link org.jdom.Namespace}</code>.
-     * <p>
-     * <b>Note</b>: This actually explicitly puts the
-     * <code>Attribute</code> in the "empty" <code>Namespace</code>
-     * (<code>{@link org.jdom.Namespace#NO_NAMESPACE}</code>).
-     * </p>
-     *
-     * @param name <code>String</code> name of <code>Attribute</code>.
-     * @param value <code>String</code> value for new attribute.
-     * @param type <code>int</code> type for new attribute.
-     */
-    public Attribute attribute(String name, String value, int type);
-
-    // **** constructing CDATA ****
-
-    /**
-     * This creates the CDATA with the supplied text.
-     *
-     * @param str <code>String</code> content of CDATA.
-     */
-    public CDATA cdata(String str);
-
-    // **** constructing Text ****
-
-    /**
-     * This creates the Text with the supplied text.
-     *
-     * @param str <code>String</code> content of Text.
-     */
-    public Text text(String str);
-
-    // **** constructing Comment ****
-
-    /**
-     * This creates the comment with the supplied text.
-     *
-     * @param text <code>String</code> content of comment.
-     */
-    public Comment comment(String text);
-
-    // **** constructing DocType
-
-    /**
-     * This will create the <code>DocType</code> with
-     * the specified element name and a reference to an
-     * external DTD.
-     *
-     * @param elementName <code>String</code> name of
-     *        element being constrained.
-     * @param publicID <code>String</code> public ID of
-     *        referenced DTD
-     * @param systemID <code>String</code> system ID of
-     *        referenced DTD
-     */
-    public DocType docType(String elementName,
-                           String publicID, String systemID);
-
-    /**
-     * This will create the <code>DocType</code> with
-     * the specified element name and reference to an
-     * external DTD.
-     *
-     * @param elementName <code>String</code> name of
-     *        element being constrained.
-     * @param systemID <code>String</code> system ID of
-     *        referenced DTD
-     */
-    public DocType docType(String elementName, String systemID);
-
-    /**
-     * This will create the <code>DocType</code> with
-     * the specified element name
-     *
-     * @param elementName <code>String</code> name of
-     *        element being constrained.
-     */
-    public DocType docType(String elementName);
-
-    // **** constructing Document
-
-    /**
-     * This will create a new <code>Document</code>,
-     * with the supplied <code>{@link org.jdom.Element}</code>
-     * as the root element and the supplied
-     * <code>{@link org.jdom.DocType}</code> declaration.
-     *
-     * @param rootElement <code>Element</code> for document root.
-     * @param docType     <code>DocType</code> declaration.
-     */
-    public Document document(Element rootElement, DocType docType);
-
-    /**
-     * This will create a new <code>Document</code>,
-     * with the supplied <code>{@link org.jdom.Element}</code>
-     * as the root element and the supplied
-     * <code>{@link org.jdom.DocType}</code> declaration.
-     *
-     * @param rootElement <code>Element</code> for document root.
-     * @param docType <code>DocType</code> declaration.
-     * @param baseURI the URI from which this doucment was loaded.
-     */
-    public Document document(Element rootElement, DocType docType, String baseURI);
-
-    /**
-     * This will create a new <code>Document</code>,
-     * with the supplied <code>{@link org.jdom.Element}</code>
-     * as the root element, and no <code>{@link org.jdom.DocType}</code>
-     * declaration.
-     *
-     * @param rootElement <code>Element</code> for document root
-     */
-    public Document document(Element rootElement);
-
-    // **** constructing Elements ****
-
-    /**
-     * This will create a new <code>Element</code>
-     * with the supplied (local) name, and define
-     * the <code>{@link org.jdom.Namespace}</code> to be used.
-     *
-     * @param name <code>String</code> name of element.
-     * @param namespace <code>Namespace</code> to put element in.
-         */
-    public Element element(String name, Namespace namespace);
-
-    /**
-     * This will create an <code>Element</code> in no
-     * <code>{@link org.jdom.Namespace}</code>.
-     *
-     * @param name <code>String</code> name of element.
-     */
-    public Element element(String name);
-
-    /**
-     * This will create a new <code>Element</code> with
-     * the supplied (local) name, and specifies the URI
-     * of the <code>{@link org.jdom.Namespace}</code> the <code>Element</code>
-     * should be in, resulting it being unprefixed (in the default
-     * namespace).
-     *
-     * @param name <code>String</code> name of element.
-     * @param uri <code>String</code> URI for <code>Namespace</code> element
-     *        should be in.
-     */
-    public Element element(String name, String uri);
-
-    /**
-     * This will create a new <code>Element</code> with
-     * the supplied (local) name, and specifies the prefix and URI
-     * of the <code>{@link org.jdom.Namespace}</code> the <code>Element</code>
-     * should be in.
-     *
-     * @param name <code>String</code> name of element.
-     * @param uri <code>String</code> URI for <code>Namespace</code> element
-     *        should be in.
-     */
-    public Element element(String name, String prefix, String uri);
-
-    // **** constructing ProcessingInstruction ****
-
-    /**
-     * This will create a new <code>ProcessingInstruction</code>
-     * with the specified target and data.
-     *
-     * @param target <code>String</code> target of PI.
-     * @param data <code>Map</code> data for PI, in
-     *             name/value pairs
-     */
-    public ProcessingInstruction processingInstruction(String target,
-                                                       Map data);
-
-    /**
-     * This will create a new <code>ProcessingInstruction</code>
-     * with the specified target and data.
-     *
-     * @param target <code>String</code> target of PI.
-     * @param data <code>String</code> data for PI.
-     */
-    public ProcessingInstruction processingInstruction(String target,
-                                                       String data);
-
-    // **** constructing EntityRef ****
-
-    /**
-     * This will create a new <code>EntityRef</code>
-     * with the supplied name.
-     *
-     * @param name <code>String</code> name of element.
-     */
-    public EntityRef entityRef(String name);
-
-    /**
-     * This will create a new <code>EntityRef</code>
-     * with the supplied name, public ID, and system ID.
-     *
-     * @param name <code>String</code> name of element.
-     * @param publicID <code>String</code> public ID of element.
-     * @param systemID <code>String</code> system ID of element.
-     */
-    public EntityRef entityRef(String name, String publicID, String systemID);
-
-    /**
-     * This will create a new <code>EntityRef</code>
-     * with the supplied name and system ID.
-     *
-     * @param name <code>String</code> name of element.
-     * @param systemID <code>String</code> system ID of element.
-     */
-    public EntityRef entityRef(String name, String systemID);
-
-    // =====================================================================
-    // List manipulation
-    // =====================================================================
-
-    public void addContent(Parent parent, Content content);
-
-    public void setAttribute(Element element, Attribute a);
-
-    public void addNamespaceDeclaration(Element element, Namespace additional);
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/Namespace.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/Namespace.java
deleted file mode 100644
index 8033861..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/Namespace.java
+++ /dev/null
@@ -1,275 +0,0 @@
-/*-- 
-
- $Id: Namespace.java,v 1.1 2009/05/27 21:46:18 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-package org.jdom;
-
-import java.util.*;
-
-/**
- * An XML namespace representation, as well as a factory for creating XML
- * namespace objects. Namespaces are not Serializable, however objects that use
- * namespaces have special logic to handle serialization manually. These classes
- * call the getNamespace() method on deserialization to ensure there is one
- * unique Namespace object for any unique prefix/uri pair.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:18 $
- * @author  Brett McLaughlin
- * @author  Elliotte Rusty Harold
- * @author  Jason Hunter
- * @author  Wesley Biggs
- */
-public final class Namespace {
-
-    // XXX May want to use weak references to keep the maps from growing 
-    // large with extended use
-
-    // XXX We may need to make the namespaces HashMap synchronized with
-    // reader/writer locks or perhaps make Namespace no longer a flyweight.
-    // As written, multiple put() calls may happen from different threads 
-    // concurrently and cause a ConcurrentModificationException. See
-    // http://lists.denveronline.net/lists/jdom-interest/2000-September/003009.html.
-    // No one has ever reported this over the many years, so don't worry yet.
-
-    private static final String CVS_ID =
-      "@(#) $RCSfile: Namespace.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:18 $ $Name:  $";
-
-    /** 
-     * Factory list of namespaces. 
-     * Keys are <i>prefix</i>&amp;<i>URI</i>. 
-     * Values are Namespace objects 
-     */
-    private static HashMap namespaces;
-
-    /** Define a <code>Namespace</code> for when <i>not</i> in a namespace */
-    public static final Namespace NO_NAMESPACE = new Namespace("", "");
-
-    /** Define a <code>Namespace</code> for the standard xml prefix. */
-    public static final Namespace XML_NAMESPACE =
-        new Namespace("xml", "http://www.w3.org/XML/1998/namespace");
-
-    /** The prefix mapped to this namespace */
-    private String prefix;
-
-    /** The URI for this namespace */
-    private String uri;
-
-    /**
-     * This static initializer acts as a factory contructor.
-     * It sets up storage and required initial values.
-     */
-    static {
-        namespaces = new HashMap();
-
-        // Add the "empty" namespace
-        namespaces.put("&", NO_NAMESPACE);
-        namespaces.put("xml&http://www.w3.org/XML/1998/namespace",
-                       XML_NAMESPACE);
-    }
-
-    /**
-     * This will retrieve (if in existence) or create (if not) a 
-     * <code>Namespace</code> for the supplied prefix and URI.
-     *
-     * @param prefix <code>String</code> prefix to map to 
-     *               <code>Namespace</code>.
-     * @param uri <code>String</code> URI of new <code>Namespace</code>.
-     * @return <code>Namespace</code> - ready to use namespace.
-     * @throws IllegalNameException if the given prefix and uri make up
-     *         an illegal namespace name.
-     */
-    public static Namespace getNamespace(String prefix, String uri) {
-        // Sanity checking
-        if ((prefix == null) || (prefix.trim().equals(""))) {
-            prefix = "";
-        }
-        if ((uri == null) || (uri.trim().equals(""))) {
-            uri = "";
-        }
-
-        // Return existing namespace if found. The preexisting namespaces
-        // should all be legal. In other words, an illegal namespace won't
-        // have been placed in this.  Thus we can do this test before
-        // verifying the URI and prefix.
-        String lookup = new StringBuffer(64)
-            .append(prefix).append('&').append(uri).toString();
-        Namespace preexisting = (Namespace) namespaces.get(lookup);
-        if (preexisting != null) {
-            return preexisting;
-        }
-
-        // Ensure proper naming
-        String reason;
-        if ((reason = Verifier.checkNamespacePrefix(prefix)) != null) {
-            throw new IllegalNameException(prefix, "Namespace prefix", reason);
-        }
-        if ((reason = Verifier.checkNamespaceURI(uri)) != null) {
-            throw new IllegalNameException(uri, "Namespace URI", reason);
-        }
-
-        // Unless the "empty" Namespace (no prefix and no URI), require a URI
-        if ((!prefix.equals("")) && (uri.equals(""))) {
-            throw new IllegalNameException("", "namespace",
-                "Namespace URIs must be non-null and non-empty Strings");
-        }
-
-        // Handle XML namespace mislabels. If the user requested the correct
-        // namespace and prefix -- xml, http://www.w3.org/XML/1998/namespace
-        // -- then it was already returned from the preexisting namespaces.
-        // Thus any use of the xml prefix or the
-        // http://www.w3.org/XML/1998/namespace URI at this point must be
-        // incorrect. 
-        if (prefix.equals("xml")) {
-            throw new IllegalNameException(prefix, "Namespace prefix",
-             "The xml prefix can only be bound to " +
-             "http://www.w3.org/XML/1998/namespace");        
-        }
-        // The erratum to Namespaces in XML 1.0 that suggests this 
-        // next check is controversial. Not everyone accepts it. 
-        if (uri.equals("http://www.w3.org/XML/1998/namespace")) {
-            throw new IllegalNameException(uri, "Namespace URI",
-             "The http://www.w3.org/XML/1998/namespace must be bound to " +
-             "the xml prefix.");        
-        }
-
-        // Finally, store and return
-        Namespace ns = new Namespace(prefix, uri);
-        namespaces.put(lookup, ns);
-        return ns;
-    }
-
-    /**
-     * This will retrieve (if in existence) or create (if not) a 
-     * <code>Namespace</code> for the supplied URI, and make it usable 
-     * as a default namespace, as no prefix is supplied.
-     *
-     * @param uri <code>String</code> URI of new <code>Namespace</code>.
-     * @return <code>Namespace</code> - ready to use namespace.
-     */
-    public static Namespace getNamespace(String uri) {
-        return getNamespace("", uri);
-    }
-
-    /**
-     * This constructor handles creation of a <code>Namespace</code> object
-     * with a prefix and URI; it is intentionally left <code>private</code>
-     * so that it cannot be invoked by external programs/code.
-     *
-     * @param prefix <code>String</code> prefix to map to this namespace.
-     * @param uri <code>String</code> URI for namespace.
-     */
-    private Namespace(String prefix, String uri) {
-        this.prefix = prefix;
-        this.uri = uri;
-    }
-
-    /**
-     * This returns the prefix mapped to this <code>Namespace</code>.
-     *
-     * @return <code>String</code> - prefix for this <code>Namespace</code>.
-     */
-    public String getPrefix() {
-        return prefix;
-    }
-
-    /**
-     * This returns the namespace URI for this <code>Namespace</code>.
-     *
-     * @return <code>String</code> - URI for this <code>Namespace</code>.
-     */
-    public String getURI() {
-        return uri;
-    }
-
-    /**
-     * This tests for equality - Two <code>Namespaces</code>
-     * are equal if and only if their URIs are byte-for-byte equals.
-     *
-     * @param ob <code>Object</code> to compare to this <code>Namespace</code>.
-     * @return <code>boolean</code> - whether the supplied object is equal to
-     *         this <code>Namespace</code>.
-     */
-    public boolean equals(Object ob) {
-        if (this == ob) {
-            return true;
-        }
-        if (ob instanceof Namespace) {  // instanceof returns false if null
-            return uri.equals(((Namespace)ob).uri);
-        }
-        return false;
-    }
-
-    /**
-     * This returns a <code>String</code> representation of this 
-     * <code>Namespace</code>, suitable for use in debugging.
-     *
-     * @return <code>String</code> - information about this instance.
-     */
-    public String toString() {
-        return "[Namespace: prefix \"" + prefix + "\" is mapped to URI \"" + 
-               uri + "\"]";
-    }
-
-    /**
-     * This returns a probably unique hash code for the <code>Namespace</code>.
-     * If two namespaces have the same URI, they are equal and have the same
-     * hash code, even if they have different prefixes.
-     *
-     * @return <code>int</code> - hash code for this <code>Namespace</code>.
-     */
-    public int hashCode() {
-        return uri.hashCode();
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/Parent.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/Parent.java
deleted file mode 100644
index 17a5a75..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/Parent.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*--
-
- $Id: Parent.java,v 1.1 2009/05/27 21:46:18 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom;
-
-import java.io.Serializable;
-import java.util.*;
-import org.jdom.filter.Filter;
-
-/**
- * Superclass for JDOM objects which are allowed to contain
- * {@link Content} content.
- *
- * @see org.jdom.Content
- * @see org.jdom.Document
- * @see org.jdom.Element
- *
- * @author Bradley S. Huffman
- * @author Jason Hunter
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:18 $
- */
-public interface Parent extends Cloneable, Serializable {
-
-    /**
-     * Returns the number of children in this parent's content list.
-     * Children may be any {@link Content} type.
-     *
-     * @return number of children
-     */
-    int getContentSize();
-
-    /**
-     * Returns the index of the supplied child in the content list,
-     * or -1 if not a child of this parent.
-     *
-     * @param child  child to search for
-     * @return       index of child, or -1 if not found
-     */
-    int indexOf(Content child);
-
-//    /**
-//     * Starting at the given index (inclusive), returns the index of
-//     * the first child matching the supplied filter, or -1
-//     * if none is found.
-//     *
-//     * @return index of child, or -1 if none found
-//     */
-//    int indexOf(int index, Filter filter);
-
-    /**
-     * Returns a list containing detached clones of this parent's content list.
-     *
-     * @return list of cloned child content
-     */
-    List cloneContent();
-
-    /**
-     * Returns the child at the given index.
-     *
-     * @param index location of desired child
-     * @return child at the given index
-     * @throws IndexOutOfBoundsException if index is negative or beyond
-     *         the current number of children
-     * @throws IllegalStateException if parent is a Document
-     *         and the root element is not set
-     */
-    Content getContent(int index);
-
-    /**
-     * Returns the full content of this parent as a {@link java.util.List}
-     * which contains objects of type {@link Content}. The returned list is
-     * <b>"live"</b> and in document order. Any modifications
-     * to it affect the element's actual contents. Modifications are checked
-     * for conformance to XML 1.0 rules.
-     * <p>
-     * Sequential traversal through the List is best done with an Iterator
-     * since the underlying implement of {@link java.util.List#size} may
-     * require walking the entire list and indexed lookups may require
-     * starting at the beginning each time.
-     *
-     * @return a list of the content of the parent
-     * @throws IllegalStateException if parent is a Document
-     *         and the root element is not set
-     */
-    List getContent();
-
-    /**
-     * Returns as a {@link java.util.List} the content of
-     * this parent that matches the supplied filter. The returned list is
-     * <b>"live"</b> and in document order. Any modifications to it affect
-     * the element's actual contents. Modifications are checked for
-     * conformance to XML 1.0 rules.
-     * <p>
-     * Sequential traversal through the List is best done with an Iterator
-     * since the underlying implement of {@link java.util.List#size} may
-     * require walking the entire list and indexed lookups may require
-     * starting at the beginning each time.
-     *
-     * @param  filter filter to apply
-     * @return a list of the content of the parent matching the filter
-     * @throws IllegalStateException if parent is a Document
-     *         and the root element is not set
-     */
-    List getContent(Filter filter);
-
-    /**
-     * Removes all content from this parent and returns the detached
-     * children.
-     *
-     * @return list of the old content detached from this parent
-     */
-    List removeContent();
-
-    /**
-     * Removes from this parent all child content matching the given filter
-     * and returns a list of the detached children.
-     *
-     * @param  filter filter to apply
-     * @return list of the detached children matching the filter
-     */
-    List removeContent(Filter filter);
-
-    /**
-     * Removes a single child node from the content list.
-     *
-     * @param  child  child to remove
-     * @return whether the removal occurred
-     */
-    boolean removeContent(Content child);
-
-    /**
-     * Removes and returns the child at the given
-     * index, or returns null if there's no such child.
-     *
-     * @param index index of child to remove
-     * @return detached child at given index or null if no
-     * @throws IndexOutOfBoundsException if index is negative or beyond
-     *             the current number of children
-     */
-    Content removeContent(int index);
-
-    /**
-     * Obtain a deep, unattached copy of this parent and it's children.
-     *
-     * @return a deep copy of this parent and it's children.
-     */
-    Object clone();
-
-    /**
-     * Returns an {@link java.util.Iterator} that walks over all descendants
-     * in document order.
-     *
-     * @return an iterator to walk descendants
-     */
-    Iterator getDescendants();
-
-    /**
-     * Returns an {@link java.util.Iterator} that walks over all descendants
-     * in document order applying the Filter to return only elements that
-     * match the filter rule.  With filters you can match only Elements,
-     * only Comments, Elements or Comments, only Elements with a given name
-     * and/or prefix, and so on.
-     *
-     * @param filter filter to select which descendants to see
-     * @return an iterator to walk descendants that match a filter
-     */
-    Iterator getDescendants(Filter filter);
-
-    /**
-     * Return this parent's parent, or null if this parent is currently
-     * not attached to another parent. This is the same method as in Content but
-     * also added to Parent to allow more easy up-the-tree walking.
-     *
-     * @return this parent's parent or null if none
-     */
-    Parent getParent();
-
-    /**
-     * Return this parent's owning document or null if the branch containing
-     * this parent is currently not attached to a document.
-     *
-     * @return this child's owning document or null if none
-     */
-    Document getDocument();
-
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/ProcessingInstruction.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/ProcessingInstruction.java
deleted file mode 100644
index 8509d09..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/ProcessingInstruction.java
+++ /dev/null
@@ -1,473 +0,0 @@
-/*--
-
- $Id: ProcessingInstruction.java,v 1.1 2009/05/27 21:46:18 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom;
-
-import java.util.*;
-
-/**
- * An XML processing instruction. Methods allow the user to obtain the target of
- * the PI as well as its data. The data can always be accessed as a String or,
- * if the data appears akin to an attribute list, can be retrieved as name/value
- * pairs.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:18 $
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- * @author  Steven Gould
- */
-
-public class ProcessingInstruction extends Content {
-
-    private static final String CVS_ID =
-      "@(#) $RCSfile: ProcessingInstruction.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:18 $ $Name:  $";
-
-    /** The target of the PI */
-    protected String target;
-
-    /** The data for the PI as a String */
-    protected String rawData;
-
-    /** The data for the PI in name/value pairs */
-    protected Map mapData;
-
-    /**
-     * Default, no-args constructor for implementations
-     * to use if needed.
-     */
-    protected ProcessingInstruction() { }
-
-    /**
-     * This will create a new <code>ProcessingInstruction</code>
-     * with the specified target and data.
-     *
-     * @param target <code>String</code> target of PI.
-     * @param data <code>Map</code> data for PI, in
-     *             name/value pairs
-     * @throws IllegalTargetException if the given target is illegal
-     *         as a processing instruction name.
-     */
-    public ProcessingInstruction(String target, Map data) {
-        setTarget(target);
-        setData(data);
-    }
-
-    /**
-     * This will create a new <code>ProcessingInstruction</code>
-     * with the specified target and data.
-     *
-     * @param target <code>String</code> target of PI.
-     * @param data <code>String</code> data for PI.
-     * @throws IllegalTargetException if the given target is illegal
-     *         as a processing instruction name.
-     */
-    public ProcessingInstruction(String target, String data) {
-        setTarget(target);
-        setData(data);
-    }
-
-    /**
-     * This will set the target for the PI.
-     *
-     * @param newTarget <code>String</code> new target of PI.
-     * @return <code>ProcessingInstruction</code> - this PI modified.
-     */
-    public ProcessingInstruction setTarget(String newTarget) {
-        String reason;
-        if ((reason = Verifier.checkProcessingInstructionTarget(newTarget))
-                                    != null) {
-            throw new IllegalTargetException(newTarget, reason);
-        }
-
-        target = newTarget;
-        return this;
-    }
-
-    /**
-     * Returns the XPath 1.0 string value of this element, which is the
-     * data of this PI.
-     *
-     * @return the data of this PI
-     */
-    public String getValue() {
-        return rawData;
-    }
-
-
-    /**
-     * This will retrieve the target of the PI.
-     *
-     * @return <code>String</code> - target of PI.
-     */
-    public String getTarget() {
-        return target;
-    }
-
-    /**
-     * This will return the raw data from all instructions.
-     *
-     * @return <code>String</code> - data of PI.
-     */
-    public String getData() {
-        return rawData;
-    }
-
-    /**
-     * This will return a <code>List</code> containing the names of the
-     * "attribute" style pieces of name/value pairs in this PI's data.
-     *
-     * @return <code>List</code> - the <code>List</code> containing the
-     *         "attribute" names.
-     */
-    public List getPseudoAttributeNames() {
-      Set mapDataSet = mapData.entrySet();
-      List nameList = new ArrayList();
-      for (Iterator i = mapDataSet.iterator(); i.hasNext();) {
-         String wholeSet = (i.next()).toString();
-         String attrName = wholeSet.substring(0,(wholeSet.indexOf("=")));
-         nameList.add(attrName);
-      }
-      return nameList;
-    }
-
-    /**
-     * This will set the raw data for the PI.
-     *
-     * @param data <code>String</code> data of PI.
-     * @return <code>ProcessingInstruction</code> - this PI modified.
-     */
-    public ProcessingInstruction setData(String data) {
-        String reason = Verifier.checkProcessingInstructionData(data);
-        if (reason != null) {
-            throw new IllegalDataException(data, reason);
-        }
-
-        this.rawData = data;
-        this.mapData = parseData(data);
-        return this;
-    }
-
-    /**
-     * This will set the name/value pairs within the passed
-     * <code>Map</code> as the pairs for the data of
-     * this PI.  The keys should be the pair name
-     * and the values should be the pair values.
-     *
-     * @param data new map data to use
-     * @return <code>ProcessingInstruction</code> - modified PI.
-     */
-    public ProcessingInstruction setData(Map data) {
-        String temp = toString(data);
-
-        String reason = Verifier.checkProcessingInstructionData(temp);
-        if (reason != null) {
-            throw new IllegalDataException(temp, reason);
-        }
-
-        this.rawData = temp;
-        this.mapData = data;
-        return this;
-    }
-
-
-    /**
-     * This will return the value for a specific
-     * name/value pair on the PI.  If no such pair is
-     * found for this PI, null is returned.
-     *
-     * @param name <code>String</code> name of name/value pair
-     *             to lookup value for.
-     * @return <code>String</code> - value of name/value pair.
-     */
-    public String getPseudoAttributeValue(String name) {
-        return (String)mapData.get(name);
-    }
-
-    /**
-     * This will set a pseudo attribute with the given name and value.
-     * If the PI data is not already in a pseudo-attribute format, this will
-     * replace the existing data.
-     *
-     * @param name <code>String</code> name of pair.
-     * @param value <code>String</code> value for pair.
-     * @return <code>ProcessingInstruction</code> this PI modified.
-     */
-    public ProcessingInstruction setPseudoAttribute(String name, String value) {
-        String reason = Verifier.checkProcessingInstructionData(name);
-        if (reason != null) {
-            throw new IllegalDataException(name, reason);
-        }
-
-        reason = Verifier.checkProcessingInstructionData(value);
-        if (reason != null) {
-            throw new IllegalDataException(value, reason);
-        }
-
-        this.mapData.put(name, value);
-        this.rawData = toString(mapData);
-        return this;
-    }
-
-
-    /**
-     * This will remove the pseudo attribute with the specified name.
-     *
-     * @param name name of pseudo attribute to remove
-     * @return <code>boolean</code> - whether the requested
-     *         instruction was removed.
-     */
-    public boolean removePseudoAttribute(String name) {
-        if ((mapData.remove(name)) != null) {
-            rawData = toString(mapData);
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * This will convert the Map to a string representation.
-     *
-     * @param mapData <code>Map</code> PI data to convert
-     * @return a string representation of the Map as appropriate for a PI
-     */
-    private String toString(Map mapData) {
-        StringBuffer rawData = new StringBuffer();
-
-        Iterator i = mapData.keySet().iterator();
-        while (i.hasNext()) {
-            String name = (String)i.next();
-            String value = (String)mapData.get(name);
-            rawData.append(name)
-                   .append("=\"")
-                   .append(value)
-                   .append("\" ");
-        }
-        // Remove last space, if we did any appending
-        if (rawData.length() > 0) {
-            rawData.setLength(rawData.length() - 1);
-        }
-
-        return rawData.toString();
-    }
-
-    /**
-     * This will parse and load the instructions for the PI.
-     * This is separated to allow it to occur once and then be reused.
-     */
-    private Map parseData(String rawData) {
-        // The parsing here is done largely "by hand" which means the code
-        // gets a little tricky/messy.  The following conditions should
-        // now be handled correctly:
-        //   <?pi href="http://hi/a=b"?>        Reads OK
-        //   <?pi href = 'http://hi/a=b' ?>     Reads OK
-        //   <?pi href\t = \t'http://hi/a=b'?>  Reads OK
-        //   <?pi href  =  "http://hi/a=b"?>    Reads OK
-        //   <?pi?>                             Empty Map
-        //   <?pi id=22?>                       Empty Map
-        //   <?pi id='22?>                      Empty Map
-
-        Map data = new HashMap();
-
-        // System.out.println("rawData: " + rawData);
-
-        // The inputData variable holds the part of rawData left to parse
-        String inputData = rawData.trim();
-
-        // Iterate through the remaining inputData string
-        while (!inputData.trim().equals("")) {
-            //System.out.println("parseData() looking at: " + inputData);
-
-            // Search for "name =", "name=" or "name1 name2..."
-            String name = "";
-            String value = "";
-            int startName = 0;
-            char previousChar = inputData.charAt(startName);
-            int pos = 1;
-            for (; pos<inputData.length(); pos++) {
-                char currentChar = inputData.charAt(pos);
-                if (currentChar == '=') {
-                    name = inputData.substring(startName, pos).trim();
-                    // Get the boundaries on the quoted string
-                    // We use boundaries so we know where to start next
-                    int[] bounds = extractQuotedString(
-                                     inputData.substring(pos+1));
-                    // A null value means a parse error and we return empty!
-                    if (bounds == null) {
-                        return new HashMap();
-                    }
-                    value = inputData.substring(bounds[0]+pos+1,
-                                                bounds[1]+pos+1);
-                    pos += bounds[1] + 1;  // skip past value
-                    break;
-                }
-                else if (Character.isWhitespace(previousChar)
-                          && !Character.isWhitespace(currentChar)) {
-                    startName = pos;
-                }
-
-                previousChar = currentChar;
-            }
-
-            // Remove the first pos characters; they have been processed
-            inputData = inputData.substring(pos);
-
-            // System.out.println("Extracted (name, value) pair: ("
-            //                          + name + ", '" + value+"')");
-
-            // If both a name and a value have been found, then add
-            // them to the data Map
-            if (name.length() > 0 && value != null) {
-                //if (data.containsKey(name)) {
-                    // A repeat, that's a parse error, so return a null map
-                    //return new HashMap();
-                //}
-                //else {
-                    data.put(name, value);
-                //}
-            }
-        }
-
-        return data;
-    }
-
-    /**
-     * This is a helper routine, only used by parseData, to extract a
-     * quoted String from the input parameter, rawData. A quoted string
-     * can use either single or double quotes, but they must match up.
-     * A singly quoted string can contain an unbalanced amount of double
-     * quotes, or vice versa. For example, the String "JDOM's the best"
-     * is legal as is 'JDOM"s the best'.
-     *
-     * @param rawData the input string from which a quoted string is to
-     *                be extracted.
-     * @return the first quoted string encountered in the input data. If
-     *         no quoted string is found, then the empty string, "", is
-     *         returned.
-     * @see #parseData
-     */
-    private static int[] extractQuotedString(String rawData) {
-        // Remembers whether we're actually in a quoted string yet
-        boolean inQuotes = false;
-
-        // Remembers which type of quoted string we're in
-        char quoteChar = '"';
-
-        // Stores the position of the first character inside
-        //  the quoted string (i.e. the start of the return string)
-        int start = 0;
-
-        // Iterate through the input string looking for the start
-        // and end of the quoted string
-        for (int pos=0; pos < rawData.length(); pos++) {
-            char currentChar = rawData.charAt(pos);
-            if (currentChar=='"' || currentChar=='\'') {
-                if (!inQuotes) {
-                    // We're entering a quoted string
-                    quoteChar = currentChar;
-                    inQuotes = true;
-                    start = pos+1;
-                }
-                else if (quoteChar == currentChar) {
-                    // We're leaving a quoted string
-                    inQuotes = false;
-                    return new int[] { start, pos };
-                }
-                // Otherwise we've encountered a quote
-                // inside a quote, so just continue
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * This returns a <code>String</code> representation of the
-     * <code>ProcessingInstruction</code>, suitable for debugging. If the XML
-     * representation of the <code>ProcessingInstruction</code> is desired,
-     * {@link org.jdom.output.XMLOutputter#outputString(ProcessingInstruction)}
-     * should be used.
-     *
-     * @return <code>String</code> - information about the
-     *         <code>ProcessingInstruction</code>
-     */
-    public String toString() {
-        return new StringBuffer()
-            .append("[ProcessingInstruction: ")
-            .append(new org.jdom.output.XMLOutputter().outputString(this))
-            .append("]")
-            .toString();
-    }
-
-    /**
-     * This will return a clone of this <code>ProcessingInstruction</code>.
-     *
-     * @return <code>Object</code> - clone of this
-     * <code>ProcessingInstruction</code>.
-     */
-    public Object clone() {
-        ProcessingInstruction pi = (ProcessingInstruction) super.clone();
-
-        // target and rawdata are immutable and references copied by
-        // Object.clone()
-
-        // Create a new Map object for the clone (since Map isn't Cloneable)
-        if (mapData != null) {
-            pi.mapData = parseData(rawData);
-        }
-        return pi;
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/Text.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/Text.java
deleted file mode 100644
index 0982412..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/Text.java
+++ /dev/null
@@ -1,271 +0,0 @@
-/*--
-
- $Id: Text.java,v 1.1 2009/05/27 21:46:18 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom;
-
-/**
- * Character-based XML content. Provides a modular, parentable method of
- * representing text. Text makes no guarantees about the underlying textual
- * representation of character data, but does expose that data as a Java String.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:18 $
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- * @author  Bradley S. Huffman
- */
-public class Text extends Content {
-
-    private static final String CVS_ID =
-      "@(#) $RCSfile: Text.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:18 $ $Name:  $";
-
-    static final String EMPTY_STRING = "";
-
-    /** The actual character content */
-    // XXX See http://www.servlets.com/archive/servlet/ReadMsg?msgId=8612
-    // from elharo for a description of why Java characters may not suffice
-    // long term
-    protected String value;
-
-    /**
-     * This is the protected, no-args constructor standard in all JDOM
-     * classes. It allows subclassers to get a raw instance with no
-     * initialization.
-     */
-    protected Text() { }
-
-    /**
-     * This constructor creates a new <code>Text</code> node, with the
-     * supplied string value as it's character content.
-     *
-     * @param str the node's character content.
-     * @throws IllegalDataException if <code>str</code> contains an
-     *         illegal character such as a vertical tab (as determined
-     *         by {@link org.jdom.Verifier#checkCharacterData})
-     */
-    public Text(String str) {
-        setText(str);
-    }
-
-    /**
-     * This returns the value of this <code>Text</code> node as a Java
-     * <code>String</code>.
-     *
-     * @return <code>String</code> - character content of this node.
-     */
-    public String getText() {
-        return value;
-    }
-
-    /**
-     * This returns the textual content with all surrounding whitespace
-     * removed.  If only whitespace exists, the empty string is returned.
-     *
-     * @return trimmed text content or empty string
-     */
-    public String getTextTrim() {
-        return getText().trim();
-    }
-
-    /**
-     * This returns the textual content with all surrounding whitespace
-     * removed and internal whitespace normalized to a single space.  If
-     * only whitespace exists, the empty string is returned.
-     *
-     * @return normalized text content or empty string
-     */
-    public String getTextNormalize() {
-        return normalizeString(getText());
-    }
-
-    /**
-     * This returns a new string with all surrounding whitespace
-     * removed and internal whitespace normalized to a single space.  If
-     * only whitespace exists, the empty string is returned.
-     * <p>
-     * Per XML 1.0 Production 3 whitespace includes: #x20, #x9, #xD, #xA
-     * </p>
-     *
-     * @param str string to be normalized.
-     * @return normalized string or empty string
-     */
-    public static String normalizeString(String str) {
-        if (str == null)
-            return EMPTY_STRING;
-
-        char[] c = str.toCharArray();
-        char[] n = new char[c.length];
-        boolean white = true;
-        int pos = 0;
-        for (int i = 0; i < c.length; i++) {
-            if (" \t\n\r".indexOf(c[i]) != -1) {
-                if (!white) {
-                    n[pos++] = ' ';
-                    white = true;
-                }
-            }
-            else {
-                n[pos++] = c[i];
-                white = false;
-            }
-        }
-        if (white && pos > 0) {
-            pos--;
-        }
-        return new String(n, 0, pos);
-    }
-
-    /**
-     * This will set the value of this <code>Text</code> node.
-     *
-     * @param str value for node's content.
-     * @return the object on which the method was invoked
-     * @throws IllegalDataException if <code>str</code> contains an
-     *         illegal character such as a vertical tab (as determined
-     *         by {@link org.jdom.Verifier#checkCharacterData})
-     */
-    public Text setText(String str) {
-        String reason;
-
-        if (str == null) {
-            value = EMPTY_STRING;
-            return this;
-        }
-
-        if ((reason = Verifier.checkCharacterData(str)) != null) {
-            throw new IllegalDataException(str, "character content", reason);
-        }
-        value = str;
-        return this;
-    }
-
-    /**
-     * This will append character content to whatever content already
-     * exists within this <code>Text</code> node.
-     *
-     * @param str character content to append.
-     * @throws IllegalDataException if <code>str</code> contains an
-     *         illegal character such as a vertical tab (as determined
-     *         by {@link org.jdom.Verifier#checkCharacterData})
-     */
-    public void append(String str) {
-        String reason;
-
-        if (str == null) {
-            return;
-        }
-        if ((reason = Verifier.checkCharacterData(str)) != null) {
-            throw new IllegalDataException(str, "character content", reason);
-        }
-
-        if (str == EMPTY_STRING)
-             value = str;
-        else value += str;
-    }
-
-    /**
-     * This will append the content of another <code>Text</code> node
-     * to this node.
-     *
-     * @param text Text node to append.
-     */
-    public void append(Text text) {
-        if (text == null) {
-            return;
-        }
-        value += text.getText();
-    }
-
-    /**
-     * Returns the XPath 1.0 string value of this element, which is the
-     * text itself.
-     *
-     * @return the text
-     */
-    public String getValue() {
-        return value;
-    }
-
-    /**
-     * This returns a <code>String</code> representation of the
-     * <code>Text</code> node, suitable for debugging. If the XML
-     * representation of the <code>Text</code> node is desired,
-     * either <code>{@link #getText}</code> or
-     * {@link org.jdom.output.XMLOutputter#outputString(Text)}</code>
-     * should be used.
-     *
-     * @return <code>String</code> - information about this node.
-     */
-    public String toString() {
-        return new StringBuffer(64)
-            .append("[Text: ")
-            .append(getText())
-            .append("]")
-            .toString();
-    }
-
-    /**
-     * This will return a clone of this <code>Text</code> node, with the
-     * same character content, but no parent.
-     *
-     * @return <code>Text</code> - cloned node.
-     */
-    public Object clone() {
-        Text text = (Text)super.clone();
-        text.value = value;
-        return text;
-    }
-
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/UncheckedJDOMFactory.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/UncheckedJDOMFactory.java
deleted file mode 100644
index 828cbaf..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/UncheckedJDOMFactory.java
+++ /dev/null
@@ -1,231 +0,0 @@
-package org.jdom;
-
-import java.util.*;
-
-/**
- * Special factory for building documents without any content or structure
- * checking.  This should only be used when you are 100% positive that the
- * input is absolutely correct.  This factory can speed builds, but any
- * problems in the input will be uncaught until later when they could cause
- * infinite loops, malformed XML, or worse.  Use with extreme caution.
- */
-public class UncheckedJDOMFactory implements JDOMFactory {
-
-    // =====================================================================
-    // Element Factory
-    // =====================================================================
-
-    public Element element(String name, Namespace namespace) {
-        Element e = new Element();
-        e.name = name;
-        if (namespace == null) {
-            namespace = Namespace.NO_NAMESPACE;
-        }
-        e.namespace = namespace;
-        return e;
-    }
-
-    public Element element(String name) {
-        Element e = new Element();
-        e.name = name;
-        e.namespace = Namespace.NO_NAMESPACE;
-        return e;
-    }
-
-    public Element element(String name, String uri) {
-        return element(name, Namespace.getNamespace("", uri));
-    }
-
-    public Element element(String name, String prefix, String uri) {
-        return element(name, Namespace.getNamespace(prefix, uri));
-    }
-
-    // =====================================================================
-    // Attribute Factory
-    // =====================================================================
-
-    public Attribute attribute(String name, String value, Namespace namespace) {
-        Attribute a = new Attribute();
-        a.name = name;
-        a.value = value;
-        if (namespace == null) {
-            namespace = Namespace.NO_NAMESPACE;
-        }
-        a.namespace = namespace;
-        return a;
-    }
-
-    public Attribute attribute(String name, String value, int type, Namespace namespace) {
-        Attribute a = new Attribute();
-        a.name = name;
-        a.type = type;
-        a.value = value;
-        if (namespace == null) {
-            namespace = Namespace.NO_NAMESPACE;
-        }
-        a.namespace = namespace;
-        return a;
-    }
-
-    public Attribute attribute(String name, String value) {
-        Attribute a = new Attribute();
-        a.name = name;
-        a.value = value;
-        a.namespace = Namespace.NO_NAMESPACE;
-        return a;
-    }
-
-    public Attribute attribute(String name, String value, int type) {
-        Attribute a = new Attribute();
-        a.name = name;
-        a.type = type;
-        a.value = value;
-        a.namespace = Namespace.NO_NAMESPACE;
-        return a;
-    }
-
-    // =====================================================================
-    // Text Factory
-    // =====================================================================
-
-    public Text text(String str) {
-        Text t = new Text();
-        t.value = str;
-        return t;
-    }
-
-    // =====================================================================
-    // CDATA Factory
-    // =====================================================================
-
-    public CDATA cdata(String str) {
-        CDATA c = new CDATA();
-        c.value = str;
-        return c;
-    }
-
-    // =====================================================================
-    // Comment Factory
-    // =====================================================================
-
-    public Comment comment(String str) {
-        Comment c = new Comment();
-        c.text = str;
-        return c;
-    }
-
-    // =====================================================================
-    // Processing Instruction Factory
-    // =====================================================================
-
-    public ProcessingInstruction processingInstruction(String target, Map data) {
-        ProcessingInstruction p = new ProcessingInstruction();
-        p.target = target;
-        p.setData(data);
-        return p;
-    }
-
-    public ProcessingInstruction processingInstruction(String target, String data) {
-        ProcessingInstruction p = new ProcessingInstruction();
-        p.target = target;
-        p.setData(data);
-        return p;
-    }
-
-    // =====================================================================
-    // Entity Ref Factory
-    // =====================================================================
-
-    public EntityRef entityRef(String name) {
-        EntityRef e = new org.jdom.EntityRef();
-        e.name = name;
-        return e;
-    }
-
-    public EntityRef entityRef(String name, String systemID) {
-        EntityRef e = new EntityRef();
-        e.name = name;
-        e.systemID = systemID;
-        return e;
-    }
-
-    public EntityRef entityRef(String name, String publicID, String systemID) {
-        EntityRef e = new EntityRef();
-        e.name = name;
-        e.publicID = publicID;
-        e.systemID = systemID;
-        return e;
-    }
-
-    // =====================================================================
-    // DocType Factory
-    // =====================================================================
-
-    public DocType docType(String elementName, String publicID, String systemID) {
-        DocType d = new DocType();
-        d.elementName = elementName;
-        d.publicID = publicID;
-        d.systemID = systemID;
-        return d;
-    }
-
-    public DocType docType(String elementName, String systemID) {
-        return docType(elementName, null, systemID);
-    }
-
-    public DocType docType(String elementName) {
-        return docType(elementName, null, null);
-    }
-
-    // =====================================================================
-    // Document Factory
-    // =====================================================================
-
-    public Document document(Element rootElement, DocType docType, String baseURI) {
-        Document d = new Document();
-        if (docType != null) {
-            addContent(d, docType);
-        }
-        if (rootElement != null) {
-            addContent(d, rootElement);
-        }
-        if (baseURI != null) {
-            d.baseURI = baseURI;
-        }
-        return d;
-    }
-
-    public Document document(Element rootElement, DocType docType) {
-        return document(rootElement, docType, null);
-    }
-
-    public Document document(Element rootElement) {
-        return document(rootElement, null, null);
-    }
-
-    // =====================================================================
-    // List manipulation
-    // =====================================================================
-
-    public void addContent(Parent parent, Content child) {
-        if (parent instanceof Element) {
-            Element elt = (Element) parent;
-            elt.content.uncheckedAddContent(child);
-        }
-        else {
-            Document doc = (Document) parent;
-            doc.content.uncheckedAddContent(child);
-        }
-    }
-
-    public void setAttribute(Element parent, Attribute a) {
-        parent.attributes.uncheckedAddAttribute(a);
-    }
-
-    public void addNamespaceDeclaration(Element parent, Namespace additional) {
-        if (parent.additionalNamespaces == null) {
-            parent.additionalNamespaces = new ArrayList(5); //Element.INITIAL_ARRAY_SIZE
-        }
-        parent.additionalNamespaces.add(additional);
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/Verifier.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/Verifier.java
deleted file mode 100644
index d0c4841..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/Verifier.java
+++ /dev/null
@@ -1,1226 +0,0 @@
-/*-- 
-
- $Id: Verifier.java,v 1.1 2009/05/27 21:46:17 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-package org.jdom;
-
-import java.util.*;
-
-/**
- * A utility class to handle well-formedness checks on names, data, and other
- * verification tasks for JDOM. The class is final and may not be subclassed.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:17 $
- * @author  Brett McLaughlin
- * @author  Elliotte Rusty Harold
- * @author  Jason Hunter
- * @author  Bradley S. Huffman
- */
-final public class Verifier {
-
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: Verifier.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:17 $ $Name:  $";
-
-    /**
-     * Ensure instantation cannot occur.
-     */
-    private Verifier() { }
-
-    /**
-     * This will check the supplied name to see if it is legal for use as
-     * a JDOM <code>{@link Element}</code> name.
-     *
-     * @param name <code>String</code> name to check.
-     * @return <code>String</code> reason name is illegal, or
-     *         <code>null</code> if name is OK.
-     */
-    public static String checkElementName(String name) {
-        // Check basic XML name rules first
-        String reason;
-        if ((reason = checkXMLName(name)) != null) {
-            return reason;
-        }
-
-        // No colons allowed, since elements handle this internally
-        if (name.indexOf(":") != -1) {
-            return "Element names cannot contain colons";
-        }
-
-        // If we got here, everything is OK
-        return null;
-    }
-
-    /**
-     * This will check the supplied name to see if it is legal for use as
-     * a JDOM <code>{@link Attribute}</code> name.
-     *
-     * @param name <code>String</code> name to check.
-     * @return <code>String</code> reason name is illegal, or
-     *         <code>null</code> if name is OK.
-     */
-    public static String checkAttributeName(String name) {
-        // Check basic XML name rules first
-        String reason;
-        if ((reason = checkXMLName(name)) != null) {
-            return reason;
-        }
-
-        // No colons are allowed, since attributes handle this internally
-        if (name.indexOf(":") != -1) {
-            return "Attribute names cannot contain colons";
-        }
-
-        // Attribute names may not be xmlns since we do this internally too
-        if (name.equals("xmlns")) {
-            return "An Attribute name may not be \"xmlns\"; " +
-                   "use the Namespace class to manage namespaces";
-        }
-
-        // If we got here, everything is OK
-        return null;
-    }
-    
-    /**
-     * This will check the supplied string to see if it only contains
-     * characters allowed by the XML 1.0 specification. The C0 controls
-     * (e.g. null, vertical tab, formfeed, etc.) are specifically excluded
-     * except for carriage return, linefeed, and the horizontal tab.
-     * Surrogates are also excluded. 
-     * <p>
-     * This method is useful for checking element content and attribute
-     * values. Note that characters 
-     * like " and &lt; are allowed in attribute values and element content. 
-     * They will simply be escaped as &quot; or &lt; 
-     * when the value is serialized. 
-     * </p>
-     *
-     * @param text <code>String</code> value to check.
-     * @return <code>String</code> reason name is illegal, or
-     *         <code>null</code> if name is OK.
-     */
-    public static String checkCharacterData(String text) {
-        if (text == null) {
-            return "A null is not a legal XML value";
-        }
-
-        // Do check
-        for (int i = 0, len = text.length(); i<len; i++) {
-
-            int ch = text.charAt(i);
-            
-            // Check if high part of a surrogate pair
-            if (ch >= 0xD800 && ch <= 0xDBFF) {
-                // Check if next char is the low-surrogate
-                i++;
-                if (i < len) {
-                    char low = text.charAt(i);
-                    if (low < 0xDC00 || low > 0xDFFF) {
-                        return "Illegal Surrogate Pair";
-                    }
-                    // It's a good pair, calculate the true value of
-                    // the character to then fall thru to isXMLCharacter
-                    ch = 0x10000 + (ch - 0xD800) * 0x400 + (low - 0xDC00);
-                }
-                else {
-                    return "Surrogate Pair Truncated";
-                }
-            }
-
-            if (!isXMLCharacter(ch)) {
-                // Likely this character can't be easily displayed
-                // because it's a control so we use it'd hexadecimal 
-                // representation in the reason.
-                return ("0x" + Integer.toHexString(ch) +
-                        " is not a legal XML character");
-            }
-        }
-
-        // If we got here, everything is OK
-        return null;
-    }
-
-    /**
-     * This will check the supplied data to see if it is legal for use as
-     * JDOM <code>{@link CDATA}</code>.
-     *
-     * @param data <code>String</code> data to check.
-     * @return <code>String</code> reason data is illegal, or
-     *         <code>null</code> is name is OK.
-     */
-    public static String checkCDATASection(String data) {
-        String reason = null;
-        if ((reason = checkCharacterData(data)) != null) {
-            return reason;
-        }
-
-        if (data.indexOf("]]>") != -1) {
-            return "CDATA cannot internally contain a CDATA ending " +
-                   "delimiter (]]>)";
-        }
-
-        // If we got here, everything is OK
-        return null;
-    }
-
-    /**
-     * This will check the supplied name to see if it is legal for use as
-     * a JDOM <code>{@link Namespace}</code> prefix.
-     *
-     * @param prefix <code>String</code> prefix to check.
-     * @return <code>String</code> reason name is illegal, or
-     *         <code>null</code> if name is OK.
-     */
-    public static String checkNamespacePrefix(String prefix) {
-        // Manually do rules, since URIs can be null or empty
-        if ((prefix == null) || (prefix.equals(""))) {
-            return null;
-        }
-
-        // Cannot start with a number
-        char first = prefix.charAt(0);
-        if (isXMLDigit(first)) {
-            return "Namespace prefixes cannot begin with a number";
-        }
-        // Cannot start with a $
-        if (first == '$') {
-            return "Namespace prefixes cannot begin with a dollar sign ($)";
-        }
-        // Cannot start with a -
-        if (first == '-') {
-            return "Namespace prefixes cannot begin with a hyphen (-)";
-        }
-        // Cannot start with a .
-        if (first == '.') {
-            return "Namespace prefixes cannot begin with a period (.)";
-        }
-        // Cannot start with "xml" in any character case
-        if (prefix.toLowerCase().startsWith("xml")) {
-            return "Namespace prefixes cannot begin with " +
-                   "\"xml\" in any combination of case";
-        }
-
-        // Ensure legal content
-        for (int i=0, len = prefix.length(); i<len; i++) {
-            char c = prefix.charAt(i);
-            if (!isXMLNameCharacter(c)) {
-                return "Namespace prefixes cannot contain the character \"" +
-                        c + "\"";
-            }
-        }
-
-        // No colons allowed
-        if (prefix.indexOf(":") != -1) {
-            return "Namespace prefixes cannot contain colons";
-        }
-
-        // If we got here, everything is OK
-        return null;
-    }
-
-    /**
-     * This will check the supplied name to see if it is legal for use as
-     * a JDOM <code>{@link Namespace}</code> URI.
-     *
-     * @param uri <code>String</code> URI to check.
-     * @return <code>String</code> reason name is illegal, or
-     *         <code>null</code> if name is OK.
-     */
-    public static String checkNamespaceURI(String uri) {
-        // Manually do rules, since URIs can be null or empty
-        if ((uri == null) || (uri.equals(""))) {
-            return null;
-        }
-
-        // Cannot start with a number
-        char first = uri.charAt(0);
-        if (Character.isDigit(first)) {
-            return "Namespace URIs cannot begin with a number";
-        }
-        // Cannot start with a $
-        if (first == '$') {
-            return "Namespace URIs cannot begin with a dollar sign ($)";
-        }
-        // Cannot start with a -
-        if (first == '-') {
-            return "Namespace URIs cannot begin with a hyphen (-)";
-        }
-
-        // If we got here, everything is OK
-        return null;
-    }
-
-    /**
-     * Check if two namespaces collide.
-     *
-     * @param namespace <code>Namespace</code> to check.
-     * @param other <code>Namespace</code> to check against.
-     * @return <code>String</code> reason for collision, or
-     *         <code>null</code> if no collision.
-     */
-    public static String checkNamespaceCollision(Namespace namespace,
-                                                 Namespace other) {
-        String p1,p2,u1,u2,reason;
-
-        reason = null;
-        p1 = namespace.getPrefix();
-        u1 = namespace.getURI();
-        p2 = other.getPrefix();
-        u2 = other.getURI();
-        if (p1.equals(p2) && !u1.equals(u2)) {
-            reason = "The namespace prefix \"" + p1 + "\" collides";
-        }
-        return reason;
-    }
-
-    /**
-     * Check if <code>{@link Attribute}</code>'s namespace collides with a 
-     * <code>{@link Element}</code>'s namespace.
-     *
-     * @param attribute <code>Attribute</code> to check.
-     * @param element <code>Element</code> to check against.
-     * @return <code>String</code> reason for collision, or
-     *         <code>null</code> if no collision.
-     */
-    public static String checkNamespaceCollision(Attribute attribute,
-                                                 Element element) {
-        Namespace namespace = attribute.getNamespace();
-        String prefix = namespace.getPrefix();
-        if ("".equals(prefix)) {
-            return null;
-        }
-
-        return checkNamespaceCollision(namespace, element);
-    }
-
-    /**
-     * Check if a <code>{@link Namespace}</code> collides with a
-     * <code>{@link Element}</code>'s namespace.
-     *
-     * @param namespace <code>Namespace</code> to check.
-     * @param element <code>Element</code> to check against.
-     * @return <code>String</code> reason for collision, or
-     *         <code>null</code> if no collision.
-     */
-    public static String checkNamespaceCollision(Namespace namespace,
-                                                 Element element) {
-        String reason = checkNamespaceCollision(namespace,
-                                                element.getNamespace());
-        if (reason != null) {
-            return reason + " with the element namespace prefix";
-        }
-
-        reason = checkNamespaceCollision(namespace,
-                                         element.getAdditionalNamespaces());
-        if (reason != null) {
-            return reason;
-        }
-
-        reason = checkNamespaceCollision(namespace, element.getAttributes());
-        if (reason != null) {
-            return reason;
-        }
-
-        return null;
-    }
-
-    /**
-     * Check if a <code>{@link Namespace}</code> collides with a
-     * <code>{@link Attribute}</code>'s namespace.
-     *
-     * @param namespace <code>Namespace</code> to check.
-     * @param attribute <code>Attribute</code> to check against.
-     * @return <code>String</code> reason for collision, or
-     *         <code>null</code> if no collision.
-     */
-    public static String checkNamespaceCollision(Namespace namespace,
-                                                 Attribute attribute) {
-        String reason = checkNamespaceCollision(namespace,
-                                                attribute.getNamespace());
-        if (reason != null) {
-            reason += " with an attribute namespace prefix on the element";
-        }
-        return reason;
-    }
-
-    /**
-     * Check if a <code>{@link Namespace}</code> collides with any namespace
-     * from a list of objects.
-     *
-     * @param namespace <code>Namespace</code> to check.
-     * @param list <code>List</code> to check against.
-     * @return <code>String</code> reason for collision, or
-     *         <code>null</code> if no collision.
-     */
-    public static String checkNamespaceCollision(Namespace namespace,
-                                                 List list) {
-        if (list == null) {
-            return null;
-        }
-
-        String reason = null;
-        Iterator i = list.iterator();
-        while ((reason == null) && i.hasNext()) {
-            Object obj = i.next();
-            if (obj instanceof Attribute) {
-                reason = checkNamespaceCollision(namespace, (Attribute) obj);
-            }
-            else if (obj instanceof Element) {
-                reason = checkNamespaceCollision(namespace, (Element) obj);
-            }
-            else if (obj instanceof Namespace) {
-                reason = checkNamespaceCollision(namespace, (Namespace) obj);
-                if (reason != null) {
-                    reason += " with an additional namespace declared" +
-                              " by the element";
-                }
-            }
-        }
-        return reason;
-    }
-
-    /**
-     * This will check the supplied data to see if it is legal for use as
-     * a JDOM <code>{@link ProcessingInstruction}</code> target.
-     *
-     * @param target <code>String</code> target to check.
-     * @return <code>String</code> reason target is illegal, or
-     *         <code>null</code> if target is OK.
-     */
-    public static String checkProcessingInstructionTarget(String target) {
-        // Check basic XML name rules first
-        String reason;
-        if ((reason = checkXMLName(target)) != null) {
-            return reason;
-        }
-
-        // No colons allowed, per Namespace Specification Section 6
-        if (target.indexOf(":") != -1) {
-            return "Processing instruction targets cannot contain colons";
-        }
-
-        // Cannot begin with 'xml' in any case
-        if (target.equalsIgnoreCase("xml")) {
-            return "Processing instructions cannot have a target of " +
-                   "\"xml\" in any combination of case. (Note that the " +
-                   "\"<?xml ... ?>\" declaration at the beginning of a " +
-                   "document is not a processing instruction and should not " + 
-                   "be added as one; it is written automatically during " +
-                   "output, e.g. by XMLOutputter.)";
-        }
-
-        // If we got here, everything is OK
-        return null;
-    }
-
-   /**
-     * This will check the supplied data to see if it is legal for use as
-     * <code>{@link ProcessingInstruction}</code> data. Besides checking that
-     * all the characters are allowed in XML, this also checks
-     * that the data does not contain the PI end-string "?&gt;".
-     *
-     * @param data <code>String</code> data to check.
-     * @return <code>String</code> reason data is illegal, or
-     *         <code>null</code> if data is OK.
-     */
-    public static String checkProcessingInstructionData(String data) {
-        // Check basic XML name rules first
-        String reason = checkCharacterData(data);
-
-        if (reason == null) {
-            if (data.indexOf("?>") >= 0) {
-                return "Processing instructions cannot contain " +
-                       "the string \"?>\"";
-            }
-        }
-
-        return reason;
-    }
-
-    /**
-     * This will check the supplied data to see if it is legal for use as
-     * JDOM <code>{@link Comment}</code> data.
-     *
-     * @param data <code>String</code> data to check.
-     * @return <code>String</code> reason data is illegal, or
-     *         <code>null</code> if data is OK.
-     */
-    public static String checkCommentData(String data) {
-        String reason = null;
-        if ((reason = checkCharacterData(data)) != null) {
-            return reason;
-        }
-
-        if (data.indexOf("--") != -1) {
-            return "Comments cannot contain double hyphens (--)";
-        }
-        if (data.startsWith("-")) {
-            return "Comment data cannot start with a hyphen.";
-        }
-        if (data.endsWith("-")) {
-            return "Comment data cannot end with a hyphen.";
-        }
-
-        // If we got here, everything is OK
-        return null;
-    }
-
-    // [13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] |
-    // [-'()+,./:=?;*#@$_%]
-    public static boolean isXMLPublicIDCharacter(char c) {
-
-        if (c >= 'a' && c <= 'z') return true;
-        if (c >= '?' && c <= 'Z') return true;
-        if (c >= '\'' && c <= ';') return true;
-
-        if (c == ' ') return true;
-        if (c == '!') return true;
-        if (c == '=') return true;
-        if (c == '#') return true;
-        if (c == '$') return true;
-        if (c == '_') return true;
-        if (c == '%') return true;
-        if (c == '\n') return true;
-        if (c == '\r') return true;
-        if (c == '\t') return true;
-
-        return false;
-    }
-
-    /**
-     * This will ensure that the data for a public identifier
-     * is legal.
-     *
-     * @param publicID <code>String</code> public ID to check.
-     * @return <code>String</code> reason public ID is illegal, or
-     *         <code>null</code> if public ID is OK.
-     */
-    public static String checkPublicID(String publicID) {
-        String reason = null;
-
-        if (publicID == null) return null;
-        // This indicates there is no public ID
-
-        for (int i = 0; i < publicID.length(); i++) {
-          char c = publicID.charAt(i);
-          if (!isXMLPublicIDCharacter(c)) {
-            reason = c + " is not a legal character in public IDs";
-            break;
-          }
-        }
-
-        return reason;
-    }
-
-
-    /**
-     * This will ensure that the data for a system literal
-     * is legal.
-     *
-     * @param systemLiteral <code>String</code> system literal to check.
-     * @return <code>String</code> reason system literal is illegal, or
-     *         <code>null</code> if system literal is OK.
-     */
-    public static String checkSystemLiteral(String systemLiteral) {
-        String reason = null;
-
-        if (systemLiteral == null) return null;
-        // This indicates there is no system ID
-
-        if (systemLiteral.indexOf('\'') != -1
-          && systemLiteral.indexOf('"') != -1) {
-            reason =
-             "System literals cannot simultaneously contain both single and double quotes.";
-        }
-        else {
-          reason = checkCharacterData(systemLiteral);
-        }
-
-        return reason;
-    }
-
-    /**
-     * This is a utility function for sharing the base process of checking
-     * any XML name.
-     *
-     * @param name <code>String</code> to check for XML name compliance.
-     * @return <code>String</code> reason the name is illegal, or
-     *         <code>null</code> if OK.
-     */
-    public static String checkXMLName(String name) {
-        // Cannot be empty or null
-        if ((name == null) || (name.length() == 0) 
-                           || (name.trim().equals(""))) {
-            return "XML names cannot be null or empty";
-        }
-
-      
-        // Cannot start with a number
-        char first = name.charAt(0);
-        if (!isXMLNameStartCharacter(first)) {
-            return "XML names cannot begin with the character \"" + 
-                   first + "\"";
-        }
-        // Ensure legal content for non-first chars
-        for (int i=1, len = name.length(); i<len; i++) {
-            char c = name.charAt(i);
-            if (!isXMLNameCharacter(c)) {
-                return "XML names cannot contain the character \"" + c + "\"";
-            }
-        }
-
-        // We got here, so everything is OK
-        return null;
-    }
-
-   /**
-     * <p>
-     * Checks a string to see if it is a legal RFC 2396 URI.
-     * Both absolute and relative URIs are supported.
-     * </p>
-     *
-     * @param uri <code>String</code> to check.
-     * @return <code>String</code> reason the URI is illegal, or
-     *         <code>null</code> if OK.
-     */
-    public static String checkURI(String uri) {
-        // URIs can be null or empty
-        if ((uri == null) || (uri.equals(""))) {
-            return null;
-        }
-
-        for (int i = 0; i < uri.length(); i++) {
-            char test = uri.charAt(i);
-            if (!isURICharacter(test)) {
-                String msgNumber = "0x" + Integer.toHexString(test);
-                if (test <= 0x09) msgNumber = "0x0" + Integer.toHexString(test);
-                return "URIs cannot contain " + msgNumber;
-            } // end if
-            if (test == '%') { // must be followed by two hexadecimal digits
-                   try {
-                       char firstDigit = uri.charAt(i+1);
-                       char secondDigit = uri.charAt(i+2);
-                       if (!isHexDigit(firstDigit) ||
-                           !isHexDigit(secondDigit)) {
-                           return "Percent signs in URIs must be followed by "
-                            + "exactly two hexadecimal digits.";
-                       }
-
-                   }
-                   catch (StringIndexOutOfBoundsException e) {
-                       return "Percent signs in URIs must be followed by "
-                        + "exactly two hexadecimal digits.";
-                   }
-            }
-        } // end for
-
-        // If we got here, everything is OK
-        return null;
-    }
-
-   /**
-     * <p>
-     * <p>
-     * This is a utility function for determining whether a specified
-     * Unicode character is a hexadecimal digit as defined in RFC 2396;
-     * that is, one of the ASCII characters 0-9, a-f, or A-F
-     * </p>
-     *
-     * @param c  to check for hex digit.
-     * @return true if it's allowed, false otherwise.
-     */
-    public static boolean isHexDigit(char c) {
-
-    // I suspect most characters passed to this method will be
-    // correct hexadecimal digits, so I test for the true cases
-    // first. If this proves to be a performance bottleneck
-    // a switch statement or lookup table
-    // might optimize this.
-        if (c >= '0' && c <= '9') return true;
-        if (c >= 'A' && c <= 'F') return true;
-        if (c >= 'a' && c <= 'f') return true;
-
-        return false;
-    }
-
-    /**
-     * <p>
-     * This is a utility function for determining whether
-     * a specified Unicode character is legal in URI references
-     * as determined by RFC 2396.
-     * </p>
-     *
-     * @param c <code>char</code> to check for URI reference compliance.
-     * @return true if it's allowed, false otherwise.
-     */
-    public static boolean isURICharacter(char c) {
-        if (c >= 'a' && c <= 'z') return true;
-        if (c >= 'A' && c <= 'Z') return true;
-        if (c >= '0' && c <= '9') return true;
-        if (c == '/') return true;
-        if (c == '-') return true;
-        if (c == '.') return true;
-        if (c == '?') return true;
-        if (c == ':') return true;
-        if (c == '@') return true;
-        if (c == '&') return true;
-        if (c == '=') return true;
-        if (c == '+') return true;
-        if (c == '$') return true;
-        if (c == ',') return true;
-        if (c == '%') return true;
-
-        if (c == '_') return true;
-        if (c == '!') return true;
-        if (c == '~') return true;
-        if (c == '*') return true;
-        if (c == '\'') return true;
-        if (c == '(') return true;
-        if (c == ')') return true;
-        return false;
-    }
-    
-    /**
-     * This is a utility function for determining whether a specified 
-     * character is a character according to production 2 of the 
-     * XML 1.0 specification.
-     *
-     * @param c <code>char</code> to check for XML compliance
-     * @return <code>boolean</code> true if it's a character, 
-     *                                false otherwise
-     */
-    public static boolean isXMLCharacter(int c) {
-    
-        if (c == '\n') return true;
-        if (c == '\r') return true;
-        if (c == '\t') return true;
-        
-        if (c < 0x20) return false;  if (c <= 0xD7FF) return true;
-        if (c < 0xE000) return false;  if (c <= 0xFFFD) return true;
-        if (c < 0x10000) return false;  if (c <= 0x10FFFF) return true;
-        
-        return false;
-    }
-
-
-    /**
-     * This is a utility function for determining whether a specified 
-     * character is a name character according to production 4 of the 
-     * XML 1.0 specification.
-     *
-     * @param c <code>char</code> to check for XML name compliance.
-     * @return <code>boolean</code> true if it's a name character, 
-     *                                false otherwise.
-     */
-    public static boolean isXMLNameCharacter(char c) {
-    
-      return (isXMLLetter(c) || isXMLDigit(c) || c == '.' || c == '-' 
-                             || c == '_' || c == ':' || isXMLCombiningChar(c) 
-                             || isXMLExtender(c));
-    }
-
-    /**
-     * This is a utility function for determining whether a specified 
-     * character is a legal name start character according to production 5
-     * of the XML 1.0 specification. This production does allow names
-     * to begin with colons which the Namespaces in XML Recommendation
-     * disallows. 
-     *
-     * @param c <code>char</code> to check for XML name start compliance.
-     * @return <code>boolean</code> true if it's a name start character, 
-     *                                false otherwise.
-     */
-    public static boolean isXMLNameStartCharacter(char c) {
-    
-      return (isXMLLetter(c) || c == '_' || c ==':');
-    
-    }
-
-    /**
-     * This is a utility function for determining whether a specified 
-     * character is a letter or digit according to productions 84 and 88
-     * of the XML 1.0 specification.
-     *
-     * @param c <code>char</code> to check.
-     * @return <code>boolean</code> true if it's letter or digit, 
-     *                                false otherwise.
-     */
-    public static boolean isXMLLetterOrDigit(char c) {
-    
-      return (isXMLLetter(c) || isXMLDigit(c));
-    
-    }
-
-    /**
-     * This is a utility function for determining whether a specified character
-     * is a letter according to production 84 of the XML 1.0 specification.
-     *
-     * @param c <code>char</code> to check for XML name compliance.
-     * @return <code>String</code> true if it's a letter, false otherwise.
-     */
-    public static boolean isXMLLetter(char c) {
-        // Note that order is very important here.  The search proceeds 
-        // from lowest to highest values, so that no searching occurs 
-        // above the character's value.  BTW, the first line is equivalent to:
-        // if (c >= 0x0041 && c <= 0x005A) return true;
-
-        if (c < 0x0041) return false;  if (c <= 0x005a) return true;
-        if (c < 0x0061) return false;  if (c <= 0x007A) return true;
-        if (c < 0x00C0) return false;  if (c <= 0x00D6) return true;
-        if (c < 0x00D8) return false;  if (c <= 0x00F6) return true;
-        if (c < 0x00F8) return false;  if (c <= 0x00FF) return true;
-        if (c < 0x0100) return false;  if (c <= 0x0131) return true;
-        if (c < 0x0134) return false;  if (c <= 0x013E) return true;
-        if (c < 0x0141) return false;  if (c <= 0x0148) return true;
-        if (c < 0x014A) return false;  if (c <= 0x017E) return true;
-        if (c < 0x0180) return false;  if (c <= 0x01C3) return true;
-        if (c < 0x01CD) return false;  if (c <= 0x01F0) return true;
-        if (c < 0x01F4) return false;  if (c <= 0x01F5) return true;
-        if (c < 0x01FA) return false;  if (c <= 0x0217) return true;
-        if (c < 0x0250) return false;  if (c <= 0x02A8) return true;
-        if (c < 0x02BB) return false;  if (c <= 0x02C1) return true;
-        if (c == 0x0386) return true;
-        if (c < 0x0388) return false;  if (c <= 0x038A) return true;
-        if (c == 0x038C) return true;
-        if (c < 0x038E) return false;  if (c <= 0x03A1) return true;
-        if (c < 0x03A3) return false;  if (c <= 0x03CE) return true;
-        if (c < 0x03D0) return false;  if (c <= 0x03D6) return true;
-        if (c == 0x03DA) return true;
-        if (c == 0x03DC) return true;
-        if (c == 0x03DE) return true;
-        if (c == 0x03E0) return true;
-        if (c < 0x03E2) return false;  if (c <= 0x03F3) return true;
-        if (c < 0x0401) return false;  if (c <= 0x040C) return true;
-        if (c < 0x040E) return false;  if (c <= 0x044F) return true;
-        if (c < 0x0451) return false;  if (c <= 0x045C) return true;
-        if (c < 0x045E) return false;  if (c <= 0x0481) return true;
-        if (c < 0x0490) return false;  if (c <= 0x04C4) return true;
-        if (c < 0x04C7) return false;  if (c <= 0x04C8) return true;
-        if (c < 0x04CB) return false;  if (c <= 0x04CC) return true;
-        if (c < 0x04D0) return false;  if (c <= 0x04EB) return true;
-        if (c < 0x04EE) return false;  if (c <= 0x04F5) return true;
-        if (c < 0x04F8) return false;  if (c <= 0x04F9) return true;
-        if (c < 0x0531) return false;  if (c <= 0x0556) return true;
-        if (c == 0x0559) return true;
-        if (c < 0x0561) return false;  if (c <= 0x0586) return true;
-        if (c < 0x05D0) return false;  if (c <= 0x05EA) return true;
-        if (c < 0x05F0) return false;  if (c <= 0x05F2) return true;
-        if (c < 0x0621) return false;  if (c <= 0x063A) return true;
-        if (c < 0x0641) return false;  if (c <= 0x064A) return true;
-        if (c < 0x0671) return false;  if (c <= 0x06B7) return true;
-        if (c < 0x06BA) return false;  if (c <= 0x06BE) return true;
-        if (c < 0x06C0) return false;  if (c <= 0x06CE) return true;
-        if (c < 0x06D0) return false;  if (c <= 0x06D3) return true;
-        if (c == 0x06D5) return true;
-        if (c < 0x06E5) return false;  if (c <= 0x06E6) return true;
-        if (c < 0x0905) return false;  if (c <= 0x0939) return true;
-        if (c == 0x093D) return true;
-        if (c < 0x0958) return false;  if (c <= 0x0961) return true;
-        if (c < 0x0985) return false;  if (c <= 0x098C) return true;
-        if (c < 0x098F) return false;  if (c <= 0x0990) return true;
-        if (c < 0x0993) return false;  if (c <= 0x09A8) return true;
-        if (c < 0x09AA) return false;  if (c <= 0x09B0) return true;
-        if (c == 0x09B2) return true;
-        if (c < 0x09B6) return false;  if (c <= 0x09B9) return true;
-        if (c < 0x09DC) return false;  if (c <= 0x09DD) return true;
-        if (c < 0x09DF) return false;  if (c <= 0x09E1) return true;
-        if (c < 0x09F0) return false;  if (c <= 0x09F1) return true;
-        if (c < 0x0A05) return false;  if (c <= 0x0A0A) return true;
-        if (c < 0x0A0F) return false;  if (c <= 0x0A10) return true;
-        if (c < 0x0A13) return false;  if (c <= 0x0A28) return true;
-        if (c < 0x0A2A) return false;  if (c <= 0x0A30) return true;
-        if (c < 0x0A32) return false;  if (c <= 0x0A33) return true;
-        if (c < 0x0A35) return false;  if (c <= 0x0A36) return true;
-        if (c < 0x0A38) return false;  if (c <= 0x0A39) return true;
-        if (c < 0x0A59) return false;  if (c <= 0x0A5C) return true;
-        if (c == 0x0A5E) return true;
-        if (c < 0x0A72) return false;  if (c <= 0x0A74) return true;
-        if (c < 0x0A85) return false;  if (c <= 0x0A8B) return true;
-        if (c == 0x0A8D) return true;
-        if (c < 0x0A8F) return false;  if (c <= 0x0A91) return true;
-        if (c < 0x0A93) return false;  if (c <= 0x0AA8) return true;
-        if (c < 0x0AAA) return false;  if (c <= 0x0AB0) return true;
-        if (c < 0x0AB2) return false;  if (c <= 0x0AB3) return true;
-        if (c < 0x0AB5) return false;  if (c <= 0x0AB9) return true;
-        if (c == 0x0ABD) return true;
-        if (c == 0x0AE0) return true;
-        if (c < 0x0B05) return false;  if (c <= 0x0B0C) return true;
-        if (c < 0x0B0F) return false;  if (c <= 0x0B10) return true;
-        if (c < 0x0B13) return false;  if (c <= 0x0B28) return true;
-        if (c < 0x0B2A) return false;  if (c <= 0x0B30) return true;
-        if (c < 0x0B32) return false;  if (c <= 0x0B33) return true;
-        if (c < 0x0B36) return false;  if (c <= 0x0B39) return true;
-        if (c == 0x0B3D) return true;
-        if (c < 0x0B5C) return false;  if (c <= 0x0B5D) return true;
-        if (c < 0x0B5F) return false;  if (c <= 0x0B61) return true;
-        if (c < 0x0B85) return false;  if (c <= 0x0B8A) return true;
-        if (c < 0x0B8E) return false;  if (c <= 0x0B90) return true;
-        if (c < 0x0B92) return false;  if (c <= 0x0B95) return true;
-        if (c < 0x0B99) return false;  if (c <= 0x0B9A) return true;
-        if (c == 0x0B9C) return true;
-        if (c < 0x0B9E) return false;  if (c <= 0x0B9F) return true;
-        if (c < 0x0BA3) return false;  if (c <= 0x0BA4) return true;
-        if (c < 0x0BA8) return false;  if (c <= 0x0BAA) return true;
-        if (c < 0x0BAE) return false;  if (c <= 0x0BB5) return true;
-        if (c < 0x0BB7) return false;  if (c <= 0x0BB9) return true;
-        if (c < 0x0C05) return false;  if (c <= 0x0C0C) return true;
-        if (c < 0x0C0E) return false;  if (c <= 0x0C10) return true;
-        if (c < 0x0C12) return false;  if (c <= 0x0C28) return true;
-        if (c < 0x0C2A) return false;  if (c <= 0x0C33) return true;
-        if (c < 0x0C35) return false;  if (c <= 0x0C39) return true;
-        if (c < 0x0C60) return false;  if (c <= 0x0C61) return true;
-        if (c < 0x0C85) return false;  if (c <= 0x0C8C) return true;
-        if (c < 0x0C8E) return false;  if (c <= 0x0C90) return true;
-        if (c < 0x0C92) return false;  if (c <= 0x0CA8) return true;
-        if (c < 0x0CAA) return false;  if (c <= 0x0CB3) return true;
-        if (c < 0x0CB5) return false;  if (c <= 0x0CB9) return true;
-        if (c == 0x0CDE) return true;
-        if (c < 0x0CE0) return false;  if (c <= 0x0CE1) return true;
-        if (c < 0x0D05) return false;  if (c <= 0x0D0C) return true;
-        if (c < 0x0D0E) return false;  if (c <= 0x0D10) return true;
-        if (c < 0x0D12) return false;  if (c <= 0x0D28) return true;
-        if (c < 0x0D2A) return false;  if (c <= 0x0D39) return true;
-        if (c < 0x0D60) return false;  if (c <= 0x0D61) return true;
-        if (c < 0x0E01) return false;  if (c <= 0x0E2E) return true;
-        if (c == 0x0E30) return true;
-        if (c < 0x0E32) return false;  if (c <= 0x0E33) return true;
-        if (c < 0x0E40) return false;  if (c <= 0x0E45) return true;
-        if (c < 0x0E81) return false;  if (c <= 0x0E82) return true;
-        if (c == 0x0E84) return true;
-        if (c < 0x0E87) return false;  if (c <= 0x0E88) return true;
-        if (c == 0x0E8A) return true;
-        if (c == 0x0E8D) return true;
-        if (c < 0x0E94) return false;  if (c <= 0x0E97) return true;
-        if (c < 0x0E99) return false;  if (c <= 0x0E9F) return true;
-        if (c < 0x0EA1) return false;  if (c <= 0x0EA3) return true;
-        if (c == 0x0EA5) return true;
-        if (c == 0x0EA7) return true;
-        if (c < 0x0EAA) return false;  if (c <= 0x0EAB) return true;
-        if (c < 0x0EAD) return false;  if (c <= 0x0EAE) return true;
-        if (c == 0x0EB0) return true;
-        if (c < 0x0EB2) return false;  if (c <= 0x0EB3) return true;
-        if (c == 0x0EBD) return true;
-        if (c < 0x0EC0) return false;  if (c <= 0x0EC4) return true;
-        if (c < 0x0F40) return false;  if (c <= 0x0F47) return true;
-        if (c < 0x0F49) return false;  if (c <= 0x0F69) return true;
-        if (c < 0x10A0) return false;  if (c <= 0x10C5) return true;
-        if (c < 0x10D0) return false;  if (c <= 0x10F6) return true;
-        if (c == 0x1100) return true;
-        if (c < 0x1102) return false;  if (c <= 0x1103) return true;
-        if (c < 0x1105) return false;  if (c <= 0x1107) return true;
-        if (c == 0x1109) return true;
-        if (c < 0x110B) return false;  if (c <= 0x110C) return true;
-        if (c < 0x110E) return false;  if (c <= 0x1112) return true;
-        if (c == 0x113C) return true;
-        if (c == 0x113E) return true;
-        if (c == 0x1140) return true;
-        if (c == 0x114C) return true;
-        if (c == 0x114E) return true;
-        if (c == 0x1150) return true;
-        if (c < 0x1154) return false;  if (c <= 0x1155) return true;
-        if (c == 0x1159) return true;
-        if (c < 0x115F) return false;  if (c <= 0x1161) return true;
-        if (c == 0x1163) return true;
-        if (c == 0x1165) return true;
-        if (c == 0x1167) return true;
-        if (c == 0x1169) return true;
-        if (c < 0x116D) return false;  if (c <= 0x116E) return true;
-        if (c < 0x1172) return false;  if (c <= 0x1173) return true;
-        if (c == 0x1175) return true;
-        if (c == 0x119E) return true;
-        if (c == 0x11A8) return true;
-        if (c == 0x11AB) return true;
-        if (c < 0x11AE) return false;  if (c <= 0x11AF) return true;
-        if (c < 0x11B7) return false;  if (c <= 0x11B8) return true;
-        if (c == 0x11BA) return true;
-        if (c < 0x11BC) return false;  if (c <= 0x11C2) return true;
-        if (c == 0x11EB) return true;
-        if (c == 0x11F0) return true;
-        if (c == 0x11F9) return true;
-        if (c < 0x1E00) return false;  if (c <= 0x1E9B) return true;
-        if (c < 0x1EA0) return false;  if (c <= 0x1EF9) return true;
-        if (c < 0x1F00) return false;  if (c <= 0x1F15) return true;
-        if (c < 0x1F18) return false;  if (c <= 0x1F1D) return true;
-        if (c < 0x1F20) return false;  if (c <= 0x1F45) return true;
-        if (c < 0x1F48) return false;  if (c <= 0x1F4D) return true;
-        if (c < 0x1F50) return false;  if (c <= 0x1F57) return true;
-        if (c == 0x1F59) return true;
-        if (c == 0x1F5B) return true;
-        if (c == 0x1F5D) return true;
-        if (c < 0x1F5F) return false;  if (c <= 0x1F7D) return true;
-        if (c < 0x1F80) return false;  if (c <= 0x1FB4) return true;
-        if (c < 0x1FB6) return false;  if (c <= 0x1FBC) return true;
-        if (c == 0x1FBE) return true;
-        if (c < 0x1FC2) return false;  if (c <= 0x1FC4) return true;
-        if (c < 0x1FC6) return false;  if (c <= 0x1FCC) return true;
-        if (c < 0x1FD0) return false;  if (c <= 0x1FD3) return true;
-        if (c < 0x1FD6) return false;  if (c <= 0x1FDB) return true;
-        if (c < 0x1FE0) return false;  if (c <= 0x1FEC) return true;
-        if (c < 0x1FF2) return false;  if (c <= 0x1FF4) return true;
-        if (c < 0x1FF6) return false;  if (c <= 0x1FFC) return true;
-        if (c == 0x2126) return true;
-        if (c < 0x212A) return false;  if (c <= 0x212B) return true;
-        if (c == 0x212E) return true;
-        if (c < 0x2180) return false;  if (c <= 0x2182) return true;
-        if (c == 0x3007) return true;                          // ideographic
-        if (c < 0x3021) return false;  if (c <= 0x3029) return true;  // ideo
-        if (c < 0x3041) return false;  if (c <= 0x3094) return true;
-        if (c < 0x30A1) return false;  if (c <= 0x30FA) return true;
-        if (c < 0x3105) return false;  if (c <= 0x312C) return true;
-        if (c < 0x4E00) return false;  if (c <= 0x9FA5) return true;  // ideo
-        if (c < 0xAC00) return false;  if (c <= 0xD7A3) return true;
-      
-        return false;
-        
-    }
-
-    /**
-     * This is a utility function for determining whether a specified character
-     * is a combining character according to production 87
-     * of the XML 1.0 specification.
-     *
-     * @param c <code>char</code> to check.
-     * @return <code>boolean</code> true if it's a combining character,
-     *         false otherwise.
-     */
-    public static boolean isXMLCombiningChar(char c) {
-        // CombiningChar
-        if (c < 0x0300) return false;  if (c <= 0x0345) return true;
-        if (c < 0x0360) return false;  if (c <= 0x0361) return true;
-        if (c < 0x0483) return false;  if (c <= 0x0486) return true;
-        if (c < 0x0591) return false;  if (c <= 0x05A1) return true;
-                                       
-        if (c < 0x05A3) return false;  if (c <= 0x05B9) return true;
-        if (c < 0x05BB) return false;  if (c <= 0x05BD) return true;
-        if (c == 0x05BF) return true;
-        if (c < 0x05C1) return false;  if (c <= 0x05C2) return true;
-                                       
-        if (c == 0x05C4) return true;
-        if (c < 0x064B) return false;  if (c <= 0x0652) return true;
-        if (c == 0x0670) return true;
-        if (c < 0x06D6) return false;  if (c <= 0x06DC) return true;
-                                       
-        if (c < 0x06DD) return false;  if (c <= 0x06DF) return true;
-        if (c < 0x06E0) return false;  if (c <= 0x06E4) return true;
-        if (c < 0x06E7) return false;  if (c <= 0x06E8) return true;
-                                       
-        if (c < 0x06EA) return false;  if (c <= 0x06ED) return true;
-        if (c < 0x0901) return false;  if (c <= 0x0903) return true;
-        if (c == 0x093C) return true;
-        if (c < 0x093E) return false;  if (c <= 0x094C) return true;
-                                       
-        if (c == 0x094D) return true;
-        if (c < 0x0951) return false;  if (c <= 0x0954) return true;
-        if (c < 0x0962) return false;  if (c <= 0x0963) return true;
-        if (c < 0x0981) return false;  if (c <= 0x0983) return true;
-                                       
-        if (c == 0x09BC) return true;
-        if (c == 0x09BE) return true;
-        if (c == 0x09BF) return true;
-        if (c < 0x09C0) return false;  if (c <= 0x09C4) return true;
-        if (c < 0x09C7) return false;  if (c <= 0x09C8) return true;
-                                       
-        if (c < 0x09CB) return false;  if (c <= 0x09CD) return true;
-        if (c == 0x09D7) return true;
-        if (c < 0x09E2) return false;  if (c <= 0x09E3) return true;
-        if (c == 0x0A02) return true;
-        if (c == 0x0A3C) return true;
-                                       
-        if (c == 0x0A3E) return true;
-        if (c == 0x0A3F) return true;
-        if (c < 0x0A40) return false;  if (c <= 0x0A42) return true;
-        if (c < 0x0A47) return false;  if (c <= 0x0A48) return true;
-                                       
-        if (c < 0x0A4B) return false;  if (c <= 0x0A4D) return true;
-        if (c < 0x0A70) return false;  if (c <= 0x0A71) return true;
-        if (c < 0x0A81) return false;  if (c <= 0x0A83) return true;
-        if (c == 0x0ABC) return true;
-                                       
-        if (c < 0x0ABE) return false;  if (c <= 0x0AC5) return true;
-        if (c < 0x0AC7) return false;  if (c <= 0x0AC9) return true;
-        if (c < 0x0ACB) return false;  if (c <= 0x0ACD) return true;
-                                       
-        if (c < 0x0B01) return false;  if (c <= 0x0B03) return true;
-        if (c == 0x0B3C) return true;
-        if (c < 0x0B3E) return false;  if (c <= 0x0B43) return true;
-        if (c < 0x0B47) return false;  if (c <= 0x0B48) return true;
-                                       
-        if (c < 0x0B4B) return false;  if (c <= 0x0B4D) return true;
-        if (c < 0x0B56) return false;  if (c <= 0x0B57) return true;
-        if (c < 0x0B82) return false;  if (c <= 0x0B83) return true;
-                                       
-        if (c < 0x0BBE) return false;  if (c <= 0x0BC2) return true;
-        if (c < 0x0BC6) return false;  if (c <= 0x0BC8) return true;
-        if (c < 0x0BCA) return false;  if (c <= 0x0BCD) return true;
-        if (c == 0x0BD7) return true;
-                                       
-        if (c < 0x0C01) return false;  if (c <= 0x0C03) return true;
-        if (c < 0x0C3E) return false;  if (c <= 0x0C44) return true;
-        if (c < 0x0C46) return false;  if (c <= 0x0C48) return true;
-                                       
-        if (c < 0x0C4A) return false;  if (c <= 0x0C4D) return true;
-        if (c < 0x0C55) return false;  if (c <= 0x0C56) return true;
-        if (c < 0x0C82) return false;  if (c <= 0x0C83) return true;
-                                       
-        if (c < 0x0CBE) return false;  if (c <= 0x0CC4) return true;
-        if (c < 0x0CC6) return false;  if (c <= 0x0CC8) return true;
-        if (c < 0x0CCA) return false;  if (c <= 0x0CCD) return true;
-                                       
-        if (c < 0x0CD5) return false;  if (c <= 0x0CD6) return true;
-        if (c < 0x0D02) return false;  if (c <= 0x0D03) return true;
-        if (c < 0x0D3E) return false;  if (c <= 0x0D43) return true;
-                                       
-        if (c < 0x0D46) return false;  if (c <= 0x0D48) return true;
-        if (c < 0x0D4A) return false;  if (c <= 0x0D4D) return true;
-        if (c == 0x0D57) return true;
-        if (c == 0x0E31) return true;
-                                       
-        if (c < 0x0E34) return false;  if (c <= 0x0E3A) return true;
-        if (c < 0x0E47) return false;  if (c <= 0x0E4E) return true;
-        if (c == 0x0EB1) return true;
-        if (c < 0x0EB4) return false;  if (c <= 0x0EB9) return true;
-                                       
-        if (c < 0x0EBB) return false;  if (c <= 0x0EBC) return true;
-        if (c < 0x0EC8) return false;  if (c <= 0x0ECD) return true;
-        if (c < 0x0F18) return false;  if (c <= 0x0F19) return true;
-        if (c == 0x0F35) return true;
-                                       
-        if (c == 0x0F37) return true;
-        if (c == 0x0F39) return true;
-        if (c == 0x0F3E) return true;
-        if (c == 0x0F3F) return true;
-        if (c < 0x0F71) return false;  if (c <= 0x0F84) return true;
-                                       
-        if (c < 0x0F86) return false;  if (c <= 0x0F8B) return true;
-        if (c < 0x0F90) return false;  if (c <= 0x0F95) return true;
-        if (c == 0x0F97) return true;
-        if (c < 0x0F99) return false;  if (c <= 0x0FAD) return true;
-                                       
-        if (c < 0x0FB1) return false;  if (c <= 0x0FB7) return true;
-        if (c == 0x0FB9) return true;
-        if (c < 0x20D0) return false;  if (c <= 0x20DC) return true;
-        if (c == 0x20E1) return true;
-                                       
-        if (c < 0x302A) return false;  if (c <= 0x302F) return true;
-        if (c == 0x3099) return true;
-        if (c == 0x309A) return true; 
-        
-        return false;
-        
-    }
-    
-    /**
-     * This is a utility function for determining whether a specified 
-     * character is an extender according to production 88 of the XML 1.0
-     * specification.
-     *
-     * @param c <code>char</code> to check.
-     * @return <code>String</code> true if it's an extender, false otherwise.
-     */
-    public static boolean isXMLExtender(char c) {
-
-        if (c < 0x00B6) return false;  // quick short circuit
-
-        // Extenders                               
-        if (c == 0x00B7) return true;
-        if (c == 0x02D0) return true;
-        if (c == 0x02D1) return true;
-        if (c == 0x0387) return true;
-        if (c == 0x0640) return true;
-        if (c == 0x0E46) return true;
-        if (c == 0x0EC6) return true;
-        if (c == 0x3005) return true;
-                                       
-        if (c < 0x3031) return false;  if (c <= 0x3035) return true;
-        if (c < 0x309D) return false;  if (c <= 0x309E) return true;
-        if (c < 0x30FC) return false;  if (c <= 0x30FE) return true;
-        
-        return false;
-        
-    }
-      
-    /**
-     * This is a utility function for determining whether a specified 
-     * Unicode character
-     * is a digit according to production 88 of the XML 1.0 specification.
-     *
-     * @param c <code>char</code> to check for XML digit compliance
-     * @return <code>boolean</code> true if it's a digit, false otherwise
-     */
-    public static boolean isXMLDigit(char c) {
-      
-        if (c < 0x0030) return false;  if (c <= 0x0039) return true;
-        if (c < 0x0660) return false;  if (c <= 0x0669) return true;
-        if (c < 0x06F0) return false;  if (c <= 0x06F9) return true;
-        if (c < 0x0966) return false;  if (c <= 0x096F) return true;
-                                       
-        if (c < 0x09E6) return false;  if (c <= 0x09EF) return true;
-        if (c < 0x0A66) return false;  if (c <= 0x0A6F) return true;
-        if (c < 0x0AE6) return false;  if (c <= 0x0AEF) return true;
-                                       
-        if (c < 0x0B66) return false;  if (c <= 0x0B6F) return true;
-        if (c < 0x0BE7) return false;  if (c <= 0x0BEF) return true;
-        if (c < 0x0C66) return false;  if (c <= 0x0C6F) return true;
-                                       
-        if (c < 0x0CE6) return false;  if (c <= 0x0CEF) return true;
-        if (c < 0x0D66) return false;  if (c <= 0x0D6F) return true;
-        if (c < 0x0E50) return false;  if (c <= 0x0E59) return true;
-                                       
-        if (c < 0x0ED0) return false;  if (c <= 0x0ED9) return true;
-        if (c < 0x0F20) return false;  if (c <= 0x0F29) return true; 
-      
-        return false;
-    }  
-    
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/AbstractDOMAdapter.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/AbstractDOMAdapter.java
deleted file mode 100644
index c96df73..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/AbstractDOMAdapter.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*-- 
-
- $Id: AbstractDOMAdapter.java,v 1.1 2009/05/27 21:46:17 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-package org.jdom.adapters;
-
-import java.io.*;
-import java.lang.reflect.*;
-
-import org.jdom.*;
-import org.w3c.dom.*;
-import org.w3c.dom.Document;
-
-/**
- * A DOMAdapter utility abstract base class.
- * 
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:17 $
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- */
-public abstract class AbstractDOMAdapter implements DOMAdapter {
-
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: AbstractDOMAdapter.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:17 $ $Name:  $";
-
-    /**
-     * This creates a new <code>{@link Document}</code> from an
-     * existing <code>InputStream</code> by letting a DOM
-     * parser handle parsing using the supplied stream.
-     *
-     * @param filename file to parse.
-     * @param validate <code>boolean</code> to indicate if validation should occur.
-     * @return <code>Document</code> - instance ready for use.
-     * @throws IOException when I/O error occurs.
-     * @throws JDOMException when errors occur in parsing.
-     */
-    public Document getDocument(File filename, boolean validate)
-        throws IOException, JDOMException {
-
-        return getDocument(new FileInputStream(filename), validate);
-    }
-
-    /**
-     * This creates a new <code>{@link Document}</code> from an
-     * existing <code>InputStream</code> by letting a DOM
-     * parser handle parsing using the supplied stream.
-     *
-     * @param in <code>InputStream</code> to parse.
-     * @param validate <code>boolean</code> to indicate if validation should occur.
-     * @return <code>Document</code> - instance ready for use.
-     * @throws IOException when I/O error occurs.
-     * @throws JDOMException when errors occur in parsing.
-     */
-    public abstract Document getDocument(InputStream in, boolean validate)
-        throws IOException, JDOMException;
-
-    /**
-     * This creates an empty <code>Document</code> object based
-     * on a specific parser implementation.
-     *
-     * @return <code>Document</code> - created DOM Document.
-     * @throws JDOMException when errors occur.
-     */
-    public abstract Document createDocument() throws JDOMException;
-
-    /**
-     * This creates an empty <code>Document</code> object based
-     * on a specific parser implementation with the given DOCTYPE.
-     * If the doctype parameter is null, the behavior is the same as
-     * calling <code>createDocument()</code>.
-     *
-     * @param doctype Initial <code>DocType</code> of the document.
-     * @return <code>Document</code> - created DOM Document.
-     * @throws JDOMException when errors occur.
-     */
-    public Document createDocument(DocType doctype) throws JDOMException {
-        if (doctype == null) {
-            return createDocument();
-        }
-  
-        DOMImplementation domImpl = createDocument().getImplementation();
-        DocumentType domDocType = domImpl.createDocumentType(
-                                      doctype.getElementName(),
-                                      doctype.getPublicID(),
-                                      doctype.getSystemID());
-
-        // Set the internal subset if possible
-        setInternalSubset(domDocType, doctype.getInternalSubset());
-
-        return domImpl.createDocument("http://temporary",
-                                      doctype.getElementName(),
-                                      domDocType);
-    }
-
-    /**
-     * This attempts to change the DocumentType to have the given internal DTD 
-     * subset value.  This is not a standard ability in DOM, so it's only
-     * available with some parsers.  Subclasses can alter the mechanism by
-     * which the attempt is made to set the value.
-     *
-     * @param dt DocumentType to be altered
-     * @param s String to use as the internal DTD subset
-     */
-    protected void setInternalSubset(DocumentType dt, String s) {
-        if (dt == null || s == null) return;
-
-        // Default behavior is to attempt a setInternalSubset() call using
-        // reflection.  This method is not part of the DOM spec, but it's
-        // available on Xerces 1.4.4+.  It's not currently in Crimson.
-        try {
-            Class dtclass = dt.getClass();
-            Method setInternalSubset = dtclass.getMethod(
-                "setInternalSubset", new Class[] {java.lang.String.class});
-            setInternalSubset.invoke(dt, new Object[] {s});
-        }
-        catch (Exception e) {
-            // ignore
-        }
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/CrimsonDOMAdapter.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/CrimsonDOMAdapter.java
deleted file mode 100644
index 40ab6ab..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/CrimsonDOMAdapter.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*-- 
-
- $Id: CrimsonDOMAdapter.java,v 1.1 2009/05/27 21:46:17 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-package org.jdom.adapters;
-
-import java.io.*;
-import java.lang.reflect.*;
-
-import org.jdom.*;
-import org.w3c.dom.Document;
-import org.xml.sax.*;
-
-/**
- * An adapter for the Apache Crimson DOM parser.
- * 
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:17 $
- * @author  Jason Hunter
- */
-public class CrimsonDOMAdapter extends AbstractDOMAdapter {
-
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: CrimsonDOMAdapter.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:17 $ $Name:  $";
-
-    /**
-     * This creates a new <code>{@link Document}</code> from an
-     * existing <code>InputStream</code> by letting a DOM
-     * parser handle parsing using the supplied stream.
-     *
-     * @param in <code>InputStream</code> to parse.
-     * @param validate <code>boolean</code> to indicate if validation should occur.
-     * @return <code>Document</code> - instance ready for use.
-     * @throws IOException when I/O error occurs.
-     * @throws JDOMException when errors occur in parsing.
-     */
-    public Document getDocument(InputStream in, boolean validate)
-        throws IOException, JDOMException  {
-
-        try {
-            Class[] parameterTypes = new Class[2];
-            parameterTypes[0] = Class.forName("java.io.InputStream");
-            parameterTypes[1] = boolean.class;
-
-            Object[] args = new Object[2];
-            args[0] = in;
-            args[1] = new Boolean(false);
-
-            // Load the parser class and invoke the parse method
-            Class parserClass = Class.forName("org.apache.crimson.tree.XmlDocument");
-            Method createXmlDocument =
-                parserClass.getMethod("createXmlDocument", parameterTypes);
-            Document doc =
-                (Document)createXmlDocument.invoke(null, args);
-
-            return doc;
-
-        } catch (InvocationTargetException e) {
-            Throwable targetException = e.getTargetException();
-            if (targetException instanceof org.xml.sax.SAXParseException) {
-                SAXParseException parseException = (SAXParseException)targetException;
-                throw new JDOMException("Error on line " + parseException.getLineNumber() +
-                                      " of XML document: " + parseException.getMessage(), parseException);
-            } else if (targetException instanceof IOException) {
-                IOException ioException = (IOException) targetException;
-                throw ioException;
-            } else {
-                throw new JDOMException(targetException.getMessage(), targetException);
-            }
-        } catch (Exception e) {
-            throw new JDOMException(e.getClass().getName() + ": " +
-                                  e.getMessage(), e);
-        }
-    }
-
-    /**
-     * This creates an empty <code>Document</code> object based
-     * on a specific parser implementation.
-     *
-     * @return <code>Document</code> - created DOM Document.
-     * @throws JDOMException when errors occur.
-     */
-    public Document createDocument() throws JDOMException {
-        try {
-            return
-                (Document)Class.forName(
-                    "org.apache.crimson.tree.XmlDocument")
-                    .newInstance();
-
-        } catch (Exception e) {
-            throw new JDOMException(e.getClass().getName() + ": " +
-                                  e.getMessage() + " when creating document", e);
-        }
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/DOMAdapter.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/DOMAdapter.java
deleted file mode 100644
index 7c4a562..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/DOMAdapter.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*-- 
-
- $Id: DOMAdapter.java,v 1.1 2009/05/27 21:46:17 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-package org.jdom.adapters;
-
-import java.io.*;
-
-import org.jdom.*;
-import org.w3c.dom.Document;
-
-/**
- * Defines a standard set of adapter methods for interfacing with a DOM parser
- * and obtaining a DOM {@link org.w3c.dom.Document org.w3c.dom.Document} object.
- * Implementing classes map these calls to DOM parser-specific calls, allowing
- * any third-party parser to be used with JDOM.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:17 $
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- */
-public interface DOMAdapter {
-
-    /**
-     * This creates a new <code>Document</code> from a
-     * given filename by letting a DOM parser handle parsing from the file.
-     *
-     * @param filename file to parse.
-     * @param validate <code>boolean</code> to indicate if validation 
-     * should occur.
-     * @return <code>Document</code> - instance ready for use.
-     * @throws IOException when I/O error occurs.
-     * @throws JDOMException when errors occur in parsing.
-     */
-    public Document getDocument(File filename, boolean validate)
-        throws IOException, JDOMException;
-
-    /**
-     * This creates a new <code>Document</code> from an
-     * existing <code>InputStream</code> by letting a DOM
-     * parser handle parsing using the supplied stream.
-     *
-     * @param in <code>InputStream</code> to parse.
-     * @param validate <code>boolean</code> to indicate if validation 
-     * should occur.
-     * @return <code>Document</code> - instance ready for use.
-     * @throws IOException when I/O error occurs.
-     * @throws JDOMException when errors occur in parsing.
-     */
-    public Document getDocument(InputStream in, boolean validate)
-        throws IOException, JDOMException;
-
-    /**
-     * This creates an empty <code>Document</code> object based
-     * on a specific parser implementation.
-     *
-     * @return <code>Document</code> - created DOM Document.
-     * @throws JDOMException when errors occur.
-     */
-    public Document createDocument() throws JDOMException;
-
-    /**
-     * This creates an empty <code>Document</code> object based
-     * on a specific parser implementation with the given DOCTYPE.
-     *
-     * @param doctype Initial <code>DocType</code> of the document.
-     * @return <code>Document</code> - created DOM Document.
-     * @throws JDOMException when errors occur.
-     */
-    public Document createDocument(DocType doctype) throws JDOMException;
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/JAXPDOMAdapter.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/JAXPDOMAdapter.java
deleted file mode 100644
index 2a6b384..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/JAXPDOMAdapter.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*-- 
-
- $Id: JAXPDOMAdapter.java,v 1.1 2009/05/27 21:46:17 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-package org.jdom.adapters;
-
-import java.io.*;
-import java.lang.reflect.*;
-
-import org.jdom.*;
-import org.jdom.input.*;
-import org.w3c.dom.Document;
-
-/**
- * An adapter for any parser supporting the Sun JAXP APIs.
- * 
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:17 $
- * @author  Jason Hunter
- */
-public class JAXPDOMAdapter extends AbstractDOMAdapter {
-
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: JAXPDOMAdapter.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:17 $ $Name:  $";
-
-    /**
-     * This creates a new <code>{@link Document}</code> from an
-     * existing <code>InputStream</code> by letting a JAXP
-     * parser handle parsing using the supplied stream.
-     *
-     * @param in <code>InputStream</code> to parse.
-     * @param validate <code>boolean</code> to indicate if validation 
-     *        should occur.
-     * @return <code>Document</code> - instance ready for use.
-     * @throws IOException when I/O error occurs.
-     * @throws JDOMException when errors occur in parsing.
-      */
-    public Document getDocument(InputStream in, boolean validate)
-        throws IOException, JDOMException {
-
-        try {
-            // Try using JAXP...
-            // Note we need DOM Level 2 and thus JAXP 1.1.
-            Class.forName("javax.xml.transform.Transformer");
-
-            // Try JAXP 1.1 calls to build the document
-            Class factoryClass =
-                Class.forName("javax.xml.parsers.DocumentBuilderFactory");
-
-            // factory = DocumentBuilderFactory.newInstance();
-            Method newParserInstance =
-                factoryClass.getMethod("newInstance", null);
-            Object factory = newParserInstance.invoke(null, null);
-
-            // factory.setValidating(validate);
-            Method setValidating =
-                factoryClass.getMethod("setValidating",
-                                   new Class[]{boolean.class});
-            setValidating.invoke(factory,
-                                 new Object[]{new Boolean(validate)});
-
-            // factory.setNamespaceAware(true);
-            Method setNamespaceAware =
-                factoryClass.getMethod("setNamespaceAware",
-                                       new Class[]{boolean.class});
-            setNamespaceAware.invoke(factory,
-                                 new Object[]{Boolean.TRUE});
-    
-            // jaxpParser = factory.newDocumentBuilder();
-            Method newDocBuilder =
-                factoryClass.getMethod("newDocumentBuilder", null);
-            Object jaxpParser  = newDocBuilder.invoke(factory, null);
-
-            // jaxpParser.setErrorHandler(null);
-            Class parserClass = jaxpParser.getClass();
-            Method setErrorHandler =
-                parserClass.getMethod("setErrorHandler",
-                                 new Class[]{org.xml.sax.ErrorHandler.class});
-            setErrorHandler.invoke(jaxpParser,
-                                 new Object[]{new BuilderErrorHandler()});
-
-            // domDoc = jaxpParser.parse(in);
-            Method parse = parserClass.getMethod(
-                "parse", new Class[]{InputStream.class});
-            org.w3c.dom.Document domDoc = (org.w3c.dom.Document)
-                parse.invoke(jaxpParser, new Object[]{in});
-
-            return domDoc;
-        } catch (InvocationTargetException e) {
-            Throwable targetException = e.getTargetException();
-            if (targetException instanceof IOException) {
-                throw (IOException) targetException;
-            } else {
-                throw new JDOMException(targetException.getMessage(), targetException);
-            }
-        } catch (Exception e) {
-            throw new JDOMException("Reflection failed while parsing a document with JAXP", e); 
-        }
-
-        // Allow all exceptions to pass through
-    }
-
-    /**
-     * This creates an empty <code>Document</code> object based
-     * on a specific parser implementation.
-     *
-     * @return <code>Document</code> - created DOM Document.
-     * @throws JDOMException when errors occur in parsing.
-      */
-    public Document createDocument() 
-        throws JDOMException {
-
-        try {
-            // We need DOM Level 2 and thus JAXP 1.1.
-            // If JAXP 1.0 is all that's available then we error out.
-            Class.forName("javax.xml.transform.Transformer");
-
-            // Try JAXP 1.1 calls to build the document
-            Class factoryClass =
-                Class.forName("javax.xml.parsers.DocumentBuilderFactory");
-
-            // factory = DocumentBuilderFactory.newInstance();
-            Method newParserInstance =
-                factoryClass.getMethod("newInstance", null);
-            Object factory = newParserInstance.invoke(null, null);
-
-            // jaxpParser = factory.newDocumentBuilder();
-            Method newDocBuilder =
-                factoryClass.getMethod("newDocumentBuilder", null);
-            Object jaxpParser  = newDocBuilder.invoke(factory, null);
-
-            // domDoc = jaxpParser.newDocument();
-            Class parserClass = jaxpParser.getClass();
-            Method newDoc = parserClass.getMethod("newDocument", null);
-            org.w3c.dom.Document domDoc =
-                (org.w3c.dom.Document) newDoc.invoke(jaxpParser, null);
-
-            return domDoc;
-        } catch (Exception e) {
-            throw new JDOMException("Reflection failed while creating new JAXP document", e); 
-        }
-
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/OracleV1DOMAdapter.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/OracleV1DOMAdapter.java
deleted file mode 100644
index 4d0736b..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/OracleV1DOMAdapter.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*-- 
-
- $Id: OracleV1DOMAdapter.java,v 1.1 2009/05/27 21:46:16 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-package org.jdom.adapters;
-
-import java.io.*;
-import java.lang.reflect.*;
-
-import org.jdom.*;
-import org.w3c.dom.Document;
-import org.xml.sax.*;
-
-/**
- * An adapter for the Oracle Version 1 DOM parser.
- * 
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:16 $
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- */
-public class OracleV1DOMAdapter extends AbstractDOMAdapter {
-
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: OracleV1DOMAdapter.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:16 $ $Name:  $";
-
-    /**
-     * This creates a new <code>{@link Document}</code> from an
-     * existing <code>InputStream</code> by letting a DOM
-     * parser handle parsing using the supplied stream.
-     *
-     * @param in <code>InputStream</code> to parse.
-     * @param validate <code>boolean</code> to indicate if validation should occur.
-     * @return <code>Document</code> - instance ready for use.
-     * @throws IOException when I/O error occurs.
-     * @throws JDOMException when errors occur in parsing.
-     */
-    public Document getDocument(InputStream in, boolean validate)
-        throws IOException, JDOMException  {
-
-        try {
-            // Load the parser class
-            Class parserClass = Class.forName("oracle.xml.parser.XMLParser");
-            Object parser = parserClass.newInstance();
-
-            // Parse the document
-            Method parse =
-                parserClass.getMethod("parse",
-                                      new Class[] {org.xml.sax.InputSource.class});
-            parse.invoke(parser, new Object[] {new InputSource(in)});
-
-            // Get the Document object
-            Method getDocument = parserClass.getMethod("getDocument", null);
-            Document doc = (Document)getDocument.invoke(parser, null);
-
-            return doc;
-        } catch (InvocationTargetException e) {
-            Throwable targetException = e.getTargetException();
-            if (targetException instanceof org.xml.sax.SAXParseException) {
-                SAXParseException parseException = (SAXParseException) targetException;
-                throw new JDOMException("Error on line " + parseException.getLineNumber() +
-                                      " of XML document: " + parseException.getMessage(), parseException);
-            } else if (targetException instanceof IOException) {
-                IOException ioException = (IOException) targetException;
-                throw ioException;
-            } else {
-                throw new JDOMException(targetException.getMessage(), targetException);
-            }
-        } catch (Exception e) {
-            throw new JDOMException(e.getClass().getName() + ": " +
-                                  e.getMessage(), e);
-        }
-    }
-
-    /**
-     * This creates an empty <code>Document</code> object based
-     * on a specific parser implementation.
-     *
-     * @return <code>Document</code> - created DOM Document.
-     * @throws JDOMException when errors occur.
-     */
-    public Document createDocument() throws JDOMException {
-        try {
-            return
-                (Document)Class.forName(
-                    "oracle.xml.parser.XMLDocument")
-                    .newInstance();
-
-        } catch (Exception e) {
-            throw new JDOMException(e.getClass().getName() + ": " +
-                                  e.getMessage() + " when creating document", e);
-        }
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/OracleV2DOMAdapter.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/OracleV2DOMAdapter.java
deleted file mode 100644
index bbe577c..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/OracleV2DOMAdapter.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*-- 
-
- $Id: OracleV2DOMAdapter.java,v 1.1 2009/05/27 21:46:17 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-package org.jdom.adapters;
-
-import java.io.*;
-import java.lang.reflect.*;
-
-import org.jdom.*;
-import org.w3c.dom.Document;
-import org.xml.sax.*;
-
-/**
- * An adapter for the Oracle Version 2 DOM parser.
- * 
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:17 $
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- */
-public class OracleV2DOMAdapter extends AbstractDOMAdapter {
-
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: OracleV2DOMAdapter.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:17 $ $Name:  $";
-
-    /**
-     * This creates a new <code>{@link Document}</code> from an
-     * existing <code>InputStream</code> by letting a DOM
-     * parser handle parsing using the supplied stream.
-     *
-     * @param in <code>InputStream</code> to parse.
-     * @param validate <code>boolean</code> to indicate if validation should occur.
-     * @return <code>Document</code> - instance ready for use.
-     * @throws IOException when I/O error occurs.
-     * @throws JDOMException when errors occur in parsing.
-     */
-    public Document getDocument(InputStream in, boolean validate)
-        throws IOException, JDOMException {
-
-        try {
-            // Load the parser class
-            Class parserClass = Class.forName("oracle.xml.parser.v2.DOMParser");
-            Object parser = parserClass.newInstance();
-
-            // Parse the document
-            Method parse =
-                parserClass.getMethod("parse",
-                                      new Class[] {org.xml.sax.InputSource.class});
-            parse.invoke(parser, new Object[] {new InputSource(in)});
-
-            // Get the Document object
-            Method getDocument = parserClass.getMethod("getDocument", null);
-            Document doc = (Document)getDocument.invoke(parser, null);
-
-            return doc;
-        } catch (InvocationTargetException e) {
-            Throwable targetException = e.getTargetException();
-            if (targetException instanceof org.xml.sax.SAXParseException) {
-                SAXParseException parseException = (SAXParseException)targetException;
-                throw new JDOMException("Error on line " + parseException.getLineNumber() +
-                                      " of XML document: " + parseException.getMessage(), parseException);
-            } else if (targetException instanceof IOException) {
-                IOException ioException = (IOException) targetException;
-                throw ioException;
-            } else {
-                throw new JDOMException(targetException.getMessage(), targetException);
-            }
-        } catch (Exception e) {
-            throw new JDOMException(e.getClass().getName() + ": " +
-                                  e.getMessage(), e);
-        }
-    }
-
-    /**
-     * This creates an empty <code>Document</code> object based
-     * on a specific parser implementation.
-     *
-     * @return <code>Document</code> - created DOM Document.
-     * @throws JDOMException when errors occur.
-     */
-    public Document createDocument() throws JDOMException {
-        try {
-            return
-                (Document)Class.forName(
-                    "oracle.xml.parser.v2.XMLDocument")
-                    .newInstance();
-
-        } catch (Exception e) {
-            throw new JDOMException(e.getClass().getName() + ": " +
-                                  e.getMessage() + " when creating document", e);
-        }
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/XML4JDOMAdapter.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/XML4JDOMAdapter.java
deleted file mode 100644
index fbc8fda..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/XML4JDOMAdapter.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*-- 
-
- $Id: XML4JDOMAdapter.java,v 1.1 2009/05/27 21:46:17 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-package org.jdom.adapters;
-
-import java.io.*;
-import java.lang.reflect.*;
-
-import org.jdom.*;
-import org.jdom.input.*;
-import org.w3c.dom.Document;
-import org.xml.sax.*;
-
-/**
- * An adapter for the IBM XML4J DOM parser.
- * 
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:17 $
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- */
-public class XML4JDOMAdapter extends AbstractDOMAdapter {
-
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: XML4JDOMAdapter.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:17 $ $Name:  $";
-
-    /**
-     * This creates a new <code>{@link Document}</code> from an
-     * existing <code>InputStream</code> by letting a DOM
-     * parser handle parsing using the supplied stream.
-     *
-     * @param in <code>InputStream</code> to parse.
-     * @param validate <code>boolean</code> to indicate if validation should occur.
-     * @return <code>Document</code> - instance ready for use.
-     * @throws IOException when I/O error occurs.
-     * @throws JDOMException when errors occur in parsing.
-     */
-    public Document getDocument(InputStream in, boolean validate)
-        throws IOException, JDOMException  {
-
-        try {
-            /*
-             * IBM XML4J actually uses the Xerces parser, so this is
-             *   all Xerces specific code.
-             */
-
-            // Load the parser class
-            Class parserClass = Class.forName("org.apache.xerces.parsers.DOMParser");
-            Object parser = parserClass.newInstance();
-
-            // Set validation
-            Method setFeature =
-                parserClass.getMethod("setFeature",
-                                      new Class[] {java.lang.String.class,
-                                                   boolean.class});
-            setFeature.invoke(parser, new Object[] {"http://xml.org/sax/features/validation",
-                                                    new Boolean(validate)});
-
-            // Set namespaces
-            setFeature.invoke(parser, new Object[] {"http://xml.org/sax/features/namespaces",
-                                                    new Boolean(false)});
-
-            // Set the error handler
-            if (validate) {
-                Method setErrorHandler =
-                    parserClass.getMethod("setErrorHandler",
-                        new Class[] {ErrorHandler.class});
-                setErrorHandler.invoke(parser, new Object[] {new BuilderErrorHandler()});
-            }
-
-            // Parse the document
-            Method parse =
-                parserClass.getMethod("parse",
-                                      new Class[] {org.xml.sax.InputSource.class});
-            parse.invoke(parser, new Object[]{new InputSource(in)});
-
-            // Get the Document object
-            Method getDocument = parserClass.getMethod("getDocument", null);
-            Document doc = (Document)getDocument.invoke(parser, null);
-
-            return doc;
-        } catch (InvocationTargetException e) {
-            Throwable targetException = e.getTargetException();
-            if (targetException instanceof org.xml.sax.SAXParseException) {
-                SAXParseException parseException = (SAXParseException)targetException;
-                throw new JDOMException("Error on line " + parseException.getLineNumber() +
-                                      " of XML document: " + parseException.getMessage(), parseException);
-            } else if (targetException instanceof IOException) {
-                IOException ioException = (IOException) targetException;
-                throw ioException;
-            } else {
-                throw new JDOMException(targetException.getMessage(), targetException);
-            }
-        } catch (Exception e) {
-            throw new JDOMException(e.getClass().getName() + ": " +
-                                  e.getMessage(), e);
-        }
-    }
-
-    /**
-     * This creates an empty <code>Document</code> object based
-     * on a specific parser implementation.
-     *
-     * @return <code>Document</code> - created DOM Document.
-     * @throws JDOMException when errors occur.
-     */
-    public Document createDocument() throws JDOMException {
-        try {
-            return
-                (Document)Class.forName(
-                    "org.apache.xerces.dom.DocumentImpl")
-                    .newInstance();
-
-        } catch (Exception e) {
-            throw new JDOMException(e.getClass().getName() + ": " +
-                                  e.getMessage() + " while creating document", e);
-        }
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/XercesDOMAdapter.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/XercesDOMAdapter.java
deleted file mode 100644
index 54fb6ce..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/XercesDOMAdapter.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*-- 
-
- $Id: XercesDOMAdapter.java,v 1.1 2009/05/27 21:46:16 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-package org.jdom.adapters;
-
-import java.io.*;
-import java.lang.reflect.*;
-
-import org.jdom.*;
-import org.jdom.input.*;
-import org.w3c.dom.Document;
-import org.xml.sax.*;
-
-/**
- * An adapter for the Apache Xerces DOM parser.
- * 
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:16 $
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- */
-public class XercesDOMAdapter extends AbstractDOMAdapter {
-
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: XercesDOMAdapter.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:16 $ $Name:  $";
-
-    /**
-     * This creates a new <code>{@link Document}</code> from an
-     * existing <code>InputStream</code> by letting a DOM
-     * parser handle parsing using the supplied stream.
-     *
-     * @param in <code>InputStream</code> to parse.
-     * @param validate <code>boolean</code> to indicate if validation 
-     * should occur.
-     * @return <code>Document</code> - instance ready for use.
-     * @throws IOException when I/O error occurs.
-     * @throws JDOMException when errors occur in parsing.
-     */
-    public Document getDocument(InputStream in, boolean validate)
-        throws IOException, JDOMException  {
-
-        try {
-            // Load the parser class
-            Class parserClass =
-                Class.forName("org.apache.xerces.parsers.DOMParser");
-            Object parser = parserClass.newInstance();
-
-            // Set validation
-            Method setFeature = parserClass.getMethod(
-                "setFeature",
-                new Class[] {java.lang.String.class, boolean.class});
-            setFeature.invoke(parser, 
-                new Object[] {"http://xml.org/sax/features/validation",
-                new Boolean(validate)});
-
-            // Set namespaces true
-            setFeature.invoke(parser,
-                new Object[] {"http://xml.org/sax/features/namespaces",
-                new Boolean(true)});
-
-            // Set the error handler
-            if (validate) {
-                Method setErrorHandler = parserClass.getMethod(
-                    "setErrorHandler",
-                    new Class[] {ErrorHandler.class});
-                setErrorHandler.invoke(parser,
-                    new Object[] {new BuilderErrorHandler()});
-            }
-
-            // Parse the document
-            Method parse = parserClass.getMethod(
-                "parse",
-                new Class[] {org.xml.sax.InputSource.class});
-            parse.invoke(parser, new Object[]{new InputSource(in)});
-
-            // Get the Document object
-            Method getDocument = parserClass.getMethod("getDocument", null);
-            Document doc = (Document)getDocument.invoke(parser, null);
-
-            return doc;
-        } catch (InvocationTargetException e) {
-            Throwable targetException = e.getTargetException();
-            if (targetException instanceof org.xml.sax.SAXParseException) {
-                SAXParseException parseException =
-                    (SAXParseException)targetException;
-                throw new JDOMException("Error on line " +
-                                      parseException.getLineNumber() +
-                                      " of XML document: " +
-                                      parseException.getMessage(), e);
-            } else if (targetException instanceof IOException) {
-                IOException ioException = (IOException) targetException;
-                throw ioException;
-            } else {
-                throw new JDOMException(targetException.getMessage(), e);
-            }
-        } catch (Exception e) {
-            throw new JDOMException(e.getClass().getName() + ": " +
-                                  e.getMessage(), e);
-        }
-    }
-
-    /**
-     * This creates an empty <code>Document</code> object based
-     * on a specific parser implementation.
-     *
-     * @return <code>Document</code> - created DOM Document.
-     * @throws JDOMException when errors occur.
-     */
-    public Document createDocument() throws JDOMException {
-        try {
-            return (Document)Class.forName(
-                "org.apache.xerces.dom.DocumentImpl").newInstance();
-        } catch (Exception e) {
-            throw new JDOMException(e.getClass().getName() + ": " +
-                                  e.getMessage() + " when creating document", e);
-        }
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/package.html b/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/package.html
deleted file mode 100644
index ad619ce..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/adapters/package.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<body>
-
-Classes to interface with various DOM implementations.  Not generally
-needed except in truly advanced situations.  JAXPDOMAdapter is most commonly
-used.
-
-</body>
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/AbstractFilter.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/AbstractFilter.java
deleted file mode 100644
index 5204c37..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/AbstractFilter.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*--
-
- $Id: AbstractFilter.java,v 1.1 2009/05/27 21:46:19 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom.filter;
-
-/**
- * Partial implementation of {@link Filter}.
- *
- * @author Bradley S. Huffman
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:19 $
- */
-public abstract class AbstractFilter implements Filter {
-
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: AbstractFilter.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:19 $";
-
-    public Filter negate() {
-        return new NegateFilter(this);
-    }
-
-    public Filter or(Filter filter) {
-        return new OrFilter(this, filter);
-    }
-
-    public Filter and(Filter filter) {
-        return new AndFilter(this, filter);
-    }
-
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/AndFilter.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/AndFilter.java
deleted file mode 100644
index 08b22e1..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/AndFilter.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*--
-
- $Id: AndFilter.java,v 1.1 2009/05/27 21:46:19 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom.filter;
-
-/**
- * Allow two filters to be chained together with a logical
- * <b>and</b> operation.
- *
- * @author Bradley S. Huffman
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:19 $
- */
-final class AndFilter extends AbstractFilter {
-
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: AndFilter.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:19 $";
-
-    // Filter for left side of logical <b>and</b>.
-    private Filter left;
-
-    // Filter for right side of logical <b>and</b>.
-    private Filter right;
-
-    /**
-     * Match if only both supplied filters match.
-     *
-     * @param left left side of logical <b>and</b>
-     * @param right right side of logical <b>and</b>
-     * @throws IllegalArgumentException if either supplied filter is null
-     */
-    public AndFilter(Filter left, Filter right) {
-        if ((left == null) || (right == null)) {
-            throw new IllegalArgumentException("null filter not allowed");
-        }
-        this.left = left;
-        this.right = right;
-    }
-
-    public boolean matches(Object obj) {
-        return left.matches(obj) && right.matches(obj);
-    }
-
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-
-        if (obj instanceof AndFilter) {
-            AndFilter filter = (AndFilter) obj;
-            if ((left.equals(filter.left)  && right.equals(filter.right)) ||
-                (left.equals(filter.right) && right.equals(filter.left))) {
-                    return true;
-            }
-        }
-        return false;
-    }
-
-    public int hashCode() {
-        return (31 * left.hashCode()) + right.hashCode();
-    }
-
-    public String toString() {
-        return new StringBuffer(64)
-                   .append("[AndFilter: ")
-                   .append(left.toString())
-                   .append(",\n")
-                   .append("            ")
-                   .append(right.toString())
-                   .append("]")
-                   .toString();
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/ContentFilter.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/ContentFilter.java
deleted file mode 100644
index e2c4143..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/ContentFilter.java
+++ /dev/null
@@ -1,356 +0,0 @@
-/*--
-
- $Id: ContentFilter.java,v 1.1 2009/05/27 21:46:19 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom.filter;
-
-import org.jdom.*;
-
-/**
- * A general purpose Filter able to represent all legal JDOM objects or a
- * specific subset. Filtering is accomplished by way of a filtering mask in
- * which each bit represents whether a JDOM object is visible or not.
- * For example to view all Text and CDATA nodes in the content of element x.
- * <pre><code>
- *      Filter filter = new ContentFilter(ContentFilter.TEXT |
- *                                        ContentFilter.CDATA);
- *      List content = x.getContent(filter);
- * </code></pre>
- * <p>
- * For those who don't like bit-masking, set methods are provided as an
- * alternative.  For example to allow everything except Comment nodes.
- * <pre><code>
- *      Filter filter =  new ContentFilter();
- *      filter.setCommentVisible(false);
- *      List content = x.getContent(filter);
- * </code></pre>
- * <p>
- * The default is to allow all valid JDOM objects.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:19 $
- * @author Bradley S. Huffman
- */
-public class ContentFilter extends AbstractFilter {
-
-    private static final String CVS_ID =
-      "@(#) $RCSfile: ContentFilter.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:19 $ $Name:  $";
-
-    /** Mask for JDOM {@link Element} objects */
-    public static final int ELEMENT   = 1;
-
-    /** Mask for JDOM {@link CDATA} objects */
-    public static final int CDATA     = 2;
-
-    /** Mask for JDOM {@link Text} objects */
-    public static final int TEXT      = 4;
-
-    /** Mask for JDOM {@link Comment} objects */
-    public static final int COMMENT   = 8;
-
-    /** Mask for JDOM {@link ProcessingInstruction} objects */
-    public static final int PI        = 16;
-
-    /** Mask for JDOM {@link EntityRef} objects */
-    public static final int ENTITYREF = 32;
-
-    /** Mask for JDOM {@link Document} object */
-    public static final int DOCUMENT  = 64;
-
-    /** Mask for JDOM {@link DocType} object */
-    public static final int DOCTYPE = 128;
-
-    /** The JDOM object mask */
-    private int filterMask;
-
-    /**
-     * Default constructor that allows any legal JDOM objects.
-     */
-    public ContentFilter() {
-        setDefaultMask();
-    }
-
-    /**
-     * Set whether all JDOM objects are visible or not.
-     *
-     * @param allVisible <code>true</code> all JDOM objects are visible,
-     *                   <code>false</code> all JDOM objects are hidden.
-     */
-    public ContentFilter(boolean allVisible) {
-        if (allVisible) {
-            setDefaultMask();
-        }
-        else {
-            filterMask &= ~filterMask;
-        }
-    }
-
-    /**
-     * Filter out JDOM objects according to a filtering mask.
-     *
-     * @param mask Mask of JDOM objects to allow.
-     */
-    public ContentFilter(int mask) {
-        setFilterMask(mask);
-    }
-
-    /**
-     * Return current filtering mask.
-     *
-     * @return the current filtering mask
-     */
-    public int getFilterMask() {
-        return filterMask;
-    }
-
-    /**
-     * Set filtering mask.
-     *
-     * @param mask the new filtering mask
-     */
-    public void setFilterMask(int mask) {
-        setDefaultMask();
-        filterMask &= mask;
-    }
-
-    /**
-     * Set this filter to allow all legal JDOM objects.
-     */
-    public void setDefaultMask() {
-        filterMask = ELEMENT | CDATA | TEXT | COMMENT |
-                     PI | ENTITYREF | DOCUMENT | DOCTYPE;
-    }
-
-    /**
-     * Set filter to match only JDOM objects that are legal
-     * document content.
-     */
-    public void setDocumentContent() {
-        filterMask = ELEMENT | COMMENT | PI | DOCTYPE;
-    }
-
-    /**
-     * Set filter to match only JDOM objects that are legal
-     * element content.
-     */
-    public void setElementContent() {
-        filterMask = ELEMENT | CDATA | TEXT |
-                     COMMENT | PI | ENTITYREF;
-    }
-
-    /**
-     * Set visiblity of <code>Element</code> objects.
-     *
-     * @param visible whether Elements are visible, <code>true</code>
-     *        if yes, <code>false</code> if not
-     */
-    public void setElementVisible(boolean visible) {
-        if (visible) {
-            filterMask |= ELEMENT;
-        }
-        else {
-            filterMask &= ~ELEMENT;
-        }
-    }
-
-    /**
-     * Set visiblity of <code>CDATA</code> objects.
-     *
-     * @param visible whether CDATA nodes are visible, <code>true</code>
-     *        if yes, <code>false</code> if not
-     */
-    public void setCDATAVisible(boolean visible) {
-        if (visible) {
-            filterMask |= CDATA;
-        }
-        else {
-            filterMask &= ~CDATA;
-        }
-    }
-
-    /**
-     * Set visiblity of <code>Text</code> objects.
-     *
-     * @param visible whether Text nodes are visible, <code>true</code>
-     *        if yes, <code>false</code> if not
-     */
-    public void setTextVisible(boolean visible) {
-        if (visible) {
-            filterMask |= TEXT;
-        }
-        else {
-            filterMask &= ~TEXT;
-        }
-    }
-
-    /**
-     * Set visiblity of <code>Comment</code> objects.
-     *
-     * @param visible whether Comments are visible, <code>true</code>
-     *        if yes, <code>false</code> if not
-     */
-    public void setCommentVisible(boolean visible) {
-        if (visible) {
-            filterMask |= COMMENT;
-        }
-        else {
-            filterMask &= ~COMMENT;
-        }
-    }
-
-    /**
-     * Set visiblity of <code>ProcessingInstruction</code> objects.
-     *
-     * @param visible whether ProcessingInstructions are visible,
-     *        <code>true</code> if yes, <code>false</code> if not
-     */
-    public void setPIVisible(boolean visible) {
-        if (visible) {
-            filterMask |= PI;
-        }
-        else {
-            filterMask &= ~PI;
-        }
-    }
-
-    /**
-     * Set visiblity of <code>EntityRef</code> objects.
-     *
-     * @param visible whether EntityRefs are visible, <code>true</code>
-     *        if yes, <code>false</code> if not
-     */
-    public void setEntityRefVisible(boolean visible) {
-        if (visible) {
-            filterMask |= ENTITYREF;
-        }
-        else {
-            filterMask &= ~ENTITYREF;
-        }
-    }
-
-    /**
-     * Set visiblity of <code>DocType</code> objects.
-     *
-     * @param visible whether the DocType is visible, <code>true</code>
-     *        if yes, <code>false</code> if not
-     */
-    public void setDocTypeVisible(boolean visible) {
-        if (visible) {
-            filterMask |= DOCTYPE;
-        }
-        else {
-            filterMask &= ~DOCTYPE;
-        }
-    }
-
-    /**
-     * Check to see if the object matches according to the filter mask.
-     *
-     * @param obj The object to verify.
-     * @return <code>true</code> if the objected matched a predfined
-     *           set of rules.
-     */
-    public boolean matches(Object obj) {
-        if (obj instanceof Element) {
-            return (filterMask & ELEMENT) != 0;
-        }
-        else if (obj instanceof CDATA) {  // must come before Text check
-            return (filterMask & CDATA) != 0;
-        }
-        else if (obj instanceof Text) {
-            return (filterMask & TEXT) != 0;
-        }
-        else if (obj instanceof Comment) {
-            return (filterMask & COMMENT) != 0;
-        }
-        else if (obj instanceof ProcessingInstruction) {
-            return (filterMask & PI) != 0;
-        }
-        else if (obj instanceof EntityRef) {
-            return (filterMask & ENTITYREF) != 0;
-        }
-        else if (obj instanceof Document) {
-            return (filterMask & DOCUMENT) != 0;
-        }
-        else if (obj instanceof DocType) {
-            return (filterMask & DOCTYPE) != 0;
-        }
-
-        return false;
-    }
-
-    /**
-     * Returns whether the two filters are equivalent (i&#46;e&#46; the
-     * matching mask values are identical).
-     *
-     * @param  obj                 the object to compare against
-     * @return                     whether the two filters are equal
-     */
-    public boolean equals(Object obj) {
-        // Generated by IntelliJ
-        if (this == obj) return true;
-        if (!(obj instanceof ContentFilter)) return false;
-
-        final ContentFilter filter = (ContentFilter) obj;
-
-        if (filterMask != filter.filterMask) return false;
-
-        return true;
-    }
-
-    public int hashCode() {
-        // Generated by IntelliJ
-        return filterMask;
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/ElementFilter.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/ElementFilter.java
deleted file mode 100644
index 270c6cc..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/ElementFilter.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*--
-
- $Id: ElementFilter.java,v 1.1 2009/05/27 21:46:19 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom.filter;
-
-import java.io.*;
-import org.jdom.*;
-
-/**
- * A Filter that only matches {@link org.jdom.Element} objects.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:19 $
- * @author  Jools Enticknap
- * @author  Bradley S. Huffman
- */
-public class ElementFilter extends AbstractFilter {
-
-    private static final String CVS_ID =
-      "@(#) $RCSfile: ElementFilter.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:19 $ $Name:  $";
-
-    /** The element name */
-    private String name;
-
-    /** The element namespace */
-    private transient Namespace namespace;
-
-    /**
-     * Select only the Elements.
-     */
-    public ElementFilter() {}
-
-    /**
-     * Select only the Elements with the supplied name in any Namespace.
-     *
-     * @param name   The name of the Element.
-     */
-    public ElementFilter(String name) {
-        this.name   = name;
-    }
-
-    /**
-     * Select only the Elements with the supplied Namespace.
-     *
-     * @param namespace The namespace the Element lives in.
-     */
-    public ElementFilter(Namespace namespace) {
-        this.namespace = namespace;
-    }
-
-    /**
-     * Select only the Elements with the supplied name and Namespace.
-     *
-     * @param name   The name of the Element.
-     * @param namespace The namespace the Element lives in.
-     */
-    public ElementFilter(String name, Namespace namespace) {
-        this.name   = name;
-        this.namespace = namespace;
-    }
-
-    /**
-     * Check to see if the object matches a predefined set of rules.
-     *
-     * @param obj The object to verify.
-     * @return <code>true</code> if the objected matched a predfined
-     *           set of rules.
-     */
-    public boolean matches(Object obj) {
-        if (obj instanceof Element) {
-            Element el = (Element) obj;
-            return
-              (this.name == null || this.name.equals(el.getName())) &&
-              (this.namespace == null || this.namespace.equals(el.getNamespace()));
-        }
-        return false;
-    }
-
-    /**
-     * Returns whether the two filters are equivalent (i&#46;e&#46; the
-     * matching names and namespace are equivalent).
-     *
-     * @param  obj                   the object to compare against
-     * @return                     whether the two filters are equal
-     */
-    public boolean equals(Object obj) {
-        // Generated by IntelliJ
-        if (this == obj) return true;
-        if (!(obj instanceof ElementFilter)) return false;
-
-        final ElementFilter filter = (ElementFilter) obj;
-
-        if (name != null ? !name.equals(filter.name) : filter.name != null) return false;
-        if (namespace != null ? !namespace.equals(filter.namespace) : filter.namespace != null) return false;
-
-        return true;
-    }
-
-    public int hashCode() {
-        // Generated by IntelliJ
-        int result;
-        result = (name != null ? name.hashCode() : 0);
-        result = 29 * result + (namespace != null ? namespace.hashCode() : 0);
-        return result;
-    }
-
-    // Support a custom Namespace serialization so no two namespace
-    // object instances may exist for the same prefix/uri pair
-    private void writeObject(ObjectOutputStream out) throws IOException {
-
-        out.defaultWriteObject();
-
-        // We use writeObject() and not writeUTF() to minimize space
-        // This allows for writing pointers to already written strings
-        out.writeObject(namespace.getPrefix());
-        out.writeObject(namespace.getURI());
-    }
-
-    private void readObject(ObjectInputStream in)
-            throws IOException, ClassNotFoundException {
-
-        in.defaultReadObject();
-
-        namespace = Namespace.getNamespace(
-                (String) in.readObject(), (String) in.readObject());
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/Filter.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/Filter.java
deleted file mode 100644
index 7a4e479..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/Filter.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*-- 
-
- $Id: Filter.java,v 1.1 2009/05/27 21:46:19 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-package org.jdom.filter;
-
-
-/**
- * A generalized filter to restrict visibility or mutability on a list.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:19 $
- * @author  Jools Enticknap
- * @author  Bradley S. Huffman
- */
-public interface Filter extends java.io.Serializable {
-    /**
-     * Check to see if the object matches a predefined set of rules.
-     *
-     * @param obj The object to verify.
-     * @return <code>true</code> if the object matches a predfined 
-     *           set of rules.
-     */
-    public boolean matches(Object obj);
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/NegateFilter.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/NegateFilter.java
deleted file mode 100644
index f78fb1e..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/NegateFilter.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*--
-
- $Id: NegateFilter.java,v 1.1 2009/05/27 21:46:19 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom.filter;
-
-/**
- * Filter that is the logical <b>negation</b> operation of another filter.
- *
- *
- * @author Bradley S. Huffman
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:19 $
- */
-final class NegateFilter extends AbstractFilter {
-
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: NegateFilter.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:19 $";
-
-    // Underlying filter.
-    private Filter filter;
-
-    /**
-     * Match if the supplied filter <b>does not</b> match.
-     *
-     * @param filter filter to use.
-     */
-    public NegateFilter(Filter filter) {
-        this.filter = filter;
-    }
-
-    public boolean matches(Object obj) {
-        return !filter.matches(obj);
-    }
-
-    public Filter negate() {
-        return filter;
-    }
-
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-
-        if (obj instanceof NegateFilter) {
-            return filter.equals(((NegateFilter) obj).filter);
-        }
-        return false;
-    }
-
-    public int hashCode() {
-        return ~filter.hashCode();
-    }
-
-    public String toString() {
-        return new StringBuffer(64)
-                   .append("[NegateFilter: ")
-                   .append(filter.toString())
-                   .append("]")
-                   .toString();
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/OrFilter.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/OrFilter.java
deleted file mode 100644
index a367d43..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/OrFilter.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*--
-
- $Id: OrFilter.java,v 1.1 2009/05/27 21:46:19 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom.filter;
-
-/**
- * Allow two filters to be chained together with a logical
- * <b>or</b> operation.
- *
- * @author Bradley S. Huffman
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:19 $
- */
-final class OrFilter extends AbstractFilter {
-
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: OrFilter.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:19 $";
-
-    /** Filter for left side of logical <b>or</b> */
-    private Filter left;
-
-    /** Filter for right side of logical <b>or</b> */
-    private Filter right;
-
-    /**
-     * Match if either of the supplied filters.
-     *
-     * @param left left side of logical <b>or</b>
-     * @param right right side of logical <b>or</b>
-     * @throws IllegalArgumentException if either supplied filter is null
-     */
-    public OrFilter(Filter left, Filter right) {
-        if ((left == null) || (right == null)) {
-            throw new IllegalArgumentException("null filter not allowed");
-        }
-        this.left = left;
-        this.right = right;
-    }
-
-    public boolean matches(Object obj) {
-        return left.matches(obj) || right.matches(obj);
-    }
-
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-
-        if (obj instanceof OrFilter) {
-            OrFilter filter = (OrFilter) obj;
-            if ((left.equals(filter.left)  && right.equals(filter.right)) ||
-                (left.equals(filter.right) && right.equals(filter.left))) {
-                    return true;
-            }
-        }
-        return false;
-    }
-
-    public int hashCode() {
-        return (31 * left.hashCode()) + right.hashCode();
-    }
-
-    public String toString() {
-        return new StringBuffer(64)
-                   .append("[OrFilter: ")
-                   .append(left.toString())
-                   .append(",\n")
-                   .append("           ")
-                   .append(right.toString())
-                   .append("]")
-                   .toString();
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/package.html b/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/package.html
deleted file mode 100644
index 04bc95d..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/filter/package.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<body>
-
-Classes to programmatically filter nodes of a document based on type, name,
-value, or other aspects and to boolean and/or/negate these rules.  Filters can
-be used in methods like getContent(Filter) and getDescendants(Filter).  A
-sampling of generally useful filters are provided here.  Alternate filters can
-be user defined.
-
-</body>
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/BuilderErrorHandler.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/BuilderErrorHandler.java
deleted file mode 100644
index 8c70f0d..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/BuilderErrorHandler.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*-- 
-
- $Id: BuilderErrorHandler.java,v 1.1 2009/05/27 21:46:20 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-package org.jdom.input;
-
-import org.xml.sax.*;
-
-/**
- * The standard JDOM error handler implementation.
- * 
- * @author  Jason Hunter
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:20 $
- */
-
-public class BuilderErrorHandler implements ErrorHandler {
-
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: BuilderErrorHandler.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:20 $ $Name:  $";
-
-    /**
-     * This method is called when a warning has occurred; this indicates
-     * that while no XML rules were broken, something appears to be
-     * incorrect or missing.
-     * The implementation of this method here is a "no op".
-     *
-     * @param exception <code>SAXParseException</code> that occurred.
-     * @throws SAXException when things go wrong
-     */
-    public void warning(SAXParseException exception) throws SAXException {
-        // nothing
-    }
-
-    /**
-     * This method is called in response to an error that has occurred; 
-     * this indicates that a rule was broken, typically in validation, but 
-     * that parsing could reasonably continue.
-     * The implementation of this method here is to rethrow the exception.
-     *
-     * @param exception <code>SAXParseException</code> that occurred.
-     * @throws SAXException when things go wrong
-     */
-    public void error(SAXParseException exception) throws SAXException {
-        throw exception;
-    }
-
-    /**
-     * This method is called in response to a fatal error; this indicates that
-     * a rule has been broken that makes continued parsing either impossible
-     * or an almost certain waste of time.
-     * The implementation of this method here is to rethrow the exception.
-     *
-     * @param exception <code>SAXParseException</code> that occurred.
-     * @throws SAXException when things go wrong
-     */
-    public void fatalError(SAXParseException exception) throws SAXException {
-        throw exception;
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/DOMBuilder.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/DOMBuilder.java
deleted file mode 100644
index 8f5a616..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/DOMBuilder.java
+++ /dev/null
@@ -1,341 +0,0 @@
-/*--
-
- $Id: DOMBuilder.java,v 1.1 2009/05/27 21:46:20 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom.input;
-
-import org.jdom.*;
-import org.jdom.Document;
-import org.jdom.Element;
-import org.w3c.dom.*;
-
-/**
- * Builds a JDOM {@link org.jdom.Document org.jdom.Document} from a pre-existing
- * DOM {@link org.w3c.dom.Document org.w3c.dom.Document}. Also handy for testing
- * builds from files to sanity check {@link SAXBuilder}.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:20 $
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- * @author  Philip Nelson
- * @author  Kevin Regan
- * @author  Yusuf Goolamabbas
- * @author  Dan Schaffer
- * @author  Bradley S. Huffman
- */
-public class DOMBuilder {
-
-    private static final String CVS_ID =
-      "@(#) $RCSfile: DOMBuilder.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:20 $ $Name:  $";
-
-    /** Adapter class to use */
-    private String adapterClass;
-
-    /** The factory for creating new JDOM objects */
-    private JDOMFactory factory = new DefaultJDOMFactory();
-
-    /**
-     * This creates a new DOMBuilder which will attempt to first locate
-     * a parser via JAXP, then will try to use a set of default parsers.
-     * The underlying parser will not validate.
-     */
-    public DOMBuilder() {
-    }
-
-    /**
-     * This creates a new DOMBuilder using the specified DOMAdapter
-     * implementation as a way to choose the underlying parser.
-     * The underlying parser will not validate.
-     *
-     * @param adapterClass <code>String</code> name of class
-     *                     to use for DOM building.
-     */
-    public DOMBuilder(String adapterClass) {
-        this.adapterClass = adapterClass;
-    }
-
-    /*
-     * This sets a custom JDOMFactory for the builder.  Use this to build
-     * the tree with your own subclasses of the JDOM classes.
-     *
-     * @param factory <code>JDOMFactory</code> to use
-     */
-    public void setFactory(JDOMFactory factory) {
-        this.factory = factory;
-    }
-
-    /**
-     * Returns the current {@link org.jdom.JDOMFactory} in use.
-     * @return the factory in use
-     */
-    public JDOMFactory getFactory() {
-        return factory;
-    }
-
-    /**
-     * This will build a JDOM tree from an existing DOM tree.
-     *
-     * @param domDocument <code>org.w3c.dom.Document</code> object
-     * @return <code>Document</code> - JDOM document object.
-     */
-    public Document build(org.w3c.dom.Document domDocument) {
-        Document doc = factory.document(null);
-        buildTree(domDocument, doc, null, true);
-        return doc;
-    }
-
-    /**
-     * This will build a JDOM Element from an existing DOM Element
-     *
-     * @param domElement <code> org.w3c.dom.Element</code> object
-     * @return <code>Element</code> - JDOM Element object
-     */
-    public org.jdom.Element build(org.w3c.dom.Element domElement) {
-        Document doc = factory.document(null);
-        buildTree(domElement, doc, null, true);
-        return doc.getRootElement();
-    }
-
-    /**
-     * This takes a DOM <code>Node</code> and builds up
-     * a JDOM tree, recursing until the DOM tree is exhausted
-     * and the JDOM tree results.
-     *
-     * @param node <code>Code</node> to examine.
-     * @param doc JDOM <code>Document</code> being built.
-     * @param current <code>Element</code> that is current parent.
-     * @param atRoot <code>boolean</code> indicating whether at root level.
-     */
-    private void buildTree(Node node,
-                           Document doc,
-                           Element current,
-                           boolean atRoot) {
-        // Recurse through the tree
-        switch (node.getNodeType()) {
-            case Node.DOCUMENT_NODE:
-                NodeList nodes = node.getChildNodes();
-                for (int i=0, size=nodes.getLength(); i<size; i++) {
-                    buildTree(nodes.item(i), doc, current, true);
-                }
-                break;
-
-            case Node.ELEMENT_NODE:
-                String nodeName = node.getNodeName();
-                String prefix = "";
-                String localName = nodeName;
-                int colon = nodeName.indexOf(':');
-                if (colon >= 0) {
-                    prefix = nodeName.substring(0, colon);
-                    localName = nodeName.substring(colon + 1);
-                }
-
-                // Get element's namespace
-                Namespace ns = null;
-                String uri = node.getNamespaceURI();
-                if (uri == null) {
-                    ns = (current == null) ? Namespace.NO_NAMESPACE
-                                           : current.getNamespace(prefix);
-                }
-                else {
-                    ns = Namespace.getNamespace(prefix, uri);
-                }
-
-                Element element = factory.element(localName, ns);
-
-                if (atRoot) {
-                    // If at root, set as document root
-                    doc.setRootElement(element);  // XXX should we use a factory call?
-                } else {
-                    // else add to parent element
-                    factory.addContent(current, element);
-                }
-
-                // Add namespaces
-                NamedNodeMap attributeList = node.getAttributes();
-                int attsize = attributeList.getLength();
-
-                for (int i = 0; i < attsize; i++) {
-                    Attr att = (Attr) attributeList.item(i);
-
-                    String attname = att.getName();
-                    if (attname.startsWith("xmlns")) {
-                        String attPrefix = "";
-                        colon = attname.indexOf(':');
-                        if (colon >= 0) {
-                            attPrefix = attname.substring(colon + 1);
-                        }
-
-                        String attvalue = att.getValue();
-
-                        Namespace declaredNS =
-                            Namespace.getNamespace(attPrefix, attvalue);
-
-                        // Add as additional namespaces if it's different
-                        // than this element's namespace (perhaps we should
-                        // also have logic not to mark them as additional if
-                        // it's been done already, but it probably doesn't
-                        // matter)
-                        if (prefix.equals(attPrefix)) {
-                            element.setNamespace(declaredNS);
-                        }
-                        else {
-                            factory.addNamespaceDeclaration(element, declaredNS);
-                        }
-                    }
-                }
-
-                // Add attributes
-                for (int i = 0; i < attsize; i++) {
-                    Attr att = (Attr) attributeList.item(i);
-
-                    String attname = att.getName();
-
-                    if ( !attname.startsWith("xmlns")) {
-                        String attPrefix = "";
-                        String attLocalName = attname;
-                        colon = attname.indexOf(':');
-                        if (colon >= 0) {
-                            attPrefix = attname.substring(0, colon);
-                            attLocalName = attname.substring(colon + 1);
-                        }
-
-                        String attvalue = att.getValue();
-
-                        // Get attribute's namespace
-                        Namespace attns = null;
-                        if ("".equals(attPrefix)) {
-                            attns = Namespace.NO_NAMESPACE;
-                        }
-                        else {
-                            attns = element.getNamespace(attPrefix);
-                        }
-
-                        Attribute attribute =
-                            factory.attribute(attLocalName, attvalue, attns);
-                        factory.setAttribute(element, attribute);
-                    }
-                }
-
-                // Recurse on child nodes
-                // The list should never be null nor should it ever contain
-                // null nodes, but some DOM impls are broken
-                NodeList children = node.getChildNodes();
-                if (children != null) {
-                    int size = children.getLength();
-                    for (int i = 0; i < size; i++) {
-                        Node item = children.item(i);
-                        if (item != null) {
-                            buildTree(item, doc, element, false);
-                        }
-                    }
-                }
-                break;
-
-            case Node.TEXT_NODE:
-                String data = node.getNodeValue();
-                factory.addContent(current, factory.text(data));
-                break;
-
-            case Node.CDATA_SECTION_NODE:
-                String cdata = node.getNodeValue();
-                factory.addContent(current, factory.cdata(cdata));
-                break;
-
-
-            case Node.PROCESSING_INSTRUCTION_NODE:
-                if (atRoot) {
-                    factory.addContent(doc,
-                        factory.processingInstruction(node.getNodeName(),
-                                                      node.getNodeValue()));
-                } else {
-                    factory.addContent(current,
-                        factory.processingInstruction(node.getNodeName(),
-                                                      node.getNodeValue()));
-                }
-                break;
-
-            case Node.COMMENT_NODE:
-                if (atRoot) {
-                    factory.addContent(doc, factory.comment(node.getNodeValue()));
-                } else {
-                    factory.addContent(current, factory.comment(node.getNodeValue()));
-                }
-                break;
-
-            case Node.ENTITY_REFERENCE_NODE:
-                EntityRef entity = factory.entityRef(node.getNodeName());
-                factory.addContent(current, entity);
-                break;
-
-            case Node.ENTITY_NODE:
-                // ??
-                break;
-
-            case Node.DOCUMENT_TYPE_NODE:
-                DocumentType domDocType = (DocumentType)node;
-                String publicID = domDocType.getPublicId();
-                String systemID = domDocType.getSystemId();
-                String internalDTD = domDocType.getInternalSubset();
-
-                DocType docType = factory.docType(domDocType.getName());
-                docType.setPublicID(publicID);
-                docType.setSystemID(systemID);
-                docType.setInternalSubset(internalDTD);
-
-                factory.addContent(doc, docType);
-                break;
-        }
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/JAXPParserFactory.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/JAXPParserFactory.java
deleted file mode 100644
index 07e734d..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/JAXPParserFactory.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*--
-
- $Id: JAXPParserFactory.java,v 1.1 2009/05/27 21:46:20 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom.input;
-
-import java.util.*;
-
-import javax.xml.parsers.*;
-
-import org.jdom.*;
-import org.xml.sax.*;
-
-/**
- * A non-public utility class to allocate JAXP SAX parsers.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:20 $
- * @author  Laurent Bihanic
- */
-class JAXPParserFactory {               // package protected
-
-    private static final String CVS_ID =
-      "@(#) $RCSfile: JAXPParserFactory.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:20 $ $Name:  $";
-
-    /** JAXP 1.2 schema language property id. */
-    private static final String JAXP_SCHEMA_LANGUAGE_PROPERTY =
-       "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
-
-    /** JAXP 1.2 schema location property id. */
-    private static final String JAXP_SCHEMA_LOCATION_PROPERTY =
-       "http://java.sun.com/xml/jaxp/properties/schemaSource";
-
-    /**
-     * Private constructor to forbid allocating instances of this utility
-     * class.
-     */
-    private JAXPParserFactory() {
-        // Never called.
-    }
-
-    /* Implementor's note regarding createParser() design: The features and
-    properties are normally set in SAXBuilder, but we take them in
-    createParser() as well because some features or properties may need to be
-    applied during the JAXP parser construction. Today, for example, properties
-    is used as it's the only way to configure schema validation: JAXP defines
-    schema validation properties but SAX does not. This reflects in the Apache
-    Xerces implementation where the SAXParser implementation supports the JAXP
-    properties but the XMLReader does not. Hence, configuring schema validation
-    must be done on the SAXParser object which is only visible in
-    JAXParserFactory. Features is also passed in case some future JAXP release
-    defines JAXP-specific features.
-     */
-
-    /**
-     * Creates a SAX parser allocated through the configured JAXP SAX
-     * parser factory.
-     *
-     * @param  validating   whether a validating parser is requested.
-     * @param  features     the user-defined SAX features.
-     * @param  properties   the user-defined SAX properties.
-     *
-     * @return a configured XMLReader.
-     *
-     * @throws JDOMException if any error occurred when allocating or
-     *                       configuring the JAXP SAX parser.
-     */
-    public static XMLReader createParser(boolean validating,
-                          Map features, Map properties) throws JDOMException {
-        try {
-            SAXParser parser = null;
-
-            // Allocate and configure JAXP SAX parser factory.
-            SAXParserFactory factory = SAXParserFactory.newInstance();
-            factory.setValidating(validating);
-            factory.setNamespaceAware(true);
-
-            try {
-                // Allocate parser.
-                parser = factory.newSAXParser();
-            }
-            catch (ParserConfigurationException e) {
-                throw new JDOMException("Could not allocate JAXP SAX Parser", e);
-            }
-
-            // Set user-defined JAXP properties (if any)
-            setProperty(parser, properties, JAXP_SCHEMA_LANGUAGE_PROPERTY);
-            setProperty(parser, properties, JAXP_SCHEMA_LOCATION_PROPERTY);
-
-            // Return configured SAX XMLReader.
-            return parser.getXMLReader();
-        }
-        catch (SAXException e) {
-            throw new JDOMException("Could not allocate JAXP SAX Parser", e);
-        }
-    }
-
-    /**
-     * Sets a property on a JAXP SAX parser object if and only if it
-     * is declared in the user-defined properties.
-     *
-     * @param  parser       the JAXP SAX parser to configure.
-     * @param  properties   the user-defined SAX properties.
-     * @param  name         the name of the property to set.
-     *
-     * @throws JDOMException if any error occurred while configuring
-     *                       the property.
-     */
-    private static void setProperty(SAXParser parser,
-                        Map properties, String name) throws JDOMException {
-        try {
-            if (properties.containsKey(name)) {
-                parser.setProperty(name, properties.get(name));
-            }
-        }
-        catch (SAXNotSupportedException e) {
-            throw new JDOMException(
-                name + " property not supported for JAXP parser " +
-                parser.getClass().getName());
-        }
-        catch (SAXNotRecognizedException e) {
-            throw new JDOMException(
-                name + " property not recognized for JAXP parser " +
-                parser.getClass().getName());
-        }
-    }
-}
-
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/JDOMParseException.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/JDOMParseException.java
deleted file mode 100644
index 1e08301..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/JDOMParseException.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*--
-
- $Id: JDOMParseException.java,v 1.1 2009/05/27 21:46:20 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom.input;
-
-import org.jdom.*;
-import org.xml.sax.*;
-
-/**
- * Thrown during parse errors, with information about where the parse error
- * occurred as well as access to the partially built document.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:20 $
- * @author  Laurent Bihanic
- */
-public class JDOMParseException extends JDOMException {
-
-    private static final String CVS_ID =
-      "@(#) $RCSfile: JDOMParseException.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:20 $ $Name:  $";
-
-    /**
-     * The portion of the document that was successfully built before
-     * the parse error occurred.
-     */
-    private final Document partialDocument;
-
-    /**
-     * This will create a parse <code>Exception</code> with the given
-     * message and wrap the <code>Exception</code> that cause a document
-     * parse to fail.
-     *
-     * @param message <code>String</code> message indicating
-     *                the problem that occurred.
-     * @param cause <code>Throwable</code> that caused this
-     *              to be thrown.
-     */
-    public JDOMParseException(String message, Throwable cause)  {
-        this(message, cause, null);
-    }
-
-    /**
-     * This will create a parse <code>Exception</code> with the given
-     * message and the partial document and wrap the
-     * <code>Exception</code> that cause a document parse to fail.
-     *
-     * @param message <code>String</code> message indicating
-     *                the problem that occurred.
-     * @param cause <code>Throwable</code> that caused this
-     *              to be thrown.
-     * @param partialDocument <code>Document</code> the portion of
-     *                        the input XML document that was
-     *                        successfully built.
-     */
-    public JDOMParseException(String message, Throwable cause,
-                              Document partialDocument)  {
-        super(message, cause);
-        this.partialDocument = partialDocument;
-    }
-
-    /**
-     * Returns the partial document that was successfully built before
-     * the error occurred.
-     *
-     * @return the partial document or null if none.
-     */
-    public Document getPartialDocument() {
-        return partialDocument;
-    }
-
-    /**
-     * Returns the public identifier of the entity where the
-     * parse error occurred.
-     *
-     * @return a string containing the public identifier, or
-     *         <code>null</code> if the information is not available.
-     */
-    public String getPublicId() {
-        return (getCause() instanceof SAXParseException)?
-                        ((SAXParseException)getCause()).getPublicId(): null;
-    }
-
-    /**
-     * Returns the system identifier of the entity where the
-     * parse error occurred.
-     *
-     * @return a string containing the system identifier, or
-     *         <code>null</code> if the information is not available.
-     */
-    public String getSystemId() {
-        return (getCause() instanceof SAXParseException)?
-                        ((SAXParseException)getCause()).getSystemId(): null;
-    }
-
-    /**
-     * Returns the line number of the end of the text where the
-     * parse error occurred.
-     * <p>
-     * The first line in the document is line 1.</p>
-     *
-     * @return an integer representing the line number, or -1
-     *         if the information is not available.
-     */
-    public int getLineNumber() {
-        return (getCause() instanceof SAXParseException)?
-                        ((SAXParseException)getCause()).getLineNumber(): -1;
-    }
-
-    /**
-     * Returns the column number of the end of the text where the
-     * parse error occurred.
-     * <p>
-     * The first column in a line is position 1.</p>
-     *
-     * @return an integer representing the column number, or -1
-     *         if the information is not available.
-     */
-    public int getColumnNumber() {
-        return (getCause() instanceof SAXParseException)?
-                        ((SAXParseException)getCause()).getColumnNumber(): -1;
-    }
-}
-
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/SAXBuilder.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/SAXBuilder.java
deleted file mode 100644
index 2152b0d..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/SAXBuilder.java
+++ /dev/null
@@ -1,1010 +0,0 @@
-/*--
-
- $Id: SAXBuilder.java,v 1.1 2009/05/27 21:46:20 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom.input;
-
-import java.io.*;
-import java.lang.reflect.*;
-import java.net.*;
-import java.util.*;
-
-import org.jdom.*;
-
-import org.xml.sax.*;
-import org.xml.sax.helpers.XMLReaderFactory;
-
-/**
- * Builds a JDOM document from files, streams, readers, URLs, or a SAX {@link
- * org.xml.sax.InputSource} instance using a SAX parser. The builder uses a
- * third-party SAX parser (chosen by JAXP by default, or you can choose
- * manually) to handle the parsing duties and simply listens to the SAX events
- * to construct a document. Details which SAX does not provide, such as
- * whitespace outside the root element, are not represented in the JDOM
- * document. Information about SAX can be found at <a
- * href="http://www.saxproject.org">http://www.saxproject.org</a>.
- * <p>
- * Known issues: Relative paths for a {@link DocType} or {@link EntityRef} may
- * be converted by the SAX parser into absolute paths.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:20 $
- * @author  Jason Hunter
- * @author  Brett McLaughlin
- * @author  Dan Schaffer
- * @author  Philip Nelson
- * @author  Alex Rosen
- */
-public class SAXBuilder {
-
-    private static final String CVS_ID =
-      "@(#) $RCSfile: SAXBuilder.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:20 $ $Name:  $";
-
-    /**
-     * Default parser class to use. This is used when no other parser
-     * is given and JAXP isn't available.
-     */
-    private static final String DEFAULT_SAX_DRIVER =
-        "org.apache.xerces.parsers.SAXParser";
-
-    /** Whether validation should occur */
-    private boolean validate;
-
-    /** Whether expansion of entities should occur */
-    private boolean expand = true;
-
-    /** Adapter class to use */
-    private String saxDriverClass;
-
-    /** ErrorHandler class to use */
-    private ErrorHandler saxErrorHandler = null;
-
-    /** EntityResolver class to use */
-    private EntityResolver saxEntityResolver = null;
-
-    /** DTDHandler class to use */
-    private DTDHandler saxDTDHandler = null;
-
-    /** XMLFilter instance to use */
-    private XMLFilter saxXMLFilter = null;
-
-    /** The factory for creating new JDOM objects */
-    private JDOMFactory factory = new DefaultJDOMFactory();
-
-    /** Whether to ignore ignorable whitespace */
-    private boolean ignoringWhite = false;
-
-    /** User-specified features to be set on the SAX parser */
-    private HashMap features = new HashMap(5);
-
-    /** User-specified properties to be set on the SAX parser */
-    private HashMap properties = new HashMap(5);
-
-    /**
-     * Whether parser reuse is allowed.
-     * <p>Default: <code>true</code></p>
-     */
-    private boolean reuseParser = true;
-
-    /** The current SAX parser, if parser reuse has been activated. */
-    private XMLReader saxParser = null;
-
-    /**
-     * Creates a new SAXBuilder which will attempt to first locate
-     * a parser via JAXP, then will try to use a set of default
-     * SAX Drivers. The underlying parser will not validate.
-     */
-    public SAXBuilder() {
-        this(false);
-    }
-
-    /**
-     * Creates a new SAXBuilder which will attempt to first locate
-     * a parser via JAXP, then will try to use a set of default
-     * SAX Drivers. The underlying parser will validate or not
-     * according to the given parameter.
-     *
-     * @param validate <code>boolean</code> indicating if
-     *                 validation should occur.
-     */
-    public SAXBuilder(boolean validate) {
-        this.validate = validate;
-    }
-
-    /**
-     * Creates a new SAXBuilder using the specified SAX parser.
-     * The underlying parser will not validate.
-     *
-     * @param saxDriverClass <code>String</code> name of SAX Driver
-     *                       to use for parsing.
-     */
-    public SAXBuilder(String saxDriverClass) {
-        this(saxDriverClass, false);
-    }
-
-    /**
-     * Creates a new SAXBuilder using the specified SAX parser.
-     * The underlying parser will validate or not
-     * according to the given parameter.
-     *
-     * @param saxDriverClass <code>String</code> name of SAX Driver
-     *                       to use for parsing.
-     * @param validate <code>boolean</code> indicating if
-     *                 validation should occur.
-     */
-    public SAXBuilder(String saxDriverClass, boolean validate) {
-        this.saxDriverClass = saxDriverClass;
-        this.validate = validate;
-    }
-
-    /**
-     * Returns the driver class assigned in the constructor, or null if none.
-     *
-     * @return the driver class assigned in the constructor
-     */
-    public String getDriverClass() {
-        return saxDriverClass;
-    }
-
-    /**
-     * Returns the current {@link org.jdom.JDOMFactory} in use.
-     * @return the factory in use
-     */
-    public JDOMFactory getFactory() {
-        return factory;
-    }
-
-    /**
-     * This sets a custom JDOMFactory for the builder.  Use this to build
-     * the tree with your own subclasses of the JDOM classes.
-     *
-     * @param factory <code>JDOMFactory</code> to use
-     */
-    public void setFactory(JDOMFactory factory) {
-        this.factory = factory;
-    }
-
-    /**
-     * Returns whether validation is to be performed during the build.
-     *
-     * @return whether validation is to be performed during the build
-     */
-    public boolean getValidation() {
-        return validate;
-    }
-
-    /**
-     * This sets validation for the builder.
-     *
-     * @param validate <code>boolean</code> indicating whether validation
-     * should occur.
-     */
-    public void setValidation(boolean validate) {
-        this.validate = validate;
-    }
-
-    /**
-     * Returns the {@link ErrorHandler} assigned, or null if none.
-     * @return the ErrorHandler assigned, or null if none
-     */
-    public ErrorHandler getErrorHandler() {
-        return saxErrorHandler;
-    }
-
-    /**
-     * This sets custom ErrorHandler for the <code>Builder</code>.
-     *
-     * @param errorHandler <code>ErrorHandler</code>
-     */
-    public void setErrorHandler(ErrorHandler errorHandler) {
-        saxErrorHandler = errorHandler;
-    }
-
-    /**
-     * Returns the {@link EntityResolver} assigned, or null if none.
-     *
-     * @return the EntityResolver assigned
-     */
-    public EntityResolver getEntityResolver() {
-        return saxEntityResolver;
-    }
-
-    /**
-     * This sets custom EntityResolver for the <code>Builder</code>.
-     *
-     * @param entityResolver <code>EntityResolver</code>
-     */
-    public void setEntityResolver(EntityResolver entityResolver) {
-        saxEntityResolver = entityResolver;
-    }
-
-    /**
-     * Returns the {@link DTDHandler} assigned, or null if none.
-     *
-     * @return the DTDHandler assigned
-     */
-    public DTDHandler getDTDHandler() {
-        return saxDTDHandler;
-    }
-
-    /**
-     * This sets custom DTDHandler for the <code>Builder</code>.
-     *
-     * @param dtdHandler <code>DTDHandler</code>
-     */
-    public void setDTDHandler(DTDHandler dtdHandler) {
-        saxDTDHandler = dtdHandler;
-    }
-
-    /**
-     * Returns the {@link XMLFilter} used during parsing, or null if none.
-     *
-     * @return the XMLFilter used during parsing
-     */
-    public XMLFilter getXMLFilter() {
-        return saxXMLFilter;
-    }
-
-    /**
-     * This sets a custom {@link org.xml.sax.XMLFilter} for the builder.
-     *
-     * @param xmlFilter the filter to use
-     */
-    public void setXMLFilter(XMLFilter xmlFilter) {
-        saxXMLFilter = xmlFilter;
-    }
-
-    /**
-     * Returns whether element content whitespace is to be ignored during the
-     * build.
-     *
-     * @return whether element content whitespace is to be ignored during the
-     * build
-     */
-    public boolean getIgnoringElementContentWhitespace() {
-        return ignoringWhite;
-    }
-
-    /**
-     * Specifies whether or not the parser should elminate whitespace in
-     * element content (sometimes known as "ignorable whitespace") when
-     * building the document.  Only whitespace which is contained within
-     * element content that has an element only content model will be
-     * eliminated (see XML Rec 3.2.1).  For this setting to take effect
-     * requires that validation be turned on.  The default value of this
-     * setting is <code>false</code>.
-     *
-     * @param ignoringWhite Whether to ignore ignorable whitespace
-     */
-    public void setIgnoringElementContentWhitespace(boolean ignoringWhite) {
-        this.ignoringWhite = ignoringWhite;
-    }
-
-    /**
-     * Returns whether the contained SAX parser instance is reused across
-     * multiple parses.  The default is true.
-     *
-     * @return whether the contained SAX parser instance is reused across
-     * multiple parses
-     */
-    public boolean getReuseParser() {
-        return reuseParser;
-    }
-
-    /**
-     * Specifies whether this builder shall reuse the same SAX parser
-     * when performing subsequent parses or allocate a new parser for
-     * each parse.  The default value of this setting is
-     * <code>true</code> (parser reuse).
-     * <p>
-     * <strong>Note</strong>: As SAX parser instances are not thread safe,
-     * the parser reuse feature should not be used with SAXBuilder instances
-     * shared among threads.</p>
-     *
-     * @param reuseParser Whether to reuse the SAX parser.
-     */
-    public void setReuseParser(boolean reuseParser) {
-        this.reuseParser = reuseParser;
-        this.saxParser   = null;
-    }
-
-    /**
-     * This sets a feature on the SAX parser. See the SAX documentation for
-     * </p>
-     * <p>
-     * NOTE: SAXBuilder requires that some particular features of the SAX parser be
-     * set up in certain ways for it to work properly. The list of such features
-     * may change in the future. Therefore, the use of this method may cause
-     * parsing to break, and even if it doesn't break anything today it might
-     * break parsing in a future JDOM version, because what JDOM parsers require
-     * may change over time. Use with caution.
-     * </p>
-     *
-     * @param name The feature name, which is a fully-qualified URI.
-     * @param value The requested state of the feature (true or false).
-     */
-    public void setFeature(String name, boolean value) {
-        // Save the specified feature for later.
-        features.put(name, new Boolean(value));
-    }
-
-    /**
-     * This sets a property on the SAX parser. See the SAX documentation for
-     * more information.
-     * <p>
-     * NOTE: SAXBuilder requires that some particular properties of the SAX parser be
-     * set up in certain ways for it to work properly. The list of such properties
-     * may change in the future. Therefore, the use of this method may cause
-     * parsing to break, and even if it doesn't break anything today it might
-     * break parsing in a future JDOM version, because what JDOM parsers require
-     * may change over time. Use with caution.
-     * </p>
-     *
-     * @param name The property name, which is a fully-qualified URI.
-     * @param value The requested value for the property.
-     */
-    public void setProperty(String name, Object value) {
-        // Save the specified property for later.
-        properties.put(name, value);
-    }
-
-    /**
-     * This builds a document from the supplied
-     * input source.
-     *
-     * @param in <code>InputSource</code> to read from
-     * @return <code>Document</code> resultant Document object
-     * @throws JDOMException when errors occur in parsing
-     * @throws IOException when an I/O error prevents a document
-     *         from being fully parsed
-     */
-    public Document build(InputSource in)
-     throws JDOMException, IOException {
-        SAXHandler contentHandler = null;
-
-        try {
-            // Create and configure the content handler.
-            contentHandler = createContentHandler();
-            configureContentHandler(contentHandler);
-
-            XMLReader parser = this.saxParser;
-            if (parser == null) {
-                // Create and configure the parser.
-                parser = createParser();
-
-                // Install optional filter
-                if (saxXMLFilter != null) {
-                    // Connect filter chain to parser
-                    XMLFilter root = saxXMLFilter;
-                    while (root.getParent() instanceof XMLFilter) {
-                        root = (XMLFilter)root.getParent();
-                    }
-                    root.setParent(parser);
-
-                    // Read from filter
-                    parser = saxXMLFilter;
-                }
-
-                // Configure parser
-                configureParser(parser, contentHandler);
-
-                if (reuseParser == true) {
-                    this.saxParser = parser;
-                }
-            }
-            else {
-                // Reset content handler as SAXHandler instances cannot
-                // be reused
-                configureParser(parser, contentHandler);
-            }
-
-            // Parse the document.
-            parser.parse(in);
-
-            return contentHandler.getDocument();
-        }
-        catch (SAXParseException e) {
-            Document doc = contentHandler.getDocument();
-            if (doc.hasRootElement() == false) {
-                doc = null;
-            }
-
-            String systemId = e.getSystemId();
-            if (systemId != null) {
-                throw new JDOMParseException("Error on line " +
-                    e.getLineNumber() + " of document " + systemId, e, doc);
-            } else {
-                throw new JDOMParseException("Error on line " +
-                    e.getLineNumber(), e, doc);
-            }
-        }
-        catch (SAXException e) {
-            throw new JDOMParseException("Error in building: " +
-                e.getMessage(), e, contentHandler.getDocument());
-        }
-        finally {
-            // Explicitly nullify the handler to encourage GC
-            // It's a stack var so this shouldn't be necessary, but it
-            // seems to help on some JVMs
-            contentHandler = null;
-        }
-    }
-
-    /**
-     * This creates the SAXHandler that will be used to build the Document.
-     *
-     * @return <code>SAXHandler</code> - resultant SAXHandler object.
-     */
-    protected SAXHandler createContentHandler() {
-        SAXHandler contentHandler = new SAXHandler(factory);
-        return contentHandler;
-    }
-
-    /**
-     * This configures the SAXHandler that will be used to build the Document.
-     * <p>
-     * The default implementation simply passes through some configuration
-     * settings that were set on the SAXBuilder: setExpandEntities() and
-     * setIgnoringElementContentWhitespace().
-     * </p>
-     */
-    protected void configureContentHandler(SAXHandler contentHandler) {
-        // Setup pass through behavior
-        contentHandler.setExpandEntities(expand);
-        contentHandler.setIgnoringElementContentWhitespace(ignoringWhite);
-    }
-
-    /**
-     * This creates the XMLReader to be used for reading the XML document.
-     * <p>
-     * The default behavior is to (1) use the saxDriverClass, if it has been
-     * set, (2) try to obtain a parser from JAXP, if it is available, and
-     * (3) if all else fails, use a hard-coded default parser (currently
-     * the Xerces parser). Subclasses may override this method to determine
-     * the parser to use in a different way.
-     * </p>
-     *
-     * @return <code>XMLReader</code> - resultant XMLReader object.
-     */
-    protected XMLReader createParser() throws JDOMException {
-        XMLReader parser = null;
-        if (saxDriverClass != null) {
-            // The user knows that they want to use a particular class
-            try {
-                parser = XMLReaderFactory.createXMLReader(saxDriverClass);
-
-                // Configure parser
-                setFeaturesAndProperties(parser, true);
-            }
-            catch (SAXException e) {
-              throw new JDOMException("Could not load " + saxDriverClass, e);
-            }
-        } else {
-            // Try using JAXP...
-            // Note we need JAXP 1.1, and if JAXP 1.0 is all that's
-            // available then the getXMLReader call fails and we skip
-            // to the hard coded default parser
-            try {
-                // Get factory class and method.
-                Class factoryClass =
-                    Class.forName("org.jdom.input.JAXPParserFactory");
-
-                Method createParser =
-                    factoryClass.getMethod("createParser",
-                        new Class[] { boolean.class, Map.class, Map.class });
-
-                // Create SAX parser.
-                parser = (XMLReader)createParser.invoke(null,
-                                new Object[] { new Boolean(validate),
-                                               features, properties });
-
-                // Configure parser
-                setFeaturesAndProperties(parser, false);
-            }
-            catch (JDOMException e) {
-                throw e;
-            }
-            catch (NoClassDefFoundError e) {
-                // The class loader failed to resolve the dependencies
-                // of org.jdom.input.JAXPParserFactory. This probably means
-                // that no JAXP parser is present in its class path.
-                // => Ignore and try allocating default SAX parser instance.
-            }
-            catch (Exception e) {
-                // Ignore and try allocating default SAX parser instance.
-            }
-        }
-
-        // Check to see if we got a parser yet, if not, try to use a
-        // hard coded default
-        if (parser == null) {
-            try {
-                parser = XMLReaderFactory.createXMLReader(DEFAULT_SAX_DRIVER);
-                // System.out.println("using default " + DEFAULT_SAX_DRIVER);
-                saxDriverClass = parser.getClass().getName();
-
-                // Configure parser
-                setFeaturesAndProperties(parser, true);
-            }
-            catch (SAXException e) {
-                throw new JDOMException("Could not load default SAX parser: "
-                  + DEFAULT_SAX_DRIVER, e);
-            }
-        }
-
-        return parser;
-    }
-
-    /**
-     * This configures the XMLReader to be used for reading the XML document.
-     * <p>
-     * The default implementation sets various options on the given XMLReader,
-     *  such as validation, DTD resolution, entity handlers, etc., according
-     *  to the options that were set (e.g. via <code>setEntityResolver</code>)
-     *  and set various SAX properties and features that are required for JDOM
-     *  internals. These features may change in future releases, so change this
-     *  behavior at your own risk.
-     * </p>
-     */
-    protected void configureParser(XMLReader parser, SAXHandler contentHandler)
-        throws JDOMException {
-
-        // Setup SAX handlers.
-
-        parser.setContentHandler(contentHandler);
-
-        if (saxEntityResolver != null) {
-            parser.setEntityResolver(saxEntityResolver);
-        }
-
-        if (saxDTDHandler != null) {
-            parser.setDTDHandler(saxDTDHandler);
-        } else {
-            parser.setDTDHandler(contentHandler);
-        }
-
-        if (saxErrorHandler != null) {
-             parser.setErrorHandler(saxErrorHandler);
-        } else {
-             parser.setErrorHandler(new BuilderErrorHandler());
-        }
-
-        // Setup lexical reporting.
-        boolean lexicalReporting = false;
-        try {
-            parser.setProperty("http://xml.org/sax/handlers/LexicalHandler",
-                               contentHandler);
-            lexicalReporting = true;
-        } catch (SAXNotSupportedException e) {
-            // No lexical reporting available
-        } catch (SAXNotRecognizedException e) {
-            // No lexical reporting available
-        }
-
-        // Some parsers use alternate property for lexical handling (grr...)
-        if (!lexicalReporting) {
-            try {
-                parser.setProperty(
-                    "http://xml.org/sax/properties/lexical-handler",
-                    contentHandler);
-                lexicalReporting = true;
-            } catch (SAXNotSupportedException e) {
-                // No lexical reporting available
-            } catch (SAXNotRecognizedException e) {
-                // No lexical reporting available
-            }
-        }
-
-        // Try setting the DeclHandler if entity expansion is off
-        if (!expand) {
-            try {
-                parser.setProperty(
-                    "http://xml.org/sax/properties/declaration-handler",
-                    contentHandler);
-            } catch (SAXNotSupportedException e) {
-                // No lexical reporting available
-            } catch (SAXNotRecognizedException e) {
-                // No lexical reporting available
-            }
-        }
-    }
-
-    private void setFeaturesAndProperties(XMLReader parser,
-                                          boolean coreFeatures)
-                                                        throws JDOMException {
-        // Set any user-specified features on the parser.
-        Iterator iter = features.keySet().iterator();
-        while (iter.hasNext()) {
-            String  name  = (String)iter.next();
-            Boolean value = (Boolean)features.get(name);
-            internalSetFeature(parser, name, value.booleanValue(), name);
-        }
-
-        // Set any user-specified properties on the parser.
-        iter = properties.keySet().iterator();
-        while (iter.hasNext()) {
-            String name = (String)iter.next();
-            internalSetProperty(parser, name, properties.get(name), name);
-        }
-
-        if (coreFeatures) {
-            // Set validation.
-            try {
-                internalSetFeature(parser,
-                        "http://xml.org/sax/features/validation",
-                        validate, "Validation");
-            } catch (JDOMException e) {
-                // If validation is not supported, and the user is requesting
-                // that we don't validate, that's fine - don't throw an
-                // exception.
-                if (validate)
-                    throw e;
-            }
-
-            // Setup some namespace features.
-            internalSetFeature(parser,
-                        "http://xml.org/sax/features/namespaces",
-                        true, "Namespaces");
-            internalSetFeature(parser,
-                        "http://xml.org/sax/features/namespace-prefixes",
-                        true, "Namespace prefixes");
-        }
-
-        // Set entity expansion
-        // Note SAXHandler can work regardless of how this is set, but when
-        // entity expansion it's worth it to try to tell the parser not to
-        // even bother with external general entities.
-        // Apparently no parsers yet support this feature.
-        // XXX It might make sense to setEntityResolver() with a resolver
-        // that simply ignores external general entities
-        try {
-            if (parser.getFeature("http://xml.org/sax/features/external-general-entities") != expand) {
-                parser.setFeature("http://xml.org/sax/features/external-general-entities", expand);
-            }
-        }
-        catch (SAXNotRecognizedException e) { /* Ignore... */ }
-        catch (SAXNotSupportedException  e) { /* Ignore... */ }
-    }
-
-    /**
-     * Tries to set a feature on the parser. If the feature cannot be set,
-     * throws a JDOMException describing the problem.
-     */
-    private void internalSetFeature(XMLReader parser, String feature,
-                    boolean value, String displayName) throws JDOMException {
-        try {
-            parser.setFeature(feature, value);
-        } catch (SAXNotSupportedException e) {
-            throw new JDOMException(
-                displayName + " feature not supported for SAX driver " + parser.getClass().getName());
-        } catch (SAXNotRecognizedException e) {
-            throw new JDOMException(
-                displayName + " feature not recognized for SAX driver " + parser.getClass().getName());
-        }
-    }
-
-    /**
-     * <p>
-     * Tries to set a property on the parser. If the property cannot be set,
-     * throws a JDOMException describing the problem.
-     * </p>
-     */
-    private void internalSetProperty(XMLReader parser, String property,
-                    Object value, String displayName) throws JDOMException {
-        try {
-            parser.setProperty(property, value);
-        } catch (SAXNotSupportedException e) {
-            throw new JDOMException(
-                displayName + " property not supported for SAX driver " + parser.getClass().getName());
-        } catch (SAXNotRecognizedException e) {
-            throw new JDOMException(
-                displayName + " property not recognized for SAX driver " + parser.getClass().getName());
-        }
-    }
-
-    /**
-     * <p>
-     * This builds a document from the supplied
-     *   input stream.
-     * </p>
-     *
-     * @param in <code>InputStream</code> to read from
-     * @return <code>Document</code> resultant Document object
-     * @throws JDOMException when errors occur in parsing
-     * @throws IOException when an I/O error prevents a document
-     *         from being fully parsed.
-     */
-    public Document build(InputStream in)
-     throws JDOMException, IOException {
-        return build(new InputSource(in));
-    }
-
-    /**
-     * <p>
-     * This builds a document from the supplied
-     *   filename.
-     * </p>
-     *
-     * @param file <code>File</code> to read from
-     * @return <code>Document</code> resultant Document object
-     * @throws JDOMException when errors occur in parsing
-     * @throws IOException when an I/O error prevents a document
-     *         from being fully parsed
-     */
-    public Document build(File file)
-        throws JDOMException, IOException {
-        try {
-            URL url = fileToURL(file);
-            return build(url);
-        } catch (MalformedURLException e) {
-            throw new JDOMException("Error in building", e);
-        }
-    }
-
-    /**
-     * <p>
-     * This builds a document from the supplied
-     *   URL.
-     * </p>
-     *
-     * @param url <code>URL</code> to read from.
-     * @return <code>Document</code> - resultant Document object.
-     * @throws JDOMException when errors occur in parsing
-     * @throws IOException when an I/O error prevents a document
-     *         from being fully parsed.
-     */
-    public Document build(URL url)
-        throws JDOMException, IOException {
-        String systemID = url.toExternalForm();
-        return build(new InputSource(systemID));
-    }
-
-    /**
-     * <p>
-     * This builds a document from the supplied
-     *   input stream.
-     * </p>
-     *
-     * @param in <code>InputStream</code> to read from.
-     * @param systemId base for resolving relative URIs
-     * @return <code>Document</code> resultant Document object
-     * @throws JDOMException when errors occur in parsing
-     * @throws IOException when an I/O error prevents a document
-     *         from being fully parsed
-     */
-    public Document build(InputStream in, String systemId)
-        throws JDOMException, IOException {
-
-        InputSource src = new InputSource(in);
-        src.setSystemId(systemId);
-        return build(src);
-    }
-
-    /**
-     * <p>
-     * This builds a document from the supplied
-     *   Reader.  It's the programmer's responsibility to make sure
-     *   the reader matches the encoding of the file.  It's often easier
-     *   and safer to use an InputStream rather than a Reader, and to let the
-     *   parser auto-detect the encoding from the XML declaration.
-     * </p>
-     *
-     * @param characterStream <code>Reader</code> to read from
-     * @return <code>Document</code> resultant Document object
-     * @throws JDOMException when errors occur in parsing
-     * @throws IOException when an I/O error prevents a document
-     *         from being fully parsed
-     */
-    public Document build(Reader characterStream)
-        throws JDOMException, IOException {
-        return build(new InputSource(characterStream));
-    }
-
-    /**
-     * <p>
-     * This builds a document from the supplied
-     *   Reader.  It's the programmer's responsibility to make sure
-     *   the reader matches the encoding of the file.  It's often easier
-     *   and safer to use an InputStream rather than a Reader, and to let the
-     *   parser auto-detect the encoding from the XML declaration.
-     * </p>
-     *
-     * @param characterStream <code>Reader</code> to read from.
-     * @param systemId base for resolving relative URIs
-     * @return <code>Document</code> resultant Document object
-     * @throws JDOMException when errors occur in parsing
-     * @throws IOException when an I/O error prevents a document
-     *         from being fully parsed
-     */
-    public Document build(Reader characterStream, String systemId)
-        throws JDOMException, IOException {
-
-        InputSource src = new InputSource(characterStream);
-        src.setSystemId(systemId);
-        return build(src);
-    }
-
-    /**
-     * <p>
-     * This builds a document from the supplied
-     *   URI.
-     * </p>
-     * @param systemId URI for the input
-     * @return <code>Document</code> resultant Document object
-     * @throws JDOMException when errors occur in parsing
-     * @throws IOException when an I/O error prevents a document
-     *         from being fully parsed
-     */
-    public Document build(String systemId)
-        throws JDOMException, IOException {
-        return build(new InputSource(systemId));
-    }
-
-//    /**
-//     * Imitation of File.toURL(), a JDK 1.2 method, reimplemented
-//     * here to work with JDK 1.1.
-//     *
-//     * @see java.io.File
-//     *
-//     * @param f the file to convert
-//     * @return the file path converted to a file: URL
-//     */
-//    protected URL fileToURL(File f) throws MalformedURLException {
-//        String path = f.getAbsolutePath();
-//        if (File.separatorChar != '/') {
-//            path = path.replace(File.separatorChar, '/');
-//        }
-//        if (!path.startsWith("/")) {
-//            path = "/" + path;
-//        }
-//        if (!path.endsWith("/") && f.isDirectory()) {
-//            path = path + "/";
-//        }
-//        return new URL("file", "", path);
-//    }
-
-    /** Custom File.toUrl() implementation to handle special chars in file names
-     *
-     * @param file file object whose path will be converted
-     * @return URL form of the file, with special characters handled
-     * @throws MalformedURLException if there's a problem constructing a URL
-     */
-    private static URL fileToURL(File file) throws MalformedURLException {
-        StringBuffer buffer = new StringBuffer();
-        String path = file.getAbsolutePath();
-
-        // Convert non-URL style file separators
-        if (File.separatorChar != '/') {
-            path = path.replace(File.separatorChar, '/');
-        }
-
-        // Make sure it starts at root
-        if (!path.startsWith("/")) {
-            buffer.append('/');
-        }
-
-        // Copy, converting URL special characters as we go
-        int len = path.length();
-        for (int i = 0; i < len; i++) {
-            char c = path.charAt(i);
-            if (c == ' ')
-                buffer.append("%20");
-            else if (c == '#')
-                buffer.append("%23");
-            else if (c == '%')
-                buffer.append("%25");
-            else if (c == '&')
-                buffer.append("%26");
-            else if (c == ';')
-                buffer.append("%3B");
-            else if (c == '<')
-                buffer.append("%3C");
-            else if (c == '=')
-                buffer.append("%3D");
-            else if (c == '>')
-                buffer.append("%3E");
-            else if (c == '?')
-                buffer.append("%3F");
-            else if (c == '~')
-                buffer.append("%7E");
-            else
-                buffer.append(c);
-        }
-
-        // Make sure directories end with slash
-        if (!path.endsWith("/") && file.isDirectory()) {
-            buffer.append('/');
-        }
-
-        // Return URL
-        return new URL("file", "", buffer.toString());
-    }
-
-    /**
-     * Returns whether or not entities are being expanded into normal text
-     * content.
-     *
-     * @return whether entities are being expanded
-     */
-    public boolean getExpandEntities() {
-        return expand;
-    }
-
-    /**
-     * <p>
-     * This sets whether or not to expand entities for the builder.
-     * A true means to expand entities as normal content.  A false means to
-     * leave entities unexpanded as <code>EntityRef</code> objects.  The
-     * default is true.
-     * </p>
-     * <p>
-     * When this setting is false, the internal DTD subset is retained; when
-     * this setting is true, the internal DTD subset is not retained.
-     * </p>
-     * <p>
-     * Note that Xerces (at least up to 1.4.4) has a bug where entities
-     * in attribute values will be misreported if this flag is turned off,
-     * resulting in entities to appear within element content.  When turning
-     * entity expansion off either avoid entities in attribute values, or
-     * use another parser like Crimson.
-     * http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6111
-     * </p>
-     *
-     * @param expand <code>boolean</code> indicating whether entity expansion
-     * should occur.
-     */
-    public void setExpandEntities(boolean expand) {
-        this.expand = expand;
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/SAXHandler.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/SAXHandler.java
deleted file mode 100644
index 2214c72..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/SAXHandler.java
+++ /dev/null
@@ -1,980 +0,0 @@
-/*--
-
- $Id: SAXHandler.java,v 1.1 2009/05/27 21:46:20 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom.input;
-
-import java.util.*;
-
-import org.jdom.*;
-import org.xml.sax.*;
-import org.xml.sax.ext.*;
-import org.xml.sax.helpers.*;
-
-/**
- * A support class for {@link SAXBuilder}.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:20 $
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- * @author  Philip Nelson
- * @author  Bradley S. Huffman
- * @author  phil@triloggroup.com
- */
-public class SAXHandler extends DefaultHandler implements LexicalHandler,
-                                                          DeclHandler,
-                                                          DTDHandler {
-
-    private static final String CVS_ID =
-      "@(#) $RCSfile: SAXHandler.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:20 $ $Name:  $";
-
-    /** Hash table to map SAX attribute type names to JDOM attribute types. */
-    private static final Map attrNameToTypeMap = new HashMap(13);
-
-    /** <code>Document</code> object being built */
-    private Document document;
-
-    /** <code>Element</code> object being built */
-    private Element currentElement;
-
-    /** Indicator of where in the document we are */
-    private boolean atRoot;
-
-    /** Indicator of whether we are in the DocType. Note that the DTD consists
-     * of both the internal subset (inside the <!DOCTYPE> tag) and the
-      * external subset (in a separate .dtd file). */
-    private boolean inDTD = false;
-
-    /** Indicator of whether we are in the internal subset */
-    private boolean inInternalSubset = false;
-
-    /** Indicator of whether we previously were in a CDATA */
-    private boolean previousCDATA = false;
-
-    /** Indicator of whether we are in a CDATA */
-    private boolean inCDATA = false;
-
-    /** Indicator of whether we should expand entities */
-    private boolean expand = true;
-
-    /** Indicator of whether we are actively suppressing (non-expanding) a
-        current entity */
-    private boolean suppress = false;
-
-    /** How many nested entities we're currently within */
-    private int entityDepth = 0;  // XXX may not be necessary anymore?
-
-    /** Temporary holder for namespaces that have been declared with
-      * startPrefixMapping, but are not yet available on the element */
-    private List declaredNamespaces;
-
-    /** Temporary holder for the internal subset */
-    private StringBuffer internalSubset = new StringBuffer();
-
-    /** Temporary holder for Text and CDATA */
-    private TextBuffer textBuffer = new TextBuffer();
-
-    /** The external entities defined in this document */
-    private Map externalEntities;
-
-    /** The JDOMFactory used for JDOM object creation */
-    private JDOMFactory factory;
-
-    /** Whether to ignore ignorable whitespace */
-    private boolean ignoringWhite = false;
-
-    /** The SAX Locator object provided by the parser */
-    private Locator locator;
-
-    /**
-     * Class initializer: Populate a table to translate SAX attribute
-     * type names into JDOM attribute type value (integer).
-     * <p>
-     * <b>Note that all the mappings defined below are compliant with
-     * the SAX 2.0 specification exception for "ENUMERATION" with is
-     * specific to Crimson 1.1.X and Xerces 2.0.0-betaX which report
-     * attributes of enumerated types with a type "ENUMERATION"
-     * instead of the expected "NMTOKEN".
-     * </p>
-     * <p>
-     * Note also that Xerces 1.4.X is not SAX 2.0 compliant either
-     * but handling its case requires
-     * {@link #getAttributeType specific code}.
-     * </p>
-     */
-    static {
-        attrNameToTypeMap.put("CDATA",
-                              new Integer(Attribute.CDATA_TYPE));
-        attrNameToTypeMap.put("ID",
-                              new Integer(Attribute.ID_TYPE));
-        attrNameToTypeMap.put("IDREF",
-                              new Integer(Attribute.IDREF_TYPE));
-        attrNameToTypeMap.put("IDREFS",
-                              new Integer(Attribute.IDREFS_TYPE));
-        attrNameToTypeMap.put("ENTITY",
-                              new Integer(Attribute.ENTITY_TYPE));
-        attrNameToTypeMap.put("ENTITIES",
-                              new Integer(Attribute.ENTITIES_TYPE));
-        attrNameToTypeMap.put("NMTOKEN",
-                              new Integer(Attribute.NMTOKEN_TYPE));
-        attrNameToTypeMap.put("NMTOKENS",
-                              new Integer(Attribute.NMTOKENS_TYPE));
-        attrNameToTypeMap.put("NOTATION",
-                              new Integer(Attribute.NOTATION_TYPE));
-        attrNameToTypeMap.put("ENUMERATION",
-                              new Integer(Attribute.ENUMERATED_TYPE));
-    }
-
-    /**
-     * This will create a new <code>SAXHandler</code> that listens to SAX
-     * events and creates a JDOM Document.  The objects will be constructed
-     * using the default factory.
-     */
-    public SAXHandler() {
-        this(null);
-    }
-
-    /**
-     * This will create a new <code>SAXHandler</code> that listens to SAX
-     * events and creates a JDOM Document.  The objects will be constructed
-     * using the provided factory.
-     *
-     * @param factory <code>JDOMFactory</code> to be used for constructing
-     * objects
-     */
-    public SAXHandler(JDOMFactory factory) {
-        if (factory != null) {
-            this.factory = factory;
-        } else {
-            this.factory = new DefaultJDOMFactory();
-        }
-
-        atRoot = true;
-        declaredNamespaces = new ArrayList();
-        externalEntities = new HashMap();
-
-        document = this.factory.document(null);
-    }
-
-    /**
-     * Pushes an element onto the tree under construction.  Allows subclasses
-     * to put content under a dummy root element which is useful for building
-     * content that would otherwise be a non-well formed document.
-     *
-     * @param element root element under which content will be built
-     */
-    protected void pushElement(Element element) {
-        if (atRoot) {
-            document.setRootElement(element);  // XXX should we use a factory call?
-            atRoot = false;
-        }
-        else {
-            factory.addContent(currentElement, element);
-        }
-        currentElement = element;
-    }
-
-    /**
-     * Returns the document.  Should be called after parsing is complete.
-     *
-     * @return <code>Document</code> - Document that was built
-     */
-    public Document getDocument() {
-        return document;
-    }
-
-    /**
-     * Returns the factory used for constructing objects.
-     *
-     * @return <code>JDOMFactory</code> - the factory used for
-     * constructing objects.
-     *
-     * @see #SAXHandler(org.jdom.JDOMFactory)
-     */
-    public JDOMFactory getFactory() {
-        return factory;
-    }
-
-    /**
-     * This sets whether or not to expand entities during the build.
-     * A true means to expand entities as normal content.  A false means to
-     * leave entities unexpanded as <code>EntityRef</code> objects.  The
-     * default is true.
-     *
-     * @param expand <code>boolean</code> indicating whether entity expansion
-     * should occur.
-     */
-    public void setExpandEntities(boolean expand) {
-        this.expand = expand;
-    }
-
-    /**
-     * Returns whether or not entities will be expanded during the
-     * build.
-     *
-     * @return <code>boolean</code> - whether entity expansion
-     * will occur during build.
-     *
-     * @see #setExpandEntities
-     */
-    public boolean getExpandEntities() {
-        return expand;
-    }
-
-    /**
-     * Specifies whether or not the parser should elminate whitespace in
-     * element content (sometimes known as "ignorable whitespace") when
-     * building the document.  Only whitespace which is contained within
-     * element content that has an element only content model will be
-     * eliminated (see XML Rec 3.2.1).  For this setting to take effect
-     * requires that validation be turned on.  The default value of this
-     * setting is <code>false</code>.
-     *
-     * @param ignoringWhite Whether to ignore ignorable whitespace
-     */
-    public void setIgnoringElementContentWhitespace(boolean ignoringWhite) {
-        this.ignoringWhite = ignoringWhite;
-    }
-
-    /**
-     * Returns whether or not the parser will elminate whitespace in
-     * element content (sometimes known as "ignorable whitespace") when
-     * building the document.
-     *
-     * @return <code>boolean</code> - whether ignorable whitespace will
-     * be ignored during build.
-     *
-     * @see #setIgnoringElementContentWhitespace
-     */
-    public boolean getIgnoringElementContentWhitespace() {
-        return ignoringWhite;
-    }
-
-    public void startDocument() {
-        if (locator != null) {
-            document.setBaseURI(locator.getSystemId());
-        }
-    }
-
-    /**
-     * This is called when the parser encounters an external entity
-     * declaration.
-     *
-     * @param name entity name
-     * @param publicID public id
-     * @param systemID system id
-     * @throws SAXException when things go wrong
-     */
-    public void externalEntityDecl(String name,
-                                   String publicID, String systemID)
-                                   throws SAXException {
-        // Store the public and system ids for the name
-        externalEntities.put(name, new String[]{publicID, systemID});
-
-        if (!inInternalSubset) return;
-
-        internalSubset.append("  <!ENTITY ")
-              .append(name);
-        appendExternalId(publicID, systemID);
-        internalSubset.append(">\n");
-    }
-
-    /**
-     * This handles an attribute declaration in the internal subset.
-     *
-     * @param eName <code>String</code> element name of attribute
-     * @param aName <code>String</code> attribute name
-     * @param type <code>String</code> attribute type
-     * @param valueDefault <code>String</code> default value of attribute
-     * @param value <code>String</code> value of attribute
-     * @throws SAXException
-     */
-    public void attributeDecl(String eName, String aName, String type,
-                              String valueDefault, String value)
-        throws SAXException {
-
-        if (!inInternalSubset) return;
-
-        internalSubset.append("  <!ATTLIST ")
-              .append(eName)
-              .append(' ')
-              .append(aName)
-              .append(' ')
-              .append(type)
-              .append(' ');
-        if (valueDefault != null) {
-              internalSubset.append(valueDefault);
-        } else {
-            internalSubset.append('\"')
-                  .append(value)
-                  .append('\"');
-        }
-        if ((valueDefault != null) && (valueDefault.equals("#FIXED"))) {
-            internalSubset.append(" \"")
-                  .append(value)
-                  .append('\"');
-        }
-        internalSubset.append(">\n");
-    }
-
-    /**
-     * Handle an element declaration in a DTD.
-     *
-     * @param name <code>String</code> name of element
-     * @param model <code>String</code> model of the element in DTD syntax
-     * @throws SAXException
-     */
-    public void elementDecl(String name, String model) throws SAXException {
-        // Skip elements that come from the external subset
-        if (!inInternalSubset) return;
-
-        internalSubset.append("  <!ELEMENT ")
-              .append(name)
-              .append(' ')
-              .append(model)
-              .append(">\n");
-    }
-
-    /**
-     * Handle an internal entity declaration in a DTD.
-     *
-     * @param name <code>String</code> name of entity
-     * @param value <code>String</code> value of the entity
-     * @throws SAXException
-     */
-    public void internalEntityDecl(String name, String value)
-        throws SAXException {
-
-        // Skip entities that come from the external subset
-        if (!inInternalSubset) return;
-
-        internalSubset.append("  <!ENTITY ");
-        if (name.startsWith("%")) {
-           internalSubset.append("% ").append(name.substring(1));
-        } else {
-           internalSubset.append(name);
-        }
-        internalSubset.append(" \"")
-              .append(value)
-              .append("\">\n");
-    }
-
-    /**
-     * This will indicate that a processing instruction has been encountered.
-     * (The XML declaration is not a processing instruction and will not
-     * be reported.)
-     *
-     * @param target <code>String</code> target of PI
-     * @param data <code>String</code> containing all data sent to the PI.
-     *             This typically looks like one or more attribute value
-     *             pairs.
-     * @throws SAXException when things go wrong
-     */
-    public void processingInstruction(String target, String data)
-        throws SAXException {
-
-        if (suppress) return;
-
-        flushCharacters();
-
-        if (atRoot) {
-            factory.addContent(document, factory.processingInstruction(target, data));
-        } else {
-            factory.addContent(getCurrentElement(),
-                factory.processingInstruction(target, data));
-        }
-    }
-
-    /**
-     * This indicates that an unresolvable entity reference has been
-     * encountered, normally because the external DTD subset has not been
-     * read.
-     *
-     * @param name <code>String</code> name of entity
-     * @throws SAXException when things go wrong
-     */
-    public void skippedEntity(String name)
-        throws SAXException {
-
-        // We don't handle parameter entity references.
-        if (name.startsWith("%")) return;
-
-        flushCharacters();
-
-        factory.addContent(getCurrentElement(), factory.entityRef(name));
-    }
-
-    /**
-     * This will add the prefix mapping to the JDOM
-     * <code>Document</code> object.
-     *
-     * @param prefix <code>String</code> namespace prefix.
-     * @param uri <code>String</code> namespace URI.
-     */
-    public void startPrefixMapping(String prefix, String uri)
-        throws SAXException {
-
-        if (suppress) return;
-
-        Namespace ns = Namespace.getNamespace(prefix, uri);
-        declaredNamespaces.add(ns);
-    }
-
-    /**
-     * This reports the occurrence of an actual element.  It will include
-     * the element's attributes, with the exception of XML vocabulary
-     * specific attributes, such as
-     * <code>xmlns:[namespace prefix]</code> and
-     * <code>xsi:schemaLocation</code>.
-     *
-     * @param namespaceURI <code>String</code> namespace URI this element
-     *                     is associated with, or an empty
-     *                     <code>String</code>
-     * @param localName <code>String</code> name of element (with no
-     *                  namespace prefix, if one is present)
-     * @param qName <code>String</code> XML 1.0 version of element name:
-     *                [namespace prefix]:[localName]
-     * @param atts <code>Attributes</code> list for this element
-     * @throws SAXException when things go wrong
-     */
-    public void startElement(String namespaceURI, String localName,
-                             String qName, Attributes atts)
-                             throws SAXException {
-        if (suppress) return;
-
-        Element element = null;
-
-        if ((namespaceURI != null) && (!namespaceURI.equals(""))) {
-            String prefix = "";
-
-            // Determine any prefix on the Element
-            if (!qName.equals(localName)) {
-                int split = qName.indexOf(":");
-                prefix = qName.substring(0, split);
-            }
-            Namespace elementNamespace =
-                Namespace.getNamespace(prefix, namespaceURI);
-            element = factory.element(localName, elementNamespace);
-        } else {
-            element = factory.element(localName);
-        }
-
-        // Take leftover declared namespaces and add them to this element's
-        // map of namespaces
-        if (declaredNamespaces.size() > 0) {
-            transferNamespaces(element);
-        }
-
-        // Handle attributes
-        for (int i=0, len=atts.getLength(); i<len; i++) {
-            Attribute attribute = null;
-
-            String attLocalName = atts.getLocalName(i);
-            String attQName = atts.getQName(i);
-            int attType = getAttributeType(atts.getType(i));
-
-            // Bypass any xmlns attributes which might appear, as we got
-            // them already in startPrefixMapping().
-            // This is sometimes necessary when SAXHandler is used with
-            // another source than SAXBuilder, as with JDOMResult.
-            if (attQName.startsWith("xmlns:") || attQName.equals("xmlns")) {
-                continue;
-            }
-
-            if (!attQName.equals(attLocalName)) {
-                String attPrefix = attQName.substring(0, attQName.indexOf(":"));
-                Namespace attNs = Namespace.getNamespace(attPrefix,
-                                                         atts.getURI(i));
-
-                attribute = factory.attribute(attLocalName, atts.getValue(i),
-                                              attType, attNs);
-            } else {
-                attribute = factory.attribute(attLocalName, atts.getValue(i),
-                                              attType);
-            }
-            factory.setAttribute(element, attribute);
-        }
-
-        flushCharacters();
-
-        if (atRoot) {
-            document.setRootElement(element);  // XXX should we use a factory call?
-            atRoot = false;
-        } else {
-            factory.addContent(getCurrentElement(), element);
-        }
-        currentElement = element;
-    }
-
-    /**
-     * This will take the supplied <code>{@link Element}</code> and
-     * transfer its namespaces to the global namespace storage.
-     *
-     * @param element <code>Element</code> to read namespaces from.
-     */
-    private void transferNamespaces(Element element) {
-        Iterator i = declaredNamespaces.iterator();
-        while (i.hasNext()) {
-            Namespace ns = (Namespace)i.next();
-            if (ns != element.getNamespace()) {
-                element.addNamespaceDeclaration(ns);
-            }
-        }
-        declaredNamespaces.clear();
-    }
-
-    /**
-     * This will report character data (within an element).
-     *
-     * @param ch <code>char[]</code> character array with character data
-     * @param start <code>int</code> index in array where data starts.
-     * @param length <code>int</code> length of data.
-     * @throws SAXException
-     */
-    public void characters(char[] ch, int start, int length)
-                    throws SAXException {
-
-        if (suppress || (length == 0))
-            return;
-
-        if (previousCDATA != inCDATA) {
-            flushCharacters();
-        }
-
-        textBuffer.append(ch, start, length);
-    }
-
-    /**
-     * Capture ignorable whitespace as text.  If
-     * setIgnoringElementContentWhitespace(true) has been called then this
-     * method does nothing.
-     *
-     * @param ch <code>[]</code> - char array of ignorable whitespace
-     * @param start <code>int</code> - starting position within array
-     * @param length <code>int</code> - length of whitespace after start
-     * @throws SAXException when things go wrong
-     */
-    public void ignorableWhitespace(char[] ch, int start, int length)
-                                                     throws SAXException {
-        if (!ignoringWhite) {
-            characters(ch, start, length);
-        }
-    }
-
-    /**
-     * This will flush any characters from SAX character calls we've
-     * been buffering.
-     *
-     * @throws SAXException when things go wrong
-     */
-    protected void flushCharacters() throws SAXException {
-        flushCharacters(textBuffer.toString());
-        textBuffer.clear();
-    }
-
-    /**
-     * Flush the given string into the document.  This is a protected method
-     * so subclassers can control text handling without knowledge of the
-     * internals of this class.
-     *
-     * @param data string to flush
-     */
-    protected void flushCharacters(String data) throws SAXException {
-        if (data.length() == 0) {
-            previousCDATA = inCDATA;
-            return;
-        }
-
-/**
- * This is commented out because of some problems with
- * the inline DTDs that Xerces seems to have.
-if (!inDTD) {
-  if (inEntity) {
-    getCurrentElement().setContent(factory.text(data));
-  } else {
-    getCurrentElement().addContent(factory.text(data));
-}
-*/
-
-        if (previousCDATA) {
-            factory.addContent(getCurrentElement(), factory.cdata(data));
-        }
-        else {
-            factory.addContent(getCurrentElement(), factory.text(data));
-        }
-
-        previousCDATA = inCDATA;
-    }
-
-    /**
-     * Indicates the end of an element
-     * (<code>&lt;/[element name]&gt;</code>) is reached.  Note that
-     * the parser does not distinguish between empty
-     * elements and non-empty elements, so this will occur uniformly.
-     *
-     * @param namespaceURI <code>String</code> URI of namespace this
-     *                     element is associated with
-     * @param localName <code>String</code> name of element without prefix
-     * @param qName <code>String</code> name of element in XML 1.0 form
-     * @throws SAXException when things go wrong
-     */
-    public void endElement(String namespaceURI, String localName,
-                           String qName) throws SAXException {
-
-        if (suppress) return;
-
-        flushCharacters();
-
-        if (!atRoot) {
-            Parent p = currentElement.getParent();
-            if (p instanceof Document) {
-               atRoot = true;
-            }
-            else {
-                currentElement = (Element) p;
-            }
-        }
-        else {
-            throw new SAXException(
-                "Ill-formed XML document (missing opening tag for " +
-                localName + ")");
-        }
-    }
-
-    /**
-     * This will signify that a DTD is being parsed, and can be
-     * used to ensure that comments and other lexical structures
-     * in the DTD are not added to the JDOM <code>Document</code>
-     * object.
-     *
-     * @param name <code>String</code> name of element listed in DTD
-     * @param publicID <code>String</code> public ID of DTD
-     * @param systemID <code>String</code> system ID of DTD
-     */
-    public void startDTD(String name, String publicID, String systemID)
-        throws SAXException {
-
-        flushCharacters(); // Is this needed here?
-
-        factory.addContent(document, factory.docType(name, publicID, systemID));
-        inDTD = true;
-        inInternalSubset = true;
-    }
-
-    /**
-     * This signifies that the reading of the DTD is complete.
-     *
-     * @throws SAXException
-     */
-    public void endDTD() throws SAXException {
-
-        document.getDocType().setInternalSubset(internalSubset.toString());
-        inDTD = false;
-        inInternalSubset = false;
-    }
-
-    public void startEntity(String name) throws SAXException {
-        entityDepth++;
-
-        if (expand || entityDepth > 1) {
-            // Short cut out if we're expanding or if we're nested
-            return;
-        }
-
-        // A "[dtd]" entity indicates the beginning of the external subset
-        if (name.equals("[dtd]")) {
-            inInternalSubset = false;
-            return;
-        }
-
-        // Ignore DTD references, and translate the standard 5
-        if ((!inDTD) &&
-            (!name.equals("amp")) &&
-            (!name.equals("lt")) &&
-            (!name.equals("gt")) &&
-            (!name.equals("apos")) &&
-            (!name.equals("quot"))) {
-
-            if (!expand) {
-                String pub = null;
-                String sys = null;
-                String[] ids = (String[]) externalEntities.get(name);
-                if (ids != null) {
-                  pub = ids[0];  // may be null, that's OK
-                  sys = ids[1];  // may be null, that's OK
-                }
-                /**
-                 * if no current element, this entity belongs to an attribute
-                 * in these cases, it is an error on the part of the parser
-                 * to call startEntity but this will help in some cases.
-                 * See org/xml/sax/ext/LexicalHandler.html#startEntity(java.lang.String)
-                 * for more information
-                 */
-                if (!atRoot) {
-                    flushCharacters();
-                    EntityRef entity = factory.entityRef(name, pub, sys);
-
-                    // no way to tell if the entity was from an attribute or element so just assume element
-                    factory.addContent(getCurrentElement(), entity);
-                }
-                suppress = true;
-            }
-        }
-    }
-
-    public void endEntity(String name) throws SAXException {
-        entityDepth--;
-        if (entityDepth == 0) {
-            // No way are we suppressing if not in an entity,
-            // regardless of the "expand" value
-            suppress = false;
-        }
-        if (name.equals("[dtd]")) {
-            inInternalSubset = true;
-        }
-    }
-
-    /**
-     * Report a CDATA section
-     *
-     * @throws SAXException
-     */
-    public void startCDATA() throws SAXException {
-        if (suppress) return;
-
-        inCDATA = true;
-    }
-
-    /**
-     * Report a CDATA section
-     */
-    public void endCDATA() throws SAXException {
-        if (suppress) return;
-
-        previousCDATA = true;
-        inCDATA = false;
-    }
-
-    /**
-     * This reports that a comments is parsed.  If not in the
-     * DTD, this comment is added to the current JDOM
-     * <code>Element</code>, or the <code>Document</code> itself
-     * if at that level.
-     *
-     * @param ch <code>ch[]</code> array of comment characters.
-     * @param start <code>int</code> index to start reading from.
-     * @param length <code>int</code> length of data.
-     * @throws SAXException
-     */
-    public void comment(char[] ch, int start, int length)
-        throws SAXException {
-
-        if (suppress) return;
-
-        flushCharacters();
-
-        String commentText = new String(ch, start, length);
-        if (inDTD && inInternalSubset && (expand == false)) {
-            internalSubset.append("  <!--")
-                  .append(commentText)
-                  .append("-->\n");
-            return;
-        }
-        if ((!inDTD) && (!commentText.equals(""))) {
-            if (atRoot) {
-                factory.addContent(document, factory.comment(commentText));
-            } else {
-                factory.addContent(getCurrentElement(), factory.comment(commentText));
-            }
-        }
-    }
-
-    /**
-     * Handle the declaration of a Notation in a DTD
-     *
-     * @param name name of the notation
-     * @param publicID the public ID of the notation
-     * @param systemID the system ID of the notation
-     */
-    public void notationDecl(String name, String publicID, String systemID)
-        throws SAXException {
-
-        if (!inInternalSubset) return;
-
-        internalSubset.append("  <!NOTATION ")
-              .append(name);
-        appendExternalId(publicID, systemID);
-        internalSubset.append(">\n");
-    }
-
-    /**
-     * Handler for unparsed entity declarations in the DTD
-     *
-     * @param name <code>String</code> of the unparsed entity decl
-     * @param publicID <code>String</code> of the unparsed entity decl
-     * @param systemID <code>String</code> of the unparsed entity decl
-     * @param notationName <code>String</code> of the unparsed entity decl
-     */
-    public void unparsedEntityDecl(String name, String publicID,
-                                   String systemID, String notationName)
-        throws SAXException {
-
-        if (!inInternalSubset) return;
-
-        internalSubset.append("  <!ENTITY ")
-              .append(name);
-        appendExternalId(publicID, systemID);
-        internalSubset.append(" NDATA ")
-              .append(notationName);
-        internalSubset.append(">\n");
-    }
-
-    /**
-     * Appends an external ID to the internal subset buffer. Either publicID
-     * or systemID may be null, but not both.
-     *
-     * @param publicID the public ID
-     * @param systemID the system ID
-     */
-    private void appendExternalId(String publicID, String systemID) {
-        if (publicID != null) {
-            internalSubset.append(" PUBLIC \"")
-                  .append(publicID)
-                  .append('\"');
-        }
-        if (systemID != null) {
-            if (publicID == null) {
-                internalSubset.append(" SYSTEM ");
-            }
-            else {
-                internalSubset.append(' ');
-            }
-            internalSubset.append('\"')
-                  .append(systemID)
-                  .append('\"');
-        }
-    }
-
-    /**
-     * Returns the being-parsed element.
-     *
-     * @return <code>Element</code> - element being built.
-     * @throws SAXException
-     */
-    public Element getCurrentElement() throws SAXException {
-        if (currentElement == null) {
-            throw new SAXException(
-                "Ill-formed XML document (multiple root elements detected)");
-        }
-        return currentElement;
-    }
-
-    /**
-     * Returns the the JDOM Attribute type value from the SAX 2.0
-     * attribute type string provided by the parser.
-     *
-     * @param typeName <code>String</code> the SAX 2.0 attribute
-     * type string.
-     *
-     * @return <code>int</code> the JDOM attribute type.
-     *
-     * @see Attribute#setAttributeType
-     * @see Attributes#getType
-     */
-    private static int getAttributeType(String typeName) {
-        Integer type = (Integer)(attrNameToTypeMap.get(typeName));
-        if (type == null) {
-            if (typeName != null && typeName.length() > 0 &&
-                typeName.charAt(0) == '(') {
-                // Xerces 1.4.X reports attributes of enumerated type with
-                // a type string equals to the enumeration definition, i.e.
-                // starting with a parenthesis.
-                return Attribute.ENUMERATED_TYPE;
-            }
-            else {
-                return Attribute.UNDECLARED_TYPE;
-            }
-        } else {
-            return type.intValue();
-        }
-    }
-
-    /**
-     * Receives an object for locating the origin of SAX document
-     * events.  This method is invoked by the SAX parser.
-     * <p>
-     * {@link org.jdom.JDOMFactory} implementations can use the
-     * {@link #getDocumentLocator} method to get access to the
-     * {@link Locator} during parse.
-     * </p>
-     *
-     * @param locator <code>Locator</code> an object that can return
-     * the location of any SAX document event.
-     */
-    public void setDocumentLocator(Locator locator) {
-        this.locator = locator;
-    }
-
-    /**
-     * Provides access to the {@link Locator} object provided by the
-     * SAX parser.
-     *
-     * @return <code>Locator</code> an object that can return
-     * the location of any SAX document event.
-     */
-    public Locator getDocumentLocator() {
-        return locator;
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/TextBuffer.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/TextBuffer.java
deleted file mode 100644
index a4befe5..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/TextBuffer.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*--
-
- $Id: TextBuffer.java,v 1.1 2009/05/27 21:46:20 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom.input;
-
-/**
- * A non-public utility class similar to StringBuffer but optimized for XML
- * parsing where the common case is that you get only one chunk of characters
- * per text section. TextBuffer stores the first chunk of characters in a
- * String, which can just be returned directly if no second chunk is received.
- * Subsequent chunks are stored in a supplemental char array (like StringBuffer
- * uses). In this case, the returned text will be the first String chunk,
- * concatenated with the subsequent chunks stored in the char array. This
- * provides optimal performance in the common case, while still providing very
- * good performance in the uncommon case. Furthermore, avoiding StringBuffer
- * means that no extra unused char array space will be kept around after parsing
- * is through.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:20 $
- * @author  Bradley S. Huffman
- * @author  Alex Rosen
- */
-class TextBuffer {
-
-    private static final String CVS_ID =
-    "@(#) $RCSfile: TextBuffer.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:20 $ $Name:  $";
-
-    /** The first part of the text value (the "prefix"). If null, the
-      * text value is the empty string. */
-    private String prefixString;
-
-    /** The rest of the text value (the "suffix"). Only the first 
-      * code>arraySize</code> characters are valid. */
-    private char[] array;
-
-    /** The size of the rest of the text value. If zero, then only 
-      * code>prefixString</code> contains the text value. */
-    private int arraySize;
-
-    /** Constructor */
-    TextBuffer() {
-        array = new char[4096]; // initial capacity
-        arraySize = 0;
-    }
-
-    /** Append the specified text to the text value of this buffer. */
-    void append(char[] source, int start, int count) {
-        if (prefixString == null) {
-            // This is the first chunk, so we'll store it in the prefix string
-            prefixString = new String(source, start, count);
-        }
-        else {
-            // This is a subsequent chunk, so we'll add it to the char array
-            ensureCapacity(arraySize + count);
-            System.arraycopy(source, start, array, arraySize, count);
-            arraySize += count;
-        }
-    }
-
-    /** Returns the size of the text value. */
-    int size() {
-        if (prefixString == null) {
-            return 0;
-        }
-        else {
-            return prefixString.length() + arraySize;
-        }
-    }
-
-    /** Clears the text value and prepares the TextBuffer for reuse. */
-    void clear() {
-        arraySize = 0;
-        prefixString = null;
-    }
-
-    /** Returns the text value stored in the buffer. */
-    public String toString() {
-        if (prefixString == null) {
-            return "";
-        }
-
-        String str = "";
-        if (arraySize == 0) {
-            // Char array is empty, so the text value is just prefixString.
-            str = prefixString;
-        }
-        else {
-            // Char array is not empty, so the text value is prefixString
-            // plus the char array.
-            str = new StringBuffer(prefixString.length() + arraySize)
-                    .append(prefixString)
-                    .append(array, 0, arraySize)
-                    .toString();
-        }
-        return str;
-    }
-
-    // Ensure that the char array has room for at least "csize" characters.
-    private void ensureCapacity(int csize) {
-        int capacity = array.length;
-        if (csize > capacity) {
-            char[] old = array;
-            int nsize = capacity;
-            while (csize > nsize) {
-                nsize += (capacity/2);
-            }
-            array = new char[nsize];
-            System.arraycopy(old, 0, array, 0, arraySize);
-        }
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/package.html b/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/package.html
deleted file mode 100644
index 600d5e3..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/input/package.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<body>
-
-Classes to build JDOM documents from various sources.  The most common builder
-class is SAXBuilder which constructs a JDOM document using a SAX parser and
-can pull content from files, streams, sockets, readers, and so on.  It can use
-any underlying SAX parser to handle the parsing chores.  SAXHandler provides
-support for SAXBuilder.  DOMBuilder lets you build from a pre-existing DOM
-tree.
-
-</body>
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/DOMOutputter.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/DOMOutputter.java
deleted file mode 100644
index 434ebcf..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/DOMOutputter.java
+++ /dev/null
@@ -1,423 +0,0 @@
-/*-- 
-
- $Id: DOMOutputter.java,v 1.1 2009/05/27 21:46:20 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-
-package org.jdom.output;
-
-import java.util.*;
-
-import org.jdom.*;
-import org.jdom.adapters.*;
-
-
-/**
- * Outputs a JDOM {@link org.jdom.Document org.jdom.Document} as a DOM {@link
- * org.w3c.dom.Document org.w3c.dom.Document}.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:20 $
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- * @author  Matthew Merlo
- * @author  Dan Schaffer
- * @author  Yusuf Goolamabbas
- * @author  Bradley S. Huffman
- */
-public class DOMOutputter {
-
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: DOMOutputter.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:20 $ $Name:  $";
-
-    /** Default adapter class */
-    private static final String DEFAULT_ADAPTER_CLASS =
-        "org.jdom.adapters.XercesDOMAdapter";
-
-    /** Adapter to use for interfacing with the DOM implementation */
-    private String adapterClass;
-
-    /**
-     * This creates a new DOMOutputter which will attempt to first locate
-     * a DOM implementation to use via JAXP, and if JAXP does not exist or
-     * there's a problem, will fall back to the default parser.
-     */
-    public DOMOutputter() {
-        // nothing
-    }
-
-    /**
-     * This creates a new DOMOutputter using the specified DOMAdapter
-     * implementation as a way to choose the underlying parser.
-     *
-     * @param adapterClass <code>String</code> name of class
-     *                     to use for DOM output
-     */
-    public DOMOutputter(String adapterClass) {
-        this.adapterClass = adapterClass;
-    }
-
-
-    /**
-     * This converts the JDOM <code>Document</code> parameter to a 
-     * DOM Document, returning the DOM version.  The DOM implementation
-     * is the one chosen in the constructor.
-     *
-     * @param document <code>Document</code> to output.
-     * @return an <code>org.w3c.dom.Document</code> version
-     */
-    public org.w3c.dom.Document output(Document document)
-                                       throws JDOMException {
-        NamespaceStack namespaces = new NamespaceStack();
-
-        org.w3c.dom.Document domDoc = null;
-        try {
-            // Assign DOCTYPE during construction
-            DocType dt = document.getDocType();
-            domDoc = createDOMDocument(dt);
-
-            // Add content
-            Iterator itr = document.getContent().iterator();
-            while (itr.hasNext()) {
-                Object node = itr.next();
-
-                if (node instanceof Element) {
-                    Element element = (Element) node;
-                    org.w3c.dom.Element domElement =
-                        output(element, domDoc, namespaces);
-                        // Add the root element, first check for existing root
-                        org.w3c.dom.Element root = domDoc.getDocumentElement();
-                        if (root == null) {
-                            // Normal case
-                            domDoc.appendChild(domElement); // normal case
-                        }
-                        else {
-                            // Xerces 1.3 creates new docs with a <root />
-                            // XXX: Need to address DOCTYPE mismatch still
-                            domDoc.replaceChild(domElement, root);
-                        }
-                }
-                else if (node instanceof Comment) {
-                    Comment comment = (Comment) node;
-                    org.w3c.dom.Comment domComment =
-                        domDoc.createComment(comment.getText());
-                    domDoc.appendChild(domComment);
-                }
-                else if (node instanceof ProcessingInstruction) {
-                    ProcessingInstruction pi = 
-                        (ProcessingInstruction) node;
-                    org.w3c.dom.ProcessingInstruction domPI =
-                         domDoc.createProcessingInstruction(
-                         pi.getTarget(), pi.getData());
-                    domDoc.appendChild(domPI);
-                }
-                else if (node instanceof DocType) {
-                    // We already dealt with the DocType above
-                }
-                else {
-                    throw new JDOMException(
-                        "Document contained top-level content with type:" +
-                        node.getClass().getName());
-                }
-            }
-        }
-        catch (Throwable e) {
-            throw new JDOMException("Exception outputting Document", e);
-        }
-
-        return domDoc;
-    }
-
-    private org.w3c.dom.Document createDOMDocument(DocType dt)
-                                       throws JDOMException {
-        if (adapterClass != null) {
-            // The user knows that they want to use a particular impl
-            try {
-                DOMAdapter adapter =
-                    (DOMAdapter)Class.forName(adapterClass).newInstance();
-                // System.out.println("using specific " + adapterClass);
-                return adapter.createDocument(dt);
-            }
-            catch (ClassNotFoundException e) {
-                // e.printStackTrace();
-            }
-            catch (IllegalAccessException e) {
-                // e.printStackTrace();
-            }
-            catch (InstantiationException e) {
-                // e.printStackTrace();
-            }
-        }
-        else {
-            // Try using JAXP...
-            try {
-                DOMAdapter adapter =
-                    (DOMAdapter)Class.forName(
-                    "org.jdom.adapters.JAXPDOMAdapter").newInstance();
-                // System.out.println("using JAXP");
-                return adapter.createDocument(dt);
-            }
-            catch (ClassNotFoundException e) {
-                // e.printStackTrace();
-            }
-            catch (IllegalAccessException e) {
-                // e.printStackTrace();
-            }
-            catch (InstantiationException e) {
-                // e.printStackTrace();
-            }
-        }
-
-        // If no DOM doc yet, try to use a hard coded default
-        try {
-            DOMAdapter adapter = (DOMAdapter)
-                Class.forName(DEFAULT_ADAPTER_CLASS).newInstance();
-            return adapter.createDocument(dt);
-            // System.out.println("Using default " +
-            //   DEFAULT_ADAPTER_CLASS);
-        }
-        catch (ClassNotFoundException e) {
-            // e.printStackTrace();
-        }
-        catch (IllegalAccessException e) {
-            // e.printStackTrace();
-        }
-        catch (InstantiationException e) {
-            // e.printStackTrace();
-        }
-
-        throw new JDOMException("No JAXP or default parser available");
-        
-    }
-
-    private org.w3c.dom.Element output(Element element,
-                                         org.w3c.dom.Document domDoc,
-                                         NamespaceStack namespaces)
-                                         throws JDOMException {
-        try {
-            int previouslyDeclaredNamespaces = namespaces.size();
-
-            org.w3c.dom.Element domElement = null;
-            if (element.getNamespace() == Namespace.NO_NAMESPACE) {
-                // No namespace, use createElement
-                domElement = domDoc.createElement(element.getQualifiedName());
-            }
-            else {
-                domElement = domDoc.createElementNS(
-                                          element.getNamespaceURI(),
-                                          element.getQualifiedName());
-            }
-
-            // Add namespace attributes, beginning with the element's own
-            // Do this only if it's not the XML namespace and it's
-            // not the NO_NAMESPACE with the prefix "" not yet mapped
-            // (we do output xmlns="" if the "" prefix was already used 
-            // and we need to reclaim it for the NO_NAMESPACE)
-            Namespace ns = element.getNamespace();
-            if (ns != Namespace.XML_NAMESPACE &&
-                           !(ns == Namespace.NO_NAMESPACE && 
-                             namespaces.getURI("") == null)) {
-                String prefix = ns.getPrefix();
-                String uri = namespaces.getURI(prefix);
-                if (!ns.getURI().equals(uri)) { // output a new namespace decl
-                    namespaces.push(ns);
-                    String attrName = getXmlnsTagFor(ns);
-                    domElement.setAttribute(attrName, ns.getURI());
-                }
-            }
-
-            // Add additional namespaces also
-            Iterator itr = element.getAdditionalNamespaces().iterator();
-            while (itr.hasNext()) {
-                Namespace additional = (Namespace)itr.next();
-                String prefix = additional.getPrefix();
-                String uri = namespaces.getURI(prefix);
-                if (!additional.getURI().equals(uri)) {
-                    String attrName = getXmlnsTagFor(additional);
-                    domElement.setAttribute(attrName, additional.getURI());
-                    namespaces.push(additional);
-                }
-            }
-
-            // Add attributes to the DOM element
-            itr = element.getAttributes().iterator();
-            while (itr.hasNext()) {
-                Attribute attribute = (Attribute) itr.next();
-                domElement.setAttributeNode(output(attribute, domDoc));
-                Namespace ns1 = attribute.getNamespace();
-                if ((ns1 != Namespace.NO_NAMESPACE) && 
-                    (ns1 != Namespace.XML_NAMESPACE)) {
-                    String prefix = ns1.getPrefix();
-                    String uri = namespaces.getURI(prefix);
-                    if (!ns1.getURI().equals(uri)) { // output a new decl
-                        String attrName = getXmlnsTagFor(ns1);
-                        domElement.setAttribute(attrName, ns1.getURI());
-                        namespaces.push(ns1);
-                    }
-                }
-                // Crimson doesn't like setAttributeNS() for non-NS attribs
-                if (attribute.getNamespace() == Namespace.NO_NAMESPACE) {
-                    // No namespace, use setAttribute
-                    domElement.setAttribute(attribute.getQualifiedName(),
-                                            attribute.getValue());
-                }
-                else {
-                    domElement.setAttributeNS(attribute.getNamespaceURI(),
-                                              attribute.getQualifiedName(),
-                                              attribute.getValue());
-                }
-            }
-
-            // Add content to the DOM element
-            itr = element.getContent().iterator();
-            while (itr.hasNext()) {
-                Object node = itr.next();
-
-                if (node instanceof Element) {
-                    Element e = (Element) node;
-                    org.w3c.dom.Element domElt = output(e, domDoc, namespaces);
-                    domElement.appendChild(domElt);
-                }
-                else if (node instanceof String) {
-                    String str = (String) node;
-                    org.w3c.dom.Text domText = domDoc.createTextNode(str);
-                    domElement.appendChild(domText);
-                }
-                else if (node instanceof CDATA) {
-                    CDATA cdata = (CDATA) node;
-                    org.w3c.dom.CDATASection domCdata =
-                        domDoc.createCDATASection(cdata.getText());
-                    domElement.appendChild(domCdata);
-                }
-                else if (node instanceof Text) {
-                    Text text = (Text) node;
-                    org.w3c.dom.Text domText =
-                        domDoc.createTextNode(text.getText());
-                    domElement.appendChild(domText);
-                }
-                else if (node instanceof Comment) {
-                    Comment comment = (Comment) node;
-                    org.w3c.dom.Comment domComment =
-                        domDoc.createComment(comment.getText());
-                    domElement.appendChild(domComment);
-                }
-                else if (node instanceof ProcessingInstruction) {
-                    ProcessingInstruction pi = 
-                        (ProcessingInstruction) node;
-                    org.w3c.dom.ProcessingInstruction domPI =
-                         domDoc.createProcessingInstruction(
-                         pi.getTarget(), pi.getData());
-                    domElement.appendChild(domPI);
-                }
-                else if (node instanceof EntityRef) {
-                    EntityRef entity = (EntityRef) node;
-                    org.w3c.dom.EntityReference domEntity =
-                        domDoc.createEntityReference(entity.getName());
-                    domElement.appendChild(domEntity);
-                }
-                else {
-                    throw new JDOMException(
-                        "Element contained content with type:" +
-                        node.getClass().getName());
-                }
-            }
-    
-            // Remove declared namespaces from stack
-            while (namespaces.size() > previouslyDeclaredNamespaces) {
-                namespaces.pop();
-            }
-
-            return domElement;
-        }
-        catch (Exception e) {
-            throw new JDOMException("Exception outputting Element " +
-                                    element.getQualifiedName(), e);
-        }
-    }
-
-    private org.w3c.dom.Attr output(Attribute attribute,
-                                      org.w3c.dom.Document domDoc)
-                                      throws JDOMException {
-         org.w3c.dom.Attr domAttr = null;
-         try {
-             if (attribute.getNamespace() == Namespace.NO_NAMESPACE) {
-                 // No namespace, use createAttribute
-                 domAttr = domDoc.createAttribute(attribute.getQualifiedName());
-             }
-             else {
-                 domAttr = domDoc.createAttributeNS(attribute.getNamespaceURI(),
-                                                  attribute.getQualifiedName());
-             }
-             domAttr.setValue(attribute.getValue());
-         } catch (Exception e) {
-             throw new JDOMException("Exception outputting Attribute " +
-                                     attribute.getQualifiedName(), e);
-         }
-         return domAttr;
-    }
-
-    /**
-     * This will handle adding any <code>{@link Namespace}</code>
-     * attributes to the DOM tree.
-     *
-     * @param ns <code>Namespace</code> to add definition of
-     */
-    private static String getXmlnsTagFor(Namespace ns) {
-        String attrName = "xmlns";
-        if (!ns.getPrefix().equals("")) {
-            attrName += ":";
-            attrName += ns.getPrefix();
-        }
-        return attrName;
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/EscapeStrategy.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/EscapeStrategy.java
deleted file mode 100644
index 1b2b5b6..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/EscapeStrategy.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*--
-
- $Id: EscapeStrategy.java,v 1.1 2009/05/27 21:46:20 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom.output;
-
-/**
- * Logic to determine which characters should be formatted as character
- * entities.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:20 $
- * @author Alex Rosen
- * @author Bradley S. Huffman
- * @author Jason Hunter
- */
-public interface EscapeStrategy {
-
-    /**
-     * Test whether the supplied character should be formatted literally
-     * or as a character entity.
-     */
-    public boolean shouldEscape(char ch);
-}
-
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/Format.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/Format.java
deleted file mode 100644
index d19f60f..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/Format.java
+++ /dev/null
@@ -1,608 +0,0 @@
-/*--
-
- $Id: Format.java,v 1.1 2009/05/27 21:46:20 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom.output;
-
-import java.lang.reflect.Method;
-
-/**
- * Class to encapsulate XMLOutputter format options.
- * Typical users can use the standard format configurations obtained by
- * {@link #getRawFormat} (no whitespace changes),
- * {@link #getPrettyFormat} (whitespace beautification), and
- * {@link #getCompactFormat} (whitespace normalization).
- * <p>
- * Several modes are available to effect the way textual content is printed.
- * See the documentation for {@link TextMode} for details.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:20 $
- * @author Jason Hunter
- */
-public class Format implements Cloneable {
-
-    private static final String CVS_ID =
-            "@(#) $RCSfile: Format.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:20 $ $Name:  $";
-
-    /**
-     * Returns a new Format object that performs no whitespace changes, uses
-     * the UTF-8 encoding, doesn't expand empty elements, includes the
-     * declaration and encoding, and uses the default entity escape strategy.
-     * Tweaks can be made to the returned Format instance without affecting
-     * other instances.
-
-     * @return                     a Format with no whitespace changes
-     */
-    public static Format getRawFormat() {
-        return new Format();
-    }
-
-    /**
-     * Returns a new Format object that performs whitespace beautification with
-     * 2-space indents, uses the UTF-8 encoding, doesn't expand empty elements,
-     * includes the declaration and encoding, and uses the default entity
-     * escape strategy.
-     * Tweaks can be made to the returned Format instance without affecting
-     * other instances.
-     *
-     * @return                     a Format with whitespace beautification
-     */
-    public static Format getPrettyFormat() {
-        Format f = new Format();
-        f.setIndent(STANDARD_INDENT);
-        f.setTextMode(TextMode.TRIM);
-        return f;
-    }
-
-    /**
-     * Returns a new Format object that performs whitespace normalization, uses
-     * the UTF-8 encoding, doesn't expand empty elements, includes the
-     * declaration and encoding, and uses the default entity escape strategy.
-     * Tweaks can be made to the returned Format instance without affecting
-     * other instances.
-     *
-     * @return                     a Format with whitespace normalization
-     */
-    public static Format getCompactFormat() {
-        Format f = new Format();
-        f.setTextMode(TextMode.NORMALIZE);
-        return f;
-    }
-
-    /** standard value to indent by, if we are indenting */
-    private static final String STANDARD_INDENT = "  ";
-
-    /** standard string with which to end a line */
-    private static final String STANDARD_LINE_SEPARATOR = "\r\n";
-
-    /** standard encoding */
-    private static final String STANDARD_ENCODING = "UTF-8";
-
-
-    /** The default indent is no spaces (as original document) */
-    String indent = null;
-
-    /** New line separator */
-    String lineSeparator = STANDARD_LINE_SEPARATOR;
-
-    /** The encoding format */
-    String encoding = STANDARD_ENCODING;
-
-    /** Whether or not to output the XML declaration
-     * - default is <code>false</code> */
-    boolean omitDeclaration = false;
-
-    /** Whether or not to output the encoding in the XML declaration
-     * - default is <code>false</code> */
-    boolean omitEncoding = false;
-
-    /** Whether or not to expand empty elements to
-     * &lt;tagName&gt;&lt;/tagName&gt; - default is <code>false</code> */
-    boolean expandEmptyElements = false;
-
-    /** Whether TrAX output escaping disabling/enabling PIs are ignored
-      * or processed - default is <code>false</code> */
-    boolean ignoreTrAXEscapingPIs = false;
-
-    /** text handling mode */
-    TextMode mode = TextMode.PRESERVE;
-
-    /** entity escape logic */
-    EscapeStrategy escapeStrategy = new DefaultEscapeStrategy(encoding);
-
-    /**
-     * Creates a new Format instance with default (raw) behavior.
-     */
-    private Format() { }
-
-    /**
-     * Sets the {@link EscapeStrategy} to use for character escaping.
-     *
-     * @param strategy the EscapeStrategy to use
-     * @return a pointer to this Format for chaining
-     */
-    public Format setEscapeStrategy(EscapeStrategy strategy) {
-        escapeStrategy = strategy;
-        return this;
-    }
-
-    /**
-     * Returns the current escape strategy
-     *
-     * @return the current escape strategy
-     */
-    public EscapeStrategy getEscapeStrategy() {
-        return escapeStrategy;
-    }
-
-    /**
-     * This will set the newline separator (<code>lineSeparator</code>).
-     * The default is <code>\r\n</code>. Note that if the "newlines"
-     * property is false, this value is irrelevant.  To make it output
-     * the system default line ending string, call
-     * <code>setLineSeparator(System.getProperty("line.separator"))</code>
-     *
-     * <p>
-     * To output "UNIX-style" documents, call
-     * <code>setLineSeparator("\n")</code>.  To output "Mac-style"
-     * documents, call <code>setLineSeparator("\r")</code>.  DOS-style
-     * documents use CR-LF ("\r\n"), which is the default.
-     * </p>
-     *
-     * <p>
-     * Note that this only applies to newlines generated by the
-     * outputter.  If you parse an XML document that contains newlines
-     * embedded inside a text node, and you do not set TextMode.NORMALIZE,
-     * then the newlines will be output
-     * verbatim, as "\n" which is how parsers normalize them.
-     * </p>
-     *
-     * @see #setTextMode
-     *
-     * @param separator <code>String</code> line separator to use.
-     * @return a pointer to this Format for chaining
-     */
-    public Format setLineSeparator(String separator) {
-        this.lineSeparator = separator;
-        return this;
-    }
-
-    /**
-     * Returns the current line separator.
-     *
-     * @return the current line separator
-     */
-    public String getLineSeparator() {
-        return lineSeparator;
-    }
-
-    /**
-     * This will set whether the XML declaration
-     * (<code>&lt;&#063;xml version="1&#046;0"
-     * encoding="UTF-8"&#063;&gt;</code>)
-     * includes the encoding of the document. It is common to omit
-     * this in uses such as WML and other wireless device protocols.
-     *
-     * @param omitEncoding <code>boolean</code> indicating whether or not
-     *        the XML declaration should indicate the document encoding.
-     * @return a pointer to this Format for chaining
-     */
-    public Format setOmitEncoding(boolean omitEncoding) {
-        this.omitEncoding = omitEncoding;
-        return this;
-    }
-
-    /**
-     * Returns whether the XML declaration encoding will be omitted.
-     *
-     * @return whether the XML declaration encoding will be omitted
-     */
-    public boolean getOmitEncoding() {
-        return omitEncoding;
-    }
-
-    /**
-     * This will set whether the XML declaration
-     * (<code>&lt;&#063;xml version="1&#046;0"&#063;gt;</code>)
-     * will be omitted or not. It is common to omit this in uses such
-     * as SOAP and XML-RPC calls.
-     *
-     * @param omitDeclaration <code>boolean</code> indicating whether or not
-     *        the XML declaration should be omitted.
-     * @return a pointer to this Format for chaining
-     */
-    public Format setOmitDeclaration(boolean omitDeclaration) {
-        this.omitDeclaration = omitDeclaration;
-        return this;
-    }
-
-    /**
-     * Returns whether the XML declaration will be omitted.
-     *
-     * @return whether the XML declaration will be omitted
-     */
-    public boolean getOmitDeclaration() {
-        return omitDeclaration;
-    }
-
-    /**
-     * This will set whether empty elements are expanded from
-     * <code>&lt;tagName/&gt;</code> to
-     * <code>&lt;tagName&gt;&lt;/tagName&gt;</code>.
-     *
-     * @param expandEmptyElements <code>boolean</code> indicating whether or not
-     *        empty elements should be expanded.
-     * @return a pointer to this Format for chaining
-     */
-    public Format setExpandEmptyElements(boolean expandEmptyElements) {
-        this.expandEmptyElements = expandEmptyElements;
-        return this;
-    }
-
-    /**
-     * Returns whether empty elements are expanded.
-     *
-     * @return whether empty elements are expanded
-     */
-    public boolean getExpandEmptyElements() {
-        return expandEmptyElements;
-    }
-
-    /**
-     * This will set whether JAXP TrAX processing instructions for
-     * disabling/enabling output escaping are ignored.  Disabling
-     * output escaping allows using XML text as element content and
-     * outputing it verbatim, i&#46;e&#46; as element children would be.
-     * <p>
-     * When processed, these processing instructions are removed from
-     * the generated XML text and control whether the element text
-     * content is output verbatim or with escaping of the pre-defined
-     * entities in XML 1.0.  The text to be output verbatim shall be
-     * surrounded by the
-     * <code>&lt;?javax.xml.transform.disable-output-escaping ?&gt;</code>
-     * and <code>&lt;?javax.xml.transform.enable-output-escaping ?&gt;</code>
-     * PIs.</p>
-     * <p>
-     * When ignored, the processing instructions are present in the
-     * generated XML text and the pre-defined entities in XML 1.0 are
-     * escaped.
-     * <p>
-     * Default: <code>false</code>.</p>
-     *
-     * @param ignoreTrAXEscapingPIs <code>boolean</code> indicating
-     *        whether or not TrAX ouput escaping PIs are ignored.
-     *
-     * @see javax.xml.transform.Result#PI_ENABLE_OUTPUT_ESCAPING
-     * @see javax.xml.transform.Result#PI_DISABLE_OUTPUT_ESCAPING
-     */
-    public void setIgnoreTrAXEscapingPIs(boolean ignoreTrAXEscapingPIs) {
-        this.ignoreTrAXEscapingPIs = ignoreTrAXEscapingPIs;
-    }
-
-    /**
-     * Returns whether JAXP TrAX processing instructions for
-     * disabling/enabling output escaping are ignored.
-     *
-     * @return whether or not TrAX ouput escaping PIs are ignored.
-     */
-    public boolean getIgnoreTrAXEscapingPIs() {
-        return ignoreTrAXEscapingPIs;
-    }
-
-    /**
-     * This sets the text output style.  Options are available as static
-     * {@link TextMode} instances.  The default is {@link TextMode#PRESERVE}.
-     *
-     * @return a pointer to this Format for chaining
-     */
-    public Format setTextMode(Format.TextMode mode) {
-        this.mode = mode;
-        return this;
-    }
-
-    /**
-     * Returns the current text output style.
-     *
-     * @return the current text output style
-     */
-    public Format.TextMode getTextMode() {
-        return mode;
-    }
-
-    /**
-     * This will set the indent <code>String</code> to use; this
-     * is usually a <code>String</code> of empty spaces. If you pass
-     * null, or the empty string (""), then no indentation will
-     * happen.  Default: none (null)
-     *
-     * @param indent <code>String</code> to use for indentation.
-     * @return a pointer to this Format for chaining
-     */
-    public Format setIndent(String indent) {
-        // if passed the empty string, change it to null, for marginal
-        // performance gains later (can compare to null first instead
-        // of calling equals())
-        if ("".equals(indent)) {
-            indent = null;
-        }
-        this.indent = indent;
-        return this;
-    }
-
-    /**
-     * Returns the indent string in use.
-     *
-     * @return the indent string in use
-     */
-    public String getIndent() {
-        return indent;
-    }
-
-    /**
-     * Sets the output encoding.  The name should be an accepted XML
-     * encoding.
-     *
-     * @param encoding the encoding format.  Use XML-style names like
-     *                 "UTF-8" or "ISO-8859-1" or "US-ASCII"
-     * @return a pointer to this Format for chaining
-     */
-    public Format setEncoding(String encoding) {
-        this.encoding = encoding;
-        escapeStrategy = new DefaultEscapeStrategy(encoding);
-        return this;
-    }
-
-    /**
-     * Returns the configured output encoding.
-     *
-     * @return the output encoding
-     */
-    public String getEncoding() {
-        return encoding;
-    }
-
-    protected Object clone() {
-        Format format = null;
-
-        try {
-            format = (Format) super.clone();
-        }
-        catch (CloneNotSupportedException ce) {
-        }
-
-        return format;
-    }
-
-
-    /**
-     * Handle common charsets quickly and easily.  Use reflection
-     * to query the JDK 1.4 CharsetEncoder class for unknown charsets.
-     * If JDK 1.4 isn't around, default to no special encoding.
-     */
-    class DefaultEscapeStrategy implements EscapeStrategy {
-        private int bits;
-        Object encoder;
-        Method canEncode;
-
-        public DefaultEscapeStrategy(String encoding) {
-            if ("UTF-8".equalsIgnoreCase(encoding) ||
-                    "UTF-16".equalsIgnoreCase(encoding)) {
-                bits = 16;
-            }
-            else if ("ISO-8859-1".equalsIgnoreCase(encoding) ||
-                    "Latin1".equalsIgnoreCase(encoding)) {
-                bits = 8;
-            }
-            else if ("US-ASCII".equalsIgnoreCase(encoding) ||
-                    "ASCII".equalsIgnoreCase(encoding)) {
-                bits = 7;
-            }
-            else {
-                bits = 0;
-                //encoder = Charset.forName(encoding).newEncoder();
-                try {
-                    Class charsetClass = Class.forName("java.nio.charset.Charset");
-                    Class encoderClass = Class.forName("java.nio.charset.CharsetEncoder");
-                    Method forName = charsetClass.getMethod("forName", new Class[]{String.class});
-                    Object charsetObj = forName.invoke(null, new Object[]{encoding});
-                    Method newEncoder = charsetClass.getMethod("newEncoder", null);
-                    encoder = newEncoder.invoke(charsetObj, null);
-                    canEncode = encoderClass.getMethod("canEncode", new Class[]{char.class});
-                }
-                catch (Exception ignored) {
-                }
-            }
-        }
-
-        public boolean shouldEscape(char ch) {
-            if (bits == 16) {
-                return false;
-            }
-            if (bits == 8) {
-                if ((int) ch > 255)
-                    return true;
-                else
-                    return false;
-            }
-            if (bits == 7) {
-                if ((int) ch > 127)
-                    return true;
-                else
-                    return false;
-            }
-            else {
-                if (canEncode != null && encoder != null) {
-                    try {
-                        Boolean val = (Boolean) canEncode.invoke(encoder, new Object[]{new Character(ch)});
-                        return !val.booleanValue();
-                    }
-                    catch (Exception ignored) {
-                    }
-                }
-                // Return false if we don't know.  This risks not escaping
-                // things which should be escaped, but also means people won't
-                // start getting loads of unnecessary escapes.
-                return false;
-            }
-        }
-    }
-
-
-    /**
-     * Class to signify how text should be handled on output.  The following
-     * table provides details.
-     *
-     * <table>
-     *   <tr>
-     *     <th align="left">
-     *       Text Mode
-     *     </th>
-     *     <th>
-     *       Resulting behavior.
-     *     </th>
-     *   </tr>
-     *
-     *   <tr valign="top">
-     *     <td>
-     *       <i>PRESERVE (Default)</i>
-     *     </td>
-     *     <td>
-     *       All content is printed in the format it was created, no whitespace
-     *       or line separators are are added or removed.
-     *     </td>
-     *   </tr>
-     *
-     *   <tr valign="top">
-     *     <td>
-     *       TRIM_FULL_WHITE
-     *     </td>
-     *     <td>
-     *       Content between tags consisting of all whitespace is not printed.
-     *       If the content contains even one non-whitespace character, it is
-     *       printed verbatim, whitespace and all.
-     *     </td>
-     *   </tr>
-     *
-     *   <tr valign="top">
-     *     <td>
-     *       TRIM
-     *     </td>
-     *     <td>
-     *       Same as TrimAllWhite, plus leading/trailing whitespace are
-     *       trimmed.
-     *     </td>
-     *   </tr>
-     *
-     *   <tr valign="top">
-     *     <td>
-     *       NORMALIZE
-     *     </td>
-     *     <td>
-     *       Same as TextTrim, plus addition interior whitespace is compressed
-     *       to a single space.
-     *     </td>
-     *   </tr>
-     * </table>
-     *
-     * In most cases textual content is aligned with the surrounding tags
-     * (after the appropriate text mode is applied). In the case where the only
-     * content between the start and end tags is textual, the start tag, text,
-     * and end tag are all printed on the same line. If the document being
-     * output already has whitespace, it's wise to turn on TRIM mode so the
-     * pre-existing whitespace can be trimmed before adding new whitespace.
-     * <p>
-     * When a element has a xml:space attribute with the value of "preserve",
-     * all formating is turned off and reverts back to the default until the
-     * element and its contents have been printed. If a nested element contains
-     * another xml:space with the value "default" formatting is turned back on
-     * for the child element and then off for the remainder of the parent
-     * element.
-     */
-    public static class TextMode {
-        /**
-         * Mode for literal text preservation.
-         */
-        public static final TextMode PRESERVE = new TextMode("PRESERVE");
-
-        /**
-         * Mode for text trimming (left and right trim).
-         */
-        public static final TextMode TRIM = new TextMode("TRIM");
-
-        /**
-         * Mode for text normalization (left and right trim plus internal
-         * whitespace is normalized to a single space.
-         * @see org.jdom.Element#getTextNormalize
-         */
-        public static final TextMode NORMALIZE = new TextMode("NORMALIZE");
-
-        /**
-         * Mode for text trimming of content consisting of nothing but
-         * whitespace but otherwise not changing output.
-         */
-        public static final TextMode TRIM_FULL_WHITE =
-                new TextMode("TRIM_FULL_WHITE");
-
-        private final String name;
-
-        private TextMode(String name) {
-            this.name = name;
-        }
-
-        public String toString() {
-            return name;
-        }
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/JDOMLocator.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/JDOMLocator.java
deleted file mode 100644
index e538d62..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/JDOMLocator.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*-- 
-
- $Id: JDOMLocator.java,v 1.1 2009/05/27 21:46:20 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-package org.jdom.output;
-
-import org.xml.sax.*;
-import org.xml.sax.helpers.*;
-
-/**
- * An implementation of the SAX {@link Locator} interface that
- * exposes the JDOM node being processed by SAXOutputter.
- *
- * @author Laurent Bihanic
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:20 $
- */
-public class JDOMLocator extends LocatorImpl {
-   
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: JDOMLocator.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:20 $ $Name:  $";
-
-    /** The JDOM node being processed by SAXOutputter. */
-    private Object node;
-
-    /**
-     * Default no-arg constructor.
-     */
-    JDOMLocator() {                             // package protected
-        super();
-    }
-
-    /**
-     * Copy contructor.
-     *
-     * @param locator <code>Locator</code> to copy location
-     *                information from.
-     */
-    JDOMLocator(Locator locator) {              // package protected
-        super(locator);
-
-        if (locator instanceof JDOMLocator) {
-            this.setNode(((JDOMLocator)locator).getNode());
-        }
-    }
-
-    /**
-     * Returns the JDOM node being processed by SAXOutputter.
-     *
-     * @return the JDOM node being processed by SAXOutputter.
-     */
-    public Object getNode() {
-        return this.node;
-    }
-
-    /**
-     * Sets the being-processed node.
-     *
-     * @param node <code>Object</code> node currently processed
-     *             by SAXOutputter.
-     */
-    void setNode(Object node) {                 // package protected
-        this.node = node;
-    }
-}
-
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/NamespaceStack.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/NamespaceStack.java
deleted file mode 100644
index 35ccfb1..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/NamespaceStack.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*-- 
-
- $Id: NamespaceStack.java,v 1.1 2009/05/27 21:46:20 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-package org.jdom.output;
-
-import java.util.*;
-
-import org.jdom.Namespace;
-
-/**
- * A non-public utility class used by both <code>{@link XMLOutputter}</code> and
- * <code>{@link SAXOutputter}</code> to manage namespaces in a JDOM Document
- * during output.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:20 $
- * @author  Elliotte Rusty Harolde
- * @author  Fred Trimble
- * @author  Brett McLaughlin
- */
-class NamespaceStack {
- 
-    private static final String CVS_ID = 
-      "@(#) $RCSfile: NamespaceStack.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:20 $ $Name:  $";
-
-    /** The prefixes available */
-    private Stack prefixes;
-
-    /** The URIs available */
-    private Stack uris;        
-
-    /**
-     * This creates the needed storage.
-     */
-    NamespaceStack() {
-        prefixes = new Stack();
-        uris = new Stack();
-    }
-  
-    /**
-     * This will add a new <code>{@link Namespace}</code>
-     * to those currently available.
-     * 
-     * @param ns <code>Namespace</code> to add.
-     */
-    public void push(Namespace ns) {
-        prefixes.push(ns.getPrefix());
-        uris.push(ns.getURI());
-    }      
-    
-    /**
-     * This will remove the topmost (most recently added)
-     * <code>{@link Namespace}</code>, and return its prefix.
-     *
-     * @return <code>String</code> - the popped namespace prefix.
-     */
-    public String pop() {
-        String prefix = (String)prefixes.pop();
-        uris.pop();
-
-        return prefix;
-    }
-    
-    /**
-     * This returns the number of available namespaces.
-     *
-     * @return <code>int</code> - size of the namespace stack.
-     */
-    public int size() {
-        return prefixes.size();     
-    }    
-  
-    /**
-     * Given a prefix, this will return the namespace URI most 
-     * rencently (topmost) associated with that prefix.
-     *
-     * @param prefix <code>String</code> namespace prefix.
-     * @return <code>String</code> - the namespace URI for that prefix.
-     */
-    public String getURI(String prefix) {
-        int index = prefixes.lastIndexOf(prefix);
-        if (index == -1) {
-            return null;
-        }
-        String uri = (String)uris.elementAt(index);
-        return uri;       
-    }
-    
-    /**
-     * This will print out the size and current stack, from the
-     * most recently added <code>{@link Namespace}</code> to
-     * the "oldest," all to <code>System.out</code>.
-     */
-    public String toString() {
-        StringBuffer buf = new StringBuffer();
-        String sep = System.getProperty("line.separator");
-        buf.append("Stack: " + prefixes.size() + sep);
-        for (int i = 0; i < prefixes.size(); i++) {
-            buf.append(prefixes.elementAt(i) + "&" + uris.elementAt(i) + sep);
-        }        
-        return buf.toString();
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/SAXOutputter.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/SAXOutputter.java
deleted file mode 100644
index 0b02d9d..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/SAXOutputter.java
+++ /dev/null
@@ -1,1424 +0,0 @@
-/*--
-
- $Id: SAXOutputter.java,v 1.1 2009/05/27 21:46:20 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom.output;
-
-import java.io.*;
-import java.lang.reflect.*;
-import java.util.*;
-
-import org.jdom.*;
-import org.xml.sax.*;
-import org.xml.sax.ext.*;
-import org.xml.sax.helpers.*;
-
-/**
- * Outputs a JDOM document as a stream of SAX2 events.
- * <p>
- * Most ContentHandler callbacks are supported. Both
- * <code>ignorableWhitespace()</code> and <code>skippedEntity()</code> have not
- * been implemented. The <code>{@link JDOMLocator}</code> class returned by
- * <code>{@link #getLocator}</code> exposes the current node being operated
- * upon.
- * <p>
- * At this time, it is not possible to access notations and unparsed entity
- * references in a DTD from JDOM. Therefore, <code>DTDHandler</code> callbacks
- * have not been implemented yet.
- * <p>
- * The <code>ErrorHandler</code> callbacks have not been implemented, since
- * these are supposed to be invoked when the document is parsed and at this
- * point the document exists in memory and is known to have no errors. </p>
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:20 $
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- * @author  Fred Trimble
- * @author  Bradley S. Huffman
- */
-public class SAXOutputter {
-
-    private static final String CVS_ID =
-      "@(#) $RCSfile: SAXOutputter.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:20 $ $Name:  $";
-
-    /** Shortcut for SAX namespaces core feature */
-    private static final String NAMESPACES_SAX_FEATURE =
-                        "http://xml.org/sax/features/namespaces";
-
-    /** Shortcut for SAX namespace-prefixes core feature */
-    private static final String NS_PREFIXES_SAX_FEATURE =
-                        "http://xml.org/sax/features/namespace-prefixes";
-
-    /** Shortcut for SAX validation core feature */
-    private static final String VALIDATION_SAX_FEATURE =
-                        "http://xml.org/sax/features/validation";
-
-    /** Shortcut for SAX-ext. lexical handler property */
-    private static final String LEXICAL_HANDLER_SAX_PROPERTY =
-                        "http://xml.org/sax/properties/lexical-handler";
-
-    /** Shortcut for SAX-ext. declaration handler property */
-    private static final String DECL_HANDLER_SAX_PROPERTY =
-                        "http://xml.org/sax/properties/declaration-handler";
-
-    /**
-     * Shortcut for SAX-ext. lexical handler alternate property.
-     * Although this property URI is not the one defined by the SAX
-     * "standard", some parsers use it instead of the official one.
-     */
-    private static final String LEXICAL_HANDLER_ALT_PROPERTY =
-                        "http://xml.org/sax/handlers/LexicalHandler";
-
-    /** Shortcut for SAX-ext. declaration handler alternate property */
-    private static final String DECL_HANDLER_ALT_PROPERTY =
-                        "http://xml.org/sax/handlers/DeclHandler";
-
-    /**
-     * Array to map JDOM attribute type (as entry index) to SAX
-     * attribute type names.
-     */
-    private static final String[] attrTypeToNameMap = new String[] {
-        "CDATA",        // Attribute.UNDEFINED_ATTRIBUTE, as per SAX 2.0 spec.
-        "CDATA",        // Attribute.CDATA_TYPE
-        "ID",           // Attribute.ID_TYPE
-        "IDREF",        // Attribute.IDREF_TYPE
-        "IDREFS",       // Attribute.IDREFS_TYPE
-        "ENTITY",       // Attribute.ENTITY_TYPE
-        "ENTITIES",     // Attribute.ENTITIES_TYPE
-        "NMTOKEN",      // Attribute.NMTOKEN_TYPE
-        "NMTOKENS",     // Attribute.NMTOKENS_TYPE
-        "NOTATION",     // Attribute.NOTATION_TYPE
-        "NMTOKEN",      // Attribute.ENUMERATED_TYPE, as per SAX 2.0 spec.
-    };
-
-    /** registered <code>ContentHandler</code> */
-    private ContentHandler contentHandler;
-
-    /** registered <code>ErrorHandler</code> */
-    private ErrorHandler errorHandler;
-
-    /** registered <code>DTDHandler</code> */
-    private DTDHandler dtdHandler;
-
-    /** registered <code>EntityResolver</code> */
-    private EntityResolver entityResolver;
-
-    /** registered <code>LexicalHandler</code> */
-    private LexicalHandler lexicalHandler;
-
-    /** registered <code>DeclHandler</code> */
-    private DeclHandler declHandler;
-
-    /**
-     * Whether to report attribute namespace declarations as xmlns attributes.
-     * Defaults to <code>false</code> as per SAX specifications.
-     *
-     * @see <a href="http://www.megginson.com/SAX/Java/namespaces.html">
-     *  SAX namespace specifications</a>
-     */
-    private boolean declareNamespaces = false;
-
-    /**
-     * Whether to report DTD events to DeclHandlers and LexicalHandlers.
-     * Defaults to <code>true</code>.
-     */
-    private boolean reportDtdEvents = true;
-
-    /**
-     * A SAX Locator that points at the JDOM node currently being
-     * outputted.
-     */
-    private JDOMLocator locator = null;
-
-    /**
-     * This will create a <code>SAXOutputter</code> without any
-     * registered handler.  The application is then responsible for
-     * registering them using the <code>setXxxHandler()</code> methods.
-     */
-    public SAXOutputter() {
-    }
-
-    /**
-     * This will create a <code>SAXOutputter</code> with the
-     * specified <code>ContentHandler</code>.
-     *
-     * @param contentHandler contains <code>ContentHandler</code>
-     * callback methods
-     */
-    public SAXOutputter(ContentHandler contentHandler) {
-        this(contentHandler, null, null, null, null);
-    }
-
-    /**
-     * This will create a <code>SAXOutputter</code> with the
-     * specified SAX2 handlers. At this time, only <code>ContentHandler</code>
-     * and <code>EntityResolver</code> are supported.
-     *
-     * @param contentHandler contains <code>ContentHandler</code>
-     * callback methods
-     * @param errorHandler contains <code>ErrorHandler</code> callback methods
-     * @param dtdHandler contains <code>DTDHandler</code> callback methods
-     * @param entityResolver contains <code>EntityResolver</code>
-     * callback methods
-     */
-    public SAXOutputter(ContentHandler contentHandler,
-                        ErrorHandler   errorHandler,
-                        DTDHandler     dtdHandler,
-                        EntityResolver entityResolver) {
-        this(contentHandler, errorHandler, dtdHandler, entityResolver, null);
-    }
-
-    /**
-     * This will create a <code>SAXOutputter</code> with the
-     * specified SAX2 handlers. At this time, only <code>ContentHandler</code>
-     * and <code>EntityResolver</code> are supported.
-     *
-     * @param contentHandler contains <code>ContentHandler</code>
-     * callback methods
-     * @param errorHandler contains <code>ErrorHandler</code> callback methods
-     * @param dtdHandler contains <code>DTDHandler</code> callback methods
-     * @param entityResolver contains <code>EntityResolver</code>
-     * callback methods
-     * @param lexicalHandler contains <code>LexicalHandler</code> callbacks.
-     */
-    public SAXOutputter(ContentHandler contentHandler,
-                        ErrorHandler   errorHandler,
-                        DTDHandler     dtdHandler,
-                        EntityResolver entityResolver,
-                        LexicalHandler lexicalHandler) {
-        this.contentHandler = contentHandler;
-        this.errorHandler = errorHandler;
-        this.dtdHandler = dtdHandler;
-        this.entityResolver = entityResolver;
-        this.lexicalHandler = lexicalHandler;
-    }
-
-    /**
-     * This will set the <code>ContentHandler</code>.
-     *
-     * @param contentHandler contains <code>ContentHandler</code>
-     * callback methods.
-     */
-    public void setContentHandler(ContentHandler contentHandler) {
-        this.contentHandler = contentHandler;
-    }
-
-    /**
-     * Returns the registered <code>ContentHandler</code>.
-     *
-     * @return the current <code>ContentHandler</code> or
-     * <code>null</code> if none was registered.
-     */
-    public ContentHandler getContentHandler() {
-        return this.contentHandler;
-    }
-
-    /**
-     * This will set the <code>ErrorHandler</code>.
-     *
-     * @param errorHandler contains <code>ErrorHandler</code> callback methods.
-     */
-    public void setErrorHandler(ErrorHandler errorHandler) {
-        this.errorHandler = errorHandler;
-    }
-
-    /**
-     * Return the registered <code>ErrorHandler</code>.
-     *
-     * @return the current <code>ErrorHandler</code> or
-     * <code>null</code> if none was registered.
-     */
-    public ErrorHandler getErrorHandler() {
-        return this.errorHandler;
-    }
-
-    /**
-     * This will set the <code>DTDHandler</code>.
-     *
-     * @param dtdHandler contains <code>DTDHandler</code> callback methods.
-     */
-    public void setDTDHandler(DTDHandler dtdHandler) {
-        this.dtdHandler = dtdHandler;
-    }
-
-    /**
-     * Return the registered <code>DTDHandler</code>.
-     *
-     * @return the current <code>DTDHandler</code> or
-     * <code>null</code> if none was registered.
-     */
-    public DTDHandler getDTDHandler() {
-        return this.dtdHandler;
-    }
-
-    /**
-     * This will set the <code>EntityResolver</code>.
-     *
-     * @param entityResolver contains EntityResolver callback methods.
-     */
-    public void setEntityResolver(EntityResolver entityResolver) {
-        this.entityResolver = entityResolver;
-    }
-
-    /**
-     * Return the registered <code>EntityResolver</code>.
-     *
-     * @return the current <code>EntityResolver</code> or
-     * <code>null</code> if none was registered.
-     */
-    public EntityResolver getEntityResolver() {
-        return this.entityResolver;
-    }
-
-    /**
-     * This will set the <code>LexicalHandler</code>.
-     *
-     * @param lexicalHandler contains lexical callback methods.
-     */
-    public void setLexicalHandler(LexicalHandler lexicalHandler) {
-        this.lexicalHandler = lexicalHandler;
-    }
-
-    /**
-     * Return the registered <code>LexicalHandler</code>.
-     *
-     * @return the current <code>LexicalHandler</code> or
-     * <code>null</code> if none was registered.
-     */
-    public LexicalHandler getLexicalHandler() {
-        return this.lexicalHandler;
-    }
-
-    /**
-     * This will set the <code>DeclHandler</code>.
-     *
-     * @param declHandler contains declaration callback methods.
-     */
-    public void setDeclHandler(DeclHandler declHandler) {
-        this.declHandler = declHandler;
-    }
-
-    /**
-     * Return the registered <code>DeclHandler</code>.
-     *
-     * @return the current <code>DeclHandler</code> or
-     * <code>null</code> if none was registered.
-     */
-    public DeclHandler getDeclHandler() {
-        return this.declHandler;
-    }
-
-    /**
-     * Returns whether attribute namespace declarations shall be reported as
-     * "xmlns" attributes.
-     *
-     * @return whether attribute namespace declarations shall be reported as
-     * "xmlns" attributes.
-     */
-    public boolean getReportNamespaceDeclarations() {
-        return declareNamespaces;
-    }
-
-    /**
-     * This will define whether attribute namespace declarations shall be
-     * reported as "xmlns" attributes.  This flag defaults to <code>false</code>
-     * and behaves as the "namespace-prefixes" SAX core feature.
-     *
-     * @param declareNamespaces whether attribute namespace declarations
-     * shall be reported as "xmlns" attributes.
-     */
-    public void setReportNamespaceDeclarations(boolean declareNamespaces) {
-        this.declareNamespaces = declareNamespaces;
-    }
-
-    /**
-     * Returns whether DTD events will be reported.
-     *
-     * @return whether DTD events will be reported
-     */
-    public boolean getReportDTDEvents() {
-        return reportDtdEvents;
-    }
-
-    /**
-     * This will define whether to report DTD events to SAX DeclHandlers
-     * and LexicalHandlers if these handlers are registered and the
-     * document to output includes a DocType declaration.
-     *
-     * @param reportDtdEvents whether to notify DTD events.
-     */
-    public void setReportDTDEvents(boolean reportDtdEvents) {
-        this.reportDtdEvents = reportDtdEvents;
-    }
-
-    /**
-     * This will set the state of a SAX feature.
-     * <p>
-     * All XMLReaders are required to support setting to true and to false.
-     * </p>
-     * <p>
-     * SAXOutputter currently supports the following SAX core features:
-     * <dl>
-     *  <dt><code>http://xml.org/sax/features/namespaces</code></dt>
-     *   <dd><strong>description:</strong> <code>true</code> indicates
-     *       namespace URIs and unprefixed local names for element and
-     *       attribute names will be available</dd>
-     *   <dd><strong>access:</strong> read/write, but always
-     *       <code>true</code>!</dd>
-     *  <dt><code>http://xml.org/sax/features/namespace-prefixes</code></dt>
-     *   <dd><strong>description:</strong> <code>true</code> indicates
-     *       XML 1.0 names (with prefixes) and attributes (including xmlns*
-     *       attributes) will be available</dd>
-     *   <dd><strong>access:</strong> read/write</dd>
-     *  <dt><code>http://xml.org/sax/features/validation</code></dt>
-     *   <dd><strong>description:</strong> controls whether SAXOutputter
-     *       is reporting DTD-related events; if <code>true</code>, the
-     *       DocType internal subset will be parsed to fire DTD events</dd>
-     *   <dd><strong>access:</strong> read/write, defaults to
-     *       <code>true</code></dd>
-     * </dl>
-     * </p>
-     *
-     * @param name  <code>String</code> the feature name, which is a
-     *              fully-qualified URI.
-     * @param value <code>boolean</code> the requested state of the
-     *              feature (true or false).
-     *
-     * @throws SAXNotRecognizedException when SAXOutputter does not
-     *         recognize the feature name.
-     * @throws SAXNotSupportedException  when SAXOutputter recognizes
-     *         the feature name but cannot set the requested value.
-     */
-    public void setFeature(String name, boolean value)
-                throws SAXNotRecognizedException, SAXNotSupportedException {
-        if (NS_PREFIXES_SAX_FEATURE.equals(name)) {
-            // Namespace prefix declarations.
-            this.setReportNamespaceDeclarations(value);
-        }
-        else {
-            if (NAMESPACES_SAX_FEATURE.equals(name)) {
-                if (value != true) {
-                    // Namespaces feature always supported by SAXOutputter.
-                    throw new SAXNotSupportedException(name);
-                }
-                // Else: true is OK!
-            }
-            else {
-                if (VALIDATION_SAX_FEATURE.equals(name)) {
-                    // Report DTD events.
-                    this.setReportDTDEvents(value);
-                }
-                else {
-                    // Not a supported feature.
-                    throw new SAXNotRecognizedException(name);
-                }
-            }
-        }
-    }
-
-    /**
-     * This will look up the value of a SAX feature.
-     *
-     * @param name <code>String</code> the feature name, which is a
-     *             fully-qualified URI.
-     * @return <code>boolean</code> the current state of the feature
-     *         (true or false).
-     *
-     * @throws SAXNotRecognizedException when SAXOutputter does not
-     *         recognize the feature name.
-     * @throws SAXNotSupportedException  when SAXOutputter recognizes
-     *         the feature name but determine its value at this time.
-     */
-    public boolean getFeature(String name)
-                throws SAXNotRecognizedException, SAXNotSupportedException {
-        if (NS_PREFIXES_SAX_FEATURE.equals(name)) {
-            // Namespace prefix declarations.
-            return (this.declareNamespaces);
-        }
-        else {
-            if (NAMESPACES_SAX_FEATURE.equals(name)) {
-                // Namespaces feature always supported by SAXOutputter.
-                return (true);
-            }
-            else {
-                if (VALIDATION_SAX_FEATURE.equals(name)) {
-                    // Report DTD events.
-                    return (this.reportDtdEvents);
-                }
-                else {
-                    // Not a supported feature.
-                    throw new SAXNotRecognizedException(name);
-                }
-            }
-        }
-    }
-
-    /**
-     * This will set the value of a SAX property.
-     * This method is also the standard mechanism for setting extended
-     * handlers.
-     * <p>
-     * SAXOutputter currently supports the following SAX properties:
-     * <dl>
-     *  <dt><code>http://xml.org/sax/properties/lexical-handler</code></dt>
-     *   <dd><strong>data type:</strong>
-     *       <code>org.xml.sax.ext.LexicalHandler</code></dd>
-     *   <dd><strong>description:</strong> An optional extension handler for
-     *       lexical events like comments.</dd>
-     *   <dd><strong>access:</strong> read/write</dd>
-     *  <dt><code>http://xml.org/sax/properties/declaration-handler</code></dt>
-     *   <dd><strong>data type:</strong>
-     *       <code>org.xml.sax.ext.DeclHandler</code></dd>
-     *   <dd><strong>description:</strong> An optional extension handler for
-     *       DTD-related events other than notations and unparsed entities.</dd>
-     *   <dd><strong>access:</strong> read/write</dd>
-     * </dl>
-     * </p>
-     *
-     * @param name  <code>String</code> the property name, which is a
-     *              fully-qualified URI.
-     * @param value <code>Object</code> the requested value for the property.
-     *
-     * @throws SAXNotRecognizedException when SAXOutputter does not recognize
-     *         the property name.
-     * @throws SAXNotSupportedException  when SAXOutputter recognizes the
-     *         property name but cannot set the requested value.
-     */
-    public void setProperty(String name, Object value)
-                throws SAXNotRecognizedException, SAXNotSupportedException {
-        if ((LEXICAL_HANDLER_SAX_PROPERTY.equals(name)) ||
-            (LEXICAL_HANDLER_ALT_PROPERTY.equals(name))) {
-            this.setLexicalHandler((LexicalHandler)value);
-        }
-        else {
-            if ((DECL_HANDLER_SAX_PROPERTY.equals(name)) ||
-                (DECL_HANDLER_ALT_PROPERTY.equals(name))) {
-                this.setDeclHandler((DeclHandler)value);
-            }
-            else {
-                throw new SAXNotRecognizedException(name);
-            }
-        }
-    }
-
-    /**
-     * This will look up the value of a SAX property.
-     *
-     * @param name <code>String</code> the property name, which is a
-     *             fully-qualified URI.
-     * @return <code>Object</code> the current value of the property.
-     *
-     * @throws SAXNotRecognizedException when SAXOutputter does not recognize
-     *         the property name.
-     * @throws SAXNotSupportedException  when SAXOutputter recognizes the
-     *         property name but cannot determine its value at this time.
-     */
-    public Object getProperty(String name)
-                throws SAXNotRecognizedException, SAXNotSupportedException {
-        if ((LEXICAL_HANDLER_SAX_PROPERTY.equals(name)) ||
-            (LEXICAL_HANDLER_ALT_PROPERTY.equals(name))) {
-            return this.getLexicalHandler();
-        }
-        else {
-            if ((DECL_HANDLER_SAX_PROPERTY.equals(name)) ||
-                (DECL_HANDLER_ALT_PROPERTY.equals(name))) {
-                return this.getDeclHandler();
-            }
-            else {
-                throw new SAXNotRecognizedException(name);
-            }
-        }
-    }
-
-
-    /**
-     * This will output the <code>JDOM Document</code>, firing off the
-     * SAX events that have been registered.
-     *
-     * @param document <code>JDOM Document</code> to output.
-     *
-     * @throws JDOMException if any error occurred.
-     */
-    public void output(Document document) throws JDOMException {
-        if (document == null) {
-            return;
-        }
-
-        // contentHandler.setDocumentLocator()
-        documentLocator(document);
-
-        // contentHandler.startDocument()
-        startDocument();
-
-        // Fire DTD events
-        if (this.reportDtdEvents) {
-           dtdEvents(document);
-        }
-
-        // Handle root element, as well as any root level
-        // processing instructions and comments
-        Iterator i = document.getContent().iterator();
-        while (i.hasNext()) {
-            Object obj = i.next();
-
-            // update locator
-            locator.setNode(obj);
-
-            if (obj instanceof Element) {
-                // process root element and its content
-                element(document.getRootElement(), new NamespaceStack());
-            }
-            else if (obj instanceof ProcessingInstruction) {
-                // contentHandler.processingInstruction()
-                processingInstruction((ProcessingInstruction) obj);
-            }
-            else if (obj instanceof Comment) {
-                // lexicalHandler.comment()
-                comment(((Comment) obj).getText());
-            }
-        }
-
-        // contentHandler.endDocument()
-        endDocument();
-    }
-
-    /**
-     * This will output a list of JDOM nodes as a document, firing
-     * off the SAX events that have been registered.
-     * <p>
-     * <strong>Warning</strong>: This method may output ill-formed XML
-     * documents if the list contains top-level objects that are not
-     * legal at the document level (e.g. Text or CDATA nodes, multiple
-     * Element nodes, etc.).  Thus, it should only be used to output
-     * document portions towards ContentHandlers capable of accepting
-     * such ill-formed documents (such as XSLT processors).</p>
-     *
-     * @param nodes <code>List</code> of JDOM nodes to output.
-     *
-     * @throws JDOMException if any error occurred.
-     *
-     * @see #output(org.jdom.Document)
-     */
-    public void output(List nodes) throws JDOMException {
-        if ((nodes == null) || (nodes.size() == 0)) {
-            return;
-        }
-
-        // contentHandler.setDocumentLocator()
-        documentLocator(null);
-
-        // contentHandler.startDocument()
-        startDocument();
-
-        // Process node list.
-        elementContent(nodes, new NamespaceStack());
-
-        // contentHandler.endDocument()
-        endDocument();
-    }
-
-    /**
-     * This will output a single JDOM element as a document, firing
-     * off the SAX events that have been registered.
-     *
-     * @param node the <code>Element</code> node to output.
-     *
-     * @throws JDOMException if any error occurred.
-     */
-    public void output(Element node) throws JDOMException {
-        if (node == null) {
-            return;
-        }
-
-        // contentHandler.setDocumentLocator()
-        documentLocator(null);
-
-        // contentHandler.startDocument()
-        startDocument();
-
-        // Output node.
-        elementContent(node, new NamespaceStack());
-
-        // contentHandler.endDocument()
-        endDocument();
-    }
-
-    /**
-     * This will output a list of JDOM nodes as a fragment of an XML
-     * document, firing off the SAX events that have been registered.
-     * <p>
-     * <strong>Warning</strong>: This method does not call the
-     * {@link ContentHandler#setDocumentLocator},
-     * {@link ContentHandler#startDocument} and
-     * {@link ContentHandler#endDocument} callbacks on the
-     * {@link #setContentHandler ContentHandler}.  The user shall
-     * invoke these methods directly prior/after outputting the
-     * document fragments.</p>
-     *
-     * @param nodes <code>List</code> of JDOM nodes to output.
-     *
-     * @throws JDOMException if any error occurred.
-     *
-     * @see #outputFragment(org.jdom.Content)
-     */
-    public void outputFragment(List nodes) throws JDOMException {
-        if ((nodes == null) || (nodes.size() == 0)) {
-            return;
-        }
-
-        // Output node list as a document fragment.
-        elementContent(nodes, new NamespaceStack());
-    }
-
-    /**
-     * This will output a single JDOM nodes as a fragment of an XML
-     * document, firing off the SAX events that have been registered.
-     * <p>
-     * <strong>Warning</strong>: This method does not call the
-     * {@link ContentHandler#setDocumentLocator},
-     * {@link ContentHandler#startDocument} and
-     * {@link ContentHandler#endDocument} callbacks on the
-     * {@link #setContentHandler ContentHandler}.  The user shall
-     * invoke these methods directly prior/after outputting the
-     * document fragments.</p>
-     *
-     * @param node the <code>Content</code> node to output.
-     *
-     * @throws JDOMException if any error occurred.
-     *
-     * @see #outputFragment(java.util.List)
-     */
-    public void outputFragment(Content node) throws JDOMException {
-        if (node == null) {
-            return;
-        }
-
-        // Output single node as a document fragment.
-        elementContent(node, new NamespaceStack());
-    }
-
-    /**
-     * This parses a DTD declaration to fire the related events towards
-     * the registered handlers.
-     *
-     * @param document <code>JDOM Document</code> the DocType is to
-     *                 process.
-     */
-    private void dtdEvents(Document document) throws JDOMException {
-        DocType docType = document.getDocType();
-
-        // Fire DTD-related events only if handlers have been registered.
-        if ((docType != null) &&
-            ((dtdHandler != null) || (declHandler != null))) {
-
-            // Build a dummy XML document that only references the DTD...
-            String dtdDoc = new XMLOutputter().outputString(docType);
-
-            try {
-                // And parse it to fire DTD events.
-                createDTDParser().parse(new InputSource(
-                                                new StringReader(dtdDoc)));
-
-                // We should never reach this point as the document is
-                // ill-formed; it does not have any root element.
-            }
-            catch (SAXParseException e) {
-                // Expected exception: There's no root element in document.
-            }
-            catch (SAXException e) {
-                throw new JDOMException("DTD parsing error", e);
-            }
-            catch (IOException e) {
-                throw new JDOMException("DTD parsing error", e);
-            }
-        }
-    }
-
-    /**
-     * <p>
-     * This method tells you the line of the XML file being parsed.
-     * For an in-memory document, it's meaningless. The location
-     * is only valid for the current parsing lifecycle, but
-     * the document has already been parsed. Therefore, it returns
-     * -1 for both line and column numbers.
-     * </p>
-     *
-     * @param document JDOM <code>Document</code>.
-     */
-    private void documentLocator(Document document) {
-        locator = new JDOMLocator();
-        String publicID = null;
-        String systemID = null;
-
-        if (document != null) {
-            DocType docType = document.getDocType();
-            if (docType != null) {
-                publicID = docType.getPublicID();
-                systemID = docType.getSystemID();
-            }
-        }
-        locator.setPublicId(publicID);
-        locator.setSystemId(systemID);
-        locator.setLineNumber(-1);
-        locator.setColumnNumber(-1);
-
-        contentHandler.setDocumentLocator(locator);
-    }
-
-    /**
-     * <p>
-     * This method is always the second method of all callbacks in
-     * all handlers to be invoked (setDocumentLocator is always first).
-     * </p>
-     */
-    private void startDocument() throws JDOMException {
-        try {
-            contentHandler.startDocument();
-        }
-        catch (SAXException se) {
-            throw new JDOMException("Exception in startDocument", se);
-        }
-    }
-
-    /**
-     * <p>
-     * Always the last method of all callbacks in all handlers
-     * to be invoked.
-     * </p>
-     */
-    private void endDocument() throws JDOMException {
-        try {
-            contentHandler.endDocument();
-
-            // reset locator
-            locator = null;
-        }
-        catch (SAXException se) {
-            throw new JDOMException("Exception in endDocument", se);
-        }
-    }
-
-    /**
-     * <p>
-     * This will invoke the <code>ContentHandler.processingInstruction</code>
-     * callback when a processing instruction is encountered.
-     * </p>
-     *
-     * @param pi <code>ProcessingInstruction</code> containing target and data.
-     */
-    private void processingInstruction(ProcessingInstruction pi)
-                           throws JDOMException {
-        if (pi != null) {
-            String target = pi.getTarget();
-            String data = pi.getData();
-            try {
-                contentHandler.processingInstruction(target, data);
-            }
-            catch (SAXException se) {
-                throw new JDOMException(
-                    "Exception in processingInstruction", se);
-            }
-        }
-    }
-
-    /**
-     * <p>
-     * This will recursively invoke all of the callbacks for a particular
-     * element.
-     * </p>
-     *
-     * @param element <code>Element</code> used in callbacks.
-     * @param namespaces <code>List</code> stack of Namespaces in scope.
-     */
-    private void element(Element element, NamespaceStack namespaces)
-                           throws JDOMException {
-        // used to check endPrefixMapping
-        int previouslyDeclaredNamespaces = namespaces.size();
-
-        // contentHandler.startPrefixMapping()
-        Attributes nsAtts = startPrefixMapping(element, namespaces);
-
-        // contentHandler.startElement()
-        startElement(element, nsAtts);
-
-        // handle content in the element
-        elementContent(element.getContent(), namespaces);
-
-        // update locator
-        locator.setNode(element);
-
-        // contentHandler.endElement()
-        endElement(element);
-
-        // contentHandler.endPrefixMapping()
-        endPrefixMapping(namespaces, previouslyDeclaredNamespaces);
-    }
-
-    /**
-     * <p>
-     * This will invoke the <code>ContentHandler.startPrefixMapping</code>
-     * callback
-     * when a new namespace is encountered in the <code>Document</code>.
-     * </p>
-     *
-     * @param element <code>Element</code> used in callbacks.
-     * @param namespaces <code>List</code> stack of Namespaces in scope.
-     *
-     * @return <code>Attributes</code> declaring the namespaces local to
-     * <code>element</code> or <code>null</code>.
-     */
-    private Attributes startPrefixMapping(Element element,
-                                          NamespaceStack namespaces)
-                                                   throws JDOMException {
-        AttributesImpl nsAtts = null;   // The namespaces as xmlns attributes
-
-        Namespace ns = element.getNamespace();
-        if (ns != Namespace.XML_NAMESPACE) {
-            String prefix = ns.getPrefix();
-            String uri = namespaces.getURI(prefix);
-            if (!ns.getURI().equals(uri)) {
-                namespaces.push(ns);
-                nsAtts = this.addNsAttribute(nsAtts, ns);
-                try {
-                    contentHandler.startPrefixMapping(prefix, ns.getURI());
-                }
-                catch (SAXException se) {
-                   throw new JDOMException(
-                       "Exception in startPrefixMapping", se);
-                }
-            }
-        }
-
-        // Fire additional namespace declarations
-        List additionalNamespaces = element.getAdditionalNamespaces();
-        if (additionalNamespaces != null) {
-            Iterator itr = additionalNamespaces.iterator();
-            while (itr.hasNext()) {
-                ns = (Namespace)itr.next();
-                String prefix = ns.getPrefix();
-                String uri = namespaces.getURI(prefix);
-                if (!ns.getURI().equals(uri)) {
-                    namespaces.push(ns);
-                    nsAtts = this.addNsAttribute(nsAtts, ns);
-                    try {
-                        contentHandler.startPrefixMapping(prefix, ns.getURI());
-                    }
-                    catch (SAXException se) {
-                        throw new JDOMException(
-                            "Exception in startPrefixMapping", se);
-                    }
-                }
-            }
-        }
-        return nsAtts;
-    }
-
-    /**
-     * <p>
-     * This will invoke the <code>endPrefixMapping</code> callback in the
-     * <code>ContentHandler</code> when a namespace is goes out of scope
-     * in the <code>Document</code>.
-     * </p>
-     *
-     * @param namespaces <code>List</code> stack of Namespaces in scope.
-     * @param previouslyDeclaredNamespaces number of previously declared
-     * namespaces
-     */
-    private void endPrefixMapping(NamespaceStack namespaces,
-                                  int previouslyDeclaredNamespaces)
-                                                throws JDOMException {
-        while (namespaces.size() > previouslyDeclaredNamespaces) {
-            String prefix = namespaces.pop();
-            try {
-                contentHandler.endPrefixMapping(prefix);
-            }
-            catch (SAXException se) {
-                throw new JDOMException("Exception in endPrefixMapping", se);
-            }
-        }
-    }
-
-    /**
-     * <p>
-     * This will invoke the <code>startElement</code> callback
-     * in the <code>ContentHandler</code>.
-     * </p>
-     *
-     * @param element <code>Element</code> used in callbacks.
-     * @param nsAtts <code>List</code> of namespaces to declare with
-     * the element or <code>null</code>.
-     */
-    private void startElement(Element element, Attributes nsAtts)
-                      throws JDOMException {
-        String namespaceURI = element.getNamespaceURI();
-        String localName = element.getName();
-        String rawName = element.getQualifiedName();
-
-        // Allocate attribute list.
-        AttributesImpl atts = (nsAtts != null)?
-                              new AttributesImpl(nsAtts): new AttributesImpl();
-
-        List attributes = element.getAttributes();
-        Iterator i = attributes.iterator();
-        while (i.hasNext()) {
-            Attribute a = (Attribute) i.next();
-            atts.addAttribute(a.getNamespaceURI(),
-                              a.getName(),
-                              a.getQualifiedName(),
-                              getAttributeTypeName(a.getAttributeType()),
-                              a.getValue());
-        }
-
-        try {
-            contentHandler.startElement(namespaceURI, localName, rawName, atts);
-        }
-        catch (SAXException se) {
-            throw new JDOMException("Exception in startElement", se);
-        }
-    }
-
-    /**
-     * <p>
-     * This will invoke the <code>endElement</code> callback
-     * in the <code>ContentHandler</code>.
-     * </p>
-     *
-     * @param element <code>Element</code> used in callbacks.
-     */
-    private void endElement(Element element) throws JDOMException {
-        String namespaceURI = element.getNamespaceURI();
-        String localName = element.getName();
-        String rawName = element.getQualifiedName();
-
-        try {
-            contentHandler.endElement(namespaceURI, localName, rawName);
-        }
-        catch (SAXException se) {
-            throw new JDOMException("Exception in endElement", se);
-        }
-    }
-
-    /**
-     * <p>
-     * This will invoke the callbacks for the content of an element.
-     * </p>
-     *
-     * @param content element content as a <code>List</code> of nodes.
-     * @param namespaces <code>List</code> stack of Namespaces in scope.
-     */
-    private void elementContent(List content, NamespaceStack namespaces)
-                      throws JDOMException {
-        for (Iterator i=content.iterator(); i.hasNext(); ) {
-            Object obj = i.next();
-
-            if (obj instanceof Content) {
-                this.elementContent((Content)obj, namespaces);
-            }
-            else {
-                // Not a valid element child. This could happen with
-                // application-provided lists which may contain non
-                // JDOM objects.
-                handleError(new JDOMException(
-                                        "Invalid element content: " + obj));
-            }
-        }
-    }
-
-    /**
-     * <p>
-     * This will invoke the callbacks for the content of an element.
-     * </p>
-     *
-     * @param node a <code>Content</code> node.
-     * @param namespaces <code>List</code> stack of Namespaces in scope.
-     */
-    private void elementContent(Content node, NamespaceStack namespaces)
-                      throws JDOMException {
-        // update locator
-        locator.setNode(node);
-
-        if (node instanceof Element) {
-            element((Element) node, namespaces);
-        }
-        else if (node instanceof CDATA) {
-            cdata(((CDATA) node).getText());
-        }
-        else if (node instanceof Text) {
-            // contentHandler.characters()
-            characters(((Text) node).getText());
-        }
-        else if (node instanceof ProcessingInstruction) {
-            // contentHandler.processingInstruction()
-            processingInstruction((ProcessingInstruction) node);
-        }
-        else if (node instanceof Comment) {
-            // lexicalHandler.comment()
-            comment(((Comment) node).getText());
-        }
-        else if (node instanceof EntityRef) {
-            // contentHandler.skippedEntity()
-            entityRef((EntityRef) node);
-        }
-        else {
-            // Not a valid element child. This could happen with
-            // application-provided lists which may contain non
-            // JDOM objects.
-            handleError(new JDOMException("Invalid element content: " + node));
-        }
-    }
-
-    /**
-     * <p>
-     * This will be called for each chunk of CDATA section encountered.
-     * </p>
-     *
-     * @param cdataText all text in the CDATA section, including whitespace.
-     */
-    private void cdata(String cdataText) throws JDOMException {
-        try {
-            if (lexicalHandler != null) {
-                lexicalHandler.startCDATA();
-                characters(cdataText);
-                lexicalHandler.endCDATA();
-            }
-            else {
-                characters(cdataText);
-            }
-        }
-        catch (SAXException se) {
-            throw new JDOMException("Exception in CDATA", se);
-        }
-    }
-
-    /**
-     * <p>
-     * This will be called for each chunk of character data encountered.
-     * </p>
-     *
-     * @param elementText all text in an element, including whitespace.
-     */
-    private void characters(String elementText) throws JDOMException {
-        char[] c = elementText.toCharArray();
-        try {
-            contentHandler.characters(c, 0, c.length);
-        }
-        catch (SAXException se) {
-            throw new JDOMException("Exception in characters", se);
-        }
-    }
-
-    /**
-     * <p>
-     *  This will be called for each chunk of comment data encontered.
-     * </p>
-     *
-     * @param commentText all text in a comment, including whitespace.
-     */
-    private void comment(String commentText) throws JDOMException {
-        if (lexicalHandler != null) {
-            char[] c = commentText.toCharArray();
-            try {
-                lexicalHandler.comment(c, 0, c.length);
-            } catch (SAXException se) {
-                throw new JDOMException("Exception in comment", se);
-            }
-        }
-    }
-
-    /**
-     * <p>
-     * This will invoke the <code>ContentHandler.skippedEntity</code>
-     * callback when an entity reference is encountered.
-     * </p>
-     *
-     * @param entity <code>EntityRef</code>.
-     */
-    private void entityRef(EntityRef entity) throws JDOMException {
-        if (entity != null) {
-            try {
-                // No need to worry about appending a '%' character as
-                // we do not support parameter entities
-                contentHandler.skippedEntity(entity.getName());
-            }
-            catch (SAXException se) {
-                throw new JDOMException("Exception in entityRef", se);
-            }
-        }
-    }
-
-
-    /**
-     * <p>
-     * Appends a namespace declaration in the form of a xmlns attribute to
-     * an attribute list, crerating this latter if needed.
-     * </p>
-     *
-     * @param atts <code>AttributeImpl</code> where to add the attribute.
-     * @param ns <code>Namespace</code> the namespace to declare.
-     *
-     * @return <code>AttributeImpl</code> the updated attribute list.
-     */
-    private AttributesImpl addNsAttribute(AttributesImpl atts, Namespace ns) {
-        if (this.declareNamespaces) {
-            if (atts == null) {
-                atts = new AttributesImpl();
-            }
-            atts.addAttribute("",                          // namespace
-                              "",                          // local name
-                              "xmlns:" + ns.getPrefix(),   // qualified name
-                              "CDATA",                     // type
-                              ns.getURI());                // value
-        }
-        return atts;
-    }
-
-    /**
-     * <p>
-     * Returns the SAX 2.0 attribute type string from the type of
-     * a JDOM Attribute.
-     * </p>
-     *
-     * @param type <code>int</code> the type of the JDOM attribute.
-     *
-     * @return <code>String</code> the SAX 2.0 attribute type string.
-     *
-     * @see org.jdom.Attribute#getAttributeType
-     * @see org.xml.sax.Attributes#getType
-     */
-    private static String getAttributeTypeName(int type) {
-        if ((type < 0) || (type >= attrTypeToNameMap.length)) {
-            type = Attribute.UNDECLARED_TYPE;
-        }
-        return attrTypeToNameMap[type];
-    }
-
-    /**
-     * <p>
-     * Notifies the registered {@link ErrorHandler SAX error handler}
-     * (if any) of an input processing error. The error handler can
-     * choose to absorb the error and let the processing continue.
-     * </p>
-     *
-     * @param exception <code>JDOMException</code> containing the
-     *                  error information; will be wrapped in a
-     *                  {@link SAXParseException} when reported to
-     *                  the SAX error handler.
-     *
-     * @throws JDOMException if no error handler has been registered
-     *                       or if the error handler fired a
-     *                       {@link SAXException}.
-     */
-    private void handleError(JDOMException exception) throws JDOMException {
-        if (errorHandler != null) {
-            try {
-                errorHandler.error(new SAXParseException(
-                                exception.getMessage(), null, exception));
-            }
-            catch (SAXException se) {
-               if (se.getException() instanceof JDOMException) {
-                   throw (JDOMException)(se.getException());
-               }
-               else {
-                   throw new JDOMException(se.getMessage(), se);
-               }
-            }
-        }
-        else {
-            throw exception;
-        }
-    }
-
-    /**
-     * <p>
-     * Creates a SAX XMLReader.
-     * </p>
-     *
-     * @return <code>XMLReader</code> a SAX2 parser.
-     *
-     * @throws Exception if no parser can be created.
-     */
-    protected XMLReader createParser() throws Exception {
-        XMLReader parser = null;
-
-        // Try using JAXP...
-        // Note we need JAXP 1.1, and if JAXP 1.0 is all that's
-        // available then the getXMLReader call fails and we skip
-        // to the hard coded default parser
-        try {
-            Class factoryClass =
-                    Class.forName("javax.xml.parsers.SAXParserFactory");
-
-            // factory = SAXParserFactory.newInstance();
-            Method newParserInstance =
-                    factoryClass.getMethod("newInstance", null);
-            Object factory = newParserInstance.invoke(null, null);
-
-            // jaxpParser = factory.newSAXParser();
-            Method newSAXParser = factoryClass.getMethod("newSAXParser", null);
-            Object jaxpParser   = newSAXParser.invoke(factory, null);
-
-            // parser = jaxpParser.getXMLReader();
-            Class parserClass = jaxpParser.getClass();
-            Method getXMLReader =
-                    parserClass.getMethod("getXMLReader", null);
-            parser = (XMLReader)getXMLReader.invoke(jaxpParser, null);
-        } catch (ClassNotFoundException e) {
-            //e.printStackTrace();
-        } catch (InvocationTargetException e) {
-            //e.printStackTrace();
-        } catch (NoSuchMethodException e) {
-            //e.printStackTrace();
-        } catch (IllegalAccessException e) {
-            //e.printStackTrace();
-        }
-
-        // Check to see if we got a parser yet, if not, try to use a
-        // hard coded default
-        if (parser == null) {
-            parser = XMLReaderFactory.createXMLReader(
-                                "org.apache.xerces.parsers.SAXParser");
-        }
-        return parser;
-    }
-
-    /**
-     * <p>
-     * This will create a SAX XMLReader capable of parsing a DTD and
-     * configure it so that the DTD parsing events are routed to the
-     * handlers registered onto this SAXOutputter.
-     * </p>
-     *
-     * @return <code>XMLReader</code> a SAX2 parser.
-     *
-     * @throws JDOMException if no parser can be created.
-     */
-    private XMLReader createDTDParser() throws JDOMException {
-        XMLReader parser = null;
-
-        // Get a parser instance
-        try
-        {
-            parser = createParser();
-        }
-        catch (Exception ex1) {
-           throw new JDOMException("Error in SAX parser allocation", ex1);
-        }
-
-        // Register handlers
-        if (this.getDTDHandler() != null) {
-            parser.setDTDHandler(this.getDTDHandler());
-        }
-        if (this.getEntityResolver() != null) {
-            parser.setEntityResolver(this.getEntityResolver());
-        }
-        if (this.getLexicalHandler() != null) {
-            try {
-                parser.setProperty(LEXICAL_HANDLER_SAX_PROPERTY,
-                                   this.getLexicalHandler());
-            }
-            catch (SAXException ex1) {
-                try {
-                    parser.setProperty(LEXICAL_HANDLER_ALT_PROPERTY,
-                                       this.getLexicalHandler());
-                } catch (SAXException ex2) {
-                    // Forget it!
-                }
-            }
-        }
-        if (this.getDeclHandler() != null) {
-            try {
-                parser.setProperty(DECL_HANDLER_SAX_PROPERTY,
-                                   this.getDeclHandler());
-            }
-            catch (SAXException ex1) {
-                try {
-                    parser.setProperty(DECL_HANDLER_ALT_PROPERTY,
-                                       this.getDeclHandler());
-                } catch (SAXException ex2) {
-                    // Forget it!
-                }
-            }
-        }
-
-        // Absorb errors as much as possible, per Laurent
-        parser.setErrorHandler(new DefaultHandler());
-
-        return parser;
-    }
-
-    /**
-     * Returns a JDOMLocator object referencing the node currently
-     * being processed by this outputter.  The returned object is a
-     * snapshot of the  location information and can thus safely be
-     * memorized for later use.
-     * <p>
-     * This method allows direct access to the location information
-     * maintained by SAXOutputter without requiring to implement
-     * <code>XMLFilter</code>. (In SAX, locators are only available
-     * though the <code>ContentHandler</code> interface).</p>
-     * <p>
-     * Note that location information is only available while
-     * SAXOutputter is outputting nodes. Hence this method should
-     * only be used by objects taking part in the output processing
-     * such as <code>ErrorHandler</code>s.
-     *
-     * @return a JDOMLocator object referencing the node currently
-     *         being processed or <code>null</code> if no output
-     *         operation is being performed.
-     */
-    public JDOMLocator getLocator() {
-        return (locator != null)? new JDOMLocator(locator): null;
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/XMLOutputter.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/XMLOutputter.java
deleted file mode 100644
index 6205378..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/XMLOutputter.java
+++ /dev/null
@@ -1,1610 +0,0 @@
-/*--
-
- $Id: XMLOutputter.java,v 1.1 2009/05/27 21:46:20 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom.output;
-
-import java.io.*;
-import java.util.*;
-
-import javax.xml.transform.Result;
-
-import org.jdom.*;
-
-/**
- * Outputs a JDOM document as a stream of bytes. The outputter can manage many
- * styles of document formatting, from untouched to pretty printed. The default
- * is to output the document content exactly as created, but this can be changed
- * by setting a new Format object. For pretty-print output, use
- * <code>{@link Format#getPrettyFormat()}</code>. For whitespace-normalized
- * output, use <code>{@link Format#getCompactFormat()}</code>.
- * <p>
- * There are <code>{@link #output output(...)}</code> methods to print any of
- * the standard JDOM classes, including Document and Element, to either a Writer
- * or an OutputStream. <b>Warning</b>: When outputting to a Writer, make sure
- * the writer's encoding matches the encoding setting in the Format object. This
- * ensures the encoding in which the content is written (controlled by the
- * Writer configuration) matches the encoding placed in the document's XML
- * declaration (controlled by the XMLOutputter). Because a Writer cannot be
- * queried for its encoding, the information must be passed to the Format
- * manually in its constructor or via the
- * <code>{@link Format#setEncoding}</code> method. The default encoding is
- * UTF-8.
- * <p>
- * The methods <code>{@link #outputString outputString(...)}</code> are for
- * convenience only; for top performance you should call one of the <code>{@link
- * #output output(...)}</code> methods and pass in your own Writer or
- * OutputStream if possible.
- * <p>
- * XML declarations are always printed on their own line followed by a line
- * seperator (this doesn't change the semantics of the document). To omit
- * printing of the declaration use
- * <code>{@link Format#setOmitDeclaration}</code>. To omit printing of the
- * encoding in the declaration use <code>{@link Format#setOmitEncoding}</code>.
- * Unfortunatly there is currently no way to know the original encoding of the
- * document.
- * <p>
- * Empty elements are by default printed as &lt;empty/&gt;, but this can be
- * configured with <code>{@link Format#setExpandEmptyElements}</code> to cause
- * them to be expanded to &lt;empty&gt;&lt;/empty&gt;.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:20 $
- * @author  Brett McLaughlin
- * @author  Jason Hunter
- * @author  Jason Reid
- * @author  Wolfgang Werner
- * @author  Elliotte Rusty Harold
- * @author  David &amp; Will (from Post Tool Design)
- * @author  Dan Schaffer
- * @author  Alex Chaffee
- * @author  Bradley S. Huffman
- */
-
-public class XMLOutputter implements Cloneable {
-
-    private static final String CVS_ID =
-      "@(#) $RCSfile: XMLOutputter.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:20 $ $Name:  $";
-
-    // For normal output
-    private Format userFormat = Format.getRawFormat();
-
-    // For xml:space="preserve"
-    protected static final Format preserveFormat = Format.getRawFormat();
-
-    // What's currently in use
-    protected Format currentFormat = userFormat;
-
-    /** Whether output escaping is enabled for the being processed
-      * Element - default is <code>true</code> */
-    private boolean escapeOutput = true;
-
-    // * * * * * * * * * * Constructors * * * * * * * * * *
-    // * * * * * * * * * * Constructors * * * * * * * * * *
-
-    /**
-     * This will create an <code>XMLOutputter</code> with the default
-     * {@link Format} matching {@link Format#getRawFormat}.
-     */
-    public XMLOutputter() {
-    }
-
-    /**
-     * This will create an <code>XMLOutputter</code> with the specified
-     * format characteristics.  Note the format object is cloned internally
-     * before use.
-     */
-    public XMLOutputter(Format format) {
-        userFormat = (Format) format.clone();
-        currentFormat = userFormat;
-    }
-
-    /**
-     * This will create an <code>XMLOutputter</code> with all the
-     * options as set in the given <code>XMLOutputter</code>.  Note
-     * that <code>XMLOutputter two = (XMLOutputter)one.clone();</code>
-     * would work equally well.
-     *
-     * @param that the XMLOutputter to clone
-     */
-    public XMLOutputter(XMLOutputter that) {
-        this.userFormat = (Format) that.userFormat.clone();
-        currentFormat = userFormat;
-    }
-
-    // * * * * * * * * * * Set parameters methods * * * * * * * * * *
-    // * * * * * * * * * * Set parameters methods * * * * * * * * * *
-
-    /**
-     * Sets the new format logic for the outputter.  Note the Format
-     * object is cloned internally before use.
-     *
-     * @param newFormat the format to use for output
-     */
-    public void setFormat(Format newFormat) {
-        this.userFormat = (Format) newFormat.clone();
-        this.currentFormat = userFormat;
-    }
-
-    /**
-     * Returns the current format in use by the outputter.  Note the 
-     * Format object returned is a clone of the one used internally.
-     */
-    public Format getFormat() {
-        return (Format) userFormat.clone();
-    }
-
-    // * * * * * * * * * * Output to a OutputStream * * * * * * * * * *
-    // * * * * * * * * * * Output to a OutputStream * * * * * * * * * *
-
-    /**
-     * This will print the <code>Document</code> to the given output stream.
-     * The characters are printed using the encoding specified in the
-     * constructor, or a default of UTF-8.
-     *
-     * @param doc <code>Document</code> to format.
-     * @param out <code>OutputStream</code> to use.
-     * @throws IOException - if there's any problem writing.
-     */
-    public void output(Document doc, OutputStream out)
-                    throws IOException {
-        Writer writer = makeWriter(out);
-        output(doc, writer);  // output() flushes
-    }
-
-    /**
-     * Print out the <code>{@link DocType}</code>.
-     *
-     * @param doctype <code>DocType</code> to output.
-     * @param out <code>OutputStream</code> to use.
-     */
-    public void output(DocType doctype, OutputStream out) throws IOException {
-        Writer writer = makeWriter(out);
-        output(doctype, writer);  // output() flushes
-    }
-
-    /**
-     * Print out an <code>{@link Element}</code>, including
-     * its <code>{@link Attribute}</code>s, and all
-     * contained (child) elements, etc.
-     *
-     * @param element <code>Element</code> to output.
-     * @param out <code>Writer</code> to use.
-     */
-    public void output(Element element, OutputStream out) throws IOException {
-        Writer writer = makeWriter(out);
-        output(element, writer);  // output() flushes
-    }
-
-    /**
-     * This will handle printing out an <code>{@link
-     * Element}</code>'s content only, not including its tag, and
-     * attributes.  This can be useful for printing the content of an
-     * element that contains HTML, like "&lt;description&gt;JDOM is
-     * &lt;b&gt;fun&gt;!&lt;/description&gt;".
-     *
-     * @param element <code>Element</code> to output.
-     * @param out <code>OutputStream</code> to use.
-     */
-    public void outputElementContent(Element element, OutputStream out)
-                    throws IOException {
-        Writer writer = makeWriter(out);
-        outputElementContent(element, writer);  // output() flushes
-    }
-
-    /**
-     * This will handle printing out a list of nodes.
-     * This can be useful for printing the content of an element that
-     * contains HTML, like "&lt;description&gt;JDOM is
-     * &lt;b&gt;fun&gt;!&lt;/description&gt;".
-     *
-     * @param list <code>List</code> of nodes.
-     * @param out <code>OutputStream</code> to use.
-     */
-    public void output(List list, OutputStream out)
-                    throws IOException {
-        Writer writer = makeWriter(out);
-        output(list, writer);  // output() flushes
-    }
-
-    /**
-     * Print out a <code>{@link CDATA}</code> node.
-     *
-     * @param cdata <code>CDATA</code> to output.
-     * @param out <code>OutputStream</code> to use.
-     */
-    public void output(CDATA cdata, OutputStream out) throws IOException {
-        Writer writer = makeWriter(out);
-        output(cdata, writer);  // output() flushes
-    }
-
-    /**
-     * Print out a <code>{@link Text}</code> node.  Perfoms
-     * the necessary entity escaping and whitespace stripping.
-     *
-     * @param text <code>Text</code> to output.
-     * @param out <code>OutputStream</code> to use.
-     */
-    public void output(Text text, OutputStream out) throws IOException {
-        Writer writer = makeWriter(out);
-        output(text, writer);  // output() flushes
-    }
-
-    /**
-     * Print out a <code>{@link Comment}</code>.
-     *
-     * @param comment <code>Comment</code> to output.
-     * @param out <code>OutputStream</code> to use.
-     */
-    public void output(Comment comment, OutputStream out) throws IOException {
-        Writer writer = makeWriter(out);
-        output(comment, writer);  // output() flushes
-    }
-
-    /**
-     * Print out a <code>{@link ProcessingInstruction}</code>.
-     *
-     * @param pi <code>ProcessingInstruction</code> to output.
-     * @param out <code>OutputStream</code> to use.
-     */
-    public void output(ProcessingInstruction pi, OutputStream out)
-                                 throws IOException {
-        Writer writer = makeWriter(out);
-        output(pi, writer);  // output() flushes
-    }
-
-    /**
-     * Print out a <code>{@link EntityRef}</code>.
-     *
-     * @param entity <code>EntityRef</code> to output.
-     * @param out <code>OutputStream</code> to use.
-     */
-    public void output(EntityRef entity, OutputStream out) throws IOException {
-        Writer writer = makeWriter(out);
-        output(entity, writer);  // output() flushes
-    }
-
-    /**
-     * Get an OutputStreamWriter, using prefered encoding
-     * (see {@link Format#setEncoding}).
-     */
-    private Writer makeWriter(OutputStream out)
-                         throws java.io.UnsupportedEncodingException {
-        return makeWriter(out, userFormat.encoding);
-    }
-
-    /**
-     * Get an OutputStreamWriter, use specified encoding.
-     */
-    private static Writer makeWriter(OutputStream out, String enc)
-                         throws java.io.UnsupportedEncodingException {
-        // "UTF-8" is not recognized before JDK 1.1.6, so we'll translate
-        // into "UTF8" which works with all JDKs.
-        if ("UTF-8".equals(enc)) {
-            enc = "UTF8";
-        }
-
-        Writer writer = new BufferedWriter(
-                            (new OutputStreamWriter(
-                                new BufferedOutputStream(out), enc)
-                            ));
-        return writer;
-    }
-
-    // * * * * * * * * * * Output to a Writer * * * * * * * * * *
-    // * * * * * * * * * * Output to a Writer * * * * * * * * * *
-
-    /**
-     * This will print the <code>Document</code> to the given Writer.
-     *
-     * <p>
-     * Warning: using your own Writer may cause the outputter's
-     * preferred character encoding to be ignored.  If you use
-     * encodings other than UTF-8, we recommend using the method that
-     * takes an OutputStream instead.
-     * </p>
-     *
-     * @param doc <code>Document</code> to format.
-     * @param out <code>Writer</code> to use.
-     * @throws IOException - if there's any problem writing.
-     */
-    public void output(Document doc, Writer out) throws IOException {
-
-        printDeclaration(out, doc, userFormat.encoding);
-
-        // Print out root element, as well as any root level
-        // comments and processing instructions,
-        // starting with no indentation
-        List content = doc.getContent();
-        int size = content.size();
-        for (int i = 0; i < size; i++) {
-            Object obj = content.get(i);
-
-            if (obj instanceof Element) {
-                printElement(out, doc.getRootElement(), 0,
-                             createNamespaceStack());
-            }
-            else if (obj instanceof Comment) {
-                printComment(out, (Comment) obj);
-            }
-            else if (obj instanceof ProcessingInstruction) {
-                printProcessingInstruction(out, (ProcessingInstruction) obj);
-            }
-            else if (obj instanceof DocType) {
-                printDocType(out, doc.getDocType());
-                // Always print line separator after declaration, helps the
-                // output look better and is semantically inconsequential
-                out.write(currentFormat.lineSeparator);
-            }
-            else {
-                // XXX if we get here then we have a illegal content, for
-                //     now we'll just ignore it
-            }
-
-            newline(out);
-            indent(out, 0);
-        }
-
-        // Output final line separator
-        // We output this no matter what the newline flags say
-        out.write(currentFormat.lineSeparator);
-
-        out.flush();
-    }
-
-    /**
-     * Print out the <code>{@link DocType}</code>.
-     *
-     * @param doctype <code>DocType</code> to output.
-     * @param out <code>Writer</code> to use.
-     */
-    public void output(DocType doctype, Writer out) throws IOException {
-        printDocType(out, doctype);
-        out.flush();
-    }
-
-    /**
-     * Print out an <code>{@link Element}</code>, including
-     * its <code>{@link Attribute}</code>s, and all
-     * contained (child) elements, etc.
-     *
-     * @param element <code>Element</code> to output.
-     * @param out <code>Writer</code> to use.
-     */
-    public void output(Element element, Writer out) throws IOException {
-        // If this is the root element we could pre-initialize the
-        // namespace stack with the namespaces
-        printElement(out, element, 0, createNamespaceStack());
-        out.flush();
-    }
-
-    /**
-     * This will handle printing out an <code>{@link
-     * Element}</code>'s content only, not including its tag, and
-     * attributes.  This can be useful for printing the content of an
-     * element that contains HTML, like "&lt;description&gt;JDOM is
-     * &lt;b&gt;fun&gt;!&lt;/description&gt;".
-     *
-     * @param element <code>Element</code> to output.
-     * @param out <code>Writer</code> to use.
-     */
-    public void outputElementContent(Element element, Writer out)
-                    throws IOException {
-        List content = element.getContent();
-        printContentRange(out, content, 0, content.size(),
-                          0, createNamespaceStack());
-        out.flush();
-    }
-
-    /**
-     * This will handle printing out a list of nodes.
-     * This can be useful for printing the content of an element that
-     * contains HTML, like "&lt;description&gt;JDOM is
-     * &lt;b&gt;fun&gt;!&lt;/description&gt;".
-     *
-     * @param list <code>List</code> of nodes.
-     * @param out <code>Writer</code> to use.
-     */
-    public void output(List list, Writer out)
-                    throws IOException {
-        printContentRange(out, list, 0, list.size(),
-                          0, createNamespaceStack());
-        out.flush();
-    }
-
-    /**
-     * Print out a <code>{@link CDATA}</code> node.
-     *
-     * @param cdata <code>CDATA</code> to output.
-     * @param out <code>Writer</code> to use.
-     */
-    public void output(CDATA cdata, Writer out) throws IOException {
-        printCDATA(out, cdata);
-        out.flush();
-    }
-
-    /**
-     * Print out a <code>{@link Text}</code> node.  Perfoms
-     * the necessary entity escaping and whitespace stripping.
-     *
-     * @param text <code>Text</code> to output.
-     * @param out <code>Writer</code> to use.
-     */
-    public void output(Text text, Writer out) throws IOException {
-        printText(out, text);
-        out.flush();
-    }
-
-    /**
-     * Print out a <code>{@link Comment}</code>.
-     *
-     * @param comment <code>Comment</code> to output.
-     * @param out <code>Writer</code> to use.
-     */
-    public void output(Comment comment, Writer out) throws IOException {
-        printComment(out, comment);
-        out.flush();
-    }
-
-    /**
-     * Print out a <code>{@link ProcessingInstruction}</code>.
-     *
-     * @param pi <code>ProcessingInstruction</code> to output.
-     * @param out <code>Writer</code> to use.
-     */
-    public void output(ProcessingInstruction pi, Writer out)
-                                 throws IOException {
-        boolean currentEscapingPolicy = currentFormat.ignoreTrAXEscapingPIs;
-
-        // Output PI verbatim, disregarding TrAX escaping PIs.
-        currentFormat.setIgnoreTrAXEscapingPIs(true);
-        printProcessingInstruction(out, pi);
-        currentFormat.setIgnoreTrAXEscapingPIs(currentEscapingPolicy);
-
-        out.flush();
-    }
-
-    /**
-     * Print out a <code>{@link EntityRef}</code>.
-     *
-     * @param entity <code>EntityRef</code> to output.
-     * @param out <code>Writer</code> to use.
-     */
-    public void output(EntityRef entity, Writer out) throws IOException {
-        printEntityRef(out, entity);
-        out.flush();
-    }
-
-    // * * * * * * * * * * Output to a String * * * * * * * * * *
-    // * * * * * * * * * * Output to a String * * * * * * * * * *
-
-    /**
-     * Return a string representing a document.  Uses an internal
-     * StringWriter. Warning: a String is Unicode, which may not match
-     * the outputter's specified encoding.
-     *
-     * @param doc <code>Document</code> to format.
-     */
-    public String outputString(Document doc) {
-        StringWriter out = new StringWriter();
-        try {
-            output(doc, out);  // output() flushes
-        } catch (IOException e) { }
-        return out.toString();
-    }
-
-    /**
-     * Return a string representing a DocType. Warning: a String is
-     * Unicode, which may not match the outputter's specified
-     * encoding.
-     *
-     * @param doctype <code>DocType</code> to format.
-     */
-    public String outputString(DocType doctype) {
-        StringWriter out = new StringWriter();
-        try {
-            output(doctype, out);  // output() flushes
-        } catch (IOException e) { }
-        return out.toString();
-    }
-
-    /**
-     * Return a string representing an element. Warning: a String is
-     * Unicode, which may not match the outputter's specified
-     * encoding.
-     *
-     * @param element <code>Element</code> to format.
-     */
-    public String outputString(Element element) {
-        StringWriter out = new StringWriter();
-        try {
-            output(element, out);  // output() flushes
-        } catch (IOException e) { }
-        return out.toString();
-    }
-
-   /**
-     * Return a string representing a list of nodes.  The list is
-     * assumed to contain legal JDOM nodes.
-     *
-     * @param list <code>List</code> to format.
-     */
-    public String outputString(List list) {
-        StringWriter out = new StringWriter();
-        try {
-            output(list, out);  // output() flushes
-        } catch (IOException e) { }
-        return out.toString();
-    }
-
-    /**
-     * Return a string representing a CDATA node. Warning: a String is
-     * Unicode, which may not match the outputter's specified
-     * encoding.
-     *
-     * @param cdata <code>CDATA</code> to format.
-     */
-    public String outputString(CDATA cdata) {
-        StringWriter out = new StringWriter();
-        try {
-            output(cdata, out);  // output() flushes
-        } catch (IOException e) { }
-        return out.toString();
-    }
-
-    /**
-     * Return a string representing a Text node. Warning: a String is
-     * Unicode, which may not match the outputter's specified
-     * encoding.
-     *
-     * @param text <code>Text</code> to format.
-     */
-    public String outputString(Text text) {
-        StringWriter out = new StringWriter();
-        try {
-            output(text, out);  // output() flushes
-        } catch (IOException e) { }
-        return out.toString();
-    }
-
-
-    /**
-     * Return a string representing a comment. Warning: a String is
-     * Unicode, which may not match the outputter's specified
-     * encoding.
-     *
-     * @param comment <code>Comment</code> to format.
-     */
-    public String outputString(Comment comment) {
-        StringWriter out = new StringWriter();
-        try {
-            output(comment, out);  // output() flushes
-        } catch (IOException e) { }
-        return out.toString();
-    }
-
-    /**
-     * Return a string representing a PI. Warning: a String is
-     * Unicode, which may not match the outputter's specified
-     * encoding.
-     *
-     * @param pi <code>ProcessingInstruction</code> to format.
-     */
-    public String outputString(ProcessingInstruction pi) {
-        StringWriter out = new StringWriter();
-        try {
-            output(pi, out);  // output() flushes
-        } catch (IOException e) { }
-        return out.toString();
-    }
-
-   /**
-     * Return a string representing an entity. Warning: a String is
-     * Unicode, which may not match the outputter's specified
-     * encoding.
-     *
-     * @param entity <code>EntityRef</code> to format.
-     */
-    public String outputString(EntityRef entity) {
-        StringWriter out = new StringWriter();
-        try {
-            output(entity, out);  // output() flushes
-        } catch (IOException e) { }
-        return out.toString();
-    }
-
-    // * * * * * * * * * * Internal printing methods * * * * * * * * * *
-    // * * * * * * * * * * Internal printing methods * * * * * * * * * *
-
-    /**
-     * This will handle printing of the declaration.
-     * Assumes XML version 1.0 since we don't directly know.
-     *
-     * @param doc <code>Document</code> whose declaration to write.
-     * @param out <code>Writer</code> to use.
-     * @param encoding The encoding to add to the declaration
-     */
-    protected void printDeclaration(Writer out, Document doc,
-                                    String encoding) throws IOException {
-
-        // Only print the declaration if it's not being omitted
-        if (!userFormat.omitDeclaration) {
-            // Assume 1.0 version
-            out.write("<?xml version=\"1.0\"");
-            if (!userFormat.omitEncoding) {
-                out.write(" encoding=\"" + encoding + "\"");
-            }
-            out.write("?>");
-
-            // Print new line after decl always, even if no other new lines
-            // Helps the output look better and is semantically
-            // inconsequential
-            out.write(currentFormat.lineSeparator);
-        }
-    }
-
-    /**
-     * This handle printing the DOCTYPE declaration if one exists.
-     *
-     * @param docType <code>Document</code> whose declaration to write.
-     * @param out <code>Writer</code> to use.
-     */
-    protected void printDocType(Writer out, DocType docType)
-                        throws IOException {
-
-        String publicID = docType.getPublicID();
-        String systemID = docType.getSystemID();
-        String internalSubset = docType.getInternalSubset();
-        boolean hasPublic = false;
-
-        out.write("<!DOCTYPE ");
-        out.write(docType.getElementName());
-        if (publicID != null) {
-            out.write(" PUBLIC \"");
-            out.write(publicID);
-            out.write("\"");
-            hasPublic = true;
-        }
-        if (systemID != null) {
-            if (!hasPublic) {
-                out.write(" SYSTEM");
-            }
-            out.write(" \"");
-            out.write(systemID);
-            out.write("\"");
-        }
-        if ((internalSubset != null) && (!internalSubset.equals(""))) {
-            out.write(" [");
-            out.write(currentFormat.lineSeparator);
-            out.write(docType.getInternalSubset());
-            out.write("]");
-        }
-        out.write(">");
-    }
-
-    /**
-     * This will handle printing of comments.
-     *
-     * @param comment <code>Comment</code> to write.
-     * @param out <code>Writer</code> to use.
-     */
-    protected void printComment(Writer out, Comment comment)
-                       throws IOException {
-        out.write("<!--");
-        out.write(comment.getText());
-        out.write("-->");
-    }
-
-    /**
-     * This will handle printing of processing instructions.
-     *
-     * @param pi <code>ProcessingInstruction</code> to write.
-     * @param out <code>Writer</code> to use.
-     */
-    protected void printProcessingInstruction(Writer out, ProcessingInstruction pi
-                                              ) throws IOException {
-        String target = pi.getTarget();
-        boolean piProcessed = false;
-
-        if (currentFormat.ignoreTrAXEscapingPIs == false) {
-            if (target.equals(Result.PI_DISABLE_OUTPUT_ESCAPING)) {
-                escapeOutput = false;
-                piProcessed  = true;
-            }
-            else if (target.equals(Result.PI_ENABLE_OUTPUT_ESCAPING)) {
-                escapeOutput = true;
-                piProcessed  = true;
-            }
-        }
-        if (piProcessed == false) {
-            String rawData = pi.getData();
-
-            // Write <?target data?> or if no data then just <?target?>
-            if (!"".equals(rawData)) {
-                out.write("<?");
-                out.write(target);
-                out.write(" ");
-                out.write(rawData);
-                out.write("?>");
-            }
-            else {
-                out.write("<?");
-                out.write(target);
-                out.write("?>");
-            }
-        }
-    }
-
-    /**
-     * This will handle printing a <code>{@link EntityRef}</code>.
-     * Only the entity reference such as <code>&amp;entity;</code>
-     * will be printed. However, subclasses are free to override
-     * this method to print the contents of the entity instead.
-     *
-     * @param entity <code>EntityRef</code> to output.
-     * @param out <code>Writer</code> to use.  */
-    protected void printEntityRef(Writer out, EntityRef entity)
-                       throws IOException {
-        out.write("&");
-        out.write(entity.getName());
-        out.write(";");
-    }
-
-    /**
-     * This will handle printing of <code>{@link CDATA}</code> text.
-     *
-     * @param cdata <code>CDATA</code> to output.
-     * @param out <code>Writer</code> to use.
-     */
-    protected void printCDATA(Writer out, CDATA cdata) throws IOException {
-        String str = (currentFormat.mode == Format.TextMode.NORMALIZE)
-                     ? cdata.getTextNormalize()
-                     : ((currentFormat.mode == Format.TextMode.TRIM) ?
-                             cdata.getText().trim() : cdata.getText());
-        out.write("<![CDATA[");
-        out.write(str);
-        out.write("]]>");
-    }
-
-    /**
-     * This will handle printing of <code>{@link Text}</code> strings.
-     *
-     * @param text <code>Text</code> to write.
-     * @param out <code>Writer</code> to use.
-     */
-    protected void printText(Writer out, Text text) throws IOException {
-        String str = (currentFormat.mode == Format.TextMode.NORMALIZE)
-                     ? text.getTextNormalize()
-                     : ((currentFormat.mode == Format.TextMode.TRIM) ?
-                          text.getText().trim() : text.getText());
-        out.write(escapeElementEntities(str));
-    }
-
-    /**
-     * This will handle printing a string.  Escapes the element entities,
-     * trims interior whitespace, etc. if necessary.
-     */
-    private void printString(Writer out, String str) throws IOException {
-        if (currentFormat.mode == Format.TextMode.NORMALIZE) {
-            str = Text.normalizeString(str);
-        }
-        else if (currentFormat.mode == Format.TextMode.TRIM) {
-            str = str.trim();
-        }
-        out.write(escapeElementEntities(str));
-    }
-
-    /**
-     * This will handle printing of a <code>{@link Element}</code>,
-     * its <code>{@link Attribute}</code>s, and all contained (child)
-     * elements, etc.
-     *
-     * @param element <code>Element</code> to output.
-     * @param out <code>Writer</code> to use.
-     * @param level <code>int</code> level of indention.
-     * @param namespaces <code>List</code> stack of Namespaces in scope.
-     */
-    protected void printElement(Writer out, Element element,
-                                int level, NamespaceStack namespaces)
-                       throws IOException {
-
-        List attributes = element.getAttributes();
-        List content = element.getContent();
-
-        // Check for xml:space and adjust format settings
-        String space = null;
-        if (attributes != null) {
-            space = element.getAttributeValue("space",
-                                               Namespace.XML_NAMESPACE);
-        }
-
-        Format previousFormat = currentFormat;
-
-        if ("default".equals(space)) {
-            currentFormat = userFormat;
-        }
-        else if ("preserve".equals(space)) {
-            currentFormat = preserveFormat;
-        }
-
-        // Print the beginning of the tag plus attributes and any
-        // necessary namespace declarations
-        out.write("<");
-        printQualifiedName(out, element);
-
-        // Mark our namespace starting point
-        int previouslyDeclaredNamespaces = namespaces.size();
-
-        // Print the element's namespace, if appropriate
-        printElementNamespace(out, element, namespaces);
-
-        // Print out additional namespace declarations
-        printAdditionalNamespaces(out, element, namespaces);
-
-        // Print out attributes
-        if (attributes != null)
-            printAttributes(out, attributes, element, namespaces);
-
-        // Depending on the settings (newlines, textNormalize, etc), we may
-        // or may not want to print all of the content, so determine the
-        // index of the start of the content we're interested
-        // in based on the current settings.
-
-        int start = skipLeadingWhite(content, 0);
-        int size = content.size();
-        if (start >= size) {
-            // Case content is empty or all insignificant whitespace
-            if (currentFormat.expandEmptyElements) {
-                out.write("></");
-                printQualifiedName(out, element);
-                out.write(">");
-            }
-            else {
-                out.write(" />");
-            }
-        }
-        else {
-            out.write(">");
-
-            // For a special case where the content is only CDATA
-            // or Text we don't want to indent after the start or
-            // before the end tag.
-
-            if (nextNonText(content, start) < size) {
-                // Case Mixed Content - normal indentation
-                newline(out);
-                printContentRange(out, content, start, size,
-                                  level + 1, namespaces);
-                newline(out);
-                indent(out, level);
-            }
-            else {
-                // Case all CDATA or Text - no indentation
-                printTextRange(out, content, start, size);
-            }
-            out.write("</");
-            printQualifiedName(out, element);
-            out.write(">");
-        }
-
-        // remove declared namespaces from stack
-        while (namespaces.size() > previouslyDeclaredNamespaces) {
-            namespaces.pop();
-        }
-
-        // Restore our format settings
-        currentFormat = previousFormat;
-    }
-
-    /**
-     * This will handle printing of content within a given range.
-     * The range to print is specified in typical Java fashion; the
-     * starting index is inclusive, while the ending index is
-     * exclusive.
-     *
-     * @param content <code>List</code> of content to output
-     * @param start index of first content node (inclusive.
-     * @param end index of last content node (exclusive).
-     * @param out <code>Writer</code> to use.
-     * @param level <code>int</code> level of indentation.
-     * @param namespaces <code>List</code> stack of Namespaces in scope.
-     */
-    private void printContentRange(Writer out, List content,
-                                     int start, int end, int level,
-                                     NamespaceStack namespaces)
-                       throws IOException {
-        boolean firstNode; // Flag for 1st node in content
-        Object next;       // Node we're about to print
-        int first, index;  // Indexes into the list of content
-
-        index = start;
-        while (index < end) {
-            firstNode = (index == start) ? true : false;
-            next = content.get(index);
-
-            //
-            // Handle consecutive CDATA, Text, and EntityRef nodes all at once
-            //
-            if ((next instanceof Text) || (next instanceof EntityRef)) {
-                first = skipLeadingWhite(content, index);
-                // Set index to next node for loop
-                index = nextNonText(content, first);
-
-                // If it's not all whitespace - print it!
-                if (first < index) {
-                    if (!firstNode)
-                        newline(out);
-                    indent(out, level);
-                    printTextRange(out, content, first, index);
-                }
-                continue;
-            }
-
-            //
-            // Handle other nodes
-            //
-            if (!firstNode) {
-                newline(out);
-            }
-
-            indent(out, level);
-
-            if (next instanceof Comment) {
-                printComment(out, (Comment)next);
-            }
-            else if (next instanceof Element) {
-                printElement(out, (Element)next, level, namespaces);
-            }
-            else if (next instanceof ProcessingInstruction) {
-                printProcessingInstruction(out, (ProcessingInstruction)next);
-            }
-            else {
-                // XXX if we get here then we have a illegal content, for
-                //     now we'll just ignore it (probably should throw
-                //     a exception)
-            }
-
-            index++;
-        } /* while */
-    }
-
-    /**
-     * This will handle printing of a sequence of <code>{@link CDATA}</code>
-     * or <code>{@link Text}</code> nodes.  It is an error to have any other
-     * pass this method any other type of node.
-     *
-     * @param content <code>List</code> of content to output
-     * @param start index of first content node (inclusive).
-     * @param end index of last content node (exclusive).
-     * @param out <code>Writer</code> to use.
-     */
-    private void printTextRange(Writer out, List content, int start, int end
-                                  ) throws IOException {
-        String previous; // Previous text printed
-        Object node;     // Next node to print
-        String next;     // Next text to print
-
-        previous = null;
-
-        // Remove leading whitespace-only nodes
-        start = skipLeadingWhite(content, start);
-
-        int size = content.size();
-        if (start < size) {
-            // And remove trialing whitespace-only nodes
-            end = skipTrailingWhite(content, end);
-
-            for (int i = start; i < end; i++) {
-                node = content.get(i);
-
-                // Get the unmangled version of the text
-                // we are about to print
-                if (node instanceof Text) {
-                    next = ((Text) node).getText();
-                }
-                else if (node instanceof EntityRef) {
-                    next = "&" + ((EntityRef) node).getValue() + ";";
-                }
-                else {
-                    throw new IllegalStateException("Should see only " +
-                                                   "CDATA, Text, or EntityRef");
-                }
-
-                // This may save a little time
-                if (next == null || "".equals(next)) {
-                    continue;
-                }
-
-                // Determine if we need to pad the output (padding is
-                // only need in trim or normalizing mode)
-                if (previous != null) { // Not 1st node
-                    if (currentFormat.mode == Format.TextMode.NORMALIZE ||
-                        currentFormat.mode == Format.TextMode.TRIM) {
-                            if ((endsWithWhite(previous)) ||
-                                (startsWithWhite(next))) {
-                                    out.write(" ");
-                            }
-                    }
-                }
-
-                // Print the node
-                if (node instanceof CDATA) {
-                    printCDATA(out, (CDATA) node);
-                }
-                else if (node instanceof EntityRef) {
-                    printEntityRef(out, (EntityRef) node);
-                }
-                else {
-                    printString(out, next);
-                }
-
-                previous = next;
-            }
-        }
-    }
-
-    /**
-     * This will handle printing of any needed <code>{@link Namespace}</code>
-     * declarations.
-     *
-     * @param ns <code>Namespace</code> to print definition of
-     * @param out <code>Writer</code> to use.
-     */
-    private void printNamespace(Writer out, Namespace ns,
-                                NamespaceStack namespaces)
-                     throws IOException {
-        String prefix = ns.getPrefix();
-        String uri = ns.getURI();
-
-        // Already printed namespace decl?
-        if (uri.equals(namespaces.getURI(prefix))) {
-            return;
-        }
-
-        out.write(" xmlns");
-        if (!prefix.equals("")) {
-            out.write(":");
-            out.write(prefix);
-        }
-        out.write("=\"");
-        out.write(uri);
-        out.write("\"");
-        namespaces.push(ns);
-    }
-
-    /**
-     * This will handle printing of a <code>{@link Attribute}</code> list.
-     *
-     * @param attributes <code>List</code> of Attribute objcts
-     * @param out <code>Writer</code> to use
-     */
-    protected void printAttributes(Writer out, List attributes, Element parent,
-                                   NamespaceStack namespaces)
-                       throws IOException {
-
-        // I do not yet handle the case where the same prefix maps to
-        // two different URIs. For attributes on the same element
-        // this is illegal; but as yet we don't throw an exception
-        // if someone tries to do this
-        // Set prefixes = new HashSet();
-        for (int i = 0; i < attributes.size(); i++) {
-            Attribute attribute = (Attribute) attributes.get(i);
-            Namespace ns = attribute.getNamespace();
-            if ((ns != Namespace.NO_NAMESPACE) &&
-                (ns != Namespace.XML_NAMESPACE)) {
-                    printNamespace(out, ns, namespaces);
-            }
-
-            out.write(" ");
-            printQualifiedName(out, attribute);
-            out.write("=");
-
-            out.write("\"");
-            out.write(escapeAttributeEntities(attribute.getValue()));
-            out.write("\"");
-        }
-    }
-
-    private void printElementNamespace(Writer out, Element element,
-                                       NamespaceStack namespaces)
-                             throws IOException {
-        // Add namespace decl only if it's not the XML namespace and it's
-        // not the NO_NAMESPACE with the prefix "" not yet mapped
-        // (we do output xmlns="" if the "" prefix was already used and we
-        // need to reclaim it for the NO_NAMESPACE)
-        Namespace ns = element.getNamespace();
-        if (ns == Namespace.XML_NAMESPACE) {
-            return;
-        }
-        if ( !((ns == Namespace.NO_NAMESPACE) &&
-               (namespaces.getURI("") == null))) {
-            printNamespace(out, ns, namespaces);
-        }
-    }
-
-    private void printAdditionalNamespaces(Writer out, Element element,
-                                           NamespaceStack namespaces)
-                                throws IOException {
-        List list = element.getAdditionalNamespaces();
-        if (list != null) {
-            for (int i = 0; i < list.size(); i++) {
-                Namespace additional = (Namespace)list.get(i);
-                printNamespace(out, additional, namespaces);
-            }
-        }
-    }
-
-    // * * * * * * * * * * Support methods * * * * * * * * * *
-    // * * * * * * * * * * Support methods * * * * * * * * * *
-
-    /**
-     * This will print a new line only if the newlines flag was set to
-     * true.
-     *
-     * @param out <code>Writer</code> to use
-     */
-    private void newline(Writer out) throws IOException {
-        if (currentFormat.indent != null) {
-            out.write(currentFormat.lineSeparator);
-        }
-    }
-
-    /**
-     * This will print indents (only if the newlines flag was
-     * set to <code>true</code>, and indent is non-null).
-     *
-     * @param out <code>Writer</code> to use
-     * @param level current indent level (number of tabs)
-     */
-    private void indent(Writer out, int level) throws IOException {
-        if (currentFormat.indent == null ||
-            currentFormat.indent.equals("")) {
-            return;
-        }
-
-        for (int i = 0; i < level; i++) {
-            out.write(currentFormat.indent);
-        }
-    }
-
-    // Returns the index of the first non-all-whitespace CDATA or Text,
-    // index = content.size() is returned if content contains
-    // all whitespace.
-    // @param start index to begin search (inclusive)
-    private int skipLeadingWhite(List content, int start) {
-        if (start < 0) {
-            start = 0;
-        }
-
-        int index = start;
-        int size = content.size();
-        if (currentFormat.mode == Format.TextMode.TRIM_FULL_WHITE
-                || currentFormat.mode == Format.TextMode.NORMALIZE
-                || currentFormat.mode == Format.TextMode.TRIM) {
-            while (index < size) {
-                if (!isAllWhitespace(content.get(index))) {
-                    return index;
-                }
-                index++;
-            }
-        }
-        return index;
-    }
-
-    // Return the index + 1 of the last non-all-whitespace CDATA or
-    // Text node,  index < 0 is returned
-    // if content contains all whitespace.
-    // @param start index to begin search (exclusive)
-    private int skipTrailingWhite(List content, int start) {
-        int size = content.size();
-        if (start > size) {
-            start = size;
-        }
-
-        int index = start;
-        if (currentFormat.mode == Format.TextMode.TRIM_FULL_WHITE
-                || currentFormat.mode == Format.TextMode.NORMALIZE
-                || currentFormat.mode == Format.TextMode.TRIM) {
-            while (index >= 0) {
-                if (!isAllWhitespace(content.get(index - 1)))
-                    break;
-                --index;
-            }
-        }
-        return index;
-    }
-
-    // Return the next non-CDATA, non-Text, or non-EntityRef node,
-    // index = content.size() is returned if there is no more non-CDATA,
-    // non-Text, or non-EntiryRef nodes
-    // @param start index to begin search (inclusive)
-    private static int nextNonText(List content, int start) {
-        if (start < 0) {
-            start = 0;
-        }
-
-        int index = start;
-        int size = content.size();
-        while (index < size) {
-            Object node =  content.get(index);
-            if (!((node instanceof Text) || (node instanceof EntityRef))) {
-                return index;
-            }
-            index++;
-        }
-        return size;
-    }
-
-    // Determine if a Object is all whitespace
-    private boolean isAllWhitespace(Object obj) {
-        String str = null;
-
-        if (obj instanceof String) {
-            str = (String) obj;
-        }
-        else if (obj instanceof Text) {
-            str = ((Text) obj).getText();
-        }
-        else if (obj instanceof EntityRef) {
-            return false;
-        }
-        else {
-            return false;
-        }
-
-        for (int i = 0; i < str.length(); i++) {
-            if (!isWhitespace(str.charAt(i)))
-                return false;
-        }
-        return true;
-    }
-
-    // Determine if a string starts with a XML whitespace.
-    private boolean startsWithWhite(String str) {
-        if ((str != null) &&
-            (str.length() > 0) &&
-            isWhitespace(str.charAt(0))) {
-           return true;
-        }
-        return false;
-    }
-
-    // Determine if a string ends with a XML whitespace.
-    private boolean endsWithWhite(String str) {
-        if ((str != null) &&
-            (str.length() > 0) &&
-            isWhitespace(str.charAt(str.length() - 1))) {
-           return true;
-        }
-        return false;
-    }
-
-    // Determine if a character is a XML whitespace.
-    // XXX should this method be in Verifier
-    private static boolean isWhitespace(char c) {
-        if (c==' ' || c=='\n' || c=='\t' || c=='\r' ){
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * This will take the pre-defined entities in XML 1.0 and
-     * convert their character representation to the appropriate
-     * entity reference, suitable for XML attributes.  It does not convert
-     * the single quote (') because it's not necessary as the outputter
-     * writes attributes surrounded by double-quotes.
-     *
-     * @param str <code>String</code> input to escape.
-     * @return <code>String</code> with escaped content.
-     */
-    public String escapeAttributeEntities(String str) {
-        StringBuffer buffer;
-        char ch;
-        String entity;
-        EscapeStrategy strategy = currentFormat.escapeStrategy;
-
-        buffer = null;
-        for (int i = 0; i < str.length(); i++) {
-            ch = str.charAt(i);
-            switch(ch) {
-                case '<' :
-                    entity = "&lt;";
-                    break;
-                case '>' :
-                    entity = "&gt;";
-                    break;
-/*
-                case '\'' :
-                    entity = "&apos;";
-                    break;
-*/
-                case '\"' :
-                    entity = "&quot;";
-                    break;
-                case '&' :
-                    entity = "&amp;";
-                    break;
-                case '\r' :
-                    entity = "&#xD;";
-                    break;
-                case '\t' :
-                    entity = "&#x9;";
-                    break;
-                case '\n' :
-                    entity = "&#xA;";
-                    break;
-                default :
-                    if (strategy.shouldEscape(ch)) {
-                        entity = "&#x" + Integer.toHexString(ch) + ";";
-                    }
-                    else {
-                        entity = null;
-                    }
-                    break;
-            }
-            if (buffer == null) {
-                if (entity != null) {
-                    // An entity occurred, so we'll have to use StringBuffer
-                    // (allocate room for it plus a few more entities).
-                    buffer = new StringBuffer(str.length() + 20);
-                    // Copy previous skipped characters and fall through
-                    // to pickup current character
-                    buffer.append(str.substring(0, i));
-                    buffer.append(entity);
-                }
-            }
-            else {
-                if (entity == null) {
-                    buffer.append(ch);
-                }
-                else {
-                    buffer.append(entity);
-                }
-            }
-        }
-
-        // If there were any entities, return the escaped characters
-        // that we put in the StringBuffer. Otherwise, just return
-        // the unmodified input string.
-        return (buffer == null) ? str : buffer.toString();
-    }
-
-
-    /**
-     * This will take the three pre-defined entities in XML 1.0
-     * (used specifically in XML elements) and convert their character
-     * representation to the appropriate entity reference, suitable for
-     * XML element content.
-     *
-     * @param str <code>String</code> input to escape.
-     * @return <code>String</code> with escaped content.
-     */
-    public String escapeElementEntities(String str) {
-        if (escapeOutput == false) return str;
-
-        StringBuffer buffer;
-        char ch;
-        String entity;
-        EscapeStrategy strategy = currentFormat.escapeStrategy;
-
-        buffer = null;
-        for (int i = 0; i < str.length(); i++) {
-            ch = str.charAt(i);
-            switch(ch) {
-                case '<' :
-                    entity = "&lt;";
-                    break;
-                case '>' :
-                    entity = "&gt;";
-                    break;
-                case '&' :
-                    entity = "&amp;";
-                    break;
-                case '\r' :
-                    entity = "&#xD;";
-                    break;
-                case '\n' :
-                    entity = currentFormat.lineSeparator;
-                    break;
-                default :
-                    if (strategy.shouldEscape(ch)) {
-                        entity = "&#x" + Integer.toHexString(ch) + ";";
-                    }
-                    else {
-                        entity = null;
-                    }
-                    break;
-            }
-            if (buffer == null) {
-                if (entity != null) {
-                    // An entity occurred, so we'll have to use StringBuffer
-                    // (allocate room for it plus a few more entities).
-                    buffer = new StringBuffer(str.length() + 20);
-                    // Copy previous skipped characters and fall through
-                    // to pickup current character
-                    buffer.append(str.substring(0, i));
-                    buffer.append(entity);
-                }
-            }
-            else {
-                if (entity == null) {
-                    buffer.append(ch);
-                }
-                else {
-                    buffer.append(entity);
-                }
-            }
-        }
-
-        // If there were any entities, return the escaped characters
-        // that we put in the StringBuffer. Otherwise, just return
-        // the unmodified input string.
-        return (buffer == null) ? str : buffer.toString();
-    }
-
-    /**
-     * Returns a copy of this XMLOutputter.
-     */
-    public Object clone() {
-        // Implementation notes: Since all state of an XMLOutputter is
-        // embodied in simple private instance variables, Object.clone
-        // can be used.  Note that since Object.clone is totally
-        // broken, we must catch an exception that will never be
-        // thrown.
-        try {
-            return super.clone();
-        }
-        catch (java.lang.CloneNotSupportedException e) {
-            // even though this should never ever happen, it's still
-            // possible to fool Java into throwing a
-            // CloneNotSupportedException.  If that happens, we
-            // shouldn't swallow it.
-            throw new RuntimeException(e.toString());
-        }
-    }
-
-    /**
-     * Return a string listing of the settings for this
-     * XMLOutputter instance.
-     *
-     * @return a string listing the settings for this XMLOutputter instance
-     */
-    public String toString() {
-        StringBuffer buffer = new StringBuffer();
-        for (int i = 0; i < userFormat.lineSeparator.length(); i++) {
-            char ch = userFormat.lineSeparator.charAt(i);
-            switch (ch) {
-            case '\r': buffer.append("\\r");
-                       break;
-            case '\n': buffer.append("\\n");
-                       break;
-            case '\t': buffer.append("\\t");
-                       break;
-            default:   buffer.append("[" + ((int)ch) + "]");
-                       break;
-            }
-        }
-
-        return (
-            "XMLOutputter[omitDeclaration = " + userFormat.omitDeclaration + ", " +
-            "encoding = " + userFormat.encoding + ", " +
-            "omitEncoding = " + userFormat.omitEncoding + ", " +
-            "indent = '" + userFormat.indent + "'" + ", " +
-            "expandEmptyElements = " + userFormat.expandEmptyElements + ", " +
-            "lineSeparator = '" + buffer.toString() + "', " +
-            "textMode = " + userFormat.mode + "]"
-        );
-    }
-
-    /**
-     * Factory for making new NamespaceStack objects.  The NamespaceStack
-     * created is actually an inner class extending the package protected
-     * NamespaceStack, as a way to make NamespaceStack "friendly" toward
-     * subclassers.
-     */
-    private NamespaceStack createNamespaceStack() {
-       // actually returns a XMLOutputter.NamespaceStack (see below)
-       return new NamespaceStack();
-    }
-
-    /**
-     * Our own null subclass of NamespaceStack.  This plays a little
-     * trick with Java access protection.  We want subclasses of
-     * XMLOutputter to be able to override protected methods that
-     * declare a NamespaceStack parameter, but we don't want to
-     * declare the parent NamespaceStack class as public.
-     */
-    protected class NamespaceStack
-        extends org.jdom.output.NamespaceStack
-    {
-    }
-
-    // Support method to print a name without using elt.getQualifiedName()
-    // and thus avoiding a StringBuffer creation and memory churn
-    private void printQualifiedName(Writer out, Element e) throws IOException {
-        if (e.getNamespace().getPrefix().length() == 0) {
-            out.write(e.getName());
-        }
-        else {
-            out.write(e.getNamespace().getPrefix());
-            out.write(':');
-            out.write(e.getName());
-        }
-    }
-
-    // Support method to print a name without using att.getQualifiedName()
-    // and thus avoiding a StringBuffer creation and memory churn
-    private void printQualifiedName(Writer out, Attribute a) throws IOException {
-        String prefix = a.getNamespace().getPrefix();
-        if ((prefix != null) && (!prefix.equals(""))) {
-            out.write(prefix);
-            out.write(':');
-            out.write(a.getName());
-        }
-        else {
-            out.write(a.getName());
-        }
-    }
-
-    // * * * * * * * * * * Deprecated methods * * * * * * * * * *
-
-    /* The methods below here are deprecations of protected methods.  We
-     * don't usually deprecate protected methods, so they're commented out.
-     * They're left here in case this mass deprecation causes people trouble.
-     * Since we're getting close to 1.0 it's actually better for people to
-     * raise issues early though.
-     */
-
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/package.html b/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/package.html
deleted file mode 100644
index 829cfdd..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/output/package.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<body>
-
-Classes to output JDOM documents to various destinations.  The most common
-outputter class is XMLOutputter which outputs a document (or part of a
-document) as a stream of bytes.  Format and EscapeStrategy support the
-XMLOutputter in letting you choose how the output should be formatted and how
-special characters should be escaped.
-
-SAXOutputter lets you output as a stream of SAX events (handy especially in
-transformations).  JDOMLocator supports SAXOutputter and helps you observe the
-SAX output process.
-
-DOMOutputter lets you output a JDOM document as a DOM tree.
-
-</body>
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/package.html b/dependencies/plugins/org.jdom/source-bundle/org/jdom/package.html
deleted file mode 100644
index d67d0e4..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/package.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<body>
-
-Classes to represent the components of an XML document.  The Verifier is a
-special class useful in ensuring well-formedness of documents.  The Parent
-interface is implemented by Document and Element exposing their commonality.
-The Content abstract class is extended by all the node types of a document
-except Document itself.
-
-The JDOMFactory interface and DefaultJDOMFactory standard implementation
-provide advanced users with the ability to create subtypes of the org.jdom
-classes.
-
-</body>
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/transform/JDOMResult.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/transform/JDOMResult.java
deleted file mode 100644
index 2e07bf8..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/transform/JDOMResult.java
+++ /dev/null
@@ -1,670 +0,0 @@
-/*-- 
-
- $Id: JDOMResult.java,v 1.1 2009/05/27 21:46:20 mparker Exp $
-
- Copyright (C) 2001-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-package org.jdom.transform;
-
-import java.util.*;
-
-import javax.xml.transform.sax.*;
-
-import org.jdom.*;
-import org.jdom.input.*;
-import org.xml.sax.*;
-import org.xml.sax.ext.*;
-import org.xml.sax.helpers.*;
-
-/**
- * A holder for an XSL Transformation result, generally a list of nodes
- * although it can be a JDOM Document also. As stated by the XSLT 1.0
- * specification, the result tree generated by an XSL transformation is not
- * required to be a well-formed XML document. The result tree may have "any
- * sequence of nodes as children that would be possible for an
- * element node".
- * <p>
- * The following example shows how to apply an XSL Transformation
- * to a JDOM document and get the transformation result in the form
- * of a list of JDOM nodes:
- * <pre><code>
- *   public static List transform(Document doc, String stylesheet)
- *                                        throws JDOMException {
- *     try {
- *       Transformer transformer = TransformerFactory.newInstance()
- *                             .newTransformer(new StreamSource(stylesheet));
- *       JDOMSource in = new JDOMSource(doc);
- *       JDOMResult out = new JDOMResult();
- *       transformer.transform(in, out);
- *       return out.getResult();
- *     }
- *     catch (TransformerException e) {
- *       throw new JDOMException("XSLT Transformation failed", e);
- *     }
- *   }
- * </code></pre>
- *
- * @see      org.jdom.transform.JDOMSource
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:20 $
- * @author  Laurent Bihanic
- * @author  Jason Hunter
- */
-public class JDOMResult extends SAXResult {
-
-    private static final String CVS_ID =
-    "@(#) $RCSfile: JDOMResult.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:20 $ $Name:  $";
-
-  /**
-   * If {@link javax.xml.transform.TransformerFactory#getFeature}
-   * returns <code>true</code> when passed this value as an
-   * argument, the Transformer natively supports JDOM.
-   * <p>
-   * <strong>Note</strong>: This implementation does not override
-   * the {@link SAXResult#FEATURE} value defined by its superclass
-   * to be considered as a SAXResult by Transformer implementations
-   * not natively supporting JDOM.</p>
-   */
-  public final static String JDOM_FEATURE =
-                      "http://org.jdom.transform.JDOMResult/feature";
-
-  /**
-   * The result of a transformation, as set by Transformer
-   * implementations that natively support JDOM, as a JDOM document
-   * or a list of JDOM nodes.
-   */
-  private Object result = null;
-
-  /**
-   * Whether the application queried the result (as a list or a
-   * document) since it was last set.
-   */
-  private boolean queried = false;
-
-  /**
-   * The custom JDOM factory to use when building the transformation
-   * result or <code>null</code> to use the default JDOM classes.
-   */
-  private JDOMFactory factory = null;
-
-  /**
-   * Public default constructor.
-   */
-  public JDOMResult() {
-    // Allocate custom builder object...
-    DocumentBuilder builder = new DocumentBuilder();
-
-    // And use it as ContentHandler and LexicalHandler.
-    super.setHandler(builder);
-    super.setLexicalHandler(builder);
-  }
-
-  /**
-   * Sets the object(s) produced as result of an XSL Transformation.
-   * <p>
-   * <strong>Note</strong>: This method shall be used by the
-   * {@link javax.xml.transform.Transformer} implementations that
-   * natively support JDOM to directly set the transformation
-   * result rather than considering this object as a
-   * {@link SAXResult}.  Applications should <i>not</i> use this
-   * method.</p>
-   *
-   * @param  result   the result of a transformation as a
-   *                  {@link java.util.List list} of JDOM nodes
-   *                  (Elements, Texts, Comments, PIs...).
-   *
-   * @see    #getResult
-   */
-  public void setResult(List result) {
-    this.result  = result;
-    this.queried = false;
-  }
-
-  /**
-   * Returns the result of an XSL Transformation as a list of JDOM
-   * nodes.
-   * <p>
-   * If the result of the transformation is a JDOM document,
-   * this method converts it into a list of JDOM nodes; any
-   * subsequent call to {@link #getDocument} will return
-   * <code>null</code>.</p>
-   *
-   * @return the transformation result as a (possibly empty) list of
-   *         JDOM nodes (Elements, Texts, Comments, PIs...).
-   */
-  public List getResult() {
-    List nodes = Collections.EMPTY_LIST;
-
-    // Retrieve result from the document builder if not set.
-    this.retrieveResult();
-
-    if (result instanceof List) {
-      nodes = (List)result;
-    }
-    else {
-      if ((result instanceof Document) && (queried == false)) {
-        List content = ((Document)result).getContent();
-        nodes = new ArrayList(content.size());
-
-        while (content.size() != 0)
-        {
-          Object o = content.remove(0);
-          nodes.add(o);
-        }
-        result = nodes;
-      }
-    }
-    queried = true;
-
-    return (nodes);
-  }
-
-  /**
-   * Sets the document produced as result of an XSL Transformation.
-   * <p>
-   * <strong>Note</strong>: This method shall be used by the
-   * {@link javax.xml.transform.Transformer} implementations that
-   * natively support JDOM to directly set the transformation
-   * result rather than considering this object as a
-   * {@link SAXResult}.  Applications should <i>not</i> use this
-   * method.</p>
-   *
-   * @param  document   the JDOM document result of a transformation.
-   *
-   * @see    #setResult
-   * @see    #getDocument
-   */
-  public void setDocument(Document document) {
-    this.result  = document;
-    this.queried = false;
-  }
-
-  /**
-   * Returns the result of an XSL Transformation as a JDOM document.
-   * <p>
-   * If the result of the transformation is a list of nodes,
-   * this method attempts to convert it into a JDOM document. If
-   * successful, any subsequent call to {@link #getResult} will
-   * return an empty list.</p>
-   * <p>
-   * <strong>Warning</strong>: The XSLT 1.0 specification states that
-   * the output of an XSL transformation is not a well-formed XML
-   * document but a list of nodes. Applications should thus use
-   * {@link #getResult} instead of this method or at least expect
-   * <code>null</code> documents to be returned.
-   *
-   * @return the transformation result as a JDOM document or
-   *         <code>null</code> if the result of the transformation
-   *         can not be converted into a well-formed document.
-   *
-   * @see    #getResult
-   */
-  public Document getDocument() {
-    Document doc = null;
-
-    // Retrieve result from the document builder if not set.
-    this.retrieveResult();
-
-    if (result instanceof Document) {
-      doc = (Document)result;
-    }
-    else {
-      if ((result instanceof List) && (queried == false)) {
-        // Try to create a document from the result nodes
-        try {
-          JDOMFactory f = this.getFactory();
-          if (f == null) { f = new DefaultJDOMFactory(); }
-
-          doc = f.document(null);
-          doc.setContent((List)result);
-
-          result = doc;
-        }
-        catch (RuntimeException ex1) {
-          // Some of the result nodes are not valid children of a
-          // Document node. => return null.
-        }
-      }
-    }
-    queried = true;
-
-    return (doc);
-  }
-
-  /**
-   * Sets a custom JDOMFactory to use when building the
-   * transformation result. Use a custom factory to build the tree
-   * with your own subclasses of the JDOM classes.
-   *
-   * @param  factory   the custom <code>JDOMFactory</code> to use or
-   *                   <code>null</code> to use the default JDOM
-   *                   classes.
-   *
-   * @see    #getFactory
-   */
-  public void setFactory(JDOMFactory factory) {
-    this.factory = factory;
-  }
-
-  /**
-   * Returns the custom JDOMFactory used to build the transformation
-   * result.
-   *
-   * @return the custom <code>JDOMFactory</code> used to build the
-   *         transformation result or <code>null</code> if the
-   *         default JDOM classes are being used.
-   *
-   * @see    #setFactory
-   */
-  public JDOMFactory getFactory() {
-    return this.factory;
-  }
-
-  /**
-   * Checks whether a transformation result has been set and, if not,
-   * retrieves the result tree being built by the document builder.
-   */
-  private void retrieveResult() {
-    if (result == null) {
-      this.setResult(((DocumentBuilder)this.getHandler()).getResult());
-    }
-  }
-
-  //-------------------------------------------------------------------------
-  // SAXResult overwritten methods
-  //-------------------------------------------------------------------------
-
-  /**
-   * Sets the target to be a SAX2 ContentHandler.
-   *
-   * @param handler Must be a non-null ContentHandler reference.
-   */
-  public void setHandler(ContentHandler handler) { }
-
-  /**
-   * Sets the SAX2 LexicalHandler for the output.
-   * <p>
-   * This is needed to handle XML comments and the like.  If the
-   * lexical handler is not set, an attempt should be made by the
-   * transformer to cast the ContentHandler to a LexicalHandler.</p>
-   *
-   * @param handler A non-null LexicalHandler for
-   *                handling lexical parse events.
-   */
-  public void setLexicalHandler(LexicalHandler handler) { }
-
-
-  //=========================================================================
-  // FragmentHandler nested class
-  //=========================================================================
-
-  private static class FragmentHandler extends SAXHandler {
-    /**
-     * A dummy root element required by SAXHandler that can only
-     * cope with well-formed documents.
-     */
-    private Element dummyRoot = new Element("root", null, null);
-
-    /**
-     * Public constructor.
-     */
-    public FragmentHandler(JDOMFactory factory) {
-      super(factory);
-
-      // Add a dummy root element to the being-built document as XSL
-      // transformation can output node lists instead of well-formed
-      // documents.
-      this.pushElement(dummyRoot);
-    }
-
-    /**
-     * Returns the result of an XSL Transformation.
-     *
-     * @return the transformation result as a (possibly empty) list of
-     *         JDOM nodes (Elements, Texts, Comments, PIs...).
-     */
-    public List getResult() {
-      // Flush remaining text content in case the last text segment is
-      // outside an element.
-      try {
-        this.flushCharacters();
-      }
-      catch (SAXException e) { /* Ignore... */  }
-      return this.getDetachedContent(dummyRoot);
-    }
-
-    /**
-     * Returns the content of a JDOM Element detached from it.
-     *
-     * @param  elt   the element to get the content from.
-     *
-     * @return a (possibly empty) list of JDOM nodes, detached from
-     *         their parent.
-     */
-    private List getDetachedContent(Element elt) {
-      List content = elt.getContent();
-      List nodes   = new ArrayList(content.size());
-
-      while (content.size() != 0)
-      {
-        Object o = content.remove(0);
-        nodes.add(o);
-      }
-      return (nodes);
-    }
-  }
-
-  //=========================================================================
-  // DocumentBuilder inner class
-  //=========================================================================
-
-  private class DocumentBuilder extends XMLFilterImpl
-                                implements LexicalHandler {
-    /**
-     * The actual JDOM document builder.
-     */
-    private FragmentHandler saxHandler = null;
-
-    /**
-     * Whether the startDocument event was received. Some XSLT
-     * processors such as Oracle's do not fire this event.
-     */
-    private boolean startDocumentReceived = false;
-
-    /**
-     * Public default constructor.
-     */
-    public DocumentBuilder() { }
-
-    /**
-     * Returns the result of an XSL Transformation.
-     *
-     * @return the transformation result as a (possibly empty) list of
-     *         JDOM nodes (Elements, Texts, Comments, PIs...) or
-     *         <code>null</code> if no new transformation occurred
-     *         since the result of the previous one was returned.
-     */
-    public List getResult() {
-      List result = null;
-
-      if (this.saxHandler != null) {
-        // Retrieve result from SAX content handler.
-        result = this.saxHandler.getResult();
-
-        // Detach the (non-reusable) SAXHandler instance.
-        this.saxHandler = null;
-
-        // And get ready for the next transformation.
-        this.startDocumentReceived = false;
-      }
-      return result;
-    }
-
-    private void ensureInitialization() throws SAXException {
-      // Trigger document initialization if XSLT processor failed to
-      // fire the startDocument event.
-      if (this.startDocumentReceived == false) {
-        this.startDocument();
-      }
-    }
-
-    //-----------------------------------------------------------------------
-    // XMLFilterImpl overwritten methods
-    //-----------------------------------------------------------------------
-
-    /**
-     * <i>[SAX ContentHandler interface support]</i> Processes a
-     * start of document event.
-     * <p>
-     * This implementation creates a new JDOM document builder and
-     * marks the current result as "under construction".</p>
-     *
-     * @throws SAXException   if any error occurred while creating
-     *                        the document builder.
-     */
-    public void startDocument() throws SAXException {
-      this.startDocumentReceived = true;
-
-      // Reset any previously set result.
-      setResult(null);
-
-      // Create the actual JDOM document builder and register it as
-      // ContentHandler on the superclass (XMLFilterImpl): this
-      // implementation will take care of propagating the LexicalHandler
-      // events.
-      this.saxHandler = new FragmentHandler(getFactory());
-      super.setContentHandler(this.saxHandler);
-
-      // And propagate event.
-      super.startDocument();
-    }
-
-    /**
-     * <i>[SAX ContentHandler interface support]</i> Receives
-     * notification of the beginning of an element.
-     * <p>
-     * This implementation ensures that startDocument() has been
-     * called prior processing an element.
-     *
-     * @param  nsURI       the Namespace URI, or the empty string if
-     *                     the element has no Namespace URI or if
-     *                     Namespace processing is not being performed.
-     * @param  localName   the local name (without prefix), or the
-     *                     empty string if Namespace processing is
-     *                     not being performed.
-     * @param  qName       the qualified name (with prefix), or the
-     *                     empty string if qualified names are not
-     *                     available.
-     * @param  atts        The attributes attached to the element.  If
-     *                     there are no attributes, it shall be an
-     *                     empty Attributes object.
-     *
-     * @throws SAXException   if any error occurred while creating
-     *                        the document builder.
-     */
-    public void startElement(String nsURI, String localName, String qName,
-                                           Attributes atts) throws SAXException
-    {
-      this.ensureInitialization();
-      super.startElement(nsURI, localName, qName, atts);
-    }
-
-    /**
-     * <i>[SAX ContentHandler interface support]</i> Begins the
-     * scope of a prefix-URI Namespace mapping.
-     */
-    public void startPrefixMapping(String prefix, String uri)
-                                                        throws SAXException {
-      this.ensureInitialization();
-      super.startPrefixMapping(prefix, uri);
-    }
-
-    /**
-     * <i>[SAX ContentHandler interface support]</i> Receives
-     * notification of character data.
-     */
-    public void characters(char ch[], int start, int length)
-                                                        throws SAXException {
-      this.ensureInitialization();
-      super.characters(ch, start, length);
-    }
-
-    /**
-     * <i>[SAX ContentHandler interface support]</i> Receives
-     * notification of ignorable whitespace in element content.
-     */
-    public void ignorableWhitespace(char ch[], int start, int length)
-                                                        throws SAXException {
-      this.ensureInitialization();
-      super.ignorableWhitespace(ch, start, length);
-    }
-
-    /**
-     * <i>[SAX ContentHandler interface support]</i> Receives
-     * notification of a processing instruction.
-     */
-    public void processingInstruction(String target, String data)
-                                                        throws SAXException {
-      this.ensureInitialization();
-      super.processingInstruction(target, data);
-    }
-
-    /**
-     * <i>[SAX ContentHandler interface support]</i> Receives
-     * notification of a skipped entity.
-     */
-    public void skippedEntity(String name) throws SAXException {
-      this.ensureInitialization();
-      super.skippedEntity(name);
-    }
-
-    //-----------------------------------------------------------------------
-    // LexicalHandler interface support
-    //-----------------------------------------------------------------------
-
-    /**
-     * <i>[SAX LexicalHandler interface support]</i> Reports the
-     * start of DTD declarations, if any.
-     *
-     * @param  name       the document type name.
-     * @param  publicId   the declared public identifier for the
-     *                    external DTD subset, or <code>null</code>
-     *                    if none was declared.
-     * @param  systemId   the declared system identifier for the
-     *                    external DTD subset, or <code>null</code>
-     *                    if none was declared.
-     *
-     * @throws SAXException   The application may raise an exception.
-     */
-    public void startDTD(String name, String publicId, String systemId)
-                                        throws SAXException {
-      this.ensureInitialization();
-      this.saxHandler.startDTD(name, publicId, systemId);
-    }
-
-    /**
-     * <i>[SAX LexicalHandler interface support]</i> Reports the end
-     * of DTD declarations.
-     *
-     * @throws SAXException   The application may raise an exception.
-     */
-    public void endDTD() throws SAXException {
-      this.saxHandler.endDTD();
-    }
-
-    /**
-     * <i>[SAX LexicalHandler interface support]</i> Reports the
-     * beginning of some internal and external XML entities.
-     *
-     * @param  name   the name of the entity.  If it is a parameter
-     *                entity, the name will begin with '%', and if it
-     *                is the external DTD subset, it will be "[dtd]".
-     *
-     * @throws SAXException   The application may raise an exception.
-     */
-    public void startEntity(String name) throws SAXException {
-      this.ensureInitialization();
-      this.saxHandler.startEntity(name);
-    }
-
-    /**
-     * <i>[SAX LexicalHandler interface support]</i> Reports the end
-     * of an entity.
-     *
-     * @param  name   the name of the entity that is ending.
-     *
-     * @throws SAXException   The application may raise an exception.
-     */
-    public void endEntity(String name) throws SAXException {
-      this.saxHandler.endEntity(name);
-    }
-
-    /**
-     * <i>[SAX LexicalHandler interface support]</i> Reports the
-     * start of a CDATA section.
-     *
-     * @throws SAXException   The application may raise an exception.
-     */
-    public void startCDATA() throws SAXException {
-      this.ensureInitialization();
-      this.saxHandler.startCDATA();
-    }
-
-    /**
-     * <i>[SAX LexicalHandler interface support]</i> Reports the end
-     * of a CDATA section.
-     *
-     * @throws SAXException   The application may raise an exception.
-     */
-    public void endCDATA() throws SAXException {
-      this.saxHandler.endCDATA();
-    }
-
-    /**
-     * <i>[SAX LexicalHandler interface support]</i> Reports an XML
-     * comment anywhere in the document.
-     *
-     * @param  ch     an array holding the characters in the comment.
-     * @param  start  the starting position in the array.
-     * @param  length the number of characters to use from the array.
-     *
-     * @throws SAXException   The application may raise an exception.
-     */
-    public void comment(char ch[], int start, int length)
-                                  throws SAXException {
-      this.ensureInitialization();
-      this.saxHandler.comment(ch, start, length);
-    }
-  }
-}
-
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/transform/JDOMSource.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/transform/JDOMSource.java
deleted file mode 100644
index 20c6624..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/transform/JDOMSource.java
+++ /dev/null
@@ -1,493 +0,0 @@
-/*-- 
-
- $Id: JDOMSource.java,v 1.1 2009/05/27 21:46:20 mparker Exp $
-
- Copyright (C) 2001-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows 
-    these conditions in the documentation and/or other materials 
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
- 
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
- 
- In addition, we request (but do not require) that you include in the 
- end-user documentation provided with the redistribution and/or in the 
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos 
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many 
- individuals on behalf of the JDOM Project and was originally 
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
- 
- */
-
-package org.jdom.transform;
-
-import java.io.*;
-import java.util.*;
-
-import javax.xml.transform.sax.*;
-
-import org.jdom.*;
-import org.jdom.output.*;
-import org.xml.sax.*;
-
-/**
- * A holder for an XML Transformation source: a Document, Element, or list of
- * nodes.
- * <p>
- * The is provides input to a
- * {@link javax.xml.transform.Transformer JAXP TrAX Transformer}.
- * <p>
- * The following example shows how to apply an XSL Transformation
- * to a JDOM document and get the transformation result in the form
- * of a list of JDOM nodes:
- * <pre><code>
- *   public static List transform(Document doc, String stylesheet)
- *                                        throws JDOMException {
- *     try {
- *       Transformer transformer = TransformerFactory.newInstance()
- *                             .newTransformer(new StreamSource(stylesheet));
- *       JDOMSource in = new JDOMSource(doc);
- *       JDOMResult out = new JDOMResult();
- *       transformer.transform(in, out);
- *       return out.getResult();
- *     }
- *     catch (TransformerException e) {
- *       throw new JDOMException("XSLT Transformation failed", e);
- *     }
- *   }
- * </code></pre>
- *
- * @see org.jdom.transform.JDOMResult
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:20 $
- * @author Laurent Bihanic
- * @author Jason Hunter
- */
-public class JDOMSource extends SAXSource {
-
-    private static final String CVS_ID =
-    "@(#) $RCSfile: JDOMSource.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:20 $ $Name:  $";
-
-  /**
-   * If {@link javax.xml.transform.TransformerFactory#getFeature}
-   * returns <code>true</code> when passed this value as an
-   * argument, the Transformer natively supports JDOM.
-   * <p>
-   * <strong>Note</strong>: This implementation does not override
-   * the {@link SAXSource#FEATURE} value defined by its superclass
-   * to be considered as a SAXSource by Transformer implementations
-   * not natively supporting JDOM.
-   * </p>
-   */
-  public final static String JDOM_FEATURE =
-                      "http://org.jdom.transform.JDOMSource/feature";
-
-  /**
-   * The XMLReader object associated to this source or
-   * <code>null</code> if no XMLReader has yet been requested.
-   *
-   * @see    #getXMLReader
-   */
-  private XMLReader xmlReader = null;
-
-  /**
-   * Creates a JDOM TrAX source wrapping a JDOM document.
-   *
-   * @param  source   the JDOM document to use as source for the
-   *                  transformations
-   *
-   * @throws IllegalArgumentException   if <code>source</code> is
-   *                                    <code>null</code>.
-   */
-  public JDOMSource(Document source) {
-    setDocument(source);
-  }
-
-  /**
-   * Creates a JDOM TrAX source wrapping a list of JDOM nodes.
-   *
-   * @param  source   the JDOM nodes to use as source for the
-   *                  transformations
-   *
-   * @throws IllegalArgumentException   if <code>source</code> is
-   *                                    <code>null</code>.
-   */
-  public JDOMSource(List source) {
-    setNodes(source);
-  }
-
-  /**
-   * Creates a JDOM TrAX source wrapping a JDOM element.
-   *
-   * @param  source   the JDOM element to use as source for the
-   *                  transformations
-   *
-   * @throws IllegalArgumentException   if <code>source</code> is
-   *                                    <code>null</code>.
-   */
-  public JDOMSource(Element source) {
-    List nodes = new ArrayList();
-    nodes.add(source);
-
-    setNodes(nodes);
-  }
-
-  /**
-   * Sets the source document used by this TrAX source.
-   *
-   * @param  source   the JDOM document to use as source for the
-   *                  transformations
-   *
-   * @throws IllegalArgumentException   if <code>source</code> is
-   *                                    <code>null</code>.
-   *
-   * @see    #getDocument
-   */
-  public void setDocument(Document source) {
-    super.setInputSource(new JDOMInputSource(source));
-  }
-
-  /**
-   * Returns the source document used by this TrAX source.
-   *
-   * @return the source document used by this TrAX source or
-   *         <code>null</code> if the source is a node list.
-   *
-   * @see    #setDocument
-   */
-  public Document getDocument() {
-    Object   src = ((JDOMInputSource)getInputSource()).getSource();
-    Document doc = null;
-
-    if (src instanceof Document) {
-      doc = (Document)src;
-    }
-    return doc;
-  }
-
-  /**
-   * Sets the source node list used by this TrAX source.
-   *
-   * @param  source   the JDOM nodes to use as source for the
-   *                  transformations
-   *
-   * @throws IllegalArgumentException   if <code>source</code> is
-   *                                    <code>null</code>.
-   *
-   * @see    #getNodes
-   */
-  public void setNodes(List source) {
-    super.setInputSource(new JDOMInputSource(source));
-  }
-
-  /**
-   * Returns the source node list used by this TrAX source.
-   *
-   * @return the source node list used by this TrAX source or
-   *         <code>null</code> if the source is a JDOM document.
-   *
-   * @see    #setDocument
-   */
-  public List getNodes() {
-    Object   src   = ((JDOMInputSource)getInputSource()).getSource();
-    List     nodes = null;
-
-    if (src instanceof List) {
-      nodes = (List)src;
-    }
-    return nodes;
-  }
-
-
-  //-------------------------------------------------------------------------
-  // SAXSource overwritten methods
-  //-------------------------------------------------------------------------
-
-  /**
-   * Sets the SAX InputSource to be used for the Source.
-   * <p>
-   * As this implementation only supports JDOM document as data
-   * source, this method always throws an
-   * {@link UnsupportedOperationException}.
-   * </p>
-   *
-   * @param  inputSource   a valid InputSource reference.
-   *
-   * @throws UnsupportedOperationException   always!
-   */
-  public void setInputSource(InputSource inputSource)
-                                  throws UnsupportedOperationException {
-    throw new UnsupportedOperationException();
-  }
-
-  /**
-   * Set the XMLReader to be used for the Source.
-   * <p>
-   * As this implementation only supports JDOM document as data
-   * source, this method throws an
-   * {@link UnsupportedOperationException} if the provided reader
-   * object does not implement the SAX {@link XMLFilter}
-   * interface.  Otherwise, the JDOM document reader will be
-   * attached as parent of the filter chain.</p>
-   *
-   * @param  reader   a valid XMLReader or XMLFilter reference.
-   *
-   * @throws UnsupportedOperationException   if <code>reader</code>
-   *                                         is not a SAX
-   *                                         {@link XMLFilter}.
-   * @see    #getXMLReader
-   */
-  public void setXMLReader(XMLReader reader)
-                              throws UnsupportedOperationException {
-    if (reader instanceof XMLFilter) {
-      // Connect the filter chain to a document reader.
-      XMLFilter filter = (XMLFilter)reader;
-      while (filter.getParent() instanceof XMLFilter) {
-        filter = (XMLFilter)(filter.getParent());
-      }
-      filter.setParent(new DocumentReader());
-
-      // Read XML data from filter chain.
-      this.xmlReader = reader;
-    }
-    else {
-      throw new UnsupportedOperationException();
-    }
-  }
-
-  /**
-   * Returns the XMLReader to be used for the Source.
-   * <p>
-   * This implementation returns a specific XMLReader reading
-   * the XML data from the source JDOM document.
-   * </p>
-   *
-   * @return an XMLReader reading the XML data from the source
-   *         JDOM document.
-   */
-  public XMLReader getXMLReader() {
-    if (this.xmlReader == null) {
-      this.xmlReader = new DocumentReader();
-    }
-    return this.xmlReader;
-  }
-
-  //=========================================================================
-  // JDOMInputSource nested class
-  //=========================================================================
-
-  /**
-   * A subclass of the SAX InputSource interface that wraps a JDOM
-   * Document.
-   * <p>
-   * This class is nested in JDOMSource as it is not intented to
-   * be used independently of its friend: DocumentReader.
-   * </p>
-   *
-   * @see    org.jdom.Document
-   */
-  private static class JDOMInputSource extends InputSource {
-    /**
-     * The source as a JDOM document or a list of JDOM nodes.
-     */
-    private Object source = null;
-
-    /**
-     * Builds a InputSource wrapping the specified JDOM Document.
-     *
-     * @param  document   the source document.
-     */
-    public JDOMInputSource(Document document) {
-      this.source = document;
-    }
-
-    /**
-     * Builds a InputSource wrapping a list of JDOM nodes.
-     *
-     * @param  nodes   the source JDOM nodes.
-     */
-    public JDOMInputSource(List nodes) {
-      this.source = nodes;
-    }
-
-    /**
-     * Returns the source.
-     *
-     * @return the source as a JDOM document or a list of JDOM nodes.
-     */
-    public Object getSource() {
-      return source;
-    }
-
-    //-------------------------------------------------------------------------
-    // InputSource overwritten methods
-    //-------------------------------------------------------------------------
-
-    /**
-     * Sets the character stream for this input source.
-     * <p>
-     * This implementation always throws an
-     * {@link UnsupportedOperationException} as the only source
-     * stream supported is the source JDOM document.
-     * </p>
-     *
-     * @param  characterStream   a character stream containing
-     *                           an XML document.
-     *
-     * @throws UnsupportedOperationException  always!
-     */
-    public void setCharacterStream(Reader characterStream)
-                                      throws UnsupportedOperationException {
-      throw new UnsupportedOperationException();
-    }
-
-    /**
-     * Gets the character stream for this input source.
-     * <p>
-     * Note that this method is only provided to make this
-     * InputSource implementation acceptable by any XML
-     * parser.  As it generates an in-memory string representation
-     * of the JDOM document, it is quite inefficient from both
-     * speed and memory consumption points of view.
-     * </p>
-     *
-     * @return a Reader to a string representation of the
-     *         source JDOM document.
-     */
-    public Reader getCharacterStream() {
-      Object src    = this.getSource();
-      Reader reader = null;
-
-      if (src instanceof Document) {
-        // Get an in-memory string representation of the document
-        // and return a reader on it.
-        reader = new StringReader(
-                            new XMLOutputter().outputString((Document)src));
-      }
-      else {
-        if (src instanceof List) {
-          reader = new StringReader(
-                            new XMLOutputter().outputString((List)src));
-        }
-        // Else: No source, no reader!
-      }
-      return reader;
-    }
-  }
-
-  //=========================================================================
-  // DocumentReader nested class
-  //=========================================================================
-
-  /**
-   * An implementation of the SAX2 XMLReader interface that presents
-   * a SAX view of a JDOM Document.  The actual generation of the
-   * SAX events is delegated to JDOM's SAXOutputter.
-   *
-   * @see    org.jdom.Document
-   * @see    org.jdom.output.SAXOutputter
-   */
-  private static class DocumentReader   extends    SAXOutputter
-                                        implements XMLReader    {
-    /**
-     * Public default constructor.
-     */
-    public DocumentReader() {
-      super();
-    }
-
-    //----------------------------------------------------------------------
-    // SAX XMLReader interface support
-    //----------------------------------------------------------------------
-
-    /**
-     * Parses an XML document from a system identifier (URI).
-     * <p>
-     * This implementation does not support reading XML data from
-     * system identifiers, only from JDOM documents.  Hence,
-     * this method always throws a {@link SAXNotSupportedException}.
-     * </p>
-     *
-     * @param  systemId   the system identifier (URI).
-     *
-     * @throws SAXNotSupportedException   always!
-     */
-    public void parse(String systemId) throws SAXNotSupportedException {
-      throw new SAXNotSupportedException(
-                       "Only JDOM Documents are supported as input");
-    }
-
-    /**
-     * Parses an XML document.
-     * <p>
-     * The methods accepts only <code>JDOMInputSource</code>s
-     * instances as input sources.
-     * </p>
-     *
-     * @param  input   the input source for the top-level of the
-     *                  XML document.
-     *
-     * @throws SAXException               any SAX exception,
-     *                                    possibly wrapping
-     *                                    another exception.
-     * @throws SAXNotSupportedException   if the input source does
-     *                                    not wrap a JDOM document.
-     */
-    public void parse(InputSource input) throws SAXException {
-      if (input instanceof JDOMInputSource) {
-        try {
-          Object source = ((JDOMInputSource)input).getSource();
-          if (source instanceof Document) {
-            this.output((Document)source);
-          }
-          else {
-            this.output((List)source);
-          }
-        }
-        catch (JDOMException e) {
-          throw new SAXException(e.getMessage(), e);
-        }
-      }
-      else {
-        throw new SAXNotSupportedException(
-                         "Only JDOM Documents are supported as input");
-      }
-    }
-  }
-}
-
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/transform/XSLTransformException.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/transform/XSLTransformException.java
deleted file mode 100644
index df44bca..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/transform/XSLTransformException.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*--
-
- $Id: XSLTransformException.java,v 1.1 2009/05/27 21:46:20 mparker Exp $
-
- Copyright (C) 2003-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom.transform;
-
-import org.jdom.JDOMException;
-
-/**
- * Thrown when an XSL stylesheet fails to compile or an XSL transform fails
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:20 $
- * @author  Jason Hunter
- */
-public class XSLTransformException extends JDOMException {
-
-    private static final String CVS_ID =
-            "@(#) $RCSfile: XSLTransformException.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:20 $ $Name:  $";
-
-    public XSLTransformException() {
-    }
-
-    public XSLTransformException(String message) {
-        super(message);
-    }
-
-    public XSLTransformException(String message, Exception cause) {
-        super(message, cause);
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/transform/XSLTransformer.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/transform/XSLTransformer.java
deleted file mode 100644
index 437836b..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/transform/XSLTransformer.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*--
-
- $Id: XSLTransformer.java,v 1.1 2009/05/27 21:46:20 mparker Exp $
-
- Copyright (C) 2001-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom.transform;
-
-import java.util.*;
-import java.io.*;
-import javax.xml.transform.*;
-import javax.xml.transform.stream.StreamSource;
-import org.jdom.*;
-
-/**
- * A convenience class to handle simple transformations. The JAXP TrAX classes
- * have more bells and whistles and can be used with {@link JDOMSource} and
- * {@link JDOMResult} for advanced uses. This class handles the common case and
- * presents a simple interface.  XSLTransformer is thread safe and may be
- * used from multiple threads.
- *
- * <pre><code>
- * XSLTransformer transformer = new XSLTransformer("file.xsl");
- *
- * Document x2 = transformer.transform(x);  // x is a Document
- * Document y2 = transformer.transform(y);  // y is a Document
- * </code></pre>
- *
- *  JDOM relies on TrAX to perform the transformation.
- *  The <code>javax.xml.transform.TransformerFactory</code> Java system property
- *  determines which XSLT engine TrAX uses. Its value should be
- *  the fully qualified name of the implementation of the abstract
- *  <code>javax.xml.transform.TransformerFactory</code> class.
- *  Values of this property for popular XSLT processors include:
- *  </p>
- *  <ul><li>Saxon 6.x: <code>com.icl.saxon.TransformerFactoryImpl</code></li>
- *  <li>Saxon 7.x: <code>net.sf.saxon.TransformerFactoryImpl</code></li>
- *  <li>Xalan: <code>org.apache.xalan.processor.TransformerFactoryImpl</code></li>
- *  <li>jd.xslt: <code>jd.xml.xslt.trax.TransformerFactoryImpl</code></li>
- *  <li>Oracle: <code>oracle.xml.jaxp.JXSAXTransformerFactory</code></li>
- *  </ul>
- *  <p>
- *   This property can be set in all the usual ways a Java system property
- *   can be set. TrAX picks from them in this order:</p>
- *   <ol>
- *   <li> Invoking <code>System.setProperty( "javax.xml.transform.TransformerFactory",
- *     "<i><code>classname</code></i>")</code></li>
- *   <li>The value specified at the command line using the
- *      <tt>-Djavax.xml.transform.TransformerFactory=<i><code>classname</code></i></tt>
- *      option to the <b>java</b> interpreter</li>
- *    <li>The class named in the  <code>lib/jaxp.properties</code> properties file
- *         in the JRE directory, in a line like this one:
- *      <pre>javax.xml.parsers.DocumentBuilderFactory=<i><code>classname</code></i></pre></li>
- *    <li>The class named in the
- *   <code>META-INF/services/javax.xml.transform.TransformerFactory</code> file
- *   in the JAR archives available to the runtime</li>
- *   <li>Finally, if all of the above options fail,
- *    a default implementation is chosen. In Sun's JDK 1.4, this is
- *       Xalan 2.2d10. </li>
- *    </ol>
-
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:20 $
- * @author  Jason Hunter
- * @author  Elliotte Rusty Harold
- */
-public class XSLTransformer {
-
-    private static final String CVS_ID =
-            "@(#) $RCSfile: XSLTransformer.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:20 $ $Name:  $";
-
-    private Templates templates;
-
-    // Internal constructor to support the other constructors
-    private XSLTransformer(Source stylesheet) throws XSLTransformException {
-        try {
-            templates = TransformerFactory.newInstance()
-                    .newTemplates(stylesheet);
-        }
-        catch (TransformerException e) {
-            throw new XSLTransformException("Could not construct XSLTransformer", e);
-        }
-    }
-
-    /**
-     * Creates a transformer for a given stylesheet system id.
-     *
-     * @param  stylesheetSystemId  source stylesheet as a Source object
-     * @throws XSLTransformException       if there's a problem in the TrAX back-end
-     */
-    public XSLTransformer(String stylesheetSystemId) throws XSLTransformException {
-        this(new StreamSource(stylesheetSystemId));
-    }
-
-    /**
-     * <p>
-     * This will create a new <code>XSLTransformer</code> by
-     *  reading the stylesheet from the specified
-     *   <code>InputStream</code>.
-     * </p>
-     *
-     * @param stylesheet <code>InputStream</code> from which the stylesheet is read.
-     * @throws XSLTransformException when an IOException, format error, or
-     * something else prevents the stylesheet from being compiled
-     */
-    public XSLTransformer(InputStream stylesheet) throws XSLTransformException {
-        this(new StreamSource(stylesheet));
-    }
-
-    /**
-     * <p>
-     * This will create a new <code>XSLTransformer</code> by
-     *  reading the stylesheet from the specified
-     *   <code>Reader</code>.
-     * </p>
-     *
-     * @param stylesheet <code>Reader</code> from which the stylesheet is read.
-     * @throws XSLTransformException when an IOException, format error, or
-     * something else prevents the stylesheet from being compiled
-     */
-    public XSLTransformer(Reader stylesheet) throws XSLTransformException {
-        this(new StreamSource(stylesheet));
-    }
-
-    /**
-     * <p>
-     * This will create a new <code>XSLTransformer</code> by
-     *  reading the stylesheet from the specified
-     *   <code>File</code>.
-     * </p>
-     *
-     * @param stylesheet <code>File</code> from which the stylesheet is read.
-     * @throws XSLTransformException when an IOException, format error, or
-     * something else prevents the stylesheet from being compiled
-     */
-    public XSLTransformer(File stylesheet) throws XSLTransformException {
-        this(new StreamSource(stylesheet));
-    }
-
-    /**
-     * <p>
-     * This will create a new <code>XSLTransformer</code> by
-     *  reading the stylesheet from the specified
-     *   <code>Document</code>.
-     * </p>
-     *
-     * @param stylesheet <code>Document</code> containing the stylesheet.
-     * @throws XSLTransformException when the supplied <code>Document</code>
-     *  is not syntactically correct XSLT
-     */
-    public XSLTransformer(Document stylesheet) throws XSLTransformException {
-        this(new JDOMSource(stylesheet));
-    }
-
-    /**
-     * Transforms the given input nodes to a list of output nodes.
-     *
-     * @param  inputNodes          input nodes
-     * @return                     transformed output nodes
-     * @throws XSLTransformException       if there's a problem in the transformation
-     */
-    public List transform(List inputNodes) throws XSLTransformException {
-        JDOMSource source = new JDOMSource(inputNodes);
-        JDOMResult result = new JDOMResult();
-        try {
-            templates.newTransformer().transform(source, result);
-            return result.getResult();
-        }
-        catch (TransformerException e) {
-            throw new XSLTransformException("Could not perform transformation", e);
-        }
-    }
-
-    /**
-     * Transforms the given document to an output document.
-     *
-     * @param  inputDoc            input document
-     * @return                     transformed output document
-     * @throws XSLTransformException       if there's a problem in the transformation
-     */
-    public Document transform(Document inputDoc) throws XSLTransformException {
-        JDOMSource source = new JDOMSource(inputDoc);
-        JDOMResult result = new JDOMResult();
-        try {
-            templates.newTransformer().transform(source, result);
-            return result.getDocument();
-        }
-        catch (TransformerException e) {
-            throw new XSLTransformException("Could not perform transformation", e);
-        }
-    }
-}
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/transform/package.html b/dependencies/plugins/org.jdom/source-bundle/org/jdom/transform/package.html
deleted file mode 100644
index c20b50e..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/transform/package.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<body>
-
-Classes to help with transformations, based on the JAXP TrAX classes.
-JDOMTransformer supports simple transformations with one line of code.
-Advanced features are available with the JDOMSource and JDOMResult classes
-that interface with TrAX.
-
-</body>
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/xpath/JaxenXPath.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/xpath/JaxenXPath.java
deleted file mode 100644
index 7685159..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/xpath/JaxenXPath.java
+++ /dev/null
@@ -1,356 +0,0 @@
-/*--
-
- $Id: JaxenXPath.java,v 1.1 2009/05/27 21:46:21 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom.xpath;
-
-
-import java.util.*;
-
-import org.jaxen.*;
-import org.jaxen.jdom.*;
-import org.jdom.*;
-
-
-/**
- * A non-public concrete XPath implementation for Jaxen.
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:21 $
- * @author  Laurent Bihanic
- */
-class JaxenXPath extends    XPath {             // package protected
-
-    private static final String CVS_ID =
-    "@(#) $RCSfile: JaxenXPath.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:21 $ $Name:  $";
-
-   /**
-    * The compiled XPath object to select nodes.  This attribute can
-    * not be made final as it needs to be set upon object
-    * deserialization.
-    */
-   private transient JDOMXPath xPath;
-
-   /**
-    * The current context for XPath expression evaluation.
-    */
-   private           Object    currentContext;
-
-   /**
-    * Creates a new XPath wrapper object, compiling the specified
-    * XPath expression.
-    *
-    * @param  expr   the XPath expression to wrap.
-    *
-    * @throws JDOMException   if the XPath expression is invalid.
-    */
-   public JaxenXPath(String expr) throws JDOMException {
-      setXPath(expr);
-   }
-
-   /**
-    * Evaluates the wrapped XPath expression and returns the list
-    * of selected items.
-    *
-    * @param  context   the node to use as context for evaluating
-    *                   the XPath expression.
-    *
-    * @return the list of selected items, which may be of types: {@link Element},
-    *         {@link Attribute}, {@link Text}, {@link CDATA},
-    *         {@link Comment}, {@link ProcessingInstruction}, Boolean,
-    *         Double, or String.
-    *
-    * @throws JDOMException   if the evaluation of the XPath
-    *                         expression on the specified context
-    *                         failed.
-    */
-   public List selectNodes(Object context) throws JDOMException {
-      try {
-         currentContext = context;
-
-         return xPath.selectNodes(context);
-      }
-      catch (JaxenException ex1) {
-         throw new JDOMException("XPath error while evaluating \"" +
-                        xPath.toString() + "\": " + ex1.getMessage(), ex1);
-      }
-      finally {
-         currentContext = null;
-      }
-   }
-
-   /**
-    * Evaluates the wrapped XPath expression and returns the first
-    * entry in the list of selected nodes (or atomics).
-    *
-    * @param  context   the node to use as context for evaluating
-    *                   the XPath expression.
-    *
-    * @return the first selected item, which may be of types: {@link Element},
-    *         {@link Attribute}, {@link Text}, {@link CDATA},
-    *         {@link Comment}, {@link ProcessingInstruction}, Boolean,
-    *         Double, String, or <code>null</code> if no item was selected.
-    *
-    * @throws JDOMException   if the evaluation of the XPath
-    *                         expression on the specified context
-    *                         failed.
-    */
-   public Object selectSingleNode(Object context) throws JDOMException {
-      try {
-         currentContext = context;
-
-         return xPath.selectSingleNode(context);
-      }
-      catch (JaxenException ex1) {
-         throw new JDOMException("XPath error while evaluating \"" +
-                        xPath.toString() + "\": " + ex1.getMessage(), ex1);
-      }
-      finally {
-         currentContext = null;
-      }
-   }
-
-   /**
-    * Returns the string value of the first node selected by applying
-    * the wrapped XPath expression to the given context.
-    *
-    * @param  context   the element to use as context for evaluating
-    *                   the XPath expression.
-    *
-    * @return the string value of the first node selected by applying
-    *         the wrapped XPath expression to the given context.
-    *
-    * @throws JDOMException   if the XPath expression is invalid or
-    *                         its evaluation on the specified context
-    *                         failed.
-    */
-   public String valueOf(Object context) throws JDOMException {
-      try {
-         currentContext = context;
-
-         return xPath.stringValueOf(context);
-      }
-      catch (JaxenException ex1) {
-         throw new JDOMException("XPath error while evaluating \"" +
-                        xPath.toString() + "\": " + ex1.getMessage(), ex1);
-      }
-      finally {
-         currentContext = null;
-      }
-   }
-
-   /**
-    * Returns the number value of the first item selected by applying
-    * the wrapped XPath expression to the given context.
-    *
-    * @param  context   the element to use as context for evaluating
-    *                   the XPath expression.
-    *
-    * @return the number value of the first item selected by applying
-    *         the wrapped XPath expression to the given context,
-    *         <code>null</code> if no node was selected or the
-    *         special value {@link java.lang.Double#NaN}
-    *         (Not-a-Number) if the selected value can not be
-    *         converted into a number value.
-    *
-    * @throws JDOMException   if the XPath expression is invalid or
-    *                         its evaluation on the specified context
-    *                         failed.
-    */
-   public Number numberValueOf(Object context) throws JDOMException {
-      try {
-         currentContext = context;
-
-         return xPath.numberValueOf(context);
-      }
-      catch (JaxenException ex1) {
-         throw new JDOMException("XPath error while evaluating \"" +
-                        xPath.toString() + "\": " + ex1.getMessage(), ex1);
-      }
-      finally {
-         currentContext = null;
-      }
-   }
-
-   /**
-    * Defines an XPath variable and sets its value.
-    *
-    * @param  name    the variable name.
-    * @param  value   the variable value.
-    *
-    * @throws IllegalArgumentException   if <code>name</code> is not
-    *                                    a valid XPath variable name
-    *                                    or if the value type is not
-    *                                    supported by the underlying
-    *                                    implementation
-    */
-   public void setVariable(String name, Object value)
-                                        throws IllegalArgumentException {
-      Object o = xPath.getVariableContext();
-      if (o instanceof SimpleVariableContext) {
-           ((SimpleVariableContext)o).setVariableValue(null, name, value);
-      }
-   }
-
-   /**
-    * Adds a namespace definition to the list of namespaces known of
-    * this XPath expression.
-    * <p>
-    * <strong>Note</strong>: In XPath, there is no such thing as a
-    * 'default namespace'.  The empty prefix <b>always</b> resolves
-    * to the empty namespace URI.</p>
-    *
-    * @param  namespace   the namespace.
-    */
-   public void addNamespace(Namespace namespace) {
-      try {
-         xPath.addNamespace(namespace.getPrefix(), namespace.getURI());
-      }
-      catch (JaxenException ex1) { /* Can't happen here. */ }
-   }
-
-   /**
-    * Returns the wrapped XPath expression as a string.
-    *
-    * @return the wrapped XPath expression as a string.
-    */
-   public String getXPath() {
-      return (xPath.toString());
-   }
-
-   /**
-    * Compiles and sets the XPath expression wrapped by this object.
-    *
-    * @param  expr   the XPath expression to wrap.
-    *
-    * @throws JDOMException   if the XPath expression is invalid.
-    */
-   private void setXPath(String expr) throws JDOMException {
-      try {
-         xPath = new JDOMXPath(expr);
-         xPath.setNamespaceContext(new NSContext());
-      }
-      catch (Exception ex1) {
-         throw new JDOMException(
-                        "Invalid XPath expression: \"" + expr + "\"", ex1);
-      }
-   }
-
-   public String toString() {
-      return (xPath.toString());
-   }
-
-   public boolean equals(Object o) {
-      if (o instanceof JaxenXPath) {
-         JaxenXPath x = (JaxenXPath)o;
-
-         return (super.equals(o) &&
-                 xPath.toString().equals(x.xPath.toString()));
-      }
-      return false;
-   }
-
-   public int hashCode() {
-      return xPath.hashCode();
-   }
-
-   private class NSContext extends SimpleNamespaceContext {
-      public NSContext() {
-         super();
-      }
-
-      /**
-       * <i>[Jaxen NamespaceContext interface support]</i> Translates
-       * the provided namespace prefix into the matching bound
-       * namespace URI.
-       *
-       * @param  prefix   the namespace prefix to resolve.
-       *
-       * @return the namespace URI matching the prefix.
-       */
-      public String translateNamespacePrefixToUri(String prefix) {
-         if ((prefix == null) || (prefix.length() == 0)) {
-            return null;
-         }
-
-         String uri = super.translateNamespacePrefixToUri(prefix);
-         if (uri == null) {
-            Object ctx = currentContext;
-            if (ctx != null) {
-               Element elt = null;
-
-               // Get closer element node
-               if (ctx instanceof Element) {
-                  elt = (Element)ctx;
-               } else if (ctx instanceof Attribute) {
-                  elt = ((Attribute)ctx).getParent();
-               } else if (ctx instanceof Content) {
-                  elt = ((Content) ctx).getParentElement();
-               } else if (ctx instanceof Document) {
-                  elt = ((Document)ctx).getRootElement();
-               }
-
-               if (elt != null) {
-                  Namespace ns = elt.getNamespace(prefix);
-                  if (ns != null) {
-                     uri = ns.getURI();
-                  }
-               }
-            }
-         }
-         return uri;
-      }
-   }
-}
-
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/xpath/XPath.java b/dependencies/plugins/org.jdom/source-bundle/org/jdom/xpath/XPath.java
deleted file mode 100644
index 94ea01c..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/xpath/XPath.java
+++ /dev/null
@@ -1,445 +0,0 @@
-/*--
-
- $Id: XPath.java,v 1.1 2009/05/27 21:46:21 mparker Exp $
-
- Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
- 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 disclaimer that follows
-    these conditions in the documentation and/or other materials
-    provided with the distribution.
-
- 3. The name "JDOM" must not be used to endorse or promote products
-    derived from this software without prior written permission.  For
-    written permission, please contact <request_AT_jdom_DOT_org>.
-
- 4. Products derived from this software may not be called "JDOM", nor
-    may "JDOM" appear in their name, without prior written permission
-    from the JDOM Project Management <request_AT_jdom_DOT_org>.
-
- In addition, we request (but do not require) that you include in the
- end-user documentation provided with the redistribution and/or in the
- software itself an acknowledgement equivalent to the following:
-     "This product includes software developed by the
-      JDOM Project (http://www.jdom.org/)."
- Alternatively, the acknowledgment may be graphical using the logos
- available at http://www.jdom.org/images/logos.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 THE JDOM AUTHORS OR THE PROJECT
- 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.
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the JDOM Project and was originally
- created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
- Brett McLaughlin <brett_AT_jdom_DOT_org>.  For more information
- on the JDOM Project, please see <http://www.jdom.org/>.
-
- */
-
-package org.jdom.xpath;
-
-
-import java.io.*;
-import java.lang.reflect.*;
-import java.util.*;
-
-import org.jdom.*;
-
-
-/**
- * A utility class for performing XPath calls on JDOM nodes, with a factory
- * interface for obtaining a first XPath instance. Users operate against this
- * class while XPath vendors can plug-in implementations underneath.  Users
- * can choose an implementation using either {@link #setXPathClass} or
- * the system property "org.jdom.xpath.class".
- *
- * @version $Revision: 1.1 $, $Date: 2009/05/27 21:46:21 $
- * @author  Laurent Bihanic
- */
-public abstract class XPath implements Serializable {
-
-    private static final String CVS_ID =
-    "@(#) $RCSfile: XPath.java,v $ $Revision: 1.1 $ $Date: 2009/05/27 21:46:21 $ $Name:  $";
-
-   /**
-    * The name of the system property from which to retrieve the
-    * name of the implementation class to use.
-    * <p>
-    * The property name is:
-    * "<code>org.jdom.xpath.class</code>".</p>
-    */
-   private final static String  XPATH_CLASS_PROPERTY = "org.jdom.xpath.class";
-
-   /**
-    * The default implementation class to use if none was configured.
-    */
-   private final static String  DEFAULT_XPATH_CLASS  =
-                                                "org.jdom.xpath.JaxenXPath";
-
-   /**
-    * The constructor to instanciate a new XPath concrete
-    * implementation.
-    *
-    * @see    #newInstance
-    */
-   private static Constructor constructor = null;
-
-   /**
-    * Creates a new XPath wrapper object, compiling the specified
-    * XPath expression.
-    *
-    * @param  path   the XPath expression to wrap.
-    *
-    * @throws JDOMException   if the XPath expression is invalid.
-    */
-   public static XPath newInstance(String path) throws JDOMException {
-      try {
-         if (constructor == null) {
-            // First call => Determine implementation.
-            String className;
-            try {
-               className = System.getProperty(XPATH_CLASS_PROPERTY,
-                                              DEFAULT_XPATH_CLASS);
-            }
-            catch (SecurityException ex1) {
-               // Access to system property denied. => Use default impl.
-               className = DEFAULT_XPATH_CLASS;
-            }
-            setXPathClass(Class.forName(className));
-         }
-         // Allocate and return new implementation instance.
-         return (XPath)constructor.newInstance(new Object[] { path });
-      }
-      catch (JDOMException ex1) {
-         throw ex1;
-      }
-      catch (InvocationTargetException ex2) {
-         // Constructor threw an error on invocation.
-         Throwable t = ex2.getTargetException();
-
-         throw (t instanceof JDOMException)? (JDOMException)t:
-                                        new JDOMException(t.toString(), t);
-      }
-      catch (Exception ex3) {
-         // Any reflection error (probably due to a configuration mistake).
-         throw new JDOMException(ex3.toString(), ex3);
-      }
-   }
-
-   /**
-    * Sets the concrete XPath subclass to use when allocating XPath
-    * instances.
-    *
-    * @param  aClass   the concrete subclass of XPath.
-    *
-    * @throws IllegalArgumentException   if <code>aClass</code> is
-    *                                    <code>null</code>.
-    * @throws JDOMException              if <code>aClass</code> is
-    *                                    not a concrete subclass
-    *                                    of XPath.
-    */
-   public static void setXPathClass(Class aClass) throws JDOMException {
-      if (aClass == null) {
-         throw new IllegalArgumentException("aClass");
-      }
-
-      try {
-         if ((XPath.class.isAssignableFrom(aClass)) &&
-             (Modifier.isAbstract(aClass.getModifiers()) == false)) {
-            // Concrete subclass of XPath => Get constructor
-            constructor = aClass.getConstructor(new Class[] { String.class });
-         }
-         else {
-            throw new JDOMException(aClass.getName() +
-                        " is not a concrete JDOM XPath implementation");
-         }
-      }
-      catch (JDOMException ex1) {
-         throw ex1;
-      }
-      catch (Exception ex2) {
-         // Any reflection error (probably due to a configuration mistake).
-         throw new JDOMException(ex2.toString(), ex2);
-      }
-   }
-
-    /**
-     * Evaluates the wrapped XPath expression and returns the list
-     * of selected items.
-     *
-     * @param  context   the node to use as context for evaluating
-     *                   the XPath expression.
-     *
-     * @return the list of selected items, which may be of types: {@link Element},
-     *         {@link Attribute}, {@link Text}, {@link CDATA},
-     *         {@link Comment}, {@link ProcessingInstruction}, Boolean,
-     *         Double, or String.
-     *
-     * @throws JDOMException   if the evaluation of the XPath
-     *                         expression on the specified context
-     *                         failed.
-     */
-   abstract public List selectNodes(Object context) throws JDOMException;
-
-    /**
-     * Evaluates the wrapped XPath expression and returns the first
-     * entry in the list of selected nodes (or atomics).
-     *
-     * @param  context   the node to use as context for evaluating
-     *                   the XPath expression.
-     *
-     * @return the first selected item, which may be of types: {@link Element},
-     *         {@link Attribute}, {@link Text}, {@link CDATA},
-     *         {@link Comment}, {@link ProcessingInstruction}, Boolean,
-     *         Double, String, or <code>null</code> if no item was selected.
-     *
-     * @throws JDOMException   if the evaluation of the XPath
-     *                         expression on the specified context
-     *                         failed.
-     */
-   abstract public Object selectSingleNode(Object context) throws JDOMException;
-
-   /**
-    * Returns the string value of the first node selected by applying
-    * the wrapped XPath expression to the given context.
-    *
-    * @param  context   the element to use as context for evaluating
-    *                   the XPath expression.
-    *
-    * @return the string value of the first node selected by applying
-    *         the wrapped XPath expression to the given context.
-    *
-    * @throws JDOMException   if the XPath expression is invalid or
-    *                         its evaluation on the specified context
-    *                         failed.
-    */
-   abstract public String valueOf(Object context) throws JDOMException;
-
-   /**
-    * Returns the number value of the first node selected by applying
-    * the wrapped XPath expression to the given context.
-    *
-    * @param  context   the element to use as context for evaluating
-    *                   the XPath expression.
-    *
-    * @return the number value of the first node selected by applying
-    *         the wrapped XPath expression to the given context,
-    *         <code>null</code> if no node was selected or the
-    *         special value {@link java.lang.Double#NaN}
-    *         (Not-a-Number) if the selected value can not be
-    *         converted into a number value.
-    *
-    * @throws JDOMException   if the XPath expression is invalid or
-    *                         its evaluation on the specified context
-    *                         failed.
-    */
-   abstract public Number numberValueOf(Object context) throws JDOMException;
-
-   /**
-    * Defines an XPath variable and sets its value.
-    *
-    * @param  name    the variable name.
-    * @param  value   the variable value.
-    *
-    * @throws IllegalArgumentException   if <code>name</code> is not
-    *                                    a valid XPath variable name
-    *                                    or if the value type is not
-    *                                    supported by the underlying
-    *                                    implementation
-    */
-   abstract public void setVariable(String name, Object value);
-
-   /**
-    * Adds a namespace definition to the list of namespaces known of
-    * this XPath expression.
-    * <p>
-    * <strong>Note</strong>: In XPath, there is no such thing as a
-    * 'default namespace'.  The empty prefix <b>always</b> resolves
-    * to the empty namespace URI.</p>
-    *
-    * @param  namespace   the namespace.
-    */
-   abstract public void addNamespace(Namespace namespace);
-
-   /**
-    * Adds a namespace definition (prefix and URI) to the list of
-    * namespaces known of this XPath expression.
-    * <p>
-    * <strong>Note</strong>: In XPath, there is no such thing as a
-    * 'default namespace'.  The empty prefix <b>always</b> resolves
-    * to the empty namespace URI.</p>
-    *
-    * @param  prefix   the namespace prefix.
-    * @param  uri      the namespace URI.
-    *
-    * @throws IllegalNameException   if the prefix or uri are null or
-    *                                empty strings or if they contain
-    *                                illegal characters.
-    */
-   public void addNamespace(String prefix, String uri) {
-      addNamespace(Namespace.getNamespace(prefix, uri));
-   }
-
-   /**
-    * Returns the wrapped XPath expression as a string.
-    *
-    * @return the wrapped XPath expression as a string.
-    */
-   abstract public String getXPath();
-
-
-   /**
-    * Evaluates an XPath expression and returns the list of selected
-    * items.
-    * <p>
-    * <strong>Note</strong>: This method should not be used when the
-    * same XPath expression needs to be applied several times (on the
-    * same or different contexts) as it requires the expression to be
-    * compiled before being evaluated.  In such cases,
-    * {@link #newInstance allocating} an XPath wrapper instance and
-    * {@link #selectNodes(java.lang.Object) evaluating} it several
-    * times is way more efficient.
-    * </p>
-    *
-    * @param  context   the node to use as context for evaluating
-    *                   the XPath expression.
-    * @param  path      the XPath expression to evaluate.
-    *
-    * @return the list of selected items, which may be of types: {@link Element},
-    *         {@link Attribute}, {@link Text}, {@link CDATA},
-    *         {@link Comment}, {@link ProcessingInstruction}, Boolean,
-    *         Double, or String.
-    *
-    * @throws JDOMException   if the XPath expression is invalid or
-    *                         its evaluation on the specified context
-    *                         failed.
-    */
-   public static List selectNodes(Object context, String path)
-                                                        throws JDOMException {
-      return newInstance(path).selectNodes(context);
-   }
-
-   /**
-    * Evaluates the wrapped XPath expression and returns the first
-    * entry in the list of selected nodes (or atomics).
-    * <p>
-    * <strong>Note</strong>: This method should not be used when the
-    * same XPath expression needs to be applied several times (on the
-    * same or different contexts) as it requires the expression to be
-    * compiled before being evaluated.  In such cases,
-    * {@link #newInstance allocating} an XPath wrapper instance and
-    * {@link #selectSingleNode(java.lang.Object) evaluating} it
-    * several times is way more efficient.
-    * </p>
-    *
-    * @param  context   the element to use as context for evaluating
-    *                   the XPath expression.
-    * @param  path      the XPath expression to evaluate.
-    *
-    * @return the first selected item, which may be of types: {@link Element},
-    *         {@link Attribute}, {@link Text}, {@link CDATA},
-    *         {@link Comment}, {@link ProcessingInstruction}, Boolean,
-    *         Double, String, or <code>null</code> if no item was selected.
-    *
-    * @throws JDOMException   if the XPath expression is invalid or
-    *                         its evaluation on the specified context
-    *                         failed.
-    */
-   public static Object selectSingleNode(Object context, String path)
-                                                        throws JDOMException {
-      return newInstance(path).selectSingleNode(context);
-   }
-
-
-   //-------------------------------------------------------------------------
-   // Serialization support
-   //-------------------------------------------------------------------------
-
-   /**
-    * <i>[Serialization support]</i> Returns the alternative object
-    * to write to the stream when serializing this object.  This
-    * method returns an instance of a dedicated nested class to
-    * serialize XPath expressions independently of the concrete
-    * implementation being used.
-    * <p>
-    * <strong>Note</strong>: Subclasses are not allowed to override
-    * this method to ensure valid serialization of all
-    * implementations.</p>
-    *
-    * @return an XPathString instance configured with the wrapped
-    *         XPath expression.
-    *
-    * @throws ObjectStreamException   never.
-    */
-   protected final Object writeReplace() throws ObjectStreamException {
-      return new XPathString(this.getXPath());
-   }
-
-   /**
-    * The XPathString is dedicated to serialize instances of
-    * XPath subclasses in a implementation-independent manner.
-    * <p>
-    * XPathString ensures that only string data are serialized.  Upon
-    * deserialization, XPathString relies on XPath factory method to
-    * to create instances of the concrete XPath wrapper currently
-    * configured.</p>
-    */
-   private final static class XPathString implements Serializable {
-      /**
-       * The XPath expression as a string.
-       */
-      private String xPath = null;
-
-      /**
-       * Creates a new XPathString instance from the specified
-       * XPath expression.
-       *
-       * @param  xpath   the XPath expression.
-       */
-      public XPathString(String xpath) {
-         super();
-
-         this.xPath = xpath;
-      }
-
-      /**
-       * <i>[Serialization support]</i> Resolves the read XPathString
-       * objects into XPath implementations.
-       *
-       * @return an instance of a concrete implementation of
-       *         XPath.
-       *
-       * @throws ObjectStreamException   if no XPath could be built
-       *                                 from the read object.
-       */
-      private Object readResolve() throws ObjectStreamException {
-         try {
-            return XPath.newInstance(this.xPath);
-         }
-         catch (JDOMException ex1) {
-            throw new InvalidObjectException(
-                        "Can't create XPath object for expression \"" +
-                        this.xPath + "\": " + ex1.toString());
-         }
-      }
-   }
-}
-
diff --git a/dependencies/plugins/org.jdom/source-bundle/org/jdom/xpath/package.html b/dependencies/plugins/org.jdom/source-bundle/org/jdom/xpath/package.html
deleted file mode 100644
index 4427e1d..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/org/jdom/xpath/package.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<body>
-
-Support for XPath from within JDOM.  XPath provides a common interface with a
-pluggable back-end.  The default back end is Jaxen.
-
-</body>
diff --git a/dependencies/plugins/org.jdom/source-bundle/plugin.properties b/dependencies/plugins/org.jdom/source-bundle/plugin.properties
deleted file mode 100644
index 3cf496b..0000000
--- a/dependencies/plugins/org.jdom/source-bundle/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-################################################################################
-# Copyright (c) 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials 
-# are made available under the terms of the Eclipse Public License v1.0 
-# which accompanies this distribution, and is available at 
-# http://www.eclipse.org/legal/epl-v10.html 
-# 
-# Contributors: 
-# Chris Aniszczyk - initial API and implementation 
-################################################################################
-pluginName=JDOM Source
-providerName=Eclipse.org
\ No newline at end of file
diff --git a/dependencies/plugins/org.junit/.classpath b/dependencies/plugins/org.junit/.classpath
deleted file mode 100755
index efec9f7..0000000
--- a/dependencies/plugins/org.junit/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-    <classpathentry exported="true" kind="lib" path="junit.jar" sourcepath="/org.junit/junitsrc.zip"/>
-    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.3"/>
-    <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-    <classpathentry kind="output" path=""/>
-</classpath>
diff --git a/dependencies/plugins/org.junit/.project b/dependencies/plugins/org.junit/.project
deleted file mode 100755
index 29a06e7..0000000
--- a/dependencies/plugins/org.junit/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.junit</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-	</natures>
-</projectDescription>
diff --git a/dependencies/plugins/org.junit/META-INF/MANIFEST.MF b/dependencies/plugins/org.junit/META-INF/MANIFEST.MF
deleted file mode 100755
index 920f3da..0000000
--- a/dependencies/plugins/org.junit/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,17 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.junit
-Bundle-Version: 3.8.2.qualifier
-Bundle-ClassPath: junit.jar
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Export-Package: 
- junit.awtui;version="3.8.2",
- junit.extensions;version="3.8.2",
- junit.framework;version="3.8.2",
- junit.runner;version="3.8.2",
- junit.swingui;version="3.8.2",
- junit.swingui.icons;version="3.8.2",
- junit.textui;version="3.8.2"
-Bundle-RequiredExecutionEnvironment: J2SE-1.3
diff --git a/dependencies/plugins/org.junit/about.html b/dependencies/plugins/org.junit/about.html
deleted file mode 100755
index 70913ee..0000000
--- a/dependencies/plugins/org.junit/about.html
+++ /dev/null
@@ -1,50 +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>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>September 28, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was 
-provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
-
-<h3>Third Party Content</h3>
-
-<p>The Content includes items that have been sourced from third parties as set out below. If you 
-did not receive this Content directly from the Eclipse Foundation, the following is provided 
-for informational purposes only, and you should look to the Redistributor&rsquo;s license for 
-terms and conditions of use.</p>
-
-<p>The Content includes items that have been sourced from third parties as follows:</p>
-
-<h4>JUnit 3.8.2</h4>
-
-<p>The plug-in is accompanied by software developed by JUnit.org.  The JUnit 3.8.2 code included with the plug-in includes no modifications.
-Your use of JUnit 3.8.2 in both source and binary code form contained in the plug-in is subject to the terms and conditions of the 
-Common Public License Version 1.0 (&quot;CPL&quot;).  A copy of the CPL is available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>.
-The binary code is located in junit.jar and the source code is located in src.jar.</p>
-
-<p>i) IBM effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;</p>
-
-<p>ii) IBM effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;</p>
-
-<p>iii) IBM states that any provisions which differ from the CPL are offered by that IBM alone and not by any other party.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/dependencies/plugins/org.junit/about_files/cpl-v10.html b/dependencies/plugins/org.junit/about_files/cpl-v10.html
deleted file mode 100755
index 455e7b0..0000000
--- a/dependencies/plugins/org.junit/about_files/cpl-v10.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<HTML>
-<HEAD>
-<TITLE>Common Public License - v 1.0</TITLE>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" VLINK="#800000">
-
-
-<P ALIGN="CENTER"><B>Common Public License - v 1.0</B>
-<P><B></B><FONT SIZE="3"></FONT>
-<P><FONT SIZE="3"></FONT><FONT SIZE="2">THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT").  ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.</FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"><B>1.  DEFINITIONS</B></FONT>
-<P><FONT SIZE="2">"Contribution" means:</FONT>
-
-<UL><FONT SIZE="2">a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and<BR CLEAR="LEFT">
-b) in the case of each subsequent Contributor:</FONT></UL>
-
-
-<UL><FONT SIZE="2">i)	 	changes to the Program, and</FONT></UL>
-
-
-<UL><FONT SIZE="2">ii)		additions to the Program;</FONT></UL>
-
-
-<UL><FONT SIZE="2">where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.  </FONT><FONT SIZE="2">A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf.  </FONT><FONT SIZE="2">Contributions do not include additions to the Program which:  (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.  </FONT></UL>
-
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">"Contributor" means any person or entity that distributes the Program.</FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.  </FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2">"Program" means the Contributions distributed in accordance with this Agreement.</FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.</FONT>
-<P><FONT SIZE="2"><B></B></FONT>
-<P><FONT SIZE="2"><B>2.  GRANT OF RIGHTS</B></FONT>
-
-<UL><FONT SIZE="2"></FONT><FONT SIZE="2">a)	</FONT><FONT SIZE="2">Subject to the terms of this Agreement, each Contributor hereby grants</FONT><FONT SIZE="2"> Recipient a non-exclusive, worldwide, royalty-free copyright license to</FONT><FONT SIZE="2" COLOR="#FF0000"> </FONT><FONT SIZE="2">reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.</FONT></UL>
-
-
-<UL><FONT SIZE="2"></FONT></UL>
-
-
-<UL><FONT SIZE="2"></FONT><FONT SIZE="2">b) 	Subject to the terms of this Agreement, each Contributor hereby grants </FONT><FONT SIZE="2">Recipient a non-exclusive, worldwide,</FONT><FONT SIZE="2" COLOR="#008000"> </FONT><FONT SIZE="2">royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form.  This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents.  The patent license shall not apply to any other combinations which include the Contribution.  No hardware per se is licensed hereunder.   </FONT></UL>
-
-
-<UL><FONT SIZE="2"></FONT></UL>
-
-
-<UL><FONT SIZE="2">c)	Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity.  Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise.  As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any.  For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.</FONT></UL>
-
-
-<UL><FONT SIZE="2"></FONT></UL>
-
-
-<UL><FONT SIZE="2">d)	Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. </FONT></UL>
-
-
-<UL><FONT SIZE="2"></FONT></UL>
-
-<P><FONT SIZE="2"><B>3.  REQUIREMENTS</B></FONT>
-<P><FONT SIZE="2"><B></B>A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:</FONT>
-
-<UL><FONT SIZE="2">a)	it complies with the terms and conditions of this Agreement; and</FONT></UL>
-
-
-<UL><FONT SIZE="2">b)	its license agreement:</FONT></UL>
-
-
-<UL><FONT SIZE="2">i)	effectively disclaims</FONT><FONT SIZE="2"> on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; </FONT></UL>
-
-
-<UL><FONT SIZE="2">ii) 	effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; </FONT></UL>
-
-
-<UL><FONT SIZE="2">iii)</FONT><FONT SIZE="2">	states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and</FONT></UL>
-
-
-<UL><FONT SIZE="2">iv)	states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.</FONT><FONT SIZE="2" COLOR="#0000FF"> </FONT><FONT SIZE="2" COLOR="#FF0000"></FONT></UL>
-
-
-<UL><FONT SIZE="2" COLOR="#FF0000"></FONT><FONT SIZE="2"></FONT></UL>
-
-<P><FONT SIZE="2">When the Program is made available in source code form:</FONT>
-
-<UL><FONT SIZE="2">a)	it must be made available under this Agreement; and </FONT></UL>
-
-
-<UL><FONT SIZE="2">b)	a copy of this Agreement must be included with each copy of the Program.  </FONT></UL>
-
-<P><FONT SIZE="2"></FONT><FONT SIZE="2" COLOR="#0000FF"><STRIKE></STRIKE></FONT>
-<P><FONT SIZE="2" COLOR="#0000FF"><STRIKE></STRIKE></FONT><FONT SIZE="2">Contributors may not remove or alter any copyright notices contained within the Program.  </FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.  </FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"><B>4.  COMMERCIAL DISTRIBUTION</B></FONT>
-<P><FONT SIZE="2">Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like.  While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors.   Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering.  The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement.  In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations.  The Indemnified Contributor may participate in any such claim at its own expense.</FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">For example, a Contributor might include the Program in a commercial product offering, Product X.  That Contributor is then a Commercial Contributor.  If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.  Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.</FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2" COLOR="#0000FF"></FONT>
-<P><FONT SIZE="2" COLOR="#0000FF"></FONT><FONT SIZE="2"><B>5.  NO WARRANTY</B></FONT>
-<P><FONT SIZE="2">EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED 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. Each Recipient is</FONT><FONT SIZE="2"> solely responsible for determining the appropriateness of using and distributing </FONT><FONT SIZE="2">the Program</FONT><FONT SIZE="2"> and assumes all risks associated with its exercise of rights under this Agreement</FONT><FONT SIZE="2">, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, </FONT><FONT SIZE="2">programs or equipment, and unavailability or interruption of operations</FONT><FONT SIZE="2">.  </FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2"><B>6.  DISCLAIMER OF LIABILITY</B></FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2">EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES </FONT><FONT SIZE="2">(INCLUDING WITHOUT LIMITATION LOST PROFITS),</FONT><FONT SIZE="2"> HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"><B>7.  GENERAL</B></FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2">If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.</FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed.  In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. </FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance.  If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable.  However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.  </FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2">Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted  and may only be modified in the following manner. The Agreement Steward reserves the right to </FONT><FONT SIZE="2">publish new versions (including revisions) of this Agreement from time to </FONT><FONT SIZE="2">time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward.   IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity.  </FONT><FONT SIZE="2">Each new version of the Agreement will be given a distinguishing version number.  The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new </FONT><FONT SIZE="2">version.  </FONT><FONT SIZE="2">Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, </FONT><FONT SIZE="2">by implication, estoppel or otherwise</FONT><FONT SIZE="2">.</FONT><FONT SIZE="2">  All rights in the Program not expressly granted under this Agreement are reserved.</FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose.  Each party waives its rights to a jury trial in any resulting litigation.</FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT>
-
-</BODY>
-
-</HTML>
\ No newline at end of file
diff --git a/dependencies/plugins/org.junit/build.properties b/dependencies/plugins/org.junit/build.properties
deleted file mode 100755
index aaf095e..0000000
--- a/dependencies/plugins/org.junit/build.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials 
-# are made available under the terms of the Common Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/cpl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = about.html,\
-               plugin.properties,\
-               junit.jar,\
-               META-INF/
-               
-src.includes = *.zip,about.html
-
-
diff --git a/dependencies/plugins/org.junit/cpl-v10.html b/dependencies/plugins/org.junit/cpl-v10.html
deleted file mode 100755
index 455e7b0..0000000
--- a/dependencies/plugins/org.junit/cpl-v10.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<HTML>
-<HEAD>
-<TITLE>Common Public License - v 1.0</TITLE>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</HEAD>
-
-<BODY BGCOLOR="#FFFFFF" VLINK="#800000">
-
-
-<P ALIGN="CENTER"><B>Common Public License - v 1.0</B>
-<P><B></B><FONT SIZE="3"></FONT>
-<P><FONT SIZE="3"></FONT><FONT SIZE="2">THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT").  ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.</FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"><B>1.  DEFINITIONS</B></FONT>
-<P><FONT SIZE="2">"Contribution" means:</FONT>
-
-<UL><FONT SIZE="2">a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and<BR CLEAR="LEFT">
-b) in the case of each subsequent Contributor:</FONT></UL>
-
-
-<UL><FONT SIZE="2">i)	 	changes to the Program, and</FONT></UL>
-
-
-<UL><FONT SIZE="2">ii)		additions to the Program;</FONT></UL>
-
-
-<UL><FONT SIZE="2">where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.  </FONT><FONT SIZE="2">A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf.  </FONT><FONT SIZE="2">Contributions do not include additions to the Program which:  (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.  </FONT></UL>
-
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">"Contributor" means any person or entity that distributes the Program.</FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.  </FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2">"Program" means the Contributions distributed in accordance with this Agreement.</FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.</FONT>
-<P><FONT SIZE="2"><B></B></FONT>
-<P><FONT SIZE="2"><B>2.  GRANT OF RIGHTS</B></FONT>
-
-<UL><FONT SIZE="2"></FONT><FONT SIZE="2">a)	</FONT><FONT SIZE="2">Subject to the terms of this Agreement, each Contributor hereby grants</FONT><FONT SIZE="2"> Recipient a non-exclusive, worldwide, royalty-free copyright license to</FONT><FONT SIZE="2" COLOR="#FF0000"> </FONT><FONT SIZE="2">reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.</FONT></UL>
-
-
-<UL><FONT SIZE="2"></FONT></UL>
-
-
-<UL><FONT SIZE="2"></FONT><FONT SIZE="2">b) 	Subject to the terms of this Agreement, each Contributor hereby grants </FONT><FONT SIZE="2">Recipient a non-exclusive, worldwide,</FONT><FONT SIZE="2" COLOR="#008000"> </FONT><FONT SIZE="2">royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form.  This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents.  The patent license shall not apply to any other combinations which include the Contribution.  No hardware per se is licensed hereunder.   </FONT></UL>
-
-
-<UL><FONT SIZE="2"></FONT></UL>
-
-
-<UL><FONT SIZE="2">c)	Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity.  Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise.  As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any.  For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.</FONT></UL>
-
-
-<UL><FONT SIZE="2"></FONT></UL>
-
-
-<UL><FONT SIZE="2">d)	Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. </FONT></UL>
-
-
-<UL><FONT SIZE="2"></FONT></UL>
-
-<P><FONT SIZE="2"><B>3.  REQUIREMENTS</B></FONT>
-<P><FONT SIZE="2"><B></B>A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:</FONT>
-
-<UL><FONT SIZE="2">a)	it complies with the terms and conditions of this Agreement; and</FONT></UL>
-
-
-<UL><FONT SIZE="2">b)	its license agreement:</FONT></UL>
-
-
-<UL><FONT SIZE="2">i)	effectively disclaims</FONT><FONT SIZE="2"> on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; </FONT></UL>
-
-
-<UL><FONT SIZE="2">ii) 	effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; </FONT></UL>
-
-
-<UL><FONT SIZE="2">iii)</FONT><FONT SIZE="2">	states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and</FONT></UL>
-
-
-<UL><FONT SIZE="2">iv)	states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.</FONT><FONT SIZE="2" COLOR="#0000FF"> </FONT><FONT SIZE="2" COLOR="#FF0000"></FONT></UL>
-
-
-<UL><FONT SIZE="2" COLOR="#FF0000"></FONT><FONT SIZE="2"></FONT></UL>
-
-<P><FONT SIZE="2">When the Program is made available in source code form:</FONT>
-
-<UL><FONT SIZE="2">a)	it must be made available under this Agreement; and </FONT></UL>
-
-
-<UL><FONT SIZE="2">b)	a copy of this Agreement must be included with each copy of the Program.  </FONT></UL>
-
-<P><FONT SIZE="2"></FONT><FONT SIZE="2" COLOR="#0000FF"><STRIKE></STRIKE></FONT>
-<P><FONT SIZE="2" COLOR="#0000FF"><STRIKE></STRIKE></FONT><FONT SIZE="2">Contributors may not remove or alter any copyright notices contained within the Program.  </FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.  </FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"><B>4.  COMMERCIAL DISTRIBUTION</B></FONT>
-<P><FONT SIZE="2">Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like.  While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors.   Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering.  The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement.  In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations.  The Indemnified Contributor may participate in any such claim at its own expense.</FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">For example, a Contributor might include the Program in a commercial product offering, Product X.  That Contributor is then a Commercial Contributor.  If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.  Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.</FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2" COLOR="#0000FF"></FONT>
-<P><FONT SIZE="2" COLOR="#0000FF"></FONT><FONT SIZE="2"><B>5.  NO WARRANTY</B></FONT>
-<P><FONT SIZE="2">EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED 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. Each Recipient is</FONT><FONT SIZE="2"> solely responsible for determining the appropriateness of using and distributing </FONT><FONT SIZE="2">the Program</FONT><FONT SIZE="2"> and assumes all risks associated with its exercise of rights under this Agreement</FONT><FONT SIZE="2">, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, </FONT><FONT SIZE="2">programs or equipment, and unavailability or interruption of operations</FONT><FONT SIZE="2">.  </FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2"><B>6.  DISCLAIMER OF LIABILITY</B></FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2">EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES </FONT><FONT SIZE="2">(INCLUDING WITHOUT LIMITATION LOST PROFITS),</FONT><FONT SIZE="2"> HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"><B>7.  GENERAL</B></FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2">If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.</FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed.  In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. </FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance.  If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable.  However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.  </FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2">Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted  and may only be modified in the following manner. The Agreement Steward reserves the right to </FONT><FONT SIZE="2">publish new versions (including revisions) of this Agreement from time to </FONT><FONT SIZE="2">time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward.   IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity.  </FONT><FONT SIZE="2">Each new version of the Agreement will be given a distinguishing version number.  The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new </FONT><FONT SIZE="2">version.  </FONT><FONT SIZE="2">Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, </FONT><FONT SIZE="2">by implication, estoppel or otherwise</FONT><FONT SIZE="2">.</FONT><FONT SIZE="2">  All rights in the Program not expressly granted under this Agreement are reserved.</FONT>
-<P><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2">This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose.  Each party waives its rights to a jury trial in any resulting litigation.</FONT>
-<P><FONT SIZE="2"></FONT><FONT SIZE="2"></FONT>
-<P><FONT SIZE="2"></FONT>
-
-</BODY>
-
-</HTML>
\ No newline at end of file
diff --git a/dependencies/plugins/org.junit/junit.jar b/dependencies/plugins/org.junit/junit.jar
deleted file mode 100755
index c8f711d..0000000
--- a/dependencies/plugins/org.junit/junit.jar
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.junit/junitsrc.zip b/dependencies/plugins/org.junit/junitsrc.zip
deleted file mode 100755
index 28ea5fc..0000000
--- a/dependencies/plugins/org.junit/junitsrc.zip
+++ /dev/null
Binary files differ
diff --git a/dependencies/plugins/org.junit/plugin.properties b/dependencies/plugins/org.junit/plugin.properties
deleted file mode 100755
index f588160..0000000
--- a/dependencies/plugins/org.junit/plugin.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2004 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-pluginName=JUnit Testing Framework
-providerName=Eclipse.org
diff --git a/dependencies/plugins/org.junit/readme.txt b/dependencies/plugins/org.junit/readme.txt
deleted file mode 100755
index d25663d..0000000
--- a/dependencies/plugins/org.junit/readme.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-Work in this project happens in various branches according to the version of 
-the library being maintained.  For example, if you are looking for javax.servlet
-version 2.3, check out the v2_3 branch of the javax.servlet project.
\ No newline at end of file
diff --git a/dependencies/plugins/org.junit/scripts/exportplugin.xml b/dependencies/plugins/org.junit/scripts/exportplugin.xml
deleted file mode 100755
index 8839876..0000000
--- a/dependencies/plugins/org.junit/scripts/exportplugin.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<!-- build script to create JUnit Plugin -->
-<project name="org.junit" default="export" basedir="..">
-	<target name="init">
-		<tstamp/>
-		<property name="destdir" value="../../plugin-export" />
-		<property name="plugin"  value="org.junit" />
-		<property name="dest"  value="${destdir}/${plugin}" />
-	</target>
-
-	<target name="build" depends="init">
-    	<eclipse.incrementalBuild project="${plugin}" kind="incr"/>
-	</target>
-
-	<target name="export" depends="build">
-		<mkdir dir="${destdir}" />
-		<delete dir="${dest}" />
-		<mkdir dir="${dest}" />
-
-		<copy file="junit.jar" todir="${dest}"/>
-		<copy file="junitsrc.zip" todir="${dest}"/>
-		<copy file="plugin.xml" todir="${dest}"/>
-		<copy file="about.html" todir="${dest}"/>
-		<copy file="plugin.properties" todir="${dest}"/>
-		<copy todir= "${dest}/META-INF">
-			<fileset dir="META-INF"/>
-		</copy>		
-
-	</target>
-</project>
diff --git a/org.eclipse.amp.agf.test/.classpath b/org.eclipse.amp.agf.test/.classpath
new file mode 100644
index 0000000..1fa3e68
--- /dev/null
+++ b/org.eclipse.amp.agf.test/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.amp.agf.test/.project b/org.eclipse.amp.agf.test/.project
new file mode 100644
index 0000000..6f0bad9
--- /dev/null
+++ b/org.eclipse.amp.agf.test/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.amp.agf.test</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.amp.agf.test/META-INF/MANIFEST.MF b/org.eclipse.amp.agf.test/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..3131e17
--- /dev/null
+++ b/org.eclipse.amp.agf.test/META-INF/MANIFEST.MF
@@ -0,0 +1,25 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Tests for Agent Graphics functionality
+Bundle-SymbolicName: org.eclipse.amp.agf.test
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: eclipse.org
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.amp.axf.ide,
+ org.eclipse.swtbot.eclipse.finder,
+ org.eclipse.swtbot.swt.finder,
+ org.eclipse.core.resources,
+ org.eclipse.amp.axf.core,
+ org.eclipse.amp.axf.views,
+ org.eclipse.amp.agf.chart,
+ org.eclipse.amp.agf.core,
+ org.eclipse.amp.agf.ide,
+ org.eclipse.amp.escape.ide,
+ org.eclipse.amp.escape.ascape,
+ org.ascape.core,
+ org.junit;bundle-version="4.8.1"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+
+
diff --git a/org.eclipse.amp.agf.test/build.properties b/org.eclipse.amp.agf.test/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/org.eclipse.amp.agf.test/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/org.eclipse.amp.agf.test/src/org/eclipse/amp/agf/chart/test/ResourceManagerTest.java b/org.eclipse.amp.agf.test/src/org/eclipse/amp/agf/chart/test/ResourceManagerTest.java
new file mode 100644
index 0000000..ba76567
--- /dev/null
+++ b/org.eclipse.amp.agf.test/src/org/eclipse/amp/agf/chart/test/ResourceManagerTest.java
@@ -0,0 +1,76 @@
+package org.eclipse.amp.agf.chart.test;
+
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.amp.agf.chart.ChartEditPart;
+import org.eclipse.amp.agf.chart.ChartEditPart.ResourceManager;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.junit.Before;
+import org.junit.Test;
+
+public class ResourceManagerTest {
+	
+	private ResourceManager classToTest;
+	@Before
+	public void setUp() throws Exception {
+		classToTest = new ChartEditPart().getResourceManager();
+	}
+	/**
+	 * Would old gc be desposed?
+	 * Can we set null to dispose the gc
+	 */
+	@Test
+	public void testSetGc(){
+		Shell shell = new Shell();
+		GC gc = new GC(shell);
+		assertFalse(gc.isDisposed());
+		
+		classToTest.setGc(gc);
+		assertFalse(gc.isDisposed());
+		
+		GC gc2 = new GC(shell);
+		classToTest.setGc(gc2);
+		assertTrue(gc.isDisposed());
+		assertFalse(gc2.isDisposed());
+		
+		try{
+			classToTest.setGc(null);
+			assertTrue(gc2.isDisposed());
+		}catch(Exception e){
+			fail(e.getMessage());
+		}
+		shell.dispose();
+	}
+	/**
+	 * Would old image be desposed?
+	 * Can we set null to dispose the image
+	 */
+	@Test
+	public void testSetImage(){
+		Shell shell = new Shell();
+		Image image = new Image(Display.getCurrent(), 10, 10);
+		assertFalse(image.isDisposed());
+		
+		classToTest.setImage(image);
+		assertFalse(image.isDisposed());
+		
+		Image image2 = new Image(Display.getCurrent(), 10, 10);
+		classToTest.setImage(image2);
+		assertTrue(image.isDisposed());
+		assertFalse(image2.isDisposed());
+		
+		try{
+			classToTest.setImage(null);
+			assertTrue(image2.isDisposed());
+		}catch(Exception e){
+			fail(e.getMessage());
+		}
+		shell.dispose();
+	}
+}
diff --git a/org.eclipse.amp.agf/features/org.eclipse.amp.agf-feature/feature.xml b/org.eclipse.amp.agf/features/org.eclipse.amp.agf-feature/feature.xml
index ab2fa82..8f179f2 100644
--- a/org.eclipse.amp.agf/features/org.eclipse.amp.agf-feature/feature.xml
+++ b/org.eclipse.amp.agf/features/org.eclipse.amp.agf-feature/feature.xml
@@ -19,10 +19,6 @@
       %license
    </license>
 
-   <url>
-      <update label="%AMPUpdateSiteName" url="http://download.eclipse.org/amp/updates/releases/indigo"/>
-   </url>
-
    <requires>
       <import plugin="org.eclipse.core.runtime" version="3.5.0" match="greaterOrEqual"/>
       <import plugin="org.eclipse.ui" version="3.5.0" match="greaterOrEqual"/>
diff --git a/org.eclipse.amp.agf/features/org.eclipse.amp.agf.chart-feature/feature.xml b/org.eclipse.amp.agf/features/org.eclipse.amp.agf.chart-feature/feature.xml
index 0ba7399..ecee7d8 100644
--- a/org.eclipse.amp.agf/features/org.eclipse.amp.agf.chart-feature/feature.xml
+++ b/org.eclipse.amp.agf/features/org.eclipse.amp.agf.chart-feature/feature.xml
@@ -19,10 +19,6 @@
       %license
    </license>
 
-   <url>
-      <update label="%AMPUpdateSiteName" url="http://download.eclipse.org/amp/updates/releases/indigo"/>
-   </url>
-
    <requires>
       <import plugin="org.eclipse.ui"/>
       <import plugin="org.eclipse.ui.views"/>
diff --git a/org.eclipse.amp.agf/features/org.eclipse.amp.agf.zest-feature/feature.xml b/org.eclipse.amp.agf/features/org.eclipse.amp.agf.zest-feature/feature.xml
index f2e807e..723ac9f 100644
--- a/org.eclipse.amp.agf/features/org.eclipse.amp.agf.zest-feature/feature.xml
+++ b/org.eclipse.amp.agf/features/org.eclipse.amp.agf.zest-feature/feature.xml
@@ -19,10 +19,6 @@
       %license
    </license>
 
-   <url>
-      <update label="%AMPUpdateSiteName" url="http://download.eclipse.org/amp/updates/releases/indigo"/>
-   </url>
-
    <requires>
       <import plugin="org.eclipse.ui"/>
       <import plugin="org.eclipse.core.runtime"/>
diff --git a/org.eclipse.amp.agf/features/org.eclipse.amp.agf3d-feature/feature.xml b/org.eclipse.amp.agf/features/org.eclipse.amp.agf3d-feature/feature.xml
index 9d57a41..ac9d96d 100644
--- a/org.eclipse.amp.agf/features/org.eclipse.amp.agf3d-feature/feature.xml
+++ b/org.eclipse.amp.agf/features/org.eclipse.amp.agf3d-feature/feature.xml
@@ -18,10 +18,6 @@
       %license
    </license>
 
-   <url>
-      <update label="%AMPUpdateSiteName" url="http://download.eclipse.org/amp/updates/releases/indigo"/>
-   </url>
-
    <requires>
       <import plugin="org.eclipse.ui"/>
       <import plugin="org.eclipse.core.runtime"/>
diff --git a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ChartEditPart.java b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ChartEditPart.java
index 0b5b137..4ab9200 100644
--- a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ChartEditPart.java
+++ b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.chart/src/org/eclipse/amp/agf/chart/ChartEditPart.java
@@ -483,7 +483,7 @@
 		return seriesColorProvider;

 	}

 

-	ResourceManager getResourceManager() {

+	public ResourceManager getResourceManager() {

 		return resourceManager;

 	}

 

@@ -492,7 +492,7 @@
 	 * 

 	 * @author fei

 	 */

-	class ResourceManager implements DisposeListener {

+	public class ResourceManager implements DisposeListener {

 		private GC gc;

 

 		private Image image;

@@ -503,7 +503,7 @@
 			//

 		}

 

-		void setGc(GC gc) {

+		public void setGc(GC gc) {

 			if (this.gc != null && !this.gc.isDisposed()) {

 				this.gc.dispose();

 			}

@@ -540,7 +540,7 @@
 			return image;

 		}

 

-		void setImage(Image image) {

+		public void setImage(Image image) {

 			if (this.image != null && !this.image.isDisposed()) {

 				this.image.dispose();

 			}

diff --git a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.core/META-INF/MANIFEST.MF b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.core/META-INF/MANIFEST.MF
index f44230f..dc91040 100644
--- a/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.core/META-INF/MANIFEST.MF
+++ b/org.eclipse.amp.agf/plugins/org.eclipse.amp.agf.core/META-INF/MANIFEST.MF
@@ -11,9 +11,7 @@
  org.eclipse.gef;visibility:=reexport,
  org.eclipse.amp.axf.core,
  org.eclipse.amp.axf.views,
- org.eclipse.amp.axf.ide;bundle-version="0.9.0",
- org.junit;bundle-version="4.8.1",
- org.junit4;bundle-version="4.8.1"
+ org.eclipse.amp.axf.ide;bundle-version="0.9.0"
 Export-Package: org.eclipse.amp.agf,
  org.eclipse.amp.agf.gef,
  org.eclipse.amp.agf.tree;
diff --git a/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/doc/Epidemic.mediawiki b/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/doc/Epidemic.mediawiki
new file mode 100644
index 0000000..bbeba64
--- /dev/null
+++ b/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/doc/Epidemic.mediawiki
@@ -0,0 +1 @@
+			
\ No newline at end of file
diff --git a/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/doc/Epidemic.txt b/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/doc/Epidemic.txt
new file mode 100644
index 0000000..f886975
--- /dev/null
+++ b/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/doc/Epidemic.txt
@@ -0,0 +1,51 @@
+Epidemic
+A simple model of epidemic dynamics. We define individual agents with different disease states. The progression of disease moves from succeptible to exposed to infectious (either symptomatic or asymptomatic) to some outcome state. Agents can transmit infection to their immediate neighbors.
+
+For some background on the general approach, see Joshua M. Epstein. "Generative Social Science". 2006. Princeton. 
+
+Copyright 2009, Miles Parker. Released under Eclipse Public License. All uses should be attributed.
+
+Parameters
+Epidemic	Individual Count	The number of individuals to create.	int	1500
+Epidemic	Initial Infection Probability	The probability that any given individual will be infected at the beginning of the model run. For example, if this value is .15, and their are 100 individuals in the model, roughly 15 of those individuals will be infected at time 0.	double	.05
+Epidemic	Min Contact Transmission Probability	The minimum probability that proximity to a single neighbor for a single period will result in transmission of infection. At the start of each model run, each individual is assigned a contact transmission probability between the minimum and maximum value. For example, if this value was .08 and the maximum value was 0.12 a given individual could have any value between those two, but the average transmission probability would be around .1. If minium and maximum values are the same, then all individuals will have the same chance of passing along infection to a given neighbor. This value must be between 0.0 and 1.0 and less than or equal to Max Contact transmission Probability.	double	.08
+Epidemic	Max Contact Transmission Probability	The maximum probability that proximity to a single neighbor for a single period will result in transmission of infection. See Min Contact Probability for more information. Must be a value between 0.0 and 1.0 and greater or equal to Min Contact Transmission Probability.	double	.16
+Epidemic	Case Mortality Rate	The current probability that death will occur for a given individual as a result of infection. Some number between 0.0 and 1.0.	double	.05
+Epidemic	Periods per Day		int	24
+Epidemic	Min Period Exposure	The minimum amount of time from initial exposure to infectious asymptomatic or symptomatic state. 0 or greater.	int	24
+Epidemic	Max Period Exposure	Maximum time from initial exposure to infectious asymptomatic or symptomatic state. 0 or greater.	int	72
+Epidemic	Min Period Asymptom Infection	Maximum time spent infected without showing symptoms. 0 or greater.	int	24
+Epidemic	Max Period Asymptom Infection	Maximum time spent infected without showing symptoms. May be zero!	int	96
+Epidemic	Min Period Symptom Infection	Minimum time spent infected with obvious symptoms. 0 or greater.	int	24
+Epidemic	Max Period Symptom Infection	Maximum time spent infected with obvious symptoms. 1 or greater.	int	168
+Epidemic	Movement Probability	The chance that an agent will move within a given period. May be any value between 0.0 and 1.0.	double	.5
+Agents
+Individual	
+    
+
+Attributes
+Agent	Name	Description Type	Default Value
+Individual	Status		StatusEnum	Susceptible
+Individual	Exposure End Period		int	
+Individual	Asymptomatic End Period		int	
+Individual	Outcome Period		int	
+Individual	Contact Transmission Probability		double	
+    
+
+Activities
+Agent	Name	Description
+        
+Individual	Initialize Location	Initialize Location Initialization. Executed once at the beginning of each model run.
+Individual	Movement	Movement Rule. Executed every period.
+Individual	Initialize State	Initialize State Initialization. Executed once at the beginning of each model run.
+Individual	Transmission	Transmission Rule. Executed every period.
+Individual	Progression	Progression Rule. Executed every period.
+Individual	Exposure	Watch for changes in Status.
+    
+
+Spaces
+    
+Name	Description	Type
+City		2-Dimensional Grid
+Generated by metaabm system: Jun 25, 2011 6:16:49 PM PDT.
+    
\ No newline at end of file
diff --git a/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/edu/brook/DemographicPrisonersDilemma.java b/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/edu/brook/DemographicPrisonersDilemma.java
index 0b81878..032743d 100644
--- a/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/edu/brook/DemographicPrisonersDilemma.java
+++ b/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/edu/brook/DemographicPrisonersDilemma.java
@@ -1,41 +1,5 @@
 package edu.brook;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Collections;
-
-import org.eclipse.core.runtime.IAdapterFactory;
-import org.eclipse.amp.agf.IGraphicsAdapted;
-import org.eclipse.amp.agf.IGraphicsAdapter;
-
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.jface.viewers.IColorProvider;
-
-import org.ascape.model.Agent;
-import org.ascape.model.Cell;
-import org.ascape.model.CellOccupant;
-import org.ascape.model.HostCell;
-import org.ascape.model.LocatedAgent;
-import org.ascape.model.Scape;
-import org.ascape.model.event.ScapeEvent;
-import org.ascape.model.rule.Rule;
-import org.ascape.model.rule.ExecuteThenUpdate;
-import org.ascape.model.space.CollectionSpace;
-import org.ascape.model.space.Coordinate;
-import org.ascape.model.space.Coordinate2DDiscrete;
-import org.ascape.model.space.Graph;
-import org.ascape.model.space.Location;
-import org.ascape.model.space.Singleton;
-import org.ascape.runtime.NonGraphicRunner;
-import org.ascape.util.Conditional;
-import org.ascape.util.data.DataPoint;
-import org.ascape.util.data.DataPointConcrete;
-import org.ascape.util.vis.ColorFeature;
-import org.ascape.util.vis.ColorFeatureConcrete;
-import org.ascape.view.vis.ChartView;
-import org.ascape.view.vis.GEFView;
-import org.ascape.view.vis.GraphView;
-
 import org.eclipse.amp.escape.runtime.extension.IAgentChild;
 
 /**
@@ -46,9 +10,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class DemographicPrisonersDilemma extends Scape
-		implements
-			IGraphicsAdapted {
+public class DemographicPrisonersDilemma {
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -175,7 +137,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private Scape gameSpace = null;
+	private Object gameSpace = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -206,7 +168,6 @@
 		children = new ArrayList<IAgentChild>();
 
 	}
-
 	//todo, make this a useful value for evaluating compatibility of different versions of generated classes
 
 	/**
@@ -263,607 +224,6 @@
 		}
 	}
 
-	org.ascape.model.Scape playerScape;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * Create an instance of Player that will be used to populate the playerScape.
-	 * Overide to customize the prototype, for example to change the views created for a member scape.
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected Player createPlayerPrototype() {
-		Player player = new Player();
-		player.setCoordinate(new Coordinate2DDiscrete(0, 0));
-		return player;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	static int next_vm_id;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	int vm_unique_id;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * Creates the members of Demographic Prisoner_s Dilemma.
-	 * <!-- end-user-doc --> 
-	 * @generated
-	 */
-	public void createScape() {
-		super.createScape();
-
-		setName("Demographic Prisoner_s Dilemma");
-		Player playerProto = createPlayerPrototype();
-		playerScape = new Scape();
-		playerScape.setName("Players");
-		playerScape.setPrototypeAgent(playerProto);
-		playerScape.setExecutionOrder(Scape.RULE_ORDER);
-
-		for (IAgentChild tmp : playerProto.getChildren()) {
-			tmp.addDataCollectors(this);
-		}
-
-		playerScape.setSize(getPlayerCount());
-		gameSpace = new Scape(new org.ascape.model.space.Array2DVonNeumann());
-		gameSpace.setExecutionOrder(Scape.RULE_ORDER);
-		PlayCell protoPlayCell = new PlayCell();
-		gameSpace.setPrototypeAgent(protoPlayCell);
-		gameSpace.setExtent(new org.ascape.model.space.Coordinate2DDiscrete(
-				getGameSpaceWidth(), getGameSpaceHeight()));
-
-		gameSpace.setName("Game Spaces");
-		((CollectionSpace) gameSpace.getSpace()).setPeriodic(true);
-		add(gameSpace);
-		org.ascape.model.Scape playCellScape = gameSpace;
-		for (IAgentChild tmp : protoPlayCell.getChildren()) {
-			tmp.addDataCollectors(this);
-		}
-
-		add(playerScape);
-
-		for (IAgentChild tmp : playerProto.getChildren()) {
-			tmp.addDataCollectors(this);
-		}
-
-		playerProto.setHostScape(gameSpace);
-		gameSpace.getRules().clear();
-
-		playerScape
-				.addStatCollector(new org.ascape.util.data.StatCollectorCond(
-						playerScape.getName() + " Population") {
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					private static final long serialVersionUID = 684614444640209893L;
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					@SuppressWarnings("unused")
-					public final boolean meetsCondition(Object object) {
-						return true;
-					}
-				});
-
-		playerScape
-				.addStatCollector(new org.ascape.util.data.StatCollectorCond(
-						"Player is Cooperate") {
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					private static final long serialVersionUID = 6846144446402098985L;
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					public final boolean meetsCondition(Object player) {
-						return ((Player) player).isCooperate();
-					}
-				});
-
-		playerScape
-				.addStatCollector(new org.ascape.util.data.StatCollectorCond(
-						"Player is not Cooperate") {
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					private static final long serialVersionUID = 6846144446402098985L;
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					public final boolean meetsCondition(Object player) {
-						return !((Player) player).isCooperate();
-					}
-				});
-
-		playerScape
-				.addStatCollector(new org.ascape.util.data.StatCollectorCSAMM(
-						"Player Age") {
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					private static final long serialVersionUID = 6846144446402098985L;
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					public final double getValue(Object player) {
-						return ((Player) player).getAge();
-					}
-				});
-
-		playerScape
-				.addStatCollector(new org.ascape.util.data.StatCollectorCSAMM(
-						"Player Wealth") {
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					private static final long serialVersionUID = 6846144446402098985L;
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					public final double getValue(Object player) {
-						return ((Player) player).getWealth();
-					}
-				});
-
-		for (IAgentChild tmp : playerProto.getChildren()) {
-			tmp.addDataCollectors(this);
-		}
-
-		playerScape.addInitialRule(new Rule("Initialize") {
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			private static final long serialVersionUID = 6846144446402098982L;
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public void execute(Agent a) {
-				((edu.brook.Player) a).intializeNonFramework();
-			}
-		});
-
-		playerScape.addInitialRule(new Rule("Move To Random Location") {
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			private static final long serialVersionUID = 6846144446402098982L;
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public void execute(Agent a) {
-				((edu.brook.Player) a).moveToRandomLocation();
-			}
-		});
-		playerScape.addRule(new Rule("Random Walk") {
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			private static final long serialVersionUID = 6846144446402098981L;
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public void execute(Agent a) {
-				((edu.brook.Player) a).randomWalk();
-			}
-		});
-		playerScape.addRule(new Rule("Play Neighbor") {
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			private static final long serialVersionUID = 6846144446402098981L;
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public void execute(Agent a) {
-				((edu.brook.Player) a).playNeighbor();
-			}
-		});
-		playerScape.addRule(new Rule("Update Age") {
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			private static final long serialVersionUID = 6846144446402098981L;
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public void execute(Agent a) {
-				((edu.brook.Player) a).updateAge();
-			}
-		});
-		playerScape.addRule(new Rule("Fission Rule") {
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			private static final long serialVersionUID = 6846144446402098981L;
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public void execute(Agent a) {
-				((edu.brook.Player) a).fissionRule();
-			}
-		});
-		playerScape.addRule(new Rule("Die At Age") {
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			private static final long serialVersionUID = 6846144446402098981L;
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public void execute(Agent a) {
-				((edu.brook.Player) a).dieAtAge();
-			}
-		});
-		playerScape.addRule(new Rule("Die At Wealth 0") {
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			private static final long serialVersionUID = 6846144446402098981L;
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public void execute(Agent a) {
-				((edu.brook.Player) a).dieAtWealth0();
-			}
-		});
-
-		for (IAgentChild tmp : getChildren()) {
-			tmp.addDataCollectors(this);
-		}
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * Creates UI views for Demographic Prisoner_s Dilemma.
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void createGraphicViews() {
-		super.createGraphicViews();
-		createChartViews();
-		create2DViews();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void scapeSetup(ScapeEvent scapeEvent) {
-		//Set the size of the scape populations, e.g. for mutable scapes that need to have their size reset
-
-		playerScape.setSize(getPlayerCount());
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * Returns the Scape containing Players.
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public org.ascape.model.Scape getPlayerScape() {
-		return playerScape;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected void createChartViews() {
-		ChartView chart = new ChartView();
-
-		final DemographicPrisonersDilemma playerScape = new DemographicPrisonersDilemma();
-		playerScape.setRunner(new NonGraphicRunner());
-		Player player = new Player() {
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public void requestUpdate() {
-			}
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public DemographicPrisonersDilemma getDemographicPrisonersDilemma() {
-				return playerScape;
-			}
-		};
-		playerScape.add(player);
-		HostCell playerHost = new HostCell() {
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public void requestUpdate() {
-			}
-		};
-		playerHost.setOccupant((CellOccupant) player);
-
-		IColorProvider cooperateDefectStyleColorProvider = new CooperateDefectStyleColorProvider();
-
-		player.setCooperate(true);
-		chart.addSeries(
-				"Count Player is Cooperate",
-				getInferredChartColor(player, cooperateDefectStyleColorProvider));
-
-		player.setCooperate(false);
-		chart.addSeries(
-				"Count Player is not Cooperate",
-				getInferredChartColor(player, cooperateDefectStyleColorProvider));
-
-		final DemographicPrisonersDilemma playCellScape = new DemographicPrisonersDilemma();
-		playCellScape.setRunner(new NonGraphicRunner());
-		PlayCell playCell = new PlayCell() {
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public void requestUpdate() {
-			}
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public DemographicPrisonersDilemma getDemographicPrisonersDilemma() {
-				return playCellScape;
-			}
-		};
-		playCellScape.add(playCell);
-
-		IColorProvider playCellStyle2DColorProvider = new PlayCellStyleColorProvider();
-		addView(chart);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected void create2DViews() {
-		addView(new GEFView());
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected void createGraphViews() {
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public IGraphicsAdapter getGraphicsAdapter() {
-		return DemographicPrisonersDilemmaGraphicsAdapter.getDefault();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private Color getInferredChartColor(Object agent,
-			IColorProvider colorProvider) {
-		Color color = colorProvider.getForeground(agent);
-		if (color == ColorFeature.BLACK) {
-			color = ColorFeatureConcrete.createHSB(
-					(float) java.lang.Math.random() * 360f, 1.0f, 0.8f);
-		}
-		return color;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public static void main(String[] args) {
-		(new NonGraphicRunner())
-				.openInstance("edu.brook.DemographicPrisonersDilemma");
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-
-	@Override
-	public void executeOnMembers() {
-		int timeStep = getRunner().getPeriod();
-		startSimulationAgentChild(timeStep);
-
-		//A normal movable agent
-		((Player) playerScape.getPrototypeAgent())
-				.startSimulationAgentChild(timeStep);
-
-		//this is an agent that represent a cell and cannot move.
-
-		((PlayCell) gameSpace.getPrototypeAgent())
-				.startSimulationAgentChild(timeStep);
-
-		super.executeOnMembers();
-		calculateTimeStep(timeStep);
-
-		//A normal movable agent
-		((Player) playerScape.getPrototypeAgent()).calculateTimeStep(timeStep);
-
-		//this is an agent that represent a cell and cannot move.
-
-		((PlayCell) gameSpace.getPrototypeAgent()).calculateTimeStep(timeStep);
-
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-
-	public void startSimulationAgentChild(int timeStep) {
-		if (timeStep == getRoot().getRunner().getEarliestPeriod()) {
-			for (IAgentChild tmp : children) {
-				tmp.startSimulation(timeStep);
-			}
-		}
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-
-	public void calculateTimeStep(int timeStep) {
-		for (IAgentChild tmp : children) {
-			tmp.calculate(timeStep);
-		}
-	}
-
 	/**
 	 * <!-- begin-user-doc -->
 	 * Gets the Player Count property for Demographic Prisoner_s Dilemma.
@@ -1262,7 +622,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Scape getGameSpace() {
+	public Object getGameSpace() {
 		return gameSpace;
 	}
 
@@ -1274,21 +634,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public void setGameSpace(Scape _gameSpace) {
+	public void setGameSpace(Object _gameSpace) {
 		gameSpace = _gameSpace;
 	}
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public String getName() {
-		if (name == null) {
-			return "Demographic Prisoner_s Dilemma " + getUID();
-		} else {
-			return name;
-		}
-	}
 }
diff --git a/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/edu/brook/PlayCell.java b/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/edu/brook/PlayCell.java
index 43a4417..800c6d0 100644
--- a/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/edu/brook/PlayCell.java
+++ b/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/edu/brook/PlayCell.java
@@ -1,41 +1,5 @@
 package edu.brook;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Collections;
-
-import org.eclipse.core.runtime.IAdapterFactory;
-import org.eclipse.amp.agf.IGraphicsAdapted;
-import org.eclipse.amp.agf.IGraphicsAdapter;
-
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.jface.viewers.IColorProvider;
-
-import org.ascape.model.Agent;
-import org.ascape.model.Cell;
-import org.ascape.model.CellOccupant;
-import org.ascape.model.HostCell;
-import org.ascape.model.LocatedAgent;
-import org.ascape.model.Scape;
-import org.ascape.model.event.ScapeEvent;
-import org.ascape.model.rule.Rule;
-import org.ascape.model.rule.ExecuteThenUpdate;
-import org.ascape.model.space.CollectionSpace;
-import org.ascape.model.space.Coordinate;
-import org.ascape.model.space.Coordinate2DDiscrete;
-import org.ascape.model.space.Graph;
-import org.ascape.model.space.Location;
-import org.ascape.model.space.Singleton;
-import org.ascape.runtime.NonGraphicRunner;
-import org.ascape.util.Conditional;
-import org.ascape.util.data.DataPoint;
-import org.ascape.util.data.DataPointConcrete;
-import org.ascape.util.vis.ColorFeature;
-import org.ascape.util.vis.ColorFeatureConcrete;
-import org.ascape.view.vis.ChartView;
-import org.ascape.view.vis.GEFView;
-import org.ascape.view.vis.GraphView;
-
 import org.eclipse.amp.escape.runtime.extension.IAgentChild;
 
 /**
@@ -46,7 +10,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class PlayCell extends HostCell {
+public class PlayCell {
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -132,55 +96,4 @@
 		}
 	}
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public DemographicPrisonersDilemma getDemographicPrisoner_sDilemma() {
-		return (DemographicPrisonersDilemma) getScape().getScape();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-
-	public void startSimulationAgentChild(int timeStep) {
-		if (timeStep == getRoot().getRunner().getEarliestPeriod()) {
-			for (IAgentChild tmp : children) {
-				tmp.startSimulation(timeStep);
-			}
-		}
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-
-	public void calculateTimeStep(int timeStep) {
-		for (IAgentChild tmp : children) {
-			tmp.calculate(timeStep);
-		}
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public String getName() {
-		if (name == null) {
-			return "Play Cell " + getUID();
-		} else {
-			return name;
-		}
-	}
 }
diff --git a/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/edu/brook/Player.java b/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/edu/brook/Player.java
index 32900a2..4023d2a 100644
--- a/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/edu/brook/Player.java
+++ b/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/edu/brook/Player.java
@@ -1,41 +1,5 @@
 package edu.brook;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Collections;
-
-import org.eclipse.core.runtime.IAdapterFactory;
-import org.eclipse.amp.agf.IGraphicsAdapted;
-import org.eclipse.amp.agf.IGraphicsAdapter;
-
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.jface.viewers.IColorProvider;
-
-import org.ascape.model.Agent;
-import org.ascape.model.Cell;
-import org.ascape.model.CellOccupant;
-import org.ascape.model.HostCell;
-import org.ascape.model.LocatedAgent;
-import org.ascape.model.Scape;
-import org.ascape.model.event.ScapeEvent;
-import org.ascape.model.rule.Rule;
-import org.ascape.model.rule.ExecuteThenUpdate;
-import org.ascape.model.space.CollectionSpace;
-import org.ascape.model.space.Coordinate;
-import org.ascape.model.space.Coordinate2DDiscrete;
-import org.ascape.model.space.Graph;
-import org.ascape.model.space.Location;
-import org.ascape.model.space.Singleton;
-import org.ascape.runtime.NonGraphicRunner;
-import org.ascape.util.Conditional;
-import org.ascape.util.data.DataPoint;
-import org.ascape.util.data.DataPointConcrete;
-import org.ascape.util.vis.ColorFeature;
-import org.ascape.util.vis.ColorFeatureConcrete;
-import org.ascape.view.vis.ChartView;
-import org.ascape.view.vis.GEFView;
-import org.ascape.view.vis.GraphView;
-
 import org.eclipse.amp.escape.runtime.extension.IAgentChild;
 
 /**
@@ -46,7 +10,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class Player extends CellOccupant {
+public class Player {
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -156,44 +120,6 @@
 
 	/**
 	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public DemographicPrisonersDilemma getDemographicPrisoner_sDilemma() {
-		return (DemographicPrisonersDilemma) getScape().getScape();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-
-	public void startSimulationAgentChild(int timeStep) {
-		if (timeStep == getRoot().getRunner().getEarliestPeriod()) {
-			for (IAgentChild tmp : children) {
-				tmp.startSimulation(timeStep);
-			}
-		}
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-
-	public void calculateTimeStep(int timeStep) {
-		for (IAgentChild tmp : children) {
-			tmp.calculate(timeStep);
-		}
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
 	 * Initialize Initialization. Executed once at the beginning of each model run.
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -202,7 +128,7 @@
 		setWealth(getDemographicPrisoner_sDilemma().getInitialWealth());
 		int randomToMaxAge = randomToLimit(getDemographicPrisoner_sDilemma()
 				.getMaximumAge());
-		boolean randomStrategy = getRandom().nextBoolean();
+		boolean randomStrategy = true;
 		setAge(randomToMaxAge);
 		setCooperate(randomStrategy);
 	}
@@ -213,15 +139,11 @@
 	 * @generated
 	 */
 	public void moveToRandomLocation() {
-		PlayCell randomCell2 = (PlayCell) ((org.ascape.model.space.Discrete) getDemographicPrisoner_sDilemma()
-				.getGameSpace().getSpace()).findRandomAvailable();
-		if (randomCell2 != null) {
-			if (getHostScape() != ((Agent) randomCell2).getScape()) {
-				die();
-				getDemographicPrisoner_sDilemma().getPlayerScape().add(this);
-			}
-			moveTo(randomCell2);
-		}
+		/*
+		Spatial Functions:
+		[available]
+		 */
+		PlayCell randomCell2 = new PlayCell();
 	}
 	/**
 	 * <!-- begin-user-doc -->
@@ -230,17 +152,11 @@
 	 * @generated
 	 */
 	public void randomWalk() {
-		PlayCell randomNeighbor = (PlayCell) ((org.ascape.model.space.Discrete) getDemographicPrisoner_sDilemma()
-				.getGameSpace().getSpace())
-				.findRandomAvailableNeighbor(((org.ascape.model.CellOccupant) this)
-						.getHostCell());
-		if (randomNeighbor != null) {
-			if (getHostScape() != ((Agent) randomNeighbor).getScape()) {
-				die();
-				getDemographicPrisoner_sDilemma().getPlayerScape().add(this);
-			}
-			moveTo(randomNeighbor);
-		}
+		/*
+		Spatial Functions:
+		[available, neighbor]
+		 */
+		PlayCell randomNeighbor = new PlayCell();
 	}
 	/**
 	 * <!-- begin-user-doc -->
@@ -249,75 +165,49 @@
 	 * @generated
 	 */
 	public void playNeighbor() {
-		Conditional otherPlayerCondition = new Conditional() {
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			private static final long serialVersionUID = 6846144446402098985L;
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public boolean meetsCondition(Object otherPlayerCell) {
-				if (otherPlayerCell instanceof Player) {
-					return true;
-				} else {
-					return false;
-				}
-			}
-		};
-		Player otherPlayer = (Player) ((org.ascape.model.space.Discrete) getDemographicPrisoner_sDilemma()
-				.getGameSpace().getSpace()).findRandomNeighbor(this,
-				otherPlayerCondition);
-		if (otherPlayer != null) {
-			if ((otherPlayer.isCooperate() && isCooperate())) {
-				int valueWealthAddPayoffCooperateCooperate = getWealth()
-						+ getDemographicPrisoner_sDilemma().getPayoffCC();
-				int valueWealthAddPayoffCooperateCooperateCopy = otherPlayer
-						.getWealth()
-						+ otherPlayer.getDemographicPrisoner_sDilemma()
-								.getPayoffCC();
-				setWealth(valueWealthAddPayoffCooperateCooperate);
-				otherPlayer
-						.setWealth(valueWealthAddPayoffCooperateCooperateCopy);
-			}
-			if ((otherPlayer.isCooperate() && !isCooperate())) {
-				int valueWealthAddPayoffDefectCooperate = getWealth()
-						+ getDemographicPrisoner_sDilemma().getPayoffDC();
-				int valueWealthAddPayoffCooperateDefectCopy = otherPlayer
-						.getWealth()
-						+ otherPlayer.getDemographicPrisoner_sDilemma()
-								.getPayoffCD();
-				setWealth(valueWealthAddPayoffDefectCooperate);
-				otherPlayer.setWealth(valueWealthAddPayoffCooperateDefectCopy);
-			}
-			if ((!otherPlayer.isCooperate() && isCooperate())) {
-				int valueWealthAddPayoffCooperateDefect = getWealth()
-						+ getDemographicPrisoner_sDilemma().getPayoffCD();
-				int valueWealthAddPayoffDefectCooperateCopy = otherPlayer
-						.getWealth()
-						+ otherPlayer.getDemographicPrisoner_sDilemma()
-								.getPayoffDC();
-				setWealth(valueWealthAddPayoffCooperateDefect);
-				otherPlayer.setWealth(valueWealthAddPayoffDefectCooperateCopy);
-			}
-			if ((!isCooperate() && !otherPlayer.isCooperate())) {
-				int valueWealthAddPayoffDefectDefect = getWealth()
-						+ getDemographicPrisoner_sDilemma().getPayoffDD();
-				int valueWealthAddPayoffDefectDefectCopy = otherPlayer
-						.getWealth()
-						+ otherPlayer.getDemographicPrisoner_sDilemma()
-								.getPayoffDD();
-				setWealth(valueWealthAddPayoffDefectDefect);
-				otherPlayer.setWealth(valueWealthAddPayoffDefectDefectCopy);
-			}
+		/*
+		Spatial Functions:
+		[neighbor]
+		 */
+		Player otherPlayer = new Player();
+		if ((otherPlayer.isCooperate() && isCooperate())) {
+			int valueWealthAddPayoffCooperateCooperate = getWealth()
+					+ getDemographicPrisoner_sDilemma().getPayoffCC();
+			int valueWealthAddPayoffCooperateCooperateCopy = otherPlayer
+					.getWealth()
+					+ otherPlayer.getDemographicPrisoner_sDilemma()
+							.getPayoffCC();
+			setWealth(valueWealthAddPayoffCooperateCooperate);
+			otherPlayer.setWealth(valueWealthAddPayoffCooperateCooperateCopy);
+		}
+		if ((otherPlayer.isCooperate() && !isCooperate())) {
+			int valueWealthAddPayoffDefectCooperate = getWealth()
+					+ getDemographicPrisoner_sDilemma().getPayoffDC();
+			int valueWealthAddPayoffCooperateDefectCopy = otherPlayer
+					.getWealth()
+					+ otherPlayer.getDemographicPrisoner_sDilemma()
+							.getPayoffCD();
+			setWealth(valueWealthAddPayoffDefectCooperate);
+			otherPlayer.setWealth(valueWealthAddPayoffCooperateDefectCopy);
+		}
+		if ((!otherPlayer.isCooperate() && isCooperate())) {
+			int valueWealthAddPayoffCooperateDefect = getWealth()
+					+ getDemographicPrisoner_sDilemma().getPayoffCD();
+			int valueWealthAddPayoffDefectCooperateCopy = otherPlayer
+					.getWealth()
+					+ otherPlayer.getDemographicPrisoner_sDilemma()
+							.getPayoffDC();
+			setWealth(valueWealthAddPayoffCooperateDefect);
+			otherPlayer.setWealth(valueWealthAddPayoffDefectCooperateCopy);
+		}
+		if ((!isCooperate() && !otherPlayer.isCooperate())) {
+			int valueWealthAddPayoffDefectDefect = getWealth()
+					+ getDemographicPrisoner_sDilemma().getPayoffDD();
+			int valueWealthAddPayoffDefectDefectCopy = otherPlayer.getWealth()
+					+ otherPlayer.getDemographicPrisoner_sDilemma()
+							.getPayoffDD();
+			setWealth(valueWealthAddPayoffDefectDefect);
+			otherPlayer.setWealth(valueWealthAddPayoffDefectDefectCopy);
 		}
 	}
 	/**
@@ -337,39 +227,28 @@
 	 * @generated
 	 */
 	public void fissionRule() {
-		if (getWealth() >= getDemographicPrisoner_sDilemma().getFissionWealth()) {
-			PlayCell birthLocation = (PlayCell) ((org.ascape.model.space.Discrete) getDemographicPrisoner_sDilemma()
-					.getGameSpace().getSpace())
-					.findRandomAvailableNeighbor(((org.ascape.model.CellOccupant) this)
-							.getHostCell());
-			if (birthLocation != null) {
+		if (getWealth() >= getDemographicPrisoner_sDilemma().getFissionWealth()) { /*
+																					Spatial Functions:
+																					[neighbor, available]
+																					 */
+			PlayCell birthLocation = new PlayCell();
 
-				Player createAgents = (Player) getDemographicPrisoner_sDilemma()
-						.getPlayerScape().getSpace().newLocation(false);
-				if (createAgents.getHostScape() != ((Agent) birthLocation)
-						.getScape()) {
-					die();
-					getDemographicPrisoner_sDilemma().getPlayerScape().add(
-							createAgents);
-				}
-				createAgents.moveTo(birthLocation);
-				createAgents.setWealth(getDemographicPrisoner_sDilemma()
-						.getInheiritedWealth());
-				double valueRandomUnit = getRandom().nextDouble();
-				int wealthChildWealth = getWealth()
-						- createAgents.getDemographicPrisoner_sDilemma()
-								.getInheiritedWealth();
-				if (valueRandomUnit < createAgents
-						.getDemographicPrisoner_sDilemma().getMutationRate()) {
-					boolean valueRandomBoolean = getRandom().nextBoolean();
-					createAgents.setCooperate(valueRandomBoolean);
-				}
-				if (!(valueRandomUnit < createAgents
-						.getDemographicPrisoner_sDilemma().getMutationRate())) {
-					createAgents.setCooperate(isCooperate());
-				}
-				setWealth(wealthChildWealth);
+			createAgents.setWealth(getDemographicPrisoner_sDilemma()
+					.getInheiritedWealth());
+			double valueRandomUnit = randomUnit();
+			int wealthChildWealth = getWealth()
+					- createAgents.getDemographicPrisoner_sDilemma()
+							.getInheiritedWealth();
+			if (valueRandomUnit < createAgents
+					.getDemographicPrisoner_sDilemma().getMutationRate()) {
+				boolean valueRandomBoolean = true;
+				createAgents.setCooperate(valueRandomBoolean);
 			}
+			if (!(valueRandomUnit < createAgents
+					.getDemographicPrisoner_sDilemma().getMutationRate())) {
+				createAgents.setCooperate(isCooperate());
+			}
+			setWealth(wealthChildWealth);
 		}
 	}
 	/**
@@ -380,7 +259,6 @@
 	 */
 	public void dieAtAge() {
 		if (getAge() > getDemographicPrisoner_sDilemma().getDeathAge()) {
-			die();
 		}
 	}
 	/**
@@ -391,7 +269,6 @@
 	 */
 	public void dieAtWealth0() {
 		if (getWealth() < 0) {
-			die();
 		}
 	}
 	/**
@@ -463,17 +340,4 @@
 		wealth = _wealth;
 	}
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public String getName() {
-		if (name == null) {
-			return "Player " + getUID();
-		} else {
-			return name;
-		}
-	}
 }
diff --git a/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/name/milesparker/epi/Epidemic.java b/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/name/milesparker/epi/Epidemic.java
index ddb0d04..36934b9 100644
--- a/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/name/milesparker/epi/Epidemic.java
+++ b/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/name/milesparker/epi/Epidemic.java
@@ -1,41 +1,5 @@
 package name.milesparker.epi;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Collections;
-
-import org.eclipse.core.runtime.IAdapterFactory;
-import org.eclipse.amp.agf.IGraphicsAdapted;
-import org.eclipse.amp.agf.IGraphicsAdapter;
-
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.jface.viewers.IColorProvider;
-
-import org.ascape.model.Agent;
-import org.ascape.model.Cell;
-import org.ascape.model.CellOccupant;
-import org.ascape.model.HostCell;
-import org.ascape.model.LocatedAgent;
-import org.ascape.model.Scape;
-import org.ascape.model.event.ScapeEvent;
-import org.ascape.model.rule.Rule;
-import org.ascape.model.rule.ExecuteThenUpdate;
-import org.ascape.model.space.CollectionSpace;
-import org.ascape.model.space.Coordinate;
-import org.ascape.model.space.Coordinate2DDiscrete;
-import org.ascape.model.space.Graph;
-import org.ascape.model.space.Location;
-import org.ascape.model.space.Singleton;
-import org.ascape.runtime.NonGraphicRunner;
-import org.ascape.util.Conditional;
-import org.ascape.util.data.DataPoint;
-import org.ascape.util.data.DataPointConcrete;
-import org.ascape.util.vis.ColorFeature;
-import org.ascape.util.vis.ColorFeatureConcrete;
-import org.ascape.view.vis.ChartView;
-import org.ascape.view.vis.GEFView;
-import org.ascape.view.vis.GraphView;
-
 import org.eclipse.amp.escape.runtime.extension.IAgentChild;
 
 /**
@@ -50,7 +14,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class Epidemic extends Scape implements IGraphicsAdapted {
+public class Epidemic {
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -170,7 +134,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private Scape city = null;
+	private Object city = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -201,7 +165,6 @@
 		children = new ArrayList<IAgentChild>();
 
 	}
-
 	//todo, make this a useful value for evaluating compatibility of different versions of generated classes
 
 	/**
@@ -257,643 +220,6 @@
 		}
 	}
 
-	org.ascape.model.Scape individualScape;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * Create an instance of Individual that will be used to populate the individualScape.
-	 * Overide to customize the prototype, for example to change the views created for a member scape.
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected Individual createIndividualPrototype() {
-		Individual individual = new Individual();
-		individual.setCoordinate(new Coordinate2DDiscrete(0, 0));
-		return individual;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	static int next_vm_id;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	int vm_unique_id;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * Creates the members of Epidemic.
-	 * <!-- end-user-doc --> 
-	 * @generated
-	 */
-	public void createScape() {
-		super.createScape();
-
-		setName("Epidemic");
-		Individual individualProto = createIndividualPrototype();
-		individualScape = new Scape();
-		individualScape.setName("Individuals");
-		individualScape.setPrototypeAgent(individualProto);
-		individualScape.setExecutionOrder(Scape.RULE_ORDER);
-
-		for (IAgentChild tmp : individualProto.getChildren()) {
-			tmp.addDataCollectors(this);
-		}
-
-		individualScape.setSize(getIndividualCount());
-		city = new Scape(new org.ascape.model.space.Array2DEuclidian());
-		city.setExecutionOrder(Scape.RULE_ORDER);
-		HostCell protoHostCell = new HostCell();
-		city.setPrototypeAgent(protoHostCell);
-		city.setExtent(new org.ascape.model.space.Coordinate2DDiscrete(
-				getCityWidth(), getCityHeight()));
-
-		city.setName("Citys");
-		((CollectionSpace) city.getSpace()).setPeriodic(false);
-		add(city);
-
-		add(individualScape);
-
-		for (IAgentChild tmp : individualProto.getChildren()) {
-			tmp.addDataCollectors(this);
-		}
-
-		individualProto.setHostScape(city);
-		city.getRules().clear();
-
-		individualScape
-				.addStatCollector(new org.ascape.util.data.StatCollectorCond(
-						individualScape.getName() + " Population") {
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					private static final long serialVersionUID = 684614444640209893L;
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					@SuppressWarnings("unused")
-					public final boolean meetsCondition(Object object) {
-						return true;
-					}
-				});
-		individualScape
-				.addStatCollector(new org.ascape.util.data.StatCollectorCond(
-						"Individual Susceptible Status") {
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					private static final long serialVersionUID = 6846144446402098985L;
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					public final boolean meetsCondition(Object individual) {
-						return StatusEnum.susceptible == ((Individual) individual)
-								.getStatus();
-					}
-				});
-
-		individualScape
-				.addStatCollector(new org.ascape.util.data.StatCollectorCond(
-						"Individual Exposed Status") {
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					private static final long serialVersionUID = 6846144446402098985L;
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					public final boolean meetsCondition(Object individual) {
-						return StatusEnum.exposed == ((Individual) individual)
-								.getStatus();
-					}
-				});
-
-		individualScape
-				.addStatCollector(new org.ascape.util.data.StatCollectorCond(
-						"Individual Asymptom Infectious Status") {
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					private static final long serialVersionUID = 6846144446402098985L;
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					public final boolean meetsCondition(Object individual) {
-						return StatusEnum.asymptomInfectious == ((Individual) individual)
-								.getStatus();
-					}
-				});
-
-		individualScape
-				.addStatCollector(new org.ascape.util.data.StatCollectorCond(
-						"Individual Symptom Infectious Status") {
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					private static final long serialVersionUID = 6846144446402098985L;
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					public final boolean meetsCondition(Object individual) {
-						return StatusEnum.symptomInfectious == ((Individual) individual)
-								.getStatus();
-					}
-				});
-
-		individualScape
-				.addStatCollector(new org.ascape.util.data.StatCollectorCond(
-						"Individual Recovered Status") {
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					private static final long serialVersionUID = 6846144446402098985L;
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					public final boolean meetsCondition(Object individual) {
-						return StatusEnum.recovered == ((Individual) individual)
-								.getStatus();
-					}
-				});
-
-		individualScape
-				.addStatCollector(new org.ascape.util.data.StatCollectorCond(
-						"Individual Dead Status") {
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					private static final long serialVersionUID = 6846144446402098985L;
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					public final boolean meetsCondition(Object individual) {
-						return StatusEnum.dead == ((Individual) individual)
-								.getStatus();
-					}
-				});
-
-		individualScape
-				.addStatCollector(new org.ascape.util.data.StatCollectorCSAMM(
-						"Individual Exposure End Period") {
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					private static final long serialVersionUID = 6846144446402098985L;
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					public final double getValue(Object individual) {
-						return ((Individual) individual).getExposureEndPeriod();
-					}
-				});
-
-		individualScape
-				.addStatCollector(new org.ascape.util.data.StatCollectorCSAMM(
-						"Individual Contact Transmission Probability") {
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					private static final long serialVersionUID = 6846144446402098985L;
-
-					/**
-					 * <!-- begin-user-doc -->
-					 * 
-					 * <!-- end-user-doc -->
-					 * @generated
-					 */
-					public final double getValue(Object individual) {
-						return ((Individual) individual)
-								.getContactTransmissionProbability();
-					}
-				});
-
-		for (IAgentChild tmp : individualProto.getChildren()) {
-			tmp.addDataCollectors(this);
-		}
-
-		individualScape.addInitialRule(new Rule("Initialize Location") {
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			private static final long serialVersionUID = 6846144446402098982L;
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public void execute(Agent a) {
-				((name.milesparker.epi.Individual) a).initializeLocation();
-			}
-		});
-		individualScape.addRule(new Rule("Movement") {
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			private static final long serialVersionUID = 6846144446402098981L;
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public void execute(Agent a) {
-				((name.milesparker.epi.Individual) a).movement();
-			}
-		});
-
-		individualScape.addInitialRule(new Rule("Initialize State") {
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			private static final long serialVersionUID = 6846144446402098982L;
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public void execute(Agent a) {
-				((name.milesparker.epi.Individual) a).initializeState();
-			}
-		});
-		individualScape.addRule(new Rule("Transmission") {
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			private static final long serialVersionUID = 6846144446402098981L;
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public void execute(Agent a) {
-				((name.milesparker.epi.Individual) a).transmission();
-			}
-		});
-		individualScape.addRule(new Rule("Progression") {
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			private static final long serialVersionUID = 6846144446402098981L;
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public void execute(Agent a) {
-				((name.milesparker.epi.Individual) a).progression();
-			}
-		});
-
-		for (IAgentChild tmp : getChildren()) {
-			tmp.addDataCollectors(this);
-		}
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * Creates UI views for Epidemic.
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void createGraphicViews() {
-		super.createGraphicViews();
-		createChartViews();
-		create2DViews();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void scapeSetup(ScapeEvent scapeEvent) {
-		//Set the size of the scape populations, e.g. for mutable scapes that need to have their size reset
-
-		individualScape.setSize(getIndividualCount());
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * Returns the Scape containing Individuals.
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public org.ascape.model.Scape getIndividualScape() {
-		return individualScape;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected void createChartViews() {
-		ChartView chart = new ChartView();
-
-		final Epidemic individualScape = new Epidemic();
-		individualScape.setRunner(new NonGraphicRunner());
-		Individual individual = new Individual() {
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public void requestUpdate() {
-			}
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public Epidemic getEpidemic() {
-				return individualScape;
-			}
-		};
-		individualScape.add(individual);
-		HostCell individualHost = new HostCell() {
-
-			/**
-			 * <!-- begin-user-doc -->
-			 * 
-			 * <!-- end-user-doc -->
-			 * @generated
-			 */
-			public void requestUpdate() {
-			}
-		};
-		individualHost.setOccupant((CellOccupant) individual);
-
-		IColorProvider individualStyle2DColorProvider = new IndividualStyle2DColorProvider();
-
-		individual.setStatus(StatusEnum.susceptible);
-		chart.addSeries(
-				"Count Individual Susceptible Status",
-				getInferredChartColor(individual,
-						individualStyle2DColorProvider));
-
-		individual.setStatus(StatusEnum.exposed);
-		chart.addSeries(
-				"Count Individual Exposed Status",
-				getInferredChartColor(individual,
-						individualStyle2DColorProvider));
-
-		individual.setStatus(StatusEnum.asymptomInfectious);
-		chart.addSeries(
-				"Count Individual Asymptom Infectious Status",
-				getInferredChartColor(individual,
-						individualStyle2DColorProvider));
-
-		individual.setStatus(StatusEnum.symptomInfectious);
-		chart.addSeries(
-				"Count Individual Symptom Infectious Status",
-				getInferredChartColor(individual,
-						individualStyle2DColorProvider));
-
-		individual.setStatus(StatusEnum.recovered);
-		chart.addSeries(
-				"Count Individual Recovered Status",
-				getInferredChartColor(individual,
-						individualStyle2DColorProvider));
-
-		individual.setStatus(StatusEnum.dead);
-		chart.addSeries(
-				"Count Individual Dead Status",
-				getInferredChartColor(individual,
-						individualStyle2DColorProvider));
-		addView(chart);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected void create2DViews() {
-		addView(new GEFView());
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected void createGraphViews() {
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public IGraphicsAdapter getGraphicsAdapter() {
-		return EpidemicGraphicsAdapter.getDefault();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private Color getInferredChartColor(Object agent,
-			IColorProvider colorProvider) {
-		Color color = colorProvider.getForeground(agent);
-		if (color == ColorFeature.BLACK) {
-			color = ColorFeatureConcrete.createHSB(
-					(float) java.lang.Math.random() * 360f, 1.0f, 0.8f);
-		}
-		return color;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public static void main(String[] args) {
-		(new NonGraphicRunner()).openInstance("name.milesparker.epi.Epidemic");
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * A simple model of epidemic dynamics. We define individual agents with different disease states. The progression of disease moves from succeptible to exposed to infectious (either symptomatic or asymptomatic) to some outcome state. Agents can transmit infection to their immediate neighbors.
-
-	For some background on the general approach, see Joshua M. Epstein. "Generative Social Science". 2006. Princeton. 
-
-	Copyright 2009, Miles Parker. Released under Eclipse Public License. All uses should be attributed.
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-
-	@Override
-	public void executeOnMembers() {
-		int timeStep = getRunner().getPeriod();
-		startSimulationAgentChild(timeStep);
-
-		//A normal movable agent
-		((Individual) individualScape.getPrototypeAgent())
-				.startSimulationAgentChild(timeStep);
-
-		super.executeOnMembers();
-		calculateTimeStep(timeStep);
-
-		//A normal movable agent
-		((Individual) individualScape.getPrototypeAgent())
-				.calculateTimeStep(timeStep);
-
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * A simple model of epidemic dynamics. We define individual agents with different disease states. The progression of disease moves from succeptible to exposed to infectious (either symptomatic or asymptomatic) to some outcome state. Agents can transmit infection to their immediate neighbors.
-
-	For some background on the general approach, see Joshua M. Epstein. "Generative Social Science". 2006. Princeton. 
-
-	Copyright 2009, Miles Parker. Released under Eclipse Public License. All uses should be attributed.
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-
-	public void startSimulationAgentChild(int timeStep) {
-		if (timeStep == getRoot().getRunner().getEarliestPeriod()) {
-			for (IAgentChild tmp : children) {
-				tmp.startSimulation(timeStep);
-			}
-		}
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * A simple model of epidemic dynamics. We define individual agents with different disease states. The progression of disease moves from succeptible to exposed to infectious (either symptomatic or asymptomatic) to some outcome state. Agents can transmit infection to their immediate neighbors.
-
-	For some background on the general approach, see Joshua M. Epstein. "Generative Social Science". 2006. Princeton. 
-
-	Copyright 2009, Miles Parker. Released under Eclipse Public License. All uses should be attributed.
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-
-	public void calculateTimeStep(int timeStep) {
-		for (IAgentChild tmp : children) {
-			tmp.calculate(timeStep);
-		}
-	}
-
 	/**
 	 * <!-- begin-user-doc -->
 	 * Gets the Individual Count property for Epidemic.
@@ -1272,7 +598,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Scape getCity() {
+	public Object getCity() {
 		return city;
 	}
 
@@ -1284,21 +610,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public void setCity(Scape _city) {
+	public void setCity(Object _city) {
 		city = _city;
 	}
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public String getName() {
-		if (name == null) {
-			return "Epidemic " + getUID();
-		} else {
-			return name;
-		}
-	}
 }
diff --git a/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/name/milesparker/epi/Individual.java b/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/name/milesparker/epi/Individual.java
index b2a2b16..1b8641f 100644
--- a/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/name/milesparker/epi/Individual.java
+++ b/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/name/milesparker/epi/Individual.java
@@ -1,41 +1,5 @@
 package name.milesparker.epi;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Collections;
-
-import org.eclipse.core.runtime.IAdapterFactory;
-import org.eclipse.amp.agf.IGraphicsAdapted;
-import org.eclipse.amp.agf.IGraphicsAdapter;
-
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.jface.viewers.IColorProvider;
-
-import org.ascape.model.Agent;
-import org.ascape.model.Cell;
-import org.ascape.model.CellOccupant;
-import org.ascape.model.HostCell;
-import org.ascape.model.LocatedAgent;
-import org.ascape.model.Scape;
-import org.ascape.model.event.ScapeEvent;
-import org.ascape.model.rule.Rule;
-import org.ascape.model.rule.ExecuteThenUpdate;
-import org.ascape.model.space.CollectionSpace;
-import org.ascape.model.space.Coordinate;
-import org.ascape.model.space.Coordinate2DDiscrete;
-import org.ascape.model.space.Graph;
-import org.ascape.model.space.Location;
-import org.ascape.model.space.Singleton;
-import org.ascape.runtime.NonGraphicRunner;
-import org.ascape.util.Conditional;
-import org.ascape.util.data.DataPoint;
-import org.ascape.util.data.DataPointConcrete;
-import org.ascape.util.vis.ColorFeature;
-import org.ascape.util.vis.ColorFeatureConcrete;
-import org.ascape.view.vis.ChartView;
-import org.ascape.view.vis.GEFView;
-import org.ascape.view.vis.GraphView;
-
 import org.eclipse.amp.escape.runtime.extension.IAgentChild;
 
 /**
@@ -46,7 +10,7 @@
  * <!-- end-user-doc -->
  * @generated
  */
-public class Individual extends CellOccupant {
+public class Individual {
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -170,58 +134,16 @@
 
 	/**
 	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public Epidemic getEpidemic() {
-		return (Epidemic) getScape().getScape();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-
-	public void startSimulationAgentChild(int timeStep) {
-		if (timeStep == getRoot().getRunner().getEarliestPeriod()) {
-			for (IAgentChild tmp : children) {
-				tmp.startSimulation(timeStep);
-			}
-		}
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-
-	public void calculateTimeStep(int timeStep) {
-		for (IAgentChild tmp : children) {
-			tmp.calculate(timeStep);
-		}
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
 	 * Initialize Location Initialization. Executed once at the beginning of each model run.
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	public void initializeLocation() {
-		Object cityLocation = (Object) ((org.ascape.model.space.Discrete) getEpidemic()
-				.getCity().getSpace()).findRandomAvailable();
-		if (cityLocation != null) {
-			if (getHostScape() != ((Agent) cityLocation).getScape()) {
-				die();
-				getEpidemic().getIndividualScape().add(this);
-			}
-			moveTo(((HostCell) cityLocation));
-		}
+		/*
+		Spatial Functions:
+		[available]
+		 */
+		Object cityLocation = new Object();
 	}
 	/**
 	 * <!-- begin-user-doc -->
@@ -230,22 +152,15 @@
 	 * @generated
 	 */
 	public void movement() {
-		double movementDraw = getRandom().nextDouble();
+		double movementDraw = randomUnit();
 		if ((getStatus() != StatusEnum.dead
 				&& movementDraw < getEpidemic().getMovementProbability()
 				&& getStatus() != StatusEnum.symptomInfectious && movementDraw < getEpidemic()
-				.getMovementProbability())) {
-			Object neighboringLocation = (Object) ((org.ascape.model.space.Discrete) getEpidemic()
-					.getCity().getSpace())
-					.findRandomAvailableNeighbor(((org.ascape.model.CellOccupant) this)
-							.getHostCell());
-			if (neighboringLocation != null) {
-				if (getHostScape() != ((Agent) neighboringLocation).getScape()) {
-					die();
-					getEpidemic().getIndividualScape().add(this);
-				}
-				moveTo(((HostCell) neighboringLocation));
-			}
+				.getMovementProbability())) { /*
+												Spatial Functions:
+												[available, neighbor]
+												 */
+			Object neighboringLocation = new Object();
 		}
 	}
 	/**
@@ -255,7 +170,7 @@
 	 * @generated
 	 */
 	public void initializeState() {
-		double infectionDraw = getRandom().nextDouble();
+		double infectionDraw = randomUnit();
 		double individualTransmissionRate = randomInRange(getEpidemic()
 				.getMinContactTransmissionProbability(), getEpidemic()
 				.getMaxContactTransmissionProbability());
@@ -271,41 +186,16 @@
 	 * @generated
 	 */
 	public void transmission() {
-		if ((getStatus() == StatusEnum.symptomInfectious || getStatus() == StatusEnum.asymptomInfectious)) {
-			Conditional potentialExposureCondition = new Conditional() {
-
-				/**
-				 * <!-- begin-user-doc -->
-				 * 
-				 * <!-- end-user-doc -->
-				 * @generated
-				 */
-				private static final long serialVersionUID = 6846144446402098985L;
-
-				/**
-				 * <!-- begin-user-doc -->
-				 * 
-				 * <!-- end-user-doc -->
-				 * @generated
-				 */
-				public boolean meetsCondition(Object potentialExposureCell) {
-					if (potentialExposureCell instanceof Individual) {
-						return true;
-					} else {
-						return false;
-					}
-				}
-			};
-			Individual potentialExposure = (Individual) ((org.ascape.model.space.Discrete) getEpidemic()
-					.getCity().getSpace()).findRandomNeighbor(this,
-					potentialExposureCondition);
-			if (potentialExposure != null) {
-				if (potentialExposure.getStatus() == StatusEnum.susceptible) {
-					double transmissionDraw = getRandom().nextDouble();
-					if (transmissionDraw < potentialExposure
-							.getContactTransmissionProbability()) {
-						potentialExposure.setStatus(StatusEnum.exposed);
-					}
+		if ((getStatus() == StatusEnum.symptomInfectious || getStatus() == StatusEnum.asymptomInfectious)) { /*
+																												Spatial Functions:
+																												[neighbor]
+																												 */
+			Individual potentialExposure = new Individual();
+			if (potentialExposure.getStatus() == StatusEnum.susceptible) {
+				double transmissionDraw = randomUnit();
+				if (transmissionDraw < potentialExposure
+						.getContactTransmissionProbability()) {
+					potentialExposure.setStatus(StatusEnum.exposed);
 				}
 			}
 		}
@@ -317,12 +207,12 @@
 	 * @generated
 	 */
 	public void progression() {
-		int currentPeriod = getScape().getPeriod();
+		int currentPeriod = timeNow();
 		if ((getExposureEndPeriod() != getAsymptomaticEndPeriod() && currentPeriod == getExposureEndPeriod())) {
 			setStatus(StatusEnum.asymptomInfectious);
 		}
 		if (currentPeriod == getOutcomePeriod()) {
-			double mortalityDraw = getRandom().nextDouble();
+			double mortalityDraw = randomUnit();
 			if (mortalityDraw < getEpidemic().getCaseMortalityRate()) {
 				setStatus(StatusEnum.dead);
 			}
@@ -345,7 +235,7 @@
 	 */
 	public void exposure() {
 		if (getStatus() == StatusEnum.exposed) {
-			int exposureNow = getScape().getPeriod();
+			int exposureNow = timeNow();
 			int exposureLength = randomInRange(getEpidemic()
 					.getMinPeriodExposure(), getEpidemic()
 					.getMaxPeriodExposure());
@@ -480,17 +370,4 @@
 		contactTransmissionProbability = _contactTransmissionProbability;
 	}
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * 
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public String getName() {
-		if (name == null) {
-			return "Individual " + getUID();
-		} else {
-			return name;
-		}
-	}
 }
diff --git a/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/name/milesparker/markets/Instrument.java b/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/name/milesparker/markets/Instrument.java
index 31c703f..a1fdb0a 100644
--- a/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/name/milesparker/markets/Instrument.java
+++ b/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/name/milesparker/markets/Instrument.java
@@ -186,10 +186,10 @@
 	 */
 	public List getNetwork() {
 		List network = new ArrayList();
-		network.addAll(((Graph) getMarkets().getFirmInstruments().getSpace())
-				.getNeighborsFor(this));
 		network.addAll(((Graph) getMarkets().getInstrumentHolders().getSpace())
 				.getNeighborsFor(this));
+		network.addAll(((Graph) getMarkets().getFirmInstruments().getSpace())
+				.getNeighborsFor(this));
 		return network;
 	}
 
diff --git a/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/name/milesparker/markets/Trader.java b/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/name/milesparker/markets/Trader.java
index 6422b42..3d71a7d 100644
--- a/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/name/milesparker/markets/Trader.java
+++ b/org.eclipse.amp.amf/examples/org.eclipse.amp.amf.examples.escape/srcgen/name/milesparker/markets/Trader.java
@@ -172,10 +172,10 @@
 	 */
 	public List getNetwork() {
 		List network = new ArrayList();
-		network.addAll(((Graph) getMarkets().getTargetBuyFirms().getSpace())
-				.getNeighborsFor(this));
 		network.addAll(((Graph) getMarkets().getInstrumentHolders().getSpace())
 				.getNeighborsFor(this));
+		network.addAll(((Graph) getMarkets().getTargetBuyFirms().getSpace())
+				.getNeighborsFor(this));
 		return network;
 	}
 
diff --git a/org.eclipse.amp.amf/features/org.eclipse.amp.amf-feature/feature.xml b/org.eclipse.amp.amf/features/org.eclipse.amp.amf-feature/feature.xml
index 9c329ca..50b552f 100644
--- a/org.eclipse.amp.amf/features/org.eclipse.amp.amf-feature/feature.xml
+++ b/org.eclipse.amp.amf/features/org.eclipse.amp.amf-feature/feature.xml
@@ -18,10 +18,6 @@
       %license
    </license>
 
-   <url>
-      <update label="AMP Update Site" url="http://download.eclipse.org/amp/updates/releases/indigo"/>
-   </url>
-
    <includes
          id="org.eclipse.amp.amf.core"
          version="0.0.0"/>
diff --git a/org.eclipse.amp.amf/features/org.eclipse.amp.amf.core-feature/feature.xml b/org.eclipse.amp.amf/features/org.eclipse.amp.amf.core-feature/feature.xml
index f27f9c6..0fc7d46 100644
--- a/org.eclipse.amp.amf/features/org.eclipse.amp.amf.core-feature/feature.xml
+++ b/org.eclipse.amp.amf/features/org.eclipse.amp.amf.core-feature/feature.xml
@@ -18,10 +18,6 @@
       %license
    </license>
 
-   <url>
-      <update label="%AMPUpdateSiteName" url="http://download.eclipse.org/amp/updates/releases/indigo"/>
-   </url>
-
    <requires>
       <import plugin="org.eclipse.emf.ecore"/>
       <import plugin="org.eclipse.emf.ecore.xmi"/>
diff --git a/org.eclipse.amp.amf/features/org.eclipse.amp.amf.sd-feature/feature.xml b/org.eclipse.amp.amf/features/org.eclipse.amp.amf.sd-feature/feature.xml
index 8aa3c99..e220e58 100644
--- a/org.eclipse.amp.amf/features/org.eclipse.amp.amf.sd-feature/feature.xml
+++ b/org.eclipse.amp.amf/features/org.eclipse.amp.amf.sd-feature/feature.xml
@@ -16,10 +16,6 @@
    <license url="%licenseURL">
       %license
    </license>
-
-   <url>
-      <update label="%AMPUpdateSiteName" url="http://download.eclipse.org/amp/updates/releases/indigo"/>
-   </url>
    
    <plugin
          id="org.eclipse.amp.amf.sd"
diff --git a/org.eclipse.amp.amf/features/org.eclipse.amp.amf.target.ascape-feature/feature.xml b/org.eclipse.amp.amf/features/org.eclipse.amp.amf.target.ascape-feature/feature.xml
index 1783a16..245b880 100644
--- a/org.eclipse.amp.amf/features/org.eclipse.amp.amf.target.ascape-feature/feature.xml
+++ b/org.eclipse.amp.amf/features/org.eclipse.amp.amf.target.ascape-feature/feature.xml
@@ -18,10 +18,6 @@
       %license
    </license>
 
-   <url>
-      <update label="%AMPUpdateSiteName" url="http://download.eclipse.org/amp/updates/releases/indigo"/>
-   </url>
-
    <requires>
       <import plugin="org.eclipse.core.runtime"/>
       <import plugin="org.eclipse.amp.amf.acore"/>
diff --git a/org.eclipse.amp.amf/features/org.eclipse.amp.amf.target.escape-feature/feature.xml b/org.eclipse.amp.amf/features/org.eclipse.amp.amf.target.escape-feature/feature.xml
index e0346df..4303881 100644
--- a/org.eclipse.amp.amf/features/org.eclipse.amp.amf.target.escape-feature/feature.xml
+++ b/org.eclipse.amp.amf/features/org.eclipse.amp.amf.target.escape-feature/feature.xml
@@ -18,10 +18,6 @@
       %license
    </license>
 
-   <url>
-      <update label="%AMPUpdateSiteName" url="http://download.eclipse.org/amp/updates/releases/indigo"/>
-   </url>
-
    <requires>
       <import plugin="org.eclipse.core.runtime"/>
       <import plugin="org.eclipse.amp.amf.acore"/>
diff --git a/org.eclipse.amp.amf/features/org.eclipse.amp.amf.target.escape3d-feature/feature.xml b/org.eclipse.amp.amf/features/org.eclipse.amp.amf.target.escape3d-feature/feature.xml
index 5a6e76c..3851e75 100644
--- a/org.eclipse.amp.amf/features/org.eclipse.amp.amf.target.escape3d-feature/feature.xml
+++ b/org.eclipse.amp.amf/features/org.eclipse.amp.amf.target.escape3d-feature/feature.xml
@@ -17,10 +17,6 @@
       %license
    </license>
 
-   <url>
-      <update label="%AMPUpdateSiteName" url="http://download.eclipse.org/amp/updates/releases/indigo"/>
-   </url>
-
    <includes
          id="org.eclipse.amp.agf3d"
          version="0.0.0"/>
diff --git a/org.eclipse.amp.amf/features/org.eclipse.amp.amf.target.repast-feature/feature.xml b/org.eclipse.amp.amf/features/org.eclipse.amp.amf.target.repast-feature/feature.xml
index e351d34..642ae48 100644
--- a/org.eclipse.amp.amf/features/org.eclipse.amp.amf.target.repast-feature/feature.xml
+++ b/org.eclipse.amp.amf/features/org.eclipse.amp.amf.target.repast-feature/feature.xml
@@ -18,11 +18,6 @@
       %license
    </license>
 
-   <url>
-      <update label="%AMPUpdateSiteName" url="http://download.eclipse.org/amp/updates/releases/indigo"/>
-      <discovery label="Repast Simphony Site" url="http://mirror.anl.gov/pub/repastsimphony/site.xml"/>
-   </url>
-
    <requires>
       <import plugin="org.eclipse.core.runtime"/>
       <import plugin="org.eclipse.amp.amf.acore"/>
diff --git a/org.eclipse.amp.amf/features/org.eclipse.amp.amfx-feature/feature.xml b/org.eclipse.amp.amf/features/org.eclipse.amp.amfx-feature/feature.xml
index 7cef4b7..010e99d 100644
--- a/org.eclipse.amp.amf/features/org.eclipse.amp.amfx-feature/feature.xml
+++ b/org.eclipse.amp.amf/features/org.eclipse.amp.amfx-feature/feature.xml
@@ -18,10 +18,6 @@
       %license
    </license>
 
-   <url>
-      <update label="%AMPUpdateSiteName" url="http://download.eclipse.org/amp/updates/releases/indigo"/>
-   </url>
-
    <requires>
       <import plugin="org.eclipse.xtext"/>
       <import plugin="org.eclipse.emf.ecore"/>
diff --git a/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen.extras/src/model/generate_graphvis.mwe b/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen.extras/src/model/generate_graphvis.mwe
new file mode 100644
index 0000000..0cd134f
--- /dev/null
+++ b/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen.extras/src/model/generate_graphvis.mwe
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<workflow>	
+	<property name="outputPath" value="./"/>
+	<property name="modelPath" value="test/"/>
+	<property name="modelFile" value="TestGeneration.metaabm"/>
+    <property name="srcDir" value="srcgen"/>

+	
+
+    <bean id="metaabm" class="org.eclipse.xtend.typesystem.emf.EmfRegistryMetaModel"/>
+   
+	<component id="xmiParser" class="org.eclipse.emf.mwe.utils.Reader">
+        <uri value="${modelPath}"/>
+        <modelSlot value="model"/>
+  	</component>
+	
+	<component id="graphvisGenerator" class="org.eclipse.xpand2.Generator" skipOnErrors="true" fileEncoding="iso-8859-1">
+		<metaModel idRef="metaabm"/>
+		<expand value="metaabm::ext::tmpl::Graph::Model FOR model"/>
+	    <outlet path="${outputPath}" overwrite="true"/> 
+		<fileEncoding value="ISO-8859-1"/> 
+	</component>    
+</workflow>
\ No newline at end of file
diff --git a/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen.extras/src/org/eclipse/amp/amf/gen/ext/GenerateGraphVisHandler.java b/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen.extras/src/org/eclipse/amp/amf/gen/ext/GenerateGraphVisHandler.java
new file mode 100644
index 0000000..30071a4
--- /dev/null
+++ b/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen.extras/src/org/eclipse/amp/amf/gen/ext/GenerateGraphVisHandler.java
@@ -0,0 +1,42 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2007-2009 Metascape, LLC
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Metascape - Initial development and maintenance
+ *
+ * </copyright>
+ */
+package org.eclipse.amp.amf.gen.ext;
+
+import org.eclipse.amp.amf.gen.ide.ResourceJobHandler;
+import org.eclipse.amp.amf.gen.ide.TestCaseModelBuilder;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.ui.statushandlers.StatusManager;
+
+public class GenerateGraphVisHandler extends ResourceJobHandler {
+
+	@Override
+	public void execute(IResource resource) throws ExecutionException {
+		try {
+            IProject modelProject = resource.getProject();
+            modelProject.open(null);
+			GraphVisBuilder.getGraphVisBuilderDefault().handleModifiedResource(resource);
+            resource.getProject().refreshLocal(IResource.DEPTH_INFINITE, null);
+		} catch (CoreException e) {
+            IStatus ioStatus = new Status(Status.WARNING, "org.eclipse.amp.amf.gen.ext", "Problem Generating "
+                    + resource + " Graphics", e);
+            StatusManager.getManager().handle(ioStatus);
+		}
+	}
+}
diff --git a/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen.extras/src/org/eclipse/amp/amf/gen/ext/GraphVisBuilder.java b/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen.extras/src/org/eclipse/amp/amf/gen/ext/GraphVisBuilder.java
new file mode 100644
index 0000000..364a8b2
--- /dev/null
+++ b/org.eclipse.amp.amf/plugins/org.eclipse.amp.amf.gen.extras/src/org/eclipse/amp/amf/gen/ext/GraphVisBuilder.java
@@ -0,0 +1,41 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2007-2009 Metascape, LLC
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Metascape - Initial development and maintenance
+ *
+ * </copyright>
+ */
+package org.eclipse.amp.amf.gen.ext;
+
+import org.eclipse.amp.amf.gen.ide.MetaABMBuilder;
+
+
+public class GraphVisBuilder extends MetaABMBuilder {
+    
+    public final static String GRAPHVIS_BUILDER_ID = "graphvisGenerator";
+
+    private static MetaABMBuilder graphvisBuilder;
+    
+    public GraphVisBuilder() {
+        super("Generating Graph Vis Documentation", "org.eclipse.amp.amf.gen.ext", "model/generate_graphvis.mwe", true);
+    }
+
+    /**
+     * Returns the shared instance
+     *
+     * @return the shared instance
+     */
+    public static MetaABMBuilder getGraphVisBuilderDefault() {
+        if (graphvisBuilder == null) {
+        	graphvisBuilder = new GraphVisBuilder();
+        }
+        return graphvisBuilder;
+    }
+}
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddActsTest.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddActsTest.metaabm
index 043b203..ea6ac1b 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddActsTest.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddActsTest.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -16,9 +16,21 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddActsTestComp.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddActsTestComp.metaabm
index 043b203..ea6ac1b 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddActsTestComp.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddActsTestComp.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -16,9 +16,21 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddActsTestDo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddActsTestDo.metaabm
index 043b203..ea6ac1b 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddActsTestDo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddActsTestDo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -16,9 +16,21 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddActsTestRedo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddActsTestRedo.metaabm
index 043b203..ea6ac1b 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddActsTestRedo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddActsTestRedo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -16,9 +16,21 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddActsTestUndo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddActsTestUndo.metaabm
index 596e557..14567e8 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddActsTestUndo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddActsTestUndo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -15,9 +15,21 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddAgentsTest.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddAgentsTest.metaabm
index 76f5747..8d483a6 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddAgentsTest.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddAgentsTest.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -11,9 +11,21 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddAgentsTestComp.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddAgentsTestComp.metaabm
index 76f5747..8d483a6 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddAgentsTestComp.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddAgentsTestComp.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -11,9 +11,21 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddAgentsTestDo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddAgentsTestDo.metaabm
index 76f5747..8d483a6 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddAgentsTestDo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddAgentsTestDo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -11,9 +11,21 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddAgentsTestRedo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddAgentsTestRedo.metaabm
index 76f5747..8d483a6 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddAgentsTestRedo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddAgentsTestRedo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -11,9 +11,21 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddAgentsTestUndo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddAgentsTestUndo.metaabm
index 92402bf..847c1fe 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddAgentsTestUndo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAddAgentsTestUndo.metaabm
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -9,5 +9,11 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkDeleteAgentTargetRuleTest.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkDeleteAgentTargetRuleTest.metaabm
index 84867ae..f8ace98 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkDeleteAgentTargetRuleTest.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkDeleteAgentTargetRuleTest.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -15,9 +15,21 @@
       <members xsi:type="act:ARule" label="Root Context Agent Rule" ID="rootContextAgentRule" selected="//@agents[ID='rootContextAgent']/@rootActivity/@members[ID='rootContextAgentRule']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Root Context Agent Rules"/>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkDeleteAgentTargetRuleTestComp.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkDeleteAgentTargetRuleTestComp.metaabm
index 84867ae..f8ace98 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkDeleteAgentTargetRuleTestComp.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkDeleteAgentTargetRuleTestComp.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -15,9 +15,21 @@
       <members xsi:type="act:ARule" label="Root Context Agent Rule" ID="rootContextAgentRule" selected="//@agents[ID='rootContextAgent']/@rootActivity/@members[ID='rootContextAgentRule']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Root Context Agent Rules"/>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkDeleteAgentTargetRuleTestDo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkDeleteAgentTargetRuleTestDo.metaabm
index 84867ae..f8ace98 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkDeleteAgentTargetRuleTestDo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkDeleteAgentTargetRuleTestDo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -15,9 +15,21 @@
       <members xsi:type="act:ARule" label="Root Context Agent Rule" ID="rootContextAgentRule" selected="//@agents[ID='rootContextAgent']/@rootActivity/@members[ID='rootContextAgentRule']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Root Context Agent Rules"/>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkDeleteAgentTargetRuleTestRedo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkDeleteAgentTargetRuleTestRedo.metaabm
index 84867ae..f8ace98 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkDeleteAgentTargetRuleTestRedo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkDeleteAgentTargetRuleTestRedo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -15,9 +15,21 @@
       <members xsi:type="act:ARule" label="Root Context Agent Rule" ID="rootContextAgentRule" selected="//@agents[ID='rootContextAgent']/@rootActivity/@members[ID='rootContextAgentRule']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Root Context Agent Rules"/>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkDeleteAgentTargetRuleTestUndo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkDeleteAgentTargetRuleTestUndo.metaabm
index 2f88d5c..c024ee4 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkDeleteAgentTargetRuleTestUndo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkDeleteAgentTargetRuleTestUndo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:function="http://metaabm.org/function" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -20,9 +20,21 @@
       </members>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentAttrTest.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentAttrTest.metaabm
index dbf15c8..6814f5f 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentAttrTest.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentAttrTest.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:function="http://metaabm.org/function" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -19,9 +19,21 @@
       </members>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentAttrTestComp.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentAttrTestComp.metaabm
index dbf15c8..6814f5f 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentAttrTestComp.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentAttrTestComp.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:function="http://metaabm.org/function" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -19,9 +19,21 @@
       </members>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentAttrTestDo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentAttrTestDo.metaabm
index dbf15c8..6814f5f 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentAttrTestDo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentAttrTestDo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:function="http://metaabm.org/function" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -19,9 +19,21 @@
       </members>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentAttrTestRedo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentAttrTestRedo.metaabm
index dbf15c8..6814f5f 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentAttrTestRedo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentAttrTestRedo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:function="http://metaabm.org/function" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -19,9 +19,21 @@
       </members>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentAttrTestUndo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentAttrTestUndo.metaabm
index 2f88d5c..c024ee4 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentAttrTestUndo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentAttrTestUndo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:function="http://metaabm.org/function" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -20,9 +20,21 @@
       </members>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentMemberRuleTest.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentMemberRuleTest.metaabm
index 84867ae..f8ace98 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentMemberRuleTest.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentMemberRuleTest.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -15,9 +15,21 @@
       <members xsi:type="act:ARule" label="Root Context Agent Rule" ID="rootContextAgentRule" selected="//@agents[ID='rootContextAgent']/@rootActivity/@members[ID='rootContextAgentRule']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Root Context Agent Rules"/>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentMemberRuleTestComp.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentMemberRuleTestComp.metaabm
index 84867ae..f8ace98 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentMemberRuleTestComp.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentMemberRuleTestComp.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -15,9 +15,21 @@
       <members xsi:type="act:ARule" label="Root Context Agent Rule" ID="rootContextAgentRule" selected="//@agents[ID='rootContextAgent']/@rootActivity/@members[ID='rootContextAgentRule']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Root Context Agent Rules"/>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentMemberRuleTestDo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentMemberRuleTestDo.metaabm
index 84867ae..f8ace98 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentMemberRuleTestDo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentMemberRuleTestDo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -15,9 +15,21 @@
       <members xsi:type="act:ARule" label="Root Context Agent Rule" ID="rootContextAgentRule" selected="//@agents[ID='rootContextAgent']/@rootActivity/@members[ID='rootContextAgentRule']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Root Context Agent Rules"/>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentMemberRuleTestRedo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentMemberRuleTestRedo.metaabm
index 84867ae..f8ace98 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentMemberRuleTestRedo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentMemberRuleTestRedo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -15,9 +15,21 @@
       <members xsi:type="act:ARule" label="Root Context Agent Rule" ID="rootContextAgentRule" selected="//@agents[ID='rootContextAgent']/@rootActivity/@members[ID='rootContextAgentRule']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Root Context Agent Rules"/>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentMemberRuleTestUndo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentMemberRuleTestUndo.metaabm
index 2f88d5c..c024ee4 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentMemberRuleTestUndo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentMemberRuleTestUndo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:function="http://metaabm.org/function" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -20,9 +20,21 @@
       </members>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTargetRuleTest.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTargetRuleTest.metaabm
index 84867ae..f8ace98 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTargetRuleTest.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTargetRuleTest.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -15,9 +15,21 @@
       <members xsi:type="act:ARule" label="Root Context Agent Rule" ID="rootContextAgentRule" selected="//@agents[ID='rootContextAgent']/@rootActivity/@members[ID='rootContextAgentRule']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Root Context Agent Rules"/>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTargetRuleTestComp.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTargetRuleTestComp.metaabm
index 84867ae..f8ace98 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTargetRuleTestComp.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTargetRuleTestComp.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -15,9 +15,21 @@
       <members xsi:type="act:ARule" label="Root Context Agent Rule" ID="rootContextAgentRule" selected="//@agents[ID='rootContextAgent']/@rootActivity/@members[ID='rootContextAgentRule']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Root Context Agent Rules"/>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTargetRuleTestDo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTargetRuleTestDo.metaabm
index 84867ae..f8ace98 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTargetRuleTestDo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTargetRuleTestDo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -15,9 +15,21 @@
       <members xsi:type="act:ARule" label="Root Context Agent Rule" ID="rootContextAgentRule" selected="//@agents[ID='rootContextAgent']/@rootActivity/@members[ID='rootContextAgentRule']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Root Context Agent Rules"/>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTargetRuleTestRedo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTargetRuleTestRedo.metaabm
index 84867ae..f8ace98 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTargetRuleTestRedo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTargetRuleTestRedo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -15,9 +15,21 @@
       <members xsi:type="act:ARule" label="Root Context Agent Rule" ID="rootContextAgentRule" selected="//@agents[ID='rootContextAgent']/@rootActivity/@members[ID='rootContextAgentRule']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Root Context Agent Rules"/>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTargetRuleTestUndo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTargetRuleTestUndo.metaabm
index 2f88d5c..c024ee4 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTargetRuleTestUndo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTargetRuleTestUndo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:function="http://metaabm.org/function" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -20,9 +20,21 @@
       </members>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTest.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTest.metaabm
index 3594831..d331ca6 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTest.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTest.metaabm
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -10,5 +10,11 @@
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTestComp.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTestComp.metaabm
index 3594831..d331ca6 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTestComp.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTestComp.metaabm
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -10,5 +10,11 @@
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTestDo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTestDo.metaabm
index 3594831..d331ca6 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTestDo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTestDo.metaabm
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -10,5 +10,11 @@
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTestRedo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTestRedo.metaabm
index 3594831..d331ca6 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTestRedo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTestRedo.metaabm
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -10,5 +10,11 @@
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTestUndo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTestUndo.metaabm
index 58a5e73..b2bcde7 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTestUndo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveAgentTestUndo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:function="http://metaabm.org/function" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextContexts'] //@rootActivity/@members[ID='createRootContextAgents']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -20,9 +20,21 @@
       </members>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveContextAttrTest.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveContextAttrTest.metaabm
index 557dfce..ce5d3e0 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveContextAttrTest.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveContextAttrTest.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:function="http://metaabm.org/function" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -19,9 +19,21 @@
       </members>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveContextAttrTestComp.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveContextAttrTestComp.metaabm
index 557dfce..ce5d3e0 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveContextAttrTestComp.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveContextAttrTestComp.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:function="http://metaabm.org/function" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -19,9 +19,21 @@
       </members>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveContextAttrTestDo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveContextAttrTestDo.metaabm
index 557dfce..ce5d3e0 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveContextAttrTestDo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveContextAttrTestDo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:function="http://metaabm.org/function" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -19,9 +19,21 @@
       </members>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveContextAttrTestRedo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveContextAttrTestRedo.metaabm
index 557dfce..ce5d3e0 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveContextAttrTestRedo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveContextAttrTestRedo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:function="http://metaabm.org/function" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -19,9 +19,21 @@
       </members>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveContextAttrTestUndo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveContextAttrTestUndo.metaabm
index 2f88d5c..c024ee4 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveContextAttrTestUndo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testAgentSinkInputsRemoveContextAttrTestUndo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:function="http://metaabm.org/function" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="Root C" ID="rootC" pluralLabel="Root Cs"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -20,9 +20,21 @@
       </members>
     </rootActivity>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testCreateSpaceAgentsFirstTest.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testCreateSpaceAgentsFirstTest.metaabm
index dda2996..bcfbf57 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testCreateSpaceAgentsFirstTest.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testCreateSpaceAgentsFirstTest.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts'] //@rootActivity/@members[ID='buildGrids']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -12,10 +12,22 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
   <projections xsi:type="metaabm:SGrid" label="Grid" ID="grid" pluralLabel="Grids"/>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testCreateSpaceAgentsFirstTestComp.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testCreateSpaceAgentsFirstTestComp.metaabm
index dda2996..bcfbf57 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testCreateSpaceAgentsFirstTestComp.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testCreateSpaceAgentsFirstTestComp.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts'] //@rootActivity/@members[ID='buildGrids']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -12,10 +12,22 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
   <projections xsi:type="metaabm:SGrid" label="Grid" ID="grid" pluralLabel="Grids"/>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testCreateSpaceAgentsFirstTestDo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testCreateSpaceAgentsFirstTestDo.metaabm
index dda2996..bcfbf57 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testCreateSpaceAgentsFirstTestDo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testCreateSpaceAgentsFirstTestDo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts'] //@rootActivity/@members[ID='buildGrids']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -12,10 +12,22 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
   <projections xsi:type="metaabm:SGrid" label="Grid" ID="grid" pluralLabel="Grids"/>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testCreateSpaceAgentsFirstTestRedo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testCreateSpaceAgentsFirstTestRedo.metaabm
index dda2996..bcfbf57 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testCreateSpaceAgentsFirstTestRedo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testCreateSpaceAgentsFirstTestRedo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts'] //@rootActivity/@members[ID='buildGrids']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -12,10 +12,22 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
   <projections xsi:type="metaabm:SGrid" label="Grid" ID="grid" pluralLabel="Grids"/>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testCreateSpaceAgentsFirstTestUndo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testCreateSpaceAgentsFirstTestUndo.metaabm
index 76f5747..8d483a6 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testCreateSpaceAgentsFirstTestUndo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testCreateSpaceAgentsFirstTestUndo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -11,9 +11,21 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridAddTest.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridAddTest.metaabm
index e8c36f9..7e2e8ea 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridAddTest.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridAddTest.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts'] //@rootActivity/@members[ID='buildGrids'] //@rootActivity/@members[ID='buildSpaces'] //@rootActivity/@members[ID='buildNetworks']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -14,10 +14,22 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
   <projections xsi:type="metaabm:SGrid" label="Grid" ID="grid" pluralLabel="Grids"/>
   <projections xsi:type="metaabm:SContinuousSpace" label="Space" ID="space" pluralLabel="Spaces"/>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridAddTestComp.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridAddTestComp.metaabm
index e8c36f9..7e2e8ea 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridAddTestComp.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridAddTestComp.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts'] //@rootActivity/@members[ID='buildGrids'] //@rootActivity/@members[ID='buildSpaces'] //@rootActivity/@members[ID='buildNetworks']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -14,10 +14,22 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
   <projections xsi:type="metaabm:SGrid" label="Grid" ID="grid" pluralLabel="Grids"/>
   <projections xsi:type="metaabm:SContinuousSpace" label="Space" ID="space" pluralLabel="Spaces"/>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridAddTestDo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridAddTestDo.metaabm
index e8c36f9..7e2e8ea 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridAddTestDo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridAddTestDo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts'] //@rootActivity/@members[ID='buildGrids'] //@rootActivity/@members[ID='buildSpaces'] //@rootActivity/@members[ID='buildNetworks']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -14,10 +14,22 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
   <projections xsi:type="metaabm:SGrid" label="Grid" ID="grid" pluralLabel="Grids"/>
   <projections xsi:type="metaabm:SContinuousSpace" label="Space" ID="space" pluralLabel="Spaces"/>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridAddTestRedo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridAddTestRedo.metaabm
index e8c36f9..7e2e8ea 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridAddTestRedo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridAddTestRedo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts'] //@rootActivity/@members[ID='buildGrids'] //@rootActivity/@members[ID='buildSpaces'] //@rootActivity/@members[ID='buildNetworks']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -14,10 +14,22 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
   <projections xsi:type="metaabm:SGrid" label="Grid" ID="grid" pluralLabel="Grids"/>
   <projections xsi:type="metaabm:SContinuousSpace" label="Space" ID="space" pluralLabel="Spaces"/>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridAddTestUndo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridAddTestUndo.metaabm
index 0041a7d..c651bd1 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridAddTestUndo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridAddTestUndo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts'] //@rootActivity/@members[ID='buildGrids'] //@rootActivity/@members[ID='buildSpaces']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -13,10 +13,22 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
   <projections xsi:type="metaabm:SGrid" label="Grid" ID="grid" pluralLabel="Grids"/>
   <projections xsi:type="metaabm:SContinuousSpace" label="Space" ID="space" pluralLabel="Spaces"/>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridSetDimsTest.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridSetDimsTest.metaabm
index 33a3ce2..2e5ecb3 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridSetDimsTest.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridSetDimsTest.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts'] //@rootActivity/@members[ID='buildGrids'] //@rootActivity/@members[ID='buildSpaces'] //@rootActivity/@members[ID='buildNetworks']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -14,15 +14,27 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
   <projections xsi:type="metaabm:SGrid" label="Grid 3D" ID="grid3D" pluralLabel="Grid 3Ds" dimensionality="3">
-    <attributes label="X Extent" ID="xExtent" pluralLabel="X Extents" description="The horizontal extent of the space." sType="INTEGER"/>
-    <attributes label="Y Extent" ID="yExtent" pluralLabel="Y Extents" description="The vertical extent of the space." sType="INTEGER"/>
-    <attributes label="Z Extent" ID="zExtent" pluralLabel="Z Extents" description="The depth extent of the space." sType="INTEGER"/>
+    <attributes label="X Extent" ID="xExtent" pluralLabel="X Extents" description="The horizontal extent of the space."/>
+    <attributes label="Y Extent" ID="yExtent" pluralLabel="Y Extents" description="The vertical extent of the space."/>
+    <attributes label="Z Extent" ID="zExtent" pluralLabel="Z Extents" description="The depth extent of the space."/>
   </projections>
   <projections xsi:type="metaabm:SContinuousSpace" label="Space" ID="space" pluralLabel="Spaces"/>
   <projections xsi:type="metaabm:SNetwork" label="Network" ID="network" pluralLabel="Networks"/>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridSetDimsTestComp.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridSetDimsTestComp.metaabm
index 33a3ce2..2e5ecb3 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridSetDimsTestComp.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridSetDimsTestComp.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts'] //@rootActivity/@members[ID='buildGrids'] //@rootActivity/@members[ID='buildSpaces'] //@rootActivity/@members[ID='buildNetworks']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -14,15 +14,27 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
   <projections xsi:type="metaabm:SGrid" label="Grid 3D" ID="grid3D" pluralLabel="Grid 3Ds" dimensionality="3">
-    <attributes label="X Extent" ID="xExtent" pluralLabel="X Extents" description="The horizontal extent of the space." sType="INTEGER"/>
-    <attributes label="Y Extent" ID="yExtent" pluralLabel="Y Extents" description="The vertical extent of the space." sType="INTEGER"/>
-    <attributes label="Z Extent" ID="zExtent" pluralLabel="Z Extents" description="The depth extent of the space." sType="INTEGER"/>
+    <attributes label="X Extent" ID="xExtent" pluralLabel="X Extents" description="The horizontal extent of the space."/>
+    <attributes label="Y Extent" ID="yExtent" pluralLabel="Y Extents" description="The vertical extent of the space."/>
+    <attributes label="Z Extent" ID="zExtent" pluralLabel="Z Extents" description="The depth extent of the space."/>
   </projections>
   <projections xsi:type="metaabm:SContinuousSpace" label="Space" ID="space" pluralLabel="Spaces"/>
   <projections xsi:type="metaabm:SNetwork" label="Network" ID="network" pluralLabel="Networks"/>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridSetDimsTestDo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridSetDimsTestDo.metaabm
index 33a3ce2..2e5ecb3 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridSetDimsTestDo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridSetDimsTestDo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts'] //@rootActivity/@members[ID='buildGrids'] //@rootActivity/@members[ID='buildSpaces'] //@rootActivity/@members[ID='buildNetworks']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -14,15 +14,27 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
   <projections xsi:type="metaabm:SGrid" label="Grid 3D" ID="grid3D" pluralLabel="Grid 3Ds" dimensionality="3">
-    <attributes label="X Extent" ID="xExtent" pluralLabel="X Extents" description="The horizontal extent of the space." sType="INTEGER"/>
-    <attributes label="Y Extent" ID="yExtent" pluralLabel="Y Extents" description="The vertical extent of the space." sType="INTEGER"/>
-    <attributes label="Z Extent" ID="zExtent" pluralLabel="Z Extents" description="The depth extent of the space." sType="INTEGER"/>
+    <attributes label="X Extent" ID="xExtent" pluralLabel="X Extents" description="The horizontal extent of the space."/>
+    <attributes label="Y Extent" ID="yExtent" pluralLabel="Y Extents" description="The vertical extent of the space."/>
+    <attributes label="Z Extent" ID="zExtent" pluralLabel="Z Extents" description="The depth extent of the space."/>
   </projections>
   <projections xsi:type="metaabm:SContinuousSpace" label="Space" ID="space" pluralLabel="Spaces"/>
   <projections xsi:type="metaabm:SNetwork" label="Network" ID="network" pluralLabel="Networks"/>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridSetDimsTestRedo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridSetDimsTestRedo.metaabm
index 33a3ce2..2e5ecb3 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridSetDimsTestRedo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridSetDimsTestRedo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts'] //@rootActivity/@members[ID='buildGrids'] //@rootActivity/@members[ID='buildSpaces'] //@rootActivity/@members[ID='buildNetworks']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -14,15 +14,27 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
   <projections xsi:type="metaabm:SGrid" label="Grid 3D" ID="grid3D" pluralLabel="Grid 3Ds" dimensionality="3">
-    <attributes label="X Extent" ID="xExtent" pluralLabel="X Extents" description="The horizontal extent of the space." sType="INTEGER"/>
-    <attributes label="Y Extent" ID="yExtent" pluralLabel="Y Extents" description="The vertical extent of the space." sType="INTEGER"/>
-    <attributes label="Z Extent" ID="zExtent" pluralLabel="Z Extents" description="The depth extent of the space." sType="INTEGER"/>
+    <attributes label="X Extent" ID="xExtent" pluralLabel="X Extents" description="The horizontal extent of the space."/>
+    <attributes label="Y Extent" ID="yExtent" pluralLabel="Y Extents" description="The vertical extent of the space."/>
+    <attributes label="Z Extent" ID="zExtent" pluralLabel="Z Extents" description="The depth extent of the space."/>
   </projections>
   <projections xsi:type="metaabm:SContinuousSpace" label="Space" ID="space" pluralLabel="Spaces"/>
   <projections xsi:type="metaabm:SNetwork" label="Network" ID="network" pluralLabel="Networks"/>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridSetDimsTestUndo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridSetDimsTestUndo.metaabm
index e8c36f9..7e2e8ea 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridSetDimsTestUndo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testGridSetDimsTestUndo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts'] //@rootActivity/@members[ID='buildGrids'] //@rootActivity/@members[ID='buildSpaces'] //@rootActivity/@members[ID='buildNetworks']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -14,10 +14,22 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
   <projections xsi:type="metaabm:SGrid" label="Grid" ID="grid" pluralLabel="Grids"/>
   <projections xsi:type="metaabm:SContinuousSpace" label="Space" ID="space" pluralLabel="Spaces"/>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testRemoveAgentsTest.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testRemoveAgentsTest.metaabm
index 29a456f..c048a43 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testRemoveAgentsTest.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testRemoveAgentsTest.metaabm
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Contexts" ID="createRootContextContexts" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextContext']" agentCount="//@attributes[ID='rootContextContextCount']"/>
@@ -9,5 +9,11 @@
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testRemoveAgentsTestComp.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testRemoveAgentsTestComp.metaabm
index 29a456f..c048a43 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testRemoveAgentsTestComp.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testRemoveAgentsTestComp.metaabm
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Contexts" ID="createRootContextContexts" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextContext']" agentCount="//@attributes[ID='rootContextContextCount']"/>
@@ -9,5 +9,11 @@
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testRemoveAgentsTestDo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testRemoveAgentsTestDo.metaabm
index 29a456f..c048a43 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testRemoveAgentsTestDo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testRemoveAgentsTestDo.metaabm
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Contexts" ID="createRootContextContexts" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextContext']" agentCount="//@attributes[ID='rootContextContextCount']"/>
@@ -9,5 +9,11 @@
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testRemoveAgentsTestRedo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testRemoveAgentsTestRedo.metaabm
index 29a456f..c048a43 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testRemoveAgentsTestRedo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testRemoveAgentsTestRedo.metaabm
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Contexts" ID="createRootContextContexts" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextContext']" agentCount="//@attributes[ID='rootContextContextCount']"/>
@@ -9,5 +9,11 @@
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testRemoveAgentsTestUndo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testRemoveAgentsTestUndo.metaabm
index b26b93b..ebccfed 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testRemoveAgentsTestUndo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testRemoveAgentsTestUndo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextContexts'] //@rootActivity/@members[ID='createRootContextAgents']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
     <members xsi:type="act:ACreateAgents" label="Create Root Context Agents" ID="createRootContextAgents" sources="//@rootActivity/@members[ID='buildRootContext']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="//@agents[ID='rootContextAgent']" agentCount="//@attributes[ID='rootContextAgentCount']"/>
@@ -11,9 +11,21 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testSinkInputsTest.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testSinkInputsTest.metaabm
index a15f7e3..35cd5d6 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testSinkInputsTest.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testSinkInputsTest.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="A" ID="a" pluralLabel="As"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -19,9 +19,21 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testSinkInputsTestComp.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testSinkInputsTestComp.metaabm
index a15f7e3..35cd5d6 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testSinkInputsTestComp.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testSinkInputsTestComp.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="A" ID="a" pluralLabel="As"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -19,9 +19,21 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testSinkInputsTestDo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testSinkInputsTestDo.metaabm
index a15f7e3..35cd5d6 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testSinkInputsTestDo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testSinkInputsTestDo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="A" ID="a" pluralLabel="As"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -19,9 +19,21 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testSinkInputsTestRedo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testSinkInputsTestRedo.metaabm
index a15f7e3..35cd5d6 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testSinkInputsTestRedo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testSinkInputsTestRedo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="A" ID="a" pluralLabel="As"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -19,9 +19,21 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testSinkInputsTestUndo.metaabm b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testSinkInputsTestUndo.metaabm
index 8e45c6c..3248209 100644
--- a/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testSinkInputsTestUndo.metaabm
+++ b/org.eclipse.amp.amf/tests/org.eclipse.amp.amf.acore.edit.test/test/results/testSinkInputsTestUndo.metaabm
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
 <metaabm:SContext xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:act="http://metaabm.org/act" xmlns:metaabm="http://metaabm.org/structure" label="Root Context" ID="rootContext" pluralLabel="Root Contexts">
-  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create." sType="INTEGER"/>
-  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create." sType="INTEGER"/>
+  <attributes label="Root Context Agent Count" ID="rootContextAgentCount" pluralLabel="Root Context Agent Counts" description="The number of root context agents to create."/>
+  <attributes label="Root Context Context Count" ID="rootContextContextCount" pluralLabel="Root Context Context Counts" description="The number of root context contexts to create."/>
   <attributes label="A" ID="a" pluralLabel="As"/>
   <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
     <members xsi:type="act:ABuild" label="Build Root Context" ID="buildRootContext" targets="//@rootActivity/@members[ID='createRootContextAgents'] //@rootActivity/@members[ID='createRootContextContexts']" selected="//@rootActivity/@members[ID='buildRootContext']" agent="/" pluralLabel="Build Root Contexts"/>
@@ -17,9 +17,21 @@
   <agents label="Root Context Agent" ID="rootContextAgent" pluralLabel="Root Context Agents">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextAgent"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Agent Style 2D" ID="rootContextAgentStyle2D" pluralLabel="Root Context Agent Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Agent Style" ID="defaultRootContextAgentStyle" selected="//@agents[ID='rootContextAgent']/@styles[ID='rootContextAgentStyle2D']/@rootActivity/@members[ID='defaultRootContextAgentStyle']" agent="//@agents[ID='rootContextAgent']" pluralLabel="Default Root Context Agent Styles"/>
+      </rootActivity>
+      <implementation className="RootContextAgentStyle2D"/>
+    </styles>
   </agents>
   <agents xsi:type="metaabm:SContext" label="Root Context Context" ID="rootContextContext" pluralLabel="Root Context Contexts">
     <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss"/>
     <implementation className="RootContextContext"/>
+    <styles xsi:type="metaabm:SStyle2D" label="Root Context Context Style 2D" ID="rootContextContextStyle2D" pluralLabel="Root Context Context Style 2Ds">
+      <rootActivity xsi:type="act:AGroup" label="Actions" ID="actions" pluralLabel="Actionss">
+        <members xsi:type="act:ARule" label="Default Root Context Context Style" ID="defaultRootContextContextStyle" selected="//@agents[ID='rootContextContext']/@styles[ID='rootContextContextStyle2D']/@rootActivity/@members[ID='defaultRootContextContextStyle']" agent="//@agents[ID='rootContextContext']" pluralLabel="Default Root Context Context Styles"/>
+      </rootActivity>
+      <implementation className="RootContextContextStyle2D"/>
+    </styles>
   </agents>
 </metaabm:SContext>
diff --git a/org.eclipse.amp.axf/features/org.eclipse.amp.axf-feature/feature.xml b/org.eclipse.amp.axf/features/org.eclipse.amp.axf-feature/feature.xml
index 1a9fa8e..b93964e 100644
--- a/org.eclipse.amp.axf/features/org.eclipse.amp.axf-feature/feature.xml
+++ b/org.eclipse.amp.axf/features/org.eclipse.amp.axf-feature/feature.xml
@@ -18,10 +18,6 @@
       %license
    </license>
 
-   <url>
-      <update label="%AMPUpdateSiteName" url="http://download.eclipse.org/amp/updates/releases/indigo"/>
-   </url>
-
    <requires>
       <import plugin="org.eclipse.core.runtime"/>
       <import plugin="org.eclipse.core.commands"/>
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/.classpath b/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/.classpath
deleted file mode 100644
index 13116da..0000000
--- a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/.classpath
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/META-INF/MANIFEST.MF b/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/META-INF/MANIFEST.MF
deleted file mode 100644
index 4eef267..0000000
--- a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,23 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Test AXF IDE
-Bundle-SymbolicName: org.eclipse.amp.axf.ide.test;singleton:=true
-Bundle-Version: 0.9.0
-Fragment-Host: org.eclipse.amp.axf.ide
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.amp.axf.ide,
- org.eclipse.swtbot.eclipse.finder,
- org.eclipse.swtbot.swt.finder,
- org.eclipse.core.resources,
- org.eclipse.amp.axf.core,
- org.eclipse.amp.axf.views,
- org.eclipse.amp.agf.chart,
- org.eclipse.amp.agf.core,
- org.eclipse.amp.agf.ide,
- org.eclipse.amp.escape.ide,
- org.eclipse.amp.escape.ascape,
- org.ascape.core,
- org.junit;bundle-version="4.8.1"
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/test/ModelMangementTest.java b/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/test/ModelMangementTest.java
deleted file mode 100644
index 6f08d64..0000000
--- a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/test/ModelMangementTest.java
+++ /dev/null
@@ -1,447 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2009 Metascape, LLC.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *   Metascape - Initial API and Implementation
- *
- * </copyright>
- *
- */
-
-package org.eclipse.amp.axf.ide.test;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.StringBufferInputStream;
-import java.net.URL;
-import java.util.List;
-
-import junit.framework.TestCase;
-
-import org.eclipse.amp.axf.core.AbstractLifecycleListener;
-import org.eclipse.amp.axf.core.IModel;
-import org.eclipse.amp.axf.core.IObservationProvider;
-import org.eclipse.amp.axf.ide.ModelViewManager;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
-import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
-import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotMenu;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.PlatformUI;
-import org.osgi.framework.Bundle;
-
-/**
- * 
- * @author mparker
- * 
- */
-@SuppressWarnings("deprecation")
-public class ModelMangementTest extends TestCase {
-
-	String testProjectName = "test.escape";
-
-	public static InputStream streamFromPlugin(String pluginID, String path) {
-		try {
-			Bundle bundle = Platform.getBundle(pluginID);
-			URL entry = bundle.getEntry(path);
-			if (entry == null) {
-				throw new RuntimeException("No resource:" + path + " found in plugin: " + pluginID);
-			}
-			return entry.openStream();
-		} catch (IOException e) {
-			throw new RuntimeException("Couldn't load project resource from plugin.", e);
-		}
-	}
-
-	public static void copyFiles(String srcPluginID, String srcFileLoc, String destProjectName, String destFileLoc) throws CoreException, IOException {
-		InputStream srcStream = streamFromPlugin(srcPluginID, srcFileLoc.toString());
-		BufferedReader srcReader = new BufferedReader(new InputStreamReader(srcStream));
-		StringBuffer buffer = new StringBuffer();
-		String next = srcReader.readLine();
-		while (next != null) {
-			buffer.append(next + "\r\n");
-			next = srcReader.readLine();
-		}
-		String parsedText = buffer.toString();
-		InputStream is = new StringBufferInputStream(parsedText);
-		IFile destFile = ResourcesPlugin.getWorkspace().getRoot().getProject(destProjectName).getFile(destFileLoc);
-		destFile.create(is, true, null);
-	}
-
-	/**
-	 * In future you will not need to create this instance. You need to extend
-	 * SWTBotEclipseTestCase which holds an instance of SWTEclipseBot.
-	 */
-	protected SWTWorkbenchBot bot = new SWTWorkbenchBot();
-
-	/**
-	 * @return
-	 * @throws WidgetNotFoundException
-	 */
-	private SWTBotTree tree() throws WidgetNotFoundException {
-		return packageExplorer().bot().tree();
-	}
-
-	/**
-	 * @return
-	 * @throws WidgetNotFoundException
-	 */
-	private SWTBotView packageExplorer() throws WidgetNotFoundException {
-		return bot.viewByTitle("Package Explorer");
-	}
-
-	// protected void setUp() throws Exception {
-	// super.setUp();
-	// setupProject();
-	// }
-
-	public void testOne() {
-		setupProject();
-		assertEquals(gefViews().size(), 0);
-		assertTrue(activeModel() == null);
-		launchModel();
-		assertEquals(gefViews().size(), 1);
-		IModel model1 = activeModel();
-		subtestPauseResumeStopStartRestart(model1);
-		control().menu("Close").click();
-		bot.sleep(2000);
-		assertTrue(!model1.getEngine().isRunning());
-		assertEquals(manager().getModels().size(), 0);
-		assertNull("Model: " + activeModel(), activeModel());
-		assertEquals(gefViews().size(), 0);
-	}
-
-	public void testCloseOne() {
-		setupProject();
-		bot.sleep(2000);
-		// start new
-		launchModel();
-		bot.sleep(4000);
-		IModel modelA_1 = activeModel();
-		assertNotNull(modelA_1);
-
-		subtestCloseViews(modelA_1);
-		SWTBotView swtGraphicsView = gefViews().get(0);
-		swtGraphicsView.close();
-		bot.sleep(3000);
-		IModel iModel = manager().getModels().get(0);
-		assertTrue(iModel.getPeriod() + "too big!", iModel.getPeriod() < 500);
-		control().menu("Close").click();
-		bot.sleep(3000);
-
-		// start new
-		launchModel();
-		IModel modelA_1_2 = activeModel();
-		assertNotNull(modelA_1_2);
-		subtestCloseViews(modelA_1_2);
-		SWTBotView swtChartView = chartViews().get(0);
-		swtChartView.close();
-		bot.sleep(3000);
-		IModel iModel2 = manager().getModels().get(0);
-		assertTrue(iModel2.getPeriod() + "too big!", iModel2.getPeriod() < 500);
-		control().menu("Close").click();
-
-		bot.sleep(3000);
-
-		modelA_1 = activeModel();
-		assertNull(modelA_1);
-
-		assertEquals(manager().getModels().size(), 0);
-	}
-
-	private void subtestCloseViews(IModel modelA_1) {
-		List<IViewPart> viewsA_1 = manager().getViews(modelA_1);
-		assertEquals(viewsA_1.size(), 2);
-		IViewPart chartView = viewsA_1.get(0);
-		assertEquals(chartView.getTitle(), "Demographic Prisoner_s Dilemma Chart View");
-		IViewPart gefView = viewsA_1.get(1);
-		assertEquals(gefView.getTitle(), "Demographic Prisoner_s Dilemma Graphic View");
-	}
-
-	public void testTwo() {
-		setupProject();
-		bot.sleep(2000);
-		// start new
-		launchModel();
-		IModel modelA_1 = activeModel();
-		assertNotNull(modelA_1);
-		assertEquals(gefViews().size(), 1);
-
-		// start another
-		launchModel();
-		IModel modelA_2 = activeModel();
-		subtestPauseResumeStopStartRestart(modelA_2);
-		assertNotSame(modelA_1, modelA_2);
-		assertEquals(gefViews().size(), 2);
-
-		List<IViewPart> viewsA_1 = manager().getViews(modelA_1);
-		assertEquals(viewsA_1.size(), 2);
-		activateView(viewsA_1);
-		bot.sleep(2000);
-		assertEquals(activeModel(), modelA_1);
-
-		control().menu("Pause").click();
-		bot.sleep(1000);
-		assertTrue(activeModel().getEngine().isPaused());
-
-		List<IViewPart> viewsA_2 = manager().getViews(modelA_2);
-		assertEquals(viewsA_2.size(), 2);
-		activateView(viewsA_2);
-		bot.sleep(2000);
-		assertEquals(activeModel(), modelA_2);
-		assertTrue(!activeModel().getEngine().isPaused());
-
-		activateView(viewsA_1);
-		bot.sleep(2000);
-		assertTrue(activeModel().getEngine().isPaused());
-
-		// rapid cycle
-		for (int i = 0; i < 4; i++) {
-			activateView(viewsA_1);
-			bot.sleep(1000);
-			assertEquals(activeModel(), modelA_1);
-			assertTrue(control().menu("Restart").isEnabled());
-			assertTrue(!control().menu("Pause").isEnabled());
-			assertTrue(control().menu("Stop").isEnabled());
-			assertTrue(control().menu("Resume").isEnabled());
-			assertTrue(!control().menu("Start").isEnabled());
-			activateView(viewsA_2);
-			bot.sleep(500);
-			assertEquals(activeModel(), modelA_2);
-			assertTrue(control().menu("Restart").isEnabled());
-			assertTrue(control().menu("Pause").isEnabled());
-			assertTrue(control().menu("Stop").isEnabled());
-			assertTrue(!control().menu("Resume").isEnabled());
-			assertTrue(!control().menu("Start").isEnabled());
-		}
-
-		control().menu("Close").click();
-		bot.sleep(4000);
-		assertEquals(manager().getModels().size(), 1);
-		assertTrue(manager().getActiveModel() == modelA_1);
-		assertEquals(gefViews().size(), 1);
-		activateView(viewsA_1);
-		assertTrue(control().menu("Restart").isEnabled());
-		assertTrue(!control().menu("Pause").isEnabled());
-		assertTrue(control().menu("Stop").isEnabled());
-		assertTrue(control().menu("Resume").isEnabled());
-		assertTrue(!control().menu("Start").isEnabled());
-		control().menu("Resume").click();
-		bot.sleep(1500);
-		subTestPauseResume(modelA_1);
-		subTestStopStartRestart(modelA_1);
-		control().menu("Close").click();
-		bot.sleep(2000);
-		assertEquals(gefViews().size(), 0);
-		assertEquals(manager().getModels().size(), 0);
-		assertNull(manager().getActiveModel());
-	}
-
-	public void testStopPause() {
-		setupProject();
-		bot.sleep(2000);
-		// start new
-		launchModel();
-		IModel modelA_1 = activeModel();
-		control().menu("Pause").click();
-		bot.sleep(1000);
-		assertTrue(activeModel().getEngine().isPaused());
-
-		// start another
-		launchModel();
-
-		control().menu("Close").click();
-		bot.sleep(2000);
-		assertTrue(activeModel().getEngine().isPaused());
-		assertEquals(activeModel(), modelA_1);
-		assertEquals(manager().getModels().size(), 1);
-		assertTrue(control().menu("Restart").isEnabled());
-		assertTrue(!control().menu("Pause").isEnabled());
-		assertTrue(control().menu("Stop").isEnabled());
-		assertTrue(control().menu("Resume").isEnabled());
-		assertTrue(!control().menu("Start").isEnabled());
-
-		control().menu("Close").click();
-		bot.sleep(2000);
-		assertNull(manager().getActiveModel());
-		assertNull(control().menu("Restart"));
-	}
-
-	public void testStopTwo() {
-		setupProject();
-		bot.sleep(2000);
-		// start new
-		launchModel();
-		IModel modelA_1 = activeModel();
-
-		// start another
-		launchModel();
-		IModel modelA_2 = activeModel();
-
-		control().menu("Close").click();
-		bot.sleep(2000);
-		assertEquals(activeModel(), modelA_1);
-		assertEquals(manager().getModels().size(), 1);
-		assertTrue(modelA_1.getEngine().isRunning());
-		assertFalse(modelA_2.getEngine().isRunning());
-		if (!control().menu("Restart").isEnabled()) {
-			assertTrue(control().menu("Restart").isEnabled());
-		}
-		assertTrue(control().menu("Pause").isEnabled());
-		assertTrue(control().menu("Stop").isEnabled());
-		assertTrue(!control().menu("Resume").isEnabled());
-		assertTrue(!control().menu("Start").isEnabled());
-
-		control().menu("Close").click();
-		bot.sleep(2000);
-		assertNull(manager().getActiveModel());
-		assertTrue(control() == null || control().menu("Start") == null);
-	}
-
-	private void launchModel() {
-		tree().setFocus();
-		tree().select(testProjectName);
-		SWTBotTreeItem projectNode = tree().expandNode(testProjectName);
-		bot.sleep(2000);
-		projectNode.expandNode("TestModel.metaabm").doubleClick();
-		packageExplorer().setFocus();
-		bot.sleep(2000);
-
-		control().menu("Execute").click();
-		bot.sleep(4000);
-	}
-
-	int count;
-
-	public void utestWorkbenchModelListeners() {
-		count = 0;
-		manager().getActiveModelListeners().addListener(new AbstractLifecycleListener() {
-			Object model;
-
-			public void observing(IObservationProvider observed) {
-				if (model != null) {
-					fail("More than one model listened to.");
-				}
-				model = observed;
-				count++;
-			}
-
-			public void observationEnd(IObservationProvider observed) {
-				model = null;
-			}
-
-			public void stateChange(Object key, Object updated) {
-				super.stateChange(key, updated);
-				assertTrue(updated == model || updated == null);
-			}
-		});
-		launchModel();
-		launchModel();
-		assertEquals(count, 2);
-	}
-
-	private void activateView(final List<IViewPart> views) {
-		Display.getDefault().asyncExec(new Runnable() {
-
-			public void run() {
-				PlatformUI.getWorkbench().getWorkbenchWindows()[0].getActivePage().activate(views.get(0));
-			}
-		});
-	}
-
-	private void subtestPauseResumeStopStartRestart(IModel model1) {
-		assertTrue(model1 != null);
-		assertTrue(model1.getEngine().isRunning());
-		for (int i = 0; i < 2; i++) {
-			subTestPauseResume(model1);
-		}
-		subTestStopStartRestart(model1);
-	}
-
-	private void subTestStopStartRestart(IModel model1) {
-		control().menu("Stop").click();
-		bot.sleep(2000);
-		assertTrue(!model1.getEngine().isRunning());
-		control().menu("Start").click();
-		bot.sleep(2000);
-		assertTrue(model1.getEngine().isRunning());
-		control().menu("Restart").click();
-		bot.sleep(2000);
-		assertTrue(model1.getEngine().isRunning());
-	}
-
-	private void subTestPauseResume(IModel model1) {
-		control().menu("Pause").click();
-		bot.sleep(1500);
-		assertTrue(model1.getEngine().isPaused());
-		control().menu("Resume").click();
-		bot.sleep(1500);
-		assertTrue(!model1.getEngine().isPaused());
-	}
-
-	private List<SWTBotView> gefViews() {
-		return null;
-		// return
-		// bot.views(WidgetMatcherFactory.withPartName("Demographic Prisoner_s Dilemma Graphic View"));
-	}
-
-	private List<SWTBotView> chartViews() {
-		return null;
-		// return
-		// bot.views(WidgetMatcherFactory.withPartName("Demographic Prisoner_s Dilemma Chart View"));
-	}
-
-	private SWTBotMenu control() {
-		return bot.menu("Control");
-	}
-
-	public static ModelViewManager manager() {
-		return ModelViewManager.getInstance();
-	}
-
-	public static IModel activeModel() {
-		return (IModel) manager().getActiveModel();
-	}
-
-	private void setupProject() {
-		// bot.viewByTitle("Welcome").close();
-		bot.perspectiveByLabel("Agent Modeling").activate();
-		bot.viewByTitle("Package Explorer").setFocus();
-		try {
-			tree().expandNode(testProjectName);
-		} catch (WidgetNotFoundException e) {
-			bot.sleep(3000);
-			bot.menu("File").menu("New").menu("Escape Project").click();
-			// 'com.swtbot.test.project' is the java project name to create
-
-			bot.text(0).setText(testProjectName);
-			// Click the Finish button
-
-			bot.button("Finish").click();
-			try {
-				copyFiles("org.eclipse.amp.axf.ide.test", "res/TestModel.metaabm", testProjectName, "TestModel.metaabm");
-			} catch (CoreException e1) {
-				throw new RuntimeException(e1);
-			} catch (IOException e1) {
-				throw new RuntimeException(e1);
-			}
-			bot.sleep(5000);
-		}
-	}
-
-}
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide/META-INF/MANIFEST.MF b/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide/META-INF/MANIFEST.MF
index dfe6cff..12ed61e 100644
--- a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide/META-INF/MANIFEST.MF
+++ b/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide/META-INF/MANIFEST.MF
@@ -10,8 +10,7 @@
  org.eclipse.ui,
  org.eclipse.core.expressions,
  org.eclipse.amp.axf.core,
- org.eclipse.amp.axf.views,
- org.junit;bundle-version="4.8.1"
+ org.eclipse.amp.axf.views
 Export-Package: org.eclipse.amp.axf.ide,
    org.eclipse.amp.axf.ide.handlers,
  org.eclipse.amp.axf.ide.view
diff --git a/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/.classpath b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/.classpath
new file mode 100644
index 0000000..a7d4b62
--- /dev/null
+++ b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/.project b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/.project
similarity index 100%
rename from org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/.project
rename to org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/.project
diff --git a/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/META-INF/MANIFEST.MF b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..5210e1f
--- /dev/null
+++ b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Test AXF IDE
+Bundle-SymbolicName: org.eclipse.amp.axf.ide.test;singleton:=true
+Bundle-Version: 0.9.0
+Fragment-Host: org.eclipse.amp.axf.ide
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.amp.axf.ide,
+ org.eclipse.swtbot.eclipse.finder,
+ org.eclipse.swtbot.swt.finder,
+ org.eclipse.core.resources,
+ org.eclipse.amp.axf.core,
+ org.eclipse.amp.axf.views,
+ org.eclipse.amp.agf.chart,
+ org.eclipse.amp.agf.core,
+ org.eclipse.amp.agf.ide,
+ org.eclipse.amp.escape.ide,
+ org.eclipse.amp.escape.ascape,
+ org.ascape.core,
+ org.eclipse.jdt.junit;bundle-version="3.7.0",
+ org.junit;bundle-version="3.8.2"
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/about.html b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/about.html
similarity index 100%
rename from org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/about.html
rename to org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/about.html
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/build.properties b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/build.properties
similarity index 100%
rename from org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/build.properties
rename to org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/build.properties
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/res/TestModel.apar b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/res/TestModel.apar
similarity index 100%
rename from org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/res/TestModel.apar
rename to org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/res/TestModel.apar
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/res/TestModel.atest b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/res/TestModel.atest
similarity index 100%
rename from org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/res/TestModel.atest
rename to org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/res/TestModel.atest
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/res/TestModel.metaabm b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/res/TestModel.metaabm
similarity index 100%
rename from org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/res/TestModel.metaabm
rename to org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/res/TestModel.metaabm
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/EngineStateServiceTest.java b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/EngineStateServiceTest.java
similarity index 100%
rename from org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/EngineStateServiceTest.java
rename to org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/EngineStateServiceTest.java
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/CloseHandlerTest.java b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/CloseHandlerTest.java
similarity index 100%
rename from org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/CloseHandlerTest.java
rename to org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/CloseHandlerTest.java
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/ModelRunHandlerTest.java b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/ModelRunHandlerTest.java
similarity index 100%
rename from org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/ModelRunHandlerTest.java
rename to org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/ModelRunHandlerTest.java
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/PauseHandlerTest.java b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/PauseHandlerTest.java
similarity index 100%
rename from org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/PauseHandlerTest.java
rename to org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/PauseHandlerTest.java
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/RestartHandlerTest.java b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/RestartHandlerTest.java
similarity index 100%
rename from org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/RestartHandlerTest.java
rename to org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/RestartHandlerTest.java
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/ResumeHandlerTest.java b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/ResumeHandlerTest.java
similarity index 100%
rename from org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/ResumeHandlerTest.java
rename to org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/ResumeHandlerTest.java
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/StartHandlerTest.java b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/StartHandlerTest.java
similarity index 100%
rename from org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/StartHandlerTest.java
rename to org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/StartHandlerTest.java
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/StepHandlerTest.java b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/StepHandlerTest.java
similarity index 100%
rename from org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/StepHandlerTest.java
rename to org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/StepHandlerTest.java
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/StopHandlerTest.java b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/StopHandlerTest.java
similarity index 100%
rename from org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/StopHandlerTest.java
rename to org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/handlers/StopHandlerTest.java
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/test/Activator.java b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/test/Activator.java
similarity index 100%
rename from org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/test/Activator.java
rename to org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/test/Activator.java
diff --git a/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/test/ModelMangementTest.java b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/test/ModelMangementTest.java
new file mode 100644
index 0000000..8195d12
--- /dev/null
+++ b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/test/ModelMangementTest.java
@@ -0,0 +1,449 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2009 Metascape, LLC.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Metascape - Initial API and Implementation
+ *
+ * </copyright>
+ *
+ */
+
+package org.eclipse.amp.axf.ide.test;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.StringBufferInputStream;
+import java.net.URL;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.eclipse.amp.axf.core.AbstractLifecycleListener;
+import org.eclipse.amp.axf.core.IModel;
+import org.eclipse.amp.axf.core.IObservationProvider;
+import org.eclipse.amp.axf.ide.ModelViewManager;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
+import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotMenu;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.PlatformUI;
+import org.osgi.framework.Bundle;
+
+/**
+ * 
+ * @author mparker
+ * 
+ */
+@SuppressWarnings("deprecation")
+public class ModelMangementTest extends TestCase {
+
+	String testProjectName = "test.escape";
+
+	public static InputStream streamFromPlugin(String pluginID, String path) {
+		try {
+			Bundle bundle = Platform.getBundle(pluginID);
+			URL entry = bundle.getEntry(path);
+			if (entry == null) {
+				throw new RuntimeException("No resource:" + path + " found in plugin: " + pluginID);
+			}
+			return entry.openStream();
+		} catch (IOException e) {
+			throw new RuntimeException("Couldn't load project resource from plugin.", e);
+		}
+	}
+
+	public static void copyFiles(String srcPluginID, String srcFileLoc, String destProjectName, String destFileLoc) throws CoreException, IOException {
+		InputStream srcStream = streamFromPlugin(srcPluginID, srcFileLoc.toString());
+		BufferedReader srcReader = new BufferedReader(new InputStreamReader(srcStream));
+		StringBuffer buffer = new StringBuffer();
+		String next = srcReader.readLine();
+		while (next != null) {
+			buffer.append(next + "\r\n");
+			next = srcReader.readLine();
+		}
+		String parsedText = buffer.toString();
+		InputStream is = new StringBufferInputStream(parsedText);
+		IFile destFile = ResourcesPlugin.getWorkspace().getRoot().getProject(destProjectName).getFile(destFileLoc);
+		destFile.create(is, true, null);
+	}
+
+	/**
+	 * In future you will not need to create this instance. You need to extend
+	 * SWTBotEclipseTestCase which holds an instance of SWTEclipseBot.
+	 */
+	protected SWTWorkbenchBot bot = new SWTWorkbenchBot();
+
+	/**
+	 * @return
+	 * @throws WidgetNotFoundException
+	 */
+	private SWTBotTree tree() throws WidgetNotFoundException {
+		return packageExplorer().bot().tree();
+	}
+
+	/**
+	 * @return
+	 * @throws WidgetNotFoundException
+	 */
+	private SWTBotView packageExplorer() throws WidgetNotFoundException {
+		return bot.viewByTitle("Package Explorer");
+	}
+
+	// protected void setUp() throws Exception {
+	// super.setUp();
+	// setupProject();
+	// }
+
+	public void testOne() {
+		setupProject();
+		assertEquals(gefViews().size(), 0);
+		assertTrue(activeModel() == null);
+		launchModel();
+		assertEquals(gefViews().size(), 1);
+		IModel model1 = activeModel();
+		subtestPauseResumeStopStartRestart(model1);
+		control().menu("Close").click();
+		bot.sleep(2000);
+		assertTrue(!model1.getEngine().isRunning());
+		assertEquals(manager().getModels().size(), 0);
+		assertNull("Model: " + activeModel(), activeModel());
+		assertEquals(gefViews().size(), 0);
+	}
+
+	public void testCloseOne() {
+		setupProject();
+		bot.sleep(2000);
+		// start new
+		launchModel();
+		bot.sleep(4000);
+		IModel modelA_1 = activeModel();
+		assertNotNull(modelA_1);
+
+		subtestCloseViews(modelA_1);
+		SWTBotView swtGraphicsView = gefViews().get(0);
+		swtGraphicsView.close();
+		bot.sleep(3000);
+		IModel iModel = manager().getModels().get(0);
+		assertTrue(iModel.getPeriod() + "too big!", iModel.getPeriod() < 500);
+		control().menu("Close").click();
+		bot.sleep(3000);
+
+		// start new
+		launchModel();
+		IModel modelA_1_2 = activeModel();
+		assertNotNull(modelA_1_2);
+		subtestCloseViews(modelA_1_2);
+		SWTBotView swtChartView = chartViews().get(0);
+		swtChartView.close();
+		bot.sleep(3000);
+		IModel iModel2 = manager().getModels().get(0);
+		assertTrue(iModel2.getPeriod() + "too big!", iModel2.getPeriod() < 500);
+		control().menu("Close").click();
+
+		bot.sleep(3000);
+
+		modelA_1 = activeModel();
+		assertNull(modelA_1);
+
+		assertEquals(manager().getModels().size(), 0);
+	}
+
+	private void subtestCloseViews(IModel modelA_1) {
+		List<IViewPart> viewsA_1 = manager().getViews(modelA_1);
+		assertEquals(viewsA_1.size(), 2);
+		IViewPart chartView = viewsA_1.get(0);
+		assertEquals(chartView.getTitle(), "Demographic Prisoner_s Dilemma Chart View");
+		IViewPart gefView = viewsA_1.get(1);
+		assertEquals(gefView.getTitle(), "Demographic Prisoner_s Dilemma Graphic View");
+	}
+
+	public void testTwo() {
+		setupProject();
+		bot.sleep(2000);
+		// start new
+		launchModel();
+		IModel modelA_1 = activeModel();
+		assertNotNull(modelA_1);
+		assertEquals(gefViews().size(), 1);
+
+		// start another
+		launchModel();
+		IModel modelA_2 = activeModel();
+		subtestPauseResumeStopStartRestart(modelA_2);
+		assertNotSame(modelA_1, modelA_2);
+		assertEquals(gefViews().size(), 2);
+
+		List<IViewPart> viewsA_1 = manager().getViews(modelA_1);
+		assertEquals(viewsA_1.size(), 2);
+		activateView(viewsA_1);
+		bot.sleep(2000);
+		assertEquals(activeModel(), modelA_1);
+
+		control().menu("Pause").click();
+		bot.sleep(1000);
+		assertTrue(activeModel().getEngine().isPaused());
+
+		List<IViewPart> viewsA_2 = manager().getViews(modelA_2);
+		assertEquals(viewsA_2.size(), 2);
+		activateView(viewsA_2);
+		bot.sleep(2000);
+		assertEquals(activeModel(), modelA_2);
+		assertTrue(!activeModel().getEngine().isPaused());
+
+		activateView(viewsA_1);
+		bot.sleep(2000);
+		assertTrue(activeModel().getEngine().isPaused());
+
+		// rapid cycle
+		for (int i = 0; i < 4; i++) {
+			activateView(viewsA_1);
+			bot.sleep(1000);
+			assertEquals(activeModel(), modelA_1);
+			assertTrue(control().menu("Restart").isEnabled());
+			assertTrue(!control().menu("Pause").isEnabled());
+			assertTrue(control().menu("Stop").isEnabled());
+			assertTrue(control().menu("Resume").isEnabled());
+			assertTrue(!control().menu("Start").isEnabled());
+			activateView(viewsA_2);
+			bot.sleep(500);
+			assertEquals(activeModel(), modelA_2);
+			assertTrue(control().menu("Restart").isEnabled());
+			assertTrue(control().menu("Pause").isEnabled());
+			assertTrue(control().menu("Stop").isEnabled());
+			assertTrue(!control().menu("Resume").isEnabled());
+			assertTrue(!control().menu("Start").isEnabled());
+		}
+
+		control().menu("Close").click();
+		bot.sleep(4000);
+		assertEquals(manager().getModels().size(), 1);
+		assertTrue(manager().getActiveModel() == modelA_1);
+		assertEquals(gefViews().size(), 1);
+		activateView(viewsA_1);
+		assertTrue(control().menu("Restart").isEnabled());
+		assertTrue(!control().menu("Pause").isEnabled());
+		assertTrue(control().menu("Stop").isEnabled());
+		assertTrue(control().menu("Resume").isEnabled());
+		assertTrue(!control().menu("Start").isEnabled());
+		control().menu("Resume").click();
+		bot.sleep(1500);
+		subTestPauseResume(modelA_1);
+		subTestStopStartRestart(modelA_1);
+		control().menu("Close").click();
+		bot.sleep(2000);
+		assertEquals(gefViews().size(), 0);
+		assertEquals(manager().getModels().size(), 0);
+		assertNull(manager().getActiveModel());
+	}
+
+	public void testStopPause() {
+		setupProject();
+		bot.sleep(2000);
+		// start new
+		launchModel();
+		IModel modelA_1 = activeModel();
+		control().menu("Pause").click();
+		bot.sleep(1000);
+		assertTrue(activeModel().getEngine().isPaused());
+
+		// start another
+		launchModel();
+
+		control().menu("Close").click();
+		bot.sleep(2000);
+		assertTrue(activeModel().getEngine().isPaused());
+		assertEquals(activeModel(), modelA_1);
+		assertEquals(manager().getModels().size(), 1);
+		assertTrue(control().menu("Restart").isEnabled());
+		assertTrue(!control().menu("Pause").isEnabled());
+		assertTrue(control().menu("Stop").isEnabled());
+		assertTrue(control().menu("Resume").isEnabled());
+		assertTrue(!control().menu("Start").isEnabled());
+
+		control().menu("Close").click();
+		bot.sleep(2000);
+		assertNull(manager().getActiveModel());
+		assertNull(control().menu("Restart"));
+	}
+
+	public void testStopTwo() {
+		setupProject();
+		bot.sleep(2000);
+		// start new
+		launchModel();
+		IModel modelA_1 = activeModel();
+
+		// start another
+		launchModel();
+		IModel modelA_2 = activeModel();
+
+		control().menu("Close").click();
+		bot.sleep(2000);
+		assertEquals(activeModel(), modelA_1);
+		assertEquals(manager().getModels().size(), 1);
+		assertTrue(modelA_1.getEngine().isRunning());
+		assertFalse(modelA_2.getEngine().isRunning());
+		if (!control().menu("Restart").isEnabled()) {
+			assertTrue(control().menu("Restart").isEnabled());
+		}
+		assertTrue(control().menu("Pause").isEnabled());
+		assertTrue(control().menu("Stop").isEnabled());
+		assertTrue(!control().menu("Resume").isEnabled());
+		assertTrue(!control().menu("Start").isEnabled());
+
+		control().menu("Close").click();
+		bot.sleep(2000);
+		assertNull(manager().getActiveModel());
+		assertTrue(control() == null || control().menu("Start") == null);
+	}
+
+	private void launchModel() {
+		tree().setFocus();
+		tree().select(testProjectName);
+		SWTBotTreeItem projectNode = tree().expandNode(testProjectName);
+		bot.sleep(2000);
+		projectNode.expandNode("TestModel.metaabm").doubleClick();
+		packageExplorer().setFocus();
+		bot.sleep(2000);
+
+		control().menu("Execute").click();
+		bot.sleep(4000);
+	}
+
+	int count;
+
+	public void utestWorkbenchModelListeners() {
+		count = 0;
+		manager().getActiveModelListeners().addListener(new AbstractLifecycleListener() {
+			Object model;
+
+			public void observing(IObservationProvider observed) {
+				if (model != null) {
+					fail("More than one model listened to.");
+				}
+				model = observed;
+				count++;
+			}
+
+			public void observationEnd(IObservationProvider observed) {
+				model = null;
+			}
+
+			public void stateChange(Object key, Object updated) {
+				super.stateChange(key, updated);
+				assertTrue(updated == model || updated == null);
+			}
+		});
+		launchModel();
+		launchModel();
+		assertEquals(count, 2);
+	}
+
+	private void activateView(final List<IViewPart> views) {
+		Display.getDefault().asyncExec(new Runnable() {
+
+			public void run() {
+				PlatformUI.getWorkbench().getWorkbenchWindows()[0].getActivePage().activate(views.get(0));
+			}
+		});
+	}
+
+	private void subtestPauseResumeStopStartRestart(IModel model1) {
+		assertTrue(model1 != null);
+		assertTrue(model1.getEngine().isRunning());
+		for (int i = 0; i < 2; i++) {
+			subTestPauseResume(model1);
+		}
+		subTestStopStartRestart(model1);
+	}
+
+	private void subTestStopStartRestart(IModel model1) {
+		control().menu("Stop").click();
+		bot.sleep(2000);
+		assertTrue(!model1.getEngine().isRunning());
+		control().menu("Start").click();
+		bot.sleep(2000);
+		assertTrue(model1.getEngine().isRunning());
+		control().menu("Restart").click();
+		bot.sleep(2000);
+		assertTrue(model1.getEngine().isRunning());
+	}
+
+	private void subTestPauseResume(IModel model1) {
+		control().menu("Pause").click();
+		bot.sleep(1500);
+		assertTrue(model1.getEngine().isPaused());
+		control().menu("Resume").click();
+		bot.sleep(1500);
+		assertTrue(!model1.getEngine().isPaused());
+	}
+
+	private List<SWTBotView> gefViews() {
+		return null;
+		// return
+		// bot.views(WidgetMatcherFactory.withPartName("Demographic Prisoner_s Dilemma Graphic View"));
+	}
+
+	private List<SWTBotView> chartViews() {
+		return null;
+		// return
+		// bot.views(WidgetMatcherFactory.withPartName("Demographic Prisoner_s Dilemma Chart View"));
+	}
+
+	private SWTBotMenu control() {
+		return bot.menu("Control");
+	}
+
+	public static ModelViewManager manager() {
+		return ModelViewManager.getInstance();
+	}
+
+	public static IModel activeModel() {
+		return (IModel) manager().getActiveModel();
+	}
+
+	private void setupProject() {
+		bot.sleep(3000);
+		bot.viewByTitle("Welcome").close();
+		bot.perspectiveByLabel("Agent Modeling").activate();
+		bot.viewByTitle("Package Explorer").setFocus();
+		try {
+			tree().expandNode(testProjectName);
+		} catch (WidgetNotFoundException e) {
+			bot.sleep(3000);
+			bot.menu("File").menu("New").menu("Agent Modeling Escape Project").click();
+			// 'com.swtbot.test.project' is the java project name to create
+			bot.sleep(2000);
+
+			bot.text(0).setText(testProjectName);
+			// Click the Finish button
+
+			bot.button("Finish").click();
+			try {
+				copyFiles("org.eclipse.amp.axf.ide.test", "res/TestModel.metaabm", testProjectName, "TestModel.metaabm");
+			} catch (CoreException e1) {
+				throw new RuntimeException(e1);
+			} catch (IOException e1) {
+				throw new RuntimeException(e1);
+			}
+			bot.sleep(5000);
+		}
+	}
+
+}
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/test/ParameterExecutionTest.java b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/test/ParameterExecutionTest.java
similarity index 100%
rename from org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/test/ParameterExecutionTest.java
rename to org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/test/ParameterExecutionTest.java
diff --git a/org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/test/TestExecutionTest.java b/org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/test/TestExecutionTest.java
similarity index 100%
rename from org.eclipse.amp.axf/plugins/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/test/TestExecutionTest.java
rename to org.eclipse.amp.axf/tests/org.eclipse.amp.axf.ide.test/src/org/eclipse/amp/axf/ide/test/TestExecutionTest.java
diff --git a/org.eclipse.amp.escape/features/org.eclipse.amp.escape-feature/feature.xml b/org.eclipse.amp.escape/features/org.eclipse.amp.escape-feature/feature.xml
index 433e482..c7f70e4 100644
--- a/org.eclipse.amp.escape/features/org.eclipse.amp.escape-feature/feature.xml
+++ b/org.eclipse.amp.escape/features/org.eclipse.amp.escape-feature/feature.xml
@@ -18,10 +18,6 @@
       %license
    </license>
 
-   <url>
-      <update label="%AMPUpdateSiteName" url="http://download.eclipse.org/amp/updates/releases/indigo"/>
-   </url>
-
    <includes
          id="org.eclipse.amp.agf.chart"
          version="0.0.0"/>
@@ -33,27 +29,27 @@
    <requires>
       <import plugin="org.eclipse.core.resources"/>
       <import plugin="org.eclipse.core.runtime"/>
-      <import plugin="org.eclipse.gef"/>
       <import plugin="org.eclipse.ui"/>
+      <import plugin="org.eclipse.amp.axf.views" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.amp.agf.core" version="0.9.0" match="greaterOrEqual"/>
       <import plugin="org.eclipse.ui.views"/>
+      <import plugin="org.eclipse.amp.axf.core" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.amp.axf.ide" version="0.9.0" match="greaterOrEqual"/>
+      <import plugin="org.eclipse.amp.agf.zest" version="0.9.0" match="greaterOrEqual"/>
       <import plugin="org.eclipse.jface"/>
       <import plugin="org.eclipse.ui.ide"/>
       <import plugin="org.eclipse.core.expressions"/>
       <import plugin="org.eclipse.ui.console"/>
+      <import plugin="org.eclipse.amp.escape.ascape" version="0.9.0" match="greaterOrEqual"/>
       <import plugin="org.eclipse.amp.escape.ascape.chart" version="0.9.0" match="greaterOrEqual"/>
       <import plugin="org.eclipse.jdt.core"/>
       <import plugin="org.eclipse.help.ui"/>
-      <import plugin="org.eclipse.amp.axf.core" version="0.9.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.amp.axf.views" version="0.9.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.amp.agf.core" version="0.9.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.amp.axf.ide" version="0.9.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.amp.agf.zest" version="0.9.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.amp.agf.chart" version="0.9.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.amp.escape.ascape" version="0.9.0" match="greaterOrEqual"/>
-      <import plugin="org.apache.commons.lang"/>
-      <import plugin="org.ascape.core" version="5.2.0" match="greaterOrEqual"/>
       <import plugin="org.eclipse.xtext.generator"/>
+      <import plugin="org.apache.commons.collections"/>
+      <import plugin="org.apache.commons.lang"/>
       <import plugin="org.eclipse.birt.chart.engine"/>
+      <import plugin="org.eclipse.gef"/>
+      <import plugin="org.eclipse.amp.agf.chart" version="0.9.0" match="greaterOrEqual"/>
       <import plugin="org.eclipse.birt.chart.device.extension"/>
       <import plugin="org.eclipse.birt.chart.device.swt"/>
       <import plugin="org.eclipse.birt.chart.engine.extension"/>
@@ -103,4 +99,11 @@
          version="0.0.0"
          unpack="false"/>
 
+   <plugin
+         id="org.apache.commons.collections"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
 </feature>
diff --git a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.runtime/META-INF/MANIFEST.MF b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.runtime/META-INF/MANIFEST.MF
index d6b1b48..21df258 100644
--- a/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.runtime/META-INF/MANIFEST.MF
+++ b/org.eclipse.amp.escape/plugins/org.eclipse.amp.escape.runtime/META-INF/MANIFEST.MF
@@ -15,8 +15,8 @@
  org.eclipse.amp.escape.ascape.chart;bundle-version="0.9.0";visibility:=reexport,
  org.eclipse.amp.escape.ascape.agf3d;bundle-version="0.9.0";resolution:=optional;visibility:=reexport,
  org.eclipse.jface;visibility:=reexport,
- org.apache.commons.lang;resolution:=optional;visibility:=reexport,
- org.apache.commons.collections;resolution:=optional;visibility:=reexport,
+ org.apache.commons.lang;visibility:=reexport,
+ org.apache.commons.collections;visibility:=reexport,
  org.eclipse.birt.chart.engine;visibility:=reexport,
  org.eclipse.birt.chart.device.extension,
  org.eclipse.birt.chart.device.swt,
diff --git a/org.eclipse.amp/features/org.eclipse.amp.all-feature/feature.xml b/org.eclipse.amp/features/org.eclipse.amp.all-feature/feature.xml
index 1223ccd..c07b60d 100644
--- a/org.eclipse.amp/features/org.eclipse.amp.all-feature/feature.xml
+++ b/org.eclipse.amp/features/org.eclipse.amp.all-feature/feature.xml
@@ -18,10 +18,6 @@
       %license
    </license>
 
-   <url>
-      <update label="%AMPUpdateSiteName" url="http://download.eclipse.org/amp/updates/releases/indigo"/>
-   </url>
-
    <includes
          id="org.eclipse.amp.axf"
          version="0.0.0"/>
diff --git a/org.eclipse.amp/features/org.eclipse.amp.doc-feature/feature.xml b/org.eclipse.amp/features/org.eclipse.amp.doc-feature/feature.xml
index 3f443e4..e85dddb 100644
--- a/org.eclipse.amp/features/org.eclipse.amp.doc-feature/feature.xml
+++ b/org.eclipse.amp/features/org.eclipse.amp.doc-feature/feature.xml
@@ -18,10 +18,6 @@
       %license
    </license>
 
-   <url>
-      <update label="%AMPUpdateSiteName" url="http://download.eclipse.org/amp/updates/releases/indigo"/>
-   </url>
-
    <includes
          id="org.eclipse.amp.agf.chart.source"
          version="0.0.0"/>
diff --git a/org.eclipse.amp/features/org.eclipse.amp.examples-feature/feature.xml b/org.eclipse.amp/features/org.eclipse.amp.examples-feature/feature.xml
index 6f540b2..3dbac21 100644
--- a/org.eclipse.amp/features/org.eclipse.amp.examples-feature/feature.xml
+++ b/org.eclipse.amp/features/org.eclipse.amp.examples-feature/feature.xml
@@ -17,10 +17,6 @@
       %license
    </license>
 
-   <url>
-      <update label="%AMPUpdateSiteName" url="http://download.eclipse.org/amp/updates/releases/indigo"/>
-   </url>
-
    <plugin
          id="org.eclipse.amp.amf.examples.escape"
          download-size="0"
diff --git a/org.eclipse.amp/features/org.eclipse.amp.test-feature/feature.xml b/org.eclipse.amp/features/org.eclipse.amp.test-feature/feature.xml
index babd2ac..f32e863 100644
--- a/org.eclipse.amp/features/org.eclipse.amp.test-feature/feature.xml
+++ b/org.eclipse.amp/features/org.eclipse.amp.test-feature/feature.xml
@@ -61,17 +61,14 @@
 This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
    </license>
 
-   <url>
-      <update label="%AMPUpdateSiteName" url="http://download.eclipse.org/amp/updates/releases/indigo"/>
-   </url>
-
    <requires>
       <import plugin="org.eclipse.core.runtime"/>
       <import plugin="org.eclipse.amp.amf.acore"/>
       <import plugin="org.eclipse.amp.amf.acore.edit"/>
-      <import plugin="org.junit"/>
+      <import plugin="org.junit" version="3.8.1"/>
       <import plugin="org.apache.commons.lang"/>
       <import plugin="org.eclipse.emf.ecore.xmi"/>
+      <import plugin="org.junit" version="4.8.1"/>
    </requires>
 
    <plugin
diff --git a/releng/org.eclipse.amp.build-feature/feature.xml b/releng/org.eclipse.amp.build-feature/feature.xml
index 48294ee..7aa85f7 100644
--- a/releng/org.eclipse.amp.build-feature/feature.xml
+++ b/releng/org.eclipse.amp.build-feature/feature.xml
@@ -17,10 +17,6 @@
       %license
    </license>
 
-   <url>
-      <update url="http://download.eclipse.org/amp/updates/releases/indigo"/>
-   </url>
-
    <includes
          id="org.eclipse.amp.all"
          version="0.0.0"/>
@@ -37,4 +33,18 @@
          id="org.eclipse.amp.amf.target.escape3d"
          version="0.0.0"/>
 
+   <plugin
+         id="org.apache.commons.lang"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.apache.commons.collections"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
 </feature>