[maven-scm] copy for tag jsieve-project-0.4

git-svn-id: https://svn.apache.org/repos/asf/james/jsieve/tags/jsieve-project-0.4@941819 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/LICENSE.activation b/LICENSE.activation
new file mode 100644
index 0000000..8bd019d
--- /dev/null
+++ b/LICENSE.activation
@@ -0,0 +1,116 @@
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+1. Definitions.
+
+1.1. Contributor means each individual or entity that creates or contributes to the creation of Modifications.
+
+1.2. Contributor Version means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
+
+1.3. Covered Software means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
+
+1.4. Executable means the Covered Software in any form other than Source Code.
+
+1.5. Initial Developer means the individual or entity that first makes Original Software available under this License.
+
+1.6. Larger Work means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
+
+1.7. License means this document.
+
+1.8. Licensable means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+
+1.9. Modifications means the Source Code and Executable form of any of the following:
+
+A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
+
+B. Any new file that contains any part of the Original Software or previous Modification; or
+
+C. Any new file that is contributed or otherwise made available under the terms of this License.
+
+1.10. Original Software means the Source Code and Executable form of computer software code that is originally released under this License.
+
+1.11. Patent Claims means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+
+1.12. Source Code means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
+
+1.13. You (or Your) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, You includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, control means (a)‡the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b)‡ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
+
+2. License Grants.
+
+2.1. The Initial Developer Grant.
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
+(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
+(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
+(c) The licenses granted in Sections‡2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
+(d) Notwithstanding Section‡2.1(b) above, no patent license is granted: (1)‡for code that You delete from the Original Software, or (2)‡for infringements caused by: (i)‡the modification of the Original Software, or (ii)‡the combination of the Original Software with other software or devices.
+
+2.2. Contributor Grant.
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
+(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
+(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1)‡Modifications made by that Contributor (or portions thereof); and (2)‡the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
+(c) The licenses granted in Sections‡2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
+(d) Notwithstanding Section‡2.2(b) above, no patent license is granted: (1)‡for any code that Contributor has deleted from the Contributor Version; (2)‡for infringements caused by: (i)‡third party modifications of Contributor Version, or (ii)‡the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3)‡under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1. Availability of Source Code.
+
+Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.
+
+3.2. Modifications.
+
+The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
+
+3.3. Required Notices.
+You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
+
+3.4. Application of Additional Terms.
+You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+
+3.5. Distribution of Executable Versions.
+You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipients rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
+
+3.6. Larger Works.
+You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+4.1. New Versions.
+Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
+
+4.2. Effect of New Versions.
+
+You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward.
+4.3. Modified Versions.
+
+When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a)‡rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b)‡otherwise make it clear that the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+6. TERMINATION.
+
+6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as Participant) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections‡2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant.
+
+6.3. In the event of termination under Sections‡6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTYS NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+The Covered Software is a commercial item, as that term is defined in 48‡C.F.R.‡2.101 (Oct. 1995), consisting of commercial computer software (as that term is defined at 48 C.F.R. ‡252.227-7014(a)(1)) and commercial computer software documentation as such terms are used in 48‡C.F.R.‡12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.
+
+9. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdictions conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
+The GlassFish code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California. 
diff --git a/LICENSE.mail b/LICENSE.mail
new file mode 100644
index 0000000..8bd019d
--- /dev/null
+++ b/LICENSE.mail
@@ -0,0 +1,116 @@
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+1. Definitions.
+
+1.1. Contributor means each individual or entity that creates or contributes to the creation of Modifications.
+
+1.2. Contributor Version means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
+
+1.3. Covered Software means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
+
+1.4. Executable means the Covered Software in any form other than Source Code.
+
+1.5. Initial Developer means the individual or entity that first makes Original Software available under this License.
+
+1.6. Larger Work means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
+
+1.7. License means this document.
+
+1.8. Licensable means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+
+1.9. Modifications means the Source Code and Executable form of any of the following:
+
+A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
+
+B. Any new file that contains any part of the Original Software or previous Modification; or
+
+C. Any new file that is contributed or otherwise made available under the terms of this License.
+
+1.10. Original Software means the Source Code and Executable form of computer software code that is originally released under this License.
+
+1.11. Patent Claims means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+
+1.12. Source Code means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
+
+1.13. You (or Your) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, You includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, control means (a)‡the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b)‡ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
+
+2. License Grants.
+
+2.1. The Initial Developer Grant.
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
+(a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
+(b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
+(c) The licenses granted in Sections‡2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
+(d) Notwithstanding Section‡2.1(b) above, no patent license is granted: (1)‡for code that You delete from the Original Software, or (2)‡for infringements caused by: (i)‡the modification of the Original Software, or (ii)‡the combination of the Original Software with other software or devices.
+
+2.2. Contributor Grant.
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
+(a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
+(b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1)‡Modifications made by that Contributor (or portions thereof); and (2)‡the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
+(c) The licenses granted in Sections‡2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
+(d) Notwithstanding Section‡2.2(b) above, no patent license is granted: (1)‡for any code that Contributor has deleted from the Contributor Version; (2)‡for infringements caused by: (i)‡third party modifications of Contributor Version, or (ii)‡the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3)‡under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1. Availability of Source Code.
+
+Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.
+
+3.2. Modifications.
+
+The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
+
+3.3. Required Notices.
+You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
+
+3.4. Application of Additional Terms.
+You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+
+3.5. Distribution of Executable Versions.
+You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipients rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
+
+3.6. Larger Works.
+You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+4.1. New Versions.
+Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
+
+4.2. Effect of New Versions.
+
+You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward.
+4.3. Modified Versions.
+
+When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a)‡rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b)‡otherwise make it clear that the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+6. TERMINATION.
+
+6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as Participant) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections‡2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant.
+
+6.3. In the event of termination under Sections‡6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTYS NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+The Covered Software is a commercial item, as that term is defined in 48‡C.F.R.‡2.101 (Oct. 1995), consisting of commercial computer software (as that term is defined at 48 C.F.R. ‡252.227-7014(a)(1)) and commercial computer software documentation as such terms are used in 48‡C.F.R.‡12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.
+
+9. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdictions conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
+The GlassFish code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California. 
diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt
index 1c892d1..c62a3bf 100644
--- a/RELEASE_NOTES.txt
+++ b/RELEASE_NOTES.txt
@@ -20,6 +20,35 @@
 For legal and licensing issues, please look in the legal section of
 the documentation or read the LICENSE and NOTICE files.
 
+Version 0.4
+----------- 
+
+Changes
+---------
+Sub-tasks Completed
+ * https://issues.apache.org/jira/browse/JSIEVE-59 -  Generify MailAdapter API
+ * https://issues.apache.org/jira/browse/JSIEVE-66 - Ensure SieveFactory is thread safe by default
+ * https://issues.apache.org/jira/browse/JSIEVE-72 - Validate Extension Comparators 
+ 
+ Bugs Fixed
+ * https://issues.apache.org/jira/browse/JSIEVE-57 - Parse failure with multi-line form when the line begins with a dot
+ 
+ Improvements Made
+ * https://issues.apache.org/jira/browse/JSIEVE-35 - Revise MailAdapter.getContent() 
+ * https://issues.apache.org/jira/browse/JSIEVE-54 - Remove Ant Build
+ * https://issues.apache.org/jira/browse/JSIEVE-55 - Remove Staging Directory
+ * https://issues.apache.org/jira/browse/JSIEVE-56 - Provide a way to determine if a keep action is implicit or explicit
+ * https://issues.apache.org/jira/browse/JSIEVE-58 - Clarify SieveFactory thread safety
+ * https://issues.apache.org/jira/browse/JSIEVE-69 - Improve Test Coverage Of Ascii Numeric Test
+ 
+ New Features Added
+ * https://issues.apache.org/jira/browse/JSIEVE-71 - Add Support For i;ascii-numeric Comparator
+ 
+ Tasks Completed
+ * https://issues.apache.org/jira/browse/JSIEVE-53 - Generify
+ * https://issues.apache.org/jira/browse/JSIEVE-63 - Switch To apache-release Profile
+ * https://issues.apache.org/jira/browse/JSIEVE-68 - Ensure Mailet is thread safe
+
 Version 0.3
 ----------- 
 This release is the first to include mailet and utility modules, in addition to the core parsing
diff --git a/assemble/src/assemble/bin.xml b/assemble/src/assemble/bin.xml
index 897149b..cadd27a 100644
--- a/assemble/src/assemble/bin.xml
+++ b/assemble/src/assemble/bin.xml
@@ -31,8 +31,8 @@
       <directory>${project.basedir}/..</directory>
       <outputDirectory>/</outputDirectory>
       <includes>
-        <include>LICENSE.*</include>
-        <include>NOTICE.*</include>
+        <include>LICENSE.txt</include>
+        <include>NOTICE.txt</include>
         <include>RELEASE_NOTES.txt</include>
       </includes>
     </fileSet>
@@ -61,21 +61,39 @@
       <directory>${project.basedir}/../target/site/apidocs</directory>
       <outputDirectory>/apidocs</outputDirectory>
     </fileSet>
-    <fileSet>
-      <directory>../stage/javax.activation/jars/</directory>
-      <outputDirectory>/lib</outputDirectory>
-      <includes>
-        <include>activation.LICENSE</include>
-      </includes>
-    </fileSet>
-    <fileSet>
-      <directory>../stage/javax.mail/jars/</directory>
-      <outputDirectory>/lib</outputDirectory>
-      <includes>
-        <include>mail.LICENSE</include>
-      </includes>
-    </fileSet>
   </fileSets>
+  <files>
+    <file>
+      <source>${project.basedir}/../LICENSE.mail</source>
+      <outputDirectory>lib</outputDirectory>
+      <destName>mail.LICENSE</destName>
+    </file>
+    <file>
+      <source>${project.basedir}/../LICENSE.activation</source>
+      <outputDirectory>lib</outputDirectory>
+      <destName>activation.LICENSE</destName>
+    </file>
+    <file>
+      <source>${project.basedir}/../LICENSE.txt</source>
+      <outputDirectory>lib</outputDirectory>
+      <destName>apache-mailet.LICENSE</destName>
+    </file>
+    <file>
+      <source>${project.basedir}/../LICENSE.txt</source>
+      <outputDirectory>lib</outputDirectory>
+      <destName>apache-mailet-base.LICENSE</destName>
+    </file>
+    <file>
+      <source>${project.basedir}/../LICENSE.txt</source>
+      <outputDirectory>lib</outputDirectory>
+      <destName>apache-mime4j.LICENSE</destName>
+    </file>
+    <file>
+      <source>${project.basedir}/../LICENSE.txt</source>
+      <outputDirectory>lib</outputDirectory>
+      <destName>commons-logging.LICENSE</destName>
+    </file>
+  </files>
   <dependencySets>
     <dependencySet>
       <outputDirectory>/lib/</outputDirectory>
diff --git a/assemble/src/assemble/src.xml b/assemble/src/assemble/src.xml
index 037af0a..c65111f 100644
--- a/assemble/src/assemble/src.xml
+++ b/assemble/src/assemble/src.xml
@@ -31,6 +31,7 @@
       <directory>${project.basedir}/..</directory>
       <outputDirectory></outputDirectory>
       <excludes>
+        <exclude>**/bin/**</exclude>     
         <exclude>**/target/**</exclude>
         <exclude>.*</exclude>
         <exclude>.*/**</exclude>
diff --git a/pom.xml b/pom.xml
index 6285768..11f74e7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -36,6 +36,9 @@
   <inceptionYear>2008</inceptionYear>
   
   <properties>
+    <!-- Override the source descriptor -->
+    <sourceReleaseAssemblyDescriptor>src</sourceReleaseAssemblyDescriptor>
+    
     <!--
     The website is committed to subversion. This property can be overriden
     to upload the site to a local staging location.
@@ -59,6 +62,7 @@
     <james.jsieve.www>${james.www}/jsieve/</james.jsieve.www>
     <!-- Overridding this value allows single set of loopback settings to be maintained -->
     <james.www.id>jsieve-website</james.www.id>
+    
   </properties>
   
   
diff --git a/trunk/LICENSE.txt b/trunk/LICENSE.txt
deleted file mode 100644
index 94d8c58..0000000
--- a/trunk/LICENSE.txt
+++ /dev/null
@@ -1,176 +0,0 @@
-                                 Apache License

-                           Version 2.0, January 2004

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

-

-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

-

-   1. Definitions.

-

-      "License" shall mean the terms and conditions for use, reproduction,

-      and distribution as defined by Sections 1 through 9 of this document.

-

-      "Licensor" shall mean the copyright owner or entity authorized by

-      the copyright owner that is granting the License.

-

-      "Legal Entity" shall mean the union of the acting entity and all

-      other entities that control, are controlled by, or are under common

-      control with that entity. For the purposes of this definition,

-      "control" means (i) the power, direct or indirect, to cause the

-      direction or management of such entity, whether by contract or

-      otherwise, or (ii) ownership of fifty percent (50%) or more of the

-      outstanding shares, or (iii) beneficial ownership of such entity.

-

-      "You" (or "Your") shall mean an individual or Legal Entity

-      exercising permissions granted by this License.

-

-      "Source" form shall mean the preferred form for making modifications,

-      including but not limited to software source code, documentation

-      source, and configuration files.

-

-      "Object" form shall mean any form resulting from mechanical

-      transformation or translation of a Source form, including but

-      not limited to compiled object code, generated documentation,

-      and conversions to other media types.

-

-      "Work" shall mean the work of authorship, whether in Source or

-      Object form, made available under the License, as indicated by a

-      copyright notice that is included in or attached to the work

-      (an example is provided in the Appendix below).

-

-      "Derivative Works" shall mean any work, whether in Source or Object

-      form, that is based on (or derived from) the Work and for which the

-      editorial revisions, annotations, elaborations, or other modifications

-      represent, as a whole, an original work of authorship. For the purposes

-      of this License, Derivative Works shall not include works that remain

-      separable from, or merely link (or bind by name) to the interfaces of,

-      the Work and Derivative Works thereof.

-

-      "Contribution" shall mean any work of authorship, including

-      the original version of the Work and any modifications or additions

-      to that Work or Derivative Works thereof, that is intentionally

-      submitted to Licensor for inclusion in the Work by the copyright owner

-      or by an individual or Legal Entity authorized to submit on behalf of

-      the copyright owner. For the purposes of this definition, "submitted"

-      means any form of electronic, verbal, or written communication sent

-      to the Licensor or its representatives, including but not limited to

-      communication on electronic mailing lists, source code control systems,

-      and issue tracking systems that are managed by, or on behalf of, the

-      Licensor for the purpose of discussing and improving the Work, but

-      excluding communication that is conspicuously marked or otherwise

-      designated in writing by the copyright owner as "Not a Contribution."

-

-      "Contributor" shall mean Licensor and any individual or Legal Entity

-      on behalf of whom a Contribution has been received by Licensor and

-      subsequently incorporated within the Work.

-

-   2. Grant of Copyright License. Subject to the terms and conditions of

-      this License, each Contributor hereby grants to You a perpetual,

-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

-      copyright license to reproduce, prepare Derivative Works of,

-      publicly display, publicly perform, sublicense, and distribute the

-      Work and such Derivative Works in Source or Object form.

-

-   3. Grant of Patent License. Subject to the terms and conditions of

-      this License, each Contributor hereby grants to You a perpetual,

-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

-      (except as stated in this section) patent license to make, have made,

-      use, offer to sell, sell, import, and otherwise transfer the Work,

-      where such license applies only to those patent claims licensable

-      by such Contributor that are necessarily infringed by their

-      Contribution(s) alone or by combination of their Contribution(s)

-      with the Work to which such Contribution(s) was submitted. If You

-      institute patent litigation against any entity (including a

-      cross-claim or counterclaim in a lawsuit) alleging that the Work

-      or a Contribution incorporated within the Work constitutes direct

-      or contributory patent infringement, then any patent licenses

-      granted to You under this License for that Work shall terminate

-      as of the date such litigation is filed.

-

-   4. Redistribution. You may reproduce and distribute copies of the

-      Work or Derivative Works thereof in any medium, with or without

-      modifications, and in Source or Object form, provided that You

-      meet the following conditions:

-

-      (a) You must give any other recipients of the Work or

-          Derivative Works a copy of this License; and

-

-      (b) You must cause any modified files to carry prominent notices

-          stating that You changed the files; and

-

-      (c) You must retain, in the Source form of any Derivative Works

-          that You distribute, all copyright, patent, trademark, and

-          attribution notices from the Source form of the Work,

-          excluding those notices that do not pertain to any part of

-          the Derivative Works; and

-

-      (d) If the Work includes a "NOTICE" text file as part of its

-          distribution, then any Derivative Works that You distribute must

-          include a readable copy of the attribution notices contained

-          within such NOTICE file, excluding those notices that do not

-          pertain to any part of the Derivative Works, in at least one

-          of the following places: within a NOTICE text file distributed

-          as part of the Derivative Works; within the Source form or

-          documentation, if provided along with the Derivative Works; or,

-          within a display generated by the Derivative Works, if and

-          wherever such third-party notices normally appear. The contents

-          of the NOTICE file are for informational purposes only and

-          do not modify the License. You may add Your own attribution

-          notices within Derivative Works that You distribute, alongside

-          or as an addendum to the NOTICE text from the Work, provided

-          that such additional attribution notices cannot be construed

-          as modifying the License.

-

-      You may add Your own copyright statement to Your modifications and

-      may provide additional or different license terms and conditions

-      for use, reproduction, or distribution of Your modifications, or

-      for any such Derivative Works as a whole, provided Your use,

-      reproduction, and distribution of the Work otherwise complies with

-      the conditions stated in this License.

-

-   5. Submission of Contributions. Unless You explicitly state otherwise,

-      any Contribution intentionally submitted for inclusion in the Work

-      by You to the Licensor shall be under the terms and conditions of

-      this License, without any additional terms or conditions.

-      Notwithstanding the above, nothing herein shall supersede or modify

-      the terms of any separate license agreement you may have executed

-      with Licensor regarding such Contributions.

-

-   6. Trademarks. This License does not grant permission to use the trade

-      names, trademarks, service marks, or product names of the Licensor,

-      except as required for reasonable and customary use in describing the

-      origin of the Work and reproducing the content of the NOTICE file.

-

-   7. Disclaimer of Warranty. Unless required by applicable law or

-      agreed to in writing, Licensor provides the Work (and each

-      Contributor provides its Contributions) on an "AS IS" BASIS,

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

-      implied, including, without limitation, any warranties or conditions

-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

-      PARTICULAR PURPOSE. You are solely responsible for determining the

-      appropriateness of using or redistributing the Work and assume any

-      risks associated with Your exercise of permissions under this License.

-

-   8. Limitation of Liability. In no event and under no legal theory,

-      whether in tort (including negligence), contract, or otherwise,

-      unless required by applicable law (such as deliberate and grossly

-      negligent acts) or agreed to in writing, shall any Contributor be

-      liable to You for damages, including any direct, indirect, special,

-      incidental, or consequential damages of any character arising as a

-      result of this License or out of the use or inability to use the

-      Work (including but not limited to damages for loss of goodwill,

-      work stoppage, computer failure or malfunction, or any and all

-      other commercial damages or losses), even if such Contributor

-      has been advised of the possibility of such damages.

-

-   9. Accepting Warranty or Additional Liability. While redistributing

-      the Work or Derivative Works thereof, You may choose to offer,

-      and charge a fee for, acceptance of support, warranty, indemnity,

-      or other liability obligations and/or rights consistent with this

-      License. However, in accepting such obligations, You may act only

-      on Your own behalf and on Your sole responsibility, not on behalf

-      of any other Contributor, and only if You agree to indemnify,

-      defend, and hold each Contributor harmless for any liability

-      incurred by, or claims asserted against, such Contributor by reason

-      of your accepting any such warranty or additional liability.

-

-   END OF TERMS AND CONDITIONS	
\ No newline at end of file
diff --git a/trunk/NOTICE.txt b/trunk/NOTICE.txt
deleted file mode 100644
index 02c1448..0000000
--- a/trunk/NOTICE.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Apache James JSieve Library

-Copyright 2009 The Apache Software Foundation

-

-This product includes software developed at

-The Apache Software Foundation (http://www.apache.org/).

-   

diff --git a/trunk/README.txt b/trunk/README.txt
deleted file mode 100644
index 0369457..0000000
--- a/trunk/README.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-JSieve is built using Maven 2 (http://maven.apache.org). To build all modules type
-
-% mvn install
-
- 
diff --git a/trunk/RELEASE_NOTES.txt b/trunk/RELEASE_NOTES.txt
deleted file mode 100644
index 1c892d1..0000000
--- a/trunk/RELEASE_NOTES.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-                        Release Notes
-                        -------------
-
-Apache JSieve is a Java implementation of the Sieve mail filtering language defined by 
-RFC 3028. jSieve is implemented as a langauge processor that can be plugged into any
-internet mail application to add Sieve support.
-
-Comments, Questions and Issues
-------------------------------
-jSieve is a sub-project of Apache James. Please direct your comments and questions to 
-the relevant James list.
-
-To report issues, such as bugs, go to 
-http://issues.apache.org/jira/browse/JSIEVE
-As jSieve comes with a fairly extensive suite of jUnit Tests, it would be most 
-helpful for bug reports to be accompanied by an illustrative jUnit test case.
-
-Licensing and legal issues
---------------------------
-For legal and licensing issues, please look in the legal section of
-the documentation or read the LICENSE and NOTICE files.
-
-Version 0.3
------------ 
-This release is the first to include mailet and utility modules, in addition to the core parsing
-library. The configuration API has changed significantly to replace magic singletons with POJOs
-suitable for IoC. The default configuration mechanism has been retained so though calls have
-changed, existing configurations should still be compatible.
- 
-Utilities include node serializers to xml and sieve script. The mailet module provides Sieve
-in the James 3 codebase.
-
-Java 1.5 is now the minimum version required.
- 
-Changes   
--------
-Sub-tasks Completed
- * https://issues.apache.org/jira/browse/JSIEVE-27 - Refactor ComparatorManager
- * https://issues.apache.org/jira/browse/JSIEVE-29 - Refactor ConfigurationManager
- * https://issues.apache.org/jira/browse/JSIEVE-32 - Refactor TestManager
- * https://issues.apache.org/jira/browse/JSIEVE-37 - Push main source down a level
- * https://issues.apache.org/jira/browse/JSIEVE-38 - Modular Ant Build
- * https://issues.apache.org/jira/browse/JSIEVE-44 - Create Check Module
- * https://issues.apache.org/jira/browse/JSIEVE-45 - Extract Reusable Ant Macros
- * https://issues.apache.org/jira/browse/JSIEVE-46 - Unified Distribution
- * https://issues.apache.org/jira/browse/JSIEVE-48 - Release Quality Maven Build
-    
-Bugs Fixed
- * https://issues.apache.org/jira/browse/JSIEVE-49 - CPU spins when :matches expression 
-                                                     contains &quot;*************&quot;
-                                                     
-Improvements Made
- * https://issues.apache.org/jira/browse/JSIEVE-47 - Access to script comments
- * https://issues.apache.org/jira/browse/JSIEVE-52 - Check Support For Numeric Quantifiers
-    
-New Features Added
- * https://issues.apache.org/jira/browse/JSIEVE-43 - Add API for generating a Sieve script from a parse tree 
- * https://issues.apache.org/jira/browse/JSIEVE-50 - Sieve-In-XML (Experimental Preview)
-                
-Tasks Completed
- * https://issues.apache.org/jira/browse/JSIEVE-16 - Singletons -> IoC
- * https://issues.apache.org/jira/browse/JSIEVE-24 - Include build time libraries (javacc, 
-                                                     javamail, activation) in the source distribution
- * https://issues.apache.org/jira/browse/JSIEVE-33 - Remove .junit. package name from tests.
- * https://issues.apache.org/jira/browse/JSIEVE-34 - make jsieve a multimodule project
\ No newline at end of file
diff --git a/trunk/assemble/pom.xml b/trunk/assemble/pom.xml
deleted file mode 100644
index 6b0a099..0000000
--- a/trunk/assemble/pom.xml
+++ /dev/null
@@ -1,122 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-  
-      http://www.apache.org/licenses/LICENSE-2.0
-  
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.    
-  -->
-  <parent>
-    <artifactId>jsieve-project</artifactId>
-    <groupId>org.apache.james</groupId>
-    <version>0.4</version>
-  </parent>
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.james</groupId>
-  <artifactId>apache-james-jsieve</artifactId>
-  <name>Apache JAMES jSieve Assembly</name>
-  <version>0.4</version>
-  <packaging>pom</packaging>
-  <description>
-Apache jSieve is a server side mail filtering system 
-implementing RFC3028. Apache jSieve is developed by the 
-JAMES project. This module is used by Maven to create
-fully assembled and packaged distributions.
-  </description>
-  <url>http://james.apache.org/jsieve</url>
-  <inceptionYear>2004</inceptionYear>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.james</groupId>
-      <artifactId>apache-jsieve</artifactId>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.apache.james</groupId>
-      <artifactId>apache-jsieve-mailet</artifactId>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.apache.james</groupId>
-      <artifactId>apache-jsieve-util</artifactId>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.apache.james</groupId>
-      <artifactId>apache-mailet</artifactId>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.apache.james</groupId>
-      <artifactId>apache-mailet-base</artifactId>
-    </dependency>
-      
-    <dependency>
-      <groupId>org.apache.james</groupId>
-      <artifactId>apache-mime4j</artifactId>
-    </dependency>
-      
-    <dependency>
-      <groupId>commons-logging</groupId>
-      <artifactId>commons-logging</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    
-    <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>javax.mail</groupId>
-      <artifactId>mail</artifactId>
-    </dependency>
-    
-    <dependency>
-      <groupId>javax.activation</groupId>
-      <artifactId>activation</artifactId>
-    </dependency>
-
-  </dependencies>
-
-  <build>    
-    <plugins>
-
-      <plugin>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <configuration>
-          <descriptorSourceDirectory>${basedir}/src/assemble/</descriptorSourceDirectory>
-          <tarLongFileMode>gnu</tarLongFileMode> 
-        </configuration>
-        <executions>
-          <execution>
-            <id>make-assembly</id>
-            <phase>package</phase> <!-- append to the packaging phase. -->
-            <goals>
-              <goal>attached</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-</project>
diff --git a/trunk/assemble/src/assemble/bin.xml b/trunk/assemble/src/assemble/bin.xml
deleted file mode 100644
index 897149b..0000000
--- a/trunk/assemble/src/assemble/bin.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<assembly>
-  <!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed  under the  License is distributed on an "AS IS" BASIS,
-  WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
-  implied.
-  
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-  <id>bin</id>
-  <!-- 
-  Generates a jar file including the binary jar and the runtime dependencies.
-  including NOTICE and LICENSE in the root.
-  -->
-  <formats>
-    <format>zip</format>
-    <format>tar.gz</format>
-  </formats>
-  <fileSets>
-    <fileSet>
-      <directory>${project.basedir}/..</directory>
-      <outputDirectory>/</outputDirectory>
-      <includes>
-        <include>LICENSE.*</include>
-        <include>NOTICE.*</include>
-        <include>RELEASE_NOTES.txt</include>
-      </includes>
-    </fileSet>
-    <fileSet>
-      <directory>${project.basedir}/../mailet/target</directory>
-      <outputDirectory>/</outputDirectory>
-      <includes>
-        <include>apache-jsieve*.jar</include>
-      </includes>
-    </fileSet>
-    <fileSet>
-      <directory>${project.basedir}/../util/target</directory>
-      <outputDirectory>/</outputDirectory>
-      <includes>
-        <include>apache-jsieve*.jar</include>
-      </includes>
-    </fileSet>
-    <fileSet>
-      <directory>${project.basedir}/../main/target</directory>
-      <outputDirectory>/</outputDirectory>
-      <includes>
-        <include>apache-jsieve*.jar</include>
-      </includes>
-    </fileSet>
-    <fileSet>
-      <directory>${project.basedir}/../target/site/apidocs</directory>
-      <outputDirectory>/apidocs</outputDirectory>
-    </fileSet>
-    <fileSet>
-      <directory>../stage/javax.activation/jars/</directory>
-      <outputDirectory>/lib</outputDirectory>
-      <includes>
-        <include>activation.LICENSE</include>
-      </includes>
-    </fileSet>
-    <fileSet>
-      <directory>../stage/javax.mail/jars/</directory>
-      <outputDirectory>/lib</outputDirectory>
-      <includes>
-        <include>mail.LICENSE</include>
-      </includes>
-    </fileSet>
-  </fileSets>
-  <dependencySets>
-    <dependencySet>
-      <outputDirectory>/lib/</outputDirectory>
-      <useProjectArtifact>false</useProjectArtifact>
-      <scope>runtime</scope>
-      <excludes>
-        <exclude>apache-jsieve*</exclude>
-      </excludes>
-    </dependencySet>
-  </dependencySets>
-</assembly>
\ No newline at end of file
diff --git a/trunk/assemble/src/assemble/src.xml b/trunk/assemble/src/assemble/src.xml
deleted file mode 100644
index 037af0a..0000000
--- a/trunk/assemble/src/assemble/src.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<assembly>
-  <!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed  under the  License is distributed on an "AS IS" BASIS,
-  WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
-  implied.
-  
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-  <id>src</id>
-  <!-- 
-  Generates a file including all the source tree excluding files/folders
-  starting with "." , *.bak and the target
-  -->
-  <formats>
-    <format>zip</format>
-    <format>tar.gz</format>
-  </formats>
-  <fileSets>
-    <fileSet>
-      <directory>${project.basedir}/..</directory>
-      <outputDirectory></outputDirectory>
-      <excludes>
-        <exclude>**/target/**</exclude>
-        <exclude>.*</exclude>
-        <exclude>.*/**</exclude>
-        <exclude>**.bak</exclude>
-        <exclude>*.jar</exclude>
-        <exclude>**/james-project/**</exclude>
-        <exclude>**/site/**</exclude>
-        <exclude>**/.*</exclude>
-      </excludes>
-      <useDefaultExcludes>true</useDefaultExcludes>
-    </fileSet>
-  </fileSets>
-</assembly>
\ No newline at end of file
diff --git a/trunk/mailet/LICENSE.apache b/trunk/mailet/LICENSE.apache
deleted file mode 100644
index 94d8c58..0000000
--- a/trunk/mailet/LICENSE.apache
+++ /dev/null
@@ -1,176 +0,0 @@
-                                 Apache License

-                           Version 2.0, January 2004

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

-

-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

-

-   1. Definitions.

-

-      "License" shall mean the terms and conditions for use, reproduction,

-      and distribution as defined by Sections 1 through 9 of this document.

-

-      "Licensor" shall mean the copyright owner or entity authorized by

-      the copyright owner that is granting the License.

-

-      "Legal Entity" shall mean the union of the acting entity and all

-      other entities that control, are controlled by, or are under common

-      control with that entity. For the purposes of this definition,

-      "control" means (i) the power, direct or indirect, to cause the

-      direction or management of such entity, whether by contract or

-      otherwise, or (ii) ownership of fifty percent (50%) or more of the

-      outstanding shares, or (iii) beneficial ownership of such entity.

-

-      "You" (or "Your") shall mean an individual or Legal Entity

-      exercising permissions granted by this License.

-

-      "Source" form shall mean the preferred form for making modifications,

-      including but not limited to software source code, documentation

-      source, and configuration files.

-

-      "Object" form shall mean any form resulting from mechanical

-      transformation or translation of a Source form, including but

-      not limited to compiled object code, generated documentation,

-      and conversions to other media types.

-

-      "Work" shall mean the work of authorship, whether in Source or

-      Object form, made available under the License, as indicated by a

-      copyright notice that is included in or attached to the work

-      (an example is provided in the Appendix below).

-

-      "Derivative Works" shall mean any work, whether in Source or Object

-      form, that is based on (or derived from) the Work and for which the

-      editorial revisions, annotations, elaborations, or other modifications

-      represent, as a whole, an original work of authorship. For the purposes

-      of this License, Derivative Works shall not include works that remain

-      separable from, or merely link (or bind by name) to the interfaces of,

-      the Work and Derivative Works thereof.

-

-      "Contribution" shall mean any work of authorship, including

-      the original version of the Work and any modifications or additions

-      to that Work or Derivative Works thereof, that is intentionally

-      submitted to Licensor for inclusion in the Work by the copyright owner

-      or by an individual or Legal Entity authorized to submit on behalf of

-      the copyright owner. For the purposes of this definition, "submitted"

-      means any form of electronic, verbal, or written communication sent

-      to the Licensor or its representatives, including but not limited to

-      communication on electronic mailing lists, source code control systems,

-      and issue tracking systems that are managed by, or on behalf of, the

-      Licensor for the purpose of discussing and improving the Work, but

-      excluding communication that is conspicuously marked or otherwise

-      designated in writing by the copyright owner as "Not a Contribution."

-

-      "Contributor" shall mean Licensor and any individual or Legal Entity

-      on behalf of whom a Contribution has been received by Licensor and

-      subsequently incorporated within the Work.

-

-   2. Grant of Copyright License. Subject to the terms and conditions of

-      this License, each Contributor hereby grants to You a perpetual,

-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

-      copyright license to reproduce, prepare Derivative Works of,

-      publicly display, publicly perform, sublicense, and distribute the

-      Work and such Derivative Works in Source or Object form.

-

-   3. Grant of Patent License. Subject to the terms and conditions of

-      this License, each Contributor hereby grants to You a perpetual,

-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

-      (except as stated in this section) patent license to make, have made,

-      use, offer to sell, sell, import, and otherwise transfer the Work,

-      where such license applies only to those patent claims licensable

-      by such Contributor that are necessarily infringed by their

-      Contribution(s) alone or by combination of their Contribution(s)

-      with the Work to which such Contribution(s) was submitted. If You

-      institute patent litigation against any entity (including a

-      cross-claim or counterclaim in a lawsuit) alleging that the Work

-      or a Contribution incorporated within the Work constitutes direct

-      or contributory patent infringement, then any patent licenses

-      granted to You under this License for that Work shall terminate

-      as of the date such litigation is filed.

-

-   4. Redistribution. You may reproduce and distribute copies of the

-      Work or Derivative Works thereof in any medium, with or without

-      modifications, and in Source or Object form, provided that You

-      meet the following conditions:

-

-      (a) You must give any other recipients of the Work or

-          Derivative Works a copy of this License; and

-

-      (b) You must cause any modified files to carry prominent notices

-          stating that You changed the files; and

-

-      (c) You must retain, in the Source form of any Derivative Works

-          that You distribute, all copyright, patent, trademark, and

-          attribution notices from the Source form of the Work,

-          excluding those notices that do not pertain to any part of

-          the Derivative Works; and

-

-      (d) If the Work includes a "NOTICE" text file as part of its

-          distribution, then any Derivative Works that You distribute must

-          include a readable copy of the attribution notices contained

-          within such NOTICE file, excluding those notices that do not

-          pertain to any part of the Derivative Works, in at least one

-          of the following places: within a NOTICE text file distributed

-          as part of the Derivative Works; within the Source form or

-          documentation, if provided along with the Derivative Works; or,

-          within a display generated by the Derivative Works, if and

-          wherever such third-party notices normally appear. The contents

-          of the NOTICE file are for informational purposes only and

-          do not modify the License. You may add Your own attribution

-          notices within Derivative Works that You distribute, alongside

-          or as an addendum to the NOTICE text from the Work, provided

-          that such additional attribution notices cannot be construed

-          as modifying the License.

-

-      You may add Your own copyright statement to Your modifications and

-      may provide additional or different license terms and conditions

-      for use, reproduction, or distribution of Your modifications, or

-      for any such Derivative Works as a whole, provided Your use,

-      reproduction, and distribution of the Work otherwise complies with

-      the conditions stated in this License.

-

-   5. Submission of Contributions. Unless You explicitly state otherwise,

-      any Contribution intentionally submitted for inclusion in the Work

-      by You to the Licensor shall be under the terms and conditions of

-      this License, without any additional terms or conditions.

-      Notwithstanding the above, nothing herein shall supersede or modify

-      the terms of any separate license agreement you may have executed

-      with Licensor regarding such Contributions.

-

-   6. Trademarks. This License does not grant permission to use the trade

-      names, trademarks, service marks, or product names of the Licensor,

-      except as required for reasonable and customary use in describing the

-      origin of the Work and reproducing the content of the NOTICE file.

-

-   7. Disclaimer of Warranty. Unless required by applicable law or

-      agreed to in writing, Licensor provides the Work (and each

-      Contributor provides its Contributions) on an "AS IS" BASIS,

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

-      implied, including, without limitation, any warranties or conditions

-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

-      PARTICULAR PURPOSE. You are solely responsible for determining the

-      appropriateness of using or redistributing the Work and assume any

-      risks associated with Your exercise of permissions under this License.

-

-   8. Limitation of Liability. In no event and under no legal theory,

-      whether in tort (including negligence), contract, or otherwise,

-      unless required by applicable law (such as deliberate and grossly

-      negligent acts) or agreed to in writing, shall any Contributor be

-      liable to You for damages, including any direct, indirect, special,

-      incidental, or consequential damages of any character arising as a

-      result of this License or out of the use or inability to use the

-      Work (including but not limited to damages for loss of goodwill,

-      work stoppage, computer failure or malfunction, or any and all

-      other commercial damages or losses), even if such Contributor

-      has been advised of the possibility of such damages.

-

-   9. Accepting Warranty or Additional Liability. While redistributing

-      the Work or Derivative Works thereof, You may choose to offer,

-      and charge a fee for, acceptance of support, warranty, indemnity,

-      or other liability obligations and/or rights consistent with this

-      License. However, in accepting such obligations, You may act only

-      on Your own behalf and on Your sole responsibility, not on behalf

-      of any other Contributor, and only if You agree to indemnify,

-      defend, and hold each Contributor harmless for any liability

-      incurred by, or claims asserted against, such Contributor by reason

-      of your accepting any such warranty or additional liability.

-

-   END OF TERMS AND CONDITIONS	
\ No newline at end of file
diff --git a/trunk/mailet/NOTICE.base b/trunk/mailet/NOTICE.base
deleted file mode 100644
index 76a0011..0000000
--- a/trunk/mailet/NOTICE.base
+++ /dev/null
@@ -1,10 +0,0 @@
-   =========================================================================

-   ==      NOTICE file for use with the Apache License, Version 2.0,      ==

-   =========================================================================

-

-   Apache James JSieve Library

-   Copyright 2009 The Apache Software Foundation

-

-   This product includes software developed at

-   The Apache Software Foundation (http://www.apache.org/).

-
diff --git a/trunk/mailet/build.xml b/trunk/mailet/build.xml
deleted file mode 100644
index b2dd89d..0000000
--- a/trunk/mailet/build.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-==========================================================================
-
- jSieve build file 
-
-
-  Licensed to the Apache Software Foundation (ASF) under one   
-  or more contributor license agreements.  See the NOTICE file 
-  distributed with this work for additional information        
-  regarding copyright ownership.  The ASF licenses this file   
-  to you under the Apache License, Version 2.0 (the            
-  "License"); you may not use this file except in compliance   
-  with the License.  You may obtain a copy of the License at   
-                                                               
-    http://www.apache.org/licenses/LICENSE-2.0                 
-                                                               
-  Unless required by applicable law or agreed to in writing,   
-  software distributed under the License is distributed on an  
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       
-  KIND, either express or implied.  See the License for the    
-  specific language governing permissions and limitations      
-  under the License.                                           
- 
-==============================================================================
--->
-
-<project name='jsieve-mailet' default="main" basedir=".">
-     
-    <!--
-    Give user a chance to override without editing this file
-    (and without typing -D each time he compiles it)
-    -->
-    <property file=".ant.properties" />
-    <property file="${user.home}/.ant.properties" />
-    <property file="../include.properties" />
-    <property file="../default.properties" />
-
-    <path id="mail.class.path">
-        <pathelement location='${mail.jar}' />
-        <pathelement location='${activation.jar}' />
-    </path>
-
-    <path id="project.class.path">
-        <pathelement location="${commons-logging.jar}" />
-        <pathelement location="${log4j.jar}" />
-        <pathelement location="${junit.jar}" />
-        <pathelement location='${lib.jsieve.dir}/${name}-${version}.jar' />
-        <pathelement location="${mailet.jar}" />
-        <pathelement location="${mailet-base.jar}" />
-        <pathelement location="${mime4j.jar}" />
-        <path refid="mail.class.path" />
-        <pathelement path="${java.class.path}" />
-        <pathelement path="${build.classes}" />
-    </path>
-
-    <path id="project.test.class.path">
-        <path refid="project.class.path" />
-    </path>
-
-     <import file='../build.xml'/>
-    
-    <target name="main" depends="run-tests" description=" - main target"/>
-
-    <target name="prepare" description=" - paparations                   [internal]">
-        <CheckMailConditions/>
-    </target>
-
-    <target name="compile" depends="prepare" description=" - compiles test and main source">
-        <CompileMain>
-            <src path="${java.dir}" />
-        </CompileMain>
-        <CompileTests/>
-    </target>
-
-    <target name="jar" depends="compile" description=" - jars classes">
-        <Jar name='mailet'/> 
-    </target>
-
-    <target name="run-tests" depends="jar" description=" - runs all tests">
-        <RunTests/>
-    </target>
-
-    <target name="clean" description=" - cleans build files">
-        <Clean/>
-    </target>
-
-    <target name="usage" description=" - prints help">
-        <Usage/>
-    </target>
-</project>
diff --git a/trunk/mailet/pom.xml b/trunk/mailet/pom.xml
deleted file mode 100644
index a35c01d..0000000
--- a/trunk/mailet/pom.xml
+++ /dev/null
@@ -1,247 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-  
-      http://www.apache.org/licenses/LICENSE-2.0
-  
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.    
-  -->
-  <parent>
-    <artifactId>jsieve-project</artifactId>
-    <groupId>org.apache.james</groupId>
-    <version>0.4</version>
-  </parent>
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.james</groupId>
-  <artifactId>apache-jsieve-mailet</artifactId>
-  <name>Apache JAMES jSieve Mailet</name>
-  <version>0.4</version>
-  <packaging>jar</packaging>
-  <description>
-Apache jSieve is a server side mail filtering system 
-implementing RFC3028. Apache jSieve is developed by the 
-JAMES project.
-  </description>
-  <url>http://james.apache.org/jsieve</url>
-  <inceptionYear>2004</inceptionYear>
-
-  <properties>
-    <!--
-    The website is committed to subversion. This property can be overriden
-    to upload the site to a local staging location.
-    For example, adding the following to ~/.m2/settings.xml will upload
-    to localhost:
-    
-      <profiles>
-        <profile>
-           <id>main</id>
-           <activation>
-              <activeByDefault>true</activeByDefault>
-           </activation>
-           <properties>
-              <james.www>scp://localhost/www</james.www>
-              <james.www.id>localhost</james.www.id>
-      ...
-    -->
-    <!-- General location for site stage -->
-    <james.www>scp://people.apache.org/www/james.apache.org/</james.www>
-    <!-- Project specific location, allowing specific override -->
-    <james.jsieve.www>${james.www}/jsieve/</james.jsieve.www>
-    <!-- Overridding this value allows single set of loopback settings to be maintained -->
-    <james.www.id>jsieve-website</james.www.id>
-  </properties>
-
-  <distributionManagement>
-    <site>
-      <id>${james.www.id}</id>
-      <url>${james.jsieve.www}/mailet</url>
-    </site>
-  </distributionManagement>
-
-
-  <issueManagement>
-    <system>JIRA</system>
-    <url>http://issues.apache.org/jira/browse/JSIEVE</url>
-  </issueManagement>
-
-  <scm>
-    <connection>scm:svn:http://svn.apache.org/repos/asf/james/jsieve/tags/jsieve-project-0.4</connection>
-    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/james/jsieve/tags/jsieve-project-0.4</developerConnection>
-    <url>http://svn.apache.org/viewvc/james/jsieve/tags/jsieve-project-0.4</url>
-  </scm>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.james</groupId>
-      <artifactId>apache-jsieve</artifactId>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.apache.james</groupId>
-      <artifactId>apache-mailet</artifactId>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.apache.james</groupId>
-      <artifactId>apache-mailet-base</artifactId>
-    </dependency>
-      
-    <dependency>
-      <groupId>org.apache.james</groupId>
-      <artifactId>apache-mime4j</artifactId>
-    </dependency>
-    
-    <dependency>
-      <groupId>commons-logging</groupId>
-      <artifactId>commons-logging</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    
-    <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>javax.mail</groupId>
-      <artifactId>mail</artifactId>
-    </dependency>
-    
-    <dependency>
-      <groupId>javax.activation</groupId>
-      <artifactId>activation</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>jmock</groupId>
-      <artifactId>jmock</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <resources>
-      <resource>
-        <directory>src/main/resources</directory>
-      </resource>
-    </resources>
-    
-    <plugins>     
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>rat-maven-plugin</artifactId>
-      </plugin>
-      <plugin>
-      	<groupId>org.apache.felix</groupId>
-      	<artifactId>maven-bundle-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-doap-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
-
-  <reporting>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.james</groupId>
-        <artifactId>maven-mailetdocs-plugin</artifactId>
-        <version>0.1</version>
-      </plugin>
-      <plugin>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.4.3</version>
-      </plugin>
-      <plugin>
-        <artifactId>maven-surefire-report-plugin</artifactId>
-        <version>2.4.3</version>
-      </plugin> 
-      <plugin>
-        <artifactId>maven-javadoc-plugin</artifactId>
-        <version>2.4</version>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jxr-plugin</artifactId>
-        <version>2.1</version>
-      </plugin>
-      <plugin>
-        <artifactId>maven-pmd-plugin</artifactId>
-        <version>2.4</version>
-        <configuration>
-          <targetJdk>1.5</targetJdk>
-          <rulesets>
-            <ruleset>/rulesets/basic.xml</ruleset>
-            <ruleset>/rulesets/controversial.xml</ruleset>
-          </rulesets>
-          <format>xml</format>
-          <linkXref>true</linkXref>
-          <sourceEncoding>utf-8</sourceEncoding>
-          <minimumTokens>100</minimumTokens>
-        </configuration>
-      </plugin>
-      <plugin>
-        <artifactId>maven-site-plugin</artifactId>
-        <version>2.0-beta-7</version>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>rat-maven-plugin</artifactId>
-        <version>1.0-alpha-3</version>
-        <configuration>
-          <excludes>
-            <exclude>NOTICE.base</exclude>
-            <exclude>LICENSE.apache</exclude>
-            <exclude>release.properties</exclude>
-          </excludes>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>taglist-maven-plugin</artifactId>
-        <version>2.2</version>
-      </plugin>
-    </plugins>
-  </reporting>
-  
-  <mailingLists>
-    <mailingList>
-      <name>Apache James User</name>
-      <subscribe>server-user-subscribe@james.apache.org</subscribe>
-      <unsubscribe>server-user-unsubscribe@james.apache.org</unsubscribe>
-      <post>server-user@james.apache.org</post>
-      <archive>http://mail-archives.apache.org/mod_mbox/james-server-user/</archive>
-    </mailingList>
-    <mailingList>
-      <name>Apache James Developer</name>
-      <subscribe>server-dev-subscribe@james.apache.org</subscribe>
-      <unsubscribe>server-dev-unsubscribe@james.apache.org</unsubscribe>
-      <post>server-dev@james.apache.org</post>
-      <archive>http://mail-archives.apache.org/mod_mbox/james-server-dev/</archive>
-    </mailingList>
-  </mailingLists>
-
-</project>
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/ActionContext.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/ActionContext.java
deleted file mode 100644
index 33a94f4..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/ActionContext.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-package org.apache.jsieve.mailet;
-
-import java.util.Collection;
-
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
-
-import org.apache.commons.logging.Log;
-import org.apache.mailet.MailAddress;
-
-/**
- * Provides context for action execution.
- */
-public interface ActionContext {
-    
-    /**
-     * Gets the log.
-     * @return not null
-     */
-    public Log getLog();
-    
-    /**
-     * Experimental mail delivery. 
-     * POST verb indicate that mail should be attached to the collection
-     * indicated by the given URI.
-     * 
-     * @param uri indicates the destination to which the mail to added. ATM 
-     * the value should be mailbox://<user>@localhost/<mailbox-path>
-     * @param mail not null
-     */
-    public void post(String uri, MimeMessage mail) throws MessagingException;
-
-    /**
-     * Posts the given mail.
-     * @param sender possibly null
-     * @param recipients not null
-     * @param mail not null
-     * @throws MessagingException when mail cannot be posted
-     */
-    public void post(MailAddress sender, Collection<MailAddress> recipients, MimeMessage mail) throws MessagingException;
-
-    /**
-     * Gets name (including version) of this server.
-     * @return not nul
-     */
-    public String getServerInfo();
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/ActionDispatcher.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/ActionDispatcher.java
deleted file mode 100644
index 5ce604f..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/ActionDispatcher.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet;
-
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-import javax.mail.MessagingException;
-
-import org.apache.jsieve.mail.Action;
-import org.apache.jsieve.mail.ActionFileInto;
-import org.apache.jsieve.mail.ActionKeep;
-import org.apache.jsieve.mail.ActionRedirect;
-import org.apache.jsieve.mail.ActionReject;
-import org.apache.mailet.Mail;
-
-/**
- * Dynamically dispatches an Action depending on the type of Action received at runtime. 
- * <h4>Thread Safety</h4>
- * <p>An instance maybe safe accessed concurrently by multiple threads.</p>
- */
-public class ActionDispatcher
-{   
-    /**
-     * A Map keyed by the type of Action. The values are the methods to invoke to 
-     * handle the Action.
-     * <Action, MailAction>
-     */ 
-    private ConcurrentMap<Class, MailAction> fieldMailActionMap;
-
-    /**
-     * Constructor for ActionDispatcher.
-     * @throws NoSuchMethodException 
-     */
-    public ActionDispatcher() throws MessagingException
-    {
-        super();
-        setMethodMap(defaultMethodMap());
-    }
-
-    /**
-     * Method execute executes the passed Action by invoking the method mapped by the
-     * receiver with a parameter of the EXACT type of Action.
-     * @param anAction not null
-     * @param aMail not null
-     * @param context not null
-     * @throws MessagingException
-     */
-    public void execute(final Action anAction, final Mail aMail, final ActionContext context) throws MessagingException
-    {
-        final MailAction mailAction = getMethodMap().get(anAction.getClass());
-        mailAction.execute(anAction, aMail, context);
-    }
-
-    /**
-     * Returns the methodMap.
-     * @return Map
-     */
-    public ConcurrentMap<Class, MailAction> getMethodMap()
-    {
-        return fieldMailActionMap;
-    }    
-
-    /**
-     * Returns a new methodMap.
-     * @return Map
-     */
-    private ConcurrentMap<Class, MailAction> defaultMethodMap()
-    {
-        final ConcurrentMap<Class, MailAction> actionMap = new ConcurrentHashMap<Class, MailAction>(4);
-        actionMap.put(ActionFileInto.class, new FileIntoAction());
-        actionMap.put(ActionKeep.class, new KeepAction());
-        actionMap.put(ActionRedirect.class, new RedirectAction());
-        actionMap.put(ActionReject.class, new RejectAction());
-        return actionMap;
-    }    
-
-    /**
-     * Sets the mail action mail.
-     * @param mailActionMap <Action, MailAction> not null
-     */
-    protected void setMethodMap(ConcurrentMap<Class, MailAction>  mailActionMap)
-    {
-        fieldMailActionMap = mailActionMap;
-    }
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/ActionUtils.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/ActionUtils.java
deleted file mode 100644
index ddf3cf3..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/ActionUtils.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet;
-
-import javax.mail.MessagingException;
-
-import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
-
-/**
- * Utility methods helpful for actions.
- */
-public class ActionUtils
-{
-    
-    private final static String ATTRIBUTE_PREFIX = ActionUtils.class.getPackage().getName() + ".";
-
-    /**
-     * Answers the sole intended recipient for aMail.
-     * 
-     * @param aMail
-     * @return String
-     * @throws MessagingException
-     */
-    public static MailAddress getSoleRecipient(Mail aMail) throws MessagingException
-    {
-        if (aMail.getRecipients() == null) {
-            throw new MessagingException("Invalid number of recipients - 0"
-                    + ". Exactly 1 recipient is expected.");
-        } else if (1 != aMail.getRecipients().size())
-            throw new MessagingException("Invalid number of recipients - "
-                    + new Integer(aMail.getRecipients().size()).toString()
-                    + ". Exactly 1 recipient is expected.");
-        return (MailAddress) aMail.getRecipients().iterator().next();
-    }
-
-    /**
-     * Detect and handle locally looping mail. External loop detection is left
-     * to the MTA.
-     * 
-     * @param aMail
-     * @param context not null
-     * @param anAttributeSuffix
-     * @throws MessagingException
-     */
-    public static void detectAndHandleLocalLooping(Mail aMail, ActionContext context, String anAttributeSuffix)
-            throws MessagingException
-    {
-        MailAddress thisRecipient = getSoleRecipient(aMail);
-        MailAddress lastRecipient = (MailAddress) aMail
-                .getAttribute(ATTRIBUTE_PREFIX + anAttributeSuffix);
-        if (null != lastRecipient && lastRecipient.equals(thisRecipient))
-        {
-            MessagingException ex = new MessagingException(
-                    "This message is looping! Message ID: "
-                            + aMail.getMessage().getMessageID());
-            context.getLog().warn(ex.getMessage(), ex);
-            throw ex;
-        }
-        aMail.setAttribute(ATTRIBUTE_PREFIX + anAttributeSuffix,
-                thisRecipient);
-    }
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/CommonsLoggingAdapter.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/CommonsLoggingAdapter.java
deleted file mode 100644
index 809a0d5..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/CommonsLoggingAdapter.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-package org.apache.jsieve.mailet;
-
-import org.apache.commons.logging.Log;
-import org.apache.mailet.base.GenericMailet;
-
-/**
- * Adapts commons logging to mailet logging.
- */
-class CommonsLoggingAdapter implements Log {
-    
-    public static final int TRACE = 6;
-    public static final int DEBUG = 5;
-    public static final int INFO = 4;
-    public static final int WARN = 3;
-    public static final int ERROR = 2;
-    public static final int FATAL = 1;
-    
-    private final GenericMailet mailet;
-    private final int level;
-    
-    public CommonsLoggingAdapter(final GenericMailet mailet, final int level) {
-        super();
-        this.mailet = mailet;
-        this.level = level;
-    }
-
-    public void debug(Object message) {
-        if (isDebugEnabled()) {
-            mailet.log(message == null ? "NULL" : message.toString());
-        }
-    }
-
-    public void debug(Object message, Throwable t) {
-        if (isDebugEnabled()) {
-            mailet.log(message == null ? "NULL" : message.toString(), t);
-        } 
-    }
-
-    public void error(Object message) {
-        if (isErrorEnabled()) {
-            mailet.log(message == null ? "NULL" : message.toString());
-        }
-    }
-
-    public void error(Object message, Throwable t) {
-        if (isErrorEnabled()) {
-            mailet.log(message == null ? "NULL" : message.toString(), t);
-        }
-    }
-
-    public void fatal(Object message) {
-        if (isFatalEnabled()) {
-            mailet.log(message == null ? "NULL" : message.toString());
-        }
-    }
-
-    public void fatal(Object message, Throwable t) {
-        if (isFatalEnabled()) {
-            mailet.log(message == null ? "NULL" : message.toString(), t);
-        }
-    }
-
-    public void info(Object message) {
-        if (isInfoEnabled()) {
-            mailet.log(message == null ? "NULL" : message.toString());
-        }
-    }
-
-    public void info(Object message, Throwable t) {
-        if (isInfoEnabled()) {
-            mailet.log(message == null ? "NULL" : message.toString(), t);
-        }
-    }
-
-    public boolean isDebugEnabled() {
-        return level <= DEBUG;
-    }
-
-    public boolean isErrorEnabled() {
-        return level <= ERROR;
-    }
-
-    public boolean isFatalEnabled() {
-        return level <= FATAL;
-    }
-
-    public boolean isInfoEnabled() {
-        return level <= INFO;
-    }
-
-    public boolean isTraceEnabled() {
-        return level <= TRACE;
-    }
-
-    public boolean isWarnEnabled() {
-        return level <= WARN;
-    }
-
-    public void trace(Object message) {
-        if (isTraceEnabled()) {
-            mailet.log(message == null ? "NULL" : message.toString());
-        }
-    }
-
-    public void trace(Object message, Throwable t) {
-        if (isTraceEnabled()) {
-            mailet.log(message == null ? "NULL" : message.toString(), t);
-        }
-    }
-
-    public void warn(Object message) {
-        if (isWarnEnabled()) {
-            mailet.log(message == null ? "NULL" : message.toString());
-        }
-    }
-
-    public void warn(Object message, Throwable t) {
-        if (isWarnEnabled()) {
-            mailet.log(message == null ? "NULL" : message.toString(), t);
-        }
-    }
-    
-    
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/FileIntoAction.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/FileIntoAction.java
deleted file mode 100644
index 45c4598..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/FileIntoAction.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-package org.apache.jsieve.mailet;
-
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
-
-import org.apache.commons.logging.Log;
-import org.apache.jsieve.mail.Action;
-import org.apache.jsieve.mail.ActionFileInto;
-import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
-
-/**
- * Performs the filing of a mail into a specified destination. 
- * <h4>Thread Safety</h4>
- * <p>An instance maybe safe accessed concurrently by multiple threads.</p>
- */
-public class FileIntoAction implements MailAction {
-    
-    private static final char HIERARCHY_DELIMITER = '.';
-
-    public void execute(Action action, Mail mail, ActionContext context) throws MessagingException {
-        if (action instanceof ActionFileInto) {
-            final ActionFileInto fileIntoAction = (ActionFileInto) action;
-            execute(fileIntoAction, mail, context);
-        }
-    }
-
-    /**
-     * <p>
-     * Executes the passed ActionFileInto.
-     * </p>
-     * 
-     * <p>
-     * This implementation accepts any destination with the root of <code>INBOX</code>.
-     * </p>
-     * 
-     * <p>
-     * As the current POP3 server does not support sub-folders, the mail is
-     * stored in the INBOX for the recipient of the mail and the full intended
-     * destination added as a prefix to the message's subject.
-     * </p>
-     * 
-     * <p>
-     * When IMAP support is added to James, it will be possible to support
-     * sub-folders of <code>INBOX</code> fully.
-     * </p>
-     * 
-     * @param anAction
-     * @param aMail
-     * @param context not null
-     * @throws MessagingException
-     */
-    @SuppressWarnings("deprecation")
-    public void execute(ActionFileInto anAction, Mail aMail, final ActionContext context) throws MessagingException
-    {
-        String destinationMailbox = anAction.getDestination();
-        MailAddress recipient;
-        boolean delivered = false;
-        try
-        {
-            recipient = ActionUtils.getSoleRecipient(aMail);
-            MimeMessage localMessage = createMimeMessage(aMail, recipient);
-            
-            if (!(destinationMailbox.length() > 0 
-                    && destinationMailbox.charAt(0) == HIERARCHY_DELIMITER)) {
-                destinationMailbox =  HIERARCHY_DELIMITER + destinationMailbox;
-            }
-            
-            final String mailbox = destinationMailbox.replace(HIERARCHY_DELIMITER, '/');
-            final String host;
-            if (mailbox.charAt(0) == '/') {
-                host = "@localhost";
-            } else {
-                host = "@localhost/";
-            }
-            final String url = "mailbox://" + recipient.getUser() + host + mailbox;
-            //TODO: copying this message so many times seems a waste
-            context.post(url, localMessage);
-            delivered = true;
-        }
-        catch (MessagingException ex)
-        {
-            final Log log = context.getLog();
-            if (log.isDebugEnabled()) {
-                log.debug("Error while storing mail into. "+destinationMailbox, ex);
-            }
-            throw ex;
-        }
-        finally
-        {
-            // Ensure the mail is always ghosted
-            aMail.setState(Mail.GHOST);
-        }
-        if (delivered)
-        {
-            final Log log = context.getLog();
-            if (log.isDebugEnabled()) {
-                log.debug("Filed Message ID: "
-                    + aMail.getMessage().getMessageID()
-                    + " into destination: \""
-                    + destinationMailbox + "\"");
-            }
-        }
-    }
-    
-    private static MimeMessage createMimeMessage(Mail aMail, MailAddress recipient) throws MessagingException {
-        // Adapted from LocalDelivery Mailet
-        // Add qmail's de facto standard Delivered-To header
-        MimeMessage localMessage = new MimeMessage(aMail.getMessage())
-        {
-            protected void updateHeaders() throws MessagingException
-            {
-                if (getMessageID() == null)
-                    super.updateHeaders();
-                else
-                    modified = false;
-            }
-        };
-        localMessage.addHeader("Delivered-To", recipient.toString());
-
-        localMessage.saveChanges();
-        return localMessage;
-    }
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/KeepAction.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/KeepAction.java
deleted file mode 100644
index bad42b9..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/KeepAction.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-package org.apache.jsieve.mailet;
-
-import javax.mail.MessagingException;
-
-import org.apache.jsieve.mail.Action;
-import org.apache.jsieve.mail.ActionFileInto;
-import org.apache.jsieve.mail.ActionKeep;
-import org.apache.mailet.Mail;
-
-/**
- * Performs the filing of a mail into the inbox. 
- * <h4>Thread Safety</h4>
- * <p>An instance maybe safe accessed concurrently by multiple threads.</p>
- */
-public class KeepAction extends FileIntoAction implements MailAction {
-    
-    private static final String INBOX = "INBOX";
-
-    public void execute(Action action, Mail mail, ActionContext context)
-            throws MessagingException {
-        if (action instanceof ActionKeep) {
-            final ActionKeep actionKeep = (ActionKeep) action;
-            execute(actionKeep, mail, context);
-        }
-    }
-
-    /**
-     * <p>
-     * Executes the passed ActionKeep.
-     * </p>
-     * 
-     * <p>
-     * In this implementation, "keep" is equivalent to "fileinto" with a
-     * destination of "INBOX".
-     * </p>
-     * 
-     * @param anAction not null
-     * @param aMail not null
-     * @param context not null
-     * @throws MessagingException
-     */
-    public void execute(ActionKeep anAction, Mail aMail, ActionContext context) throws MessagingException
-    {
-        final ActionFileInto action = new ActionFileInto(INBOX);
-        execute(action, aMail, context);
-    }
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/MailAction.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/MailAction.java
deleted file mode 100644
index 1255dc5..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/MailAction.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-package org.apache.jsieve.mailet;
-
-import javax.mail.MessagingException;
-
-import org.apache.jsieve.mail.Action;
-import org.apache.mailet.Mail;
-
-/**
- * Executes a Sieve action.
- * Implementations may be accessed concurrently by multiple threads.
- */
-public interface MailAction {
-    
-    /**
-     * Executes the given action.
-     * @param action not null
-     * @param mail not null
-     * @param context not null
-     * @throws MessagingException when action cannot be executed
-     */
-    public void execute(final Action action, final Mail mail, final ActionContext context) throws MessagingException;
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/Poster.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/Poster.java
deleted file mode 100644
index 079cf02..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/Poster.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet;
-
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
-
-/**
- * Experimental interface.
- */
-public interface Poster {
-    
-    /**
-     * Experimental mail delivery. 
-     * POST verb indicate that mail should be attached to the collection
-     * indicated by the given URI.
-     * 
-     * @param uri indicates the destination to which the mail to added. ATM 
-     * the value should be mailbox://<user>@localhost/<mailbox-path>
-     * @param mail not null
-     */
-    public void post(String uri, MimeMessage mail) throws MessagingException;
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/RedirectAction.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/RedirectAction.java
deleted file mode 100644
index b68ed83..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/RedirectAction.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-package org.apache.jsieve.mailet;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import javax.mail.MessagingException;
-import javax.mail.internet.InternetAddress;
-
-import org.apache.commons.logging.Log;
-import org.apache.jsieve.mail.Action;
-import org.apache.jsieve.mail.ActionRedirect;
-import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
-
-/**
- * Performs the redirection of a mail. 
- * <h4>Thread Safety</h4>
- * <p>An instance maybe safe accessed concurrently by multiple threads.</p>
- */
-public class RedirectAction implements MailAction {
-
-    public void execute(Action action, Mail mail, ActionContext context)
-            throws MessagingException {
-        if (action instanceof ActionRedirect) {
-            final ActionRedirect actionRedirect = (ActionRedirect) action;
-            execute(actionRedirect, mail, context);
-        }
-
-    }
-
-    /**
-     * Method execute executes the passed ActionRedirect.
-     * 
-     * @param anAction not nul
-     * @param aMail not null
-     * @param context not null
-     * @throws MessagingException
-     */
-    public void execute(ActionRedirect anAction, Mail aMail, ActionContext context) throws MessagingException
-    {
-        ActionUtils.detectAndHandleLocalLooping(aMail, context, "redirect");
-        Collection<MailAddress> recipients = new ArrayList<MailAddress>(1);
-        recipients.add(new MailAddress(new InternetAddress(anAction.getAddress())));
-        MailAddress sender = aMail.getSender();
-        context.post(sender, recipients, aMail.getMessage());
-        aMail.setState(Mail.GHOST);
-        Log log = context.getLog();
-        if (log.isDebugEnabled()) {
-            log.debug("Redirected Message ID: "
-                + aMail.getMessage().getMessageID() + " to \""
-                + anAction.getAddress() + "\"");
-        }
-    }
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/RejectAction.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/RejectAction.java
deleted file mode 100644
index 66b1097..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/RejectAction.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-package org.apache.jsieve.mailet;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.Collection;
-
-import javax.mail.Address;
-import javax.mail.MessagingException;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimeMultipart;
-
-import org.apache.jsieve.mail.Action;
-import org.apache.jsieve.mail.ActionReject;
-import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
-import org.apache.jsieve.mailet.mdn.ActionModeAutomatic;
-import org.apache.jsieve.mailet.mdn.Disposition;
-import org.apache.jsieve.mailet.mdn.DispositionModifier;
-import org.apache.jsieve.mailet.mdn.MDNFactory;
-import org.apache.jsieve.mailet.mdn.ModifierError;
-import org.apache.jsieve.mailet.mdn.SendingModeAutomatic;
-import org.apache.jsieve.mailet.mdn.TypeDeleted;
-
-/**
- * Performs the rejection of a mail, with a reply to the sender. 
- * <h4>Thread Safety</h4>
- * <p>An instance maybe safe accessed concurrently by multiple threads.</p>
- */
-public class RejectAction implements MailAction {
-
-    public void execute(Action action, Mail mail, ActionContext context)
-            throws MessagingException {
-        if (action instanceof ActionReject) {
-            final ActionReject actionReject = (ActionReject) action;
-            execute(actionReject, mail, context);
-        }
-
-    }
-
-    /**
-     * <p>
-     * Method execute executes the passed ActionReject. It sends an RFC 2098
-     * compliant reject MDN back to the sender.
-     * </p>
-     * <p>
-     * NOTE: The Mimecontent type should be 'report', but as we do not yet have
-     * a DataHandler for this yet, its currently 'text'!
-     * 
-     * @param anAction not null
-     * @param aMail not null
-     * @param context not null
-     * @throws MessagingException
-     */
-    public void execute(ActionReject anAction, Mail aMail, ActionContext context) throws MessagingException
-    {
-        ActionUtils.detectAndHandleLocalLooping(aMail, context, "reject");
-
-        // Create the MDN part
-        StringBuilder humanText = new StringBuilder(128);
-        humanText.append("This message was refused by the recipient's mail filtering program.");
-        humanText.append("\r\n");
-        humanText.append("The reason given was:");
-        humanText.append("\r\n");
-        humanText.append("\r\n");
-        humanText.append(anAction.getMessage());
-
-        String reporting_UA_name = null;
-        try
-        {
-            reporting_UA_name = InetAddress.getLocalHost()
-                    .getCanonicalHostName();
-        }
-        catch (UnknownHostException ex)
-        {
-            reporting_UA_name = "localhost";
-        }
-
-        String reporting_UA_product = context.getServerInfo();
-
-        String[] originalRecipients = aMail.getMessage().getHeader(
-                "Original-Recipient");
-        String original_recipient = null;
-        if (null != originalRecipients && originalRecipients.length > 0)
-        {
-            original_recipient = originalRecipients[0];
-        }
-
-        MailAddress soleRecipient = ActionUtils.getSoleRecipient(aMail);
-        String final_recipient = soleRecipient.toString();
-
-        String original_message_id = aMail.getMessage().getMessageID();
-
-        DispositionModifier modifiers[] = {new ModifierError()};
-        Disposition disposition = new Disposition(new ActionModeAutomatic(),
-                new SendingModeAutomatic(), new TypeDeleted(), modifiers);
-
-        MimeMultipart multiPart = MDNFactory.create(humanText.toString(),
-                reporting_UA_name, reporting_UA_product, original_recipient,
-                final_recipient, original_message_id, disposition);
-
-        // Send the message
-        MimeMessage reply = (MimeMessage) aMail.getMessage().reply(false);
-        reply.setFrom(soleRecipient.toInternetAddress());
-        reply.setContent(multiPart);
-        reply.saveChanges();
-        Address[] recipientAddresses = reply.getAllRecipients();
-        if (null != recipientAddresses)
-        {
-            Collection<MailAddress> recipients = new ArrayList<MailAddress>(recipientAddresses.length);
-            for (int i = 0; i < recipientAddresses.length; i++)
-            {
-                recipients.add(new MailAddress(
-                        (InternetAddress) recipientAddresses[i]));
-            }
-            context.post(null, recipients, reply);
-        }
-        else
-        {
-            context.getLog().info("Unable to send reject MDN. Could not determine the recipient.");
-        }
-        // Ghost the original mail
-        aMail.setState(Mail.GHOST);
-    }
-
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/ResourceLocator.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/ResourceLocator.java
deleted file mode 100644
index 4c2ad08..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/ResourceLocator.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-package org.apache.jsieve.mailet;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * <p>Experimental API locates resources. 
- * Used to load Sieve scripts. The base for relative URLs
- * should be taken to be the root of the James configuration.
- * </p><p>
- * Required schemas:
- * </p>
- * <ul>
- * <li><strong>User sieve scripts</strong> - the relative URL scheme 
- * <code>//<em>user</em>@<em>host</em>/<em>sieve</em> will be used to
- * obtain the script
- * </ul>
- * <p>
- * The advantage of using <code>URI</code>s 
- * and verbs (for example <code>GET</code>, <code>POST</code>)
- * are their uniformity. The same API can be used to interface radically
- * different resource types and protocols. This allows concise, minimal,
- * powerful APIs to be created. Their simplicity is easy to preserved 
- * across versions. 
- * </p><p>
- * The disadvantage is that this free decouple means that there is 
- * no gaurantee that the implementations decoupled by this interface
- * actually support the same scheme. Issues will be caught only 
- * at deployment and not at compile time.
- * This places a larger burden on the deployer.
- * </p><p>
- * Either an understanding or a consistent URL mapping scheme may be 
- * required. For example, <code>//john.smith@localhost/sieve</code>
- * may need to be resolved to <code>../apps/james/var/sieve/john.smith@localhost.sieve</code>
- * when using the file system to store scripts. Note that names <strong>MUST</strong>
- * be normalised before resolving on a file system.
- * </p>
- */
-public interface ResourceLocator {
-    
-    /**
-     * GET verb locates and loads a resource. 
-     * @param uri identifies the Sieve script 
-     * @return not null
-     * @throws IOException when the resource cannot be located
-     */
-    public InputStream get(String uri) throws IOException;
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/SieveMailAdapter.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/SieveMailAdapter.java
deleted file mode 100644
index 116593d..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/SieveMailAdapter.java
+++ /dev/null
@@ -1,439 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.mail.Header;
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.james.mime4j.field.address.AddressList;
-import org.apache.james.mime4j.field.address.Mailbox;
-import org.apache.james.mime4j.field.address.MailboxList;
-import org.apache.james.mime4j.field.address.parser.ParseException;
-import org.apache.jsieve.SieveContext;
-import org.apache.jsieve.exception.InternetAddressException;
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.mail.Action;
-import org.apache.jsieve.mail.AddressImpl;
-import org.apache.jsieve.mail.MailAdapter;
-import org.apache.jsieve.mail.MailUtils;
-import org.apache.jsieve.mail.SieveMailException;
-import org.apache.jsieve.mail.optional.EnvelopeAccessors;
-import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
-import org.apache.mailet.MailetContext;
-/**
- * <p>
- * Class <code>SieveMailAdapter</code> implements a <code>MailAdapter</code>
- * for use in a Mailet environment.
- * </p>
- */
-public class SieveMailAdapter implements MailAdapter, EnvelopeAccessors, ActionContext
-{
-    private static final Log LOG = LogFactory.getLog(SieveMailAdapter.class);
-    
-    private Log log = LOG;
-    
-    /**
-     * The Mail being adapted.
-     */
-    private Mail fieldMail;
-    /**
-     * The MailetContext.
-     */
-    private MailetContext fieldMailetContext;
-    /**
-     * List of Actions to perform.
-     */
-    private List<Action> fieldActions;
-    
-    private final ActionDispatcher dispatcher;
-    
-    private final Poster poster;
-
-    private String contentText;
-    
-    /**
-     * Constructor for SieveMailAdapter.
-     * 
-     * @param aMail
-     * @param aMailetContext
-     */
-    public SieveMailAdapter(final Mail aMail, final MailetContext aMailetContext, final ActionDispatcher dispatcher, final Poster poster)
-    {
-        this.poster = poster;
-        this.dispatcher = dispatcher;
-        setMail(aMail);
-        setMailetContext(aMailetContext);
-    }
-    
-  
-    public void setLog(Log log) {
-        this.log = log;
-    }
-
-    /**
-     * Returns the message.
-     * 
-     * @return MimeMessage
-     */
-    protected MimeMessage getMessage() throws MessagingException
-    {
-        return getMail().getMessage();
-    }
-    /**
-     * Returns the List of actions.
-     * 
-     * @return List
-     */
-    public List<Action> getActions()
-    {
-        List<Action> actions = null;
-        if (null == (actions = getActionsBasic()))
-        {
-            updateActions();
-            return getActions();
-        }
-        return actions;
-    }
-    /**
-     * Returns a new List of actions.
-     * 
-     * @return List
-     */
-    protected List<Action> computeActions()
-    {
-        return new ArrayList<Action>();
-    }
-    /**
-     * Returns the List of actions.
-     * 
-     * @return List
-     */
-    private List<Action> getActionsBasic()
-    {
-        return fieldActions;
-    }
-    /**
-     * Adds an Action.
-     * 
-     * @param action The action to set
-     */
-    public void addAction(Action action)
-    {
-        getActions().add(action);
-    }
-    /**
-     * @see org.apache.jsieve.mail.MailAdapter#executeActions()
-     */
-    public void executeActions() throws SieveException
-    {
-        final List<Action> actions = getActions();
-        for (final Action action: actions) {
-            getMailetContext().log("Executing action: " + action.toString());
-            try
-            {
-                dispatcher.execute(action, getMail(), this);
-            }
-            catch (MessagingException e)
-            {
-                throw new SieveException(e);
-            }
-        }
-    }
-    /**
-     * Sets the actions.
-     * 
-     * @param actions The actions to set
-     */
-    protected void setActions(List<Action> actions)
-    {
-        fieldActions = actions;
-    }
-    
-    /**
-     * Updates the actions.
-     */
-    protected void updateActions()
-    {
-        setActions(computeActions());
-    }
-
-    /**
-     * @see org.apache.jsieve.mail.MailAdapter#getHeader(String)
-     */
-    public List<String> getHeader(String name) throws SieveMailException
-    {
-        try
-        {
-            String[] headers = getMessage().getHeader(name);
-            return (headers == null ? new ArrayList<String>(0) : Arrays.asList(headers));
-        }
-        catch (MessagingException ex)
-        {
-            throw new SieveMailException(ex);
-        }
-    }
-    
-    /**
-     * @see org.apache.jsieve.mail.MailAdapter#getHeaderNames()
-     */
-    public List<String> getHeaderNames() throws SieveMailException
-    {
-        Set<String> headerNames = new HashSet<String>();
-        try
-        {
-            Enumeration allHeaders = getMessage().getAllHeaders();
-            while (allHeaders.hasMoreElements())
-            {
-                headerNames.add(((Header) allHeaders.nextElement()).getName());
-            }
-            return new ArrayList<String>(headerNames);
-        }
-        catch (MessagingException ex)
-        {
-            throw new SieveMailException(ex);
-        }
-    }
-    
-    /**
-     * @see org.apache.jsieve.mail.MailAdapter#getMatchingHeader(String)
-     */
-    public List<String> getMatchingHeader(String name) throws SieveMailException
-    {
-        return MailUtils.getMatchingHeader(this, name);
-    }
-    
-    /**
-     * @see org.apache.jsieve.mail.MailAdapter#getSize()
-     */
-    public int getSize() throws SieveMailException
-    {
-        try
-        {
-            return getMessage().getSize();
-        }
-        catch (MessagingException ex)
-        {
-            throw new SieveMailException(ex);
-        }
-    }
-    
-    /**
-     * Method getEnvelopes.
-     * 
-     * @return Map
-     */
-    protected Map<String, String> getEnvelopes()
-    {
-        Map<String, String> envelopes = new HashMap<String, String>(2);
-        if (null != getEnvelopeFrom())
-            envelopes.put("From", getEnvelopeFrom());
-        if (null != getEnvelopeTo())
-            envelopes.put("To", getEnvelopeTo());
-        return envelopes;
-    }
-    /**
-     * @see org.apache.jsieve.mail.optional.EnvelopeAccessors#getEnvelope(String)
-     */
-    public List<String> getEnvelope(String name) throws SieveMailException
-    {
-        List<String> values = new ArrayList<String>(1);
-        String value = getEnvelopes().get(name);
-        if (null != value)
-            values.add(value);
-        return values;
-    }
-    
-    /**
-     * @see org.apache.jsieve.mail.optional.EnvelopeAccessors#getEnvelopeNames()
-     */
-    public List<String> getEnvelopeNames() throws SieveMailException
-    {
-        return new ArrayList<String>(getEnvelopes().keySet());
-    }
-    
-    /**
-     * @see org.apache.jsieve.mail.optional.EnvelopeAccessors#getMatchingEnvelope(String)
-     */
-    public List<String> getMatchingEnvelope(String name) throws SieveMailException
-    {
-        final List<String> matchedEnvelopeValues = new ArrayList<String>(32);
-        for (String envelopeName: getEnvelopeNames()) {
-            if (envelopeName.trim().equalsIgnoreCase(name))
-                matchedEnvelopeValues.addAll(getEnvelope(envelopeName));
-        }
-        return matchedEnvelopeValues;
-    }
-    
-    /**
-     * Returns the from.
-     * 
-     * @return String
-     */
-    public String getEnvelopeFrom()
-    {
-        MailAddress sender = getMail().getSender(); 
-        return (null == sender ? "" : sender.toString());
-    }
-    
-    /**
-     * Returns the sole recipient or null if there isn't one.
-     * 
-     * @return String
-     */
-    public String getEnvelopeTo()
-    {
-        String recipient = null;
-        Iterator recipientIter = getMail().getRecipients().iterator();
-        if (recipientIter.hasNext())
-            recipient = (String) recipientIter.next().toString();
-        return recipient;
-    }
-    
-    /**
-     * Returns the mail.
-     * 
-     * @return Mail
-     */
-    public Mail getMail()
-    {
-        return fieldMail;
-    }
-    
-    /**
-     * Sets the mail.
-     * 
-     * @param mail The mail to set
-     */
-    protected void setMail(Mail mail)
-    {
-        fieldMail = mail;
-        contentText = null;
-    }
-    
-    /**
-     * Returns the mailetContext.
-     * 
-     * @return MailetContext
-     */
-    public MailetContext getMailetContext()
-    {
-        return fieldMailetContext;
-    }
-    
-    /**
-     * Sets the mailetContext.
-     * 
-     * @param mailetContext The mailetContext to set
-     */
-    protected void setMailetContext(MailetContext mailetContext)
-    {
-        fieldMailetContext = mailetContext;
-    }
-    
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString()
-    {
-        String messageID = null;
-        try
-        {
-            messageID = getMail().getMessage().getMessageID();
-        }
-        catch (MessagingException e)
-        {
-            messageID = "<" + e.getMessage() + ">";
-        }
-        return getClass().getName() + " Envelope From: "
-                + (null == getEnvelopeFrom() ? "null" : getEnvelopeFrom())
-                + " Envelope To: "
-                + (null == getEnvelopeTo() ? "null" : getEnvelopeTo())
-                + " Message ID: " + (null == messageID ? "null" : messageID);
-    }
-    
-    public String getContentType() throws SieveMailException {
-        try {
-            return getMessage().getContentType();
-        } catch (MessagingException e) {
-            throw new SieveMailException(e);
-        }
-    }
-    
-    public Address[] parseAddresses(String arg) throws SieveMailException, InternetAddressException {
-        try {
-            final MailboxList list = AddressList.parse(arg).flatten();
-            final int size = list.size();
-            final Address[] results = new Address[size];
-            for (int i=0;i<size;i++) {
-                final Mailbox mailbox = list.get(i);
-                results[i] = new AddressImpl(mailbox.getLocalPart(), mailbox.getDomain());
-            }
-            return null;
-        } catch (ParseException e) {
-            throw new InternetAddressException(e);
-        }
-    }
-
-    public Log getLog() {
-        return log;
-    }
-    
-    public String getServerInfo() {
-        return getMailetContext().getServerInfo();
-    }
-    public void post(String uri, MimeMessage mail) throws MessagingException {
-        poster.post(uri, mail);
-    }
-    
-    public void post(MailAddress sender, Collection recipients, MimeMessage mail) throws MessagingException {
-        getMailetContext().sendMail(sender, recipients, mail);
-    }
-
-
-    public boolean isInBodyText(String phraseCaseInsensitive) throws SieveMailException {
-        try {
-            if (contentText == null) {
-                contentText = getMessage().getContent().toString().toLowerCase();
-            }
-            return contentText.contains(phraseCaseInsensitive);
-        } catch (MessagingException e) {
-            throw new SieveMailException(e);
-        } catch (IOException e) {
-            throw new SieveMailException(e);
-        }
-    }
-
-    public void setContext(SieveContext context) {}
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/SieveMailboxMailet.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/SieveMailboxMailet.java
deleted file mode 100644
index 4ffa52b..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/SieveMailboxMailet.java
+++ /dev/null
@@ -1,401 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet;
-
-import java.io.InputStream;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.Vector;
-
-import javax.mail.Header;
-import javax.mail.MessagingException;
-import javax.mail.internet.InternetHeaders;
-import javax.mail.internet.MimeMessage;
-
-import org.apache.commons.logging.Log;
-import org.apache.jsieve.ConfigurationManager;
-import org.apache.jsieve.SieveConfigurationException;
-import org.apache.jsieve.SieveFactory;
-import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
-import org.apache.mailet.MailetConfig;
-import org.apache.mailet.MailetException;
-import org.apache.mailet.base.GenericMailet;
-import org.apache.mailet.base.RFC2822Headers;
-
-/**
- * <p>Executes a <a href='http://www.rfc-editor.org/rfc/rfc3028.txt'>Sieve</a>
- * script against incoming mail. The script applied is based on the recipient.</p>
- * <h4>Init Parameters</h4>
- * <table>
- * <thead><tr><th>Name</th><th>Required</th><th>Values</th><th>Role</th></thead>
- * <tr><td>verbose</td><td>No - defaults to false</td><td>true (ignoring case) to enable, otherwise disable</td>
- * <td>
- * Enables verbose logging.
- * </td></tr>
- * </table>
- */
-public class SieveMailboxMailet extends GenericMailet {
-
-    /**
-     * The delivery header
-     */
-    private String deliveryHeader;
-
-    /**
-     * resetReturnPath
-     */
-    private boolean resetReturnPath;
-    /** Experimental */
-    private Poster poster;
-    /** Experimental */
-    private ResourceLocator locator;
-    
-    /** Indicates whether this mailet should log verbosely */
-    private boolean verbose = false;
-    
-    private boolean consume = true;
-    /** Indicates whether this mailet should log minimal information */
-    private boolean quiet = true;
-
-    private SieveFactory factory;
-
-    private ActionDispatcher actionDispatcher;
-
-    private Log log;
-
-    /**
-     * For SDI
-     */
-    public SieveMailboxMailet() {}
-    
-    /**
-     * CDI
-     * @param poster not null
-     */
-    public SieveMailboxMailet(Poster poster, ResourceLocator locator) {
-        this();
-        this.poster = poster;
-        this.locator = locator;
-    }
-
-    
-    public ResourceLocator getLocator() {
-        return locator;
-    }
-
-    /**
-     * For SDI
-     * @param locator not null
-     */
-    public void setLocator(ResourceLocator locator) {
-        this.locator = locator;
-    }
-
-    public Poster getPoster() {
-        return poster;
-    }
-    
-    /**
-     * For SDI
-     * @param poster not null
-     */
-    public void setPoster(Poster poster) {
-        this.poster = poster;
-    }
-
-    /**
-     * Is this mailet GHOSTing all mail it processes?
-     * @return true when mailet consumes all mail, false otherwise
-     */
-    public boolean isConsume() {
-        return consume;
-    }
-
-    /**
-     * Sets whether this mailet should GHOST all mail.
-     * @param consume true when the mailet should consume all mail, 
-     * false otherwise
-     */
-    public void setConsume(boolean consume) {
-        this.consume = consume;
-    }
-
-    /**
-     * Is this mailet logging verbosely?
-     * This property is set by init parameters.
-     * @return true if logging should be verbose, false otherwise
-     */
-    public boolean isVerbose() {
-        return verbose;
-    }
-
-
-    /**
-     * Sets whether logging should be verbose for this mailet.
-     * This property is set by init parameters.
-     * This setting overrides {@link #isQuiet()}.
-     * @param verbose true when logging should be verbose,
-     * false otherwise
-     */
-    public void setVerbose(boolean verbose) {
-        this.verbose = verbose;
-    }
-
-    /**
-     * Is the logging for this mailet set to minimal?
-     * @return true
-     */
-    public boolean isQuiet() {
-        return quiet;
-    }
-
-    /**
-     * Sets the logging for this mailet to minimal.
-     * This is overriden by {@link #setVerbose(boolean)}.
-     * @param quiet true for minimal logging, false otherwise
-     */
-    public void setQuiet(boolean quiet) {
-        this.quiet = quiet;
-    }
-    
-   
-    /**
-     * Is informational logging turned on? 
-     * @return true when minimal logging is off,
-     * false when logging is minimal
-     */
-    public boolean isInfoLoggingOn() {
-        return verbose || !quiet;
-    }
-
-    @Override
-    public void init(MailetConfig config) throws MessagingException {
-        
-        super.init(config);
-
-        try {
-            final ConfigurationManager configurationManager = new ConfigurationManager();
-            final int logLevel;
-            if (verbose) {
-                logLevel = CommonsLoggingAdapter.TRACE;
-            } else if (quiet) {
-                logLevel = CommonsLoggingAdapter.FATAL;
-            } else {
-                logLevel = CommonsLoggingAdapter.WARN;
-            }
-            log = new CommonsLoggingAdapter(this, logLevel);
-            configurationManager.setLog(log);
-            factory = configurationManager.build();
-        } catch (SieveConfigurationException e) {
-            throw new MessagingException("Failed to load standard Sieve configuration.", e);
-        }
-    }
-
-    /**
-     * Delivers a mail to a local mailbox.
-     * 
-     * @param mail
-     *            the mail being processed
-     * 
-     * @throws MessagingException
-     *             if an error occurs while storing the mail
-     */
-    @SuppressWarnings("unchecked")
-    @Override
-    public void service(Mail mail) throws MessagingException {
-        Collection<MailAddress> recipients = mail.getRecipients();
-        Collection<MailAddress> errors = new Vector<MailAddress>();
-
-        MimeMessage message = null;
-        if (deliveryHeader != null || resetReturnPath) {
-            message = mail.getMessage();
-        }
-
-        if (resetReturnPath) {
-            // Set Return-Path and remove all other Return-Path headers from the
-            // message
-            // This only works because there is a placeholder inserted by
-            // MimeMessageWrapper
-            message.setHeader(RFC2822Headers.RETURN_PATH,
-                    (mail.getSender() == null ? "<>" : "<" + mail.getSender()
-                            + ">"));
-        }
-
-        Enumeration headers;
-        InternetHeaders deliveredTo = new InternetHeaders();
-        if (deliveryHeader != null) {
-            // Copy any Delivered-To headers from the message
-            headers = message
-                    .getMatchingHeaders(new String[] { deliveryHeader });
-            while (headers.hasMoreElements()) {
-                Header header = (Header) headers.nextElement();
-                deliveredTo.addHeader(header.getName(), header.getValue());
-            }
-        }
-
-        for (Iterator<MailAddress> i = recipients.iterator(); i.hasNext();) {
-            MailAddress recipient = i.next();
-            try {
-                if (deliveryHeader != null) {
-                    // Add qmail's de facto standard Delivered-To header
-                    message.addHeader(deliveryHeader, recipient.toString());
-                }
-
-                storeMail(mail.getSender(), recipient, mail);
-
-                if (deliveryHeader != null) {
-                    if (i.hasNext()) {
-                        // Remove headers but leave all placeholders
-                        message.removeHeader(deliveryHeader);
-                        headers = deliveredTo.getAllHeaders();
-                        // And restore any original Delivered-To headers
-                        while (headers.hasMoreElements()) {
-                            Header header = (Header) headers.nextElement();
-                            message.addHeader(header.getName(), header
-                                    .getValue());
-                        }
-                    }
-                }
-            } catch (Exception ex) {
-                log("Error while storing mail.", ex);
-                errors.add(recipient);
-            }
-        }
-
-        if (!errors.isEmpty()) {
-            // If there were errors, we redirect the email to the ERROR
-            // processor.
-            // In order for this server to meet the requirements of the SMTP
-            // specification, mails on the ERROR processor must be returned to
-            // the sender. Note that this email doesn't include any details
-            // regarding the details of the failure(s).
-            // In the future we may wish to address this.
-            getMailetContext().sendMail(mail.getSender(), errors,
-                    mail.getMessage(), Mail.ERROR);
-        }
-        if (consume) {
-            // Consume this message
-            mail.setState(Mail.GHOST);
-        }
-    }
-
-    /**
-     * Return a string describing this mailet.
-     * 
-     * @return a string describing this mailet
-     */
-    @Override
-    public String getMailetInfo() {
-        return "Sieve Mailbox Mailet";
-    }
-
-    /**
-     * 
-     * @param sender
-     * @param recipient
-     * @param mail
-     * @throws MessagingException
-     */
-    @SuppressWarnings("deprecation")
-    public void storeMail(MailAddress sender, MailAddress recipient,
-            Mail mail) throws MessagingException {
-        if (recipient == null) {
-            throw new IllegalArgumentException(
-                    "Recipient for mail to be spooled cannot be null.");
-        }
-        if (mail.getMessage() == null) {
-            throw new IllegalArgumentException(
-                    "Mail message to be spooled cannot be null.");
-        }
-        
-        sieveMessage(recipient, mail);
- 
-    }
-    
-    void sieveMessage(MailAddress recpient, Mail aMail) throws MessagingException {
-    	String username = getUsername(recpient);
-        // Evaluate the script against the mail
-        String relativeUri = "//" + username +"/sieve"; 
-        try
-        {
-            final InputStream ins = locator.get(relativeUri);
-            
-            SieveMailAdapter aMailAdapter = new SieveMailAdapter(aMail,
-                    getMailetContext(), actionDispatcher, poster);
-            aMailAdapter.setLog(log);
-            // This logging operation is potentially costly
-            if (verbose) {
-                log("Evaluating " + aMailAdapter.toString() + "against \""
-                    + relativeUri + "\"");
-            }
-            factory.evaluate(aMailAdapter, factory.parse(ins));
-        }
-        catch (Exception ex)
-        {
-            //
-            // SLIEVE is a mail filtering protocol.
-            // Rejecting the mail because it cannot be filtered
-            // seems very unfriendly.
-            // So just log and store in INBOX.
-            //
-            if (isInfoLoggingOn()) {
-                log("Cannot evaluate Sieve script. Storing mail in user INBOX.", ex);
-            }
-            storeMessageInbox(username, aMail);
-        }
-    }
-    
-    void storeMessageInbox(String username, Mail mail) throws MessagingException {
-        String url = "mailbox://" + username + "/";
-        poster.post(url, mail.getMessage());
-    }
-
-    /**
-     * @see org.apache.mailet.base.GenericMailet#init()
-     */
-    @Override
-    public void init() throws MessagingException {
-        super.init();
-        if (poster == null || locator == null) {
-            throw new MailetException("Not initialised. Please ensure that the mailet container supports either" +
-                    " setter or constructor injection");
-        }
-        
-        this.deliveryHeader = getInitParameter("addDeliveryHeader");
-        this.resetReturnPath = getInitParameter("resetReturnPath", true);
-        this.consume = getInitParameter("consume", true);
-        this.verbose = getInitParameter("verbose", false);
-        this.quiet = getInitParameter("quiet", false);
-        
-        actionDispatcher = new ActionDispatcher();
-    }
-    
-    /**
-     * Return the username to use for sieve processing for the given MailAddress
-     * 
-     * @param m
-     * @return username
-     */
-    protected String getUsername(MailAddress m) {
-    	return m.getLocalPart() + "@localhost";
-    }
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ActionModeAutomatic.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ActionModeAutomatic.java
deleted file mode 100644
index 64cab9b..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ActionModeAutomatic.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-
-/**
- * Class <code>ActionModeAutomatic</code>
- */
-public class ActionModeAutomatic extends Object
-        implements
-            DispositionActionMode
-{
-
-    /**
-     * Default Constructor
-     */
-    public ActionModeAutomatic()
-    {
-        super();
-    }
-    
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString()
-    {
-        return "automatic-action";
-    }         
-
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ActionModeManual.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ActionModeManual.java
deleted file mode 100644
index 79616d8..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ActionModeManual.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-
-/**
- * Class <code>ActionModeManual</code>
- */
-public class ActionModeManual
-        implements
-            DispositionActionMode
-{
-
-    /**
-     * Default Constructor
-     */
-    public ActionModeManual()
-    {
-        super();
-    }
-    
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString()
-    {
-        return "manual-action";
-    }         
-
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/Disposition.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/Disposition.java
deleted file mode 100644
index 5a39e01..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/Disposition.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-/**
- * Class <code>Disposition</code> encapsulating
- * disposition information as defined by RFC 2298.
- */
-public class Disposition
-{
-    private DispositionActionMode fieldActionMode;
-    private DispositionSendingMode fieldSendingMode;
-    private DispositionType fieldDispositionType;
-    private DispositionModifier[] fieldDispositionModifiers;
-
-    /**
-     * Default Construcor
-     */
-    private Disposition()
-    {
-        super();
-    }
-
-    /**
-     * Constructor.
-     * 
-     * @param actionMode
-     * @param sendingMode
-     * @param type
-     */
-    public Disposition(DispositionActionMode actionMode, DispositionSendingMode sendingMode, DispositionType type)
-    {
-        this();
-        setActionMode(actionMode);
-        setSendingMode(sendingMode);
-        setDispositionType(type);
-    }
-
-    /**
-     * Constructor.
-     * 
-     * @param actionMode
-     * @param sendingMode
-     * @param type
-     * @param modifiers
-     */
-    public Disposition(DispositionActionMode actionMode, DispositionSendingMode sendingMode, DispositionType type,
-            DispositionModifier[] modifiers)
-    {
-        this(actionMode, sendingMode, type);
-        setDispositionModifiers(modifiers);
-    }
-
-    /**
-     * Answer the Disposition Mode.
-     * 
-     * @return Returns the dispostionMode.
-     */
-    protected DispositionActionMode getActionMode()
-    {
-        return fieldActionMode;
-    }
-
-    /**
-     * Set the Disposition Mode.
-     * 
-     * @param dispostionMode The dispostionMode to set.
-     */
-    protected void setActionMode(DispositionActionMode dispostionMode)
-    {
-        fieldActionMode = dispostionMode;
-    }
-
-    /**
-     * Answer the Disposition Modifiers.
-     * 
-     * @return Returns the dispostionModifiers.
-     */
-    protected DispositionModifier[] getDispositionModifiers()
-    {
-        return fieldDispositionModifiers;
-    }
-
-    /**
-     * Set the Disposition Modifiers.
-     * 
-     * @param dispostionModifiers The dispostionModifiers to set.
-     */
-    protected void setDispositionModifiers(DispositionModifier[] dispostionModifiers)
-    {
-        fieldDispositionModifiers = dispostionModifiers;
-    }
-
-    /**
-     * Answer the Disposition Type.
-     * 
-     * @return Returns the dispostionType.
-     */
-    protected DispositionType getDispositionType()
-    {
-        return fieldDispositionType;
-    }
-
-    /**
-     * Set the Disposition Type.
-     * 
-     * @param dispostionType The dispostionType to set.
-     */
-    protected void setDispositionType(DispositionType dispostionType)
-    {
-        fieldDispositionType = dispostionType;
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString()
-    {
-        StringBuilder builder = new StringBuilder(64);
-        builder.append("Disposition: ");
-        builder.append(getActionMode() == null ? "" : getActionMode().toString());
-        builder.append('/');
-        builder.append(getSendingMode() == null ? "" : getSendingMode().toString());
-        builder.append(';');
-        builder.append(getDispositionType() == null ? "" : getDispositionType().toString());
-        if (null != getDispositionModifiers()
-                && getDispositionModifiers().length > 0)
-        {
-            builder.append('/');
-            for (int i = 0; i < getDispositionModifiers().length; i++)
-            {
-                if (i > 0)
-                    builder.append(',');
-                builder.append(getDispositionModifiers()[i]);
-            }
-        }
-        return builder.toString();
-    }
-
-    /**
-     * Answer the Sending Mode.
-     * 
-     * @return Returns the sendingMode.
-     */
-    protected DispositionSendingMode getSendingMode()
-    {
-        return fieldSendingMode;
-    }
-
-    /**
-     * Set the Sending Mode.
-     * 
-     * @param sendingMode The sendingMode to set.
-     */
-    protected void setSendingMode(DispositionSendingMode sendingMode)
-    {
-        fieldSendingMode = sendingMode;
-    }
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/DispositionActionMode.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/DispositionActionMode.java
deleted file mode 100644
index 95b883f..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/DispositionActionMode.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-/**
- * Interface <code>DispositionActionMode</code> marks a type encapsulating
- * disposition action mode information as defined by RFC 2298.
- */
-public interface DispositionActionMode
-{
-
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/DispositionModifier.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/DispositionModifier.java
deleted file mode 100644
index 25bf06e..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/DispositionModifier.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-/**
- * Interface <code>DispositionModifier</code> marks a type encapsulating
- * disposition modifier information as defined by RFC 2298.
- */
-public interface DispositionModifier
-{
-
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/DispositionSendingMode.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/DispositionSendingMode.java
deleted file mode 100644
index 5b29b93..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/DispositionSendingMode.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-/**
- * Interface <code>DispositionSendingMode</code> marks a type encapsulating
- * disposition sending mode information as defined by RFC 2298.
- */
-public interface DispositionSendingMode
-{
-
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/DispositionType.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/DispositionType.java
deleted file mode 100644
index 9c17de0..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/DispositionType.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-/**
- * Interface <code>DispositionType</code> marks a type encapsulating
- * disposition type information as defined by RFC 2298.
- */
-public interface DispositionType
-{
-
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/MDNFactory.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/MDNFactory.java
deleted file mode 100644
index 0b514b2..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/MDNFactory.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeBodyPart;
-
-import org.apache.mailet.base.mail.MimeMultipartReport;
-
-/**
- * Class <code>MDNFactory</code> creates MimeMultipartReports containing
- * Message Delivery Notifications as specified by RFC 2298.
- */
-public class MDNFactory
-{
-
-    /**
-     * Default Constructor
-     */
-    private MDNFactory()
-    {
-        super();
-    }
-    
-    /**
-     * Answers a MimeMultipartReport containing a
-     * Message Delivery Notification as specified by RFC 2298.
-     * 
-     * @param humanText
-     * @param reporting_UA_name
-     * @param reporting_UA_product
-     * @param original_recipient
-     * @param final_recipient
-     * @param original_message_id
-     * @param disposition
-     * @return MimeMultipartReport
-     * @throws MessagingException
-     */
-    static public MimeMultipartReport create(String humanText,
-            String reporting_UA_name,
-            String reporting_UA_product,
-            String original_recipient,
-            String final_recipient,
-            String original_message_id,
-            Disposition disposition) throws MessagingException
-    {
-        // Create the message parts. According to RFC 2298, there are two
-        // compulsory parts and one optional part...
-        MimeMultipartReport multiPart = new MimeMultipartReport();
-        multiPart.setReportType("disposition-notification");
-        
-        // Part 1: The 'human-readable' part
-        MimeBodyPart humanPart = new MimeBodyPart();
-        humanPart.setText(humanText);
-        multiPart.addBodyPart(humanPart);
-
-        // Part 2: MDN Report Part
-        // 1) reporting-ua-field
-        StringBuilder mdnReport = new StringBuilder(128);
-        mdnReport.append("Reporting-UA: ");
-        mdnReport.append((reporting_UA_name == null ? "" : reporting_UA_name));
-        mdnReport.append("; ");
-        mdnReport.append((reporting_UA_product == null ? "" : reporting_UA_product));
-        mdnReport.append("\r\n");
-        // 2) original-recipient-field
-        if (null != original_recipient)
-        {
-            mdnReport.append("Original-Recipient: ");
-            mdnReport.append("rfc822; ");
-            mdnReport.append(original_recipient);
-            mdnReport.append("\r\n");
-        }
-        // 3) final-recipient-field
-        mdnReport.append("Final-Recepient: ");
-        mdnReport.append("rfc822; ");
-        mdnReport.append((final_recipient == null ? "" : final_recipient));
-        mdnReport.append("\r\n");
-        // 4) original-message-id-field
-        mdnReport.append("Original-Message-ID: ");
-        mdnReport.append((original_message_id == null ? "" : original_message_id));
-        mdnReport.append("\r\n");
-        // 5) disposition-field
-        mdnReport.append(disposition.toString());
-        mdnReport.append("\r\n");
-        MimeBodyPart mdnPart = new MimeBodyPart();
-        mdnPart.setContent(mdnReport.toString(), "message/disposition-notification");
-        multiPart.addBodyPart(mdnPart);
-
-        // Part 3: The optional third part, the original message is omitted.
-        // We don't want to propogate over-sized, virus infected or
-        // other undesirable mail!
-        // There is the option of adding a Text/RFC822-Headers part, which
-        // includes only the RFC 822 headers of the failed message. This is
-        // described in RFC 1892. It would be a useful addition!        
-        return multiPart;
-    }
-
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ModifierError.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ModifierError.java
deleted file mode 100644
index c582e5c..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ModifierError.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-
-/**
- * Class <code>ModifierError</code>
- */
-public class ModifierError implements DispositionModifier
-{
-
-    /**
-     * Default Constructor
-     */
-    public ModifierError()
-    {
-        super();
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString()
-    {
-        return "error";
-    }
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ModifierExpired.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ModifierExpired.java
deleted file mode 100644
index 880a700..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ModifierExpired.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-
-/**
- * Class <code>ModifierExpired</code>
- */    
-public class ModifierExpired implements DispositionModifier
-{
-
-    /**
-     * Default Constructor
-     */
-    public ModifierExpired()
-    {
-        super();
-    }
-    
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString()
-    {
-        return "expired";
-    }        
-
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ModifierFailed.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ModifierFailed.java
deleted file mode 100644
index 741d77e..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ModifierFailed.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-
-/**
- * Class <code>ModifierFailed</code>
- */    
-public class ModifierFailed implements DispositionModifier
-{
-
-    /**
-     * Default Constructor
-     */
-    public ModifierFailed()
-    {
-        super();
-    }
-    
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString()
-    {
-        return "failed";
-    }        
-
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ModifierMailboxTerminated.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ModifierMailboxTerminated.java
deleted file mode 100644
index 7d715c5..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ModifierMailboxTerminated.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-
-/**
- * Class <code>ModifierMailboxTerminated</code>
- */    
-public class ModifierMailboxTerminated implements DispositionModifier
-{
-
-    /**
-     * Default Constructor
-     */
-    public ModifierMailboxTerminated()
-    {
-        super();
-    }
-    
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString()
-    {
-        return "mailbox-terminated";
-    }        
-
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ModifierSuperseded.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ModifierSuperseded.java
deleted file mode 100644
index ab8375e..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ModifierSuperseded.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-
-/**
- * Class <code>ModifierSuperseded</code>
- */    
-public class ModifierSuperseded implements DispositionModifier
-{
-
-    /**
-     * Default Constructor
-     */
-    public ModifierSuperseded()
-    {
-        super();
-    }
-    
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString()
-    {
-        return "superseded";
-    }        
-
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ModifierWarning.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ModifierWarning.java
deleted file mode 100644
index dd0f5d1..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/ModifierWarning.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-
-/**
- * Class <code>ModifierWarning</code>
- */    
-public class ModifierWarning implements DispositionModifier
-{
-
-    /**
-     * Default Constructor
-     */
-    public ModifierWarning()
-    {
-        super();
-    }
-    
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString()
-    {
-        return "warning";
-    }        
-
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/SendingModeAutomatic.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/SendingModeAutomatic.java
deleted file mode 100644
index 9a178b9..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/SendingModeAutomatic.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-
-/**
- * Class <code>SendingModeAutomatic</code>
- */
-public class SendingModeAutomatic implements DispositionSendingMode
-{
-
-    /**
-     * Default Constructor
-     */
-    public SendingModeAutomatic()
-    {
-        super();
-    }
-    
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString()
-    {
-        return "MDN-sent-automatically";
-    }        
-
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/SendingModeManual.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/SendingModeManual.java
deleted file mode 100644
index f123dc6..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/SendingModeManual.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-
-/**
- * Class <code>SendingModeManual</code>
- */
-public class SendingModeManual implements DispositionSendingMode
-{
-
-    /**
-     * Default Constructor
-     */
-    public SendingModeManual()
-    {
-        super();
-    }
-    
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString()
-    {
-        return "MDN-sent-manually";
-    }         
-
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/TypeDeleted.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/TypeDeleted.java
deleted file mode 100644
index 9e0a195..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/TypeDeleted.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-
-/**
- * Class <code>TypeDeleted</code>
- */
-public class TypeDeleted implements DispositionType
-{
-
-    /**
-     * Default Constructor
-     */
-    public TypeDeleted()
-    {
-        super();
-    }
-    
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString()
-    {
-        return "deleted";
-    }         
-
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/TypeDenied.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/TypeDenied.java
deleted file mode 100644
index a08183c..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/TypeDenied.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-
-/**
- * Class <code>TypeDenied</code>
- */    
-public class TypeDenied implements DispositionType
-{
-
-    /**
-     * Default Constructor
-     */
-    public TypeDenied()
-    {
-        super();
-    }
-    
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString()
-    {
-        return "denied";
-    }         
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/TypeDispatched.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/TypeDispatched.java
deleted file mode 100644
index 5c41482..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/TypeDispatched.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-
-/**
- * Class <code>TypeDispatched</code>
- */
-public class TypeDispatched implements DispositionType
-{
-    /**
-     * Default Constructor
-     */
-    public TypeDispatched()
-    {
-        super();
-    }
-    
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString()
-    {
-        return "dispatched";
-    }         
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/TypeDisplayed.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/TypeDisplayed.java
deleted file mode 100644
index f5f4032..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/TypeDisplayed.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-
-/**
- * Class <code>TypeDisplayed</code>
- */
-public class TypeDisplayed implements DispositionType
-{
-
-    /**
-     * Default Constructor
-     */
-    public TypeDisplayed()
-    {
-        super();
-    }
-    
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString()
-    {
-        return "displayed";
-    }         
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/TypeFailed.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/TypeFailed.java
deleted file mode 100644
index 18f1142..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/TypeFailed.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-
-/**
- * Class <code>TypeFailed</code>
- */    
-public class TypeFailed implements DispositionType
-{
-
-    /**
-     * Default Constructor
-     */
-    public TypeFailed()
-    {
-        super();
-    }
-    
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString()
-    {
-        return "failed";
-    }         
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/TypeProcessed.java b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/TypeProcessed.java
deleted file mode 100644
index d3b0566..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/TypeProcessed.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mailet.mdn;
-
-
-/**
- * Class <code>TypeProcessed</code>
- */    
-public class TypeProcessed implements DispositionType
-{
-
-    /**
-     * Default Constructor
-     */
-    public TypeProcessed()
-    {
-        super();
-    }
-    
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString()
-    {
-        return "processed";
-    }         
-}
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/package.html b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/package.html
deleted file mode 100644
index fd5ae70..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/mdn/package.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<!--
-
-  @(#)package.html
-
-  Licensed to the Apache Software Foundation (ASF) under one   
-  or more contributor license agreements.  See the NOTICE file 
-  distributed with this work for additional information        
-  regarding copyright ownership.  The ASF licenses this file   
-  to you under the Apache License, Version 2.0 (the            
-  "License"); you may not use this file except in compliance   
-  with the License.  You may obtain a copy of the License at   
-                                                               
-    http://www.apache.org/licenses/LICENSE-2.0                 
-                                                               
-  Unless required by applicable law or agreed to in writing,   
-  software distributed under the License is distributed on an  
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       
-  KIND, either express or implied.  See the License for the    
-  specific language governing permissions and limitations      
-  under the License.       
--->
-
-</HEAD>
-<BODY>
-
-<p><abbr title='Message Delivery Notifications'>MDN</abbr> 
-for JavaMail.</p>
-</BODY>
-</HTML>
\ No newline at end of file
diff --git a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/package.html b/trunk/mailet/src/main/java/org/apache/jsieve/mailet/package.html
deleted file mode 100644
index 4e499ac..0000000
--- a/trunk/mailet/src/main/java/org/apache/jsieve/mailet/package.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
-<HEAD>
-<!--
-
-  @(#)package.html
-
-  Licensed to the Apache Software Foundation (ASF) under one   
-  or more contributor license agreements.  See the NOTICE file 
-  distributed with this work for additional information        
-  regarding copyright ownership.  The ASF licenses this file   
-  to you under the Apache License, Version 2.0 (the            
-  "License"); you may not use this file except in compliance   
-  with the License.  You may obtain a copy of the License at   
-                                                               
-    http://www.apache.org/licenses/LICENSE-2.0                 
-                                                               
-  Unless required by applicable law or agreed to in writing,   
-  software distributed under the License is distributed on an  
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       
-  KIND, either express or implied.  See the License for the    
-  specific language governing permissions and limitations      
-  under the License.       
--->
-
-</HEAD>
-<BODY>
-
-<p>Sieve filtering mailet.</p>
-<p>Provides suitable actions and adapters for Sieve use in a <a href='http://james.apache.org/mailet'>Mailet</a> container.</p>
-</BODY>
-</HTML>
\ No newline at end of file
diff --git a/trunk/mailet/src/main/resources/sieveConfig.xml b/trunk/mailet/src/main/resources/sieveConfig.xml
deleted file mode 100644
index c73c06f..0000000
--- a/trunk/mailet/src/main/resources/sieveConfig.xml
+++ /dev/null
@@ -1,142 +0,0 @@
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one   
-  or more contributor license agreements.  See the NOTICE file 
-  distributed with this work for additional information        
-  regarding copyright ownership.  The ASF licenses this file   
-  to you under the Apache License, Version 2.0 (the            
-  "License"); you may not use this file except in compliance   
-  with the License.  You may obtain a copy of the License at   
-                                                               
-    http://www.apache.org/licenses/LICENSE-2.0                 
-                                                               
-  Unless required by applicable law or agreed to in writing,   
-  software distributed under the License is distributed on an  
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       
-  KIND, either express or implied.  See the License for the    
-  specific language governing permissions and limitations      
-  under the License.                                           
- -->
-<!-- Sieve configuration. -->
-<sieve>
-    <!-- Declare supported command mappings -->
-    <commandMap>
-        <!-- Condition Commands -->
-        <!--  RFC3082 - Implementations MUST support these: -->
-        <entry> 
-            <name>if</name> 
-            <class>org.apache.jsieve.commands.If</class>
-        </entry>    
-        <entry>
-            <name>else</name>
-            <class>org.apache.jsieve.commands.Else</class>
-        </entry>            
-        <entry>
-            <name>elsif</name>
-            <class>org.apache.jsieve.commands.Elsif</class>
-        </entry>            
-        <entry>
-            <name>require</name>
-            <class>org.apache.jsieve.commands.Require</class>
-        </entry>            
-        <entry>
-            <name>stop</name>
-            <class>org.apache.jsieve.commands.Stop</class>
-        </entry>            
-
-        <!--  Action Commands -->       
-        <!--  RFC3082 - Implementations MUST support these: -->
-        <entry>
-            <name>keep</name>
-            <class>org.apache.jsieve.commands.Keep</class>
-        </entry>            
-        <entry>
-            <name>discard</name>
-            <class>org.apache.jsieve.commands.Discard</class>
-        </entry>            
-        <entry>
-            <name>redirect</name>
-            <class>org.apache.jsieve.commands.Redirect</class>
-        </entry>            
-         <!--  RFC3082 - Implementations SHOULD support these: -->      
-        <entry>
-            <name>reject</name>
-            <class>org.apache.jsieve.commands.optional.Reject</class>
-        </entry>            
-        <entry>
-            <name>fileinto</name>
-            <class>org.apache.jsieve.commands.optional.FileInto</class>
-        </entry>            
-
-        <!-- JUnit Commands for Testing -->       
-        <entry>
-            <name>throwtestexception</name>
-            <class>org.apache.jsieve.junit.commands.ThrowTestException</class>
-        </entry>
-        
-        <!-- Extension Commands -->       
-        <entry>
-            <name>log</name>
-            <class>org.apache.jsieve.commands.extensions.Log</class>
-        </entry>                        
-    </commandMap>
-
-    <!-- Declare supported test mappings -->    
-    <testMap>
-        <!--  RFC3082 - Implementations MUST support these tests: -->
-        <entry>
-            <name>address</name>
-            <class>org.apache.jsieve.tests.Address</class>
-        </entry>            
-        <entry>
-            <name>allof</name>
-            <class>org.apache.jsieve.tests.AllOf</class>
-        </entry>            
-        <entry>
-            <name>anyof</name>
-            <class>org.apache.jsieve.tests.AnyOf</class>
-        </entry>            
-        <entry>
-            <name>exists</name>
-            <class>org.apache.jsieve.tests.Exists</class>
-        </entry>            
-        <entry>
-            <name>false</name>
-            <class>org.apache.jsieve.tests.False</class>
-        </entry>            
-        <entry>
-            <name>header</name>
-            <class>org.apache.jsieve.tests.Header</class>
-        </entry>            
-        <entry>
-            <name>not</name>
-            <class>org.apache.jsieve.tests.Not</class>
-        </entry>            
-        <entry>
-            <name>size</name>
-            <class>org.apache.jsieve.tests.Size</class>
-        </entry>            
-        <entry>
-            <name>true</name>
-            <class>org.apache.jsieve.tests.True</class>
-        </entry>            
-
-        <!--  RFC3082 - Implementations SHOULD support these: -->
-        <entry>
-            <name>envelope</name>
-            <class>org.apache.jsieve.tests.optional.Envelope</class>
-        </entry>            
-    </testMap>
-
-    <!-- Declare supported comparator mappings -->    
-    <comparatorMap>
-        <!--  RFC3082 - Implementations MUST support these: -->
-        <entry>
-            <name>i;octet</name>
-            <class>org.apache.jsieve.comparators.Octet</class>
-        </entry>            
-        <entry>
-            <name>i;ascii-casemap</name>
-            <class>org.apache.jsieve.comparators.AsciiCasemap</class>
-        </entry>                    
-    </comparatorMap>                    
-</sieve>            
diff --git a/trunk/mailet/src/site/resources/images/asf-logo-reduced.gif b/trunk/mailet/src/site/resources/images/asf-logo-reduced.gif
deleted file mode 100644
index 93cc102..0000000
--- a/trunk/mailet/src/site/resources/images/asf-logo-reduced.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/mailet/src/site/resources/images/james-jsieve-logo.gif b/trunk/mailet/src/site/resources/images/james-jsieve-logo.gif
deleted file mode 100644
index 9c7e34f..0000000
--- a/trunk/mailet/src/site/resources/images/james-jsieve-logo.gif
+++ /dev/null
Binary files differ
diff --git a/trunk/mailet/src/site/site.xml b/trunk/mailet/src/site/site.xml
deleted file mode 100644
index d1e5b67..0000000
--- a/trunk/mailet/src/site/site.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--

-  Licensed to the Apache Software Foundation (ASF) under one

-  or more contributor license agreements.  See the NOTICE file

-  distributed with this work for additional information

-  regarding copyright ownership.  The ASF licenses this file

-  to you under the Apache License, Version 2.0 (the

-  "License"); you may not use this file except in compliance

-  with the License.  You may obtain a copy of the License at

-

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

-

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

-  software distributed under the License is distributed on an

-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

-  KIND, either express or implied.  See the License for the

-  specific language governing permissions and limitations

-  under the License.    

--->

-<project name="jSieve">
-  <bannerLeft>
-    <name>JAMES jSieve</name>
-    <src>images/james-jsieve-logo.gif</src>
-    <href>http://james.apache.org/</href>
-  </bannerLeft>
-
-  <bannerRight>

-    <name>The Apache Software Foundation</name>

-    <src>images/asf-logo-reduced.gif</src>

-    <href>http://www.apache.org/index.html</href>

-  </bannerRight> 

-
-  <body>
-
-    <menu name="jSieve Mailet">
-      <item name="Overview" href="index.html"/>
-      <item name='Catalog' href='mailet-report.html'/>
-      <item 
-        name="DOAP" 
-        href="doap_apache-jsieve-mailet.rdf" 
-        img='http://www.w3.org/RDF/icons/rdf_metadata_button.32'/>
-    </menu>
-    
-    <menu ref="reports" />
-    
-  </body>
-</project>
diff --git a/trunk/mailet/src/site/xdoc/index.xml b/trunk/mailet/src/site/xdoc/index.xml
deleted file mode 100644
index c3a8ebc..0000000
--- a/trunk/mailet/src/site/xdoc/index.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one   
-  or more contributor license agreements.  See the NOTICE file 
-  distributed with this work for additional information        
-  regarding copyright ownership.  The ASF licenses this file   
-  to you under the Apache License, Version 2.0 (the            
-  "License"); you may not use this file except in compliance   
-  with the License.  You may obtain a copy of the License at   
-                                                               
-    http://www.apache.org/licenses/LICENSE-2.0                 
-                                                               
-  Unless required by applicable law or agreed to in writing,   
-  software distributed under the License is distributed on an  
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       
-  KIND, either express or implied.  See the License for the    
-  specific language governing permissions and limitations      
-  under the License.  
--->
-<document>
-
- <properties>
-  <title>Overview</title>
-  <author email="jsieve-dev@jakarta.apache.org">jSieve Project</author>
- </properties>
-
-<body>
-<section name="What is jSieve?">
-<p>
-jSieve is a Java implementation of the Sieve mail filtering language defined by 
-<a href='http://www.rfc-editor.org/rfc/rfc3028.txt'>RFC 3028</a>. jSieve is implemented 
-as a language processor that can be plugged into any internet mail application to add 
-Sieve support.
-</p>
-<subsection name='Sieve Mailets'>
-<p>
-This library contains mailets which allow Sieve filters to be easily fitting
-into any enterprise mail server supporting the 
-<a href='http://james.apache.org/mailet' rel='tag'>Mailet API</a>. This library
-supplies Sieve mail filtering support for James.
-</p><p>
-For more details, see the <a href='mailet-report.html'>Catelog</a>.
-</p>
-</subsection>
-</section>
-</body>
-</document>
diff --git a/trunk/main/BUILDING.txt b/trunk/main/BUILDING.txt
deleted file mode 100644
index 7c8f4ea..0000000
--- a/trunk/main/BUILDING.txt
+++ /dev/null
@@ -1,54 +0,0 @@
-#############################################################################
-# BUILDING JSIEVE WITH MAVEN
-#############################################################################
-
-1) Install maven 2.0.9
-
-2) Add maven to your path and make sure you also have a JAVA_HOME environment
-   variable to point a java 1.4+ virtual machine.
-
-3) Run "mvn package"
-
-
-#############################################################################
-# BUILDING JSIEVE WITH ANT
-#############################################################################
-
-The source trunk for JSIEVE no longer includes Ant, so in order to
-build JSIEVE, you will need to install Ant as well as acquire JSIEVE
-source from subversion or a source tarball.
-
-JSIEVE uses JavaCC during the build process to generate the script parser.
-Unfortunately, though the latest codebase is now available under the BSD
-license there is (at this time) no official open sourced release. So
-to build JSIEVE download the JavaCC 4.0 release from 
-https://javacc.dev.java.net/. Extract the javacc.jar and copy into the
-root of the JSIEVE directory. Rename this to javacc-4.0.jar.
-
-You also have to download activation-1.1.1.jar and mail-1.4.1.jar files to 
-the root folder in order to build/run unit tests.
-
-Steps:
-
-1) Install Ant (v1.6.5 as of the time of this writing)
-
-2) Add Ant to your path.  For me, I do the following:
-   $ tar zxvf apache-ant-1.6.5-bin.tar.gz
-   $ mv apache-ant-1.6.5 /usr/local
-   $ ln -sf /usr/local/apache-ant-1.6.5 /usr/local/ant
-   $ ln -sf /usr/local/ant/bin/ant /usr/local/bin/ant
-
-3) Change any JSIEVE-related build scripts that you might have to call
-    Ant directly, e.g.:  ./build.sh <target> ==> ant <target>
-
-That's it.  Please contact general@james.apache.org if you have any
-problems.
-
-##############################################################################
-# SET UP JSIEVE INSIDE ECLIPSE
-##############################################################################
-
-You can use maven facility to setup an eclipse project:
-mvn eclipse:eclipse
-
-You can also use q4e plugin from eclipse.
\ No newline at end of file
diff --git a/trunk/main/LICENSE.apache b/trunk/main/LICENSE.apache
deleted file mode 100644
index 94d8c58..0000000
--- a/trunk/main/LICENSE.apache
+++ /dev/null
@@ -1,176 +0,0 @@
-                                 Apache License

-                           Version 2.0, January 2004

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

-

-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

-

-   1. Definitions.

-

-      "License" shall mean the terms and conditions for use, reproduction,

-      and distribution as defined by Sections 1 through 9 of this document.

-

-      "Licensor" shall mean the copyright owner or entity authorized by

-      the copyright owner that is granting the License.

-

-      "Legal Entity" shall mean the union of the acting entity and all

-      other entities that control, are controlled by, or are under common

-      control with that entity. For the purposes of this definition,

-      "control" means (i) the power, direct or indirect, to cause the

-      direction or management of such entity, whether by contract or

-      otherwise, or (ii) ownership of fifty percent (50%) or more of the

-      outstanding shares, or (iii) beneficial ownership of such entity.

-

-      "You" (or "Your") shall mean an individual or Legal Entity

-      exercising permissions granted by this License.

-

-      "Source" form shall mean the preferred form for making modifications,

-      including but not limited to software source code, documentation

-      source, and configuration files.

-

-      "Object" form shall mean any form resulting from mechanical

-      transformation or translation of a Source form, including but

-      not limited to compiled object code, generated documentation,

-      and conversions to other media types.

-

-      "Work" shall mean the work of authorship, whether in Source or

-      Object form, made available under the License, as indicated by a

-      copyright notice that is included in or attached to the work

-      (an example is provided in the Appendix below).

-

-      "Derivative Works" shall mean any work, whether in Source or Object

-      form, that is based on (or derived from) the Work and for which the

-      editorial revisions, annotations, elaborations, or other modifications

-      represent, as a whole, an original work of authorship. For the purposes

-      of this License, Derivative Works shall not include works that remain

-      separable from, or merely link (or bind by name) to the interfaces of,

-      the Work and Derivative Works thereof.

-

-      "Contribution" shall mean any work of authorship, including

-      the original version of the Work and any modifications or additions

-      to that Work or Derivative Works thereof, that is intentionally

-      submitted to Licensor for inclusion in the Work by the copyright owner

-      or by an individual or Legal Entity authorized to submit on behalf of

-      the copyright owner. For the purposes of this definition, "submitted"

-      means any form of electronic, verbal, or written communication sent

-      to the Licensor or its representatives, including but not limited to

-      communication on electronic mailing lists, source code control systems,

-      and issue tracking systems that are managed by, or on behalf of, the

-      Licensor for the purpose of discussing and improving the Work, but

-      excluding communication that is conspicuously marked or otherwise

-      designated in writing by the copyright owner as "Not a Contribution."

-

-      "Contributor" shall mean Licensor and any individual or Legal Entity

-      on behalf of whom a Contribution has been received by Licensor and

-      subsequently incorporated within the Work.

-

-   2. Grant of Copyright License. Subject to the terms and conditions of

-      this License, each Contributor hereby grants to You a perpetual,

-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

-      copyright license to reproduce, prepare Derivative Works of,

-      publicly display, publicly perform, sublicense, and distribute the

-      Work and such Derivative Works in Source or Object form.

-

-   3. Grant of Patent License. Subject to the terms and conditions of

-      this License, each Contributor hereby grants to You a perpetual,

-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

-      (except as stated in this section) patent license to make, have made,

-      use, offer to sell, sell, import, and otherwise transfer the Work,

-      where such license applies only to those patent claims licensable

-      by such Contributor that are necessarily infringed by their

-      Contribution(s) alone or by combination of their Contribution(s)

-      with the Work to which such Contribution(s) was submitted. If You

-      institute patent litigation against any entity (including a

-      cross-claim or counterclaim in a lawsuit) alleging that the Work

-      or a Contribution incorporated within the Work constitutes direct

-      or contributory patent infringement, then any patent licenses

-      granted to You under this License for that Work shall terminate

-      as of the date such litigation is filed.

-

-   4. Redistribution. You may reproduce and distribute copies of the

-      Work or Derivative Works thereof in any medium, with or without

-      modifications, and in Source or Object form, provided that You

-      meet the following conditions:

-

-      (a) You must give any other recipients of the Work or

-          Derivative Works a copy of this License; and

-

-      (b) You must cause any modified files to carry prominent notices

-          stating that You changed the files; and

-

-      (c) You must retain, in the Source form of any Derivative Works

-          that You distribute, all copyright, patent, trademark, and

-          attribution notices from the Source form of the Work,

-          excluding those notices that do not pertain to any part of

-          the Derivative Works; and

-

-      (d) If the Work includes a "NOTICE" text file as part of its

-          distribution, then any Derivative Works that You distribute must

-          include a readable copy of the attribution notices contained

-          within such NOTICE file, excluding those notices that do not

-          pertain to any part of the Derivative Works, in at least one

-          of the following places: within a NOTICE text file distributed

-          as part of the Derivative Works; within the Source form or

-          documentation, if provided along with the Derivative Works; or,

-          within a display generated by the Derivative Works, if and

-          wherever such third-party notices normally appear. The contents

-          of the NOTICE file are for informational purposes only and

-          do not modify the License. You may add Your own attribution

-          notices within Derivative Works that You distribute, alongside

-          or as an addendum to the NOTICE text from the Work, provided

-          that such additional attribution notices cannot be construed

-          as modifying the License.

-

-      You may add Your own copyright statement to Your modifications and

-      may provide additional or different license terms and conditions

-      for use, reproduction, or distribution of Your modifications, or

-      for any such Derivative Works as a whole, provided Your use,

-      reproduction, and distribution of the Work otherwise complies with

-      the conditions stated in this License.

-

-   5. Submission of Contributions. Unless You explicitly state otherwise,

-      any Contribution intentionally submitted for inclusion in the Work

-      by You to the Licensor shall be under the terms and conditions of

-      this License, without any additional terms or conditions.

-      Notwithstanding the above, nothing herein shall supersede or modify

-      the terms of any separate license agreement you may have executed

-      with Licensor regarding such Contributions.

-

-   6. Trademarks. This License does not grant permission to use the trade

-      names, trademarks, service marks, or product names of the Licensor,

-      except as required for reasonable and customary use in describing the

-      origin of the Work and reproducing the content of the NOTICE file.

-

-   7. Disclaimer of Warranty. Unless required by applicable law or

-      agreed to in writing, Licensor provides the Work (and each

-      Contributor provides its Contributions) on an "AS IS" BASIS,

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

-      implied, including, without limitation, any warranties or conditions

-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

-      PARTICULAR PURPOSE. You are solely responsible for determining the

-      appropriateness of using or redistributing the Work and assume any

-      risks associated with Your exercise of permissions under this License.

-

-   8. Limitation of Liability. In no event and under no legal theory,

-      whether in tort (including negligence), contract, or otherwise,

-      unless required by applicable law (such as deliberate and grossly

-      negligent acts) or agreed to in writing, shall any Contributor be

-      liable to You for damages, including any direct, indirect, special,

-      incidental, or consequential damages of any character arising as a

-      result of this License or out of the use or inability to use the

-      Work (including but not limited to damages for loss of goodwill,

-      work stoppage, computer failure or malfunction, or any and all

-      other commercial damages or losses), even if such Contributor

-      has been advised of the possibility of such damages.

-

-   9. Accepting Warranty or Additional Liability. While redistributing

-      the Work or Derivative Works thereof, You may choose to offer,

-      and charge a fee for, acceptance of support, warranty, indemnity,

-      or other liability obligations and/or rights consistent with this

-      License. However, in accepting such obligations, You may act only

-      on Your own behalf and on Your sole responsibility, not on behalf

-      of any other Contributor, and only if You agree to indemnify,

-      defend, and hold each Contributor harmless for any liability

-      incurred by, or claims asserted against, such Contributor by reason

-      of your accepting any such warranty or additional liability.

-

-   END OF TERMS AND CONDITIONS	
\ No newline at end of file
diff --git a/trunk/main/NOTICE.base b/trunk/main/NOTICE.base
deleted file mode 100644
index 76a0011..0000000
--- a/trunk/main/NOTICE.base
+++ /dev/null
@@ -1,10 +0,0 @@
-   =========================================================================

-   ==      NOTICE file for use with the Apache License, Version 2.0,      ==

-   =========================================================================

-

-   Apache James JSieve Library

-   Copyright 2009 The Apache Software Foundation

-

-   This product includes software developed at

-   The Apache Software Foundation (http://www.apache.org/).

-
diff --git a/trunk/main/build.xml b/trunk/main/build.xml
deleted file mode 100644
index 5954bb0..0000000
--- a/trunk/main/build.xml
+++ /dev/null
@@ -1,145 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-==========================================================================
-
- jSieve build file 
-
-
-  Licensed to the Apache Software Foundation (ASF) under one   
-  or more contributor license agreements.  See the NOTICE file 
-  distributed with this work for additional information        
-  regarding copyright ownership.  The ASF licenses this file   
-  to you under the Apache License, Version 2.0 (the            
-  "License"); you may not use this file except in compliance   
-  with the License.  You may obtain a copy of the License at   
-                                                               
-    http://www.apache.org/licenses/LICENSE-2.0                 
-                                                               
-  Unless required by applicable law or agreed to in writing,   
-  software distributed under the License is distributed on an  
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       
-  KIND, either express or implied.  See the License for the    
-  specific language governing permissions and limitations      
-  under the License.                                           
- 
-==============================================================================
--->
-
-<project name='jsieve-main' default="main" basedir=".">
-    
-    <!--
-    Give user a chance to override without editing this file
-    (and without typing -D each time he compiles it)
-    -->
-    <property file=".ant.properties" />
-    <property file="${user.home}/.ant.properties" />
-    <property file="../include.properties" />
-    <property file="../default.properties" />
-
-    <path id="project.class.path">
-        <pathelement location="${commons-logging.jar}" />
-        <pathelement location="${log4j.jar}" />
-        <pathelement location="${junit.jar}" />
-        <pathelement path="${java.class.path}" />
-        <pathelement path="${build.classes}" />
-    </path>
-
-    <path id="mail.class.path">
-        <pathelement location='${mail.jar}' />
-        <pathelement location='${activation.jar}' />
-    </path>
-
-    <path id="project.test.class.path">
-        <path refid="project.class.path" />
-        <path refid="mail.class.path" />
-    </path>
-    
-    <import file='../build.xml'/>
-    <target name="main" depends="run-tests" description=" - main target"/>
-
-    <target name="prepare" depends="preprocess" description=" - paparations                   [internal]">
-        <CheckMailConditions/>
-    </target>
-    
-    <!--
-    Unless you want to alter the Sieve grammar, expressed by the seive.jjt 
-    file, is built, consider the following processing a black box.
-    Or zen for the more spiritual amongst you.
-    -->                       
-    <target name="preprocess" description=" - generate source from grammar  [internal]">
-        <!--
-        Generate JavaCC source inserting parse tree building actions 
-        and the Java source for the parse classes.
-        -->
-        <mkdir dir="${build.src}/org/apache/jsieve/parser/generated/address" />
-        <java classname="jjtree" fork="yes" failonerror="true" dir="${build.src}">
-            <arg line="${javacc.dir}/sieve/sieve.jjt" />
-            <classpath>
-                <pathelement location="${javacc.jar}" />
-                <pathelement path="${java.class.path}" />
-            </classpath>
-        </java>
-        <java classname="jjtree" fork="yes" failonerror="true" dir="${build.src}">
-            <arg line="${javacc.dir}/address/AddressListParser.jjt" />
-            <classpath>
-                <pathelement location="${javacc.jar}" />
-                <pathelement path="${java.class.path}" />
-            </classpath>
-        </java>
-
-        <!-- Generate Java source from the JavaCC source -->
-        <java classname="javacc" fork="yes" failonerror="true" dir="${build.src}">
-            <arg line="${build.src}/org/apache/jsieve/parser/generated/sieve.jj" />
-            <classpath>
-                <pathelement location="${javacc.jar}" />
-                <pathelement path="${java.class.path}" />
-            </classpath>
-        </java>
-        <java classname="javacc" fork="yes" failonerror="true" dir="${build.src}">
-            <arg line="${build.src}/org/apache/jsieve/parser/generated/address/AddressListParser.jj" />
-            <classpath>
-                <pathelement location="${javacc.jar}" />
-                <pathelement path="${java.class.path}" />
-            </classpath>
-        </java>
-    </target>
-
-    <target name="compile" depends="prepare" description=" - compiles test and main source">
-        <CompileMain>
-            <src path="${build.src}" />
-            <src path="${java.dir}" />
-        </CompileMain>
-        <CompileTests/>
-    </target>
-
-    <target name="jar" depends="compile" description=" - jars classes">
-        <Jar name='' prefix=''/>     
-    
-        <!-- Make jSieve jUnit jar-->
-        <echo message="Making jSieve jUnit Jar (${name}-tests-${version}.jar)" />
-        <jar jarfile="${build.lib}/${name}-tests-${version}.jar" basedir="${build.classes.test}">
-            <include name="org/apache/jsieve/**" />
-            <include name="META-INF/**" />
-            <manifest>
-                <attribute name="Created-By" value='${creator}' />
-                <attribute name="X-Compile-Source-JDK" value='${jdk.source}' />
-                <attribute name="X-Compile-Target-JDK" value='${jdk.target}' />
-            </manifest>
-        </jar>
-
-        <copy todir='${lib.jsieve.dir}' file='${build.lib}/${name}-tests-${version}.jar' />
-    </target>
-
-    <target name="run-tests" depends="jar" description=" - runs all tests">
-        <RunTests/>
-    </target>
-
-    <target name="clean" description=" - cleans build files">
-        <Clean/>
-    </target>
-
-    <target name="usage" description=" - prints help">
-        <Usage/>
-    </target>
-
-</project>
diff --git a/trunk/main/pom.xml b/trunk/main/pom.xml
deleted file mode 100644
index cfd51a8..0000000
--- a/trunk/main/pom.xml
+++ /dev/null
@@ -1,248 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-  
-      http://www.apache.org/licenses/LICENSE-2.0
-  
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.    
-  -->
-  <parent>
-    <artifactId>jsieve-project</artifactId>
-    <groupId>org.apache.james</groupId>
-    <version>0.4</version>
-  </parent>
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.james</groupId>
-  <artifactId>apache-jsieve</artifactId>
-  <name>Apache JAMES jSieve</name>
-  <version>0.4</version>
-  <packaging>jar</packaging>
-  <description>
-Apache jSieve is a server side mail filtering system 
-implementing RFC3028. Apache jSieve is developed by the 
-JAMES project.
-  </description>
-  <url>http://james.apache.org/jsieve</url>
-  <inceptionYear>2004</inceptionYear>
-  
-  <properties>
-    <!--
-    The website is committed to subversion. This property can be overriden
-    to upload the site to a local staging location.
-    For example, adding the following to ~/.m2/settings.xml will upload
-    to localhost:
-    
-      <profiles>
-        <profile>
-           <id>main</id>
-           <activation>
-              <activeByDefault>true</activeByDefault>
-           </activation>
-           <properties>
-              <james.www>scp://localhost/www</james.www>
-              <james.www.id>localhost</james.www.id>
-      ...
-    -->
-    <!-- General location for site stage -->
-    <james.www>scp://people.apache.org/www/james.apache.org/</james.www>
-    <!-- Project specific location, allowing specific override -->
-    <james.jsieve.www>${james.www}/jsieve/</james.jsieve.www>
-    <!-- Overridding this value allows single set of loopback settings to be maintained -->
-    <james.www.id>jsieve-website</james.www.id>
-  </properties>
-
-  <distributionManagement>
-    <site>
-      <id>${james.www.id}</id>
-      <url>${james.jsieve.www}/main</url>
-    </site>
-  </distributionManagement>
-
-
-  <issueManagement>
-    <system>JIRA</system>
-    <url>http://issues.apache.org/jira/browse/JSIEVE</url>
-  </issueManagement>
-
-  <scm>
-    <connection>scm:svn:http://svn.apache.org/repos/asf/james/jsieve/tags/jsieve-project-0.4</connection>
-    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/james/jsieve/tags/jsieve-project-0.4</developerConnection>
-    <url>http://svn.apache.org/viewvc/james/jsieve/tags/jsieve-project-0.4</url>
-  </scm>
-  
-  <repositories>
-  	<!-- enable central that is otherwise disabled by the parent pom. -->
-  	<repository>
-  		<id>central</id>
-  		<url>http://repo1.maven.org/maven2</url>
-  		<releases>
-  			<enabled>true</enabled>
-  		</releases>
-  	</repository>
-  </repositories>
-
-  <dependencies>
-    <dependency>
-      <groupId>commons-logging</groupId>
-      <artifactId>commons-logging</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    
-    <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>javax.mail</groupId>
-      <artifactId>mail</artifactId>
-      <scope>test</scope>
-    </dependency>
-    
-    <dependency>
-      <groupId>javax.activation</groupId>
-      <artifactId>activation</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-  </dependencies>
-
-  <build>
-    <resources>
-      <resource>
-        <directory>src/main/resources</directory>
-      </resource>
-    </resources>
-    
-    <plugins>    
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>javacc-maven-plugin</artifactId>
-        <version>2.5</version>
-        <executions>
-          <execution>
-            <id>generate-jjtree</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>jjtree-javacc</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>rat-maven-plugin</artifactId>
-      </plugin>
-      <plugin>
-      	<groupId>org.apache.felix</groupId>
-      	<artifactId>maven-bundle-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-doap-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
-
-  <reporting>
-    <plugins>
-      <plugin>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.4.3</version>
-      </plugin>
-      <plugin>
-        <artifactId>maven-surefire-report-plugin</artifactId>
-        <version>2.4.3</version>
-      </plugin> 
-      <plugin>
-        <artifactId>maven-javadoc-plugin</artifactId>
-        <version>2.4</version>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jxr-plugin</artifactId>
-        <version>2.1</version>
-      </plugin>
-      <plugin>
-        <artifactId>maven-pmd-plugin</artifactId>
-        <version>2.4</version>
-        <configuration>
-          <targetJdk>1.5</targetJdk>
-          <rulesets>
-            <ruleset>/rulesets/basic.xml</ruleset>
-            <ruleset>/rulesets/controversial.xml</ruleset>
-          </rulesets>
-          <format>xml</format>
-          <linkXref>true</linkXref>
-          <sourceEncoding>utf-8</sourceEncoding>
-          <minimumTokens>100</minimumTokens>
-        </configuration>
-      </plugin>
-      <plugin>
-        <artifactId>maven-site-plugin</artifactId>
-        <version>2.0-beta-7</version>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>rat-maven-plugin</artifactId>
-        <version>1.0-alpha-3</version>
-        <configuration>
-          <excludes>
-            <exclude>NOTICE.base</exclude>
-            <exclude>LICENSE.apache</exclude>
-            <exclude>release.properties</exclude>
-          </excludes>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>taglist-maven-plugin</artifactId>
-        <version>2.2</version>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>javacc-maven-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </reporting>
-  
-  <mailingLists>
-    <mailingList>
-      <name>Apache James User</name>
-      <subscribe>server-user-subscribe@james.apache.org</subscribe>
-      <unsubscribe>server-user-unsubscribe@james.apache.org</unsubscribe>
-      <post>server-user@james.apache.org</post>
-      <archive>http://mail-archives.apache.org/mod_mbox/james-server-user/</archive>
-    </mailingList>
-    <mailingList>
-      <name>Apache James Developer</name>
-      <subscribe>server-dev-subscribe@james.apache.org</subscribe>
-      <unsubscribe>server-dev-unsubscribe@james.apache.org</unsubscribe>
-      <post>server-dev@james.apache.org</post>
-      <archive>http://mail-archives.apache.org/mod_mbox/james-server-dev/</archive>
-    </mailingList>
-  </mailingLists>
-
-</project>
diff --git a/trunk/main/src/main/appended-resources/supplemental-models.xml b/trunk/main/src/main/appended-resources/supplemental-models.xml
deleted file mode 100644
index bdb831b..0000000
--- a/trunk/main/src/main/appended-resources/supplemental-models.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<supplementalDataModels>
-  <!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-  
-  http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed  under the  License is distributed on an "AS IS" BASIS,
-  WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
-  implied.
-  
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-  <!-- Also added manually in pom.xml appeneded text because test
-       dependencies are not automatically included by the NOTICE 
-       generator -->
-  <supplement>
-    <project>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <name>JUnit</name>
-      <url>http://www.junit.org/</url>
-      <organization>
-      	<name>Kent Beck, Erich Gamma, and David Saff</name>
-      </organization>
-      <licenses>
-        <license>
-          <name>Common Public License Version 1.0</name>
-          <url>http://www.opensource.org/licenses/cpl.php</url>
-        </license>
-      </licenses>
-    </project>
-  </supplement>
-</supplementalDataModels>
\ No newline at end of file
diff --git a/trunk/main/src/main/java/org/apache/jsieve/Argument.java b/trunk/main/src/main/java/org/apache/jsieve/Argument.java
deleted file mode 100644
index 023471d..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/Argument.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-/**
- * A simple Interface for Arguments.
- * 
- * Creation Date: 24-Nov-03
- */
-public interface Argument {
-    /**
-     * Method getValue answers the value of the receiver's Argument.
-     * 
-     * @return Object
-     */
-    public Object getValue();
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/Arguments.java b/trunk/main/src/main/java/org/apache/jsieve/Arguments.java
deleted file mode 100644
index e3ce2a6..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/Arguments.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * <p>
- * A parsed representation of the RFC3028 BNF...
- * </p>
- * 
- * <code>arguments = *argument [test / test-list]</code>
- * 
- * <p>
- * Note that a test is represented as a test-list with a single element.
- * </p>
- * 
- */
-public class Arguments {
-    /**
-     * A List of the parsed Arguments
-     */
-    private List<Argument> fieldArgumentList;
-
-    /**
-     * The parsed tests
-     */
-    private TestList fieldTestList;
-
-    /**
-     * Constructor for Arguments.
-     */
-    private Arguments() {
-        super();
-    }
-
-    /**
-     * Constructor for Arguments.
-     * 
-     * @param arguments
-     * @param testList
-     */
-    public Arguments(List<Argument> arguments, TestList testList) {
-        this();
-        setArgumentList(arguments);
-        setTestList(testList);
-    }
-
-    /**
-     * Returns the arguments.
-     * 
-     * @return List
-     */
-    public List<Argument> getArgumentList() {
-        return fieldArgumentList;
-    }
-
-    /**
-     * Returns the testList, lazily initialised if required.
-     * 
-     * @return TestList
-     */
-    public TestList getTestList() {
-        TestList testList = null;
-        if (null == (testList = getTestListBasic())) {
-            updateTestList();
-            return getTestList();
-        }
-        return testList;
-    }
-
-    /**
-     * Returns true if there is a TestList and it has Tests. Saves triggering
-     * lazy initialisation.
-     * 
-     * @return boolean
-     */
-    public boolean hasTests() {
-        TestList testList = getTestListBasic();
-        return null != testList && !testList.isEmpty();
-    }
-
-    /**
-     * Returns the testList.
-     * 
-     * @return TestList
-     */
-    private TestList getTestListBasic() {
-        return fieldTestList;
-    }
-
-    /**
-     * Computes the testList.
-     * 
-     * @return TestList
-     */
-    protected TestList computeTestList() {
-        return new TestList(new ArrayList<Test>());
-    }
-
-    /**
-     * Sets the arguments.
-     * 
-     * @param arguments
-     *            The arguments to set
-     */
-    protected void setArgumentList(List<Argument> arguments) {
-        fieldArgumentList = arguments;
-    }
-
-    /**
-     * Sets the testList.
-     * 
-     * @param testList
-     *            The testList to set
-     */
-    protected void setTestList(TestList testList) {
-        fieldTestList = testList;
-    }
-
-    /**
-     * Updates the TestList
-     */
-    protected void updateTestList() {
-        setTestList(computeTestList());
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return "Arguments: " + getArgumentList().toString() + " Tests: "
-                + (hasTests() ? getTestList().toString() : "null");
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/BaseSieveContext.java b/trunk/main/src/main/java/org/apache/jsieve/BaseSieveContext.java
deleted file mode 100644
index 3949f1d..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/BaseSieveContext.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import org.apache.commons.logging.Log;
-
-/**
- * Bean based implementation of context.
- * 
- */
-public class BaseSieveContext extends SieveContext {
-
-    private ScriptCoordinate coordinate;
-
-    private ConditionManager conditionManager;
-
-    private final CommandStateManager commandStateManager;
-
-    private final CommandManager commandManager;
-
-    private final ComparatorManager comparatorManager;
-
-    private final TestManager testManager;
-
-    private final Log log;
-
-    public BaseSieveContext(final CommandManager commandManager,
-            final ComparatorManager comparatorManager,
-            final TestManager testManager, final Log log) {
-        this.commandStateManager = new CommandStateManager();
-        this.conditionManager = new ConditionManager();
-        this.testManager = testManager;
-        this.commandManager = commandManager;
-        this.comparatorManager = comparatorManager;
-        this.log = log;
-    }
-
-    /**
-     * Gets the script position of the current operation.
-     * 
-     * @return <code>ScriptCoordinate</code>, not null
-     */
-    @Override
-    public ScriptCoordinate getCoordinate() {
-        return coordinate;
-    }
-
-    /**
-     * Sets the script position of the current operation.
-     * 
-     * @param coordinate
-     *            <code>ScriptCoordinate</code>, not null
-     */
-    @Override
-    public void setCoordinate(ScriptCoordinate coordinate) {
-        this.coordinate = coordinate;
-        if (coordinate != null) {
-            coordinate.setLog(getLog());
-        }
-    }
-
-    /**
-     * @see SieveContext#getCommandStateManager()
-     */
-    @Override
-    public CommandStateManager getCommandStateManager() {
-        return commandStateManager;
-    }
-
-    /**
-     * @see SieveContext#getConditionManager()
-     */
-    @Override
-    public ConditionManager getConditionManager() {
-        return conditionManager;
-    }
-
-    /**
-     * @see SieveContext#setConditionManager(ConditionManager)
-     */
-    @Override
-    public void setConditionManager(ConditionManager conditionManager) {
-        this.conditionManager = conditionManager;
-    }
-
-    /**
-     * @see SieveContext#getLog()
-     */
-    @Override
-    public Log getLog() {
-        return log;
-    }
-
-    /**
-     * @see SieveContext#getComparatorManager()
-     */
-    @Override
-    public ComparatorManager getComparatorManager() {
-        return comparatorManager;
-    }
-
-    /**
-     * @see SieveContext#getCommandManager()
-     */
-    @Override
-    public CommandManager getCommandManager() {
-        return commandManager;
-    }
-
-    /**
-     * @see SieveContext#getTestManager()
-     */
-    @Override
-    public TestManager getTestManager() {
-        return testManager;
-    }
-    
-    
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/Block.java b/trunk/main/src/main/java/org/apache/jsieve/Block.java
deleted file mode 100644
index 8267c9c..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/Block.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.mail.MailAdapter;
-
-/**
- * <p>
- * A parsed representation of the RFC3028 BNF...
- * </p>
- * 
- * <code>block = "{" commands "}"</code>
- * 
- */
-public class Block implements Executable {
-    /**
-     * The chilren of the Block
-     */
-    private Commands fieldChildren;
-
-    /**
-     * Constructor for Block.
-     */
-    private Block() {
-        super();
-    }
-
-    /**
-     * Constructor for Block.
-     * 
-     * @param commands
-     */
-    public Block(Commands commands) {
-        this();
-        setChildren(commands);
-    }
-
-    /**
-     * Returns the commands.
-     * 
-     * @return Commands
-     */
-    public Commands getChildren() {
-        return fieldChildren;
-    }
-
-    /**
-     * Sets the commands.
-     * 
-     * @param commands
-     *            The commands to set
-     */
-    protected void setChildren(Commands commands) {
-        fieldChildren = commands;
-    }
-
-    /**
-     * @see org.apache.jsieve.Executable#execute(MailAdapter, SieveContext)
-     */
-    public Object execute(MailAdapter mail, SieveContext context)
-            throws SieveException {
-        return getChildren().execute(mail, context);
-    }
-
-    public String toString() {
-        return "BLOCK: " + getChildren();
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/Command.java b/trunk/main/src/main/java/org/apache/jsieve/Command.java
deleted file mode 100644
index 3b6822b..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/Command.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import org.apache.commons.logging.Log;
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.mail.MailAdapter;
-
-/**
- * <p>
- * A parsed representation of the RFC3028 BNF...
- * </p>
- * 
- * <code>command = identifier arguments ( ";" / block )</code>
- */
-public class Command implements Executable {
-
-    /** The name of this Command */
-    private String fieldName;
-
-    /** The Arguments for this Command */
-    private Arguments fieldArguments;
-
-    /** The Block for this Command */
-    private Block fieldBlock;
-
-    /**
-     * Script coordinate for this command. Commands are executed after the
-     * document has been parse. So this must be recorded on construction and
-     * stored for later use.
-     */
-    private ScriptCoordinate coordinate;
-
-    /**
-     * Constructor for Test.
-     */
-    private Command() {
-        super();
-    }
-
-    /**
-     * Constructor for Command.
-     * 
-     * @param name
-     * @param arguments
-     * @param block
-     */
-    public Command(String name, Arguments arguments, Block block,
-            ScriptCoordinate coordinate) {
-        this();
-        this.coordinate = coordinate;
-        setName(name);
-        setArguments(arguments);
-        setBlock(block);
-    }
-
-    /**
-     * Returns the name.
-     * 
-     * @return String
-     */
-    public String getName() {
-        return fieldName;
-    }
-
-    /**
-     * Sets the name.
-     * 
-     * @param name
-     *            The name to set
-     */
-    protected void setName(String name) {
-        fieldName = name;
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return "Command name: "
-                + getName()
-                + " "
-                + ((getArguments() == null) ? "null" : getArguments()
-                        .toString()) + " Block: "
-                + ((getBlock() == null) ? "null" : getBlock().toString());
-    }
-
-    /**
-     * Returns the arguments.
-     * 
-     * @return Arguments
-     */
-    public Arguments getArguments() {
-        return fieldArguments;
-    }
-
-    /**
-     * Returns the block.
-     * 
-     * @return Block
-     */
-    public Block getBlock() {
-        return fieldBlock;
-    }
-
-    /**
-     * Sets the arguments.
-     * 
-     * @param arguments
-     *            The arguments to set
-     */
-    protected void setArguments(Arguments arguments) {
-        fieldArguments = arguments;
-    }
-
-    /**
-     * Sets the block.
-     * 
-     * @param block
-     *            The block to set
-     */
-    protected void setBlock(Block block) {
-        fieldBlock = block;
-    }
-
-    /**
-     * @see org.apache.jsieve.Executable#execute(MailAdapter, SieveContext)
-     */
-    public Object execute(MailAdapter mail, SieveContext context)
-            throws SieveException {
-        Log log = context.getLog();
-        if (log.isDebugEnabled()) {
-            log.debug(toString());
-            coordinate.debugDiagnostics(log);
-        }
-        // commands are executed after the parsing phase
-        // recursively from the top level block
-        // so need to use the coordinate recorded from the parse
-        context.setCoordinate(coordinate);
-        final ExecutableCommand executable = context.getCommandManager().getCommand(getName());
-        final Object result = executable.execute(mail, getArguments(),
-                getBlock(), context);
-        return result;
-    }
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/CommandManager.java b/trunk/main/src/main/java/org/apache/jsieve/CommandManager.java
deleted file mode 100644
index 5f5ce8c..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/CommandManager.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import org.apache.jsieve.exception.LookupException;
-
-/**
- * <p>Maps Command names to configured Command implementation classes.</p>
- * <h4>Thread Safety</h4>
- * <p>
- * Implementation dependent. {@link CommandManagerImpl} is a thread safe implementation.
- * </p>
- */
-public interface CommandManager {
-
-    /**
-     * <p>Gets an instance of a command by name.</p>
-     * 
-     * @param name -
-     *            The name of the Command
-     * @return command, not null
-     * @throws LookupException
-     */
-    public ExecutableCommand getCommand(String name) throws LookupException;
-
-    /**
-     * Method isSupported answers a boolean indicating if a Command name is
-     * configured.
-     * 
-     * @param name -
-     *            The Command name
-     * @return boolean - True if the Command name is configured.
-     */
-    public boolean isCommandSupported(String name);
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/CommandManagerImpl.java b/trunk/main/src/main/java/org/apache/jsieve/CommandManagerImpl.java
deleted file mode 100644
index 42d22cb..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/CommandManagerImpl.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import java.util.concurrent.ConcurrentMap;
-
-import org.apache.jsieve.exception.LookupException;
-
-/**
- * <p>Maps command names to comman implementations.</p>
- * <h4>Thread Safety</h4>
- * <p>
- * Instances may safely be accessed concurrently by multiple threads.
- * </p>
- */
-public class CommandManagerImpl implements CommandManager {
-
-    private final ConcurrentMap<String, String> classNameMap;
-
-    /**
-     * Constructor for CommandManager.
-     */
-    public CommandManagerImpl(final ConcurrentMap<String, String> classNameMap) {
-        super();
-        this.classNameMap = classNameMap;
-    }
-
-    /**
-     * <p>
-     * Method lookup answers the class to which a Command name is mapped.
-     * </p>
-     * 
-     * @param name -
-     *            The name of the Command
-     * @return Class - The class of the Command
-     * @throws LookupException
-     */
-    private Class lookup(String name) throws LookupException {
-        Class cmdClass = null;
-        try {
-            cmdClass = getClass().getClassLoader()
-                    .loadClass(getClassName(name));
-        } catch (ClassNotFoundException e) {
-            throw new LookupException("Command named '" + name + "' not found.");
-        }
-        if (!ExecutableCommand.class.isAssignableFrom(cmdClass))
-            throw new LookupException("Class " + cmdClass.getName()
-                    + " must implement " + ExecutableCommand.class.getName());
-        return cmdClass;
-    }
-
-    /**
-     * <p>
-     * Method newInstance answers an instance of the class to which a Command
-     * name is mapped.
-     * </p>
-     * 
-     * @param name -
-     *            The name of the Command
-     * @return Class - The class of the Command
-     * @throws LookupException
-     */
-    public ExecutableCommand getCommand(String name) throws LookupException {
-        try {
-            return (ExecutableCommand) lookup(name).newInstance();
-        } catch (InstantiationException e) {
-            throw new LookupException(e.getMessage());
-        } catch (IllegalAccessException e) {
-            throw new LookupException(e.getMessage());
-        }
-    }
-
-    /**
-     * Method isSupported answers a boolean indicating if a Command name is
-     * configured.
-     * 
-     * @param name -
-     *            The Command name
-     * @return boolean - True if the Command name is configured.
-     */
-    public boolean isCommandSupported(String name) {
-        boolean isSupported = false;
-        try {
-            lookup(name);
-            isSupported = true;
-        } catch (LookupException e) {
-        }
-        return isSupported;
-    }
-
-    /**
-     * <p>
-     * Method getClassName answers the name of the class to which a Command name
-     * is mapped.
-     * </p>
-     * 
-     * @param name -
-     *            The name of the Command
-     * @return String - The name of the class
-     * @throws LookupException
-     */
-    protected String getClassName(String name) throws LookupException {
-        final String className = classNameMap.get(name.toLowerCase());
-        if (null == className)
-            throw new LookupException("Command named '" + name
-                    + "' not mapped.");
-        return className;
-    }
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/CommandStateManager.java b/trunk/main/src/main/java/org/apache/jsieve/CommandStateManager.java
deleted file mode 100644
index e4eda37..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/CommandStateManager.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-/**
- * Thread singleton class CommandStateManager records the state of a Sieve
- * evaluation.
- */
-public class CommandStateManager {
-
-    /**
-     * The evaluated script is processing Prolog Commands
-     */
-    private boolean fieldInProlog = true;
-
-    /**
-     * The evaluated script has rejected the mail
-     */
-    private boolean fieldRejected = false;
-
-    /**
-     * The evaluated script must keep the mail
-     */
-    private boolean fieldImplicitKeep = true;
-
-    /**
-     * The evaluation has processed Action Commands
-     */
-    private boolean fieldHasActions = false;
-
-    /**
-     * Constructor for CommandStateManager.
-     */
-    public CommandStateManager() {
-        super();
-        initialize();
-    }
-
-    /**
-     * Initialize the receiver.
-     */
-    protected void initialize() {
-        setInProlog(true);
-        setRejected(false);
-        setHasActions(false);
-        setImplicitKeep(true);
-    }
-
-    /**
-     * Returns the hasActions.
-     * 
-     * @return boolean
-     */
-    public boolean isHasActions() {
-        return fieldHasActions;
-    }
-
-    /**
-     * Returns the inProlog.
-     * 
-     * @return boolean
-     */
-    public boolean isInProlog() {
-        return fieldInProlog;
-    }
-
-    /**
-     * Returns the isRejected.
-     * 
-     * @return boolean
-     */
-    public boolean isRejected() {
-        return fieldRejected;
-    }
-
-    /**
-     * Sets the hasActions.
-     * 
-     * @param hasActions
-     *            The hasActions to set
-     */
-    public void setHasActions(boolean hasActions) {
-        fieldHasActions = hasActions;
-    }
-
-    /**
-     * Sets the inProlog.
-     * 
-     * @param inProlog
-     *            The inProlog to set
-     */
-    public void setInProlog(boolean inProlog) {
-        fieldInProlog = inProlog;
-    }
-
-    /**
-     * Sets the isRejected.
-     * 
-     * @param isRejected
-     *            The isRejected to set
-     */
-    public void setRejected(boolean isRejected) {
-        fieldRejected = isRejected;
-    }
-
-    /**
-     * Returns the implicitKeep.
-     * 
-     * @return boolean
-     */
-    public boolean isImplicitKeep() {
-        return fieldImplicitKeep;
-    }
-
-    /**
-     * Sets the implicitKeep.
-     * 
-     * @param implicitKeep
-     *            The implicitKeep to set
-     */
-    public void setImplicitKeep(boolean implicitKeep) {
-        fieldImplicitKeep = implicitKeep;
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/Commands.java b/trunk/main/src/main/java/org/apache/jsieve/Commands.java
deleted file mode 100644
index 7390c7a..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/Commands.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import java.util.List;
-
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.mail.MailAdapter;
-
-/**
- * <p>
- * A parsed representation of the RFC3028 BNF...
- * </p>
- * 
- * <code>commands = *command</code>
- * 
- */
-public class Commands implements Executable {
-    /**
-     * A List of children of the receiver
-     */
-    private List<Command> fieldChildren;
-
-    /**
-     * Constructor for Commands.
-     */
-    private Commands() {
-        super();
-    }
-
-    /**
-     * Constructor for Commands.
-     * 
-     * @param commands
-     */
-    public Commands(List<Command> commands) {
-        this();
-        setChildren(commands);
-    }
-
-    /**
-     * Returns the commands.
-     * 
-     * @return List
-     */
-    public List<Command> getChildren() {
-        return fieldChildren;
-    }
-
-    /**
-     * Sets the commands.
-     * 
-     * @param commands
-     *            The commands to set
-     */
-    protected void setChildren(List<Command> commands) {
-        fieldChildren = commands;
-    }
-
-    /**
-     * @see org.apache.jsieve.Executable#execute(MailAdapter, SieveContext)
-     */
-    public Object execute(MailAdapter mail, SieveContext context)
-            throws SieveException {
-        for (Command command:fieldChildren) {
-            command.execute(mail, context);
-        };
-        return null;
-    }
-
-    public String toString() {
-        return "COMMANDS: " + fieldChildren;
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/ComparatorManager.java b/trunk/main/src/main/java/org/apache/jsieve/ComparatorManager.java
deleted file mode 100644
index 067657e..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/ComparatorManager.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import org.apache.jsieve.comparators.Comparator;
-import org.apache.jsieve.exception.LookupException;
-
-/**
- * <p>Maps Comparator names to configured Comparator implementation classes.</p>
- * <h4>Thread Safety</h4>
- * <p>
- * Implementation dependent. {@link ComparatorManagerImpl} is a thread safe implementation.
- * </p>
- */
-public interface ComparatorManager {
-    
-    /**
-     * <p>Gets a comparator by name.</p>
-     * 
-     * @param name -
-     *            The (logical) name of the Comparator
-     * @return a comparator, not null
-     * @throws LookupException
-     */
-    public Comparator getComparator(String name) throws LookupException;
-    
-    /**
-     * Is an explicit declaration in a <code>require</code> statement
-     * unnecessary for this comparator?
-     * @param comparatorName not null
-     * @return true when this comparator need not be declared by <core>require</code>,
-     * false when any usage of this comparator must be declared in a <code>require</code> statement
-     */
-    public boolean isImplicitlyDeclared(final String comparatorName);
-    
-    /**
-     * Is the comparator with the given name supported?
-     * @param name not null
-     * @return true when supported, false otherwise
-     */
-    public boolean isSupported(String name);
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/ComparatorManagerImpl.java b/trunk/main/src/main/java/org/apache/jsieve/ComparatorManagerImpl.java
deleted file mode 100644
index b31f46e..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/ComparatorManagerImpl.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import static org.apache.jsieve.Constants.COMPARATOR_ASCII_CASEMAP_NAME;
-import static org.apache.jsieve.Constants.COMPARATOR_OCTET_NAME;
-
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.CopyOnWriteArraySet;
-
-import org.apache.jsieve.comparators.Comparator;
-import org.apache.jsieve.exception.LookupException;
-
-/**
- * <p>Maps Comparator names to configured Comparator implementation classes.</p>
- * <h4>Thread Safety</h4>
- * <p>
- * Instances may safely be accessed concurrently by multiple threads.
- * </p>
- */
-public class ComparatorManagerImpl implements ComparatorManager {
-
-    /** 
-     * Constructs a set containing the names of those comparisons for which <code>require</code> 
-     * is not necessary before usage, according to RFC5228.
-     * See <a href='http://tools.ietf.org/html/rfc5228#section-2.7.3'>RFC5228, 2.7.3 Comparators</a>. 
-     */
-    public static CopyOnWriteArraySet<String> standardDefinedComparators() {
-        final CopyOnWriteArraySet<String> results = new CopyOnWriteArraySet<String>();
-        results.add(COMPARATOR_OCTET_NAME);
-        results.add(COMPARATOR_ASCII_CASEMAP_NAME);
-        return results;
-    }
-    
-    private final ConcurrentMap<String, String> classNameMap;
-    /** 
-     * The names of those comparisons for which <code>require</code> is not necessary before usage.
-     * See <a href='http://tools.ietf.org/html/rfc5228#section-2.7.3'>RFC5228, 2.7.3 Comparators</a>. 
-     */
-    private final CopyOnWriteArraySet<String> implicitlyDeclared;
-
-    /**
-     * Constructs a manager with the standard comparators implicitly defined.
-     * @param classNameMap not null
-     */
-    public ComparatorManagerImpl(final ConcurrentMap<String, String> classNameMap) {
-        this(classNameMap, standardDefinedComparators());
-    }
-    
-    /**
-     * Constructor for ComparatorManager.
-     * @param classNameMap indexes names of implementation classes against logical names, not null
-     * @param implicitlyDeclared names of those comparisons for which <code>require</code> is not necessary before usage
-     */
-    public ComparatorManagerImpl(final ConcurrentMap<String, String> classNameMap, final CopyOnWriteArraySet<String> implicitlyDeclared) {
-        super();
-        this.classNameMap = classNameMap;
-        this.implicitlyDeclared = implicitlyDeclared;
-    }
-    
-    /**
-     * Is an explicit declaration in a <code>require</code> statement
-     * unnecessary for this comparator?
-     * @param comparatorName not null
-     * @return true when this comparator need not be declared by <core>require</code>,
-     * false when any usage of this comparator must be declared in a <code>require</code> statement
-     */
-    public boolean isImplicitlyDeclared(final String comparatorName) {
-        return implicitlyDeclared.contains(comparatorName);
-    }
-
-    /**
-     * <p>
-     * Method lookup answers the class to which a Comparator name is mapped.
-     * </p>
-     * 
-     * @param name -
-     *            The name of the Comparator
-     * @return Class - The class of the Comparator
-     * @throws LookupException
-     */
-    public Class lookup(String name) throws LookupException {
-        Class comparatorClass = null;
-        try {
-            comparatorClass = getClass().getClassLoader().loadClass(
-                    getClassName(name));
-        } catch (ClassNotFoundException e) {
-            throw new LookupException("Comparator named '" + name
-                    + "' not found.");
-        }
-        if (!Comparator.class.isAssignableFrom(comparatorClass))
-            throw new LookupException("Class " + comparatorClass.getName()
-                    + " must implement " + Comparator.class.getName());
-        return comparatorClass;
-    }
-
-    /**
-     * <p>
-     * Method newInstance answers an instance of the class to which a Comparator
-     * name is mapped.
-     * </p>
-     * 
-     * @param name -
-     *            The name of the Comparator
-     * @return Class - The class of the Comparator
-     * @throws LookupException
-     */
-    public Comparator getComparator(String name) throws LookupException {
-        try {
-            return (Comparator) lookup(name).newInstance();
-        } catch (InstantiationException e) {
-            throw new LookupException(e.getMessage());
-        } catch (IllegalAccessException e) {
-            throw new LookupException(e.getMessage());
-        }
-    }
-
-    /**
-     * <p>
-     * Method getClassName answers the name of the class to which a Comparator
-     * name is mapped.
-     * </p>
-     * 
-     * @param name -
-     *            The name of the Comparator
-     * @return String - The name of the class
-     * @throws LookupException
-     */
-    private String getClassName(String name) throws LookupException {
-        String className = classNameMap.get(name.toLowerCase());
-        if (null == className)
-            throw new LookupException("Comparator named '" + name
-                    + "' not mapped.");
-        return className;
-    }
-
-    /**
-     * @see ComparatorManager#isSupported(String)
-     */
-    public boolean isSupported(String name) {
-        try {
-            getComparator(name);
-            return true;
-        } catch (LookupException e) {
-            return false;
-        }
-    }
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/ConditionManager.java b/trunk/main/src/main/java/org/apache/jsieve/ConditionManager.java
deleted file mode 100644
index 13749a8..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/ConditionManager.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-/**
- * Thread singleton class ConditionManager manages Conditional Commands during a
- * Sieve evaluation.
- */
-public class ConditionManager {
-
-    /**
-     * Is an Else Condition allowed
-     */
-    private boolean fieldElseAllowed;
-
-    /**
-     * The result of the last Test
-     */
-    private boolean fieldTestResult;
-
-    /**
-     * Constructor for ConditionManager.
-     */
-    public ConditionManager() {
-        super();
-        initialize();
-    }
-
-    /**
-     * Initialize the receiver.
-     */
-    protected void initialize() {
-        setElseAllowed(false);
-        setTestResult(true);
-    }
-
-    /**
-     * Method setIfTestResult enables a following Else Command and records the
-     * test result.
-     * 
-     * @param result
-     */
-    public void setIfTestResult(boolean result) {
-        setElseAllowed(true);
-        setTestResult(result);
-    }
-
-    /**
-     * Method setElsifTestResult enables a following Else Command and records
-     * the test result.
-     * 
-     * @param result
-     */
-    public void setElsifTestResult(boolean result) {
-        setElseAllowed(true);
-        setTestResult(result);
-    }
-
-    /**
-     * Method setElseTestResult disables a following Else Command and records
-     * the test result.
-     * 
-     * @param result
-     */
-    public void setElseTestResult(boolean result) {
-        setElseAllowed(false);
-        setTestResult(result);
-    }
-
-    /**
-     * Method isIfAllowed answers a boolean indicating if an If Command is
-     * allowed.
-     * 
-     * @return boolean
-     */
-    public boolean isIfAllowed() {
-        return true;
-    }
-
-    /**
-     * Method isElsifAllowed answers a boolean indicating if an Elsif Command is
-     * allowed.
-     * 
-     * @return boolean
-     */
-    public boolean isElsifAllowed() {
-        return isElseAllowed();
-    }
-
-    /**
-     * Method isElseAllowed answers a boolean indicating if an Else Command is
-     * allowed.
-     * 
-     * @return boolean
-     */
-    public boolean isElseAllowed() {
-        return fieldElseAllowed;
-    }
-
-    /**
-     * Method isIfRunnable answers a boolean indicating if an If Command is
-     * runnable based upon the current evaluation state.
-     * 
-     * @return boolean
-     */
-    public boolean isIfRunnable() {
-        return true;
-    }
-
-    /**
-     * Method isElsifRunnable answers a boolean indicating if an Elsif Command
-     * is runnable based upon the current evaluation state.
-     * 
-     * @return boolean
-     */
-    public boolean isElsifRunnable() {
-        return isElseRunnable();
-    }
-
-    /**
-     * Method isElseRunnable answers a boolean indicating if an Else Command is
-     * runnable based upon the current evaluation state.
-     * 
-     * @return boolean
-     */
-    public boolean isElseRunnable() {
-        return !isTestResult();
-    }
-
-    /**
-     * Returns the testResult.
-     * 
-     * @return boolean
-     */
-    protected boolean isTestResult() {
-        return fieldTestResult;
-    }
-
-    /**
-     * Sets the elseAllowed.
-     * 
-     * @param elseAllowed
-     *            The elseAllowed to set
-     */
-    protected void setElseAllowed(boolean elseAllowed) {
-        fieldElseAllowed = elseAllowed;
-    }
-
-    /**
-     * Sets the testResult.
-     * 
-     * @param testResult
-     *            The testResult to set
-     */
-    protected void setTestResult(boolean testResult) {
-        fieldTestResult = testResult;
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/ConfigurationManager.java b/trunk/main/src/main/java/org/apache/jsieve/ConfigurationManager.java
deleted file mode 100644
index fbbd056..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/ConfigurationManager.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Map;
-import java.util.Properties;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.xml.sax.SAXException;
-
-/**
- * <p>
- * <code>ConfigurationManager</code> parses the XML statements
- * in the Sieve configuration file and translates them to Java objects.
- * </p>
- * <p>
- * The Sieve configuration is read from 3 properties files
- * </p>
- * <ul>
- * <li><code>org/apache/jsieve/commandsmap.properties</code></li>
- * <li><code>org/apache/jsieve/testsmap.properties</code></li>
- * <li><code>org/apache/jsieve/comparatorsmap.properties</code></li>
- * </ul>
- * <p>They are located by searching the classpath of the current ClassLoader.
- * </p>
- * <h4>Thread Safety</h4>
- * <p>
- * Each configuration manager instance may be safely accessed by concurrent threads.
- * </p>
- * <p>
- * The managers constructed by 
- * </p>
- * <ul>
- * <li>{@link #getCommandManager()}</li> 
- * <li>{@link #getComparatorManager()}</li>
- * <li>{@link #getTestManager()}</li>
- * </ul>
- * <p>
- * and the {@link SieveFactory} built by
- * </p>
- * <ul>
- * <li>{@link #build()}</li>
- * </ul>
- * <p>
- * may be safely shared by multiple threads.
- * </p>
- */
-public class ConfigurationManager {
-
-    private static final int DEFAULT_INITIAL_CONCURRENCY_LEVEL = 8;
-
-    private static final String COMMANDSMAP_PROPERTIES = "org/apache/jsieve/commandsmap.properties";
-
-    private static final String TESTSMAP_PROPERTIES = "org/apache/jsieve/testsmap.properties";
-
-    private static final String COMPARATORSMAP_PROPERTIES = "org/apache/jsieve/comparatorsmap.properties";
-
-    /**
-     * A Map of the Command names and their associated class names.
-     */
-    private ConcurrentMap<String, String> fieldCommandMap;
-
-    /**
-     * A Map of the Test names and their associated class names.
-     */
-    private ConcurrentMap<String, String> fieldTestMap;
-
-    /**
-     * A Map of the Comparator names and their associated class names.
-     */
-    private ConcurrentMap<String, String> fieldComparatorMap;
-    
-    /**
-     * The initial size for the {@link ConcurrentHashMap} concurrency level.
-     */
-    private int initialConcurrencyLevel = DEFAULT_INITIAL_CONCURRENCY_LEVEL;
-
-    private static final Log LOG = LogFactory.getLog("org.apache.jsieve");
-
-    private Log log = LOG;
-    
-    /**
-     * Constructor for ConfigurationManager.
-     * 
-     * @throws SieveConfigurationException
-     */
-    public ConfigurationManager() throws SieveConfigurationException {
-        super();
-        try {
-            parse();
-        } catch (SAXException e) {
-            if (log.isErrorEnabled())
-                log.error("Exception processing Configuration: ", e);
-            throw new SieveConfigurationException(e);
-        } catch (IOException e) {
-            if (log.isErrorEnabled())
-                log.error("Exception processing Configuration: ", e);
-            throw new SieveConfigurationException(e);
-        }
-    }
-
-    /**
-     * Gets the current initial size for the {@link ConcurrentHashMap} concurrency level.
-     * @return number of concurrent threads estimated for initial sizing
-     */
-    public int getInitialConcurrencyLevel() {
-        return initialConcurrencyLevel;
-    }
-
-    /**
-     * Sets the current initial size for the {@link ConcurrentHashMap} concurrency level.
-     * @param initialConcurrencyLevel number of concurrent threads estimated for initial sizing
-     */
-    public void setInitialConcurrencyLevel(int initialConcurrencyLevel) {
-        this.initialConcurrencyLevel = initialConcurrencyLevel;
-    }
-
-
-
-    /**
-     * <p>
-     * Method getConfigStream answers an InputStream over the Sieve
-     * configuration file. It is located by searching the classpath of the
-     * current ClassLoader.
-     * </p>
-     * <p>
-     * The context classloader is searched first. If a suitably named resource
-     * is found then this is returned. Otherwise, the classloader used to load
-     * this class is searched for the resource.
-     * </p>
-     * 
-     * @return InputStream
-     * @throws IOException
-     */
-    private InputStream getConfigStream(String configName) throws IOException {
-        InputStream stream = null;
-        // Context classloader is usually right in a JEE evironment
-        final ClassLoader contextClassLoader = Thread.currentThread()
-                .getContextClassLoader();
-        if (contextClassLoader != null) {
-            stream = contextClassLoader.getResourceAsStream(configName);
-        }
-
-        // Sometimes context classloader will not be set conventionally
-        // So, try class classloader
-        if (null == stream) {
-            stream = ConfigurationManager.class.getClassLoader()
-                    .getResourceAsStream(configName);
-        }
-
-        if (null == stream)
-            throw new IOException("Resource \"" + configName + "\" not found");
-        return stream;
-    }
-
-    /**
-     * Method getCommandMap answers a Map of Command names and their associated
-     * class names, lazily initialized if required.
-     * 
-     * @return Map not null
-     */
-    public ConcurrentMap<String, String> getCommandMap() {
-        if (null == fieldCommandMap) {
-            fieldCommandMap = new ConcurrentHashMap<String, String>();
-        }
-        return fieldCommandMap;
-    }
-
-    /**
-     * Method getTestMap answers a Map of Test names and their associated class
-     * names, lazily initialized if required.
-     * 
-     * @return Map not null
-     */
-    public ConcurrentMap<String, String> getTestMap() {
-        if (null == fieldTestMap) {
-            fieldTestMap = new ConcurrentHashMap<String, String>();
-        }
-        return fieldTestMap;
-    }
-
-    /**
-     * Method getComparatorMap answers a Map of Comparator names and their
-     * associated class names, lazily initialized if required.
-     * 
-     * @return Map not null
-     */
-    public ConcurrentMap<String, String> getComparatorMap() {
-        if (null == fieldComparatorMap) {
-            fieldComparatorMap = new ConcurrentHashMap<String, String>();
-        }
-        return fieldComparatorMap;
-    }
-
-    /**
-     * Method parse uses the Digester to parse the XML statements in the Sieve
-     * configuration file into Java objects.
-     * 
-     * @throws SAXException
-     * @throws IOException
-     */
-    private void parse() throws SAXException, IOException {
-        setCommandMap(loadConfiguration(COMMANDSMAP_PROPERTIES));
-        setTestMap(loadConfiguration(TESTSMAP_PROPERTIES));
-        setComparatorMap(loadConfiguration(COMPARATORSMAP_PROPERTIES));
-    }
-
-    private ConcurrentMap<String,String> loadConfiguration(final String name) throws IOException {
-        final Properties properties = loadProperties(name);
-        final ConcurrentMap<String, String> result = 
-            new ConcurrentHashMap<String, String>(properties.size(), 1.0f, initialConcurrencyLevel);
-        for (final Map.Entry<Object, Object> entry: properties.entrySet()) {
-            result.put(entry.getKey().toString(), entry.getValue().toString());
-        }
-        return result;
-    }
-    
-    private Properties loadProperties(final String name) throws IOException {
-        final InputStream is = getConfigStream(name);
-        final Properties p = new Properties();
-        p.load(is);
-        return p;
-    }
-
-    /**
-     * Sets the commandMap.
-     * 
-     * @param commandMap
-     *            The commandMap to set
-     */
-    private void setCommandMap(ConcurrentMap<String, String> commandMap) {
-        fieldCommandMap = commandMap;
-    }
-
-    /**
-     * Sets the testMap.
-     * 
-     * @param testMap
-     *            The testMap to set
-     */
-    private void setTestMap(ConcurrentMap<String, String> testMap) {
-        fieldTestMap = testMap;
-    }
-
-    /**
-     * Sets the comparatorMap.
-     * 
-     * @param comparatorMap
-     *            The comparatorMap to set
-     */
-    private void setComparatorMap(ConcurrentMap<String, String> comparatorMap) {
-        fieldComparatorMap = comparatorMap;
-    }
-
-    public ComparatorManager getComparatorManager() {
-        return new ComparatorManagerImpl(fieldComparatorMap);
-    }
-
-    public CommandManager getCommandManager() {
-        return new CommandManagerImpl(fieldCommandMap);
-    }
-
-    public TestManager getTestManager() {
-        return new TestManagerImpl(fieldTestMap);
-    }
-
-    public Log getLog() {
-        return log;
-    }
-    
-    public void setLog(Log log) {
-        this.log = log;
-    }
-
-    public SieveFactory build() {
-        return new SieveFactory(getCommandManager(), getComparatorManager(),
-                getTestManager(), getLog());
-    }
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/Constants.java b/trunk/main/src/main/java/org/apache/jsieve/Constants.java
deleted file mode 100644
index 375dd0c..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/Constants.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-package org.apache.jsieve;
-
-public class Constants {
-
-    public static final String TAG_COMPARATOR = ":comparator";
-    
-    /** Name of the standard ascii casemap comparator. See <a href='http://tools.ietf.org/html/rfc4790'>RFC4790</a>. */
-    public static final String COMPARATOR_ASCII_CASEMAP_NAME = "i;ascii-casemap";
-    /** Name of the standard octet comparator. See <a href='http://tools.ietf.org/html/rfc4790'>RFC4790</a>. */
-    public static final String COMPARATOR_OCTET_NAME = "i;octet";
-    /** Prefix used to identify extension groups. See <a href='http://tools.ietf.org/html/rfc5228#section-6.1'>RFC5228, 6.1. Capability String</a> */
-    public static final char REQUIRE_EXTENSION_PREFIX = '-';
-    /** Prefix used to identify comparator extensions. See <a href='http://tools.ietf.org/html/rfc5228#section-6.1'>RFC5228, 6.1. Capability String</a> */
-    public static final String COMPARATOR_PREFIX = "comparator" + REQUIRE_EXTENSION_PREFIX;
-    /** Number of characters in {@link #COMPARATOR_PREFIX} */
-    public static final int COMPARATOR_PREFIX_LENGTH = COMPARATOR_PREFIX.length();
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/Executable.java b/trunk/main/src/main/java/org/apache/jsieve/Executable.java
deleted file mode 100644
index 1ab46a4..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/Executable.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.mail.MailAdapter;
-
-/**
- * Interface for an Executable operation.
- */
-public interface Executable {
-    public Object execute(MailAdapter mail, SieveContext context)
-            throws SieveException;
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/ExecutableCommand.java b/trunk/main/src/main/java/org/apache/jsieve/ExecutableCommand.java
deleted file mode 100644
index 9d88a92..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/ExecutableCommand.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.mail.MailAdapter;
-
-/**
- * Interface ExecutableCommand defines the method signatures for Sieve Commands.
- */
-public interface ExecutableCommand {
-    /**
-     * Method execute executes a Sieve Command.
-     * 
-     * @param mail -
-     *            The mail against which the Command is executed.
-     * @param arguments -
-     *            The Command arguments
-     * @param block -
-     *            An optional Block to be evaluated
-     * @param context
-     *            <code>SieveContext</code> containing contextual information,
-     *            not null
-     * @return Object - The result of evaluating the Command
-     * @throws SieveException
-     */
-    public Object execute(MailAdapter mail, Arguments arguments, Block block,
-            SieveContext context) throws SieveException;
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/NumberArgument.java b/trunk/main/src/main/java/org/apache/jsieve/NumberArgument.java
deleted file mode 100644
index a394051..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/NumberArgument.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import org.apache.jsieve.parser.generated.Token;
-
-/**
- * <p>
- * A parsed representation of the RFC3028 BNF...
- * </p>
- * 
- * <code>1*DIGIT [QUANTIFIER]</code>
- * 
- * <p>
- * Note that the stored value is the absolute value after applying the
- * quantifier.
- * </p>
- * 
- */
-public class NumberArgument implements Argument {
-
-    /**
-     * The absolute value of the number after applying the quentifier.
-     */
-    private Integer fieldValue;
-
-    /**
-     * Constructor for NumberArgument.
-     */
-    private NumberArgument() {
-        super();
-    }
-
-    /**
-     * Constructor for NumberArgument.
-     * 
-     * @param token
-     */
-    public NumberArgument(Token token) {
-        this();
-        setValue(token);
-    }
-
-    /**
-     * Sets the value of the reciver to an Integer.
-     * 
-     * @param number
-     *            The value to set
-     */
-    protected void setValue(Integer number) {
-        fieldValue = number;
-    }
-
-    /**
-     * @see org.apache.jsieve.Argument#getValue()
-     */
-    public Object getValue() {
-        return fieldValue;
-    }
-
-    /**
-     * Method getInteger answers the value of the receiver as an Integer.
-     * 
-     * @return Integer
-     */
-    public Integer getInteger() {
-        return fieldValue;
-    }
-
-    /**
-     * Sets the value of the receiver from a Token.
-     * 
-     * @param aToken
-     *            The Token from which to extract the value to set
-     */
-    protected void setValue(Token aToken) {
-        int endIndex = aToken.image.length();
-        int magnitude = 1;
-        if (aToken.image.endsWith("K")) {
-            magnitude = 1024;
-            endIndex--;
-        } else if (aToken.image.endsWith("M")) {
-            magnitude = 1048576;
-            endIndex--;
-        } else if (aToken.image.endsWith("G")) {
-            magnitude = 1073741824;
-            endIndex--;
-        }
-
-        setValue(new Integer(Integer.parseInt(aToken.image.substring(0,
-                endIndex))
-                * magnitude));
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return (getValue() == null) ? "null" : getValue().toString();
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/ScriptCoordinate.java b/trunk/main/src/main/java/org/apache/jsieve/ScriptCoordinate.java
deleted file mode 100644
index 85b841a..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/ScriptCoordinate.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import org.apache.commons.logging.Log;
-import org.apache.jsieve.exception.CommandException;
-import org.apache.jsieve.exception.SyntaxException;
-
-/**
- * Specifies the positional extent of an element within the script being
- * executed. In other words, this gives the line and column at which the elment
- * starts and at which it ends.
- */
-public final class ScriptCoordinate {
-
-    private final int startLineNumber;
-
-    private final int startColumnNumber;
-
-    private final int endLineNumber;
-
-    private final int endColumnNumber;
-
-    private Log log;
-
-    public ScriptCoordinate(final int startLineNumber,
-            final int startColumnNumber, final int endLineNumber,
-            final int endColumnNumber) {
-        super();
-        this.startLineNumber = startLineNumber;
-        this.startColumnNumber = startColumnNumber;
-        this.endLineNumber = endLineNumber;
-        this.endColumnNumber = endColumnNumber;
-    }
-
-    public Log getLog() {
-        return log;
-    }
-
-    public void setLog(Log logger) {
-        this.log = logger;
-    }
-
-    /**
-     * Gets the number of the column where the elements ends.
-     * 
-     * @return column number
-     */
-    public int getEndColumnNumber() {
-        return endColumnNumber;
-    }
-
-    /**
-     * Gets the number of the line where the element ends.
-     * 
-     * @return line number
-     */
-    public int getEndLineNumber() {
-        return endLineNumber;
-    }
-
-    /**
-     * Gets the number of the column where the element start.
-     * 
-     * @return column number
-     */
-    public int getStartColumnNumber() {
-        return startColumnNumber;
-    }
-
-    /**
-     * Gets the number of the line where the element starts.
-     * 
-     * @return line number
-     */
-    public int getStartLineNumber() {
-        return startLineNumber;
-    }
-
-    /**
-     * Creates a syntax exception based on the given message containing details
-     * of the script position. The message should end with a full stop.
-     * 
-     * @param message
-     *            <code>CharSequence</code> containing the base message, not
-     *            null
-     * @return <code>SyntaxException</code> with details of the script
-     *         position appended to the message, not null
-     */
-    public SyntaxException syntaxException(CharSequence message) {
-        if (log != null) {
-            if (log.isWarnEnabled()) {
-                log.warn(message);
-            }
-            logDiagnosticsInfo(log);
-        }
-        final String fullMessage = addStartLineAndColumn(message);
-        final SyntaxException result = new SyntaxException(fullMessage);
-        return result;
-    }
-
-    /**
-     * Creates a command exception based on the given message containing details
-     * of the script position. The message should end with a full stop.
-     * 
-     * @param message
-     *            <code>CharSequence</code> containing the base message, not
-     *            null
-     * @return <code>CommandException</code> with details of the script
-     *         position appended to the message, not null
-     */
-    public CommandException commandException(CharSequence message) {
-        if (log != null) {
-            if (log.isWarnEnabled()) {
-                log.warn(message);
-            }
-            logDiagnosticsInfo(log);
-        }
-        final String fullMessage = addStartLineAndColumn(message);
-        final CommandException result = new CommandException(fullMessage);
-        return result;
-    }
-
-    /**
-     * Appends a standard position phrase to the given message. This message
-     * should end with a full stop.
-     * 
-     * @param message
-     *            <code>CharSequence</code> message, not null
-     * @return <code>String</code> containing the original message with
-     *         positional phrase appended, not null
-     */
-    public String addStartLineAndColumn(CharSequence message) {
-        final StringBuilder buffer;
-        if (message instanceof StringBuilder) {
-            buffer = (StringBuilder) message;
-        } else {
-            buffer = new StringBuilder(message.toString());
-        }
-        buffer.append(" Line ");
-        buffer.append(startLineNumber);
-        buffer.append(" column ");
-        buffer.append(startColumnNumber);
-        buffer.append(".");
-        return buffer.toString();
-    }
-
-    /**
-     * Logs diagnotic information about the script coordinate.
-     * 
-     * @param logger
-     *            <code>Log</code>, not null
-     */
-    public void logDiagnosticsInfo(Log logger) {
-        if (logger.isInfoEnabled()) {
-            logger.info("Expression starts line " + startLineNumber
-                    + " column " + startColumnNumber);
-            logger.info("Expression ends line " + endLineNumber + " column "
-                    + endColumnNumber);
-        }
-    }
-
-    /**
-     * Logs diagnotic information about the script coordinate.
-     * 
-     * @param logger
-     *            <code>Log</code>, not null
-     */
-    public void debugDiagnostics(Log logger) {
-        if (logger.isDebugEnabled()) {
-            logger.debug("Expression starts line " + startLineNumber
-                    + " column " + startColumnNumber);
-            logger.debug("Expression ends line " + endLineNumber + " column "
-                    + endColumnNumber);
-        }
-    }
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/SieveConfigurationException.java b/trunk/main/src/main/java/org/apache/jsieve/SieveConfigurationException.java
deleted file mode 100644
index 46fece8..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/SieveConfigurationException.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import org.apache.jsieve.exception.SieveException;
-
-/**
- * Class <code>SieveConfigurationException</code> indicates an exceptional
- * condition encountered while evaluating the Sieve configuration.
- * 
- */
-@SuppressWarnings("serial")
-public class SieveConfigurationException extends SieveException {
-
-    /**
-     * Constructor for SieveConfigurationException.
-     */
-    public SieveConfigurationException() {
-        super();
-    }
-
-    /**
-     * Constructor for SieveConfigurationException.
-     * 
-     * @param message
-     */
-    public SieveConfigurationException(String message) {
-        super(message);
-    }
-
-    /**
-     * Constructor for SieveConfigurationException.
-     * 
-     * @param message
-     * @param cause
-     */
-    public SieveConfigurationException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Constructor for SieveConfigurationException.
-     * 
-     * @param cause
-     */
-    public SieveConfigurationException(Throwable cause) {
-        super(cause);
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/SieveContext.java b/trunk/main/src/main/java/org/apache/jsieve/SieveContext.java
deleted file mode 100644
index 17a6cff..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/SieveContext.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import org.apache.commons.logging.Log;
-
-/**
- * Context for sieve operations.
- * 
- */
-public abstract class SieveContext {
-
-    /**
-     * Gets the script position of the current operation.
-     * 
-     * @return <code>ScriptCoordinate</code>, not null
-     */
-    public abstract ScriptCoordinate getCoordinate();
-
-    /**
-     * Sets the script position of the current operation.
-     * 
-     * @param coordinate
-     *            <code>ScriptCoordinate</code>, not null
-     */
-    public abstract void setCoordinate(ScriptCoordinate coordinate);
-
-    /**
-     * Gets the command state manager.
-     * @return command state manage, not null
-     */
-    public abstract CommandStateManager getCommandStateManager();
-
-    /**
-     * Gets the condition manager.
-     * @return condition manager, not null
-     */
-    public abstract ConditionManager getConditionManager();
-
-    /**
-     * Sets the condition manager.
-     * @param manager not null
-     */
-    public abstract void setConditionManager(final ConditionManager manager);
-
-    /**
-     * Gets the command manager.
-     * @return command manager, not null
-     */
-    public abstract CommandManager getCommandManager();
-    
-    /**
-     * Gets the comparator manager.
-     * @return not null
-     */
-    public abstract ComparatorManager getComparatorManager();
-    
-    /**
-     * Gets the test manager.
-     * @return test manager, not null
-     */
-    public abstract TestManager getTestManager();
-
-    /**
-     * Gets the log.
-     * @return log, not null
-     */
-    public abstract Log getLog();
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/SieveFactory.java b/trunk/main/src/main/java/org/apache/jsieve/SieveFactory.java
deleted file mode 100644
index 916fe37..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/SieveFactory.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import java.io.InputStream;
-
-import org.apache.commons.logging.Log;
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.exception.StopException;
-import org.apache.jsieve.mail.ActionKeep;
-import org.apache.jsieve.mail.MailAdapter;
-import org.apache.jsieve.parser.generated.Node;
-import org.apache.jsieve.parser.generated.ParseException;
-import org.apache.jsieve.parser.generated.SieveParser;
-import org.apache.jsieve.parser.generated.SieveParserVisitor;
-import org.apache.jsieve.parser.generated.SimpleNode;
-
-/**
- * <p>
- * SieveFactory is the primary invocation point for all Sieve
- * operations. These are...
- * <dl>
- * <dt>{@link #parse(InputStream)}</dt>
- * <dd> Parse a Sieve script into a hierarchy of parsed nodes. A succesful parse
- * means the script is lexically and gramatically valid according to RFC 3028,
- * section 8. The result is the start node of the parsed Sieve script. The start
- * node is resuable. Typically it is stored for reuse in all subsequent
- * evaluations of the script. </dd>
- * <dt>{@link #evaluate(MailAdapter, Node)}</dt>
- * <dd> Evaluate an RFC 822 compliant mail message wrapped in a {@link MailAdapter}
- * against the parse result referenced by the start node from the Parse
- * operation above. As evaluation proceeds a List of {@link org.apache.jsieve.mail.Action}s 
- * is added to the MailAdapter. At the end of evaluation, each Action in the List is executed in
- * the order they were added. </dd>
- * <dt>{@link #interpret(MailAdapter, InputStream)}</dt>
- * <dd>A concatenation of parse and evaluate. Useful for testing, but generally
- * the parse result should be stored for reuse in subsequent evaluations. </dd>
- * </dl>
- * </p>
- * <h4>Thread Safety</h4>
- * <p>
- * An instance can be safely accessed concurrently by multiple threads
- * provided that the managers used to construct the instance 
- * (when {@link #SieveFactory(CommandManager, ComparatorManager, TestManager, Log)} 
- * is called) are thread safe.
- * </p>
- */
-public class SieveFactory {
-
-    private final CommandManager commandManager;
-
-    private final ComparatorManager comparatorManager;
-
-    private final TestManager testManager;
-
-    private final Log log;
-
-    /**
-     * Constructor for SieveFactory.
-     */
-    public SieveFactory(final CommandManager commandManager,
-            final ComparatorManager comparatorManager,
-            final TestManager testManager, final Log log) {
-        super();
-        this.commandManager = commandManager;
-        this.comparatorManager = comparatorManager;
-        this.testManager = testManager;
-        this.log = log;
-    }
-
-    /**
-     * Method parse parses a Sieve script into a hierarchy of parsed nodes. A
-     * successful parse means the script is lexically and grammatically valid
-     * according to RFC 3028, section 8. The result is the start node of the
-     * parsed Sieve script. The start node is reusable. Typically it is stored
-     * for reuse in subsequent evaluations of the script.
-     * 
-     * @param inputStream
-     * @return Node
-     * @throws ParseException
-     */
-    public Node parse(InputStream inputStream) throws ParseException {
-        try {
-            final SimpleNode node = new SieveParser(inputStream, "UTF-8")
-                    .start();
-            SieveValidationVisitor visitor = new SieveValidationVisitor(
-                    commandManager, testManager, comparatorManager);
-            node.jjtAccept(visitor, null);
-            return node;
-        } catch (ParseException ex) {
-            if (log.isErrorEnabled())
-                log.error("Parse failed. Reason: " + ex.getMessage());
-            if (log.isDebugEnabled())
-                log.debug("Parse failed.", ex);
-            throw ex;
-        } catch (SieveException ex) {
-            if (log.isErrorEnabled())
-                log.error("Parse failed. Reason: " + ex.getMessage());
-            if (log.isDebugEnabled())
-                log.debug("Parse failed.", ex);
-            throw new ParseException(ex.getMessage());
-        }
-    }
-
-    /**
-     * <p>
-     * Method evaluate evaluates an RFC 822 compliant mail message wrapped in a
-     * MailAdapter by visting each node of the parsed script beginning at the
-     * passed start node. As evaluation proceeds a List of Actions is added to
-     * the MailAdapter.
-     * <p>
-     * 
-     * <p>
-     * At the start of evaluation an 'implicitKeep' state is set. This can be
-     * cancelled by a Command during evaluation. If 'implicitKeep' is still set
-     * at the end of evaluation, a Keep Action is added to the List of Actions.
-     * Finally, each Action in the List is executed in the order they were
-     * added.
-     * </p>
-     * 
-     * @param mail
-     * @param startNode
-     * @throws SieveException
-     */
-    public void evaluate(MailAdapter mail, Node startNode)
-            throws SieveException {
-        final SieveContext context = new BaseSieveContext(commandManager,
-                comparatorManager, testManager, log);
-        try {
-            // Ensure that the context is set on the mail
-            mail.setContext(context);
-            
-            SieveParserVisitor visitor = new SieveParserVisitorImpl(context);
-            try {
-                // Evaluate the Nodes
-                startNode.jjtAccept(visitor, mail);
-    
-            } catch (StopException ex) {
-                // Stop is OK
-            } catch (SieveException ex) {
-                if (log.isErrorEnabled())
-                    log.error("Evaluation failed. Reason: " + ex.getMessage());
-                if (log.isDebugEnabled())
-                    log.debug("Evaluation failed.", ex);
-                throw ex;
-            }
-    
-            // If after evaluating all of the nodes or stopping, implicitKeep is
-            // still
-            // in effect, add a Keep to the list of Actions.
-            if (context.getCommandStateManager().isImplicitKeep())
-                mail.addAction(new ActionKeep());
-    
-            // Execute the List of Actions
-            try {
-                mail.executeActions();
-            } catch (SieveException ex) {
-                if (log.isErrorEnabled())
-                    log.error("Evaluation failed. Reason: " + ex.getMessage());
-                if (log.isDebugEnabled())
-                    log.debug("Evaluation failed.", ex);
-                throw ex;
-            }
-        } finally {
-            // Tidy up by ensuring that a reference to the context is not held by the adapter.
-            // This prevents leaks when the adapter stores the context in a thread local variable.
-            mail.setContext(null);
-        }
-    }
-
-    /**
-     * Method interpret parses a Sieve script and then evaluates the result
-     * against a mail.
-     * 
-     * @param mail
-     * @param inputStream
-     * @throws ParseException
-     * @throws SieveException
-     */
-    public void interpret(MailAdapter mail, InputStream inputStream)
-            throws ParseException, SieveException {
-        evaluate(mail, parse(inputStream));
-    }
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/SieveParserVisitorImpl.java b/trunk/main/src/main/java/org/apache/jsieve/SieveParserVisitorImpl.java
deleted file mode 100644
index 67f59f8..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/SieveParserVisitorImpl.java
+++ /dev/null
@@ -1,283 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.mail.MailAdapter;
-import org.apache.jsieve.parser.generated.ASTargument;
-import org.apache.jsieve.parser.generated.ASTarguments;
-import org.apache.jsieve.parser.generated.ASTblock;
-import org.apache.jsieve.parser.generated.ASTcommand;
-import org.apache.jsieve.parser.generated.ASTcommands;
-import org.apache.jsieve.parser.generated.ASTstart;
-import org.apache.jsieve.parser.generated.ASTstring;
-import org.apache.jsieve.parser.generated.ASTstring_list;
-import org.apache.jsieve.parser.generated.ASTtest;
-import org.apache.jsieve.parser.generated.ASTtest_list;
-import org.apache.jsieve.parser.generated.SieveParserVisitor;
-import org.apache.jsieve.parser.generated.SimpleNode;
-
-/**
- * <p>
- * Class SieveParserVisitorImpl defines the behaviour for each visited node in
- * the Sieve grammar. Each method corresponds to a node type and is invoked when
- * a node of that type is evaluated.
- * </p>
- * 
- * <p>
- * In essence, this class translates between the nodes operated on by the JavaCC
- * generated classes and the Sieve classes operated upon by the Commands, Tests
- * and Comparators. A visit to the start node, ASTstart, triggers evaluation of
- * all of its descendants.
- * </p>
- * 
- * <p>
- * See https://javacc.dev.java.net/doc/JJTree.html for indepth information about
- * Visitor support.
- * </p>
- * 
- * <p>
- * <strong>Note</strong> that this class is not thread safe. It's use should be
- * restricted to a single thread for the duration of a visit.
- * </p>
- */
-public class SieveParserVisitorImpl implements SieveParserVisitor {
-    private final SieveContext context;
-
-    /**
-     * Constructor for NodeVisitor.
-     */
-    public SieveParserVisitorImpl(final SieveContext context) {
-        super();
-        this.context = context;
-    }
-
-    /**
-     * Method visitChildren adds the children of the node to the passed List.
-     * 
-     * @param node
-     * @param data -
-     *            Assumes a List
-     * @return Object - A List
-     * @throws SieveException
-     */
-    @SuppressWarnings("unchecked")
-    protected Object visitChildren(SimpleNode node, Object data)
-            throws SieveException {
-        List children = new ArrayList(node.jjtGetNumChildren());
-        node.childrenAccept(this, children);
-        ((List) data).addAll(children);
-        return data;
-    }
-
-    /**
-     * @see SieveParserVisitor#visit(ASTargument, Object)
-     */
-    @SuppressWarnings("unchecked")
-    public Object visit(ASTargument node, Object data) throws SieveException {
-        List<String> children = new ArrayList<String>(node.jjtGetNumChildren());
-        Argument argument = null;
-
-        if (null != node.getValue()) {
-            argument = (Argument) node.getValue();
-        } else {
-            argument = new StringListArgument(((List) node.childrenAccept(this,
-                    children)));
-        }
-        ((List) data).add(argument);
-
-        return data;
-    }
-
-    /**
-     * @see SieveParserVisitor#visit(ASTarguments, Object)
-     */
-    @SuppressWarnings("unchecked")
-    public Object visit(ASTarguments node, Object data) throws SieveException {
-        List children = new ArrayList(node.jjtGetNumChildren());
-        children = ((List) node.childrenAccept(this, children));
-
-        // Extract Tests and TestList from the children
-        Iterator childrenIter = children.iterator();
-        TestList testList = null;
-        List<Argument> argList = new ArrayList<Argument>(children.size());
-        while (childrenIter.hasNext()) {
-            Object next = childrenIter.next();
-            if (next instanceof Test)
-                testList = new TestList((Test) next);
-            else if (next instanceof TestList)
-                testList = (TestList) next;
-            else if (next instanceof Argument) {
-                argList.add((Argument)next);
-            } else {
-                context.getLog().error("Expected an 'Argument' but was " + next);
-            }
-        }
-
-        Arguments arguments = new Arguments(argList, testList);
-        ((List) data).add(arguments);
-        return data;
-    }
-
-    /**
-     * @see SieveParserVisitor#visit(ASTblock, Object)
-     */
-    @SuppressWarnings("unchecked")
-    public Object visit(ASTblock node, Object data) throws SieveException {
-        // if (node.jjtGetNumChildren() != 1)
-        // throw new ParseException("Expecting exactly one 1 child");
-        List children = new ArrayList(node.jjtGetNumChildren());
-        Commands commands = (Commands) ((List) node.childrenAccept(this,
-                children)).get(0);
-        Block block = new Block(commands);
-        ((List) data).add(block);
-        return data;
-    }
-
-    /**
-     * @see SieveParserVisitor#visit(ASTcommand, Object)
-     */
-    @SuppressWarnings("unchecked")
-    public Object visit(ASTcommand node, Object data) throws SieveException {
-        List children = new ArrayList(node.jjtGetNumChildren());
-        children = ((List) node.childrenAccept(this, children));
-
-        // Extract the Arguments and Block from the children
-        Iterator childrenIter = children.iterator();
-        Arguments arguments = null;
-        Block block = null;
-        while (childrenIter.hasNext()) {
-            Object next = childrenIter.next();
-            if (next instanceof Arguments)
-                arguments = (Arguments) next;
-            else if (next instanceof Block)
-                block = (Block) next;
-        }
-
-        context.setCoordinate(node.getCoordinate());
-        final ScriptCoordinate coordinate = context.getCoordinate();
-        Command command = new Command(node.getName(), arguments, block,
-                coordinate);
-        ((List) data).add(command);
-        return data;
-    }
-
-    /**
-     * @see SieveParserVisitor#visit(ASTcommands, Object)
-     */
-    @SuppressWarnings("unchecked")
-    public Object visit(ASTcommands node, Object data) throws SieveException {
-        List<Command> children = new ArrayList<Command>(node.jjtGetNumChildren());
-        Commands commands = new Commands(((List) node.childrenAccept(this,
-                children)));
-        ((List) data).add(commands);
-        return data;
-    }
-
-    /**
-     * @see SieveParserVisitor#visit(ASTstart, Object)
-     */
-    public Object visit(ASTstart node, Object data) throws SieveException {
-        // The data object must be the MailAdapter to process
-        if (!(data instanceof MailAdapter))
-            throw new SieveException("Expecting an instance of "
-                    + MailAdapter.class.getName()
-                    + " as data, received an instance of "
-                    + (data == null ? "<null>" : data.getClass().getName())
-                    + ".");
-
-        // Start is an implicit Block
-        // There will be one child, an instance of Commands
-        List children = new ArrayList(node.jjtGetNumChildren());
-        Commands commands = (Commands) ((List) node.childrenAccept(this,
-                children)).get(0);
-        Block block = new Block(commands);
-        context.setCoordinate(node.getCoordinate());
-        // Answer the result of executing the Block
-        return block.execute((MailAdapter) data, context);
-    }
-
-    /**
-     * @see SieveParserVisitor#visit(ASTstring_list, Object)
-     */
-    public Object visit(ASTstring_list node, Object data) throws SieveException {
-        return visitChildren(node, data);
-    }
-
-    /**
-     * @see SieveParserVisitor#visit(ASTstring, Object)
-     */
-    @SuppressWarnings("unchecked")
-    public Object visit(ASTstring node, Object data) {
-        // Strings are always surround by double-quotes
-        final String value = (String) node.getValue();
-        // A String is terminal, add it
-        ((List) data).add(value);
-        return data;
-    }
-
-    /**
-     * @see SieveParserVisitor#visit(ASTtest_list, Object)
-     */
-    @SuppressWarnings("unchecked")
-    public Object visit(ASTtest_list node, Object data) throws SieveException {
-        // return visitChildren(node, data);
-        List<Test> children = new ArrayList<Test>(node.jjtGetNumChildren());
-        TestList testList = new TestList(((List<Test>) node.childrenAccept(this,
-                children)));
-        ((List) data).add(testList);
-        return data;
-    }
-
-    /**
-     * @see SieveParserVisitor#visit(ASTtest, Object)
-     */
-    @SuppressWarnings("unchecked")
-    public Object visit(ASTtest node, Object data) throws SieveException {
-        List children = new ArrayList(node.jjtGetNumChildren());
-        children = ((List) node.childrenAccept(this, children));
-
-        // Extract the Arguments from the children
-        Iterator childrenIter = children.iterator();
-        Arguments arguments = null;
-        while (childrenIter.hasNext()) {
-            Object next = childrenIter.next();
-            if (next instanceof Arguments)
-                arguments = (Arguments) next;
-        }
-
-        context.setCoordinate(node.getCoordinate());
-        Test test = new Test(node.getName(), arguments);
-        ((List) data).add(test);
-        return data;
-    }
-
-    /**
-     * @see SieveParserVisitor#visit(SimpleNode, Object)
-     */
-    public Object visit(SimpleNode node, Object data) throws SieveException {
-        return visitChildren(node, data);
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/SieveValidationVisitor.java b/trunk/main/src/main/java/org/apache/jsieve/SieveValidationVisitor.java
deleted file mode 100644
index baaca57..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/SieveValidationVisitor.java
+++ /dev/null
@@ -1,200 +0,0 @@
-package org.apache.jsieve;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.jsieve.exception.LookupException;
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.parser.generated.ASTargument;
-import org.apache.jsieve.parser.generated.ASTarguments;
-import org.apache.jsieve.parser.generated.ASTblock;
-import org.apache.jsieve.parser.generated.ASTcommand;
-import org.apache.jsieve.parser.generated.ASTcommands;
-import org.apache.jsieve.parser.generated.ASTstart;
-import org.apache.jsieve.parser.generated.ASTstring;
-import org.apache.jsieve.parser.generated.ASTstring_list;
-import org.apache.jsieve.parser.generated.ASTtest;
-import org.apache.jsieve.parser.generated.ASTtest_list;
-import org.apache.jsieve.parser.generated.SieveParserVisitor;
-import org.apache.jsieve.parser.generated.SimpleNode;
-
-import static org.apache.jsieve.Constants.*;
-
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-/**
- * Validates nodes visited. Some checks are more conveniently carried out what
- * then tree has already been constructed.
- */
-public class SieveValidationVisitor implements SieveParserVisitor {
-
-    private final CommandManager commandManager;
-    private final TestManager testManager;
-    private final ComparatorManager comparatorManager;
-
-    private final Set<String> declaredComparators;
-    
-    private boolean requireAllowed = true;
-    /** Is the visitor within a <code>require</code>? */
-    private boolean isInRequire = false;
-    /** Is the next argument expected to be a comparator name? */
-    private boolean nextArgumentIsComparatorName = false;
-    /** Is the visitor within a comparator name argument? */
-    private boolean isInComparatorNameArgument = false;
-    
-    protected SieveValidationVisitor(final CommandManager commandManager,
-            final TestManager testManager, final ComparatorManager comparatorManager) {
-        super();
-        this.commandManager = commandManager;
-        this.testManager = testManager;
-        this.comparatorManager = comparatorManager;
-        declaredComparators = new HashSet<String>();
-    }
-
-    public Object visit(SimpleNode node, Object data) throws SieveException {
-        return visitNode(node, data);
-    }
-
-    private Object visitNode(SimpleNode node, Object data)
-            throws SieveException {
-        List children = new ArrayList(node.jjtGetNumChildren());
-        node.childrenAccept(this, children);
-        return data;
-    }
-
-    public Object visit(ASTstart node, Object data) throws SieveException {
-        return visitNode(node, data);
-    }
-
-    public Object visit(ASTcommands node, Object data) throws SieveException {
-        declaredComparators.clear();
-        return visitNode(node, data);
-    }
-
-    public Object visit(ASTcommand node, Object data) throws SieveException {
-        final String name = node.getName();
-        commandManager.getCommand(name);
-        if ("require".equalsIgnoreCase(name)) {
-            if (requireAllowed) {
-                isInRequire = true;
-            } else {
-                throw new SieveException(
-                        "'require' is only allowed before other commands");
-            }
-        } else {
-            requireAllowed = false;
-            isInRequire = false;
-        }
-        return visitNode(node, data);
-    }
-
-    public Object visit(ASTblock node, Object data) throws SieveException {
-        return visitNode(node, data);
-    }
-
-    public Object visit(ASTarguments node, Object data) throws SieveException {
-        // Reset test for explicitly required comparator types
-        nextArgumentIsComparatorName = false;
-        return visitNode(node, data);
-    }
-
-    public Object visit(ASTargument node, Object data) throws SieveException {
-        final Object value = node.getValue();
-        if (value == null) { 
-            if (nextArgumentIsComparatorName) {
-                // Mark enclosed string for check against required list
-                isInComparatorNameArgument = true;
-            }
-            nextArgumentIsComparatorName = false;
-        } else {
-            if (value instanceof TagArgument) {
-                final TagArgument tag = (TagArgument) value;
-                nextArgumentIsComparatorName = tag.isComparator();
-            } else {
-                nextArgumentIsComparatorName = false;
-            }
-        }
-        final Object result = visitNode(node, data);
-        isInComparatorNameArgument = false;
-        return result;
-    }
-
-    public Object visit(ASTtest node, Object data) throws SieveException {
-        return visitNode(node, data);
-    }
-
-    public Object visit(ASTtest_list node, Object data) throws SieveException {
-        return visitNode(node, data);
-    }
-
-    public Object visit(ASTstring node, Object data) throws SieveException {
-        if (isInRequire) {
-            requirements(node);
-        }
-        if (isInComparatorNameArgument) {
-            comparatorNameArgument(node);
-        }
-        return visitNode(node, data);
-    }
-
-    private void comparatorNameArgument(ASTstring node) throws SieveException {
-        final Object value = node.getValue();
-        if (value != null && value instanceof String) {
-            final String name = (String) value;
-            // Comparators must either be declared (either implicitly or explicitly)
-            if (!comparatorManager.isImplicitlyDeclared(name)) {
-                if (!declaredComparators.contains(name)) {
-                    // TODO: replace with better exception
-                    throw new SieveException("Comparator must be explicitly declared in a require statement.");
-                }
-            }
-        }
-    }
-
-    private void requirements(ASTstring node) throws SieveException {
-        final Object value = node.getValue();
-        if (value != null && value instanceof String) {
-            final String name = (String) value;
-            if (name.startsWith(COMPARATOR_PREFIX)) {
-                final String comparatorName = name.substring(COMPARATOR_PREFIX_LENGTH);
-                if (comparatorManager.isSupported(comparatorName)) {
-                    declaredComparators.add(comparatorName);
-                } else {
-//                  TODO: Replace with more finely grained exception
-                    throw new SieveException("Comparator " + comparatorName + " is not supported");
-                }
-            } else {
-                try {
-                    commandManager.getCommand(name);
-                } catch (LookupException e) {
-                    // TODO: catching is inefficient, should just check
-                    testManager.getTest(name);
-                }
-            }
-        }
-    }
-
-    public Object visit(ASTstring_list node, Object data) throws SieveException {
-        return visitNode(node, data);
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/StringListArgument.java b/trunk/main/src/main/java/org/apache/jsieve/StringListArgument.java
deleted file mode 100644
index 8b8d8d8..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/StringListArgument.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Class StringListArgument is a parsed representation of the RFC3028 BNF...
- * </p>
- * 
- * <code>string-list = "[" string *("," string) "]" / string</code>
- */
-public class StringListArgument implements Argument {
-    private List<String> fieldList;
-
-    /**
-     * Constructor for StringListArgument.
-     */
-    private StringListArgument() {
-        super();
-    }
-
-    /**
-     * Constructor for StringListArgument.
-     */
-    public StringListArgument(List<String> stringList) {
-        this();
-        setList(stringList);
-    }
-
-    /**
-     * Returns the list, lazy initialised if required.
-     * 
-     * @return List
-     */
-    public List<String> getList() {
-        List<String> list = null;
-        if (null == (list = getListBasic())) {
-            updateList();
-            return getList();
-        }
-        return list;
-    }
-
-    /**
-     * Returns the list.
-     * 
-     * @return List
-     */
-    private List<String> getListBasic() {
-        return fieldList;
-    }
-
-    /**
-     * Returns a new list.
-     * 
-     * @return List
-     */
-    protected List<String> computeList() {
-        return new ArrayList<String>();
-    }
-
-    /**
-     * Sets the list.
-     * 
-     * @param list
-     *            The list to set
-     */
-    protected void setList(List<String> list) {
-        fieldList = list;
-    }
-
-    /**
-     * Updates the list.
-     */
-    protected void updateList() {
-        setList(computeList());
-    }
-
-    /**
-     * @see org.apache.jsieve.Argument#getValue()
-     */
-    public Object getValue() {
-        return getList();
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return (getValue() == null) ? "null" : getValue().toString();
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/TagArgument.java b/trunk/main/src/main/java/org/apache/jsieve/TagArgument.java
deleted file mode 100644
index e6181c2..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/TagArgument.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import static org.apache.jsieve.Constants.TAG_COMPARATOR;
-
-import org.apache.jsieve.parser.generated.Token;
-
-/**
- * <p>
- * A parsed representation of an RFC3028 TAG argument...
- * </p>
- * 
- * <code>tag = ":" identifier</code>
- */
-public class TagArgument implements Argument {
-
-    /**
-     * The Tag
-     */
-    private String fieldTag;
-
-    /**
-     * Constructor for TagArgument.
-     */
-    private TagArgument() {
-        super();
-    }
-
-    /**
-     * Constructor for TagArgument.
-     * 
-     * @param token
-     */
-    public TagArgument(Token token) {
-        this();
-        setTag(token);
-    }
-
-    /**
-     * Method setTag.
-     * 
-     * @param token
-     */
-    protected void setTag(Token token) {
-        setTag(token.image);
-    }
-
-    /**
-     * Returns the tag.
-     * 
-     * @return String
-     */
-    public String getTag() {
-        return fieldTag;
-    }
-
-    /**
-     * Does this argument match the given tag?
-     * @param tag not null
-     * @return true when the tag identifier equals that given,
-     * false otherwise
-     */
-    public boolean is(String tag) {
-       return tag.equals(fieldTag); 
-    }
-    
-    /**
-     * Is this a comparator tag?
-     * @return true when identifier matches {@link Constants#TAG_COMPARATOR},
-     * false otherwise
-     */
-    public boolean isComparator() {
-        return this.is(TAG_COMPARATOR);
-    }
-    
-    /**
-     * Sets the tag.
-     * 
-     * @param tag
-     *            The tag to set
-     */
-    protected void setTag(String tag) {
-        fieldTag = tag;
-    }
-
-    /**
-     * @see org.apache.jsieve.Argument#getValue()
-     */
-    public Object getValue() {
-        return getTag();
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return (getValue() == null) ? "null" : getValue().toString();
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/Test.java b/trunk/main/src/main/java/org/apache/jsieve/Test.java
deleted file mode 100644
index 338c34e..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/Test.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import org.apache.commons.logging.Log;
-import org.apache.jsieve.exception.LookupException;
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.mail.MailAdapter;
-import org.apache.jsieve.tests.ExecutableTest;
-
-/**
- * <p>
- * A parsed representation of an RFC3028 test argument...
- * </p>
- * 
- * <code>test = identifier arguments</code>
- */
-public class Test implements Executable {
-
-    /** The name of this Test */
-    private String fieldName;
-
-    /** The arguments for this Test */
-    private Arguments fieldArguments;
-
-    /**
-     * @see org.apache.jsieve.Executable#execute(MailAdapter, SieveContext)
-     */
-    public Object execute(MailAdapter mail, SieveContext context)
-            throws SieveException {
-        return new Boolean(isTestPassed(mail, context));
-    }
-
-    /**
-     * Is this test passed for the given mail?
-     * @param mail not null
-     * @param context not null
-     * @return true when the test passes, false otherwise
-     * @throws LookupException
-     * @throws SieveException
-     */
-    public boolean isTestPassed(MailAdapter mail, SieveContext context) throws LookupException, SieveException {
-        Log log = context.getLog();
-        if (log.isDebugEnabled()) {
-            log.debug(toString());
-        }
-        final String name = getName();
-        final ExecutableTest test = context.getTestManager().getTest(name);
-        return test.execute(mail, getArguments(), context);
-    }
-
-    /**
-     * Constructor for Test.
-     */
-    private Test() {
-        super();
-    }
-
-    /**
-     * Constructor for Test.
-     * 
-     * @param name
-     * @param arguments
-     */
-    public Test(String name, Arguments arguments) {
-        this();
-        setName(name);
-        setArguments(arguments);
-    }
-
-    /**
-     * Returns the arguments.
-     * 
-     * @return Arguments
-     */
-    public Arguments getArguments() {
-        return fieldArguments;
-    }
-
-    /**
-     * Returns the name.
-     * 
-     * @return String
-     */
-    public String getName() {
-        return fieldName;
-    }
-
-    /**
-     * Sets the arguments.
-     * 
-     * @param arguments
-     *            The arguments to set
-     */
-    protected void setArguments(Arguments arguments) {
-        fieldArguments = arguments;
-    }
-
-    /**
-     * Sets the name.
-     * 
-     * @param name
-     *            The name to set
-     */
-    protected void setName(String name) {
-        fieldName = name;
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return "Test name: " + getName() + " "
-                + (getArguments() == null ? "null" : getArguments().toString());
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/TestList.java b/trunk/main/src/main/java/org/apache/jsieve/TestList.java
deleted file mode 100644
index 7058816..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/TestList.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.mail.MailAdapter;
-
-/**
- * <p>
- * A parsed representation of an RFC3028 testlist argument...
- * </p>
- * 
- * <code>test-list = "(" test *("," test) ")"</code>
- */
-public class TestList implements Executable {
-    /**
-     * List of Tests
-     */
-    private List<Test> fieldTests;
-
-    /**
-     * Constructor for TestList.
-     */
-    private TestList() {
-        super();
-    }
-
-    /**
-     * Constructor for TestList.
-     * 
-     * @param children -
-     *            A List of Tests
-     */
-    public TestList(List<Test> children) {
-        this();
-        setTests(children);
-    }
-
-    /**
-     * Constructor for TestList.
-     * 
-     * @param child -
-     *            A Test
-     */
-    public TestList(Test child) {
-        this();
-        List<Test> children = new ArrayList<Test>();
-        children.add(child);
-        setTests(children);
-    }
-
-    /**
-     * @see org.apache.jsieve.Executable#execute(MailAdapter, SieveContext)
-     */
-    public Object execute(MailAdapter mail, SieveContext context)
-            throws SieveException {
-        return new Boolean(allTestsPass(mail, context));
-    }
-
-    /**
-     * Do all tests pass for the given mail?
-     * 
-     * @param mail not null
-     * @param context not null
-     * @return false when any test in the list fails when run against the given mail,
-     * true when no tests fail
-     * @throws SieveException
-     */
-    public boolean allTestsPass(MailAdapter mail, SieveContext context) throws SieveException {
-        boolean result = true;
-        for (Test test:getTests()) {
-            result = test.isTestPassed(mail, context);
-            if (!result) {
-                break;
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Do any tests pass for the given mail?
-     * 
-     * @param mail not null
-     * @param context not null
-     * @return true when any test in this list passes,
-     * false otherwise
-     * @throws SieveException
-     */
-    public boolean anyTestsPass(MailAdapter mail, SieveContext context) throws SieveException {
-        boolean result = false;
-        for (Test test:getTests()) {
-            result = test.isTestPassed(mail, context);
-            if (result) {
-                break;
-            }
-        }
-        return result;
-    }
-    
-    /**
-     * Returns the children.
-     * 
-     * @return List
-     */
-    public List<Test> getTests() {
-        return fieldTests;
-    }
-
-    /**
-     * Sets the children.
-     * 
-     * @param children
-     *            The children to set
-     */
-    protected void setTests(List<Test> children) {
-        fieldTests = children;
-    }
-
-    public String toString() {
-        return "TEST LIST: " + fieldTests;
-    }
-
-    /**
-     * Is this test list empty?
-     * @return true when empty,
-     * false when tests exist
-     */
-    public boolean isEmpty() {
-        return fieldTests.isEmpty();
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/TestManager.java b/trunk/main/src/main/java/org/apache/jsieve/TestManager.java
deleted file mode 100644
index 3027bd6..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/TestManager.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import org.apache.jsieve.exception.LookupException;
-import org.apache.jsieve.tests.ExecutableTest;
-
-/**
- * <p>Maps Test names to configured Test implementation classes.</p>
- * <h4>Thread Safety</h4>
- * <p>
- * Implementation dependent. {@link TestManagerImpl} is a thread safe implementation.
- * </p>
- */
-public interface TestManager {
-
-    /**
-     * <p>Gets a test instance by name.</p>
-     * 
-     * @param name -
-     *            The name of the Test
-     * @return the test, not null
-     * @throws LookupException
-     */
-    public ExecutableTest getTest(String name) throws LookupException;
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/TestManagerImpl.java b/trunk/main/src/main/java/org/apache/jsieve/TestManagerImpl.java
deleted file mode 100644
index 8de211d..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/TestManagerImpl.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve;
-
-import java.util.concurrent.ConcurrentMap;
-
-import org.apache.jsieve.exception.LookupException;
-import org.apache.jsieve.tests.ExecutableTest;
-
-/**
- * <p>Maps Test names to configured Test implementation classes.</p>
- * <h4>Thread Safety</h4>
- * <p>
- * Instances may safely be accessed concurrently by multiple threads.
- * </p>
- */
-public class TestManagerImpl implements TestManager {
-
-    private final ConcurrentMap<String, String> classNameMap;
-
-    /**
-     * TestManager is instanciated with getInstance
-     */
-    public TestManagerImpl(final ConcurrentMap<String, String> classNameMap) {
-        super();
-        this.classNameMap = classNameMap;
-    }
-
-    /**
-     * <p>
-     * Method lookup answers the class to which a Test name is mapped.
-     * </p>
-     * 
-     * @param name -
-     *            The name of the Test
-     * @return Class - The class of the Test
-     * @throws LookupException
-     */
-    public Class lookup(String name) throws LookupException {
-        Class testClass = null;
-
-        try {
-            testClass = getClass().getClassLoader().loadClass(
-                    getClassName(name));
-        } catch (ClassNotFoundException e) {
-            throw new LookupException("Test named '" + name + "' not found.");
-        }
-        if (!ExecutableTest.class.isAssignableFrom(testClass))
-            throw new LookupException("Class " + testClass.getName()
-                    + " must implement " + ExecutableTest.class.getName());
-        return testClass;
-    }
-
-    /**
-     * <p>
-     * Method newInstance answers an instance of the class to which a Test name
-     * is mapped.
-     * </p>
-     * 
-     * @param name -
-     *            The name of the Test
-     * @return Class - The class of the Test
-     * @throws LookupException
-     */
-    public ExecutableTest getTest(String name) throws LookupException {
-        try {
-            return (ExecutableTest) lookup(name).newInstance();
-        } catch (InstantiationException e) {
-            throw new LookupException(e.getMessage());
-        } catch (IllegalAccessException e) {
-            throw new LookupException(e.getMessage());
-        }
-    }
-
-    /**
-     * <p>
-     * Method getClassName answers the name of the class to which a Test name is
-     * mapped.
-     * </p>
-     * 
-     * @param name -
-     *            The name of the Test
-     * @return String - The name of the class
-     * @throws LookupException
-     */
-    private String getClassName(String name) throws LookupException {
-        final String className = classNameMap.get(name.toLowerCase());
-        if (null == className)
-            throw new LookupException("Test named '" + name + "' not mapped.");
-        return className;
-    }
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/commands/AbstractActionCommand.java b/trunk/main/src/main/java/org/apache/jsieve/commands/AbstractActionCommand.java
deleted file mode 100644
index a0bde22..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/commands/AbstractActionCommand.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.commands;
-
-import java.util.List;
-
-import org.apache.jsieve.Argument;
-import org.apache.jsieve.Arguments;
-import org.apache.jsieve.SieveContext;
-import org.apache.jsieve.StringListArgument;
-import org.apache.jsieve.exception.CommandException;
-import org.apache.jsieve.exception.SieveException;
-
-/**
- * Abstract class AbstractActionCommand defines the common state validation and
- * state update behavior for Action Commands as per RFC 3028, section 8.
- */
-public abstract class AbstractActionCommand extends AbstractBodyCommand {
-
-    /**
-     * Constructor for AbstractActionCommand.
-     */
-    public AbstractActionCommand() {
-        super();
-    }
-
-    /**
-     * <p>
-     * Method updateState() updates the CommandStateManager to indicate an
-     * Action Command has been processed and to cancel implicit keep.
-     * </p>
-     * 
-     * <p>
-     * And also
-     * </p>
-     * 
-     * @see org.apache.jsieve.commands.AbstractCommand#updateState(SieveContext)
-     */
-    protected void updateState(SieveContext context) {
-        super.updateState(context);
-        context.getCommandStateManager().setHasActions(true);
-        context.getCommandStateManager().setImplicitKeep(false);
-    }
-
-    /**
-     * <p>
-     * Method validateState() validates via the CommandStateManager that an
-     * Action Command is legal at this time.
-     * </p>
-     * 
-     * <p>
-     * Also,
-     * </p>
-     * 
-     * @see org.apache.jsieve.commands.AbstractCommand#validateState(SieveContext)
-     */
-    protected void validateState(SieveContext context) throws CommandException {
-        if (context.getCommandStateManager().isRejected())
-            throw context.getCoordinate().commandException(
-                    "Cannot perform Actions on a rejected message.");
-    }
-
-    /**
-     * This is an utility method for subclasses
-     * 
-     * @see org.apache.jsieve.commands.Redirect
-     * @see org.apache.jsieve.commands.optional.FileInto
-     * @see org.apache.jsieve.commands.optional.Reject
-     */
-    protected void validateSingleStringArguments(Arguments arguments,
-            SieveContext context) throws SieveException {
-        List<Argument> args = arguments.getArgumentList();
-        if (args.size() != 1)
-            throw context.getCoordinate().syntaxException(
-                    "Exactly 1 argument permitted. Found " + args.size());
-
-        Argument argument = args.get(0);
-        if (!(argument instanceof StringListArgument))
-            throw context.getCoordinate().syntaxException(
-                    "Expecting a string-list");
-
-        if (1 != ((StringListArgument) argument).getList().size())
-            throw context.getCoordinate().syntaxException(
-                    "Expecting exactly one argument");
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/commands/AbstractBodyCommand.java b/trunk/main/src/main/java/org/apache/jsieve/commands/AbstractBodyCommand.java
deleted file mode 100644
index 905246c..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/commands/AbstractBodyCommand.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.commands;
-
-import org.apache.jsieve.SieveContext;
-
-/**
- * Abstract class AbstractBodyCommand defines the common state update behavior
- * for Body Commands. All Commands which are not PrologCommands are Body
- * Commands.
- */
-public abstract class AbstractBodyCommand extends AbstractCommand {
-
-    /**
-     * Constructor for AbstractBodyCommand.
-     */
-    public AbstractBodyCommand() {
-        super();
-    }
-
-    /**
-     * <p>
-     * Method updateState() updates the CommandStateManager to indicate a Body
-     * Command has been processed.
-     * </p>
-     * 
-     * <p>
-     * Also,
-     * 
-     * @see org.apache.jsieve.commands.AbstractCommand#updateState(SieveContext)
-     */
-    protected void updateState(final SieveContext context) {
-        context.getCommandStateManager().setInProlog(false);
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/commands/AbstractCommand.java b/trunk/main/src/main/java/org/apache/jsieve/commands/AbstractCommand.java
deleted file mode 100644
index 407bf06..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/commands/AbstractCommand.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.commands;
-
-import org.apache.jsieve.Arguments;
-import org.apache.jsieve.Block;
-import org.apache.jsieve.ExecutableCommand;
-import org.apache.jsieve.SieveContext;
-import org.apache.jsieve.exception.CommandException;
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.mail.MailAdapter;
-
-/**
- * Abstract class AbstractCommand defines a framework of common behavior for
- * Sieve Commands.
- */
-public abstract class AbstractCommand implements ExecutableCommand {
-
-    /**
-     * Constructor for AbstractCommand.
-     */
-    public AbstractCommand() {
-        super();
-    }
-
-    /**
-     * Framework method validateState is invoked before a Sieve Command is
-     * executed to validate its state. Subclass methods are expected to override
-     * or extend this method to perform their own validation as appropriate.
-     * 
-     * @param context
-     *            <code>SieveContext</code> giving contextual information, not
-     *            null
-     * @throws CommandException
-     */
-    protected void validateState(SieveContext context) throws CommandException {
-    }
-
-    /**
-     * Framework method updateState is invoked after a Sieve Command has
-     * executed to update the Sieve state. Subclass methods are expected to
-     * override or extend this method to update state as appropriate.
-     * 
-     * @param context not null
-     */
-    protected void updateState(SieveContext context) {
-    }
-
-    /**
-     * Framework method validateArguments is invoked before a Sieve Command is
-     * executed to validate its arguments. Subclass methods are expected to
-     * override or extend this method to perform their own validation as
-     * appropriate.
-     * 
-     * @param arguments
-     * @param context
-     *            <code>SieveContext</code> giving contextual information, not
-     *            null
-     * @throws SieveException
-     */
-    protected void validateArguments(Arguments arguments, SieveContext context)
-            throws SieveException {
-        if (!arguments.getArgumentList().isEmpty())
-            throw context.getCoordinate().syntaxException(
-                    "Found unexpected arguments");
-    }
-
-    /**
-     * Framework method validateBlock is invoked before a Sieve Command is
-     * executed to validate its Block. Subclass methods are expected to override
-     * or extend this method to perform their own validation as appropriate.
-     * 
-     * @param block
-     * @param context
-     *            <code>ScriptCoordinate</code> giving positional information,
-     *            not null
-     * @throws SieveException
-     */
-    protected void validateBlock(Block block, SieveContext context)
-            throws SieveException {
-        if (null != block)
-            throw context.getCoordinate().syntaxException(
-                    "Found unexpected Block. Missing ';'?");
-    }
-
-    /**
-     * <p>
-     * Method execute executes a basic Sieve Command after first invoking
-     * framework methods to validate that Sieve is in a legal state to invoke
-     * the Command and that the Command arguments are legal. After invocation, a
-     * framework method is invoked to update the state.
-     * </p>
-     * 
-     * <p>
-     * Also,
-     * </p>
-     * 
-     * @see org.apache.jsieve.Executable#execute(MailAdapter, SieveContext)
-     */
-    public Object execute(MailAdapter mail, Arguments arguments, Block block,
-            SieveContext context) throws SieveException {
-        validateState(context);
-        validateArguments(arguments, context);
-        validateBlock(block, context);
-        Object result = executeBasic(mail, arguments, block, context);
-        updateState(context);
-        return result;
-    }
-
-    /**
-     * Abstract method executeBasic invokes a Sieve Command.
-     * 
-     * @param mail
-     * @param arguments
-     * @param block
-     * @param context
-     *            <code>SieveContext</code> giving contextual information, not
-     *            null
-     * @return Object
-     * @throws SieveException
-     */
-    abstract protected Object executeBasic(MailAdapter mail,
-            Arguments arguments, Block block, SieveContext context)
-            throws SieveException;
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/commands/AbstractConditionalCommand.java b/trunk/main/src/main/java/org/apache/jsieve/commands/AbstractConditionalCommand.java
deleted file mode 100644
index 85727a2..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/commands/AbstractConditionalCommand.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.commands;
-
-import org.apache.jsieve.Block;
-import org.apache.jsieve.ConditionManager;
-import org.apache.jsieve.SieveContext;
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.mail.MailAdapter;
-
-/**
- * Abstract class AbstractConditionalCommand defines a framework of common
- * behavior for conditional Commands (if, elsif, else). Conditional commands use
- * a ConditionManager to relate and validate Commands within their Blocks.
- */
-public abstract class AbstractConditionalCommand extends AbstractControlCommand {
-
-    /**
-     * Constructor for AbstractConditionalCommand.
-     */
-    public AbstractConditionalCommand() {
-        super();
-    }
-
-    /**
-     * Method execute executes a Block within the context of a new
-     * ConditionManager.
-     * 
-     * @param mail not null
-     * @param block not null
-     * @param context not null
-     * @return Object 
-     * @throws SieveException
-     */
-    protected Object execute(MailAdapter mail, Block block, SieveContext context)
-            throws SieveException {
-        // Switch to a new ConditionManager
-        ConditionManager oldManager = context.getConditionManager();
-        context.setConditionManager(new ConditionManager());
-
-        try {
-            // Execute the Block
-            Object result = block.execute(mail, context);
-            return result;
-        } finally {
-            // Always restore the old ConditionManager
-            context.setConditionManager(oldManager);
-        }
-    }
-
-    /**
-     * @see org.apache.jsieve.commands.AbstractCommand#validateBlock(Block,
-     *      SieveContext)
-     */
-    protected void validateBlock(Block block, SieveContext context)
-            throws SieveException {
-        if (null == block)
-            throw context.getCoordinate().syntaxException("Expecting a Block.");
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/commands/AbstractControlCommand.java b/trunk/main/src/main/java/org/apache/jsieve/commands/AbstractControlCommand.java
deleted file mode 100644
index ce568b5..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/commands/AbstractControlCommand.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.commands;
-
-/**
- * Abstract class AbstractControlCommand defines a framework of common behavior
- * for control Commands as defined in RFC 3028, section 3.
- */
-
-public abstract class AbstractControlCommand extends AbstractBodyCommand {
-
-    /**
-     * Constructor for AbstractControlCommand.
-     */
-    public AbstractControlCommand() {
-        super();
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/commands/AbstractPrologCommand.java b/trunk/main/src/main/java/org/apache/jsieve/commands/AbstractPrologCommand.java
deleted file mode 100644
index 0037c3a..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/commands/AbstractPrologCommand.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.commands;
-
-import org.apache.jsieve.SieveContext;
-import org.apache.jsieve.exception.CommandException;
-
-/**
- * <p>
- * Abstract class AbstractPrologCommand defines the common state validation
- * behavior for Prolog Commands. In RFC 3028 the only Prolog Command is
- * 'requires', however, the specification may evolve.
- * </p>
- */
-public abstract class AbstractPrologCommand extends AbstractCommand {
-
-    /**
-     * Constructor for AbstractPrologCommand.
-     */
-    public AbstractPrologCommand() {
-        super();
-    }
-
-    /**
-     * <p>
-     * Method validateState() ensures, via the CommandStateManager, that a
-     * Prolog Command is permissible.
-     * </p>
-     * 
-     * <p>
-     * Also,
-     * </p>
-     * 
-     * @see org.apache.jsieve.commands.AbstractCommand#validateState(SieveContext)
-     */
-    protected void validateState(SieveContext context) throws CommandException {
-        super.validateState(context);
-
-        if (!(context.getCommandStateManager().isInProlog()))
-            throw context.getCoordinate().commandException(
-                    "Invalid state for a prolog command.");
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/commands/Discard.java b/trunk/main/src/main/java/org/apache/jsieve/commands/Discard.java
deleted file mode 100644
index e55cf9b..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/commands/Discard.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.commands;
-
-import org.apache.jsieve.Arguments;
-import org.apache.jsieve.Block;
-import org.apache.jsieve.SieveContext;
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.mail.MailAdapter;
-
-/**
- * Class Discard implements the Discard Command as defined in RFC 3028, section
- * 4.5.
- */
-public class Discard extends AbstractActionCommand {
-
-    /**
-     * Constructor for Discard.
-     */
-    public Discard() {
-        super();
-    }
-
-    /**
-     * <p>
-     * Discard silently discards a Mail by cancelling the implicit keep as
-     * specified in RFC 3028, Section 4.5.
-     * </p>
-     * <p>
-     * 
-     * @see org.apache.jsieve.commands.AbstractCommand#executeBasic(MailAdapter,
-     *      Arguments, Block, SieveContext)
-     *      </p>
-     */
-    protected Object executeBasic(MailAdapter mail, Arguments arguments,
-            Block block, SieveContext context) throws SieveException {
-        // Just cancels the implicit keep
-        // See http://tools.ietf.org/html/rfc5228#section-4.4
-        context.getCommandStateManager().setImplicitKeep(false);
-        return null;
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/commands/Else.java b/trunk/main/src/main/java/org/apache/jsieve/commands/Else.java
deleted file mode 100644
index 843ab80..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/commands/Else.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.commands;
-
-import org.apache.jsieve.Arguments;
-import org.apache.jsieve.Block;
-import org.apache.jsieve.SieveContext;
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.mail.MailAdapter;
-
-/**
- * Class Else implements the Else Command as defined in RFC 3028, section 3.1.
- */
-public class Else extends AbstractConditionalCommand {
-
-    /**
-     * Constructor for Else.
-     */
-    public Else() {
-        super();
-    }
-
-    /**
-     * <p>
-     * Conditionally eexecute a Block if an Else Condition is runnable.
-     * </p>
-     * <p>
-     * Also,
-     * 
-     * @see org.apache.jsieve.commands.AbstractCommand#executeBasic(MailAdapter,
-     *      Arguments, Block, SieveContext)
-     *      </p>
-     */
-    protected Object executeBasic(MailAdapter mail, Arguments arguments,
-            Block block, SieveContext context) throws SieveException {
-        // Check Syntax
-        if (!context.getConditionManager().isElseAllowed())
-            throw context.getCoordinate().commandException(
-                    "Unexpected Command: \"else\".");
-
-        // Check Runnable
-        if (!context.getConditionManager().isElseRunnable())
-            return Boolean.FALSE;
-
-        // Execute the Block
-        execute(mail, block, context);
-
-        // Update the ConditionManager
-        // 'Else' is always true
-        context.getConditionManager().setElseTestResult(true);
-
-        // Return the result
-        return Boolean.TRUE;
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/commands/Elsif.java b/trunk/main/src/main/java/org/apache/jsieve/commands/Elsif.java
deleted file mode 100644
index 250ebb3..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/commands/Elsif.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.commands;
-
-import org.apache.jsieve.Arguments;
-import org.apache.jsieve.Block;
-import org.apache.jsieve.SieveContext;
-import org.apache.jsieve.TestList;
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.mail.MailAdapter;
-
-/**
- * Class Elsif implements the Elsif Command as defined in RFC 3028, section 3.1.
- */
-public class Elsif extends AbstractConditionalCommand {
-
-    /**
-     * Constructor for Elsif.
-     */
-    public Elsif() {
-        super();
-    }
-
-    /**
-     * <p>
-     * Conditionally eexecute a Block if an Elsif Condition is allowed and
-     * runnable.
-     * </p>
-     * <p>
-     * Also,
-     * 
-     * @see org.apache.jsieve.commands.AbstractCommand#executeBasic(MailAdapter,
-     *      Arguments, Block, SieveContext)
-     *      </p>
-     */
-    protected Object executeBasic(MailAdapter mail, Arguments arguments,
-            Block block, SieveContext context) throws SieveException {
-        // Check Syntax
-        if (!context.getConditionManager().isElsifAllowed())
-            throw context.getCoordinate().commandException(
-                    "Unexpected Command: \"elsif\".");
-
-        // Check Runnable
-        if (!context.getConditionManager().isElsifRunnable())
-            return Boolean.FALSE;
-
-        // Run the tests
-        Boolean isTestPassed = (Boolean) arguments.getTestList().execute(mail,
-                context);
-
-        // If the tests answered TRUE, execute the Block
-        if (isTestPassed.booleanValue())
-            execute(mail, block, context);
-
-        // Update the ConditionManager
-        context.getConditionManager().setElsifTestResult(
-                isTestPassed.booleanValue());
-
-        // Return the result
-        return isTestPassed;
-    }
-
-    /**
-     * @see org.apache.jsieve.commands.AbstractCommand#validateArguments(Arguments,
-     *      SieveContext)
-     */
-    protected void validateArguments(Arguments arguments, SieveContext context)
-            throws SieveException {
-        TestList testList = arguments.getTestList();
-        if (null == testList || testList.getTests().isEmpty())
-            throw context.getCoordinate().syntaxException("Expecting a Test");
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/commands/If.java b/trunk/main/src/main/java/org/apache/jsieve/commands/If.java
deleted file mode 100644
index 67a68f9..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/commands/If.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.commands;
-
-import org.apache.jsieve.Arguments;
-import org.apache.jsieve.Block;
-import org.apache.jsieve.SieveContext;
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.mail.MailAdapter;
-
-/**
- * Class If implements the If Command as defined in RFC 3028, section 3.1.
- */
-public class If extends AbstractConditionalCommand {
-    /**
-     * Constructor for If.
-     */
-    public If() {
-        super();
-    }
-
-    /**
-     * <p>
-     * Conditionally eexecute a Block if an If Condition is allowed and
-     * runnable.
-     * </p>
-     * <p>
-     * Also,
-     * 
-     * @see org.apache.jsieve.commands.AbstractCommand#executeBasic(MailAdapter,
-     *      Arguments, Block, SieveContext)
-     *      </p>
-     */
-    protected Object executeBasic(MailAdapter mail, Arguments arguments,
-            Block block, SieveContext context) throws SieveException {
-        // Check Syntax
-        if (!context.getConditionManager().isIfAllowed())
-            throw context.getCoordinate().commandException(
-                    "Unexpected Command: \"if\".");
-
-        // Check Runnable
-        if (!context.getConditionManager().isIfRunnable())
-            return Boolean.FALSE;
-
-        // Run the tests
-        final boolean isTestPassed = arguments.getTestList().allTestsPass(mail,context);
-
-        // If the tests answered TRUE, execute the Block
-        if (isTestPassed)
-            execute(mail, block, context);
-
-        // Update the ConditionManager
-        context.getConditionManager().setIfTestResult(isTestPassed);
-
-        // Return the result
-        return isTestPassed;
-    }
-
-    /**
-     * @see org.apache.jsieve.commands.AbstractCommand#validateArguments(Arguments,
-     *      SieveContext)
-     */
-    protected void validateArguments(Arguments arguments, SieveContext context)
-            throws SieveException {
-        if (!arguments.hasTests())
-            throw context.getCoordinate().syntaxException("Expecting a Test");
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/commands/Keep.java b/trunk/main/src/main/java/org/apache/jsieve/commands/Keep.java
deleted file mode 100644
index 3e5e544..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/commands/Keep.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.commands;
-
-import org.apache.jsieve.Arguments;
-import org.apache.jsieve.Block;
-import org.apache.jsieve.SieveContext;
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.mail.ActionKeep;
-import org.apache.jsieve.mail.MailAdapter;
-
-/**
- * Class Keep implements the Keep Command as defined in RFC 3028, section 4.4.
- */
-public class Keep extends AbstractActionCommand {
-
-    /**
-     * Constructor for Keep.
-     */
-    public Keep() {
-        super();
-    }
-
-    /**
-     * <p>
-     * Add an ActionKeep to the List of Actions to be performed.
-     * </p>
-     * <p>
-     * Also,
-     * 
-     * @see org.apache.jsieve.commands.AbstractCommand#executeBasic(MailAdapter,
-     *      Arguments, Block, SieveContext)
-     *      </p>
-     */
-    protected Object executeBasic(MailAdapter mail, Arguments arguments,
-            Block block, SieveContext context) throws SieveException {
-        mail.addAction(new ActionKeep());
-        return null;
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/commands/Redirect.java b/trunk/main/src/main/java/org/apache/jsieve/commands/Redirect.java
deleted file mode 100644
index 3b8b999..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/commands/Redirect.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.commands;
-
-import org.apache.jsieve.Arguments;
-import org.apache.jsieve.Block;
-import org.apache.jsieve.SieveContext;
-import org.apache.jsieve.StringListArgument;
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.mail.ActionRedirect;
-import org.apache.jsieve.mail.MailAdapter;
-
-/**
- * Class Redirect implements the Redirect Command as defined in RFC 3028,
- * section 4.3.
- */
-public class Redirect extends AbstractActionCommand {
-
-    /**
-     * Constructor for Redirect.
-     */
-    public Redirect() {
-        super();
-    }
-
-    /**
-     * <p>
-     * Add an ActionRedirect to the List of Actions to be performed passing the
-     * sole StringList argument as the recipient.
-     * </p>
-     * <p>
-     * Also,
-     * 
-     * @see org.apache.jsieve.commands.AbstractCommand#executeBasic(MailAdapter,
-     *      Arguments, Block, SieveContext)
-     *      </p>
-     */
-    protected Object executeBasic(MailAdapter mail, Arguments arguments,
-            Block block, SieveContext context) throws SieveException {
-        String recipient = ((StringListArgument) arguments
-                .getArgumentList().get(0)).getList().get(0);
-
-        mail.addAction(new ActionRedirect(recipient));
-
-        return null;
-    }
-
-    /**
-     * @see org.apache.jsieve.commands.AbstractCommand#validateArguments(Arguments,
-     *      SieveContext)
-     */
-    protected void validateArguments(Arguments arguments, SieveContext context)
-            throws SieveException {
-        validateSingleStringArguments(arguments, context);
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/commands/Require.java b/trunk/main/src/main/java/org/apache/jsieve/commands/Require.java
deleted file mode 100644
index 0e224e8..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/commands/Require.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.commands;
-
-import static org.apache.jsieve.Constants.COMPARATOR_PREFIX;
-import static org.apache.jsieve.Constants.COMPARATOR_PREFIX_LENGTH;
-
-import java.util.List;
-
-import org.apache.jsieve.Argument;
-import org.apache.jsieve.Arguments;
-import org.apache.jsieve.Block;
-import org.apache.jsieve.SieveContext;
-import org.apache.jsieve.StringListArgument;
-import org.apache.jsieve.exception.FeatureException;
-import org.apache.jsieve.exception.LookupException;
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.mail.MailAdapter;
-
-/**
- * Class Require implements the Require Command as defined in RFC 3028, section
- * 3.2.
- */
-public class Require extends AbstractPrologCommand {
-
-    /**
-     * Constructor for Require.
-     */
-    public Require() {
-        super();
-    }
-
-    /**
-     * <p>
-     * Ensure the required feature is configured.
-     * </p>
-     * <p>
-     * Also,
-     * 
-     * @see org.apache.jsieve.commands.AbstractCommand#executeBasic(MailAdapter,
-     *      Arguments, Block, SieveContext)
-     *      </p>
-     */
-    protected Object executeBasic(MailAdapter mail, Arguments arguments,
-            Block block, SieveContext context) throws SieveException {
-        final List<String> stringArgumentList = ((StringListArgument) arguments
-                                .getArgumentList().get(0)).getList();
-        for (String stringArgument: stringArgumentList) {
-            validateFeature(stringArgument, mail, context);
-        }
-        return null;
-    }
-
-    /**
-     * Method validateFeature validates the required feature is configured as
-     * either a Command or a Test.
-     * 
-     * @param name
-     * @param mail
-     * @param context not nul
-     * @throws FeatureException
-     */
-    protected void validateFeature(String name, MailAdapter mail,
-            SieveContext context) throws FeatureException {
-        if (name.startsWith(COMPARATOR_PREFIX)) {
-            final String comparatorName = name.substring(COMPARATOR_PREFIX_LENGTH);
-            if (!context.getComparatorManager().isSupported(comparatorName)) {
-                throw new FeatureException("Comparator \"" + comparatorName
-                        + "\" is not supported.");
-            }
-        } else {
-            // Validate as a Command
-            try {
-                validateCommand(name, context);
-                return;
-            } catch (LookupException e) {
-                // Not a command
-            }
-    
-            // Validate as a Test
-            try {
-                validateTest(name, context);
-            } catch (LookupException e) {
-                throw new FeatureException("Feature \"" + name
-                        + "\" is not supported.");
-            }
-        }
-    }
-
-    /**
-     * Method validateCommand.
-     * 
-     * @param name
-     * @throws LookupException
-     */
-    protected void validateCommand(String name, SieveContext context)
-            throws LookupException {
-        context.getCommandManager().getCommand(name);
-    }
-
-    /**
-     * Method validateTest.
-     * 
-     * @param name not null
-     * @param context not null
-     * @throws LookupException
-     */
-    protected void validateTest(String name, SieveContext context)
-            throws LookupException {
-        context.getTestManager().getTest(name);
-    }
-
-    /**
-     * @see org.apache.jsieve.commands.AbstractCommand#validateArguments(Arguments,
-     *      SieveContext)
-     */
-    protected void validateArguments(Arguments arguments, SieveContext context)
-            throws SieveException {
-        List<Argument> args = arguments.getArgumentList();
-        if (args.size() != 1)
-            throw context.getCoordinate().syntaxException(
-                    new StringBuilder("Exactly 1 argument permitted. Found ").append((int)args.size()));
-
-        Argument argument = args.get(0);
-        if (!(argument instanceof StringListArgument))
-            throw context.getCoordinate().syntaxException(
-                    "Expecting a string-list");
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/commands/Stop.java b/trunk/main/src/main/java/org/apache/jsieve/commands/Stop.java
deleted file mode 100644
index ecef667..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/commands/Stop.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.commands;
-
-import org.apache.jsieve.Arguments;
-import org.apache.jsieve.Block;
-import org.apache.jsieve.SieveContext;
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.exception.StopException;
-import org.apache.jsieve.mail.MailAdapter;
-
-/**
- * Class Stop implements the Stop Command as defined in RFC 3028, section 3.3.
- */
-public class Stop extends AbstractControlCommand {
-
-    /**
-     * Constructor for Require.
-     */
-    public Stop() {
-        super();
-    }
-
-    /**
-     * <p>
-     * Throws a StopException.
-     * </p>
-     * <p>
-     * Also,
-     * 
-     * @see org.apache.jsieve.commands.AbstractCommand#executeBasic(MailAdapter,
-     *      Arguments, Block, SieveContext)
-     *      </p>
-     */
-    protected Object executeBasic(MailAdapter mail, Arguments arguments,
-            Block block, SieveContext context) throws SieveException {
-        throw new StopException("Stop requested");
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/commands/extensions/Log.java b/trunk/main/src/main/java/org/apache/jsieve/commands/extensions/Log.java
deleted file mode 100644
index 6081a65..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/commands/extensions/Log.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.commands.extensions;
-
-import static org.apache.jsieve.commands.extensions.LogLevelTags.DEBUG_TAG;
-import static org.apache.jsieve.commands.extensions.LogLevelTags.ERROR_TAG;
-import static org.apache.jsieve.commands.extensions.LogLevelTags.FATAL_TAG;
-import static org.apache.jsieve.commands.extensions.LogLevelTags.INFO_TAG;
-import static org.apache.jsieve.commands.extensions.LogLevelTags.TRACE_TAG;
-import static org.apache.jsieve.commands.extensions.LogLevelTags.WARN_TAG;
-
-import java.util.List;
-import java.util.ListIterator;
-
-import org.apache.jsieve.Argument;
-import org.apache.jsieve.Arguments;
-import org.apache.jsieve.Block;
-import org.apache.jsieve.SieveContext;
-import org.apache.jsieve.StringListArgument;
-import org.apache.jsieve.TagArgument;
-import org.apache.jsieve.commands.AbstractCommand;
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.exception.SyntaxException;
-import org.apache.jsieve.mail.MailAdapter;
-
-/**
- * <p>
- * Class Log is an extension that implements a Command to write messages to the
- * Sieve Log. The BNF syntax is...
- * </p>
- * <code>log [(:fatal / :error / :warn / :info / :debug / :trace)] string</code>
- * <p>
- * The default log level is :info.
- * </p>
- */
-public class Log extends AbstractCommand {
-    /**
-     * Constructor for Log.
-     */
-    public Log() {
-        super();
-    }
-
-    /**
-     * @see org.apache.jsieve.commands.AbstractCommand#executeBasic(MailAdapter,
-     *      Arguments, Block, SieveContext)
-     */
-    protected Object executeBasic(MailAdapter mail, Arguments arguments,
-            Block block, SieveContext context) throws SieveException {
-        String logLevel = null;
-        String message = null;
-
-        // First MAY be a tag argument of fatal, error, warn, info, debug or
-        // trace.
-        // default is info.
-        final ListIterator<Argument> argumentsIter = arguments.getArgumentList().listIterator();
-        boolean stop = false;
-
-        // Tag processing
-        while (!stop && argumentsIter.hasNext()) {
-            final Argument argument = argumentsIter.next();
-            if (argument instanceof TagArgument) {
-                final String tag = ((TagArgument) argument).getTag();
-
-                // LogLevel?
-                if (null == logLevel
-                        && (tag.equals(FATAL_TAG) || tag.equals(ERROR_TAG)
-                                || tag.equals(WARN_TAG) || tag.equals(INFO_TAG)
-                                || tag.equals(DEBUG_TAG) || tag
-                                .equals(TRACE_TAG)))
-                    logLevel = tag;
-                else
-                    throw context.getCoordinate().syntaxException(
-                            "Found unexpected TagArgument");
-            } else {
-                // Stop when a non-tag argument is encountered
-                argumentsIter.previous();
-                stop = true;
-            }
-        }
-
-        // Next MUST be a String
-        if (argumentsIter.hasNext()) {
-            final Argument argument = argumentsIter.next();
-            if (argument instanceof StringListArgument) {
-                List<String> strings = ((StringListArgument) argument).getList();
-                if (1 == strings.size())
-                    message = strings.get(0);
-            }
-        }
-        if (null == message)
-            throw context.getCoordinate().syntaxException("Expecting a String");
-
-        // Everthing else is an error
-        if (argumentsIter.hasNext())
-            throw context.getCoordinate().syntaxException(
-                    "Found unexpected arguments");
-
-        log(null == logLevel ? ":info" : logLevel, message, context);
-
-        return null;
-    }
-
-    /**
-     * Method log.
-     * 
-     * @param logLevel
-     * @param message
-     * @throws SyntaxException
-     */
-    protected void log(String logLevel, String message, SieveContext context)
-            throws SyntaxException {
-        if (logLevel.equals(INFO_TAG))
-            logInfo(message, context);
-        else if (logLevel.equals(ERROR_TAG))
-            logError(message, context);
-        else if (logLevel.equals(WARN_TAG))
-            logWarn(message, context);
-        else if (logLevel.equals(DEBUG_TAG))
-            logDebug(message, context);
-        else if (logLevel.equals(FATAL_TAG))
-            logFatal(message, context);
-        else if (logLevel.equals(TRACE_TAG))
-            logTrace(message, context);
-        else
-            throw context.getCoordinate().syntaxException(
-                    new StringBuilder("Unsupported logging level: ").append (logLevel));
-    }
-
-    /**
-     * Method logFatal.
-     * 
-     * @param message not null
-     * @param sieveContext not null
-     */
-    protected void logFatal(String message, SieveContext sieveContext) {
-        org.apache.commons.logging.Log log = sieveContext.getLog();
-        if (log.isFatalEnabled())
-            log.fatal(message);
-    }
-
-    /**
-     * Method logWarn.
-     * 
-     * @param message not null
-     * @param context not null
-     */
-    protected void logWarn(String message, SieveContext context) {
-        org.apache.commons.logging.Log log = context.getLog();
-        if (log.isWarnEnabled())
-            log.warn(message);
-    }
-
-    /**
-     * Method logInfo.
-     * 
-     * @param message not null
-     * @param context not null
-     */
-    protected void logInfo(String message, SieveContext context) {
-        org.apache.commons.logging.Log log = context.getLog();
-        if (log.isInfoEnabled())
-            log.info(message);
-    }
-
-    /**
-     * Method logDebug.
-     * 
-     * @param message not null
-     * @param context not null
-     */
-    protected void logDebug(String message, SieveContext context) {
-        org.apache.commons.logging.Log log = context.getLog();
-        if (log.isDebugEnabled())
-            log.debug(message);
-    }
-
-    /**
-     * Method logTrace.
-     * 
-     * @param message not null
-     * @param context not null
-     */
-    protected void logTrace(String message, SieveContext context) {
-        org.apache.commons.logging.Log log = context.getLog();
-        if (log.isTraceEnabled())
-            log.trace(message);
-    }
-
-    /**
-     * Method logError.
-     * 
-     * @param message not null
-     * @param context not null
-     */
-    protected void logError(String message, SieveContext context) {
-        org.apache.commons.logging.Log log = context.getLog();
-        if (log.isErrorEnabled())
-            log.error(message);
-    }
-
-    /**
-     * @see org.apache.jsieve.commands.AbstractCommand#validateArguments(Arguments,
-     *      SieveContext)
-     */
-    protected void validateArguments(Arguments arguments, SieveContext context)
-            throws SieveException {
-        // Validation is performed in executeBasic()
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/commands/extensions/LogLevelTags.java b/trunk/main/src/main/java/org/apache/jsieve/commands/extensions/LogLevelTags.java
deleted file mode 100644
index 8579fdd..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/commands/extensions/LogLevelTags.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.commands.extensions;
-
-/**
- * Interface LogLevelTags defines the String constants for the tags used to
- * specify the logging level.
- */
-public interface LogLevelTags {
-    public static final String DEBUG_TAG = ":debug";
-
-    public static final String ERROR_TAG = ":error";
-
-    public static final String FATAL_TAG = ":fatal";
-
-    public static final String INFO_TAG = ":info";
-
-    public static final String TRACE_TAG = ":trace";
-
-    public static final String WARN_TAG = ":warn";
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/commands/optional/FileInto.java b/trunk/main/src/main/java/org/apache/jsieve/commands/optional/FileInto.java
deleted file mode 100644
index 5d4253f..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/commands/optional/FileInto.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.commands.optional;
-
-import org.apache.jsieve.Arguments;
-import org.apache.jsieve.Block;
-import org.apache.jsieve.SieveContext;
-import org.apache.jsieve.StringListArgument;
-import org.apache.jsieve.commands.AbstractActionCommand;
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.mail.Action;
-import org.apache.jsieve.mail.ActionFileInto;
-import org.apache.jsieve.mail.MailAdapter;
-
-/**
- * Class FileInto implements the FileInto Command as defined in RFC 3028,
- * section 4.2.
- */
-public class FileInto extends AbstractActionCommand {
-
-    /**
-     * Constructor for Require.
-     */
-    public FileInto() {
-        super();
-    }
-
-    /**
-     * <p>
-     * Add an ActionFileInto to the List of Actions to be performed passing the
-     * sole StringList argument as the destination. RFC 3028 mandates that there
-     * should be only one FileInto per destination. If this is a duplicate, this
-     * Command is silently ignored.
-     * </p>
-     * <p>
-     * Also,
-     * 
-     * @see org.apache.jsieve.commands.AbstractCommand#executeBasic(MailAdapter,
-     *      Arguments, Block, SieveContext)
-     *      </p>
-     */
-    protected Object executeBasic(MailAdapter mail, Arguments arguments,
-            Block block, SieveContext context) throws SieveException {
-        final String destination = ((StringListArgument) arguments
-                .getArgumentList().get(0)).getList().get(0);
-
-        // Only one fileinto per destination allowed, others should be
-        // discarded
-        boolean isDuplicate = false;
-        for (final Action action: mail.getActions()) {
-            isDuplicate = (action instanceof ActionFileInto)
-                    && (((ActionFileInto) action).getDestination()
-                            .equals(destination));
-            if (isDuplicate) {
-                break;
-            }
-        }
-
-        if (!isDuplicate)
-            mail.addAction(new ActionFileInto(destination));
-
-        return null;
-    }
-
-    /**
-     * @see org.apache.jsieve.commands.AbstractCommand#validateArguments(Arguments,
-     *      SieveContext)
-     */
-    protected void validateArguments(Arguments arguments, SieveContext context)
-            throws SieveException {
-        validateSingleStringArguments(arguments, context);
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/commands/optional/Reject.java b/trunk/main/src/main/java/org/apache/jsieve/commands/optional/Reject.java
deleted file mode 100644
index de6913f..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/commands/optional/Reject.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.commands.optional;
-
-import org.apache.jsieve.Arguments;
-import org.apache.jsieve.Block;
-import org.apache.jsieve.SieveContext;
-import org.apache.jsieve.StringListArgument;
-import org.apache.jsieve.commands.AbstractActionCommand;
-import org.apache.jsieve.exception.CommandException;
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.mail.ActionReject;
-import org.apache.jsieve.mail.MailAdapter;
-
-/**
- * Class | Interface Enter description here
- * 
- * Creation Date: 11-Jan-04
- * 
- * @author sbrewin
- * 
- * Copyright 2003, Synergy Systems Limited
- */
-/**
- * Class Reject implements the Reject Command as defined in RFC 3028, section
- * 4.1.
- */
-public class Reject extends AbstractActionCommand {
-
-    /**
-     * Constructor for Reject.
-     */
-    public Reject() {
-        super();
-    }
-
-    /**
-     * <p>
-     * Add an ActionReject to the List of Actions to be performed.
-     * </p>
-     * <p>
-     * Also,
-     * 
-     * @see org.apache.jsieve.commands.AbstractCommand#executeBasic(MailAdapter,
-     *      Arguments, Block, SieveContext)
-     *      </p>
-     */
-    protected Object executeBasic(MailAdapter mail, Arguments arguments,
-            Block block, SieveContext context) throws SieveException {
-        final String message = ((StringListArgument) arguments
-                .getArgumentList().get(0)).getList().get(0);
-
-        mail.addAction(new ActionReject(message));
-        return null;
-    }
-
-    /**
-     * @see org.apache.jsieve.commands.AbstractCommand#validateState(SieveContext)
-     */
-    protected void validateState(final SieveContext context)
-            throws CommandException {
-        super.validateState(context);
-
-        if (context.getCommandStateManager().isHasActions())
-            throw context
-                    .getCoordinate()
-                    .commandException(
-                            "The \"reject\" command is not allowed with other Action Commands");
-    }
-
-    /**
-     * @see org.apache.jsieve.commands.AbstractCommand#updateState(SieveContext)
-     */
-    protected void updateState(SieveContext context) {
-        super.updateState(context);
-        context.getCommandStateManager().setRejected(true);
-    }
-
-    /**
-     * @see org.apache.jsieve.commands.AbstractCommand#validateArguments(Arguments,
-     *      SieveContext)
-     */
-    protected void validateArguments(Arguments arguments, SieveContext context)
-            throws SieveException {
-        validateSingleStringArguments(arguments, context);
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/comparators/AsciiCasemap.java b/trunk/main/src/main/java/org/apache/jsieve/comparators/AsciiCasemap.java
deleted file mode 100644
index 16b322e..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/comparators/AsciiCasemap.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.comparators;
-
-import org.apache.jsieve.exception.SievePatternException;
-
-/**
- * Class AsciiCasemap implements the EQUALITY operation of the i;ascii-casemap
- * comparator as defined by RFC2244, section 3.4 - "With this function the
- * values "hello" and "HELLO" have the same ordinal value and are considered
- * equal".
- */
-public class AsciiCasemap implements Comparator {
-
-    /**
-     * Constructor for AsciiCasemap.
-     */
-    public AsciiCasemap() {
-        super();
-    }
-
-    /**
-     * @see org.apache.jsieve.comparators.Equals#equals(String, String)
-     */
-    public boolean equals(String string1, String string2) {
-        return ComparatorUtils.equals(string1.toUpperCase(), string2
-                .toUpperCase());
-    }
-
-    /**
-     * @see org.apache.jsieve.comparators.Contains#contains(String, String)
-     */
-    public boolean contains(String container, String content) {
-        return ComparatorUtils.contains(container.toUpperCase(), content
-                .toUpperCase());
-    }
-
-    /**
-     * @see org.apache.jsieve.comparators.Matches#matches(String, String)
-     */
-    public boolean matches(String string, String glob)
-            throws SievePatternException {
-        return ComparatorUtils
-                .matches(string.toUpperCase(), glob.toUpperCase());
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/comparators/AsciiNumeric.java b/trunk/main/src/main/java/org/apache/jsieve/comparators/AsciiNumeric.java
deleted file mode 100644
index b7dca33..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/comparators/AsciiNumeric.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.comparators;
-
-import java.math.BigInteger;
-
-import org.apache.jsieve.exception.FeatureException;
-
-/**
- * Class AsciiNumeric implements the EQUALITY operation of the i;ascii-numeric
- * comparator as defined by RFC2244, section 3.4.
- */
-public class AsciiNumeric implements Comparator {
-
-    /**
-     * Constructor for AsciiNumeric.
-     */
-    public AsciiNumeric() {
-        super();
-    }
-
-    /**
-     * @see org.apache.jsieve.comparators.Equals#equals(String, String)
-     */
-    public boolean equals(String string1, String string2) {
-        final boolean result;
-        if (isPositiveInfinity(string1)) {
-            if (isPositiveInfinity(string2)) {
-                result = true;
-            } else {
-                result = false;
-            }
-        } else {
-            if (isPositiveInfinity(string2)) {
-                result = false;
-            } else {
-                final BigInteger integer1 = toInteger(string1);
-                final BigInteger integer2 = toInteger(string2);
-                result = integer1.equals(integer2);
-            }
-        }
-        return result;
-    }
-    
-    private BigInteger toInteger(final String value) {
-        int i;
-        for (i=0;i<value.length();i++) {
-            final char next = value.charAt(i);
-            if (!isDigit(next)) {
-                break;
-            }
-        }
-        final BigInteger result = new BigInteger(value.substring(0,i));
-        return result;
-    }
-    
-    /**
-     * Does the given string to be handled as positive infinity?
-     * See <a href='http://tools.ietf.org/html/rfc4790#section-9.1.1'>RFC4790</a>
-     * @param value not null
-     * @return true when the value should represent positive infinity,
-     * false otherwise
-     */
-    private boolean isPositiveInfinity(final String value) {
-       final char initialCharacter = value.charAt(0);
-       final boolean result = !isDigit(initialCharacter);
-       return result;
-    }
-
-    /**
-     * Is the given character an ASCII digit?
-     * @param character character to be tested
-     * @return true when the given character is an ASCII digit,
-     * false otherwise 
-     */
-    private boolean isDigit(final char character) {
-        return character>=0x30 && character<=0x39;
-    }
-
-    /**
-     * Method getCompareString answers a <code>String</code> in which all
-     * non-digit characters are translated to the character 0xff.
-     * 
-     * @param string
-     * @return String
-     */
-    protected String computeCompareString(String string) {
-        char[] chars = string.toCharArray();
-        for (int i = chars.length; i < chars.length; i++) {
-            if (!Character.isDigit(chars[i]))
-                chars[i] = 0xff;
-        }
-        return new String(chars);
-    }
-
-    /**
-     * Unsupported, see <a href='http://tools.ietf.org/html/rfc4790#section-9.1.1'>RFC4790</a>.
-     * @see org.apache.jsieve.comparators.Contains#contains(String, String)
-     */
-    public boolean contains(String container, String content) throws FeatureException {
-        // TODO: Consider using finer grained exception
-        throw new FeatureException("Substring match unsupported by ascii-numeric");
-    }
-
-    /**
-     * Unsupported operation.
-     * <a href='http://tools.ietf.org/html/rfc5228#section-2.7.1'>RFC5228</a> limits
-     * support to comparators that support <code>:contains</code>. 
-     * <a href='http://tools.ietf.org/html/rfc4790#section-9.1.1'>RFC4790</a> states
-     * that substring matches are not supported.
-     * @see org.apache.jsieve.comparators.Matches#matches(String, String)
-     */
-    public boolean matches(String string, String glob)
-            throws FeatureException {
-        // TODO: Consider using finer grained exception
-        throw new FeatureException("Substring match unsupported by ascii-numeric");
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/comparators/Comparator.java b/trunk/main/src/main/java/org/apache/jsieve/comparators/Comparator.java
deleted file mode 100644
index 48decfc..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/comparators/Comparator.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.comparators;
-
-/**
- * Interface Comparator defines the method signatures for Sieve comparators. It
- * consists of Equals, Contains and Matches Comparisons.
- */
-public interface Comparator extends Equals, Contains, Matches {
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/comparators/ComparatorNames.java b/trunk/main/src/main/java/org/apache/jsieve/comparators/ComparatorNames.java
deleted file mode 100644
index 7e01eeb..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/comparators/ComparatorNames.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.comparators;
-
-/**
- * Interface ComparatorNames defines the String constants used to specify a
- * COMPARATOR name.
- */
-public interface ComparatorNames {
-    public static final String OCTET_COMPARATOR = "i;octet";
-
-    public static final String ASCII_CASEMAP_COMPARATOR = "i;ascii-casemap";
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/comparators/ComparatorUtils.java b/trunk/main/src/main/java/org/apache/jsieve/comparators/ComparatorUtils.java
deleted file mode 100644
index bf56a6a..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/comparators/ComparatorUtils.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.comparators;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.regex.PatternSyntaxException;
-
-import org.apache.jsieve.SieveContext;
-import org.apache.jsieve.exception.LookupException;
-import org.apache.jsieve.exception.SieveException;
-import org.apache.jsieve.exception.SievePatternException;
-
-import static  org.apache.jsieve.comparators.MatchTypeTags.*;
-
-/**
- * Class ComparatorUtils implements utility methods used by Comparators.
- */
-public class ComparatorUtils {
-
-    /**
-     * Constructor for ComparatorUtils.
-     */
-    private ComparatorUtils() {
-        super();
-    }
-
-    /**
-     * Method <code>match</code> answers a boolean indicating if the parameter
-     * <code>matchTarget</code> compares to parameter
-     * <code>matchArgument</code> is a match of <code>matchType</code> using
-     * the comparator <code>comparatorName</code>.
-     * 
-     * @param comparatorName not null
-     * @param matchType not null
-     * @param matchTarget not null
-     * @param matchArgument not null
-     * @param context not null
-     * @return boolean
-     */
-    public static boolean match(String comparatorName, String matchType,
-            String matchTarget, String matchArgument, SieveContext context)
-            throws SieveException {
-        boolean isMatched = false;
-        if (matchType.equals(IS_TAG))
-            isMatched = is(comparatorName, matchTarget, matchArgument, context);
-        else if (matchType.equals(CONTAINS_TAG))
-            isMatched = contains(comparatorName, matchTarget, matchArgument,
-                    context);
-        else if (matchType.equals(MATCHES_TAG))
-            isMatched = matches(comparatorName, matchTarget, matchArgument,
-                    context);
-        return isMatched;
-    }
-
-    /**
-     * <p>
-     * Method <code>matches</code> answers a boolean indicating if the
-     * parameter <code>string</code> matches the glob pattern described by
-     * parameter <code>glob</code>.
-     * 
-     * @param string
-     * @param glob
-     * @return boolean
-     * @throws SievePatternException
-     */
-    static public boolean matches(String string, String glob)
-            throws SievePatternException {
-        try {
-            String regex = sieveToJavaRegex(glob);
-            final Matcher matcher = Pattern.compile(regex).matcher(string);
-            return matcher.matches();
-        } catch (PatternSyntaxException e) {
-            throw new SievePatternException(e.getMessage());
-        }
-    }
-
-    /**
-     * <p>
-     * Method <code>contains</code> answers a boolean indicating if the
-     * parameter <code>container</code> contains the parameter
-     * <code>contents</code>.
-     * </p>
-     * 
-     * @param container
-     * @param contents
-     * @return boolean
-     */
-    static public boolean contains(String container, String contents) {
-        return container.indexOf(contents) > -1;
-    }
-
-    /**
-     * <p>
-     * Method <code>equals</code> answers a boolean indicating if the
-     * parameter <code>string1</code> is equal to the parameter
-     * <code>string2</code>.
-     * </p>
-     * 
-     * @param string1
-     * @param string2
-     * @return boolean
-     */
-    static public boolean equals(String string1, String string2) {
-        return string1.equals(string2);
-    }
-
-    /**
-     * Returns true if the char is a special char for regex
-     */
-    private static boolean isRegexSpecialChar(char ch) {
-        return (ch == '*' || ch == '?' || ch == '+' || ch == '[' || ch == ']'
-                || ch == '(' || ch == ')' || ch == '|' || ch == '^'
-                || ch == '$' || ch == '.' || ch == '{' || ch == '}' || ch == '\\');
-    }
-
-    /**
-     * Returns true if the char is a special char for sieve matching
-     */
-    private static boolean isSieveMatcherSpecialChar(char ch) {
-        return (ch == '*' || ch == '?' || ch == '\\');
-    }
-
-    /**
-     * Converts a Sieve pattern in a java regex pattern
-     */
-    public static String sieveToJavaRegex(String pattern) {
-        int ch;
-        StringBuffer buffer = new StringBuffer(2 * pattern.length());
-        boolean lastCharWasStar = false;
-        for (ch = 0; ch < pattern.length(); ch++) {
-            final char nextChar = pattern.charAt(ch);
-            switch (nextChar) {
-            case '*':
-                //
-                // Java Matcher has issues with repeated stars
-                //
-                if (!lastCharWasStar) {
-                    buffer.append(".*");
-                }
-                break;
-            case '?':
-                buffer.append('.');
-                break;
-            case '\\':
-                buffer.append('\\');
-                if (ch == pattern.length() - 1)
-                    buffer.append('\\');
-                else if (isSieveMatcherSpecialChar(pattern.charAt(ch + 1)))
-                    buffer.append(pattern.charAt(++ch));
-                else
-                    buffer.append('\\');
-                break;
-            default:
-                if (isRegexSpecialChar(nextChar))
-                    buffer.append('\\');
-                buffer.append(nextChar);
-                break;
-            }
-            // Workaround for issue with Java Matcher
-            lastCharWasStar = '*' == nextChar;
-        }
-        return buffer.toString();
-    }
-
-    /**
-     * Method <code>contains<code> answers a boolean indicating if the parameter 
-     * <code>container</code> contains the parameter <code>contents</code> using an
-     * instance of <code>comparatorName</code>.
-     * @param comparatorName not null
-     * @param container not null
-     * @param contents not null
-     * @param context not null
-     * @return boolean
-     */
-    public static boolean contains(String comparatorName, String container,
-            String contents, SieveContext context) throws SieveException {
-        Contains comparatorObj = context.getComparatorManager().getComparator(comparatorName);
-        return comparatorObj.contains(container, contents);
-    }
-
-    /**
-     * Method <code>is<code> answers a boolean indicating if the parameter 
-     * <code>container</code> is equal to the parameter <code>contents</code> using 
-     * an instance of <code>comparatorName</code>.
-     * @param comparatorName
-     * @param string1 not null
-     * @param string2 not null
-     * @param context not null
-     * @return boolean
-     */
-    public static boolean is(String comparatorName, String string1,
-            String string2, SieveContext context) throws LookupException {
-        Equals comparatorObj = context.getComparatorManager().getComparator(comparatorName);
-        return comparatorObj.equals(string1, string2);
-    }
-
-    /**
-     * Method <code>matches</code> answers a boolean indicating if the
-     * parameter
-     * <code>string/code> is matched by the patterm <code>glob</code> using an
-     * instance of <code>comparatorName</code>.
-     * @param comparatorName not null
-     * @param string not null
-     * @param glob not null
-     * @param context not null
-     * @return boolean
-     */
-    public static boolean matches(String comparatorName, String string,
-            String glob, SieveContext context) throws SieveException {
-        Matches comparatorObj = context.getComparatorManager().getComparator(comparatorName);
-        return comparatorObj.matches(string, glob);
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/comparators/Contains.java b/trunk/main/src/main/java/org/apache/jsieve/comparators/Contains.java
deleted file mode 100644
index 7d82728..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/comparators/Contains.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.comparators;
-
-import org.apache.jsieve.exception.FeatureException;
-
-
-/**
- * Interface Contains defines the method signatures for contains comparators.
- */
-public interface Contains {
-
-    /**
-     * Method contains answers a <code>boolean</code> indicating if parameter
-     * <code>container</code> contains parameter <code>content</code> using
-     * the comparison rules defind by the implementation.
-     * 
-     * @param container
-     * @param content
-     * @return boolean
-     * @throws FeatureException when substring is unsupported
-     */
-    public boolean contains(String container, String content) throws FeatureException;
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/comparators/Equals.java b/trunk/main/src/main/java/org/apache/jsieve/comparators/Equals.java
deleted file mode 100644
index a619967..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/comparators/Equals.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.comparators;
-
-/**
- * Interface Equals defines the method signatures for equals comparators.
- */
-public interface Equals {
-    /**
-     * Method equals answers a <code>boolean</code> indicating if parameter
-     * <code>string1</code> is equal to parameter <code>string2</code> using
-     * the comparison rules defind by the implementation.
-     * 
-     * @param string1
-     * @param string2
-     * @return boolean
-     */
-    public boolean equals(String string1, String string2);
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/comparators/MatchTypeTags.java b/trunk/main/src/main/java/org/apache/jsieve/comparators/MatchTypeTags.java
deleted file mode 100644
index 3b33571..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/comparators/MatchTypeTags.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.comparators;
-
-/**
- * Interface MatchTypeTags defines the String constants used to specify an
- * MATCH-TYPE tag.
- */
-public interface MatchTypeTags {
-    public static final String IS_TAG = ":is";
-
-    public static final String CONTAINS_TAG = ":contains";
-
-    public static final String MATCHES_TAG = ":matches";
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/comparators/Matches.java b/trunk/main/src/main/java/org/apache/jsieve/comparators/Matches.java
deleted file mode 100644
index 63cd6fa..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/comparators/Matches.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.comparators;
-
-import org.apache.jsieve.exception.SieveException;
-
-/**
- * Interface Matches defines the method signatures for matches comparators.
- */
-public interface Matches {
-    /**
-     * Method matches answers a <code>boolean</code> indicating if parameter
-     * <code>string1</code> matches the pattern in parameter <code>glob</code>
-     * using the matching rules defind by the implementation.
-     * 
-     * @param string
-     * @param glob
-     * @return boolean
-     */
-    public boolean matches(String string, String glob) throws SieveException;
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/comparators/Octet.java b/trunk/main/src/main/java/org/apache/jsieve/comparators/Octet.java
deleted file mode 100644
index 2b6f7a9..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/comparators/Octet.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.comparators;
-
-import org.apache.jsieve.exception.SievePatternException;
-
-/**
- * Class Octet implements the EQUALITY operation of the i;octet comparator as
- * defined by RFC2244, section 3.4 - "For the equality function, two strings are
- * equal if they are the same length and contain the same octets in the same
- * order. NIL is equal only to itself".
- */
-public class Octet implements Comparator {
-
-    /**
-     * Constructor for Octet.
-     */
-    public Octet() {
-        super();
-    }
-
-    /**
-     * @see org.apache.jsieve.comparators.Equals#equals(String, String)
-     */
-    public boolean equals(String string1, String string2) {
-        return ComparatorUtils.equals(string1, string2);
-    }
-
-    /**
-     * @see org.apache.jsieve.comparators.Contains#contains(String, String)
-     */
-    public boolean contains(String container, String content) {
-        return ComparatorUtils.contains(container, content);
-    }
-
-    /**
-     * @see org.apache.jsieve.comparators.Matches#matches(String, String)
-     */
-    public boolean matches(String string, String glob)
-            throws SievePatternException {
-        return ComparatorUtils.matches(string, glob);
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/exception/CommandException.java b/trunk/main/src/main/java/org/apache/jsieve/exception/CommandException.java
deleted file mode 100644
index 03350c7..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/exception/CommandException.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.exception;
-
-/**
- * Class <code>CommandException</code> indicates an exceptional condition
- * encountered while executing a Command.
- * 
- */
-@SuppressWarnings("serial")
-public class CommandException extends OperationException {
-
-    /**
-     * Constructor for CommandException.
-     */
-    public CommandException() {
-        super();
-    }
-
-    /**
-     * Constructor for CommandException.
-     * 
-     * @param message
-     */
-    public CommandException(String message) {
-        super(message);
-    }
-
-    /**
-     * Constructor for CommandException.
-     * 
-     * @param message
-     * @param cause
-     */
-    public CommandException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Constructor for CommandException.
-     * 
-     * @param cause
-     */
-    public CommandException(Throwable cause) {
-        super(cause);
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/exception/FeatureException.java b/trunk/main/src/main/java/org/apache/jsieve/exception/FeatureException.java
deleted file mode 100644
index 32c3d2e..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/exception/FeatureException.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.exception;
-
-/**
- * Class FeatureException indicates an exceptional condition encountered while
- * evaluating a feature of Sieve.
- */
-@SuppressWarnings("serial")
-public class FeatureException extends SieveException {
-
-    /**
-     * Constructor for FeatureException.
-     */
-    public FeatureException() {
-        super();
-    }
-
-    /**
-     * Constructor for FeatureException.
-     * 
-     * @param message
-     */
-    public FeatureException(String message) {
-        super(message);
-    }
-
-    /**
-     * Constructor for FeatureException.
-     * 
-     * @param message
-     * @param cause
-     */
-    public FeatureException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Constructor for FeatureException.
-     * 
-     * @param cause
-     */
-    public FeatureException(Throwable cause) {
-        super(cause);
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/exception/InternetAddressException.java b/trunk/main/src/main/java/org/apache/jsieve/exception/InternetAddressException.java
deleted file mode 100644
index df76207..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/exception/InternetAddressException.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.exception;
-
-/**
- * Class InternetAddressException indicates an exceptional condition encountered
- * while evaluating an Internet Address.
- */
-@SuppressWarnings("serial")
-public class InternetAddressException extends SieveException {
-
-    /**
-     * Constructor for InternetAddressException.
-     */
-    public InternetAddressException() {
-        super();
-    }
-
-    /**
-     * Constructor for InternetAddressException.
-     * 
-     * @param message
-     */
-    public InternetAddressException(String message) {
-        super(message);
-    }
-
-    /**
-     * Constructor for InternetAddressException.
-     * 
-     * @param message
-     * @param cause
-     */
-    public InternetAddressException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Constructor for InternetAddressException.
-     * 
-     * @param cause
-     */
-    public InternetAddressException(Throwable cause) {
-        super(cause);
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/exception/LookupException.java b/trunk/main/src/main/java/org/apache/jsieve/exception/LookupException.java
deleted file mode 100644
index 660e111..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/exception/LookupException.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.exception;
-
-/**
- * Class LookupException indicates an exceptional condition encountered while
- * locating a Sieve resource.
- */
-@SuppressWarnings("serial")
-public class LookupException extends SieveException {
-
-    /**
-     * Constructor for LookupException.
-     */
-    public LookupException() {
-        super();
-    }
-
-    /**
-     * Constructor for LookupException.
-     * 
-     * @param message
-     */
-    public LookupException(String message) {
-        super(message);
-    }
-
-    /**
-     * Constructor for LookupException.
-     * 
-     * @param message
-     * @param cause
-     */
-    public LookupException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Constructor for LookupException.
-     * 
-     * @param cause
-     */
-    public LookupException(Throwable cause) {
-        super(cause);
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/exception/OperationException.java b/trunk/main/src/main/java/org/apache/jsieve/exception/OperationException.java
deleted file mode 100644
index 6ea8a05..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/exception/OperationException.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.exception;
-
-/**
- * Class <code>OperationException</code> indicates an exceptional condition
- * encountered while executing an Operation.
- * 
- */
-@SuppressWarnings("serial")
-public class OperationException extends SieveException {
-
-    /**
-     * Constructor for OperationException.
-     */
-    public OperationException() {
-        super();
-    }
-
-    /**
-     * Constructor for OperationException.
-     * 
-     * @param message
-     */
-    public OperationException(String message) {
-        super(message);
-    }
-
-    /**
-     * Constructor for OperationException.
-     * 
-     * @param message
-     * @param cause
-     */
-    public OperationException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Constructor for OperationException.
-     * 
-     * @param cause
-     */
-    public OperationException(Throwable cause) {
-        super(cause);
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/exception/SieveException.java b/trunk/main/src/main/java/org/apache/jsieve/exception/SieveException.java
deleted file mode 100644
index 90e8b10..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/exception/SieveException.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.exception;
-
-/**
- * Class <code>SieveException</code> indicates an exceptional condition
- * encountered within Sieve.
- */
-@SuppressWarnings("serial")
-public class SieveException extends Exception {
-
-    /**
-     * Constructor for SieveException.
-     */
-    public SieveException() {
-        super();
-    }
-
-    /**
-     * Constructor for SieveException.
-     * 
-     * @param message
-     */
-    public SieveException(String message) {
-        super(message);
-    }
-
-    /**
-     * Constructor for SieveException.
-     * 
-     * @param message
-     * @param cause
-     */
-    public SieveException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Constructor for SieveException.
-     * 
-     * @param cause
-     */
-    public SieveException(Throwable cause) {
-        super(cause);
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/exception/SievePatternException.java b/trunk/main/src/main/java/org/apache/jsieve/exception/SievePatternException.java
deleted file mode 100644
index cfb5a0b..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/exception/SievePatternException.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.exception;
-
-/**
- * Class <code>SievePatternException</code> indicates an exceptional condition
- * encountered while evaluating a glob expression.
- */
-@SuppressWarnings("serial")
-public class SievePatternException extends SieveException {
-
-    /**
-     * Constructor for SievePatternException.
-     */
-    public SievePatternException() {
-        super();
-    }
-
-    /**
-     * Constructor for SievePatternException.
-     * 
-     * @param message
-     */
-    public SievePatternException(String message) {
-        super(message);
-    }
-
-    /**
-     * Constructor for SievePatternException.
-     * 
-     * @param message
-     * @param cause
-     */
-    public SievePatternException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Constructor for SievePatternException.
-     * 
-     * @param cause
-     */
-    public SievePatternException(Throwable cause) {
-        super(cause);
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/exception/StopException.java b/trunk/main/src/main/java/org/apache/jsieve/exception/StopException.java
deleted file mode 100644
index 6cd36ed..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/exception/StopException.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.exception;
-
-/**
- * Class <code>StopException</code> indicates that evaluation should be
- * terminated. Typically, this exception is thrown when a Stop Command is
- * encountered.
- */
-@SuppressWarnings("serial")
-public class StopException extends SieveException {
-
-    /**
-     * Constructor for StopException.
-     */
-    public StopException() {
-        super();
-    }
-
-    /**
-     * Constructor for StopException.
-     * 
-     * @param message
-     */
-    public StopException(String message) {
-        super(message);
-    }
-
-    /**
-     * Constructor for StopException.
-     * 
-     * @param message
-     * @param cause
-     */
-    public StopException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Constructor for StopException.
-     * 
-     * @param cause
-     */
-    public StopException(Throwable cause) {
-        super(cause);
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/exception/SyntaxException.java b/trunk/main/src/main/java/org/apache/jsieve/exception/SyntaxException.java
deleted file mode 100644
index 4ea7a40..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/exception/SyntaxException.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.exception;
-
-/**
- * Class <code>SyntaxException</code> indicates an exceptional condition
- * encountered while evaluating the operands of a Sieve operation, such as a
- * Command, Test or Comparator.
- */
-@SuppressWarnings("serial")
-public class SyntaxException extends SieveException {
-
-    /**
-     * Constructor for SyntaxException.
-     */
-    public SyntaxException() {
-        super();
-    }
-
-    /**
-     * Constructor for SyntaxException.
-     * 
-     * @param message
-     */
-    public SyntaxException(String message) {
-        super(message);
-    }
-
-    /**
-     * Constructor for SyntaxException.
-     * 
-     * @param message
-     * @param cause
-     */
-    public SyntaxException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Constructor for SyntaxException.
-     * 
-     * @param cause
-     */
-    public SyntaxException(Throwable cause) {
-        super(cause);
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/exception/TestException.java b/trunk/main/src/main/java/org/apache/jsieve/exception/TestException.java
deleted file mode 100644
index 0b113c9..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/exception/TestException.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.exception;
-
-/**
- * Class <code>TestException</code> indicates an exceptional condition
- * encountered while executing a Test.
- * 
- */
-@SuppressWarnings("serial")
-public class TestException extends OperationException {
-
-    /**
-     * Constructor for TestException.
-     */
-    public TestException() {
-        super();
-    }
-
-    /**
-     * Constructor for TestException.
-     * 
-     * @param message
-     */
-    public TestException(String message) {
-        super(message);
-    }
-
-    /**
-     * Constructor for TestException.
-     * 
-     * @param message
-     * @param cause
-     */
-    public TestException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Constructor for TestException.
-     * 
-     * @param cause
-     */
-    public TestException(Throwable cause) {
-        super(cause);
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/mail/Action.java b/trunk/main/src/main/java/org/apache/jsieve/mail/Action.java
deleted file mode 100644
index d027a08..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/mail/Action.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mail;
-
-/**
- * Interface <code>Action</code> defines the final state of a
- * <code>MailAdapter</code> instance.
- */
-public interface Action {
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/mail/ActionFileInto.java b/trunk/main/src/main/java/org/apache/jsieve/mail/ActionFileInto.java
deleted file mode 100644
index 75ae7b2..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/mail/ActionFileInto.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mail;
-
-/**
- * Class ActionFileInto encapsulates the information required to file a mail
- * into a location. See RFC 3028, Section 4.2.
- */
-public class ActionFileInto implements Action {
-    /**
-     * A String representation of the location to which the message should be
-     * moved.
-     */
-    private String fieldDestination;
-
-    /**
-     * Constructor for ActionFileInto.
-     */
-    private ActionFileInto() {
-        super();
-    }
-
-    /**
-     * Constructor for ActionFileInto.
-     */
-    public ActionFileInto(String destination) {
-        this();
-        setDestination(destination);
-    }
-
-    /**
-     * Returns the destination.
-     * 
-     * @return String
-     */
-    public String getDestination() {
-        return fieldDestination;
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return "Action: " + getClass().getName() + ", destination: "
-                + getDestination();
-    }
-
-    /**
-     * Sets the destination.
-     * 
-     * @param destination
-     *            The destination to set
-     */
-    protected void setDestination(String destination) {
-        fieldDestination = destination;
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/mail/ActionKeep.java b/trunk/main/src/main/java/org/apache/jsieve/mail/ActionKeep.java
deleted file mode 100644
index 0ffab21..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/mail/ActionKeep.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mail;
-
-/**
- * Class ActionKeep encapsulates the information required to keep a mail. See
- * RFC 3028, Section 4.4.
- */
-public class ActionKeep implements Action {
-
-    /**
-     * Constructor for ActionKeep.
-     */
-    public ActionKeep() {
-        super();
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return "Action: " + getClass().getName();
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/mail/ActionRedirect.java b/trunk/main/src/main/java/org/apache/jsieve/mail/ActionRedirect.java
deleted file mode 100644
index 361d83a..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/mail/ActionRedirect.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mail;
-
-/**
- * Class ActionRedirect encapsulates the information required to redirect a
- * mail. See RFC 3028, Section 4.3.
- */
-public class ActionRedirect implements Action {
-    private String fieldAddress;
-
-    /**
-     * Constructor for ActionRedirect.
-     */
-    private ActionRedirect() {
-        super();
-    }
-
-    /**
-     * Constructor for ActionRedirect.
-     */
-    public ActionRedirect(String address) {
-        this();
-        setAddress(address);
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return "Action: " + getClass().getName() + ", address: " + getAddress();
-    }
-
-    /**
-     * Returns the address.
-     * 
-     * @return String
-     */
-    public String getAddress() {
-        return fieldAddress;
-    }
-
-    /**
-     * Sets the address.
-     * 
-     * @param address
-     *            The address to set
-     */
-    protected void setAddress(String address) {
-        fieldAddress = address;
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/mail/ActionReject.java b/trunk/main/src/main/java/org/apache/jsieve/mail/ActionReject.java
deleted file mode 100644
index 5ac440a..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/mail/ActionReject.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mail;
-
-/**
- * Class ActionReject encapsulates the information required to reject a mail.
- * See RFC 3028, Section 4.1.
- */
-public class ActionReject implements Action {
-    private String fieldMessage;
-
-    /**
-     * Constructor for ActionReject.
-     * 
-     * @param aMessage
-     */
-    public ActionReject(String aMessage) {
-        this();
-        setMessage(aMessage);
-    }
-
-    /**
-     * Constructor ActionReject.
-     */
-    private ActionReject() {
-        super();
-    }
-
-    /**
-     * @see java.lang.Object#toString()
-     */
-    public String toString() {
-        return "Action: " + getClass().getName();
-    }
-
-    /**
-     * Returns the message explaining the reason for rejection.
-     * 
-     * @return String
-     */
-    public String getMessage() {
-        return fieldMessage;
-    }
-
-    /**
-     * Sets the message explaining the reason for rejection.
-     * 
-     * @param message
-     *            The message to set
-     */
-    protected void setMessage(String message) {
-        fieldMessage = message;
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/mail/AddressImpl.java b/trunk/main/src/main/java/org/apache/jsieve/mail/AddressImpl.java
deleted file mode 100644
index 596a3af..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/mail/AddressImpl.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mail;
-
-/**
- * Simple immutable address implementation.
- */
-public final class AddressImpl implements MailAdapter.Address {
-
-    private final String localPart;
-
-    private final String domain;
-
-    /**
-     * Constructs an address.
-     * 
-     * @param localPart
-     *            the local part of the address
-     * @param domain
-     *            the domain part of the address
-     */
-    public AddressImpl(final String localPart, final String domain) {
-        super();
-        this.localPart = localPart;
-        this.domain = domain;
-    }
-
-    /**
-     * Gets the domain of the address.
-     * 
-     * @return domain
-     */
-    public String getDomain() {
-        return domain;
-    }
-
-    /**
-     * Gets the local part of the address.
-     */
-    public String getLocalPart() {
-        return localPart;
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/mail/MailAdapter.java b/trunk/main/src/main/java/org/apache/jsieve/mail/MailAdapter.java
deleted file mode 100644
index cfe0901..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/mail/MailAdapter.java
+++ /dev/null
@@ -1,227 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mail;
-
-import java.util.List;
-
-import org.apache.jsieve.SieveContext;
-import org.apache.jsieve.exception.InternetAddressException;
-import org.apache.jsieve.exception.SieveException;
-
-/**
- * <p>
- * Interface <code>MailAdapter</code> defines the minimum functionality
- * required of of a class implementing a mail message. This is the functionality
- * neccesary to implement the Commands and Tests that RFC32028 mandates MUST be
- * implemented.
- * </p>
- * 
- * <p>
- * Typically, implementations will wrap an application's pre-existing mail
- * message implementation. It is expected that implementations will extend the
- * minimum level of functionality to provide support for Command and Test
- * extensions that exploit the capabilities of a particular application.
- * </p>
- * 
- * <h4>Implementing parseAddresses</h4>
- * <p>
- * <a href='http://james.apache.org/mime4j'>Apache Mime4J</a> is a parser for
- * <abbr title='Multipurpose Internet Mail Extensions'> <a
- * href='http://www.faqs.org/rfcs/rfc2045.html'>MIME</a></abbr>. It can easily
- * be used to parse an address string into addresses. For example:
- * </p>
- * <code><pre>
- *       import org.apache.james.mime4j.field.address.AddressList;
- *       import org.apache.james.mime4j.field.address.Mailbox;
- *       import org.apache.james.mime4j.field.address.MailboxList;
- *       import org.apache.james.mime4j.field.address.parser.ParseException;
- *       ...
- *       public Address[] parseAddresses(String arg) throws SieveMailException, InternetAddressException {
- *           try {
- *               final MailboxList list = AddressList.parse(arg).flatten();
- *               final int size = list.size();
- *               final Address[] results = new Address[size];
- *               for (int i=0;i&lt;size;i++) {
- *                   final Mailbox mailbox = list.get(i);
- *                   results[i] = new AddressImpl(mailbox.getLocalPart(), mailbox.getDomain());
- *               }
- *               return null;
- *           } catch (ParseException e) {
- *               throw new InternetAddressException(e);
- *           }
- *       }
- * </pre></code>
- */
-public interface MailAdapter {
-    
-    /**
-     * <p>Sets the context for the current sieve script execution.</p>
-     * <p>Sieve engines <code>MUST</code> set this property before any calls
-     * related to the execution of a script are made.</p>
-     * <p>Implementations intended to be shared between separate threads of
-     * execution <code>MUST</code> ensure that they manage concurrency contexts,
-     * for example by storage in a thread local variable. Engines <code>MUST</code>
-     * - for a script execution - ensure that all calls are made within the
-     * same thread of execution.</p>
-     * @param context the current context, 
-     * or null to clear the contest once the execution of a script has completed.
-     */
-    public void setContext(SieveContext context);
-    
-    /**
-     * Method getActions answers the List of Actions accumulated by the
-     * receiver. Implementations may elect to supply an unmodifiable collection.
-     * 
-     * @return <code>List</code> of {@link Action}'s, not null, possibly
-     *         unmodifiable
-     */
-    public List<Action> getActions();
-    
-    /**
-     * Method getHeader answers a List of all of the headers in the receiver
-     * whose name is equal to the passed name. If no headers are found an empty
-     * List is returned.
-     * 
-     * @param name
-     * @return <code>List</code> not null, possibly empty, possible
-     *         unmodifiable
-     * @throws SieveMailException
-     */
-    public List<String> getHeader(String name) throws SieveMailException;
-
-    /**
-     * <p>
-     * Method getMatchingHeader answers a List of all of the headers in the
-     * receiver with the passed name. If no headers are found an empty List is
-     * returned.
-     * </p>
-     * 
-     * <p>
-     * This method differs from getHeader(String) in that it ignores case and
-     * the whitespace prefixes and suffixes of a header name when performing the
-     * match, as required by RFC 3028. Thus "From", "from ", " From" and " from "
-     * are considered equal.
-     * </p>
-     * 
-     * @param name
-     * @return <code>List</code>, not null possibly empty, possible
-     *         unmodifiable
-     * @throws SieveMailException
-     */
-    public List<String> getMatchingHeader(String name) throws SieveMailException;
-
-    /**
-     * Method getHeaderNames answers a List of all of the headers in the
-     * receiver. No duplicates are allowed.
-     * 
-     * @return <code>List</code>, not null possible empty, possible
-     *         unmodifiable
-     * @throws SieveMailException
-     */
-    public List<String> getHeaderNames() throws SieveMailException;
-
-    /**
-     * Method addAction adds an Action to the List of Actions to be performed by
-     * the receiver.
-     * 
-     * @param action
-     */
-    public void addAction(Action action);
-
-    /**
-     * Method executeActions. Applies the Actions accumulated by the receiver.
-     */
-    public void executeActions() throws SieveException;
-
-    /**
-     * Method getSize answers the receiver's message size in octets.
-     * 
-     * @return int
-     * @throws SieveMailException
-     */
-    int getSize() throws SieveMailException;
-
-    /**
-     * Method getContentType returns string/mime representation of the message
-     * type.
-     * 
-     * @return String
-     * @throws SieveMailException
-     */
-    public String getContentType() throws SieveMailException;
-
-    /**
-     * Is the given phrase found in the body text of this mail?
-     * This search should be case insensitive.
-     * @param phraseCaseInsensitive the phrase to search
-     * @return true when the mail has a textual body and contains the phrase
-     * (case insensitive), false otherwise
-     * @throws SieveMailException when the search cannot be completed
-     */
-    public boolean isInBodyText(final String phraseCaseInsensitive) throws SieveMailException;
-    
-    /**
-     * <p>
-     * Parses the named header value into individual addresses.
-     * </p>
-     * 
-     * <p>
-     * Headers should be matched in a way that ignores case and the whitespace
-     * prefixes and suffixes of a header name when performing the match, as
-     * required by RFC 3028. Thus "From", "from ", " From" and " from " are
-     * considered equal.
-     * </p>
-     * 
-     * @param headerName
-     *            name of the header whose value is to be split
-     * @return addresses listed in the given header not null, possibly empty
-     * @throws InternetAddressException
-     *             when the header value is not an address or list of addresses.
-     *             Implemetations may elect to support only standard headers
-     *             known to containing one or more addresses rather than parsing
-     *             the value content
-     * @throws SieveMailException
-     *             when the header value cannot be read
-     */
-    public Address[] parseAddresses(String headerName)
-            throws SieveMailException, InternetAddressException;
-
-    /**
-     * Contains address data required for SIEVE processing.
-     */
-    public interface Address {
-
-        /**
-         * Gets the local part of the email address. Specified in <a
-         * href='http://james.apache.org/server/rfclist/basic/rfc0822.txt'>RFC822</a>.
-         * 
-         * @return local part, not null
-         */
-        public String getLocalPart();
-
-        /**
-         * Gets the domain part of the email address. Specified in <a
-         * href='http://james.apache.org/server/rfclist/basic/rfc0822.txt'>RFC822</a>.
-         * 
-         * @return domain, not null
-         */
-        public String getDomain();
-    }
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/mail/MailUtils.java b/trunk/main/src/main/java/org/apache/jsieve/mail/MailUtils.java
deleted file mode 100644
index 4aea773..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/mail/MailUtils.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mail;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Class MailUtils implements utility methods that are useful when processing
- * Sieve mail.
- */
-public class MailUtils {
-
-    /**
-     * Constructor for MailUtils.
-     */
-    protected MailUtils() {
-        super();
-    }
-
-    /**
-     * <p>
-     * Method getMatchingHeader answers a List of all of the headers in the mail
-     * with the passed name. If no headers are found an empty List is returned.
-     * </p>
-     * 
-     * <p>
-     * This method differs from MailAdapter.getHeader(String) in that it ignores
-     * case and whitespace prefixes and suffixes to a header name when
-     * performing the match, as required by RFC 3028. Thus "From", "from ", "
-     * From" and " from " are considered equal.
-     * </p>
-     * 
-     * @param name
-     * @return List
-     * @throws SieveMailException
-     */
-    static public List<String> getMatchingHeader(MailAdapter mail, String name)
-            throws SieveMailException {;
-        final List<String> matchedHeaderValues = new ArrayList<String>(32);
-        for (String headerName: mail.getHeaderNames()) {
-            if (headerName.trim().equalsIgnoreCase(name))
-                matchedHeaderValues.addAll(mail.getHeader(headerName));
-        }
-        return matchedHeaderValues;
-    }
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/mail/SieveMailException.java b/trunk/main/src/main/java/org/apache/jsieve/mail/SieveMailException.java
deleted file mode 100644
index e6e98d5..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/mail/SieveMailException.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mail;
-
-import org.apache.jsieve.exception.SieveException;
-
-/**
- * Class <code>SieveMailException</code> indicates an exceptional condition
- * encountered while processing Sieve Mail.
- */
-@SuppressWarnings("serial")
-public class SieveMailException extends SieveException {
-
-    /**
-     * Constructor for SieveMailException.
-     */
-    public SieveMailException() {
-        super();
-    }
-
-    /**
-     * Constructor for SieveMailException.
-     * 
-     * @param message
-     */
-    public SieveMailException(String message) {
-        super(message);
-    }
-
-    /**
-     * Constructor for SieveMailException.
-     * 
-     * @param message
-     * @param cause
-     */
-    public SieveMailException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    /**
-     * Constructor for SieveMailException.
-     * 
-     * @param cause
-     */
-    public SieveMailException(Throwable cause) {
-        super(cause);
-    }
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/mail/optional/EnvelopeAccessors.java b/trunk/main/src/main/java/org/apache/jsieve/mail/optional/EnvelopeAccessors.java
deleted file mode 100644
index f772a4d..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/mail/optional/EnvelopeAccessors.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.mail.optional;
-
-import java.util.List;
-
-import org.apache.jsieve.mail.SieveMailException;
-
-/**
- * Interface EnvelopeAccessors specifies the method signatures required to
- * support the Envelope Test.
- */
-public interface EnvelopeAccessors {
-    /**
-     * Method getEnvelope answers a List of all of the envelope values in the
-     * receiver whose name is equal to the passed name. If no values are found
-     * an empty List is returned.
-     * 
-     * @param name
-     * @return List
-     * @throws SieveMailException
-     */
-    public List<String> getEnvelope(String name) throws SieveMailException;
-
-    /**
-     * Method getEnvelopeNames answers a List of the names of the envelope
-     * values in the receiver. No duplicates are allowed.
-     * 
-     * @return List
-     * @throws SieveMailException
-     */
-    public List<String> getEnvelopeNames() throws SieveMailException;
-
-    /**
-     * <p>
-     * Method getMatchingEnvelope answers a List of all of the envelope values
-     * in the receiver with the passed name. If no matching names are found an
-     * empty List is returned.
-     * </p>
-     * 
-     * <p>
-     * This method differs from getEnvelope(String) in that it ignores case and
-     * the whitespace prefixes and suffixes of an envelope value name when
-     * performing the match, as required by RFC 3028. Thus "From", "from ", "
-     * From" and " from " are considered equal.
-     * </p>
-     * 
-     * @param name
-     * @return List
-     * @throws SieveMailException
-     */
-    public List<String> getMatchingEnvelope(String name) throws SieveMailException;
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/parser/SieveNode.java b/trunk/main/src/main/java/org/apache/jsieve/parser/SieveNode.java
deleted file mode 100644
index 000bd6d..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/parser/SieveNode.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.parser;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import org.apache.jsieve.ScriptCoordinate;
-import org.apache.jsieve.parser.generated.Token;
-
-/**
- * Class SieveNode defines aspects all jjTree parse nodes may require.
- * 
- * Creation Date: 27-Jan-04
- */
-public class SieveNode {
-
-    /**
-     * Constructor for SieveNode.
-     */
-    public SieveNode() {
-        super();
-    }
-
-    private Token firstToken;
-
-    private Token lastToken;
-
-    /**
-     * The name associated to this node or null
-     */
-    private String fieldName;
-
-    /**
-     * The value associated to this node or null
-     */
-    private Object fieldValue;
-
-    /**
-     * Returns the name.
-     * 
-     * @return String
-     */
-    public String getName() {
-        return fieldName;
-    }
-
-    /**
-     * Returns the value.
-     * 
-     * @return Object
-     */
-    public Object getValue() {
-        return fieldValue;
-    }
-
-    /**
-     * Sets the name.
-     * 
-     * @param name
-     *            The name to set
-     */
-    public void setName(String name) {
-        fieldName = name;
-    }
-
-    /**
-     * Sets the value.
-     * 
-     * @param value
-     *            The value to set
-     */
-    public void setValue(Object value) {
-        fieldValue = value;
-    }
-
-    /**
-     * Gets the first token comprising this node.
-     * 
-     * @return <code>Token</code>, not null
-     */
-    public Token getFirstToken() {
-        return firstToken;
-    }
-
-    /**
-     * Sets the first token comprising this node.
-     * 
-     * @param firstToken
-     *            <code>Token</code>, not null
-     */
-    public void setFirstToken(Token firstToken) {
-        this.firstToken = firstToken;
-    }
-
-    /**
-     * Gets the last token comprising this node.
-     * 
-     * @return <code>Token</code>, not null
-     */
-    public Token getLastToken() {
-        return lastToken;
-    }
-
-    /**
-     * Sets the last token comprising this node.
-     * 
-     * @param lastToken
-     *            <code>Token</code>, not null
-     */
-    public void setLastToken(Token lastToken) {
-        this.lastToken = lastToken;
-    }
-
-    /**
-     * Gets the position of this node in the script.
-     * 
-     * @return <code>ScriptCoordinate</code> containing the position of this
-     *         node, not null
-     */
-    public ScriptCoordinate getCoordinate() {
-        final int lastColumn = lastToken.endColumn;
-        final int lastList = lastToken.endLine;
-        final int firstColumn = firstToken.beginColumn;
-        final int firstLine = firstToken.beginLine;
-        final ScriptCoordinate scriptCoordinate = new ScriptCoordinate(
-                firstLine, firstColumn, lastList, lastColumn);
-        return scriptCoordinate;
-    }
-
-    /**
-     * Get any comments between this node and the previous one.
-     * Each comment is returned without whitespace trimming.
-     * Comments are returned in the order of occurance in the script.
-     * @return collection of strings, not null
-     */
-    public List<String> getPrecedingComments() {
-        final LinkedList<String> results = new LinkedList<String>();
-        if (firstToken != null) {
-            Token special = firstToken.specialToken;
-            while (special != null) {
-                final String comment = parseComment(special);
-                results.addFirst(comment);
-                special = special.specialToken;
-            }
-        }
-        return results;
-    }
-
-    private String parseComment(Token special) {
-        final String image = special.image;
-        final String comment;
-        if ('#' == image.charAt(0)) {
-            final int leftHandCharactersToIgnore;
-            if ('\r' == image.charAt(image.length()-2)) {
-                leftHandCharactersToIgnore = 2;
-            } else {
-                leftHandCharactersToIgnore = 1;
-            }
-            comment = image.substring(1, image.length()-leftHandCharactersToIgnore);
-        } else {
-            comment = image.substring(2, image.length()-2);
-        }
-        return comment;
-    }
-    
-    /**
-     * Get the last comment before this node and after the last node.
-     * Each comment is returned without whitespace trimming.
-     * Comments are returned in the order of occurance in the script.
-     * @return the comment without whitespace trimming,
-     * or null if there is no comment between this and the last node
-     */
-    public String getLastComment() {
-        final String result;
-        if (firstToken == null) {
-            result = null;
-        } else {
-            Token special = firstToken.specialToken;
-            if (special == null) {
-                result = null;
-            } else {
-                result = parseComment(special);
-            } 
-        }
-        return result;
-    }
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/parser/address/AddressNode.java b/trunk/main/src/main/java/org/apache/jsieve/parser/address/AddressNode.java
deleted file mode 100644
index 2b7ef10..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/parser/address/AddressNode.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.parser.address;
-
-import org.apache.jsieve.parser.generated.address.Token;
-
-public class AddressNode {
-
-    public Token firstToken = null;
-
-    public Token lastToken = null;
-
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/parser/address/BaseAddressListVisitor.java b/trunk/main/src/main/java/org/apache/jsieve/parser/address/BaseAddressListVisitor.java
deleted file mode 100644
index 65d6cc1..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/parser/address/BaseAddressListVisitor.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.parser.address;
-
-import org.apache.jsieve.parser.generated.address.ASTaddr_spec;
-import org.apache.jsieve.parser.generated.address.ASTaddress;
-import org.apache.jsieve.parser.generated.address.ASTaddress_list;
-import org.apache.jsieve.parser.generated.address.ASTangle_addr;
-import org.apache.jsieve.parser.generated.address.ASTdomain;
-import org.apache.jsieve.parser.generated.address.ASTgroup_body;
-import org.apache.jsieve.parser.generated.address.ASTlocal_part;
-import org.apache.jsieve.parser.generated.address.ASTmailbox;
-import org.apache.jsieve.parser.generated.address.ASTname_addr;
-import org.apache.jsieve.parser.generated.address.ASTphrase;
-import org.apache.jsieve.parser.generated.address.ASTroute;
-import org.apache.jsieve.parser.generated.address.AddressListParserVisitor;
-import org.apache.jsieve.parser.generated.address.SimpleNode;
-
-/**
- * Do nothing implementation suitablae for subclassing.
- */
-public abstract class BaseAddressListVisitor implements
-        AddressListParserVisitor {
-
-    public Object visit(SimpleNode node, Object data) {
-        return node.childrenAccept(this, data);
-    }
-
-    public Object visit(ASTaddress_list node, Object data) {
-        return node.childrenAccept(this, data);
-    }
-
-    public Object visit(ASTaddress node, Object data) {
-        return node.childrenAccept(this, data);
-    }
-
-    public Object visit(ASTmailbox node, Object data) {
-        return node.childrenAccept(this, data);
-    }
-
-    public Object visit(ASTname_addr node, Object data) {
-        return node.childrenAccept(this, data);
-    }
-
-    public Object visit(ASTgroup_body node, Object data) {
-        return node.childrenAccept(this, data);
-    }
-
-    public Object visit(ASTangle_addr node, Object data) {
-        return node.childrenAccept(this, data);
-    }
-
-    public Object visit(ASTroute node, Object data) {
-        return node.childrenAccept(this, data);
-    }
-
-    public Object visit(ASTphrase node, Object data) {
-        return node.childrenAccept(this, data);
-    }
-
-    public Object visit(ASTaddr_spec node, Object data) {
-        return node.childrenAccept(this, data);
-    }
-
-    public Object visit(ASTlocal_part node, Object data) {
-        return node.childrenAccept(this, data);
-    }
-
-    public Object visit(ASTdomain node, Object data) {
-        return node.childrenAccept(this, data);
-    }
-}
diff --git a/trunk/main/src/main/java/org/apache/jsieve/parser/address/SieveAddressBuilder.java b/trunk/main/src/main/java/org/apache/jsieve/parser/address/SieveAddressBuilder.java
deleted file mode 100644
index 284a136..0000000
--- a/trunk/main/src/main/java/org/apache/jsieve/parser/address/SieveAddressBuilder.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.jsieve.parser.address;
-
-import java.io.Reader;
-import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-
-import org.apache.jsieve.mail.MailAdapter;
-import org.apache.jsieve.mail.MailAdapter.Address;
-import org.apache.jsieve.parser.generated.address.ASTaddr_spec;
-import org.apache.jsieve.parser.generated.address.ASTaddress_list;
-import org.apache.jsieve.parser.generated.address.ASTdomain;
-import org.apache.jsieve.parser.generated.address.ASTlocal_part;
-import org.apache.jsieve.parser.generated.address.AddressListParser;
-import org.apache.jsieve.parser.generated.address.ParseException;
-import org.apache.jsieve.parser.generated.address.Token;
-
-/**
- * Builds <code>MailAdapter.Address</code> from address lists. Note that
- * implementators of {@link MailAdapter} are recommended to use a fully featured
- * and maintained parser such as <a href='http://james.apache.org/mime4j'>Apache
- * Mime4J</a>. This implementation is based on Mime4J code but is intended only
- * for internal and demonstration purposes. It is not actively maintained.
- */
-public class SieveAddressBuilder {
-
-    private static final Address[] EMPTY_ADDRESSES = {};
-
-    private final Collection<Address> addresses;
-
-    private final Worker worker;
-
-    public SieveAddressBuilder() {
-