TODO list for BSF 2.3.0-1:

    use a discovery mechanism like JAXP in place of Languages.properties

    break out messages for both runtime and debugging into properties files

    work out a better procedure for obtaining language jarfiles
    Maven/Ibiblio and replacement of CVS with Subversion are possibilities

    improve doc generation and distribution

    provide/incorporate patches for Jasper 4.0.x, 4.1.x, and 5.x.

TODO list for BSF 2.4.0:

    work on improving BSF global scope, e.g.:
        public Boolean variableExists()
        public Object getVariableValue()
        public void setVariableValue()
        ...

TODO list for BSF 3.0.0:

    address debug support for multiple languages (JSR-045?)
