Apache BSF Engine Factories
Copyright (c) 1999 - 2010 The Apache Software Foundation

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

The Apache BSF binary distribution includes software distributed under the
BSD License. See the LICENSE file for details.

COPYRIGHT NOTICES

* The Apache BSF binary includes script engine factories under the following copyright:
    Copyright (c) 2006, Sun Microsystems, Inc.






