This commit was manufactured by cvs2svn to create tag 'ANT_16_B1'.

git-svn-id: https://svn.apache.org/repos/asf/ant/core/tags/ANT_16_B1@275388 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/ReleaseInstructions b/ReleaseInstructions
index 3c199bd..c9e6c88 100644
--- a/ReleaseInstructions
+++ b/ReleaseInstructions
@@ -102,6 +102,8 @@
     etc).
     
     Also ensure you:
+    * Update docs/manual/cover.html
+    * Update docs/manual/credits.html
     * Update antnews.xml (Announcement)
     * Update faq.xml (Ant's history details - not for betas)
     * Update index.xml (Announcement, latest release details, link to
diff --git a/WHATSNEW b/WHATSNEW
index e20e2a8..3781fa3 100644
--- a/WHATSNEW
+++ b/WHATSNEW
@@ -1,5 +1,5 @@
-Changes from Ant 1.5.4 to current CVS version
-=============================================
+Changes from Ant 1.5.4 to Ant 1.6
+=================================
 
 Changes that could break older environments:
 --------------------------------------------
@@ -245,6 +245,12 @@
 * <junit includeantruntime="true" fork="true"> replaced the CLASSPATH instead
   of adding to it.  Bugzilla Report 14971.
 
+* <splash> could fail on JVMs that use null to indicate the system classloader.
+  Bugzilla Report 23320.
+
+* <xmlcatalog>s only worked when defined inside of tasks.  Bugzilla
+  Report 20965.
+
 Other changes:
 --------------
 * All tasks can be used outside of <target>s.  Note that some tasks
@@ -611,6 +617,18 @@
   or end of a file. Discussion started at
   http://marc.theaimsgroup.com/?l=ant-user&m=106366791228585&w=2
 
+* <java> and <junit> now support <assertions>, which let you enable
+  and disable Java1.4 assertions on a package or class basis. These
+  only work when fork=true, currently.
+
+* .NET tasks expanded with VB support <vbc> and J#, via <jsharp>, 
+  <importtypelib> and <ilasm>. <csc> supports nested <src> types, 
+  <defines> for (potentially conditional) definitions, <reference>
+  filesets for references. The executable attribute lets you switch to
+  mono or other implementations -<csc> has been tested with Mono on
+  Linux and OSX.
+    
+
 Changes from Ant 1.5.3 to Ant 1.5.4
 ===================================
 
diff --git a/build.bat b/build.bat
index 4025d28..ec901a1 100755
--- a/build.bat
+++ b/build.bat
@@ -1,9 +1,8 @@
 @echo off
 
-REM   Copyright (c) 2000-2002 The Apache Software Foundation.  All rights
+REM   Copyright (c) 2000-2003 The Apache Software Foundation.  All rights
 REM   reserved.
 
-set OLDCLASSPATH=%CLASSPATH%
 set REAL_ANT_HOME=%ANT_HOME%
 set ANT_HOME=bootstrap
 if exist bootstrap\lib\ant.jar if exist bootstrap\bin\ant.bat if exist bootstrap\bin\lcp.bat if exist bootstrap\bin\antRun.bat goto runAnt
@@ -13,21 +12,15 @@
 goto cleanup
 
 :runAnt
-set LOCALCLASSPATH=
-for %%i in (lib\optional\*.jar) do call bootstrap\bin\lcp.bat %%i
-set CLASSPATH=lib\optional\xalanj1compat.jar;%LOCALCLASSPATH%;%CLASSPATH%
-set LOCALCLASSPATH=
-
 if not "%REAL_ANT_HOME%" == "" goto install_ant
-call bootstrap\bin\ant.bat -emacs %1 %2 %3 %4 %5 %6 %7 %8 %9
+call bootstrap\bin\ant.bat -lib lib/optional %1 %2 %3 %4 %5 %6 %7 %8 %9
 goto cleanup
 
 :install_ant
-call bootstrap\bin\ant.bat -emacs -Dant.install="%REAL_ANT_HOME%" %1 %2 %3 %4 %5 %6 %7 %8 %9
+call bootstrap\bin\ant.bat -lib lib/optional -Dant.install="%REAL_ANT_HOME%" %1 %2 %3 %4 %5 %6 %7 %8 %9
 
 rem clean up
 :cleanup
 set ANT_HOME=%REAL_ANT_HOME%
 set REAL_ANT_HOME=
-set CLASSPATH=%OLDCLASSPATH%
-set OLDCLASSPATH=
+
diff --git a/build.sh b/build.sh
index 142a49f..3281235 100755
--- a/build.sh
+++ b/build.sh
@@ -28,31 +28,6 @@
   exit
 fi
 
-LOCALCLASSPATH=
-# add in the dependency .jar files
-DIRLIBS=lib/optional/*.jar
-for i in ${DIRLIBS}
-do
-    if [ "$i" != "${DIRLIBS}" ] ; then
-        LOCALCLASSPATH=$LOCALCLASSPATH:"$i"
-    fi
-done
-
-# make sure the classpath is in unix format
-if $cygwin ; then
-    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
-fi
-
-CLASSPATH=$LOCALCLASSPATH:$CLASSPATH
-
-# switch back to Windows format
-if $cygwin ; then
-    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
-fi
-
-export CLASSPATH
-
-
 if [ "$REALANTHOME" != "" ] ; then
   if $cygwin; then
      REALANTHOME=`cygpath --path --windows "$REALANTHOME"`
@@ -62,5 +37,5 @@
   ANT_INSTALL="-emacs"
 fi
 
-bootstrap/bin/ant "$ANT_INSTALL" $*
+bootstrap/bin/ant -lib lib/optional "$ANT_INSTALL" $*
 
diff --git a/build.xml b/build.xml
index e4eca82..fc13f86 100644
--- a/build.xml
+++ b/build.xml
@@ -25,7 +25,7 @@
   -->
   <property name="Name" value="Apache Ant"/>
   <property name="name" value="ant"/>
-  <property name="version" value="1.6alpha"/>
+  <property name="version" value="1.6beta"/>
   <property name="manifest-version" value="1.6"/>
   <property name="bootstrap.jar" value="ant-bootstrap.jar"/>
 
@@ -760,13 +760,6 @@
       </fileset>
     </jar>
 
-    <jar destfile="${build.lib}/optional.jar"
-         basedir="${build.classes}"
-         manifest="${manifest.tmp}">
-      <selector refid="non-core"/>
-      <metainf dir="${build.dir}" includes="LICENSE.txt"/>
-    </jar>
-
     <jar destfile="${build.lib}/${bootstrap.jar}"
          basedir="${build.classes}"
          manifest="${manifest}">
@@ -774,7 +767,7 @@
       <metainf dir="${build.dir}" includes="LICENSE.txt"/>
       <manifest>
         <attribute name="Class-Path"
-                   value="ant.jar xml-apis.jar xercesImpl.jar optional.jar xalan.jar"/>
+                   value="ant.jar xml-apis.jar xercesImpl.jar xalan.jar"/>
       </manifest>
     </jar>
 
diff --git a/docs/manual/CoreTasks/ant.html b/docs/manual/CoreTasks/ant.html
index bfecfcb..1cdc13b 100644
--- a/docs/manual/CoreTasks/ant.html
+++ b/docs/manual/CoreTasks/ant.html
@@ -20,15 +20,19 @@
 <p>If no target attribute is supplied, the default target of the new project is
 used.</p>
 <p>By default, all of the properties of the current project will be
-available in the new project.   Alternatively, you can
-set the <i>inheritAll</i> attribute to <code>false</code> and only
+available in the new project.  Alternatively, you can set the
+<i>inheritAll</i> attribute to <code>false</code> and only
 &quot;user&quot; properties (i.e., those passed on the command-line)
 will be passed to the new project.  In either case, the set of
-properties passed to the new project will override the properties that 
-are set in the new project (See also the <a href="property.html">property task</a>).</p>
-<p>You can also set properties in the new project from the old project by
-using nested property tags. These properties are always passed regardless of the
-setting of <i>inheritAll</i>.  This allows you to parameterize your subprojects.</p>
+properties passed to the new project will override the properties that
+are set in the new project (See also the <a
+href="property.html">property task</a>).</p>
+
+<p>You can also set properties in the new project from the old project
+by using nested property tags. These properties are always passed
+regardless of the setting of <i>inheritAll</i>.  This allows you to
+parameterize your subprojects.  Properties defined on the command line
+can not be overridden by nested &lt;property&gt; elements.</p>
 
 <p>References to data types can also be passed to the new project, but
 by default they are not.  If you set the inheritrefs attribute to
diff --git a/docs/manual/CoreTasks/antcall.html b/docs/manual/CoreTasks/antcall.html
index bfd7462..1fba7fc 100644
--- a/docs/manual/CoreTasks/antcall.html
+++ b/docs/manual/CoreTasks/antcall.html
@@ -21,9 +21,11 @@
 will be passed to the new project.  In either case, the set of
 properties passed to the new project will override the properties that 
 are set in the new project (See also the <a href="property.html">property task</a>).</p>
-<p>You can also set properties in the new project from the old project by
-using nested param tags. These properties are always passed regardless of the
-setting of <i>inheritAll</i>.  This allows you to parameterize your subprojects.</p>
+<p>You can also set properties in the new project from the old project
+by using nested param tags. These properties are always passed
+regardless of the setting of <i>inheritAll</i>.  This allows you to
+parameterize your subprojects.  Properties defined on the command line
+can not be overridden by nested &lt;param&gt; elements.</p>
 
 <p>Nested <a href="#reference"><i>&lt;reference&gt;</i></a> elements can
 be used to copy references from the calling project to the new
diff --git a/docs/manual/CoreTasks/cvs.html b/docs/manual/CoreTasks/cvs.html
index 8612f08..69d1921 100644
--- a/docs/manual/CoreTasks/cvs.html
+++ b/docs/manual/CoreTasks/cvs.html
@@ -54,7 +54,10 @@
   </tr>
   <tr>
     <td valign="top">dest</td>
-    <td valign="top">the directory where the checked out files should be placed.</td>
+    <td valign="top">the directory where the checked out files should
+    be placed.  Note that this is different from CVS's -d command line
+    switch as Ant will never shorten pathnames to avoid empty
+    directories.</td>
     <td align="center" valign="top">No, default is project's basedir.</td>
   </tr>
   <tr>
diff --git a/docs/manual/CoreTasks/exec.html b/docs/manual/CoreTasks/exec.html
index 385b5ae..50f97f8 100644
--- a/docs/manual/CoreTasks/exec.html
+++ b/docs/manual/CoreTasks/exec.html
@@ -20,20 +20,27 @@
 </p>
  
 <h4>OpenVMS Users</h4>
-
 <p>The command specified using <code>executable</code> and
 <code>&lt;arg&gt;</code> elements is executed exactly as specified
-inside a temporary DCL script.  This means that paths have to be
-written in VMS style.  It is also required that the logical
-<code>JAVA$FORK_SUPPORT_CHDIR</code> is set to <code>TRUE</code> (see
-the <i>JDK Release Notes</i>).</p>
- 
+inside a temporary DCL script.  This has some implications:
+<ul>
+<li>paths have to be written in VMS style</li>
+<li>if your <code>executable</code> points to a DCL script remember to
+prefix it with an <code>@</code>-sign
+(e.g. <code>executable="@[FOO]BAR.COM"</code>), just as you would in a
+DCL script</li>
+</ul>
+For <code>&lt;exec&gt;</code> to work in an environment with a Java VM
+older than version 1.4.1-2 it is also <i>required</i> that the logical
+<code>JAVA$FORK_SUPPORT_CHDIR</code> is set to <code>TRUE</code> in
+the job table (see the <i>JDK Release Notes</i>).</p>
+
 <p>Please note that the Java VM provided by HP doesn't follow OpenVMS'
 conventions of exit codes.  If you run a Java VM with this task, the
 task may falsely claim that an error occured (or silently ignore an
 error).  Don't use this task to run <code>JAVA.EXE</code>, use a
 <code>&lt;java&gt;</code> task with the <code>fork</code> attribute
-set ti <code>true</code> instead as this task will follow the VM's
+set to <code>true</code> instead as this task will follow the VM's
 interpretation of exit codes.</p>
 
 <h3>Parameters</h3>
diff --git a/docs/manual/CoreTasks/macrodef.html b/docs/manual/CoreTasks/macrodef.html
index 7d7fa7e..0214af2 100644
--- a/docs/manual/CoreTasks/macrodef.html
+++ b/docs/manual/CoreTasks/macrodef.html
@@ -38,17 +38,6 @@
         </td>
         <td valign="top" align="center">No</td>
       </tr>
-      <tr>
-        <td valign="top">attributestyle</td>
-        <td valign="top">
-          <em>Temporary</em>
-          this attribute specifies if the attribute is in ant style
-          (i.e. ${attributeName}) or xpath style (i.e @attributeName).
-          Valid values are "ant" and "xpath". The default value
-          is "ant".
-        </td>
-        <td valign="top" align="center">No</td>
-      </tr>
     </table>
       <h3>Parameters specified as nested elements</h3>
     <h4>attribute</h4>
@@ -63,11 +52,6 @@
       task using the ant property notation - ${attribute name}.
       Note that is not an actual ant property.
     </p>
-    <p>
-      If the attribute style is set to "xpath", the attribute is
-      specified in the body of the template task by prefixing the
-      name with a "@".
-    </p>
     <h3>Parameters</h3>
     <table border="1" cellpadding="2" cellspacing="0">
       <tr>
@@ -141,23 +125,6 @@
       </pre>
     </blockquote>
     <p>
-      The following fragment sets the attribute style to "xpath"
-      for the macro definition &lt;testing&gt; and calls the
-      macro. The fragment should output "attribute is this is a test".
-    </p>
-    <blockquote>
-      <pre>
-&lt;macrodef name="testing" attributestyle="xpath"&gt;
-   &lt;attribute name="abc"/&gt;
-   &lt;sequential&gt;
-      &lt;echo&gt;attribute is @abc&lt;/echo&gt;
-   &lt;/sequential&gt;
-&lt;/macrodef&gt;
-
-&lt;testing abc="this is a test"/&gt;
-      </pre>
-    </blockquote>
-    <p>
       The following fragment defines a task called &lt;call-cc&gt; which
       take the attributes "target", "link" and "target.dir" and the
       nested element "cc-elements". The body of the task
diff --git a/docs/manual/CoreTasks/subant.html b/docs/manual/CoreTasks/subant.html
index 6aed7f6..68aa886 100644
--- a/docs/manual/CoreTasks/subant.html
+++ b/docs/manual/CoreTasks/subant.html
@@ -18,7 +18,6 @@
           <td valign="bottom">
             <font size="+3" face="arial,helvetica,sanserif"><strong>Subant
  Task</strong></font>
-            <br><font face="arial,helvetica,sanserif"><i>EXPERIMENTAL:</i> This task is experimental and may be under continual change till Ant1.6 ships; it may even be omitted from the product.</font>
           </td>
           <td>
             <!-- PROJECT LOGO -->
@@ -47,10 +46,6 @@
 
       <tr><td><blockquote>
 <p>
-            <i>EXPERIMENTAL:</i> This task is experimental and may be under continual
-            change till Ant1.6 ships; it may even be omitted from the product.
-        </p>
-<p>
         Calls a given target for all defined sub-builds. This is an extension
         of ant for bulk project execution.
 
diff --git a/docs/manual/CoreTypes/assertions.html b/docs/manual/CoreTypes/assertions.html
index c78b91a..0cf49d5 100644
--- a/docs/manual/CoreTypes/assertions.html
+++ b/docs/manual/CoreTypes/assertions.html
@@ -147,11 +147,15 @@
 Example: set system assertions and all org.apache packages except
 for ant, and the class org.apache.tools.ant.Main.
 <pre>
-&lt;assertions enableSystemAssertions="true" &gt;
-  &lt;enable package="org.apache" /&gt;
-  &lt;disable package="org.apache.ant" /&gt;
-  &lt;enable class="org.apache.tools.ant.Main"/&gt;
-&lt;/assertions&gt;
+    &lt;java fork="true" failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath"&gt;
+      &lt;assertions enableSystemAssertions="true" &gt;
+        &lt;enable package="org.apache" /&gt;
+        &lt;disable package="org.apache.ant" /&gt;
+        &lt;enable class="org.apache.tools.ant.Main"/&gt;
+      &lt;/assertions&gt;
+    &lt;/java&gt;
 </pre>
 
 <h5>Example: disabled and anonymous package assertions</h5>
@@ -170,10 +174,14 @@
 
 <pre>
 &lt;assertions id="project.assertions" &gt;
-  &lt;enable project="org.apache.test" /&gt;
+  &lt;enable package="org.apache.test" /&gt;
 &lt;/assertions&gt;
 
-&lt;assertions refid="project.assertions" /&gt;
+&lt;java fork="true" failonerror="true"
+  classname="${classname}"
+  classpathref="assert.classpath"&gt;
+  &lt;assertions refid="project.assertions"/&gt;
+&lt;/java&gt;
 </pre>
 
 <hr>
diff --git a/docs/manual/CoreTypes/custom-programming.html b/docs/manual/CoreTypes/custom-programming.html
index 48e63b3..e8366f7 100644
--- a/docs/manual/CoreTypes/custom-programming.html
+++ b/docs/manual/CoreTypes/custom-programming.html
@@ -1,9 +1,8 @@
 <html>
   <head>
     <meta http-equiv="Content-Language" content="en-us"></meta>
-    <title>Custom Components</title>
+<title>Custom Components</title>
   </head>
-
   <body>
     <h2>Custom Components</h2>
     <h3>Overview</h3>
@@ -58,7 +57,7 @@
 public class AllUpperCaseCondition extends Condition {
     private String value;
 
-    // The setter for the &quot;value&quot; attribute
+    // The setter for the "value" attribute
     public void setValue(String value) {
         this.value = value;
     }
@@ -69,7 +68,7 @@
             throw new BuildException("value attribute is not set");
         }
         return value.toUpperCase().equals(value);
-   }        
+   }
 }
       </pre>
     </blockquote>
@@ -82,7 +81,7 @@
 &lt;typedef
     name="alluppercase"
     classname="com.mydomain.AllUpperCaseCondition"
-    classpath="${mydomain.classes"/&gt;
+    classpath="${mydomain.classes}"/&gt;
       </pre>
     </blockquote>
     <p>
@@ -132,7 +131,7 @@
 &lt;typedef
     name="javaselector"
     classname="com.mydomain.JavaSelector"
-    classpath="${mydomain.classes"/&gt;
+    classpath="${mydomain.classes}"/&gt;
       </pre>
     </blockquote>
         <p>
@@ -148,7 +147,7 @@
 &lt;/copy&gt;
       </pre>
     </blockquote>
-     
+
       <p>
         One may use
         <code>org.apache.tools.ant.types.selectors.BaseSelector</code>,
@@ -164,7 +163,7 @@
         last chance to check your settings for consistency because it
         calls <code>verifySettings()</code>. Override this method and
         call <code>setError()</code> within it if you detect any
-        problems in how your selector is set up.</p>
+        problems in how your selector is set up.
     </p>
     <p>
       To write custom selector containers one should extend
@@ -229,7 +228,7 @@
     </p>
     <p>
       The custom selector was the pre ant 1.6 way of defining custom selectors.
-      This method is still supported for backward compatiblity.
+      This method is still supported for backward compatibility.
     </p>
     <p>You can write your own selectors and use them within the selector
       containers by specifying them within the &lt;custom&gt; tag.</p>
@@ -292,14 +291,14 @@
     </p>
 
     <blockquote><pre>
-&lt;fileset dir=&quot;${mydir}&quot; includes=&quot;**/*&quot;&gt;
-    &lt;custom classname=&quot;com.mydomain.MySelector&quot;&gt;
-        &lt;param name=&quot;myattribute&quot; value=&quot;myvalue&quot;/&gt;
+&lt;fileset dir="${mydir}" includes="**/*"&gt;
+    &lt;custom classname="com.mydomain.MySelector"&gt;
+        &lt;param name="myattribute" value="myvalue"/&gt;
     &lt;/custom&gt;
 &lt;/fileset&gt;
       </pre></blockquote>
 
-    
+
     <p>The core selectors that can also be used as custom selectors
       are</p>
 
@@ -325,9 +324,9 @@
     to use the selector through <code>&lt;custom&gt;</code>.</p>
 
     <blockquote><pre>
-&lt;fileset dir=&quot;${doc.path}&quot; includes=&quot;**/*&quot;&gt;
-    &lt;custom classname=&quot;org.apache.tools.ant.types.selectors.DepthSelector&quot;&gt;
-        &lt;param name=&quot;max&quot; value=&quot;1&quot;/&gt;
+&lt;fileset dir="${doc.path}" includes="**/*"&gt;
+    &lt;custom classname="org.apache.tools.ant.types.selectors.DepthSelector"&gt;
+        &lt;param name="max" value="1"/&gt;
     &lt;/custom&gt;
 &lt;/fileset&gt;
       </pre></blockquote>
@@ -364,7 +363,7 @@
                 count++;
                 if ((count % 2) == 1) {
                     return c;
-                }   
+                }
               }
           }
       }
@@ -391,8 +390,8 @@
 }
       </pre>
     </blockquote>
-      
-      
+
+
     <hr></hr>
     <p align="center">Copyright &copy; 2003 Apache Software Foundation. All rights
       Reserved.</p>
diff --git a/docs/manual/CoreTypes/mapper.html b/docs/manual/CoreTypes/mapper.html
index 359201b..839ca9f 100644
--- a/docs/manual/CoreTypes/mapper.html
+++ b/docs/manual/CoreTypes/mapper.html
@@ -72,6 +72,7 @@
 <code>&lt;classpath&gt;</code>, as well - that is,
 a <a href="../using.html#path">path</a>-like structure.</p>
 <h3>The built-in mapper types are:</h3>
+<p>All built-in mappers are case-sensitive.</p>
 <h4><a name="identity-mapper">identity</a></h4>
 <p>The target file name is identical to the source file name. Both
 <code>to</code> and <code>from</code> will be ignored.</p>
diff --git a/docs/manual/CoreTypes/selectors.html b/docs/manual/CoreTypes/selectors.html
index fad6ec0..fa30afc 100755
--- a/docs/manual/CoreTypes/selectors.html
+++ b/docs/manual/CoreTypes/selectors.html
@@ -186,6 +186,8 @@
     <code>&lt;mapper&gt;</code> element is specified, the
     <code>identity</code> type mapper is used.</p>
 
+    <p>The <code>&lt;depend&gt;</code> selector is case-sensitive.</p>
+
     <table border="1" cellpadding="2" cellspacing="0">
       <tr>
         <td valign="top"><b>Attribute</b></td>
@@ -354,6 +356,9 @@
     <a href="#selectcontainers">selector container</a> is desired.
     </p>
 
+    <p>The <code>&lt;filename&gt;</code> selector is
+    case-sensitive.</p>
+
     <table border="1" cellpadding="2" cellspacing="0">
       <tr>
         <td valign="top"><b>Attribute</b></td>
@@ -407,6 +412,8 @@
     <code>&lt;mapper&gt;</code> element is specified, the
     <code>identity</code> type mapper is used.</p>
 
+    <p>The <code>&lt;present&gt;</code> selector is case-sensitive.</p>
+
     <table border="1" cellpadding="2" cellspacing="0">
       <tr>
         <td valign="top"><b>Attribute</b></td>
