Apache Forrest
Copyright 2002-2007 The Apache Software Foundation.

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

See also the file LICENSE.txt

------------------------------------------------------------------------
The purpose of this NOTICE.txt file is to contain notices that are
required by the copyright owner and their license. Some of the
accompanying products have an attribution requirement, so see below.
Other accompanying products do not require attribution, so are not listed.

------------------------------------------------------------------------
This product includes software developed by the OpenSymphony Group
http://www.opensymphony.com/

This product includes software developed for project Krysalis
http://www.krysalis.org/

This product includes software developed by Andy Clark.
http://people.apache.org/~andyc/neko/

This product includes software developed by the ExoLab Project
http://www.exolab.org/

This product includes software developed by TouchGraph LLC
http://www.touchgraph.com/

This product includes software developed by Marc De Scheemaecker
http://nanoxml.cyberelf.be/

This product includes software developed by the ANTLR project
http://www.antlr.org/

This product includes software developed by Chaperon
http://chaperon.sourceforge.net/

This product includes software developed by Sal Mangano (included in the XSLT Cookbook published by O'Reilly)
http://www.oreilly.com/catalog/xsltckbk/

This product includes software developed by The Werken Company.
http://jaxen.werken.com/

This product includes software developed by the jfor project
http://www.jfor.org/
