The webhelpindexer is released under the Apache 2.0 license and
includes software from other projects.

The webhelpindexer was originally developed by N. Quaine and released
under a MIT/BSD-style license. See LICENSE.txt.

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

This product also includes software released as part of the Snowball
project maintained by Martin Porter and Richard Boulton released under
a BSD-style license: http://snowball.tartarus.org/