diff --git a/docs/manual/OptionalTasks/csc.html b/docs/manual/OptionalTasks/csc.html
new file mode 100644
index 0000000..8a7f9a9
--- /dev/null
+++ b/docs/manual/OptionalTasks/csc.html
@@ -0,0 +1,514 @@
+    
+<html>
+<head>
+  <meta http-equiv="Content-Language" content="en-us">
+  <title>Csc
+ Task</title>
+</head>
+
+<body bgcolor="#ffffff" text="#000000" link="#525D76"
+      alink="#525D76" vlink="#525D76">
+
+<table border="0" width="100%" cellspacing="4">
+
+  <!-- PAGE HEADER -->
+  <tr>
+    <td>
+      <table border="0" width="100%"><tr>
+          <td valign="bottom">
+            <font size="+3" face="arial,helvetica,sanserif"><strong>Csc
+ Task</strong></font>
+            <br><font face="arial,helvetica,sanserif">Compiles C# source into executables or modules.</font>
+          </td>
+          <td>
+            <!-- PROJECT LOGO -->
+            <a href="http://ant.apache.org/">
+              <img src="../../images/ant_logo_large.gif" align="right" alt="Apache Ant" border="0"/>
+            </a>
+          </td>
+      </tr></table>
+    </td>
+  </tr>
+
+  <!-- START RIGHT SIDE MAIN BODY -->
+  <tr>
+    <td  valign="top" align="left">
+
+          <!-- Applying task/long-description -->
+    <!-- Start Description -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="description">
+          <strong>Description</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+        Compiles C# source into executables or modules. csc.exe must be on the execute path, unless another executable or the full path to that executable is specified in the <tt>executable</tt> parameter <p> All parameters are optional: &lt;csc/&gt; should suffice to produce a debug build of all *.cs files. However, naming an <tt>destFile</tt>stops the csc compiler from choosing an output name from random, and allows the dependency checker to determine if the file is out of date. <p> The task is a directory based task, so attributes like <b>includes="*.cs" </b> and <b>excludes="broken.cs"</b> can be used to control the files pulled in. By default, all *.cs files from the project folder down are included in the command. When this happens the output file -if not specified- is taken as the first file in the list, which may be somewhat hard to control. Specifying the output file with <tt>destFile</tt> seems prudent. <p> <p> For more complex source trees, nested <tt>src</tt> elemements can be supplied. When such an element is present, the implicit fileset is ignored. This makes sense, when you think about it :) <p> References to external files can be made through the references attribute, or (since Ant1.6), via nested &lt;reference&gt; filesets. With the latter, the timestamps of the references are also used in the dependency checking algorithm. <p> Example <pre>&lt;csc optimize=&quot;true&quot; debug=&quot;false&quot; docFile=&quot;documentation.xml&quot; warnLevel=&quot;4&quot; unsafe=&quot;false&quot; targetType=&quot;exe&quot; incremental=&quot;false&quot; mainClass = &quot;MainApp&quot; destFile=&quot;NetApp.exe&quot; &gt; &lt;src dir="src" includes="*.cs" /&gt; &lt;reference file="${testCSC.dll}" /&gt; &lt;define name="RELEASE" /&gt; &lt;define name="DEBUG" if="debug.property"/&gt; &lt;define name="def3" unless="def3.property"/&gt; &lt;/csc&gt; </pre>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Description -->
+
+    <!-- Start Attributes -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="attributes">
+          <strong>Parameters</strong></a></font>
+      </td></tr>
+      <tr><td><blockquote>
+        <table>
+          <tr>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Attribute</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Description</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Type</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Requirement</b></font>
+        </td>
+          </tr>
+    <!-- Attribute Group -->    
+    
+    <!-- Attribute Group -->    
+        <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">additionalmodules</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Semicolon separated list of modules to refer to.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left" rowspan="26">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Optional</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">debug</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set the debug flag on or off.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">definitions</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Semicolon separated list of defined constants.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">destdir</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the destination directory of files to be compiled.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">destfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the name of exe/library to create.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">docfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">file for generated XML documentation</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">executable</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set the name of the program, overriding the defaults. Can be used to set the full path to a program, or to switch to an alternate implementation of the command, such as the Mono or Rotor versions -provided they use the same command line arguments as the .NET framework edition</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">extraoptions</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Any extra options which are not explicitly supported by this task.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">failonerror</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, fail on compilation errors.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">filealign</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the file alignment. Valid values are 0,512, 1024, 2048, 4096, 8192, and 16384, 0 means 'leave to the compiler'</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">int</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">fullpaths</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, print the full path of files on errors.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">includedefaultreferences</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, automatically includes the common assemblies in dotnet, and tells the compiler to link in mscore.dll. set the automatic reference inclusion flag on or off this flag controls the /nostdlib option in CSC</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">incremental</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set the incremental compilation flag on or off.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">mainclass</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Sets the name of main class for executables.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">noconfig</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">A flag that tells the compiler not to read in the compiler settings files 'csc.rsp' in its bin directory and then the local directory</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">optimize</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, enables optimization flag.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">outputfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">The output file. This is identical to the destFile attribute.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">referencefiles</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Path of references to include. Wildcards should work.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Path</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">references</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Semicolon separated list of DLLs to refer to.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">srcdir</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the source directory of the files to be compiled.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">targettype</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set the target type to one of exe|library|module|winexe</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">"exe", "library", "module", "winexe"</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">unsafe</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, enables the unsafe keyword.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">utf8output</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, require all compiler output to be in UTF8 format.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">warnlevel</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Level of warning currently between 1 and 4 with 4 being the strictest.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">int</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">win32icon</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the filename of icon to include.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">win32res</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Sets the filename of a win32 resource (.RES) file to include. This is not a .NET resource, but what Windows is used to.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+
+
+        </table>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Attributes -->
+
+    <!-- Start Elements -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="elements">
+          <strong>Parameters as nested elements</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>define</strong> (org.apache.tools.ant.taskdefs.optional.dotnet.DotnetDefine)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        add a define to the list of definitions
+<short-description><![CDATA[Add a define to the list of definitions.]]></short-description>
+<description>
+            <![CDATA[add a define to the list of definitions]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>reference</strong> (org.apache.tools.ant.types.FileSet)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        add a new reference fileset to the compilation
+<short-description><![CDATA[Add a new reference fileset to the compilation.]]></short-description>
+<description>
+            <![CDATA[add a new reference fileset to the compilation]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>resource</strong> (org.apache.tools.ant.taskdefs.optional.dotnet.DotnetResource)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        link or embed a resource
+<short-description><![CDATA[Link or embed a resource.]]></short-description>
+<description>
+            <![CDATA[link or embed a resource]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>src</strong> (org.apache.tools.ant.types.FileSet)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        add a new source directory to the compile
+<short-description><![CDATA[Add a new source directory to the compile.]]></short-description>
+<description>
+            <![CDATA[add a new source directory to the compile]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Elements -->
+
+
+    </td>
+  </tr>
+  <!-- END RIGHT SIDE MAIN BODY -->
+
+  <!-- FOOTER SEPARATOR -->
+  <tr>
+    <td>
+      <hr noshade="" size="1"/>
+    </td>
+  </tr>
+
+  <!-- PAGE FOOTER -->
+  <tr>
+    <td>
+      <div align="center"><font color="#525D76" size="-1"><em>
+        Copyright &#169; 2000-2003, Apache Software Foundation
+      </em></font></div>
+    </td>
+  </tr>
+
+</table>
+
+</body>
+</html>
diff --git a/docs/manual/OptionalTasks/dotnet.html b/docs/manual/OptionalTasks/dotnet.html
index 2122d2e..e8b6dc1 100644
--- a/docs/manual/OptionalTasks/dotnet.html
+++ b/docs/manual/OptionalTasks/dotnet.html
@@ -3,620 +3,202 @@
 <title>.NET Tasks</title>
 </head>
 
-<body>
 <h1>.NET tasks</h1>
-
-
-
-<hr>
-<h2>&lt;CSC&gt;</h2>
-
-This task compiles CSharp source into executables or modules.
-
-This task compiles CSharp source into executables or modules. The task will
-only work on win2K/XP or other platforms with csc.exe or an equivalent.
-CSC must be on the execute path.
-
-<p>
-All parameters are optional: &lt;csc/&gt; should suffice to produce a debug
-build of all *.cs files. References to external files do require explicit 
-enumeration, so are one of the first attributes to consider adding. </p>
-
-<p>
-
-The task is a directory based task, so attributes like 
-<b>includes=&quot;**/*.cs&quot;</b> and 
-<b>excludes=&quot;broken.cs&quot;</b> can be used to control 
-the files pulled in. By default, 
-all *.cs files from the project folder down are included in the command. 
-When this happens the destFile -if not specified-
-is taken as the first file in the list, which may be somewhat hard to control.
-Specifying the output file with <b>'destfile'</b> seems prudent. </p>
-<p>
-Also, dependency checking only works if destfile is set.
-
-<table border="1" cellpadding="2" cellspacing="0">
-  <tr>
-    <td valign="top"><b>Attribute</b></td>
-    <td valign="top"><b>Description</b></td>
-    <td align="center" valign="top"><b>Example Values</b></td>
-  </tr>
-
-<tr>
-    <td valign="top">additionalModules</td>
-    <td valign="top">Semicolon separated list of modules to refer to</td>
-    </tr>
-  <tr>
-    <td valign="top">defaultexcludes</td>
-    <td valign="top">indicates whether default excludes should be used or not
-      </td>
-    <td valign="top">&quot;true&quot;(default) or &quot;false&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">definitions</td>
-    <td valign="top">defined constants</td>
-    <td valign="top"> &quot;RELEASE;BETA1&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">debug</td>
-    <td valign="top">include debug information</td>
-    <td valign="top">&quot;true&quot;(default)</td>
-    </tr>
-
-<tr>
-    <td valign="top">destFile</td>
-    <td valign="top">name of exe/library to create</td>
-    <td valign="top">&quot;example.exe&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">docFile</td>
-    <td valign="top">name of file for documentation</td>
-    <td valign="top">&quot;doc.xml&quot;</td>
-    </tr>
-  <tr>
-    <td valign="top">excludes</td>
-    <td valign="top">comma- or space-separated list of patterns of files that must be
-      excluded. No files (except default excludes) are excluded when omitted.</td>
-  </tr>
-  <tr>
-    <td valign="top">excludesfile</td>
-    <td valign="top">the name of a file. Each line of this file is
-      taken to be an exclude pattern</td>
-  </tr>
-  <tr>
-    <td valign="top">extraOptions</td>
-    <td valign="top">Any extra options which aren't explicitly 
-        supported by the CSharp task </td>
-    <td>&quot;/warnaserror+ /baseaddress:0x12840000&quot;</td>
-  </tr>
-
-  <tr>
-    <td valign="top">failOnError</td>
-    <td valign="top">Should a failed compile halt the build?</td>
-    <td valign="top">&quot;true&quot;(default) or &quot;false&quot;</td>
-  </tr>
-  
-  <tr>
-    <td valign="top">fileAlign</td>
-    <td valign="top">
-     set the file alignment.
-     Valid values are 0,512, 1024, 2048, 4096, 8192, and 16384
-     0 means 'leave to the compiler'    
-    </td>
-    <td valign="top">512</td>
-  </tr>
-  <tr>
-    <td valign="top">fullpaths</td>
-    <td valign="top">print the full path of files on on errors</td>
-  </tr>
-    
-  <tr>
-    <td valign="top">includes</td>
-    <td valign="top">comma- or space-separated list of patterns of files that must be
-      included. All files are included when omitted.</td>
-  </tr>
-  <tr>
-    <td valign="top">includeDefaultReferences</td>
-    <td valign="top">Flag which when true automatically includes
-    the common assemblies in dotnet, and tells the compiler to link in
-    mscore.dll
-    </td>
-    <td valign="top">&quot;true&quot;(default) or &quot;false&quot;</td>
-  </tr>
-
-  <tr>
-    <td valign="top">includesfile</td>
-    <td valign="top">the name of a file. Each line of this file is
-      taken to be an include pattern</td>
-  </tr>
-
-<tr>
-    <td valign="top">incremental</td>
-    <td valign="top">Incremental build flag. Avoid till it works</td>
-    <td valign="top">&quot;true&quot; or &quot;false&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">mainClass</td>
-    <td valign="top">name of main class for executables</td>
-    <td valign="top">&quot;com.example.project.entrypoint&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">noConfig</td>
-    <td valign="top">a flag which tells the compiler not
-    to read in the compiler settings files 'csc.rsp' in its
-    bin directory and then the local directory</td>
-    <td valign="top">&quot;true&quot; or &quot;false&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">optimize</td>
-    <td valign="top">optimisation flag</td>
-    <td valign="top">&quot;true&quot; or &quot;false&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">references</td>
-    <td valign="top">Semicolon separated list of dlls to refer to</td>
-    <td valign="top">&quot;mylib.dll;nunit.dll&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">referenceFiles </td>
-    <td valign="top">Ant Path descriptioon of references to include. 
-    Wildcards should work. </td>
-    <td valign="top"></td>
-    </tr>
-    
-<tr>
-    <td valign="top">srcDir</td>
-    <td valign="top">source directory (default = project directory)</td>
-    <td valign="top">&quot;.&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">targetType</td>
-    <td valign="top">Type of target</td>
-    <td valign="top">&quot;exe&quot;, &quot;module&quot;, &quot;winexe&quot; or &quot;library&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">unsafe</td>
-    <td valign="top">enable the <b>unsafe</b> keyword</td>
-    <td valign="top">&quot;true&quot; or &quot;false&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">utf8output</td>
-    <td valign="top">require all compiler output to be in utf-8 format</td>
-    <td valign="top">&quot;true&quot; or &quot;false&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">warnLevel</td>
-    <td valign="top">level of warning currently between 1 and 4 with 4
-    being the strictest. </td>
-    <td valign="top">&quot;1&quot;-&quot;4&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">win32Icon</td>
-    <td valign="top">filename of icon to include</td>
-    <td valign="top">&quot;res/myicon.ico&quot;</td>
-   </tr>
-<tr>
-    <td valign="top">win32res</td>
-    <td valign="top">filename of a win32 resource (.RES)file to include
-    This is not a .NET resource, but it what windows is used to.</td>
-    <td valign="top">&quot;res/myapp.res&quot;</td>
-   </tr>
-
-</table>
-<p>
-Example
-</p>
-<pre>&lt;csc
-        optimize=&quot;true&quot;
-        debug=&quot;false&quot;
-        docFile=&quot;documentation.xml&quot;
-        warnLevel=&quot;4&quot;
-        unsafe=&quot;false&quot;
-        targetType=&quot;exe&quot;
-        incremental=&quot;false&quot;
-        definitions=&quot;RELEASE&quot;
-        excludes=&quot;src/unicode_class.cs&quot;
-        mainClass = &quot;MainApp&quot;
-        destFile=&quot;NetApp.exe&quot;
-        /&gt;   
-</pre>
-<hr>
-<h2>&lt;VBC&gt;</h2>
-
-This task compiles VisualBasic.NET source into executables or modules.
-
-This task compiles VisualBasic.NET source into executables or modules. 
-The task will only work on win2K/XP or other platforms with vbc.exe 
-or an equivalent. VBC must be on the execute path.
-
-<p>
-All parameters are optional: &lt;vbc/&gt; should suffice to produce a debug
-build of all *.vb files. References to external files do require explicit 
-enumeration, so are one of the first attributes to consider adding. </p>
-
-<p>
-
-The task is a directory based task, so attributes like 
-<b>includes=&quot;**/*.vb&quot;</b> and 
-<b>excludes=&quot;broken.vb&quot;</b> can be used to control 
-the files pulled in. By default, 
-all *.vb files from the project folder down are included in the command. 
-When this happens the destFile -if not specified-
-is taken as the first file in the list, which may be somewhat hard to control.
-Specifying the output file with <b>'destfile'</b> seems prudent. </p>
-<p>
-Also, dependency checking only works if destfile is set.
-
-<table border="1" cellpadding="2" cellspacing="0">
-  <tr>
-    <td valign="top"><b>Attribute</b></td>
-    <td valign="top"><b>Description</b></td>
-    <td align="center" valign="top"><b>Example Values</b></td>
-  </tr>
-
-<tr>
-    <td valign="top">additionalModules</td>
-    <td valign="top">Semicolon separated list of modules to refer to</td>
-    </tr>
-  <tr>
-    <td valign="top">defaultexcludes</td>
-    <td valign="top">indicates whether default excludes should be used or not
-      </td>
-    <td valign="top">&quot;true&quot;(default) or &quot;false&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">definitions</td>
-    <td valign="top">defined constants</td>
-    <td valign="top"> &quot;RELEASE;BETA1&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">debug</td>
-    <td valign="top">include debug information</td>
-    <td valign="top">&quot;true&quot;(default)</td>
-    </tr>
-
-<tr>
-    <td valign="top">destFile</td>
-    <td valign="top">name of exe/library to create</td>
-    <td valign="top">&quot;example.exe&quot;</td>
-    </tr>
-  <tr>
-    <td valign="top">excludes</td>
-    <td valign="top">comma- or space-separated list of patterns of files that must be
-      excluded. No files (except default excludes) are excluded when omitted.</td>
-  </tr>
-  <tr>
-    <td valign="top">excludesfile</td>
-    <td valign="top">the name of a file. Each line of this file is
-      taken to be an exclude pattern</td>
-  </tr>
-  <tr>
-    <td valign="top">extraOptions</td>
-    <td valign="top">Any extra options which aren't explicitly 
-        supported by the VisualBasicCompile task </td>
-    <td>&quot;/warnaserror+ /baseaddress:0x12840000&quot;</td>
-  </tr>
-
-  <tr>
-    <td valign="top">failOnError</td>
-    <td valign="top">Should a failed compile halt the build?</td>
-    <td valign="top">&quot;true&quot;(default) or &quot;false&quot;</td>
-  </tr>
-  <tr>
-    <td valign="top">imports</td>
-    <td valign="top">comma-separated list of global imports for namespaces
-	   in referenced metadata files.</td>
-  </tr>
-  <tr>
-    <td valign="top">includes</td>
-    <td valign="top">comma- or space-separated list of patterns of files that must be
-      included. All files are included when omitted.</td>
-  </tr>
-  <tr>
-    <td valign="top">includesfile</td>
-    <td valign="top">the name of a file. Each line of this file is
-      taken to be an include pattern</td>
-  </tr>
-<tr>
-    <td valign="top">mainClass</td>
-    <td valign="top">name of main class for executables</td>
-    <td valign="top">&quot;com.example.project.entrypoint&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">optimize</td>
-    <td valign="top">optimisation flag</td>
-    <td valign="top">&quot;true&quot; or &quot;false&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">optionCompare</td>
-    <td valign="top">Text or binary string comparisons.</td>
-    <td valign="top">&quot;text&quot; or &quot;binary&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">optionExplicit</td>
-    <td valign="top">Require explicit declaration of variables?</td>
-    <td valign="top">&quot;true&quot; or &quot;false&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">optionStrict</td>
-    <td valign="top">Enforce strict language semantics?</td>
-    <td valign="top">&quot;true&quot; or &quot;false&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">references</td>
-    <td valign="top">Semicolon separated list of dlls to refer to</td>
-    <td valign="top">&quot;mylib.dll;nunit.dll&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">referenceFiles </td>
-    <td valign="top">Ant Path descriptioon of references to include. 
-    Wildcards should work. </td>
-    <td valign="top"></td>
-    </tr>
-<tr>
-    <td valign="top">removeIntChecks</td>
-    <td valign="top">Remove integer checks?</td>
-    <td valign="top">&quot;true&quot; or &quot;false&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">rootNamespace</td>
-    <td valign="top">Root namespace for all type declarations.</td>
-    <td valign="top">com.example</td>
-    </tr>
-    
-<tr>
-    <td valign="top">srcDir</td>
-    <td valign="top">source directory (default = project directory)</td>
-    <td valign="top">&quot;.&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">targetType</td>
-    <td valign="top">Type of target</td>
-    <td valign="top">&quot;exe&quot;, &quot;module&quot;, &quot;winexe&quot; or &quot;library&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">utf8output</td>
-    <td valign="top">require all compiler output to be in utf-8 format</td>
-    <td valign="top">&quot;true&quot; or &quot;false&quot;(default)</td>
-    </tr>
-<tr>
-    <td valign="top">warnLevel</td>
-    <td valign="top">level of warning currently between 1 and 4 with 4
-    being the strictest. </td>
-    <td valign="top">&quot;1&quot;-&quot;4&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">win32Icon</td>
-    <td valign="top">filename of icon to include</td>
-    <td valign="top">&quot;res/myicon.ico&quot;</td>
-   </tr>
-<tr>
-    <td valign="top">win32res</td>
-    <td valign="top">filename of a win32 resource (.RES)file to include
-    This is not a .NET resource, but it what windows is used to.</td>
-    <td valign="top">&quot;res/myapp.res&quot;</td>
-   </tr>
-
-</table>
-<p>
-Example
-</p>
-<pre>&lt;vbc
-        optimize=&quot;true&quot;
-        debug=&quot;false&quot;
-        warnLevel=&quot;4&quot;
-        targetType=&quot;exe&quot;
-        definitions=&quot;RELEASE&quot;
-        excludes=&quot;src/unicode_class.vb&quot;
-        mainClass = &quot;MainApp&quot;
-        destFile=&quot;NetApp.exe&quot;
-        optionExplicit=&quot;true&quot;
-        optionCompare=&quot;text&quot;
-        /&gt;   
-</pre>
-<hr>
-<h2>&lt;ilasm&gt;</h2>
-<p>Task to assemble .net 'Intermediate Language' files.
-The task will only work on windows until other platforms support csc.exe or 
-an equivalent. ilasm.exe must be on the execute path too.
-</p>
-<p>
-All parameters are optional: &lt;il/&gt; should suffice to produce a debug
-build of all *.il files.
-The option set is roughly compatible with the CSharp class;
-even though the command line options are only vaguely
-equivalent. [The low level commands take things like /OUT=file,
-csc wants /out:file ... /verbose is used some places; /quiet here in
-ildasm... etc.] It would be nice if someone made all the command line
-tools consistent (and not as brittle as the java cmdline tools) 
-</p>
-
-<p>
-
-The task is a directory based task, so attributes like <b>includes=&quot;*.il&quot;</b> and 
-<b>excludes=&quot;broken.il&quot;</b> can be used to control the files pulled in. 
-Each file is built on its own, producing an appropriately named output file unless
-manually specified with <b>outfile</b>
-</p>
-
-
-<table border="1" cellpadding="2" cellspacing="0">
-  <tr>
-    <td valign="top"><b>Attribute</b></td>
-    <td valign="top"><b>Description</b></td>
-    <td align="center" valign="top"><b>Example</b></td>
-  </tr>
-
-  <tr>
-    <td valign="top">defaultexcludes</td>
-    <td valign="top">indicates whether default excludes should be used or not
-      (&quot;yes&quot;/&quot;no&quot;). Default excludes are used when omitted.</td>
-  </tr>
-
-  <tr>
-    <td valign="top">debug</td>
-    <td valign="top">include debug information</td>
-    <td valign="top">true (default)</td>
-  </tr>
-
-  <tr>
-    <td valign="top">excludes</td>
-    <td valign="top">comma separated list of patterns of files that must be
-      excluded. No files (except default excludes) are excluded when omitted.</td>
-  </tr>
-  <tr>
-    <td valign="top">excludesfile</td>
-    <td valign="top">the name of a file. Each line of this file is
-      taken to be an exclude pattern</td>
-  </tr>
-  <tr>
-    <td valign="top">extraOptions</td>
-    <td valign="top">Any extra options which aren't explicitly 
-        supported by the ilasm task, primarily because they
-                arent really documented: use ilasm /? to see them</td>
-    <td></td>
-  </tr>
-  
-  <tr>
-      <td valign="top">failOnError</td>
-      <td valign="top">Should a failed compile halt the build?</td>
-      <td valign="top">&quot;true&quot;(default)</td>
-      </tr>
-  <tr>
-    <td valign="top">fullpaths</td>
-    <td valign="top">Should error text provide the full path to files</td>
-    <td valign="top">&quot;true&quot;(default)</td>
-  </tr>    
-  <tr>
-    <td valign="top">includes</td>
-    <td valign="top">comma separated list of patterns of files that must be
-      included. All files are included when omitted.</td>
-  </tr>
-  <tr>
-    <td valign="top">includesfile</td>
-    <td valign="top">the name of a file. Each line of this file is
-      taken to be an include pattern</td>
-  </tr>
-  <tr>
-    <td valign="top">keyfile</td>
-    <td valign="top">the name of a file containing a private key, with which
-      the assembly output is checksumed and then MD5 signed 
-      to have a <i>strong name</i></td>
-  </tr>
-<tr>
-    <td valign="top">listing</td>
-    <td valign="top">Produce a listing (off by default). Listings go to the
-    current output stream</td>
-    <td valign="top">&quot;on&quot;, &quot;off&quot; (default)</td>
-    </tr>
-<tr>
-    <td valign="top">outputFile</td>
-    <td valign="top">filename of output</td>
-    <td valign="top">&quot;example.exe&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">resourceFile</td>
-    <td valign="top">name of resource file to include</td>
-    <td valign="top">&quot;resources.res&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">srcDir</td>
-    <td valign="top">source directory (default = project directory)</td>
-    <td valign="top"></td>
-    </tr>
-<tr>
-    <td valign="top">targetType</td>
-    <td valign="top">Type of target. library means DLL is output. </td>
-    <td valign="top">&quot;exe&quot;(default), &quot;library&quot;</td>
-    </tr>
-<tr>
-    <td valign="top">verbose</td>
-    <td valign="top">output progress messages</td>
-    <td valign="top">&quot;on&quot;, &quot;off&quot; (default)</td>
-    </tr>
-
-</table>
-<p>
-Example</p>
-<pre>&lt;ilasm
-        outputFile=&quot;app.exe&quot;
-        verbose=&quot;on&quot;
-        listing=&quot;on&quot;
-        owner=&quot;secret&quot;
-        /&gt;
-</pre>
-<h2>&lt;WsdlToDotnet&gt;</h2>
-Why add a wrapper to the MS WSDL tool? 
-So that you can verify that your web services, be they written with Axis or
-anyone else's SOAP toolkit, work with .NET clients.
-<p>
-This task is dependency aware when using a file as a source and destination;
-so if you &lt;get&gt; the file (with <code>usetimestamp="true"</code>) then
-you only rebuild stuff when the WSDL file is changed. Of course,
-if the server generates a new timestamp every time you ask for the WSDL,
-this is not enough...use the &lt;filesmatch&gt; &lt;condition&gt; to
-to byte for byte comparison against a cached WSDL file then make
-the target conditional on that test failing.   
+<h2>Introduction</h2>
  
-<table border="1" cellpadding="2" cellspacing="0">
-  <tr>
-    <td valign="top"><b>Attribute</b></td>
-    <td valign="top"><b>Description</b></td>
-    <td align="center" valign="top"><b>Example</b></td>
-  </tr>
-  <tr>
-    <td valign="top">destFile</td>
-    <td valign="top">name of file to generate. Required</td>
-    <td valign="top">ApacheNet.cs</td>
-  </tr> 
-  <tr>
-    <td valign="top">srcFile</td>
-    <td valign="top">name of WSDL file to use. 
-      Required if url is not set</td>
-    <td valign="top">service.wsdl</td>
-  </tr>
-   <tr>
-    <td valign="top">url</td>
-    <td valign="top">url to retrive WSDL from.
-    required if srcFile is unset</td>
-    <td valign="top">http://localhost/service?wsdl</td>
-  </tr>  
-  <tr>
-    <td valign="top">server</td>
-    <td valign="top">generate server stubs, not client proxy code.
-      optional; default false</td>
-    <td valign="top">"false"(default)</td>
-  </tr> 
-  <tr>
-    <td valign="top">namespace</td>
-    <td valign="top">namespace to place  the source in.
-      optional; default ""</td>
-    <td valign="top">Apache.Net</td>
-  </tr> 
-  <tr>
-    <td valign="top">language</td>
-    <td valign="top">language; one of "CS", "JS", or "VB"
-      optional; </td>
-    <td valign="top"> "CS" (default)</td>
-  </tr> 
-  <tr>
-    <td valign="top">failOnError</td>
-    <td valign="top">Should failure halt the build?</td>
-    <td valign="top">"true"(default)</td>
-  </tr>
-  <tr>
-    <td valign="top">extraOptions</td>
-    <td valign="top">Any extra options which aren't explicitly 
-        supported by the task, like all the proxy server config stuff</td>
-    <td></td>
-  </tr>  
- 
-  </table>
-<hr>
+
+Ant support for .NET goes back to before .NET was released, and
+continues to be expanded based on user demand. Users writing nothing but
+a .NET application, may want to look at the .NET-based
+<A href="http://nant.sourceforge.net/">NAnt</A> project, that supports
+both the Microsoft and the Ximian managed <A
+href="http://go-mono.com/">Mono</A> project's implementation of the
+.NET framework.
+<p>
+
+Over time, the .NET tasks in Ant have tended to evolve to meet a few
+limited needs. Firstly, developers working with complex deployment problems may
+want to use ant to use the fairly advanced deployment tasks Ant ships
+with. Secondly, anyone who has a cross-platform project can use these
+tasks to cover the .NET side of the problem. Here, cross-platform can
+mean more than just Java and .NET: the C++ tasks in the ant-contrib
+project on sourceforge can be used with Ant to do native C++ and .NET
+cross development if that is your need. Finally, Ant support for .NET
+lets one automate .NET development under an automated build process,
+such as AntHill or Cruise Control. 
+
+<p>
+
+What this means is that the Ant tasks for .NET support do not get as
+much rigorous use as the Java tools, and are evolving more slowly -that
+includes the time for support calls to change. But as a consequence,
+developers working on .NET support have more freedom to play around with
+the code. It also means that the fairly unusual set of tasks supported
+by ant enable a few interesting operations that can not be performed any
+other way: 
+<ol>
+
+<li>Integrating with a Java based SOAP Service -generating C# code from
+the server's WSDL and running it against the server. 
+</li>
+<li>Building and deploying a C#-based Web Service, then using the Apache
+Axis tasks to create JUnit tests to call the endpoints.
+
+<li>Patching .NET type libraries to work with more complex IDL than the
+basic &lt;importtypelib&gt; wrapper around tlbimport supports. Hence the
+disassembler and the reassembler.
+</li>
+
+</ol>
+Needless to say, possible does not mean easy. 
+<A href="http://www.manning.com/hatcher/chap15.pdf">Chapter 15</A> of
+Java Development with Ant covers the first of these, using the Ant1.5
+version of the tasks. Going the other way -generating Java client
+code and JUnit testcases is covered in 
+<A href="http://www.iseran.com/Steve/papers/interop/">The Wondrous curse
+of Interop</A>. The final trick, IDL and Typelib abuse, is not
+documented as we do not want to encourage such an ugly practice. It,
+can, however, be done if absolutely necessary. The trick is a sequence
+of &lt;importtypelib/&gt;, &lt;ildasm&gt;, &lt;replace&gt; and finally 
+&lt;ilasm&gt;.
+
+<h2>Task List</h2>
+
+<table border="0" >
+<tr>
+  <td><a href="csc.html">Csc</a></td>
+  <td>Compiles C# code</td>
+</tr>  
+
+<tr>
+  <td><a href="vbc.html">vbc</a></td>
+  <td>Compiles VB.Net code</td>
+</tr>  
+
+<tr>
+  <td><a href="jsharp.html">jsharp</a></td>
+  <td>Compiles J# files</td>
+</tr>  
+
+<tr>
+  <td><a href="ildasm.html">ildasm</a></td>
+  <td>Disassembles .NET executables and libraries</td>
+</tr>  
+
+<tr>
+  <td><a href="ilasm.html">ilasm</a></td>
+  <td>Assembles .il files</td>
+</tr>  
+
+<tr>
+  <td><a href="wsdltodotnet.html">WsdlToDotnet</a></td>
+  <td>Generates .NET code (C# or VB) from a WSDL file</td>
+</tr>  
+
+<tr>
+  <td><a href="ImportTypelib.html">ImportTypelib</a></td>
+  <td>Imports a COM type library into .NET</td>
+</tr>  
+
+</table>
+
 
 <hr>
 <h2> Change Log </h2>
 
+<h4>Ant1.6</h4>
+This revision goes along with NET 1.1, though there is no reason why
+it should not work on other versions.
+<p>
+
+<ol>
+<li>vbc task</li>
+<li>jsharp task</li>
+<li>mono support</li>
+<li>ilasm</li>
+<li>tlbimport</li>
+<li>Reference filesets in the compiler tasks</li>
+<li>definitions in the compiler tasks</li>
+<li>multiple source filesets in the compiler tasks. If these are used, the
+implicit fileset is disabled</li>
+</ol>
+
+The compile tasks: vbc, jsharp, and csc, all contain lots of common code
+in a shared base class: if you can use one you should be able to use
+another. 
+
+<h4>Ant 1.5</h4>
+This revision goes along with NET 1.0 (SP1) 
+<ol>
+<li>CSC: added filealign</li>
+<li>CSC: added reference to office.dll</li>
+<li>CSC: dependency checking! only if destFile is set!
+<li>WsdlToDotnet written
+</ol>
+
+<h4>Version 0.4</h4>
+This is the beta-2 revision of the tasks. 
+<ol>
+<li>ILASM: pulled the owner attribute, added keyfile for giving binaries a strong name
+(MD5 hash of the checksum)</li>
+<li>CSC: added win32res , noConfig, utf8output, fullpaths</li>
+<li>CSC: </li>
+</ol>
+ 
+<h4>Version 0.3</h4>
+
+The changes here reflect Beta-1 of the dotnet SDK and experience of use in 
+more complex projects. This build does not work with the older SDK, 
+primarily because the automatic reference feature references libraries
+only found in the new SDK version.  
+<p>
+External changes</p>
+<ul>
+<li>Recursive inclusion of .cs and .il files</li>
+
+<li>Documentation enhanced, includes examples and details of all parameters</li>
+
+<li>The csc task automatically includes the common dotnet assemblies, so
+there is no need to remember to refer to 'System.dll', 'System.Web.Services',
+ etc. This feature can be disabled by setting the 'includeDefaultReferences' 
+ flag to false. </li>
+
+ <li> References can also be referred to using the ReferenceFiles parameter, which
+is an ant path specification. The old 'references' string is still retained.</li>
+<li> An 'extraoptions' attribute enables the build file to include any CSC options
+which are not explicitly supported in the CSC task. </li>
+</ul>
+
+Internal changes
+<ul>
+<li>Some minor refactoring (move common code a method)</li>
+<li>Application of Jedits JavaStyle task resulted in a major reshaping of
+the codebase and the insertion of a blank line every second line. Significant
+effort was required to revert some (but not all) changes.</li>
+<li>Removed throws clause from methods which can't throw exception<hr>
+<h2> Change Log </h2>
+
+<h4>Ant1.6</h4>
+This revision goes along with NET 1.1, though there is no reason why
+it should not work on other versions.
+<p>
+
+<ol>
+<li>vbc task</li>
+<li>jsharp task</li>
+<li>mono support</li>
+<li>ilasm</li>
+<li>tlbimport</li>
+<li>Reference filesets in the compiler tasks</li>
+<li>definitions in the compiler tasks</li>
+<li>multiple source filesets in the compiler tasks. If these are used, the
+implicit fileset is disabled</li>
+</ol>
+
+The compile tasks: vbc, jsharp, and csc, all contain lots of common code
+in a shared base class: if you can use one you should be able to use
+another. 
+
 <h4>Version 0.5</h4>
 This revision goes along with NET 1.0 (SP1) 
 <ol>
@@ -680,9 +262,24 @@
 
 <h4>Version 0.1</h4>
 Initial proof of concept; very rudimentary support for CSC only. 
+s </li>
+</ul>
+
+The test harness has been expanded to include unicode source file  
+(the build works but the rest of the system has 'issues' with high unicode
+package and method names)
+
+<h4>Version 0.2</h4>
+First public edition, added to the ant cvs tree. Tested on the PDC build of 
+the dotnet SDK only, and still immature. The command execution code was 
+refactored out into a 'NetCommand' class for re-use. The Ilasm task was added
+at this time.
+
+<h4>Version 0.1</h4>
+Initial proof of concept; very rudimentary support for CSC only. 
 
 
-<p align="center">Copyright &copy; 2000-2002 Apache Software Foundation. All rights
+<p align="center">Copyright &copy; 2000-2003 Apache Software Foundation. All rights
 Reserved.</p>
 
 </body>
diff --git a/docs/manual/OptionalTasks/ilasm.html b/docs/manual/OptionalTasks/ilasm.html
new file mode 100644
index 0000000..f88bf9f
--- /dev/null
+++ b/docs/manual/OptionalTasks/ilasm.html
@@ -0,0 +1,288 @@
+    
+<html>
+<head>
+  <meta http-equiv="Content-Language" content="en-us">
+  <title>Ilasm
+ Task</title>
+</head>
+
+<body bgcolor="#ffffff" text="#000000" link="#525D76"
+      alink="#525D76" vlink="#525D76">
+
+<table border="0" width="100%" cellspacing="4">
+
+  <!-- PAGE HEADER -->
+  <tr>
+    <td>
+      <table border="0" width="100%"><tr>
+          <td valign="bottom">
+            <font size="+3" face="arial,helvetica,sanserif"><strong>Ilasm
+ Task</strong></font>
+            <br><font face="arial,helvetica,sanserif">Assembles .NET Intermediate Language files.</font>
+          </td>
+          <td>
+            <!-- PROJECT LOGO -->
+            <a href="http://ant.apache.org/">
+              <img src="../../images/ant_logo_large.gif" align="right" alt="Apache Ant" border="0"/>
+            </a>
+          </td>
+      </tr></table>
+    </td>
+  </tr>
+
+  <!-- START RIGHT SIDE MAIN BODY -->
+  <tr>
+    <td  valign="top" align="left">
+
+          <!-- Applying task/long-description -->
+    <!-- Start Description -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="description">
+          <strong>Description</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+        Assembles .NET Intermediate Language files. ilasm.exe must be on the execute path, unless another executable or the full path to that executable is specified in the <tt>executable</tt> parameter <p> <p> All parameters are optional: &lt;il/&gt; should suffice to produce a debug build of all *.il files. The option set is roughly compatible with the CSharp class; even though the command line options are only vaguely equivalent. [The low level commands take things like /OUT=file, csc wants /out:file ... /verbose is used some places; /quiet here in ildasm... etc.] It would be nice if someone made all the command line tools consistent (and not as brittle as the java cmdline tools) <p> <p> The task is a directory based task, so attributes like <b>includes="*.il" </b> and <b>excludes="broken.il"</b> can be used to control the files pulled in. You can also use nested &lt;src&gt filesets to refer to source. <p>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Description -->
+
+    <!-- Start Attributes -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="attributes">
+          <strong>Parameters</strong></a></font>
+      </td></tr>
+      <tr><td><blockquote>
+        <table>
+          <tr>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Attribute</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Description</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Type</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Requirement</b></font>
+        </td>
+          </tr>
+    <!-- Attribute Group -->    
+    
+    <!-- Attribute Group -->    
+        <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">debug</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set the debug flag on or off.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left" rowspan="10">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Optional</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">destfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the name of exe/library to create.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">extraoptions</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Any extra options which are not explicitly supported by this task.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">failonerror</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, fails if ilasm tool fails.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">keyfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">the name of a file containing a private key.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">listing</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, produce a listing (off by default).</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">outputfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the output file; identical to setDestFile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">resourcefile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">name of resource file to include.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">srcdir</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the source directory of the files to be compiled.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">verbose</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, enable verbose ILASM output.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+
+
+        </table>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Attributes -->
+
+    <!-- Start Elements -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="elements">
+          <strong>Parameters as nested elements</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>reference</strong> (org.apache.tools.ant.types.FileSet)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        add a new reference fileset to the compilation
+<short-description><![CDATA[Add a new reference fileset to the compilation.]]></short-description>
+<description>
+            <![CDATA[add a new reference fileset to the compilation]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>src</strong> (org.apache.tools.ant.types.FileSet)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        add a new source directory to the compile
+<short-description><![CDATA[Add a new source directory to the compile.]]></short-description>
+<description>
+            <![CDATA[add a new source directory to the compile]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Elements -->
+
+
+    </td>
+  </tr>
+  <!-- END RIGHT SIDE MAIN BODY -->
+
+  <!-- FOOTER SEPARATOR -->
+  <tr>
+    <td>
+      <hr noshade="" size="1"/>
+    </td>
+  </tr>
+
+  <!-- PAGE FOOTER -->
+  <tr>
+    <td>
+      <div align="center"><font color="#525D76" size="-1"><em>
+        Copyright &#169; 2000-2003, Apache Software Foundation
+      </em></font></div>
+    </td>
+  </tr>
+
+</table>
+
+</body>
+</html>
diff --git a/docs/manual/OptionalTasks/ildasm.html b/docs/manual/OptionalTasks/ildasm.html
new file mode 100644
index 0000000..f143f47
--- /dev/null
+++ b/docs/manual/OptionalTasks/ildasm.html
@@ -0,0 +1,338 @@
+    
+<html>
+<head>
+  <meta http-equiv="Content-Language" content="en-us">
+  <title>Ildasm
+ Task</title>
+</head>
+
+<body bgcolor="#ffffff" text="#000000" link="#525D76"
+      alink="#525D76" vlink="#525D76">
+
+<table border="0" width="100%" cellspacing="4">
+
+  <!-- PAGE HEADER -->
+  <tr>
+    <td>
+      <table border="0" width="100%"><tr>
+          <td valign="bottom">
+            <font size="+3" face="arial,helvetica,sanserif"><strong>Ildasm
+ Task</strong></font>
+            <br><font face="arial,helvetica,sanserif">Task to take a .NET or Mono -generated managed executable and turn it into ILASM assembly code.</font>
+          </td>
+          <td>
+            <!-- PROJECT LOGO -->
+            <a href="http://ant.apache.org/">
+              <img src="../../images/ant_logo_large.gif" align="right" alt="Apache Ant" border="0"/>
+            </a>
+          </td>
+      </tr></table>
+    </td>
+  </tr>
+
+  <!-- START RIGHT SIDE MAIN BODY -->
+  <tr>
+    <td  valign="top" align="left">
+
+          <!-- Applying task/long-description -->
+    <!-- Start Description -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="description">
+          <strong>Description</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+        Task to take a .NET or Mono -generated managed executable and turn it into ILASM assembly code. Useful when converting imported typelibs into assembler before patching and recompiling, as one has to do when doing advanced typelib work. <p> As well as generating the named output file, the ildasm program will also generate resource files <code>Icons.resources</code> <code>Message.resources</code> and a .res file whose filename stub is derived from the source in ways to obscure to determine. There is no way to control whether or not these files are created, or where they are created (they are created in the current directory; their names come from inside the executable and may be those used by the original developer). This task creates the resources in the directory specified by <code>resourceDir</code> if set, else in the same directory as the <code>destFile</code>. <p> This task requires the .NET SDK installed and ildasm on the path. To disassemble using alternate CLR systems, set the executable attribute to the name/path of the alternate implementation -one that must support all the classic ildasm commands. <p> Dependency logic: the task executes the command if the output file is missing or older than the source file. It does not take into account changes in the options of the task, or timestamp differences in resource files. When the underlying ildasm executable fails for some reason, it leaves the .il file in place with some error message. To prevent this from confusing the dependency logic, the file specified by the <code>dest</code> attribute is <i>always</i> deleted after an unsuccessful build.
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Description -->
+
+    <!-- Start Attributes -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="attributes">
+          <strong>Parameters</strong></a></font>
+      </td></tr>
+      <tr><td><blockquote>
+        <table>
+          <tr>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Attribute</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Description</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Type</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Requirement</b></font>
+        </td>
+          </tr>
+    <!-- Attribute Group -->    
+    
+    <!-- Attribute Group -->    
+        <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">assembler</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">enable (default) or disable assembly language in the output</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left" rowspan="17">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Optional</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">bytes</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">enable or disable (default) the original bytes as comments</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">destfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">the output file (required)</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">encoding</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Select the output encoding: ascii, utf8 or unicode</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">"ascii", "utf8", "unicode"</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">executable</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">override the name of the executable (normally ildasm) or set its full path. Do not set a relative path, as the ugly hacks needed to create resource files in the dest directory force us to change to this directory before running the application. i.e use &lt;property location&gt to create an absolute path from a relative one before setting this value.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">header</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">include header information; default false.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">item</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">name a single item to decode; a class or a method e.g item="Myclass::method" or item="namespace1::namespace2::Myclass:method(void(int32))</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">linenumbers</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">include line number information; default=false</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">metadata</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">include metadata information</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">progressbar</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">show a graphical progress bar in a window during the process; off by default</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">quoteallnames</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">quote all names.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">rawexceptionhandling</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">enable raw exception handling (default = false)</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">resourcedir</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the name of the directory for resources to be created. We cannot control their names, but we can say where they get created. If not set, the directory of the dest file is used</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">showsource</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">include the source as comments (default=false)</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">sourcefile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">the file to disassemble -required</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">srcfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">alternate name for sourceFile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">visibility</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">visibility options: one or more of the following, with + signs to concatenate them: <pre> pub : Public pri : Private fam : Family asm : Assembly faa : Family and Assembly foa : Family or Assembly psc : Private Scope </pre> e.g. visibility="pub+pri". Family means <code>protected</code> in C#;</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+
+
+        </table>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Attributes -->
+
+    <!-- Start Elements -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="elements">
+          <strong>Parameters as nested elements</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Elements -->
+
+
+    </td>
+  </tr>
+  <!-- END RIGHT SIDE MAIN BODY -->
+
+  <!-- FOOTER SEPARATOR -->
+  <tr>
+    <td>
+      <hr noshade="" size="1"/>
+    </td>
+  </tr>
+
+  <!-- PAGE FOOTER -->
+  <tr>
+    <td>
+      <div align="center"><font color="#525D76" size="-1"><em>
+        Copyright &#169; 2000-2003, Apache Software Foundation
+      </em></font></div>
+    </td>
+  </tr>
+
+</table>
+
+</body>
+</html>
diff --git a/docs/manual/OptionalTasks/importtypelib.html b/docs/manual/OptionalTasks/importtypelib.html
new file mode 100644
index 0000000..83d00a5
--- /dev/null
+++ b/docs/manual/OptionalTasks/importtypelib.html
@@ -0,0 +1,206 @@
+    
+<html>
+<head>
+  <meta http-equiv="Content-Language" content="en-us">
+  <title>Importtypelib
+ Task</title>
+</head>
+
+<body bgcolor="#ffffff" text="#000000" link="#525D76"
+      alink="#525D76" vlink="#525D76">
+
+<table border="0" width="100%" cellspacing="4">
+
+  <!-- PAGE HEADER -->
+  <tr>
+    <td>
+      <table border="0" width="100%"><tr>
+          <td valign="bottom">
+            <font size="+3" face="arial,helvetica,sanserif"><strong>Importtypelib
+ Task</strong></font>
+            <br><font face="arial,helvetica,sanserif">Import a COM type library into the .NET framework.</font>
+          </td>
+          <td>
+            <!-- PROJECT LOGO -->
+            <a href="http://ant.apache.org/">
+              <img src="../../images/ant_logo_large.gif" align="right" alt="Apache Ant" border="0"/>
+            </a>
+          </td>
+      </tr></table>
+    </td>
+  </tr>
+
+  <!-- START RIGHT SIDE MAIN BODY -->
+  <tr>
+    <td  valign="top" align="left">
+
+          <!-- Applying task/long-description -->
+    <!-- Start Description -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="description">
+          <strong>Description</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+        Import a COM type library into the .NET framework. <p> This task is a wrapper to .NET's tlbimport; it imports a tlb file to a NET assembly by generating a binary assembly (.dll) that contains all the binding metadata. It uses date timestamps to minimise rebuilds. <p> Example <pre> &lt;importtypelib srcfile="xerces.tlb" destfile="xerces.dll" namespace="Apache.Xerces"/&gt; </pre>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Description -->
+
+    <!-- Start Attributes -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="attributes">
+          <strong>Parameters</strong></a></font>
+      </td></tr>
+      <tr><td><blockquote>
+        <table>
+          <tr>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Attribute</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Description</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Type</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Requirement</b></font>
+        </td>
+          </tr>
+    <!-- Attribute Group -->    
+    
+    <!-- Attribute Group -->    
+        <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">destfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">name the output file. required</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left" rowspan="6">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Optional</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">extraoptions</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set any extra options that are not yet supported by this task.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">namespace</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">what namespace is the typelib to be in. required</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">srcfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">what is the source .tlb file? required.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">unsafe</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">do you want unsafe code.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">usesysarray</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set this to map a COM SafeArray to the System.Array class</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+
+
+        </table>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Attributes -->
+
+    <!-- Start Elements -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="elements">
+          <strong>Parameters as nested elements</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Elements -->
+
+
+    </td>
+  </tr>
+  <!-- END RIGHT SIDE MAIN BODY -->
+
+  <!-- FOOTER SEPARATOR -->
+  <tr>
+    <td>
+      <hr noshade="" size="1"/>
+    </td>
+  </tr>
+
+  <!-- PAGE FOOTER -->
+  <tr>
+    <td>
+      <div align="center"><font color="#525D76" size="-1"><em>
+        Copyright &#169; 2000-2003, Apache Software Foundation
+      </em></font></div>
+    </td>
+  </tr>
+
+</table>
+
+</body>
+</html>
diff --git a/docs/manual/OptionalTasks/jsharp.html b/docs/manual/OptionalTasks/jsharp.html
new file mode 100644
index 0000000..2542f82
--- /dev/null
+++ b/docs/manual/OptionalTasks/jsharp.html
@@ -0,0 +1,454 @@
+    
+<html>
+<head>
+  <meta http-equiv="Content-Language" content="en-us">
+  <title>Jsharp
+ Task</title>
+</head>
+
+<body bgcolor="#ffffff" text="#000000" link="#525D76"
+      alink="#525D76" vlink="#525D76">
+
+<table border="0" width="100%" cellspacing="4">
+
+  <!-- PAGE HEADER -->
+  <tr>
+    <td>
+      <table border="0" width="100%"><tr>
+          <td valign="bottom">
+            <font size="+3" face="arial,helvetica,sanserif"><strong>Jsharp
+ Task</strong></font>
+            <br><font face="arial,helvetica,sanserif">Compile J# source down to a managed .NET application.</font>
+          </td>
+          <td>
+            <!-- PROJECT LOGO -->
+            <a href="http://ant.apache.org/">
+              <img src="../../images/ant_logo_large.gif" align="right" alt="Apache Ant" border="0"/>
+            </a>
+          </td>
+      </tr></table>
+    </td>
+  </tr>
+
+  <!-- START RIGHT SIDE MAIN BODY -->
+  <tr>
+    <td  valign="top" align="left">
+
+          <!-- Applying task/long-description -->
+    <!-- Start Description -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="description">
+          <strong>Description</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+        Compile J# source down to a managed .NET application. <p> J# is not Java. But it is the language closest to Java in the .NET framework. This task compiles jsharp source (.java files), and generates a .NET managed exe or dll. <p>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Description -->
+
+    <!-- Start Attributes -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="attributes">
+          <strong>Parameters</strong></a></font>
+      </td></tr>
+      <tr><td><blockquote>
+        <table>
+          <tr>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Attribute</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Description</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Type</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Requirement</b></font>
+        </td>
+          </tr>
+    <!-- Attribute Group -->    
+    
+    <!-- Attribute Group -->    
+        <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">additionalmodules</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Semicolon separated list of modules to refer to.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left" rowspan="21">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Optional</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">baseaddress</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"></font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">debug</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set the debug flag on or off.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">destdir</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the destination directory of files to be compiled.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">destfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the name of exe/library to create.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">executable</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set the name of the program, overriding the defaults. Can be used to set the full path to a program, or to switch to an alternate implementation of the command, such as the Mono or Rotor versions -provided they use the same command line arguments as the .NET framework edition</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">extraoptions</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Any extra options which are not explicitly supported by this task.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">failonerror</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, fail on compilation errors.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">includedefaultreferences</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, automatically includes the common assemblies in dotnet, and tells the compiler to link in mscore.dll. set the automatic reference inclusion flag on or off this flag controls the /nostdlib option in CSC</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">mainclass</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Sets the name of main class for executables.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">optimize</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, enables optimization flag.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">purejava</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">do we want pure java (default, true) or corrupted J#?</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">referencefiles</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Path of references to include. Wildcards should work.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Path</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">references</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Semicolon separated list of DLLs to refer to.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">securescoping</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Make package scoped code visible to the current assembly only (default: false) .NET does not have package scoping. Instead it has assembly, private and public. By default, package content is public to all.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">srcdir</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the source directory of the files to be compiled.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">targettype</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set the target type to one of exe|library|module|winexe</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">"exe", "library", "module", "winexe"</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">utf8output</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">If true, require all compiler output to be in UTF8 format.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">warnlevel</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Level of warning currently between 1 and 4 with 4 being the strictest.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">int</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">win32icon</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Set the filename of icon to include.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">win32res</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Sets the filename of a win32 resource (.RES) file to include. This is not a .NET resource, but what Windows is used to.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+
+
+        </table>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Attributes -->
+
+    <!-- Start Elements -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="elements">
+          <strong>Parameters as nested elements</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>define</strong> (org.apache.tools.ant.taskdefs.optional.dotnet.DotnetDefine)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        add a define to the list of definitions
+<short-description><![CDATA[Add a define to the list of definitions.]]></short-description>
+<description>
+            <![CDATA[add a define to the list of definitions]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>reference</strong> (org.apache.tools.ant.types.FileSet)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        add a new reference fileset to the compilation
+<short-description><![CDATA[Add a new reference fileset to the compilation.]]></short-description>
+<description>
+            <![CDATA[add a new reference fileset to the compilation]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>resource</strong> (org.apache.tools.ant.taskdefs.optional.dotnet.DotnetResource)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        link or embed a resource
+<short-description><![CDATA[Link or embed a resource.]]></short-description>
+<description>
+            <![CDATA[link or embed a resource]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+    <!-- Start Element -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#828DA6">
+        <font color="#ffffff" face="arial,helvetica.sanserif" size="-1">
+          <strong>src</strong> (org.apache.tools.ant.types.FileSet)</font>
+      </td></tr>
+      <tr><td><blockquote>
+        add a new source directory to the compile
+<short-description><![CDATA[Add a new source directory to the compile.]]></short-description>
+<description>
+            <![CDATA[add a new source directory to the compile]]>
+          </description>
+
+      </blockquote></td></tr>
+    </table>
+    <!-- End Element -->
+
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Elements -->
+
+
+    </td>
+  </tr>
+  <!-- END RIGHT SIDE MAIN BODY -->
+
+  <!-- FOOTER SEPARATOR -->
+  <tr>
+    <td>
+      <hr noshade="" size="1"/>
+    </td>
+  </tr>
+
+  <!-- PAGE FOOTER -->
+  <tr>
+    <td>
+      <div align="center"><font color="#525D76" size="-1"><em>
+        Copyright &#169; 2000-2003, Apache Software Foundation
+      </em></font></div>
+    </td>
+  </tr>
+
+</table>
+
+</body>
+</html>
diff --git a/docs/manual/OptionalTasks/perforce.html b/docs/manual/OptionalTasks/perforce.html
index 97c72e2..e96c01b 100644
--- a/docs/manual/OptionalTasks/perforce.html
+++ b/docs/manual/OptionalTasks/perforce.html
@@ -22,10 +22,10 @@
 <br>
 <h2><a name="intro">Introduction</a></h2>
 <p>These tasks provide an interface to the <a href="http://www.perforce.com" target="_top">Perforce</a> SCM.
-The <code>org.apache.tools.ant.taskdefs.optional.perforce</code> package consists of a simple framework to support 
-p4 functionality as well as some Ant tasks encapsulating frequently used (by me :-) p4 commands. 
-However, the addition of new p4 commands is a pretty simple task (see the source). 
-Although it is possible to use these commands on the desktop, 
+The <code>org.apache.tools.ant.taskdefs.optional.perforce</code> package consists of a simple framework to support
+p4 functionality as well as some Ant tasks encapsulating frequently used (by me :-) p4 commands.
+However, the addition of new p4 commands is a pretty simple task (see the source).
+Although it is possible to use these commands on the desktop,
 they were primarily intended to be used by automated build systems.</p>
 
 <p><b>Note:</b> These tasks require the <a href="http://jakarta.apache.org/oro" target="_top">oro 2.0.XXX</a> regular
@@ -79,7 +79,7 @@
         <td><a href="#p4revert">P4Revert</a></td>
         <td>Revert files</td>
     </tr>
-	    
+
     <tr>
         <td><a href="#p4add">P4Add</a></td>
         <td>Add files</td>
@@ -103,7 +103,7 @@
 </table>
 
 <h3>General P4 Properties</h3>
-<p>Each p4 task requires a number of settings, either through build-wide properties, individual attributes 
+<p>Each p4 task requires a number of settings, either through build-wide properties, individual attributes
 or environment variables. These are
 </p>
 <table border="1" cellpadding="2" cellspacing="0">
@@ -147,7 +147,7 @@
 <p> Your local installation of Perforce may require other settings (e.g.
 P4PASSWD, P4CONFIG). Many of these settings can be set using the globalopts
 attribute (described below), but not all. If a setting cannot be set
-by the command-line options, then it can only be set outside of Ant as an 
+by the command-line options, then it can only be set outside of Ant as an
 environment variable.
 </p>
 <p>
@@ -245,7 +245,7 @@
 
 <h2><a name="p4change">P4Change</a></h2>
 <h3>Description:</h3>
-<p>Request a new changelist from the Perforce server. 
+<p>Request a new changelist from the Perforce server.
 This task sets the ${p4.change} property which can then be passed to <A HREF="#p4submit">P4Submit</A>,
 <A HREF="#p4edit">P4Edit</A>, or <a HREF="#p4add">P4Add</A>, or <a HREF="#p4delete">P4Delete</A>,
 then to <A HREF="#p4submit">P4Submit</A>.
@@ -384,7 +384,8 @@
   </tr>
   <tr>
     <td valign="top">view</td>
-    <td valign="top">client view to use for label</td>
+    <td valign="top">client view to use for label<br/>
+    The view can contain multiple lines separated by ; or :</td>
     <td valign="top" align="center">No</td>
   </tr>
   <tr>
@@ -403,9 +404,10 @@
 <h3>Examples</h3>
 <pre>
 &lt;p4label
-	name=&quot;NightlyBuild:${DSTAMP}:${TSTAMP}&quot; 
+	name=&quot;NightlyBuild:${DSTAMP}:${TSTAMP}&quot;
 	desc=&quot;Auto Nightly Build&quot;
 	lock=&quot;locked&quot;
+	label=&quot;//firstdepot/...;//secondepot/foo/bar/...&quot;
 /&gt;
 </pre>
 <hr>
@@ -614,7 +616,7 @@
     <td valign="top">Revert only unchanged files (p4 revert -a)</td>
     <td valign="top" align="center">No</td>
   </tr>
-  
+
 </table>
 
 <h3>Examples</h3>
@@ -643,7 +645,7 @@
   <tr>
     <td valign="top">commandlength</td>
     <td valign="top">A positive integer specifying the maximum length
-        of the commandline when calling Perforce to add the files. 
+        of the commandline when calling Perforce to add the files.
         Defaults to 450, higher values mean faster execution,
         but also possible failures.</td>
     <td valign="top" align="center">No</td>
@@ -655,7 +657,7 @@
 associated with the default changelist.</td>
     <td valign="top" align="center">No</td>
   </tr>
-  
+
 </table>
 
 <h3>Examples</h3>
@@ -920,7 +922,6 @@
 <pre>
 &lt;p4resolve
     view=&quot;//depot/projects/projectfoo/main/src/Blah.java...&quot;
-    change=&quot;${p4.change}&quot;
     resolvemode=&quot;automatic&quot;/&gt;
 </pre>
 
@@ -942,12 +943,12 @@
     <td valign="top">V1.1</td>
     <td valign="top">Fixed cross platform (NT/Unix) bug<br>
     Refactored p4 output handling code<br>
-    Refactored exec'ing code</td>    
+    Refactored exec'ing code</td>
 </tr>
 <tr>
     <td valign="top">Jan 2003</td>
     <td valign="top">V1.2</td>
-    <td valign="top">Added globalopts to P4Base to allow 
+    <td valign="top">Added globalopts to P4Base to allow
                      additional global options to be set.<br>
                      Added p4fstat task</td>
 </tr>
diff --git a/docs/manual/OptionalTasks/scp.html b/docs/manual/OptionalTasks/scp.html
index 29892be..2f37c03 100644
--- a/docs/manual/OptionalTasks/scp.html
+++ b/docs/manual/OptionalTasks/scp.html
@@ -20,7 +20,7 @@
 in the Ant distribution.  See <a
 href="../install.html#librarydependencies">Library Dependencies</a>
 for more information.  This task has been tested with jsch-0.1.2 to
-jsch-0.1.7.</p>
+jsch-0.1.8.</p>
 
 <h3>Parameters</h3>
 <table border="1" cellpadding="2" cellspacing="0">
diff --git a/docs/manual/OptionalTasks/sshexec.html b/docs/manual/OptionalTasks/sshexec.html
index 4b8d35b..b5a4d4d 100644
--- a/docs/manual/OptionalTasks/sshexec.html
+++ b/docs/manual/OptionalTasks/sshexec.html
@@ -18,8 +18,9 @@
 <p><b>Note:</b> This task depends on external libraries not included
 in the Ant distribution.  See <a
 href="../install.html#librarydependencies">Library Dependencies</a>
-for more information.  This task has been tested with jsch-0.1.7 and
-won't work with earlier versions of jsch..</p>
+for more information.  This task has been tested with jsch-0.1.7 to
+jsch-0.1.8 and won't work with versions of jsch earlier than
+0.1.7.</p>
 
 <h3>Parameters</h3>
 <table border="1" cellpadding="2" cellspacing="0">
diff --git a/docs/manual/OptionalTasks/starteam.html b/docs/manual/OptionalTasks/starteam.html
index 64de0f5..91d5d51 100644
--- a/docs/manual/OptionalTasks/starteam.html
+++ b/docs/manual/OptionalTasks/starteam.html
@@ -571,10 +571,10 @@
   </tr> 
   <tr>
     <td valign="top">buildlabel</td>
-    <td valign="top">Yes (default) means that the label attribute is to be saved as a &quot;build label&quot;.  
+    <td valign="top">Yes means that the label attribute is to be saved as a &quot;build label&quot;.  
       This means that Change Requests which have an &quot;AddressedIn&quot; field value of &quot;next build&quot;
        will have this label assigned to that field when the label is created.  
-       No means that no CRs will have this label assigned to them.  This will have no effect if <b>revisionlabel</b> is also true.  </td>
+       No (default) means that no CRs will have this label assigned to them.  This will have no effect if <b>revisionlabel</b> is also true.  </td>
     <td align="center" valign="top">no</td>
   </tr> 
 
diff --git a/docs/manual/OptionalTasks/wsdltodotnet.html b/docs/manual/OptionalTasks/wsdltodotnet.html
new file mode 100644
index 0000000..3cd786e
--- /dev/null
+++ b/docs/manual/OptionalTasks/wsdltodotnet.html
@@ -0,0 +1,230 @@
+    
+<html>
+<head>
+  <meta http-equiv="Content-Language" content="en-us">
+  <title>Wsdltodotnet
+ Task</title>
+</head>
+
+<body bgcolor="#ffffff" text="#000000" link="#525D76"
+      alink="#525D76" vlink="#525D76">
+
+<table border="0" width="100%" cellspacing="4">
+
+  <!-- PAGE HEADER -->
+  <tr>
+    <td>
+      <table border="0" width="100%"><tr>
+          <td valign="bottom">
+            <font size="+3" face="arial,helvetica,sanserif"><strong>Wsdltodotnet
+ Task</strong></font>
+            <br><font face="arial,helvetica,sanserif">Converts a WSDL file or URL resource into a .NET language.</font>
+          </td>
+          <td>
+            <!-- PROJECT LOGO -->
+            <a href="http://ant.apache.org/">
+              <img src="../../images/ant_logo_large.gif" align="right" alt="Apache Ant" border="0"/>
+            </a>
+          </td>
+      </tr></table>
+    </td>
+  </tr>
+
+  <!-- START RIGHT SIDE MAIN BODY -->
+  <tr>
+    <td  valign="top" align="left">
+
+          <!-- Applying task/long-description -->
+    <!-- Start Description -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="description">
+          <strong>Description</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+        Converts a WSDL file or URL resource into a .NET language. Why add a wrapper to the MS WSDL tool? So that you can verify that your web services, be they written with Axis or anyone else's SOAP toolkit, work with .NET clients. This task is dependency aware when using a file as a source and destination; so if you &lt;get&gt; the file (with <code>usetimestamp="true"</code>) then you only rebuild stuff when the WSDL file is changed. Of course, if the server generates a new timestamp every time you ask for the WSDL, this is not enough...use the &lt;filesmatch&gt; &lt;condition&gt; to to byte for byte comparison against a cached WSDL file then make the target conditional on that test failing. See "Creating an XML Web Service Proxy", "wsdl.exe" docs in the framework SDK documentation
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Description -->
+
+    <!-- Start Attributes -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="attributes">
+          <strong>Parameters</strong></a></font>
+      </td></tr>
+      <tr><td><blockquote>
+        <table>
+          <tr>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Attribute</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Description</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Type</b></font>
+        </td>
+        <td bgcolor="#cccccc" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif"><b>Requirement</b></font>
+        </td>
+          </tr>
+    <!-- Attribute Group -->    
+    
+    <!-- Attribute Group -->    
+        <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">destfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Name of the file to generate. Required</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left" rowspan="8">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Optional</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">extraoptions</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Any extra WSDL.EXE options which aren't explicitly supported by the ant wrapper task; optional</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">failonerror</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Whether or not a failure should halt the build. Optional - default is <code>true</code>.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">language</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">set the language; one of "CS", "JS", or "VB" optional, default is CS for C# source</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">namespace</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">namespace to place the source in. optional; default ""</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">server</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">flag to enable server side code generation; optional, default=false</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">boolean</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">srcfile</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">The local WSDL file to parse; either url or srcFile is required.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">File</font>
+        </td>
+    </tr>
+    <!-- Attribute -->
+    <tr>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">url</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">Sets the URL to fetch. Fetching is by wsdl.exe; Ant proxy settings are ignored; either url or srcFile is required.</font>
+        </td>
+        <td bgcolor="#eeeeee" valign="top" align="left">
+          <font color="#000000" size="-1" face="arial,helvetica,sanserif">String</font>
+        </td>
+    </tr>
+
+
+        </table>
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Attributes -->
+
+    <!-- Start Elements -->
+    <table border="0" cellspacing="0" cellpadding="2" width="100%">
+      <tr><td>&nbsp;</td></tr>
+
+      <tr><td bgcolor="#525D76">
+        <font color="#ffffff" face="arial,helvetica.sanserif">
+          <a name="elements">
+          <strong>Parameters as nested elements</strong></a></font>
+      </td></tr>
+
+      <tr><td><blockquote>
+
+      </blockquote></td></tr>
+
+    </table>
+    <!-- End Elements -->
+
+
+    </td>
+  </tr>
+  <!-- END RIGHT SIDE MAIN BODY -->
+
+  <!-- FOOTER SEPARATOR -->
+  <tr>
+    <td>
+      <hr noshade="" size="1"/>
+    </td>
+  </tr>
+
+  <!-- PAGE FOOTER -->
+  <tr>
+    <td>
+      <div align="center"><font color="#525D76" size="-1"><em>
+        Copyright &#169; 2000-2003, Apache Software Foundation
+      </em></font></div>
+    </td>
+  </tr>
+
+</table>
+
+</body>
+</html>
diff --git a/docs/manual/conceptstypeslist.html b/docs/manual/conceptstypeslist.html
index 3ec9ed6..2626876 100644
--- a/docs/manual/conceptstypeslist.html
+++ b/docs/manual/conceptstypeslist.html
@@ -15,6 +15,7 @@
 <a href="CoreTasks/common.html">Common Attributes</a><br>
 
 <h3>Core Types</h3>
+<a href="CoreTypes/assertions.html">Assertions Type</a><br>
 <a href="CoreTypes/description.html">Description Type</a><br>
 <a href="dirtasks.html">Directory-based Tasks</a><br>
 <a href="CoreTypes/dirset.html">DirSet</a><br>
diff --git a/docs/manual/cover.html b/docs/manual/cover.html
index a6caeea..9cfb79d 100644
--- a/docs/manual/cover.html
+++ b/docs/manual/cover.html
@@ -9,14 +9,14 @@
 <div align="center"> 
   <h1><img src="../images/ant_logo_large.gif" width="190" height="120"></h1>
   <h1>Apache Ant 1.6 Manual</h1>
-  <p align="left">This is the manual for version 1.6alpha of 
+  <p align="left">This is the manual for version 1.6 of 
   <a href="http://ant.apache.org/index.html">Apache Ant</a>. 
     If your version 
     of Ant (as verified with <tt>ant -version</tt>) is older or newer than this 
     version then this is not the correct manual set. Please use the documentation 
     appropriate to your current version. Also, if you are using a version
     older than the most recent release, we recommend an upgrade to fix bugs
-    as well as provide new functionality </p>
+    as well as provide new functionality. </p>
   <p>&nbsp;</p>
 </div>
 <hr>
diff --git a/docs/manual/credits.html b/docs/manual/credits.html
index e9e9fff..f3c49b8 100644
--- a/docs/manual/credits.html
+++ b/docs/manual/credits.html
@@ -43,7 +43,7 @@
 </ul>
 
 <center>
-<p>Version: 1.6alpha<br>
+<p>Version: 1.6<br>
 $Id$</p>
 </center>
 <hr>
diff --git a/docs/manual/ide.html b/docs/manual/ide.html
index 67c5a37..131b286 100644
--- a/docs/manual/ide.html
+++ b/docs/manual/ide.html
@@ -32,11 +32,11 @@
     </a>
   </li>
   <li>
-    <a href="http://jde.sunsite.dk/">
-      Emacs JDE
+    <a href="http://jdee.sunsite.dk/">
+      JDEE (Java Development Environment for Emacs)
     </a> has built-in text ANT integration: selection of target through text
     field, execution, hyperlink to compilation errors. Installation: built-in
-    JDE  2.2.8 or later. Configuration: through customize menu
+    JDEE 2.2.8 or later. Configuration: through customize menu
     "Jde Build Function"
   </li>
   <li>
diff --git a/src/etc/testcases/filters/concat.xml b/src/etc/testcases/filters/concat.xml
index 4fe1951..2c61182 100644
--- a/src/etc/testcases/filters/concat.xml
+++ b/src/etc/testcases/filters/concat.xml
@@ -19,7 +19,7 @@
 
   <target name="testFilterReaderNoArgs" depends="init">
     <copy file="input/concatfilter.test"
-          tofile="result/concat.filterReaderNoArgs.test">
+          tofile="result/concat.FilterReaderNoArgs.test">
       <filterchain>
         <filterreader classname="org.apache.tools.ant.filters.ConcatFilter"/>
       </filterchain>
@@ -28,7 +28,7 @@
 
   <target name="testFilterReaderPrepend" depends="init">
     <copy file="input/concatfilter.test"
-          tofile="result/concat.filterReaderPrepend.test">
+          tofile="result/concat.FilterReaderPrepend.test">
       <filterchain>
         <filterreader classname="org.apache.tools.ant.filters.ConcatFilter">
           <param name="prepend" value="result/prepend.txt"/>
@@ -39,7 +39,7 @@
 
   <target name="testFilterReaderAppend" depends="init">
     <copy file="input/concatfilter.test"
-          tofile="result/concat.filterReaderAppend.test">
+          tofile="result/concat.FilterReaderAppend.test">
       <filterchain>
         <filterreader classname="org.apache.tools.ant.filters.ConcatFilter">
           <param name="append" value="result/append.txt"/>
@@ -50,7 +50,7 @@
 
   <target name="testFilterReaderPrependAppend" depends="init">
     <copy file="input/concatfilter.test"
-          tofile="result/concat.filterReaderPrependAppend.test">
+          tofile="result/concat.FilterReaderPrependAppend.test">
       <filterchain>
         <filterreader classname="org.apache.tools.ant.filters.ConcatFilter">
           <param name="prepend" value="result/prepend.txt"/>
@@ -63,7 +63,7 @@
   <target name="testConcatFilter" depends="init">
     <typedef name="concatfilter" classname="org.apache.tools.ant.filters.ConcatFilter"/>
     <copy file="input/concatfilter.test"
-          tofile="result/concat.concatfilter.test">
+          tofile="result/concat.ConcatFilter.test">
       <filterchain>
         <concatfilter/>
       </filterchain>
@@ -73,7 +73,7 @@
   <target name="testConcatFilterPrepend" depends="init">
     <typedef name="concatfilter" classname="org.apache.tools.ant.filters.ConcatFilter"/>
     <copy file="input/concatfilter.test"
-          tofile="result/concat.concatfilterPrepend.test">
+          tofile="result/concat.ConcatFilterPrepend.test">
       <filterchain>
         <concatfilter prepend="result/prepend.txt"/>
       </filterchain>
@@ -83,7 +83,7 @@
   <target name="testConcatFilterAppend" depends="init">
     <typedef name="concatfilter" classname="org.apache.tools.ant.filters.ConcatFilter"/>
     <copy file="input/concatfilter.test"
-          tofile="result/concat.concatfilterAppend.test">
+          tofile="result/concat.ConcatFilterAppend.test">
       <filterchain>
         <concatfilter append="result/append.txt"/>
       </filterchain>
@@ -93,7 +93,7 @@
   <target name="testConcatFilterPrependAppend" depends="init">
     <typedef name="concatfilter" classname="org.apache.tools.ant.filters.ConcatFilter"/>
     <copy file="input/concatfilter.test"
-          tofile="result/concat.concatfilterPrependAppend.test">
+          tofile="result/concat.ConcatFilterPrependAppend.test">
       <filterchain>
         <concatfilter prepend="result/prepend.txt" append="result/append.txt"/>
       </filterchain>
diff --git a/src/etc/testcases/taskdefs/macrodef.xml b/src/etc/testcases/taskdefs/macrodef.xml
index 8a67d47..4669a6c 100644
--- a/src/etc/testcases/taskdefs/macrodef.xml
+++ b/src/etc/testcases/taskdefs/macrodef.xml
@@ -45,14 +45,4 @@
     </nested>
   </target>
 
-  <target name="xpathstyle">
-    <macrodef name="testing" attributestyle="xpath">
-      <attribute name="abc"/>
-      <sequential>
-        <echo>attribute is @abc@abc</echo>
-      </sequential>
-    </macrodef>
-
-    <testing abc="this is a test"/>
-  </target>
 </project>
diff --git a/src/etc/testcases/taskdefs/optional/dotnet.xml b/src/etc/testcases/taskdefs/optional/dotnet.xml
index 2eed369..2207728 100644
--- a/src/etc/testcases/taskdefs/optional/dotnet.xml
+++ b/src/etc/testcases/taskdefs/optional/dotnet.xml
@@ -142,7 +142,7 @@
       destFile="${testCSC.exe}"
       targetType="exe"
       executable="mcs"
-      includedefaultreferences="false"
+      includedefaultreferences="true"
       >
     </csc>
     <available property="app.created" file="${testCSC.exe}"/>
@@ -179,7 +179,7 @@
       targetType="exe"
       srcDir="."
       executable="mcs"
-      includedefaultreferences="false"
+      includedefaultreferences="true"
       >
     </csc>
     <available property="app.created" file="${testCSC.exe}"/>
@@ -213,7 +213,7 @@
       destFile="${testCSC.dll}"
       targetType="library"
       executable="mcs"
-      includedefaultreferences="false"
+      includedefaultreferences="true"
       >
       <src dir="${src.dir}" includes="example2.cs"/>
     </csc>
@@ -251,7 +251,7 @@
       destFile="${testCscReferences.exe}"
       targetType="exe"
       executable="mcs"
-      includedefaultreferences="false"
+      includedefaultreferences="true"
       >
       <src file="${src.dir}/example.cs"/>
       <reference file="${testCSC.dll}" />
diff --git a/src/etc/testcases/taskdefs/optional/xmlvalidate.xml b/src/etc/testcases/taskdefs/optional/xmlvalidate.xml
index 76c26fc..7dcd5af 100644
--- a/src/etc/testcases/taskdefs/optional/xmlvalidate.xml
+++ b/src/etc/testcases/taskdefs/optional/xmlvalidate.xml
@@ -25,6 +25,16 @@
     </xmlvalidate>
   </target>
 
+  <target name="xmlcatalogViaRefid">
+    <xmlcatalog classpath="xml" id="cat">
+      <dtd publicID="-//stevo//DTD doc 1.0//EN" location="doc.dtd"/>
+    </xmlcatalog>
+    <xmlvalidate warn="false">
+      <xmlcatalog refid="cat"/>
+      <fileset dir="xml" includes="**/about.xml"/>
+    </xmlvalidate>
+  </target>
+
   <target name="xmlcatalognested">
     <xmlvalidate warn="false">
       <fileset dir="xml" includes="**/about.xml"/>
diff --git a/src/etc/testcases/taskdefs/replace.xml b/src/etc/testcases/taskdefs/replace.xml
index 079d34a..44eb0c1 100644
--- a/src/etc/testcases/taskdefs/replace.xml
+++ b/src/etc/testcases/taskdefs/replace.xml
@@ -2,6 +2,8 @@
 
 <project name="xxx-test" basedir="." default="test1">
 
+  <property name="tmp.dir" location="replace/tmp"/>
+
   <target name="test1">
     <replace/>
   </target>
@@ -41,13 +43,22 @@
     </replace>
   </target>
 
-  <target name="test9">
-    <copy file="replace/source.txt" tofile="replace/output.txt"/>
-    <loadfile srcFile="replace/value.txt" property="content"/>
-    <replace file="replace/output.txt" token="@@@Replace this@@@" value="${content}"/>
+  <target name="test9-setup">
+    <!-- this fixing of line endings is necessary because the replace task is transforming the line endings -->
+    <!-- of the replacement tokens and values to the platform default -->
+    <!-- in certain cases (checkout done with cvs of cygwin, the line endings of the various files do not match-->
+    <!-- the system property line.separator -->
+    <copy file="replace/source.txt" tofile="${tmp.dir}/output.txt"/>
+    <copy file="replace/value.txt" tofile="${tmp.dir}/value.txt" />
+    <copy file="replace/result.txt" tofile="${tmp.dir}/result.txt" />
+    <fixcrlf srcdir="${tmp.dir}" includes="*.txt"/>
+  </target>
+  <target name="test9" depends="test9-setup">
+    <loadfile srcFile="${tmp.dir}/value.txt" property="content"/>
+    <replace file="${tmp.dir}/output.txt" token="@@@Replace this@@@" value="${content}"/>
   </target>
 
   <target name="cleanup">
-      <delete file="replace/output.txt" quiet="true"/>
+      <delete dir="${tmp.dir}" quiet="true"/>
   </target>
 </project>
diff --git a/src/etc/testcases/taskdefs/replace/result.txt b/src/etc/testcases/taskdefs/replace/result.txt
index 15b2d69..a74e06e 100644
--- a/src/etc/testcases/taskdefs/replace/result.txt
+++ b/src/etc/testcases/taskdefs/replace/result.txt
@@ -4,3 +4,4 @@
 This is line four
 This is line five
 This is line six
+
diff --git a/src/etc/testcases/types/assertions.xml b/src/etc/testcases/types/assertions.xml
new file mode 100644
index 0000000..d9d8a78
--- /dev/null
+++ b/src/etc/testcases/types/assertions.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0"?>
+
+<project name="assertions" basedir="." default="init">
+
+  <property name="build.dir" location="assertions/build"/>
+  <property name="src.dir" location="assertions"/>
+  <property name="classname" value="AssertionTest"/>
+  
+  <path id="assert.classpath">
+    <pathelement location="${build.dir}"/>
+  </path>
+  
+  <target name="setup" >
+    <mkdir dir="${build.dir}"/>
+    <javac srcdir="${src.dir}"
+      includes="*.java"
+      source="1.4"
+      debug="true"
+      destdir="${build.dir}"
+      />
+  </target>
+  
+  <target name="teardown" >
+    <delete dir="${build.dir}"/>
+  </target>
+
+  <!-- if per-class assertions work, this run asserts -->
+  <target name="test-classname" depends="setup">
+    <java fork="true" failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath">
+      <assertions enablesystemassertions="true">
+        <enable class="${classname}" />
+      </assertions>
+    </java>
+  </target>
+  
+  <!-- if package works, this run asserts -->
+  <target name="test-package" depends="setup">
+    <java fork="true"  failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath">
+      <assertions enableSystemAssertions="false" >
+        <enable package="..." />
+      </assertions>
+    </java>
+  </target>
+
+  <!-- this test should run the app successfully -->
+  <target name="test-empty-assertions" depends="setup">
+    <java fork="true"  failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath">
+      <assertions/>
+    </java>
+  </target>  
+
+  <!-- this test should run the app successfully -->
+  <target name="test-disable" depends="setup">
+    <java fork="true" failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath">
+      <assertions enableSystemAssertions="false" >
+        <enable package="..." />
+        <disable class="${classname}" />
+      </assertions>
+    </java>
+  </target>  
+
+  <!-- repeated settigns result in the last declaration winning
+    except that the rule 'classes win over packages takes priority
+    this run will assert -->
+  <target name="test-override" depends="setup">
+    <java fork="true" failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath">
+      <assertions enableSystemAssertions="false" >
+        <enable package="..." />
+        <disable class="${classname}" />
+        <enable class="${classname}" />
+        <disable package="..." />
+      </assertions>
+    </java>
+  </target>  
+
+  <!-- repeated settigns result in the last declaration winning;
+    this run will not assert -->
+  <target name="test-override2" depends="setup">
+    <java fork="true" failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath">
+      <assertions enableSystemAssertions="false" >
+        <enable package="..." />
+        <enable class="${classname}" />
+        <disable class="${classname}" />
+      </assertions>
+    </java>
+  </target>  
+  
+  <!-- if references work, this run asserts -->
+  <target name="test-references">
+  <assertions id="project.assertions" >
+    <enable package="org.apache.test" />
+    <disable package="org.apache.log4j"/>
+    <enable package="..."/>
+  </assertions>  
+    <java fork="true" failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath">
+      <assertions refid="project.assertions"/>
+    </java>
+  </target>
+  
+  <!-- when fork=false; we need to reject the construct -->
+  <target name="test-nofork" depends="setup">
+    <java fork="false" failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath">
+      <assertions enablesystemassertions="true">
+        <enable class="${classname}" />
+      </assertions>
+    </java>
+  </target>  
+
+  <!-- this throws a build error -->
+  <target name="test-multiple-assertions" depends="setup">
+    <java fork="true" failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath">
+      <assertions enablesystemassertions="true">
+        <enable class="${classname}" />
+      </assertions>
+      <assertions/>
+    </java>
+  </target>  
+  
+  <!-- should throw a build exception -->
+  <target name="test-reference-abuse" depends="setup">
+  <assertions id="project.assertions2" >
+    <enable package="org.apache.test" />
+    <disable package="org.apache.log4j"/>
+    <enable package="..."/>
+  </assertions>  
+    <java fork="true" failonerror="true"
+      classname="${classname}"
+      classpathref="assert.classpath">
+      <assertions refid="project.assertions2">
+        <disable class="${classname}" />
+      </assertions>      
+    </java>
+  </target>    
+  
+</project>
diff --git a/src/etc/testcases/types/assertions/AssertionTest.java b/src/etc/testcases/types/assertions/AssertionTest.java
new file mode 100644
index 0000000..60158ca
--- /dev/null
+++ b/src/etc/testcases/types/assertions/AssertionTest.java
@@ -0,0 +1,66 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2003 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ *    any, must include the following acknowlegement:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowlegement may appear in the software itself,
+ *    if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "Ant" and "Apache Software
+ *    Foundation" must not be used to endorse or promote products derived
+ *    from this software without prior written permission. For written
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ *    nor may "Apache" appear in their names without prior written
+ *    permission of the Apache Group.
+ *
+ * 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 APACHE SOFTWARE FOUNDATION OR
+ * ITS 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 Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+ 
+
+/**
+ * this is an assertion tester
+ */
+public class AssertionTest {
+    
+    public static void main(String args[]) {
+		assert true == false : "there exist no facts that are both true and false";
+		System.out.println("Assertions are disabled");
+    }
+    
+}
diff --git a/src/etc/testcases/types/selectors.xml b/src/etc/testcases/types/selectors.xml
index 08e9d7c..0644ac5 100644
--- a/src/etc/testcases/types/selectors.xml
+++ b/src/etc/testcases/types/selectors.xml
@@ -130,8 +130,12 @@
   <target name="modifiedselectortest-scenario-prepare">
       <mkdir dir="${test.dir}/src"/>
       <copy todir="${test.dir}/src">
-          <fileset dir="${ant.home}/lib" includes="ant.jar"/>
-          <fileset dir="${ant.home}/bin"/>
+          <fileset dir="${ant.home}/lib" includes="ant.jar">
+              <type type="file"/>
+          </fileset>
+          <fileset dir="${ant.home}/bin">
+                <type type="file"/>
+          </fileset>
       </copy>
       <touch datetime="12/24/2002 4:00 pm">
           <fileset dir="${test.dir}"/>
diff --git a/src/main/org/apache/tools/ant/DirectoryScanner.java b/src/main/org/apache/tools/ant/DirectoryScanner.java
index 9b7b1b6..d26ffe1 100644
--- a/src/main/org/apache/tools/ant/DirectoryScanner.java
+++ b/src/main/org/apache/tools/ant/DirectoryScanner.java
@@ -65,6 +65,7 @@
 import java.util.Set;
 import java.util.Vector;
 
+import org.apache.tools.ant.taskdefs.condition.Os;
 import org.apache.tools.ant.types.Resource;
 import org.apache.tools.ant.types.ResourceFactory;
 import org.apache.tools.ant.types.selectors.FileSelector;
@@ -163,6 +164,8 @@
 public class DirectoryScanner
        implements FileScanner, SelectorScanner, ResourceFactory {
 
+    /** Is OpenVMS the operating system we're running on? */
+    private static final boolean ON_VMS = Os.isFamily("openvms");
 
     /**
      * Patterns which should be excluded by default.
@@ -725,7 +728,7 @@
                         File canonFile = myfile.getCanonicalFile();
                         String path = fileUtils.removeLeadingPath(canonBase,
                                                                   canonFile);
-                        if (!path.equals(currentelement)) {
+                        if (!path.equals(currentelement) || ON_VMS) {
                             myfile = findFile(basedir, currentelement);
                             if (myfile != null) {
                                 currentelement =
diff --git a/src/main/org/apache/tools/ant/Main.java b/src/main/org/apache/tools/ant/Main.java
index c8aa58b..e355c88 100644
--- a/src/main/org/apache/tools/ant/Main.java
+++ b/src/main/org/apache/tools/ant/Main.java
@@ -290,7 +290,8 @@
     }
 
     /**
-     * Process command line arguments
+     * Process command line arguments.
+     * When ant is started from Launcher, the -lib argument does not get passed through to this routine.
      *
      * @param args the command line arguments.
      *
diff --git a/src/main/org/apache/tools/ant/UnknownElement.java b/src/main/org/apache/tools/ant/UnknownElement.java
index 2a76def..919793a 100644
--- a/src/main/org/apache/tools/ant/UnknownElement.java
+++ b/src/main/org/apache/tools/ant/UnknownElement.java
@@ -552,6 +552,7 @@
             return false;
         }
         UnknownElement other = (UnknownElement) obj;
+        // Are the names the same ?
         if (!equalsString(elementName, other.elementName)) {
             return false;
         }
@@ -561,12 +562,25 @@
         if (!qname.equals(other.qname)) {
             return false;
         }
+        // Are attributes the same ?
         if (!getWrapper().getAttributeMap().equals(
                 other.getWrapper().getAttributeMap())) {
             return false;
         }
-        if (children == null) {
-            return other.children == null;
+        // Is the text the same?
+        //   Need to use equals on the string and not
+        //   on the stringbuffer as equals on the string buffer
+        //   does not compare the contents.
+        if (!getWrapper().getText().toString().equals(
+                other.getWrapper().getText().toString())) {
+            return false;
+        }
+        // Are the sub elements the same ?
+        if (children == null || children.size() == 0) {
+            return other.children == null || other.children.size() == 0;
+        }
+        if (other.children == null) {
+            return false;
         }
         if (children.size() != other.children.size()) {
             return false;
diff --git a/src/main/org/apache/tools/ant/filters/ConcatFilter.java b/src/main/org/apache/tools/ant/filters/ConcatFilter.java
index 87d9809..529ff4f 100644
--- a/src/main/org/apache/tools/ant/filters/ConcatFilter.java
+++ b/src/main/org/apache/tools/ant/filters/ConcatFilter.java
@@ -76,7 +76,7 @@
  * file.</p>
  *
  * @since 1.6
- * @version 2003-09-17
+ * @version 2003-09-23
  * @author Jan Matèrne
  */
 public final class ConcatFilter extends BaseParamFilterReader
@@ -89,10 +89,10 @@
     private File append;
 
     /** Reader for prepend-file. */
-    private Reader prependReader = new EmptyReader();
+    private Reader prependReader = null;
 
     /** Reader for append-file. */
-    private Reader appendReader = new EmptyReader();
+    private Reader appendReader = null;
 
     /**
      * Constructor for "dummy" instances.
@@ -136,12 +136,28 @@
 
         // The readers return -1 if they end. So simply read the "prepend"
         // after that the "content" and at the end the "append" file.
-        ch = prependReader.read();
+        if (prependReader != null) {
+            ch = prependReader.read();
+            if (ch == -1) {
+                // I am the only one so I have to close the reader
+                prependReader.close();
+                prependReader = null;
+            }
+        }
         if (ch == -1) {
             ch = super.read();
         }
         if (ch == -1) {
-            ch = appendReader.read();
+            // don´t call super.close() because that reader is used
+            // on other places ...
+            if (appendReader != null) {
+                ch = appendReader.read();
+                if (ch == -1) {
+                    // I am the only one so I have to close the reader
+                    appendReader.close();
+                    appendReader = null;
+                }
+            }
         }
 
         return ch;
@@ -233,14 +249,4 @@
             appendReader = new BufferedReader(new FileReader(append));
         }
    }
-
-   /**
-    * Reader which is always at the end of file.
-    * Used for easier algorithm (polymorphism instead if-cascades).
-    */
-   private class EmptyReader extends Reader {
-       public int read(char[] ch, int i1, int i2) { return -1; }
-       public void close() { }
-   }
-
 }
\ No newline at end of file
diff --git a/src/main/org/apache/tools/ant/launch/Launcher.java b/src/main/org/apache/tools/ant/launch/Launcher.java
index 4dc5eaa..af8bf1d 100644
--- a/src/main/org/apache/tools/ant/launch/Launcher.java
+++ b/src/main/org/apache/tools/ant/launch/Launcher.java
@@ -57,6 +57,11 @@
 import java.net.URLClassLoader;
 import java.net.MalformedURLException;
 import java.io.File;
+import java.util.StringTokenizer;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
+
 
 /**
  *  This is a launcher for Ant.
@@ -118,6 +123,47 @@
                 + "ant could not be located");
         }
 
+        List libPaths = new ArrayList();
+        List argList = new ArrayList();
+        String[] newArgs;
+
+        for (int i = 0; i < args.length; ++i) {
+            if (args[i].equals("-lib")) {
+                if (i == args.length - 1) {
+                    throw new IllegalStateException("The -lib argument must "
+                        + "be followed by a library location");
+                }
+                libPaths.add(args[++i]);
+            } else {
+                argList.add(args[i]);
+            }
+        }
+
+        if (libPaths.size() == 0) {
+            newArgs = args;
+        } else {
+            newArgs = (String[]) argList.toArray(new String[0]);
+        }
+
+        List libPathURLs = new ArrayList();
+        for (Iterator i = libPaths.iterator(); i.hasNext();) {
+            String libPath = (String) i.next();
+            StringTokenizer myTokenizer
+                = new StringTokenizer(libPath, System.getProperty("path.separator"));
+            while (myTokenizer.hasMoreElements()) {
+                File element = new File(myTokenizer.nextToken());
+                if (element.isDirectory()) {
+                    // add any jars in the directory
+                    URL[] dirURLs = Locator.getLocationURLs(element);
+                    for (int j = 0; j < dirURLs.length; ++j) {
+                        libPathURLs.add(dirURLs[j]);
+                    }
+                }
+                libPathURLs.add(element.toURL());
+            }
+        }
+
+        URL[] libJars = (URL[])libPathURLs.toArray(new URL[0]);
 
         // Now try and find JAVA_HOME
         File toolsJar = Locator.getToolsJar();
@@ -129,13 +175,14 @@
         URL[] userJars = Locator.getLocationURLs(userLibDir);
 
 
-        int numJars = userJars.length + systemJars.length;
+        int numJars = libJars.length + userJars.length + systemJars.length;
         if (toolsJar != null) {
             numJars++;
         }
         URL[] jars = new URL[numJars];
-        System.arraycopy(userJars, 0, jars, 0, userJars.length);
-        System.arraycopy(systemJars, 0, jars, userJars.length,
+        System.arraycopy(libJars, 0, jars, 0, libJars.length);
+        System.arraycopy(userJars, 0, jars, libJars.length, userJars.length);
+        System.arraycopy(systemJars, 0, jars, userJars.length + libJars.length,
             systemJars.length);
 
         if (toolsJar != null) {
@@ -146,6 +193,10 @@
         // now update the class.path property
         StringBuffer baseClassPath
             = new StringBuffer(System.getProperty("java.class.path"));
+        if (baseClassPath.charAt(baseClassPath.length() - 1)
+                == File.pathSeparatorChar) {
+            baseClassPath.setLength(baseClassPath.length() - 1);
+        }
 
         for (int i = 0; i < jars.length; ++i) {
             baseClassPath.append(File.pathSeparatorChar);
@@ -159,7 +210,7 @@
         try {
             Class mainClass = loader.loadClass(MAIN_CLASS);
             AntMain main = (AntMain) mainClass.newInstance();
-            main.startAnt(args, null, null);
+            main.startAnt(newArgs, null, null);
         } catch (Throwable t) {
             t.printStackTrace();
         }
diff --git a/src/main/org/apache/tools/ant/taskdefs/AbstractCvsTask.java b/src/main/org/apache/tools/ant/taskdefs/AbstractCvsTask.java
index c03868e..ecd0745 100644
--- a/src/main/org/apache/tools/ant/taskdefs/AbstractCvsTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/AbstractCvsTask.java
@@ -571,6 +571,10 @@
     /**
      * The directory where the checked out files should be placed.
      *
+     * <p>Note that this is different from CVS's -d command line
+     * switch as Ant will never shorten pathnames to avoid empty
+     * directories.</p>
+     *
      * @param dest directory where the checked out files should be placed
      */
     public void setDest(File dest) {
diff --git a/src/main/org/apache/tools/ant/taskdefs/Classloader.java b/src/main/org/apache/tools/ant/taskdefs/Classloader.java
deleted file mode 100644
index 009d66e..0000000
--- a/src/main/org/apache/tools/ant/taskdefs/Classloader.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2002-2003 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "Ant" and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * 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 APACHE SOFTWARE FOUNDATION OR
- * ITS 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 Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.MagicNames;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.AntClassLoader;
-import org.apache.tools.ant.types.Reference;
-import org.apache.tools.ant.types.Path;
-
-import java.io.File;
-
-/**
- * EXPERIMENTAL
- * Create or modifies ClassLoader. The required pathRef parameter
- * will be used to add classpath elements.
- *
- * The classpath is a regular path. Currently only file components are
- * supported (future extensions may allow URLs).
- *
- * You can modify the core loader by not specifying any name or using
- * "ant.coreLoader". (the core loader is used to load system ant
- * tasks and for taskdefs that don't specify an explicit path).
- *
- * Taskdef and typedef can use the loader you create if the name follows
- * the "ant.loader.NAME" pattern. NAME will be used as a pathref when
- * calling taskdef.
- *
- * This tasks will not modify the core loader if "build.sysclasspath=only"
- *
- * The typical use is:
- * <pre>
- *  &lt;path id="ant.deps" &gt;
- *     &lt;fileset dir="myDir" &gt;
- *        &lt;include name="junit.jar, bsf.jar, js.jar, etc"/&gt;
- *     &lt;/fileset&gt;
- *  &lt;/path&gt;
- *
- *  &lt;classloader pathRef="ant.deps" /&gt;
- *
- * </pre>
- *
- * @author Costin Manolache
- */
-public class Classloader extends Task {
-    /** @see MagicNames#SYSTEM_LOADER_REF */
-    public static final String SYSTEM_LOADER_REF = MagicNames.SYSTEM_LOADER_REF;
-
-    private String name = null;
-    private Path classpath;
-    private boolean reset = false;
-    private boolean parentFirst = true;
-    private String parentName = null;
-
-    /**
-     * Default constructor
-     */
-    public Classloader() {
-    }
-
-    /** Name of the loader. If none, the default loader will be modified
-     *
-     * @param name the name of this loader
-     */
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    /**
-     * Reset the classloader, if it already exists. A new loader will
-     * be created and all the references to the old one will be removed.
-     * (it is not possible to remove paths from a loader). The new
-     * path will be used.
-     *
-     * @param b true if the loader is to be reset.
-     */
-    public void setReset(boolean b) {
-        this.reset = b;
-    }
-
-    public void setReverse(boolean b) {
-        this.parentFirst = !b;
-    }
-
-    public void setParentFirst(boolean b) {
-        this.parentFirst = b;
-    }
-
-    // TODO: add exceptions for delegation or reverse
-
-    // TODO
-    public void setParentName(String name) {
-        this.parentName = name;
-    }
-
-
-    /** Specify which path will be used. If the loader already exists
-     *  and is an AntClassLoader (or any other loader we can extend),
-     *  the path will be added to the loader.
-     */
-    public void setClasspathRef(Reference pathRef) throws BuildException {
-        classpath = (Path) pathRef.getReferencedObject(getProject());
-    }
-
-    /**
-     * Set the classpath to be used when searching for component being defined
-     *
-     * @param classpath an Ant Path object containing the classpath.
-     */
-    public void setClasspath(Path classpath) {
-        if (this.classpath == null) {
-            this.classpath = classpath;
-        } else {
-            this.classpath.append(classpath);
-        }
-    }
-
-    public Path createClasspath() {
-        if (this.classpath == null) {
-            this.classpath = new Path(null);
-        }
-        return this.classpath.createPath();
-    }
-
-
-    public void execute() {
-        try {
-            // Gump friendly - don't mess with the core loader if only classpath
-            if ("only".equals(getProject().getProperty("build.sysclasspath"))
-                && (name == null || SYSTEM_LOADER_REF.equals(name))) {
-                log("Changing the system loader is disabled "
-                    + "by build.sysclasspath=only", Project.MSG_WARN);
-                return;
-            }
-
-            String loaderName = (name == null) ? SYSTEM_LOADER_REF : name;
-
-            Object obj = getProject().getReference(loaderName);
-            if (reset) {
-                // Are any other references held ? Can we 'close' the loader
-                // so it removes the locks on jars ?
-                obj = null; // a new one will be created.
-            }
-
-            // XXX maybe use reflection to addPathElement (other patterns ?)
-            if (obj != null && !(obj instanceof AntClassLoader)) {
-                log("Referenced object is not an AntClassLoader",
-                        Project.MSG_ERR);
-                return;
-            }
-
-            AntClassLoader acl = (AntClassLoader) obj;
-
-            if (acl == null) {
-                // Construct a new class loader
-                Object parent = null;
-                if (parentName != null) {
-                    parent = getProject().getReference(parentName);
-                    if (!(parent instanceof ClassLoader)) {
-                        parent = null;
-                    }
-                }
-                // TODO: allow user to request the system or no parent
-                if (parent == null) {
-                    parent = this.getClass().getClassLoader();
-                }
-
-                if (name == null) {
-                    // The core loader must be reverse
-                    //reverse=true;
-                }
-                getProject().log("Setting parent loader " + name + " "
-                    + parent + " " + parentFirst, Project.MSG_DEBUG);
-
-                // The param is "parentFirst"
-                acl = new AntClassLoader((ClassLoader) parent,
-                         getProject(), classpath, parentFirst);
-
-                getProject().addReference(loaderName, acl);
-
-                if (name == null) {
-                    // This allows the core loader to load optional tasks
-                    // without delegating
-                    acl.addLoaderPackageRoot("org.apache.tools.ant.taskdefs.optional");
-                    getProject().setCoreLoader(acl);
-                }
-            }
-            if (classpath != null) {
-                String[] list = classpath.list();
-                for (int i = 0; i < list.length; i++) {
-                    File f = new File(list[i]);
-                    if (f.exists()) {
-                        acl.addPathElement(f.getAbsolutePath());
-                        log("Adding to class loader " +  acl + " " + f.getAbsolutePath(),
-                                Project.MSG_DEBUG);
-                    }
-                }
-            }
-
-            // XXX add exceptions
-
-        } catch (Exception ex) {
-            ex.printStackTrace();
-        }
-    }
-}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Execute.java b/src/main/org/apache/tools/ant/taskdefs/Execute.java
index 44f6e40..7794995 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Execute.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Execute.java
@@ -124,7 +124,7 @@
             // Ignore and keep trying
         }
 
-        if (Os.isFamily("mac")) {
+        if (Os.isFamily("mac") && !Os.isFamily("unix")) {
             // Mac
             shellLauncher = new MacCommandLauncher(new CommandLauncher());
         } else if (Os.isFamily("os/2")) {
@@ -621,6 +621,13 @@
      * @return the patched environment
      */
     private String[] patchEnvironment() {
+        // On OpenVMS Runtime#exec() doesn't support the environment array,
+        // so we only return the new values which then will be set in
+        // the generated DCL script, inheriting the parent process environment
+        if (Os.isFamily("openvms")) {
+                return env;
+        }
+
         Vector osEnv = (Vector) getProcEnvironment().clone();
         for (int i = 0; i < env.length; i++) {
             int pos = env[i].indexOf('=');
@@ -1119,7 +1126,7 @@
          */
         public Process exec(Project project, String[] cmd, String[] env)
             throws IOException {
-            String[] vmsCmd = {createCommandFile(cmd).getPath()};
+            String[] vmsCmd = {createCommandFile(cmd, env).getPath()};
             return super.exec(project, vmsCmd, env);
         }
 
@@ -1131,7 +1138,7 @@
          */
         public Process exec(Project project, String[] cmd, String[] env,
                             File workingDir) throws IOException {
-            String[] vmsCmd = {createCommandFile(cmd).getPath()};
+            String[] vmsCmd = {createCommandFile(cmd, env).getPath()};
             return super.exec(project, vmsCmd, env, workingDir);
         }
 
@@ -1139,17 +1146,34 @@
          * Writes the command into a temporary DCL script and returns the
          * corresponding File object.  The script will be deleted on exit.
          */
-        private File createCommandFile(String[] cmd) throws IOException {
+        private File createCommandFile(String[] cmd, String[] env)
+            throws IOException {
             File script = File.createTempFile("ANT", ".COM");
             script.deleteOnExit();
             PrintWriter out = null;
             try {
                 out = new PrintWriter(new FileWriter(script));
-                StringBuffer dclCmd = new StringBuffer("$");
-                for (int i = 0; i < cmd.length; i++) {
-                    dclCmd.append(' ').append(cmd[i]);
+
+                // add the environment as logicals to the DCL script
+                if (env != null) {
+                    int eqIndex;
+                    for (int i = 1; i < env.length ; i++) {
+                        eqIndex = env[i].indexOf('=');
+                        if (eqIndex != -1) {
+                            out.print("$ DEFINE/NOLOG ");
+                            out.print(env[i].substring(0, eqIndex));
+                            out.print(" \"");
+                            out.print(env[i].substring(eqIndex + 1));
+                            out.println('\"');
+                        }
+                    }
                 }
-                out.println(dclCmd.toString());
+
+                out.print("$ " + cmd[0]);
+                for (int i = 1; i < cmd.length ; i++) {
+                    out.println(" -");
+                    out.print(cmd[i]);
+                }
             } finally {
                 if (out != null) {
                     out.close();
diff --git a/src/main/org/apache/tools/ant/taskdefs/Java.java b/src/main/org/apache/tools/ant/taskdefs/Java.java
index 7875bf0..9f947c0 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Java.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Java.java
@@ -156,6 +156,10 @@
             throw new BuildException("You have used an attribute which is "
             + "not compatible with spawn");
         }
+        if (cmdl.getAssertions() != null && !fork) {
+            log("Assertion statements are currently ignored in non-forked mode");
+        }
+
         if (fork) {
             if (perm != null) {
                 log("Permissions can not be set this way in forked mode.", Project.MSG_WARN);
@@ -591,7 +595,10 @@
      * @since Ant 1.6
      * @param asserts assertion set
      */
-    public void setAssertions(Assertions asserts) {
+    public void addAssertions(Assertions asserts) {
+        if(cmdl.getAssertions() != null) {
+            throw new BuildException("Only one assertion declaration is allowed");
+        }
         cmdl.setAssertions(asserts);
     }
 
diff --git a/src/main/org/apache/tools/ant/taskdefs/LoadProperties.java b/src/main/org/apache/tools/ant/taskdefs/LoadProperties.java
index 5ddaf53..eb12787 100644
--- a/src/main/org/apache/tools/ant/taskdefs/LoadProperties.java
+++ b/src/main/org/apache/tools/ant/taskdefs/LoadProperties.java
@@ -1,7 +1,7 @@
 /*
  * The Apache Software License, Version 1.1
  *
- * Copyright (c) 2002 The Apache Software Foundation.  All rights
+ * Copyright (c) 2002-2003 The Apache Software Foundation.  All rights
  * reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -143,7 +143,6 @@
 
         try {
             final long len = srcFile.length();
-            final int size = (int) len;
 
             //open up the file
             fis = new FileInputStream(srcFile);
@@ -155,7 +154,6 @@
             }
 
             ChainReaderHelper crh = new ChainReaderHelper();
-            crh.setBufferSize(size);
             crh.setPrimaryReader(instream);
             crh.setFilterChains(filterChains);
             crh.setProject(getProject());
diff --git a/src/main/org/apache/tools/ant/taskdefs/MacroDef.java b/src/main/org/apache/tools/ant/taskdefs/MacroDef.java
index 6dd19b6..9e49730 100644
--- a/src/main/org/apache/tools/ant/taskdefs/MacroDef.java
+++ b/src/main/org/apache/tools/ant/taskdefs/MacroDef.java
@@ -81,7 +81,6 @@
     private String     name;
     private List       attributes = new ArrayList();
     private Map        elements = new HashMap();
-    private int        attributeStyle = AttributeStyle.ANT;
 
     /**
      * Name of the definition
@@ -92,55 +91,6 @@
     }
 
     /**
-     * Enumerated type for attributeStyle attribute
-     *
-     * @see EnumeratedAttribute
-     */
-    public static class AttributeStyle extends EnumeratedAttribute {
-        /** Enumerated values */
-        public static final int ANT = 0, XPATH = 1;
-
-        /**
-         * get the values
-         * @return an array of the allowed values for this attribute.
-         */
-        public String[] getValues() {
-            return new String[] {"ant", "xpath"};
-        }
-    }
-
-    /**
-     * <em>Experimental</em>
-     * I am uncertain at the moment how to encode attributes
-     * using ant style ${attribute} or xpath style @attribute.
-     * The first may get mixed up with ant properties and
-     * the second may get mixed up with xpath.
-     * The default at the moment is ant s
-     *
-     * @param style an <code>AttributeStyle</code> value
-     */
-    public void setAttributeStyle(AttributeStyle style) {
-        attributeStyle = style.getIndex();
-    }
-
-    /**
-     * <em>Experimental</em>
-     * @return the attribute style
-     */
-    public int getAttributeStyle() {
-        return attributeStyle;
-    }
-
-    /**
-     * Set the class loader.
-     * Not used
-     * @param classLoader a <code>ClassLoader</code> value
-     */
-    public void setAntlibClassLoader(ClassLoader classLoader) {
-        // Ignore
-    }
-
-    /**
      * Add a nested task to ExtendType
      * @param nestedTask  Nested task/type to extend
      */
@@ -435,9 +385,6 @@
             }
         }
 
-        if (attributeStyle != other.attributeStyle) {
-            return false;
-        }
         if (!nestedTask.similar(other.nestedTask)) {
             return false;
         }
diff --git a/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java b/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java
index 326067c..a0484bf 100644
--- a/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java
+++ b/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java
@@ -146,7 +146,7 @@
         }
     }
 
-    private String macroSubsAnt(String s, Map macroMapping) {
+    private String macroSubs(String s, Map macroMapping) {
         StringBuffer ret = new StringBuffer();
         StringBuffer macroName = new StringBuffer();
         boolean inMacro = false;
@@ -179,59 +179,6 @@
         return ret.toString();
     }
 
-    private String macroSubsXPath(String s, Map macroMapping) {
-        StringBuffer ret = new StringBuffer();
-        StringBuffer macroName = new StringBuffer();
-        boolean inMacro = false;
-        for (int i = 0; i < s.length(); ++i) {
-            char c = s.charAt(i);
-            if (!inMacro) {
-                if (c == '@') {
-                    inMacro = true;
-                } else {
-                    ret.append(c);
-                }
-            } else {
-                if (MacroDef.isValidNameCharacter(c)) {
-                    macroName.append(c);
-                } else {
-                    inMacro = false;
-                    String name = macroName.toString();
-                    String value = (String) macroMapping.get(name);
-                    if (value == null) {
-                        ret.append("@" + name);
-                    } else {
-                        ret.append(value);
-                    }
-                    if (c == '@') {
-                        inMacro = true;
-                    } else {
-                        ret.append(c);
-                    }
-                    macroName = new StringBuffer();
-                }
-            }
-        }
-        if (inMacro) {
-            String name = macroName.toString();
-            String value = (String) macroMapping.get(name);
-            if (value == null) {
-                ret.append("@" + name);
-            } else {
-                ret.append(value);
-            }
-        }
-        return ret.toString();
-    }
-
-    private String macroSubs(String s, Map macroMapping) {
-        if (macroDef.getAttributeStyle() == MacroDef.AttributeStyle.ANT) {
-            return macroSubsAnt(s, macroMapping);
-        } else {
-            return macroSubsXPath(s, macroMapping);
-        }
-    }
-
     private UnknownElement copy(UnknownElement ue) {
         UnknownElement ret = new UnknownElement(ue.getTag());
         ret.setNamespace(ue.getNamespace());
diff --git a/src/main/org/apache/tools/ant/taskdefs/Manifest.java b/src/main/org/apache/tools/ant/taskdefs/Manifest.java
index 49957f8..a4ec215 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Manifest.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Manifest.java
@@ -619,6 +619,10 @@
                     if (classpathAttribute == null) {
                         storeAttribute(attribute);
                     } else {
+                        warnings.addElement("Multiple Class-Path attributes "
+                            + "are supported but violate the Jar "
+                            + "specification and may not be correctly "
+                            + "processed in all environments");
                         Enumeration e = attribute.getValues();
                         while (e.hasMoreElements()) {
                             String value = (String) e.nextElement();
diff --git a/src/main/org/apache/tools/ant/taskdefs/PreSetDef.java b/src/main/org/apache/tools/ant/taskdefs/PreSetDef.java
index b43860c..8dc78f8 100644
--- a/src/main/org/apache/tools/ant/taskdefs/PreSetDef.java
+++ b/src/main/org/apache/tools/ant/taskdefs/PreSetDef.java
@@ -77,10 +77,9 @@
  * @author Peter Reilly
  * @since Ant 1.6
  */
-public class PreSetDef extends Task implements AntlibInterface, TaskContainer {
+public class PreSetDef extends AntlibDefinition implements TaskContainer {
     private UnknownElement nestedTask;
     private String         name;
-    private String         uri;
 
     /**
      * Name of the definition
@@ -89,29 +88,6 @@
      public void setName(String name) {
         this.name = name;
     }
-    /**
-     * The URI for this definition.
-     * @param uri the namespace URI
-     * @throws BuildException if uri is not allowed
-     */
-    public void setURI(String uri) throws BuildException {
-        if (uri.equals(ProjectHelper.ANT_CORE_URI)) {
-            uri = "";
-        }
-        if (uri.startsWith("ant:")) {
-            throw new BuildException("Attempt to use a reserved URI " + uri);
-        }
-        this.uri = uri;
-    }
-    /**
-     * Set the class loader.
-     * Not used
-     * @param classLoader a <code>ClassLoader</code> value
-     */
-    public void setAntlibClassLoader(ClassLoader classLoader) {
-        // Ignore
-    }
-
 
     /**
      * Add a nested task to predefine attributes and elements on
@@ -140,7 +116,7 @@
             throw new BuildException("Name not specified");
         }
 
-        name = ProjectHelper.genComponentName(uri, name);
+        name = ProjectHelper.genComponentName(getURI(), name);
 
         ComponentHelper helper = ComponentHelper.getComponentHelper(
             getProject());
diff --git a/src/main/org/apache/tools/ant/taskdefs/SubAnt.java b/src/main/org/apache/tools/ant/taskdefs/SubAnt.java
index a5faa0b..7f1338f 100644
--- a/src/main/org/apache/tools/ant/taskdefs/SubAnt.java
+++ b/src/main/org/apache/tools/ant/taskdefs/SubAnt.java
@@ -72,9 +72,6 @@
 
 
 /**
- * <i>EXPERIMENTAL:</i> This task is experimental and may be under continual
- * change till Ant1.6 ships; it may even be omitted from the product.
- * <p>
  * Calls a given target for all defined sub-builds. This is an extension
  * of ant for bulk project execution.
  * <p>
diff --git a/src/main/org/apache/tools/ant/taskdefs/defaults.properties b/src/main/org/apache/tools/ant/taskdefs/defaults.properties
index e259c02..c400791 100644
--- a/src/main/org/apache/tools/ant/taskdefs/defaults.properties
+++ b/src/main/org/apache/tools/ant/taskdefs/defaults.properties
@@ -70,7 +70,6 @@
 concat=org.apache.tools.ant.taskdefs.Concat
 cvstagdiff=org.apache.tools.ant.taskdefs.cvslib.CvsTagDiff
 tempfile=org.apache.tools.ant.taskdefs.TempFile
-classloader=org.apache.tools.ant.taskdefs.Classloader
 import=org.apache.tools.ant.taskdefs.ImportTask
 whichresource=org.apache.tools.ant.taskdefs.WhichResource
 subant=org.apache.tools.ant.taskdefs.SubAnt
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java
index 77de9c9..04ba9a5 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/CSharp.java
@@ -75,81 +75,57 @@
 /**
  *  Compiles C# source into executables or modules.
  *
- *  The task will only work on win2K until other platforms support
- *  csc.exe or an equivalent. CSC.exe must be on the execute path too. <p>
- *
- *  All parameters are optional: &lt;csc/&gt; should suffice to produce a debug
- *  build of all *.cs files. References to external files do require explicit
- *  enumeration, so are one of the first attributes to consider adding. <p>
- *
+ * csc.exe must be on the execute path, unless another executable
+ * or the full path to that executable is specified in the <tt>executable</tt>
+ * parameter
+ * <p>
+ * All parameters are optional: &lt;csc/&gt; should suffice to produce a debug
+ * build of all *.cs files. However, naming an <tt>destFile</tt>stops the
+ * csc compiler from choosing an output name from random, and
+ * allows the dependency checker to determine if the file is out of date.
+ * <p>
  *  The task is a directory based task, so attributes like <b>includes="*.cs"
  *  </b> and <b>excludes="broken.cs"</b> can be used to control the files pulled
  *  in. By default, all *.cs files from the project folder down are included in
  *  the command. When this happens the output file -if not specified- is taken
  *  as the first file in the list, which may be somewhat hard to control.
- *  Specifying the output file with <b>'outfile'</b> seems prudent. <p>
+ *  Specifying the output file with <tt>destFile</tt> seems prudent. <p>
  *
- *  <p>
+ * <p>
+ * For more complex source trees, nested <tt>src</tt> elemements can be
+ * supplied. When such an element is present, the implicit fileset is ignored.
+ * This makes sense, when you think about it :)
+ * <p>
  *
- *  TODO
- *  <ol>
- *    <li> is incremental build still broken in beta-1?
- *    <li> is Win32Icon broken?
- *    <li> all the missing options
- *  </ol>
- *  <p>
+ * References to external files can be made through the references attribute,
+ * or (since Ant1.6), via nested &lt;reference&gt; filesets. With the latter,
+ * the timestamps of the references are also used in the dependency
+ * checking algorithm.
+ * <p>
  *
- *  History
- *  <Table>
+ * Example
  *
- *    <tr>
- *
- *      <td>
- *        0.3
- *      </td>
- *
- *      <td>
- *        Beta 1 edition
- *      </td>
- *
- *      <td>
- *        To avoid having to remember which assemblies to include, the task
- *        automatically refers to the main dotnet libraries in Beta1.
- *      </tr>
- *
- *      <tr>
- *
- *        <td>
- *          0.2
- *        </td>
- *
- *        <td>
- *          Slightly different
- *        </td>
- *
- *        <td>
- *          Split command execution to a separate class;
- *        </tr>
- *
- *        <tr>
- *
- *          <td>
- *            0.1
- *          </td>
- *
- *          <td>
- *            "I can't believe it's so rudimentary"
- *          </td>
- *
- *          <td>
- *            First pass; minimal builds only support;
- *          </tr>
- *
- *        </table>
+ * <pre>&lt;csc
+ * 	optimize=&quot;true&quot;
+ * 	debug=&quot;false&quot;
+ * 	docFile=&quot;documentation.xml&quot;
+ * 	warnLevel=&quot;4&quot;
+ * 	unsafe=&quot;false&quot;
+ * 	targetType=&quot;exe&quot;
+ * 	incremental=&quot;false&quot;
+ * 	mainClass = &quot;MainApp&quot;
+ * 	destFile=&quot;NetApp.exe&quot;
+ * 	&gt;
+ * 	     &lt;src dir="src" includes="*.cs" /&gt;
+ *       &lt;reference file="${testCSC.dll}" /&gt;
+ *       &lt;define name="RELEASE" /&gt;
+ *       &lt;define name="DEBUG" if="debug.property"/&gt;
+ *       &lt;define name="def3" unless="def3.property"/&gt;
+ *    &lt;/csc&gt;
+ * </pre>
  *
  *
- * @author      Steve Loughran steve_l@iseran.com
- * @version     0.5
+ * @author      Steve Loughran
  * @ant.task    name="csc" category="dotnet"
  * @since Ant 1.3
  */
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/DotnetCompile.java b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/DotnetCompile.java
index e6ab0ff..a963682 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/DotnetCompile.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/DotnetCompile.java
@@ -115,7 +115,7 @@
     /**
      *  flag to enable automatic reference inclusion
      */
-    private boolean includeDefaultReferences;
+    private boolean includeDefaultReferences = true;
 
     /**
      *  icon for incorporation into apps
@@ -313,7 +313,7 @@
      * in dotnet, and tells the compiler to link in mscore.dll.
      *
      *  set the automatic reference inclusion flag on or off this flag controls
-     *  the string of references and the /nostdlib option in CSC
+     *  the /nostdlib option in CSC
      *
      *@param  f  on/off flag
      */
@@ -642,8 +642,6 @@
     }
 
 
-
-
     /**
      * add a define to the list of definitions
      * @param define
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/Ilasm.java b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/Ilasm.java
index 6cb3236..718c40b 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/Ilasm.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/Ilasm.java
@@ -69,9 +69,11 @@
 import org.apache.tools.ant.types.FileSet;
 
 /**
- *  Assembles .NET Intermediate Language files. The task will only work
- *  on win2K until other platforms support csc.exe or an equivalent. ilasm.exe
- *  must be on the execute path too. <p>
+ * Assembles .NET Intermediate Language files.
+ * ilasm.exe must be on the execute path, unless another executable
+ * or the full path to that executable is specified in the <tt>executable</tt>
+ * parameter
+ *  <p>
  *
  *  <p>
  *
@@ -82,13 +84,13 @@
  *  /out:file ... /verbose is used some places; /quiet here in ildasm... etc.]
  *  It would be nice if someone made all the command line tools consistent (and
  *  not as brittle as the java cmdline tools) <p>
- *
+ *  <p>
  *  The task is a directory based task, so attributes like <b>includes="*.il"
  *  </b> and <b>excludes="broken.il"</b> can be used to control the files pulled
  *  in. You can also use nested &lt;src&gt filesets to refer to source.
- *
- * @author     Steve Loughran steve_l@iseran.com
- * @version    0.6
+ * <p>
+ * 
+ * @author     Steve Loughran
  * @ant.task    name="ilasm" category="dotnet"
  */
 
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/Ildasm.java b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/Ildasm.java
index dde841d..5075635 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/Ildasm.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/Ildasm.java
@@ -56,6 +56,7 @@
 import org.apache.tools.ant.types.EnumeratedAttribute;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Task;
+import org.apache.tools.ant.Project;
 import org.apache.tools.ant.util.FileUtils;
 
 import java.io.File;
@@ -65,7 +66,7 @@
  * into ILASM assembly code. Useful when converting imported typelibs into
  * assembler before patching and recompiling, as one has to do when doing
  * advanced typelib work.
- *
+ * <p>
  * As well as generating the named output file, the ildasm program
  * will also generate resource files <code>Icons.resources</code>
  * <code>Message.resources</code> and a .res file whose filename stub is derived
@@ -76,13 +77,13 @@
  * creates the resources in the directory specified by <code>resourceDir</code> if
  * set, else in the same directory as the <code>destFile</code>.
  *
- *
+ * <p>
  * This task requires the .NET SDK installed and ildasm on the path.
  * To disassemble using alternate CLR systems, set the executable attribute
  * to the name/path of the alternate implementation -one that must
  * support all the classic ildasm commands.
  *
- *
+ * <p>
  * Dependency logic: the task executes the command if the output file is missing
  * or older than the source file. It does not take into account changes
  * in the options of the task, or timestamp differences in resource files.
@@ -90,6 +91,7 @@
  * .il file in place with some error message. To prevent this from confusing
  * the dependency logic, the file specified by the <code>dest</code>
  * attribute is <i>always</i> deleted after an unsuccessful build.
+ * @ant.task category="dotnet"
  */
 public class Ildasm extends Task {
 
@@ -351,16 +353,26 @@
     }
 
     /**
-     *
-     * @return
+     * Test for disassembly being needed; use existence and granularity
+     * correct date stamps
+     * @return true iff a rebuild is required.
      */
     private boolean isDisassemblyNeeded() {
         if (!destFile.exists()) {
+            log("Destination file does not exist: a build is required",
+                    Project.MSG_VERBOSE);
             return true;
         }
         long sourceTime = sourceFile.lastModified();
         long destTime = destFile.lastModified();
-        return sourceTime > (destTime + FileUtils.newFileUtils().getFileTimestampGranularity());
+        if(sourceTime > (destTime + FileUtils.newFileUtils().getFileTimestampGranularity())) {
+            log("Source file is newer than the dest file: a rebuild is required",
+                    Project.MSG_VERBOSE);
+            return true;
+        } else {
+            log("The .il file is up to date", Project.MSG_VERBOSE);
+            return false;
+        }
 
     }
     /**
@@ -369,6 +381,9 @@
      */
     public void execute() throws BuildException {
         validate();
+        if(!isDisassemblyNeeded()) {
+            return;
+        }
         NetCommand command = new NetCommand(this, "ildasm", executable);
         command.setFailOnError(true);
         //fill in args
@@ -422,6 +437,7 @@
         } catch (BuildException e) {
             //forcibly delete the output file in case of trouble
             if (destFile.exists()) {
+                log("Deleting destination file as it may be corrupt");
                 destFile.delete();
             }
             //then rethrow the exception
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/ImportTypelib.java b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/ImportTypelib.java
index 1c0e9bf..f361836 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/ImportTypelib.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/ImportTypelib.java
@@ -57,16 +57,28 @@
 import org.apache.tools.ant.Task;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
+import org.apache.tools.ant.util.FileUtils;
 
 import java.io.File;
 
 /**
- * Wrapper to .NET's tlbimport; imports a tlb file to a NET assembly
+ * Import a COM type library into the .NET framework.
+ * <p>
+ *
+ * This task is a wrapper to .NET's tlbimport; it imports a tlb file to a NET assembly
  * by generating a binary assembly (.dll) that contains all the binding
- * metadata. Uses date timestamps to minimise rebuilds.
+ * metadata. It uses date timestamps to minimise rebuilds.
+ * <p>
+ * Example
+ * <pre>
+ *     &lt;importtypelib
+ *       srcfile="xerces.tlb"
+ *       destfile="xerces.dll"
+ *       namespace="Apache.Xerces"/&gt;
+ * </pre>
  * @since Ant 1.6
  * @author steve loughran
- * @ant.task    name="ImportTypelib" category="dotnet"
+ * @ant.task category="dotnet"
  */
 public class ImportTypelib extends Task {
 
@@ -162,7 +174,7 @@
             throw new BuildException(
                     "destination file is a directory");
         }
-        if (srcFile != null || !srcFile.exists()) {
+        if (srcFile == null || !srcFile.exists()) {
             throw new BuildException(
                     "source file does not exist");
         }
@@ -176,6 +188,31 @@
     }
 
     /**
+     * Test for disassembly being needed; use existence and granularity
+     * correct date stamps
+     * @return true iff a rebuild is required.
+     */
+    private boolean isExecuteNeeded() {
+        if (!destFile.exists()) {
+            log("Destination file does not exist: a build is required",
+                    Project.MSG_VERBOSE);
+            return true;
+        }
+        long sourceTime = srcFile.lastModified();
+        long destTime = destFile.lastModified();
+        if (sourceTime > (destTime + FileUtils.newFileUtils().getFileTimestampGranularity())) {
+            log("Source file is newer than the dest file: a rebuild is required",
+                    Project.MSG_VERBOSE);
+            return true;
+        } else {
+            log("The output file is up to date", Project.MSG_VERBOSE);
+            return false;
+        }
+
+    }
+
+
+    /**
      * Create a typelib command
      * @exception BuildException if something goes wrong with the build
      */
@@ -185,9 +222,7 @@
             + " to assembly " + destFile
             + " in namespace " + namespace, Project.MSG_VERBOSE);
         //rebuild unless the dest file is newer than the source file
-        if (srcFile.exists() && destFile.exists()
-            && srcFile.lastModified() <= destFile.lastModified()) {
-            log("The typelib is up to date", Project.MSG_VERBOSE);
+        if(!isExecuteNeeded()) {
             return;
         }
 
@@ -205,5 +240,6 @@
             command.addArgument("/unsafe");
         }
         command.addArgument(extraOptions);
+        command.runCommand();
     }
 }
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/JSharp.java b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/JSharp.java
index 65ce8f6..a23d6b3 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/JSharp.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/JSharp.java
@@ -58,14 +58,18 @@
 
 /**
  * Compile J# source down to a managed .NET application.
+ * <p>
  * J# is not Java. But it is the language closest to Java in the .NET framework.
- * This task compiles jsharp source (assumes a .jsl extension, incidentally), and
+ * This task compiles jsharp source (.java files), and
  * generates a .NET managed exe or dll.
- * See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vjsharp/html/vjoriMicrosoftVisualJ.asp
- * for vjc command options in glory detail.
+ * <p>
+ *
+ * @see <A=ref="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vjsharp/html/vjoriMicrosoftVisualJ.asp">
+ * Visual J++ online documentation</a>
+ *
  * @author Steve Loughran
  * @since ant1.6
- * @ant.task    name="jsharpc" category="dotnet"
+ * @ant.task category="dotnet"
  */
 public class JSharp extends DotnetCompile {
 
@@ -120,14 +124,12 @@
         return ";";
     }
 
-
-
     /**
      * Get the extension of filenames to compile.
      * @return The string extension of files to compile.
      */
     public String getFileExtension() {
-        return ".jsl";
+        return ".java";
     }
 
     /**
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/VisualBasicCompile.java b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/VisualBasicCompile.java
index e5e9bb2..737cbdd 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/VisualBasicCompile.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/VisualBasicCompile.java
@@ -59,13 +59,52 @@
 
 /**
  * This task compiles Visual Basic.NET source into executables or modules.
- * The task will only work on win2K until other platforms support vbc.exe or
- * an equivalent. VBC.exe must be on the execute path, too.
+ * The task requires vbc.exe on the execute path, unless it or an equivalent
+ * program is specified in the <tt>executable</tt> parameter
  *
  * <p>
  * All parameters are optional: &lt;vbc/&gt; should suffice to produce a debug
  * build of all *.vb files.
  *
+ * <p>
+
+ * The task is a directory based task, so attributes like
+ * <tt>includes=&quot;**\/*.vb&quot;</tt> and
+ * <tt>excludes=&quot;broken.vb&quot;</tt> can be used to control
+ * the files pulled in. By default,
+ * all *.vb files from the project folder down are included in the command.
+ * When this happens the destFile -if not specified-
+ * is taken as the first file in the list, which may be somewhat hard to control.
+   Specifying the output file with <tt>destfile</tt> is prudent.
+ </p>
+ <p>
+ * Also, dependency checking only works if destfile is set.
+ *
+ * As with &lt;csc&gt; nested <tt>src</tt> filesets of source,
+ * reference filesets, definitions and resources can be provided.
+ *
+ * <p>
+ * Example
+ * </p>
+ * <pre>&lt;vbc
+ *   optimize=&quot;true&quot;
+ *   debug=&quot;false&quot;
+ *   warnLevel=&quot;4&quot;
+ *   targetType=&quot;exe&quot;
+ *   definitions=&quot;RELEASE&quot;
+ *   excludes=&quot;src/unicode_class.vb&quot;
+ *   mainClass = &quot;MainApp&quot;
+ *   destFile=&quot;NetApp.exe&quot;
+ *   optionExplicit=&quot;true&quot;
+ *   optionCompare=&quot;text&quot;
+ *   references="System.Xml,System.Web.Xml"
+ *   &gt;
+ *          &lt;reference file="${testCSC.dll}" /&gt;
+ *          &lt;define name="RELEASE" /&gt;
+ *          &lt;define name="DEBUG" if="debug.property"/&gt;
+ *          &lt;define name="def3" unless="def2.property"/&gt;
+ *   &lt;/vbc&gt;
+ </pre>
  * @author Brian Felder bfelder@providence.org
  * @author Steve Loughran
  * @ant.task    name="vbc" category="dotnet"
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/WsdlToDotnet.java b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/WsdlToDotnet.java
index 2eeb8e4..d0ce89d 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/WsdlToDotnet.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/dotnet/WsdlToDotnet.java
@@ -60,11 +60,23 @@
 /**
  * Converts a WSDL file or URL resource into a .NET language.
  *
+ * Why add a wrapper to the MS WSDL tool?
+ * So that you can verify that your web services, be they written with Axis or
+ *anyone else's SOAP toolkit, work with .NET clients.
+ *
+ *This task is dependency aware when using a file as a source and destination;
+ *so if you &lt;get&gt; the file (with <code>usetimestamp="true"</code>) then
+ *you only rebuild stuff when the WSDL file is changed. Of course,
+ *if the server generates a new timestamp every time you ask for the WSDL,
+ *this is not enough...use the &lt;filesmatch&gt; &lt;condition&gt; to
+ *to byte for byte comparison against a cached WSDL file then make
+ *the target conditional on that test failing.
+
  * See "Creating an XML Web Service Proxy", "wsdl.exe" docs in
  * the framework SDK documentation
- * @author      Steve Loughran steve_l@iseran.com
+ * @author      Steve Loughran 
  * @version     0.5
- * @ant.task    name="wsdltodotnet" category="dotnet"
+ * @ant.task    category="dotnet"
  * @since       Ant 1.5
  */
 
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
index 8ac0100..674c9a2 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
@@ -568,7 +568,10 @@
      * @since Ant 1.6
      * @param asserts assertion set
      */
-    public void setAssertions(Assertions asserts) {
+    public void addAssertions(Assertions asserts) {
+        if (commandline.getAssertions() != null) {
+            throw new BuildException("Only one assertion declaration is allowed");
+        }
         commandline.setAssertions(asserts);
     }
 
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatter.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatter.java
index fb7c0ad..cdfb268 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatter.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/PlainJUnitResultFormatter.java
@@ -1,7 +1,7 @@
 /*
  * The Apache Software License, Version 1.1
  *
- * Copyright (c) 2000-2002 The Apache Software Foundation.  All rights
+ * Copyright (c) 2000-2003 The Apache Software Foundation.  All rights
  * reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -198,12 +198,12 @@
      * <p>A Test is finished.
      */
     public void endTest(Test test) {
+        if (Boolean.TRUE.equals(failed.get(test))) {
+            return;
+        }
         synchronized (wri) {
             wri.print("Testcase: "
                       + JUnitVersionHelper.getTestCaseName(test));
-            if (Boolean.TRUE.equals(failed.get(test))) {
-                return;
-            }
             Long l = (Long) testStarts.get(test);
             double seconds = 0;
             // can be null if an error occured in setUp
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Submit.java b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Submit.java
index 3989b00..1baad54 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Submit.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Submit.java
@@ -98,7 +98,7 @@
      */
     public void execute() throws BuildException {
         if (change != null) {
-            execP4Command("submit -c " + change, (P4HandlerAdapter) new P4SubmitAdapter());
+            execP4Command("submit -c " + change, (P4HandlerAdapter) new P4SubmitAdapter(this));
         } else {
             //here we'd parse the output from change -o into submit -i
             //in order to support default change.
@@ -109,13 +109,16 @@
     /**
      * internal class used to process the output of p4 submit
      */
-    public class P4SubmitAdapter extends P4HandlerAdapter {
+    public class P4SubmitAdapter extends SimpleP4OutputHandler {
+        public P4SubmitAdapter(P4Base parent) {
+            super(parent);
+        }
         /**
          * process a line of stdout/stderr coming from Perforce
          * @param line line of stdout or stderr coming from Perforce
          */
         public void process(String line) {
-            log(line, Project.MSG_VERBOSE);
+            super.process(line);
             getProject().setProperty("p4.needsresolve", "0");
             // this type of output might happen
             // Change 18 renamed change 20 and submitted.
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/splash/SplashTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/splash/SplashTask.java
index 21a65e8..d77906b 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/splash/SplashTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/splash/SplashTask.java
@@ -198,7 +198,13 @@
         }
 
         if (in == null) {
-            in = SplashTask.class.getClassLoader().getResourceAsStream("images/ant_logo_large.gif");
+            ClassLoader cl = SplashTask.class.getClassLoader();
+            if (cl != null) {
+                in = cl.getResourceAsStream("images/ant_logo_large.gif");
+            } else {
+                in = ClassLoader
+                    .getSystemResourceAsStream("images/ant_logo_large.gif");
+            }
         }
 
         if (in != null) {
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/starteam/StarTeamLabel.java b/src/main/org/apache/tools/ant/taskdefs/optional/starteam/StarTeamLabel.java
index 1e91d42..b78b646 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/starteam/StarTeamLabel.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/starteam/StarTeamLabel.java
@@ -93,7 +93,7 @@
     private String description;
 
     /**
-     * If true, this will be a build label.  If false, it will be a build
+     * If true, this will be a build label.  If false, it will be a non-build
      * label.  The default is false.  Has no effect if revision label is
      * true.
      */
diff --git a/src/main/org/apache/tools/ant/types/Assertions.java b/src/main/org/apache/tools/ant/types/Assertions.java
index f2b9e7c..2d37ca9 100644
--- a/src/main/org/apache/tools/ant/types/Assertions.java
+++ b/src/main/org/apache/tools/ant/types/Assertions.java
@@ -55,14 +55,15 @@
 package org.apache.tools.ant.types;
 
 import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
 
 import java.util.List;
 import java.util.ArrayList;
 import java.util.Iterator;
 
 /**
- * implement the assertion datatype. This type describes
- * assertion settings for the &lt;java&gt; task and derivatives.
+ * The assertion datatype. This type describes
+ * assertion settings for the &lt;java&gt; task and others.
  * One can set the system assertions, and enable/disable those in
  * packages & classes.
  * Assertions can only be enabled or disabled when forking Java.
@@ -127,7 +128,7 @@
      * disable assertions
      * @param assertion
      */
-    public void addDisable(EnabledAssertion assertion) {
+    public void addDisable(DisabledAssertion assertion) {
         checkChildrenAllowed();
         assertionList.add(assertion);
     }
@@ -196,11 +197,14 @@
      * @param commandList
      */
     public void applyAssertions(List commandList) {
+        getProject().log("Applying assertions",Project.MSG_DEBUG);
         Assertions clause = getFinalReference();
         //do the system assertions
         if (Boolean.TRUE.equals(clause.enableSystemAssertions)) {
+            getProject().log("Enabling system assertions", Project.MSG_DEBUG);
             commandList.add("-enablesystemassertions");
         } else if (Boolean.FALSE.equals(clause.enableSystemAssertions)) {
+            getProject().log("disabling system assertions", Project.MSG_DEBUG);
             commandList.add("-disablesystemassertions");
         }
 
@@ -209,6 +213,7 @@
         while (it.hasNext()) {
             BaseAssertion assertion = (BaseAssertion) it.next();
             String arg = assertion.toCommand();
+            getProject().log("adding assertion "+arg, Project.MSG_DEBUG);
             commandList.add(arg);
         }
     }
diff --git a/src/main/org/apache/tools/ant/types/XMLCatalog.java b/src/main/org/apache/tools/ant/types/XMLCatalog.java
index ac40024..39cb4dd 100644
--- a/src/main/org/apache/tools/ant/types/XMLCatalog.java
+++ b/src/main/org/apache/tools/ant/types/XMLCatalog.java
@@ -208,7 +208,7 @@
      * @return the elements of the catalog - ResourceLocation objects
      */
     private Vector getElements() {
-        return elements;
+        return getRef().elements;
     }
 
     /**
@@ -217,7 +217,7 @@
      * @return the classpath
      */
     private Path getClasspath() {
-        return classpath;
+        return getRef().classpath;
     }
 
     /**
@@ -335,7 +335,7 @@
      * @return the catalog path
      */
     public Path getCatalogPath() {
-        return this.catalogPath;
+        return getRef().catalogPath;
     }
 
 
@@ -421,17 +421,6 @@
         if (!elements.isEmpty()) {
             throw tooManyAttributes();
         }
-        // change this to get the objects from the other reference
-        Object o = r.getReferencedObject(getProject());
-        // we only support references to other XMLCatalogs
-        if (o instanceof XMLCatalog) {
-            // set all elements from referenced catalog to this one
-            XMLCatalog catalog = (XMLCatalog) o;
-            setElements(catalog.getElements());
-        } else {
-            String msg = r.getRefId() + " does not refer to an XMLCatalog";
-            throw new BuildException(msg);
-        }
         super.setRefid(r);
     }
 
@@ -443,6 +432,10 @@
     public InputSource resolveEntity(String publicId, String systemId)
         throws SAXException, IOException {
 
+        if (isReference()) {
+            return getRef().resolveEntity(publicId, systemId);
+        }
+
         if (!isChecked()) {
             // make sure we don't have a circular reference here
             Stack stk = new Stack();
@@ -472,6 +465,10 @@
     public Source resolve(String href, String base)
         throws TransformerException {
 
+        if (isReference()) {
+            return getRef().resolve(href, base);
+        }
+
         if (!isChecked()) {
             // make sure we don't have a circular reference here
             Stack stk = new Stack();
@@ -516,6 +513,16 @@
     }
 
     /**
+     * @since Ant 1.6
+     */
+    private XMLCatalog getRef() {
+        if (!isReference()) {
+            return this;
+        }
+        return (XMLCatalog) getCheckedRef(XMLCatalog.class, "xmlcatalog");
+    }
+
+    /**
      * The instance of the CatalogResolver strategy to use.
      */
     private CatalogResolver catalogResolver = null;
@@ -576,9 +583,8 @@
                     && getCatalogPath().list().length != 0) {
                         log("Warning: catalogpath listing external catalogs"
                             + " will be ignored", Project.MSG_WARN);
-                        log("Failed to load Apache resolver: "
-                            + ex, Project.MSG_DEBUG);
                     }
+                log("Failed to load Apache resolver: " + ex, Project.MSG_DEBUG);
             }
         }
         return catalogResolver;
diff --git a/src/main/org/apache/tools/ant/types/defaults.properties b/src/main/org/apache/tools/ant/types/defaults.properties
index e257088..6dd5200 100644
--- a/src/main/org/apache/tools/ant/types/defaults.properties
+++ b/src/main/org/apache/tools/ant/types/defaults.properties
@@ -19,4 +19,4 @@
 zipfileset=org.apache.tools.ant.types.ZipFileSet
 scriptfilter=org.apache.tools.ant.types.optional.ScriptFilter
 propertyset=org.apache.tools.ant.types.PropertySet
-assertion=org.apache.tools.ant.types.Assertion
\ No newline at end of file
+assertions=org.apache.tools.ant.types.Assertions
\ No newline at end of file
diff --git a/src/main/org/apache/tools/ant/util/FileUtils.java b/src/main/org/apache/tools/ant/util/FileUtils.java
index eada52f..cc6ae3a 100644
--- a/src/main/org/apache/tools/ant/util/FileUtils.java
+++ b/src/main/org/apache/tools/ant/util/FileUtils.java
@@ -824,6 +824,8 @@
      *   <li>DOS style paths that start with a drive letter will have
      *     \ as the separator.</li>
      * </ul>
+     * Unlike <code>File#getCanonicalPath()</code> it specifically doesn't
+     * resolve symbolic links.
      *
      * @param path the path to be normalized
      * @return the normalized version of the path.
@@ -938,6 +940,65 @@
     }
 
     /**
+     * Returns a VMS String representation of a <code>File</code> object.
+     * This is useful since the JVM by default internally converts VMS paths
+     * to Unix style.
+     * The returned String is always an absolute path.
+     * 
+     * @param f The <code>File</code> to get the VMS path for.
+     * @return The absolute VMS path to <code>f</code>.
+     */
+    public String toVMSPath(File f) {
+        // format: "DEVICE:[DIR.SUBDIR]FILE"
+        String osPath;
+        String path = normalize(f.getAbsolutePath()).getPath();
+        String name = f.getName();
+        boolean isAbsolute = path.charAt(0) == File.separatorChar;
+        // treat directories specified using .DIR syntax as files
+        boolean isDirectory = f.isDirectory() &&
+            !name.regionMatches(true, name.length() - 4, ".DIR", 0, 4); 
+
+        String device = null;
+        StringBuffer directory = null;
+        String file = null;
+
+        int index = 0;
+
+        if (isAbsolute) {
+            index = path.indexOf(File.separatorChar, 1);
+            if (index == -1) {
+                return path.substring(1) + ":[000000]";
+            } else {
+                device = path.substring(1, index++);
+            }
+        }
+        if (isDirectory) {
+            directory = new StringBuffer(path.substring(index).
+                                         replace(File.separatorChar, '.'));
+        } else {
+            int dirEnd =
+                path.lastIndexOf(File.separatorChar, path.length());
+            if (dirEnd == -1 || dirEnd < index) {
+                file = path.substring(index);
+            } else {
+                directory = new StringBuffer(path.substring(index, dirEnd).
+                                             replace(File.separatorChar, '.'));
+                index = dirEnd + 1;
+                if (path.length() > index) {
+                    file = path.substring(index);
+                }
+            }
+        }
+        if (!isAbsolute && directory != null) {
+            directory.insert(0, '.');
+        }
+        osPath = ((device != null) ? device + ":" : "") +
+            ((directory != null) ? "[" + directory + "]" : "") +
+            ((file != null) ? file : "");
+        return osPath;
+    }
+
+    /**
      * Create a temporary file in a given directory.
      *
      * <p>The file denoted by the returned abstract pathname did not
diff --git a/src/script/ant b/src/script/ant
index b383d44..f32a356 100644
--- a/src/script/ant
+++ b/src/script/ant
@@ -71,8 +71,6 @@
     ANT_HOME=`cygpath --unix "$ANT_HOME"`
   [ -n "$JAVA_HOME" ] &&
     JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-  [ -n "$CLASSPATH" ] &&
-    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
 fi
 
 # set ANT_LIB location
@@ -100,10 +98,6 @@
   exit 1
 fi
 
-if [ -n "$CLASSPATH" ] ; then
-  LOCALCLASSPATH="$CLASSPATH"
-fi
-
 # in rpm_mode get ant/optional/xml parser&api from JAVALIBDIR
 if $rpm_mode; then
   JAVALIBDIR=/usr/share/java
@@ -149,21 +143,20 @@
 if $cygwin; then
   ANT_HOME=`cygpath --windows "$ANT_HOME"`
   JAVA_HOME=`cygpath --windows "$JAVA_HOME"`
-  CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
   LOCALCLASSPATH=`cygpath --path --windows "$LOCALCLASSPATH"`
   CYGHOME=`cygpath --windows "$HOME"`
 fi
 
 if [ -n "$CYGHOME" ]; then
   if [ -n "$JIKESPATH" ]; then
-    exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Djikes.class.path="$JIKESPATH" -Dcygwin.user.home="$CYGHOME" org.apache.tools.ant.launch.Launcher $ANT_ARGS "$@"
+    exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Djikes.class.path="$JIKESPATH" -Dcygwin.user.home="$CYGHOME" org.apache.tools.ant.launch.Launcher $ANT_ARGS -lib "$CLASSPATH" "$@"
   else
-    exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Dcygwin.user.home="$CYGHOME" org.apache.tools.ant.launch.Launcher $ANT_ARGS "$@"
+    exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Dcygwin.user.home="$CYGHOME" org.apache.tools.ant.launch.Launcher $ANT_ARGS -lib "$CLASSPATH" "$@"
   fi
 else
   if [ -n "$JIKESPATH" ]; then
-    exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Djikes.class.path="$JIKESPATH" org.apache.tools.ant.launch.Launcher $ANT_ARGS "$@"
+    exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Djikes.class.path="$JIKESPATH" org.apache.tools.ant.launch.Launcher $ANT_ARGS -lib "$CLASSPATH" "$@"
   else
-    exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" org.apache.tools.ant.launch.Launcher $ANT_ARGS "$@"
+    exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" org.apache.tools.ant.launch.Launcher $ANT_ARGS -lib "$CLASSPATH" "$@"
   fi
 fi
diff --git a/src/script/ant.bat b/src/script/ant.bat
index 6075466..aaa8232 100755
--- a/src/script/ant.bat
+++ b/src/script/ant.bat
@@ -54,7 +54,6 @@
 
 :checkJava
 set _JAVACMD=%JAVACMD%
-set LOCALCLASSPATH=%ANT_HOME%\lib\ant-launcher.jar;%CLASSPATH%
 
 if "%JAVA_HOME%" == "" goto noJavaHome
 if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome
@@ -68,15 +67,24 @@
 if not "%JIKESPATH%"=="" goto runAntWithJikes
 
 :runAnt
-"%_JAVACMD%" %ANT_OPTS% -classpath "%LOCALCLASSPATH%" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%
+if not "%CLASSPATH%"=="" goto runAntWithClasspath
+"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%
+goto end
+
+:runAntWithClasspath
+"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% -lib "%CLASSPATH%" %ANT_CMD_LINE_ARGS%
 goto end
 
 :runAntWithJikes
-"%_JAVACMD%" %ANT_OPTS% -classpath "%LOCALCLASSPATH%" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%
+if not "%CLASSPATH%"=="" goto runAntWithJikesAndClasspath
+"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%
+goto end
+
+:runAntWithJikesAndClasspath
+"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS%  -lib "%CLASSPATH%" %ANT_CMD_LINE_ARGS%
 goto end
 
 :end
-set LOCALCLASSPATH=
 set _JAVACMD=
 set ANT_CMD_LINE_ARGS=
 
diff --git a/src/script/runant.pl b/src/script/runant.pl
index 80fb2b1..5232a9d 100644
--- a/src/script/runant.pl
+++ b/src/script/runant.pl
@@ -39,7 +39,7 @@
 #use warnings;
 
 #and set $debug to 1 to turn on trace info
-my $debug=0;
+my $debug=1;
 
 #######################################################################
 #
@@ -74,26 +74,7 @@
         }
 
 #build up standard classpath
-my $localpath=$ENV{CLASSPATH};
-if ($localpath eq "")
-        {
-        print "warning: no initial classpath\n" if ($debug);
-        $localpath="";
-        }
-if ($onnetware == 1)
-{
-# avoid building a command line bigger than 512 characters - make localpath
-# only include the "extra" stuff, and add in the system classpath as an expanded
-# variable. 
-  $localpath="";
-} 
-
-if ($localpath eq "") {
-  $localpath = "$HOME/lib/ant-launcher.jar";
-} else {
-  $localpath = "$HOME/lib/ant-launcher.jar$s$localpath";
-}
-
+my $localpath = "$HOME/lib/ant-launcher.jar";
 #set JVM options and Ant arguments, if any
 my @ANT_OPTS=split(" ", $ENV{ANT_OPTS});
 my @ANT_ARGS=split(" ", $ENV{ANT_ARGS});
@@ -110,25 +91,21 @@
 
 my $CYGHOME = "";
 
+my $classpath=$ENV{CLASSPATH};
 if ($oncygwin == 1) {
   $localpath = `cygpath --path --windows $localpath`;
   chomp ($localpath);
+  if (! $classpath eq "")
+  {
+    $classpath = `cygpath --path --windows "$classpath"`;
+    chomp ($classpath);
+  }
   $HOME = `cygpath --path --windows $HOME`;
   chomp ($HOME);
   $CYGHOME = `cygpath --path --windows $ENV{HOME}`;
   chomp ($CYGHOME);
 }
-if ($onnetware == 1)
-{
-# make classpath literally $CLASSPATH; and then the contents of $localpath
-# this is to avoid pushing us over the 512 character limit
-# even skip the ; - that is already in $localpath
-  push @ARGS, "-classpath", "\$CLASSPATH$localpath";
-}
-else
-{
-  push @ARGS, "-classpath", "$localpath";
-}
+push @ARGS, "-classpath", "$localpath";
 push @ARGS, "-Dant.home=$HOME";
 if ( ! $CYGHOME eq "" )
 {
@@ -136,7 +113,20 @@
 }
 push @ARGS, "org.apache.tools.ant.launch.Launcher", @ANT_ARGS;
 push @ARGS, @ARGV;
-
+if (! $classpath eq "")
+{
+  if ($onnetware == 1)
+  {
+    # make classpath literally $CLASSPATH
+    # this is to avoid pushing us over the 512 character limit
+    # even skip the ; - that is already in $localpath
+    push @ARGS, "-lib", "\$CLASSPATH";
+  }
+  else
+  {
+    push @ARGS, "-lib", "$classpath";
+  }
+}
 print "\n $JAVACMD @ARGS\n\n" if ($debug);
 
 my $returnValue = system $JAVACMD, @ARGS;
diff --git a/src/script/runant.py b/src/script/runant.py
index 45bf523..1343f68 100644
--- a/src/script/runant.py
+++ b/src/script/runant.py
@@ -17,7 +17,6 @@
  Assumptions:
 
  - the "java" executable/script is on the command path
- - ANT_HOME has been set
 """
 import os, os.path, string, sys
 
@@ -25,52 +24,62 @@
 debug = 0
 
 #######################################################################
-#
-# check to make sure environment is setup
-#
+
+# If ANT_HOME is not set default to script's parent directory
 if os.environ.has_key('ANT_HOME'):
     ANT_HOME = os.environ['ANT_HOME']
 else:
     ANT_HOME = os.path.dirname(os.path.dirname(os.path.abspath(sys.argv[0])))
 
-# Add jar files
+# set ANT_LIB location
 ANT_LIB = os.path.join(ANT_HOME, 'lib')
 
+# set JAVACMD (check variables JAVACMD and JAVA_HOME)
+JAVACMD = None
 if not os.environ.has_key('JAVACMD'):
-    JAVACMD = 'java'
+    if os.environ.has_key('JAVA_HOME'):
+        if not os.path.exists(os.environ['JAVA_HOME']):
+            print "Warning: JAVA_HOME is not defined correctly."
+        else:
+            JAVACMD = os.path.join(os.environ['JAVA_HOME'], 'bin', 'java')
+    else:
+        print "Warning: JAVA_HOME not set."
 else:
     JAVACMD = os.environ['JAVACMD']
-
-# Build up standard classpath
-localpath = ''
-if os.environ.has_key('CLASSPATH'):
-    localpath = os.environ['CLASSPATH']
-else:
-    if debug:
-        print 'Warning: no initial classpath\n'
+if not JAVACMD:
+    JAVACMD = 'java'
 
 launcher_jar = os.path.join(ANT_LIB, 'ant-launcher.jar')
 if not os.path.exists(launcher_jar):
     print 'Unable to locate ant-launcher.jar. Expected to find it in %s' % \
         ANT_LIB
-if localpath:
-    localpath = launcher_jar + os.pathsep + localpath
-else:
-    localpath = launcher_jar
 
-ANT_OPTS = []
+# Build up standard classpath (LOCALCLASSPATH)
+LOCALCLASSPATH = launcher_jar
+if os.environ.has_key('LOCALCLASSPATH'):
+    LOCALCLASSPATH += os.pathsep + os.environ['LOCALCLASSPATH']
+
+ANT_OPTS = ""
 if os.environ.has_key('ANT_OPTS'):
-    ANT_OPTS = string.split(os.environ['ANT_OPTS'])
+    ANT_OPTS = os.environ['ANT_OPTS']
 
-OPTS = []
+OPTS = ""
 if os.environ.has_key('JIKESPATH'):
-    OPTS.append('-Djikes.class.path=' + os.environ['JIKESPATH'])
+    OPTS = '-Djikes.class.path=\"%s\"' % os.environ['JIKESPATH']
+
+ANT_ARGS = ""
+if os.environ.has_key('ANT_ARGS'):
+    ANT_ARGS = os.environ['ANT_ARGS']
+
+CLASSPATH = ""
+if os.environ.has_key('CLASSPATH'):
+    CLASSPATH = os.environ['CLASSPATH']
 
 # Builds the commandline
-cmdline = ('%s %s -classpath %s -Dant.home=\"%s\" %s ' + \
-    'org.apache.tools.ant.launch.Launcher %s') \
-     % (JAVACMD, string.join(ANT_OPTS,' '), localpath, ANT_HOME, \
-        string.join(OPTS,' '), string.join(sys.argv[1:], ' '))
+cmdline = ('%s %s -classpath \"%s\" \"-Dant.home=%s\" %s ' + \
+    'org.apache.tools.ant.launch.Launcher %s -lib \"%s\" \"%s\"') \
+     % (JAVACMD, ANT_OPTS, LOCALCLASSPATH, ANT_HOME, OPTS, ANT_ARGS, \
+        CLASSPATH, string.join(sys.argv[1:], ' '))
 
 if debug:
     print '\n%s\n\n' % (cmdline)
diff --git a/src/testcases/org/apache/tools/ant/filters/ConcatFilterTest.java b/src/testcases/org/apache/tools/ant/filters/ConcatFilterTest.java
index c97b68a..c9cc5d1 100644
--- a/src/testcases/org/apache/tools/ant/filters/ConcatFilterTest.java
+++ b/src/testcases/org/apache/tools/ant/filters/ConcatFilterTest.java
@@ -111,85 +111,80 @@
     }
 
     public void tearDown() {
-        // I dont know why - but on my machine I always get a
-        // "Unable to delete file ...result\append.txt" (or prepend.txt)
-        // from Delete.removeDir(Delete.java:612).
-        // Win2000, JDK 1.4.1_02
-        // A <sleep> before <delete> doesn´t work. From 10ms to 3000ms.
-        // I modified the taskdefs.Delete.DELETE_RETRY_SLEEP_MILLIS
-        // from 10 up to 2000 ms, but no success.
-        // So I give up - and hope for a suggestion from another one.
-        // But this shouldn´t let the testcases fail, so I do the cleanup
-        // inside a try-block
-        //    Jan
-        try {
-            executeTarget("cleanup");
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
+        executeTarget("cleanup");
     }
 
     public void testFilterReaderNoArgs() throws IOException {
         executeTarget("testFilterReaderNoArgs");
         File expected = getProject().resolveFile("input/concatfilter.test");
-        File result = getProject().resolveFile("result/concat.filterReaderNoArgs.test");
+        File result = getProject().resolveFile("result/concat.FilterReaderNoArgs.test");
         assertTrue("testFilterReaderNoArgs: Result not like expected", fu.contentEquals(expected, result));
     }
 
-    public void testFilterReaderBefore() throws IOException {
-        executeTarget("testFilterReaderPrepend");
-        File resultFile = getProject().resolveFile("result/concat.filterReaderPrepend.test");
-        String resultContent = fu.readFully(new java.io.FileReader(resultFile));
-        assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_PREPEND_WITH));
-        assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_APPEND));
+    public void testFilterReaderBefore() {
+        doTest("testFilterReaderPrepend", FILE_PREPEND_WITH, FILE_APPEND);
     }
 
-    public void testFilterReaderAfter() throws IOException {
-        executeTarget("testFilterReaderAppend");
-        File resultFile = getProject().resolveFile("result/concat.filterReaderAppend.test");
-        String resultContent = fu.readFully(new java.io.FileReader(resultFile));
-        assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_PREPEND));
-        assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_APPEND_WITH));
+    public void testFilterReaderAfter() {
+        doTest("testFilterReaderAppend", FILE_PREPEND, FILE_APPEND_WITH);
     }
 
-    public void testFilterReaderBeforeAfter() throws IOException {
-        executeTarget("testFilterReaderPrependAppend");
-        File resultFile = getProject().resolveFile("result/concat.filterReaderPrependAppend.test");
-        String resultContent = fu.readFully(new java.io.FileReader(resultFile));
-        assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_PREPEND_WITH));
-        assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_APPEND_WITH));
+    public void testFilterReaderBeforeAfter() {
+        doTest("testFilterReaderPrependAppend", FILE_PREPEND_WITH, FILE_APPEND_WITH);
     }
 
-    public void testConcatFilter() throws IOException {
-        executeTarget("testConcatFilter");
-        File resultFile = getProject().resolveFile("result/concat.concatfilter.test");
-        String resultContent = fu.readFully(new java.io.FileReader(resultFile));
-        assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_PREPEND));
-        assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_APPEND));
+    public void testConcatFilter() {
+        doTest("testConcatFilter", FILE_PREPEND, FILE_APPEND);
     }
 
-    public void testConcatFilterBefore() throws IOException {
-        executeTarget("testConcatFilterPrepend");
-        File resultFile = getProject().resolveFile("result/concat.concatfilterPrepend.test");
-        String resultContent = fu.readFully(new java.io.FileReader(resultFile));
-        assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_PREPEND_WITH));
-        assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_APPEND));
+    public void testConcatFilterBefore() {
+        doTest("testConcatFilterPrepend", FILE_PREPEND_WITH, FILE_APPEND);
     }
 
-    public void testConcatFilterAfter() throws IOException {
-        executeTarget("testConcatFilterAppend");
-        File resultFile = getProject().resolveFile("result/concat.concatfilterAppend.test");
-        String resultContent = fu.readFully(new java.io.FileReader(resultFile));
-        assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_PREPEND));
-        assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_APPEND_WITH));
+    public void testConcatFilterAfter() {
+        doTest("testConcatFilterAppend", FILE_PREPEND, FILE_APPEND_WITH);
     }
 
-    public void testConcatFilterBeforeAfter() throws IOException {
-        executeTarget("testConcatFilterPrependAppend");
-        File resultFile = getProject().resolveFile("result/concat.concatfilterPrependAppend.test");
-        String resultContent = fu.readFully(new java.io.FileReader(resultFile));
-        assertTrue("First 5 lines differs.", resultContent.startsWith(FILE_PREPEND_WITH));
-        assertTrue("Last 5 lines differs.", resultContent.endsWith(FILE_APPEND_WITH));
+    public void testConcatFilterBeforeAfter() {
+        doTest("testConcatFilterPrependAppend", FILE_PREPEND_WITH, FILE_APPEND_WITH);
     }
 
-}
\ No newline at end of file
+
+    /**
+     * Executes a target and checks the beginning and the ending of a file.
+     * The filename depends on the target name: target name <i>testHelloWorld</i>
+     * will search for a file <i>result/concat.HelloWorld.test</i>.
+     * @param target The target to invoke
+     * @param expectedStart The string which should be at the beginning of the file
+     * @param expectedEnd The string which should be at the end of the file
+     */
+    protected void doTest(String target, String expectedStart, String expectedEnd) {
+        executeTarget(target);
+        String resultContent = read("result/concat." + target.substring(4) + ".test");
+        assertTrue("First 5 lines differs.", resultContent.startsWith(expectedStart));
+        assertTrue("Last 5 lines differs.", resultContent.endsWith(expectedEnd));
+    }
+
+
+    /**
+     * Wrapper for FileUtils.readFully().
+     * Additionally it resolves the filename according the the projects basedir
+     * and closes the used reader.
+     * @param filename The name of the file to read
+     * @return the content of the file or <i>null</i> if something goes wrong
+     */
+    protected String read(String filename) {
+        String content = null;
+        try {
+            File file = getProject().resolveFile(filename);
+            java.io.FileReader rdr = new java.io.FileReader(file);
+            content = fu.readFully(rdr);
+            rdr.close();
+            rdr = null;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return content;
+    }
+
+}
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java b/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java
index e6b8987..24e40d1 100644
--- a/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java
+++ b/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java
@@ -86,8 +86,5 @@
         expectLog("nested", "A nested element");
     }
 
-    public void testXPathStyle() {
-        expectLog("xpathstyle", "attribute is this is a testthis is a test");
-    }
 }
 
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/ReplaceTest.java b/src/testcases/org/apache/tools/ant/taskdefs/ReplaceTest.java
index 66c1008..5fe4e95 100644
--- a/src/testcases/org/apache/tools/ant/taskdefs/ReplaceTest.java
+++ b/src/testcases/org/apache/tools/ant/taskdefs/ReplaceTest.java
@@ -1,7 +1,7 @@
 /*
  * The Apache Software License, Version 1.1
  *
- * Copyright (c) 2000-2001 The Apache Software Foundation.  All rights
+ * Copyright (c) 2000-2001,2003 The Apache Software Foundation.  All rights
  * reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -108,8 +108,9 @@
 
     public void test9() throws IOException{
         executeTarget("test9");
-        assertEqualContent(new File(TEST_PATH + "result.txt"),
-                    new File(TEST_PATH + "output.txt"));
+        String tmpdir = project.getProperty("tmp.dir");
+        assertEqualContent(new File(tmpdir, "result.txt"),
+                    new File(tmpdir, "output.txt"));
     }
     public void tearDown() {
         executeTarget("cleanup");
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/optional/XmlValidateTest.java b/src/testcases/org/apache/tools/ant/taskdefs/optional/XmlValidateTest.java
index 80799ce..ce287e1 100644
--- a/src/testcases/org/apache/tools/ant/taskdefs/optional/XmlValidateTest.java
+++ b/src/testcases/org/apache/tools/ant/taskdefs/optional/XmlValidateTest.java
@@ -1,7 +1,7 @@
 /*
  *  The Apache Software License, Version 1.1
  *
- *  Copyright (c) 2002 The Apache Software Foundation.  All rights
+ *  Copyright (c) 2002-2003 The Apache Software Foundation.  All rights
  *  reserved.
  *
  *  Redistribution and use in source and binary forms, with or without
@@ -126,6 +126,13 @@
     }
 
     /**
+     *
+     */
+    public void testXmlCatalogViaRefid() {
+        executeTarget("xmlcatalogViaRefid");
+    }
+
+    /**
      * Test that the nested dtd element is used when resolver.jar is not
      * present.  This test should pass either way.
      */
diff --git a/src/testcases/org/apache/tools/ant/types/AssertionsTest.java b/src/testcases/org/apache/tools/ant/types/AssertionsTest.java
new file mode 100644
index 0000000..0193f9a
--- /dev/null
+++ b/src/testcases/org/apache/tools/ant/types/AssertionsTest.java
@@ -0,0 +1,132 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2003 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ *    any, must include the following acknowlegement:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowlegement may appear in the software itself,
+ *    if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "Ant" and "Apache Software Foundation"
+ *    must not be used to endorse or promote products derived
+ *    from this software without prior written permission. For written
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ *    nor may "Apache" appear in their names without prior written
+ *    permission of the Apache Group.
+ *
+ * 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 APACHE SOFTWARE FOUNDATION OR
+ * ITS 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 Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.tools.ant.types;
+
+import org.apache.tools.ant.BuildFileTest;
+
+/**
+ * test assertion handling
+ */
+public class AssertionsTest extends BuildFileTest {
+
+    public AssertionsTest(String name) {
+        super(name);
+    }
+
+    protected void setUp() throws Exception {
+        configureProject("src/etc/testcases/types/assertions.xml");
+    }
+
+    protected void tearDown() throws Exception {
+        executeTarget("teardown");
+    }
+
+    /**
+     * runs a test and expects an assertion thrown in forked code
+     * @param target
+     */
+    protected void expectAssertion(String target) {
+        expectBuildExceptionContaining(target,
+                "assertion not thrown in "+target,
+                "Java returned: 1");
+    }
+
+    public void testClassname() {
+        expectAssertion("test-classname");
+    }
+
+    public void testPackage() {
+        expectAssertion("test-package");
+    }
+
+    public void testEmptyAssertions() {
+        executeTarget("test-empty-assertions");
+    }
+
+    public void testDisable() {
+        executeTarget("test-disable");
+    }
+
+    public void testOverride() {
+        expectAssertion("test-override");
+    }
+
+    public void testOverride2() {
+        executeTarget("test-override2");
+    }
+    public void testReferences() {
+        expectAssertion("test-references");
+    }
+
+    public void testMultipleAssertions() {
+        expectBuildExceptionContaining("test-multiple-assertions",
+                "multiple assertions rejected",
+                "Only one assertion declaration is allowed");
+    }
+
+    public void testReferenceAbuse() {
+        expectBuildExceptionContaining("test-reference-abuse",
+                "reference abuse rejected",
+                "You must not specify more than one attribute when using refid");
+    }
+
+    public void testNofork() {
+        expectLogContaining("test-nofork",
+                "Assertion statements are currently ignored in non-forked mode");
+    }
+
+
+}
+
+
diff --git a/src/testcases/org/apache/tools/ant/types/XMLCatalogTest.java b/src/testcases/org/apache/tools/ant/types/XMLCatalogTest.java
index d00b979..26fe950 100644
--- a/src/testcases/org/apache/tools/ant/types/XMLCatalogTest.java
+++ b/src/testcases/org/apache/tools/ant/types/XMLCatalogTest.java
@@ -1,7 +1,7 @@
 /*
  * The Apache Software License, Version 1.1
  *
- * Copyright (c) 2000-2002 The Apache Software Foundation.  All rights
+ * Copyright (c) 2000-2003 The Apache Software Foundation.  All rights
  * reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -172,14 +172,6 @@
     }
 
     public void testEmptyElementIfIsReference() {
-        try {
-            catalog.setRefid(new Reference("dummyref"));
-            fail("Can add reference to nonexistent XMLCatalog");
-        } catch (BuildException be) {
-            assertEquals("Reference dummyref not found.",
-                         be.getMessage());
-        }
-
         ResourceLocation dtd = new ResourceLocation();
         dtd.setPublicId("PUBLIC ID ONE");
         dtd.setLocation("i/dont/exist.dtd");
diff --git a/welcome.html b/welcome.html
index 33f6a2a..65207e4 100644
--- a/welcome.html
+++ b/welcome.html
@@ -1,124 +1,328 @@
-<html>
-<head>
-<title>Welcome to Ant1.5</title>
-</head>
-<body bgcolor="#ffffff">
-<h1>Welcome to Ant1.5</h1>
-Hello, and welcome to Ant1.5
-<p>
-For new users to Ant, welcome to a new way to build your software.
-<p>
-For veteran Ant users, its been, what nine months since Ant 1.4.1 
-shipped, and we've been as busy enhancing it as you've been using it.
-<p>
-
-We know you've been using Ant, not just from the all the bug reports we
-see, but from the awards we've been getting from JavaWorld and SD Magazine
-and from the fact that it is now clearly a mainstream product. Every quality IDE,
-from the Open Source projects: Emacs, NetBeans, Eclipse, JEdit, to the
-commercial offerings such as IntelliJ IDEA and JBuilder now have high
-quality Ant integration  either built in or available as a
-download. And they do that not just because it improves their products,
-giving users the best of both worlds -great editors and a great build
-process, but because Java developers are starting to expect Ant (and
-JUnit) everywhere.
-<p>
-Even in mid-2001, if you said you were using Ant in your project, people
-would stare at you. Now, as long as you are talking with Java developers
-and not management or your family and friends, people will nod, shrug
-and maybe ask you questions about build file and Ant configurations. The good 
-news: Ant 1.5 includes more helpful error messages and a new
-<tt>-diagnostics</tt> command to look at your Ant installation and help work out why
-things arent working.
-<p>
-Now, when you tell people you work on Ant in your spare time,
-people used to give you very funny stares; now they ask you about how to
-set up automated build processes, or deploy to some random app server.
-The good news: Ant 1.5 makes it easier to answer those questions.
-
-The other sign of mainstream is that there are also books on the
-subject, first Java Tools for Extreme Programming, then Ant: The
-Definitive Guide, and the first Ant1.5 book, Java Development with Ant,
-due to ship at the end of the month. (Steve says: I prefer the one with 
-my name on the cover as co-author, but I'm biased). 
-As usual, the manual has improved too:
-regardless of whether you need a book to work with Ant or not, you need
-that on-line documentation. And as usual, any extra contributions to the
-docs are welcome indeed. 
-<p>
-Ant has also influenced how projects are built. Now when you download
-any open source project, or work with a closed source team, you expect
-to see a file called build.xml there. Equally important, you expect that
-build file to compile and run a set of tests using JUnit or a derivative
-thereof; if they are missing, you worry.
-<p>
-Together, Ant and JUnit have transformed the mainstream process for
-building and deploying Java projects. And that's pretty profound, when
-you think about it. What is equally impressive is that this was all done
-as a co-operative effort. Nobody works on Ant full-time; everybody uses
-it to solve their problems, to address their build crises and generally
-get something done in a hurry. It just so happens that the architectural
-model of Java classes bound via introspection to the XML build file
-makes it easy for people to add new tasks, extend existing ones and
-generally ease their way into developing and extending Ant. It is the
-users that have helped Ant become the success it is today, and will keep
-it that way tomorrow.
-<p>
-<h2>What has changed</h2>
-<p>
-So, what is new in Ant1.5? Lots of stuff. You will have to look at the
-<a href="WHATSNEW">whatsnew</a> file to see, but basically the changes
-fall into a number of categories
-<ol>
-<li>Bug fixes. We know, some things were broken in 1.4. In ant1.5 we
-have moved the bugs, fixing the ones we could, and no doubt adding
-different ones. Hopefully the total bug count has decreased.
-<li>Scalability. Changes in &lt;ant&gt; and a few other tasks should 
-make it easier to write large, scalable build files. 
-<li>Deployment. Take a look at the new &lt;serverdeploy&gt; task, add support
-for your server if it isnt there. Tomcat 4.1 has its own deployment
-tasks incidentally -fetch them from the tomcat pages.
-<li>Ease of use. We have added new attributes to make the archive tasks
-consistent with each other, new error messages for common problems (you
-get a screenful of help when a task wont instantiate, for example), and
-generally try and be helpful. As usual, we will accept contributions to 
-the documentation or the code for even more helpfulness. Hey, in ant1.5
-you dont need to double escape the $ sign to preserve it in a string!
-<li>Java 1.4 support. We build and test fine on Java 1.4, and have the
-extensions to javac needed to build code with assertions in. We should
-point out that we have more work to do in this area: if someone wants to
-write an &lt;assertionset&gt; datatype to give users control of which assertions
-to enable, and patch this in to things like the &lt;junit&gt; and 
-&lt;java&gt; tasks, things would get very interesting.
-<li>Continuous builds. Automated build tools are becoming more widely
-used; fork options on &lt;javac&gt; and &lt;javadoc&gt; are there to 
-stop memory use growth on a continuous process. 
-<li>New platforms: MacOS X for owners of those cute little laptops, 
-Novell Netware servers, and even z/OS and OS/390 for mainframe
-developers who write their build files on their virtual card punches.
-<li>Conditions. Take a look at the &lt;condition&gt; tag to see what you can
-look for, then at &lt;waitfor&gt; to use the same tests in deployment.
-Finally, notice the <tt>if</tt> and <tt>unless</tt> attributes on
-&lt;fail&gt; for easy halting of the build on a condition, without
-having to resort to conditional targets. 
-</ol>
- 
-There are many more enhancements, so we hope you will find your build
-projects easier. We have, as usual, jumped through hoops to keep
-existing builds working, even those build files that went out their way
-to not work on Java 1.4 (hint: dont ask for the classic compiler, it has
-gone away). If your build file stops working, and it isnt something listed 
-on the 'changes that may break your build' part of the WHATSNEW file, or
-something we know about on bugzilla, please dont hesitate to file a new
-bug report, preferably one with a replicable test and a patch to fix the
-problem.
-<p>
-Thanks,
-<p>
-The Ant development team.
-<p>
-PS: many thanks for Magesh to being the build manager for this release!
-He has been busy since Feb/March organizing it. Magesh -you are so good
-at this you should do it next time too :) 
-</body></html>
- 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
+	<TITLE>Welcome to Apache Ant 1.6</TITLE>
+</HEAD>
+<BODY LANG="en-US" BGCOLOR="#ffffff" DIR="LTR">
+<H1>Welcome to Apache Ant 1.6</H1>
+<P><BR><BR>
+</P>
+<H2>Your life just got better. 
+</H2>
+<P>Not in big ways. Your social life isn't going to be helped, though
+with any luck you may now have more time for one. Nor is it going to
+take less time to write your Java code -although we note that running
+<A HREF="http://xdoclet.sf.net/" TARGET="other">XDoclet</A> under Ant
+lets you avoid writing so much code. Nor is a new release of Ant
+likely to provide a fundamental kick-start to the currently somewhat
+subdued technology and software industries. 
+</P>
+<P>No, Ant1.6 will not fundamentally change your life. But if you do
+have to get software out on time -"roughly what you asked for,
+roughly when you asked", then Ant1.6 provides lots of little
+improvements over the existing version. 
+</P>
+<P>Before we look at those details, lets look at the world of The
+Automated Build.</P>
+<P>Firstly, we'd like to thank everyone for all those awards that
+have been flowing in. The JavaWorld Editors' Choice Award for "Most
+Useful Java Community-Developed Technology", The Java
+Developer's Journal "Editors Choice Award", and Java Pro
+Reader's Choice award for "Most Valuable Java Deployment
+Technology." Wow. That's a lot of awards. Aardman Animations
+keep all their Wallace and Gromit -related oscars in a cabinet in
+their tea room. If the Apache organization had a tea room, those Ant
+awards would be forcing all the other (excellent) Apache products to
+fight hard for their cabinet space. 
+</P>
+<P>All those awards come for a reason: everyone, at least everyone
+working on any project of moderate complexity, needs to control their
+build process. Ant is one of the best ways to do it in Java, and,
+over the past four years, it has moved from a tool used simply to
+build Tomcat cross-platform, to a tool used across many open source
+projects, and now to a tool used by almost all Java projects. Indeed,
+pretty much the only competitor in the Java space is a sibling
+project under the Apache banner, <A HREF="http://maven.apache.org/" TARGET="other">Maven</A>.
+One of the obvious signs of Ant's success is that all the popular
+IDEs, from the Open Source -Emacs JDE, Eclipse, NetBeans and jEdit -
+to the commercial: IntelliJ IDEA, Borland JBuilder- all ship with
+built in Ant support. This lets you use your favourite IDE for what
+it is good at: editing text, creating Java source, refactoring
+existing code, debugging and the like, and you can turn to Ant for
+co-ordinating the build-test-deploy/deliver process. That Ant based
+process can be triggered from keystrokes in the IDE, command line
+invocations for those so inclined, and in automated scheduled builds
+so the machines can keep an eye on the engineers. Another sign is how
+Ant is helping the Java aisle of bookstores fight back against
+attempts by books about Macromedia Flash to take over all the space
+-there are now seven or eight books on the subject, with more on the
+way. Germany and Korea have their own native language books too,
+which shows how global the tool is -in use and in development terms. 
+</P>
+<P>The other metric of success is the pre-announcement hints from our
+distant software colleagues in Redmond, Microsoft, of a new build
+tool, "MSBuild", which "might be the single most
+important feature innovation in our pipeline", according to one
+MS developer. That is surely the greatest metric of success: XML
+based build tools are now viewed as so essential to the modern build
+process, that Microsoft has to come up with a competitor to Ant to
+win Java developers over to .NET. Let's hope they discover we like
+ubiquitous JUnit testing too, and refactoring IDEs that create and
+run the tests for us. 
+</P>
+<P>Success comes at a price, of course. One price is all those
+support calls. We try and stay on top of the bug reports, but one
+thing we cannot do is fix inconsistencies or things that seem like
+defects if they stand a significant chance of breaking existing
+builds. Its sad, but there are lots of little minor faults with Ant
+that we don't dare fix because, well, things might break. For
+example, why don't if= and unless= clauses also support
+if="${property}" clauses? Alternatively, why isn't it an
+error to use a property that isn't defined. Everyone that has ever
+seen directories called ${build.dir} popping up the source tree will
+understand why that behaviour is not always what you want. Well, we
+could fix these things, but we won't, because backwards compatibility
+is sacred. 
+</P>
+<P>That is the other price of success: all those users who have
+existing build files they want to work. And all those IDEs that host
+Ant, and who want an easy upgrade to a new version. This means we
+have lost a lot of the flexibility we used to have in the early days
+of the project, when different versions of Ant could have completely
+different property evaluation algorithms and nobody would bat an
+eyelid. Now, even the most obscure bug fix ends up generating 'you
+broke my build complaints'. 
+</P>
+<P>This explains why there will not be the 'incompatible upgrade'
+version of Ant, Ant2.0, that has long been discussed on our web site.
+</P>
+<H2>Where is Ant2.0?</H2>
+<P>For years we have been discussing Ant2.0, the complete rewrite
+version that would be cleaner and faster, and slightly incompatible
+with Ant1.x. It would be the opportunity to take the lessons from the
+1.x line, and support them cleanly. We even got as far as having
+multiple implementations of new Ant engines in the CVS repository,
+especially Mutant and Myrmidion. But we always seemed to have a hard
+time making progress -everyone was too busy using and firefighting
+Ant1.x that nobody got time to work on the 2.x codebase. Which is a
+shame, as all the proposals had interesting ideas.</P>
+<P>After Ant1.5 shipped, the future of Ant effectively resolved into
+one of evolution rather than revolution. There will be no Ant2.0 with
+a complete new engine underneath. There will be no need to run XSL
+transforms over existing build files to move them to the Ant2.0
+world. Instead Ant1.x is getting better underneath the build file
+-improving its internal design while retaining five-nines backwards
+compatibility with existing build files. 
+</P>
+<P>And that is what we have been up to.</P>
+<P>Under the hood, Ant1.6 contains some of the most major reworkings
+of the core Ant system yet seen. We haven't finished yet, and are
+holding back some of the more visible developments so we can see what
+works before their release in a product forces us to maintain them.
+But the underlying parts of Ant are now set up for the next stage in
+development. 
+</P>
+<P>Whether we call the next version of Ant 1.7 or 2.0 is something we
+have yet to decide. Maybe we should call it 3.0 just to surprise
+people.</P>
+<H2>What has changed</H2>
+<P>Look at the <A HREF="WHATSNEW" TARGET="other">WHATSNEW</A>
+document to get a full list of changes. Here are some of the core
+conceptual differences.</P>
+<H3>No more Java1.1</H3>
+<P>We got fed up of jumping through reflection hoops to do everything
+from weak references to setting file timestamps. After consultation
+with the Ant user mail list, Ant1.6 only runs on Java1.2 or later. It
+can still cross compile to Java1.1 if that is what you have to do. We
+haven't completely purged all 1.1 references in the docs, or 1.1
+support from the source, but that will come over time.</P>
+<H3>New classloader use.</H3>
+<P>This is going to make people nervous. If there is one thing Java
+developers have learned over time, only the very naive, the very
+brave, or the very competent do things with classloaders. We will let
+the Ant users decide what category to put us in, but before everyone
+panics, Costin, of Tomcat fame, did a lot of the work here. You don't
+write application servers without understanding classloaders inside
+and out. 
+</P>
+<P>The impact of these changes will trickle out over Ant versions. In
+1.6, the key features are 
+</P>
+<OL>
+	<LI><P>We have got rid of the bit in the batch file/shell script
+	that built up a really big classpath environment variable from
+	everything in ANT_HOME/lib. Now that is done in a launcher class
+	that does the work then calls tools.ant.Main as before.</P>
+	<LI><P>You can add new library directories to that classloader with
+	the -lib option on the command line. This option is interpreted by
+	the launcher class, so will not work with IDEs and other apps that
+	use the inner entry point.</P>
+	<LI><P>We have broken up optional.jar into many-many jar files, such
+	as ant-commons-logging.jar, ant-xalan2.jar, etc etc, and a
+	nodeps.jar for optional stuff without any dependencies. This creates
+	a lot of jar files.</P>
+	<LI><P>You can now &lt;taskdef&gt; existing tasks -like &lt;junit&gt;-
+	by including the specific ant jar <I>and</I> the dependent libraries
+	(i.e. junit.jar) in the declaration. This solves the problem of
+	ANT_HOME/lib needing to contain every jar possibly needed by every
+	user/project. You still have to declare the tasks one by one,
+	something we will fix in Ant1.7</P>
+</OL>
+<H3>Adapters</H3>
+<P>These are Java classes that <I>adapt</I>&gt; arbitrary Java
+classes into ant tasks or types. There has always been some of this
+stuff inside Ant, but now you can &lt;taskdef&gt; a task by naming
+not just the implementation class, but the adapter class. An adapter
+is essentially a meta task implementation -something that can be used
+to create new tasks dynamically. Which, when you consider that the
+core of Ant is fundamentally an XML to java mapping system and a
+simple workflow engine, may let you do very unusual things with Ant. 
+</P>
+<H3>Antlib: Ant libraries</H3>
+<P>This is something we will expand in future. Till now you could
+declare tasks and types with &lt;taskdef&gt; and &lt;typedef&gt;. If
+they were in a jar, you could write a properties file and name the
+resource path of the file in the jar. If you wanted to have both
+tasks and types, you had name a shared classloader. If you wanted to
+add more things -such as conditions or mappers, you were out of luck.</P>
+<P>Antlibs are Ant Libraries, JAR files containing the code to extend
+Ant, and an XML description file to describe how Ant is extended.
+Before anyone panics at 'yet another XML descriptor syntax' to learn:
+you may already know the syntax. We call it "Ant build files".
+Actually it is a subset: it can only contain those task declarations
+that are derived from org.apache.tools.ant.taskdefs.AntlibDefinition.
+That includes &lt;taskdef&gt; and &lt;typedef&gt;, and <I>any other
+task you choose to derive. </I>We are experimenting with scripting
+and some kind of task predefinition declarations in antlibs. With the
+latter, you will be able to write a predefined task -such as a
+&lt;javac&gt; derivative with the compiler options set, and then use
+it any of your build files. This is all too experimental to get into
+Ant1.6 -expect it in the successor. For now, start using antlibs and
+use the &lt;taskdef&gt; task to load them into your projects.</P>
+<H3>XML Namespace aware</H3>
+<P>Ant finally adopts XML namespaces. This is to address build file
+scalability; antlibs can be imported into their own namespaces, and
+so you can avoid namespace clashes with other libraries. If you do
+not know what namespaces are, do not worry -they are not compulsory.</P>
+<H2>New Tasks</H2>
+<P>As usual, the task base is growing and expanding. These days the
+ant core is resisting adopting many of the highly worthy donations of
+tasks from people, because they make maintenance and firefighting
+worse. Our current stance is that except in special circumstances,
+Ant tasks to support third party open source projects, should live
+with the projects themselves. This keeps them in sync with the
+libraries they integrate with, avoids GPL/Apache licensing issues,
+and reduces the Ant team's support workload, letting them focus on
+the core. The antlib mechanism is intended to make it easier for
+people to load tasks from libraries for this very reason.</P>
+<P>That said, we are pleased to introduce many new tasks. Of
+particular interest may be the SSH tasks, which let one deploy code
+to remote servers securely. Now you really can do live updates with
+Ant -if the operations team will let you. The other one that is quite
+interesting is &lt;subant&gt;. This is an extension of the &lt;ant&gt;
+task, to take an entire fileset of directories and run their build
+files. This is incredibly useful in very large projects. This does
+not mean that we are advocating the many-build-file development
+pattern, but in a sufficiently complex project it happens anyway.
+&lt;subant&gt; keeps things manageable.</P>
+<H2>What else</H2>
+<P>So, what is new in Ant1.6? Lots of stuff. You will have to look at
+the <A HREF="WHATSNEW">whatsnew</A> file to see, but here are some
+key points. 
+</P>
+<OL>
+	<LI><P STYLE="margin-bottom: 0in">Bug fixes. We know, some things
+	were broken in 1.5. In ant1.6 we have moved the bugs, fixing the
+	ones we could, and no doubt adding different ones. Hopefully the
+	total bug count has decreased. 
+	</P>
+	<LI><P STYLE="margin-bottom: 0in">New platforms: Open VMS and HP's
+	NonStop Kernel (Tandem) OS. OpenVMS is very different from the rest;
+	Read the &lt;exec&gt; task documentation carefully. 
+	</P>
+	<LI><P STYLE="margin-bottom: 0in">Spawning. &lt;java&gt; and &lt;exec&gt;
+	started applications can outlive Ant if you set spawn=true. Note
+	that the moment you do so, Ant cannot bind to their input or output,
+	for obvious reasons. 
+	</P>
+	<LI><P>Synchronisation with Java versions (heh, thought by moving
+	javah's entry point that you could hide from us? Think again).</P>
+	<LI><P>Synchronization with third party libraries. Of special note:
+	we have moved to the Apache commons-net.jar, the successor to
+	NetComponents for telnet and FTP as well as Apache BSF, the
+	successor to IBM BSF, for script.</P>
+</OL>
+<P>There are many more enhancements, so we hope you will find your
+build projects easier. We have, as usual, jumped through hoops to
+keep existing builds working. If your build file stops working, and
+it isn't something listed on the 'changes that may break your build'
+part of the WHATSNEW file, or something we know about on bugzilla,
+please don't hesitate to file a new bug report, preferably one with a
+replicable test and a patch to fix the problem. Please, please,
+please, do a search on bugzilla first. You do not want to be the
+seventy-third person to complain that Ant1.6 doesn't do something
+that it should. 
+</P>
+<P>Thanks, 
+</P>
+<P>The Ant development team. 
+</P>
+<H3>Acknowledgements</H3>
+<UL>
+	<LI><P>Many thanks for Antoine to being the build manager for this
+	release! 
+	</P>
+	<LI><P>Thank you to everyone who supplies the components we use in
+	Ant, particularly JUnit, commons-logging, log4J, Xerces, and Xalan. 
+	</P>
+	<LI><P>Everyone who has supplied bug reports, especially those with
+	patches and tests.</P>
+	<LI><P>IDE projects who incorporate Ant into their products. Not
+	only does this help Ant's success, you find lots of interesting
+	integration defects. Special mention to the Eclipse team for fixing
+	our memory leaks :)</P>
+</UL>
+<H3>Call to Action</H3>
+<P>It is an interesting time for Java. .NET is a serious challenger,
+and will get better. Microsoft are fully committed to .NET; as a
+software company it is their future. Sun, on the other hand, are
+still a hardware vendor who are trying to challenge both Microsoft
+and the PC vendors, and by implication Intel too. With those hardware
+margins under serious pressure from x86 and Linux+Win2K3, they cannot
+afford to cross-subsidize Java development the way they have done
+since 1995. We cannot rely on Sun alone for the survival of Java. So
+what then? IBM? In places, yes. IBM do contribute a lot. But the core
+strength of Java over .NET is its community. It is the community that
+gave the world leading edge development tools and other core
+components: Ant, JUnit, XDoclet, hsqldb, Hibernate, Struts, etc.
+These things weren't created by JCP committees, or built according to
+the strategic vision of a Fortune 100 company. They were written by
+Java developers, for Java developers, usually to meet their own
+tactical goals. 
+</P>
+<P>If Java is to survive -and we think it ought to- everyone who can
+needs to become active members of that community. It could be helping
+with Ant, but it could just as easily be helping with any other open
+source Java project, be hosted by Apache, FSF, Sourceforge or someone
+else, be it server-side, client-side or mobile-side. It could be an
+existing project, or it could be your own idea as to how things could
+be better. The key is: things will only be better if you put in the
+time to make it so. 
+</P>
+<H3>Call to Inaction</H3>
+<P>A special message to whoever it is in charge of commands in
+tools.jar: stop moving your entry points! In Ant1.5 we had to deal
+with the 'classic' javac entry point going away in Java1.4.0,
+seemingly coming back later. In Java 1.4.2, the javadoc entry point
+moved. The traditional command line invocation mechanism has been
+replaced by hosted invocation -Ant, Maven, IDEs, etc, and moving
+entry points around breaks these host applications. Even if we get a
+bug fix out in Ant a few weeks after the Java release, it takes
+months for this to trickle down to end users, especially via IDEs and
+other distributions. For example, Sun's own Java Web Services
+Developer Pack ships with Ant1.5.1, and so cannot run &lt;javadoc&gt;
+on a 1.4.2 installation. 
+</P>
+</BODY>
+</HTML>
\ No newline at end of file