This is a long list...

Overall
-------

1. Comment the code.

2. Write a user's guide.

3. Write a developer's guide (for the compiler+executor idea). Make
   the interpreter+executor pluggable so that the XML document can be
   anything, including a XML database.

4. Generate JavaDoc.

5. Check for memory leak or loiterers.

6. Make it thread-safe for the packages.

7. It looks like the program is retaining memory. Must get rid of
   this problem.

8. Never tested the thing against unicode. Will have to do that before
   going beta.

9. Get the images to be location independent. Maybe should use an
   installer to package the tool.

10. See what the maximum size of an XML document is before the program
    crashes.

11. Make the program faster, less memory intensive, more reliable,
    more robust, etc.

Features
--------

1. Implement a session concept so that variables, keys, and documents
   can be handled properly.

2. Remove variable handling and re-implement when sessions are here.

3. Implement key().

4. Implement Unicode support. Possibly other encoding support too.

5. XPointer functions.

Grammar
-------

1. Include the full XML character code for names.

2. Modify the grammar to be a good citizen of SableCC. The '*' is
   killing me and I have to go look at the dragon book to fix this.

3. Modify the grammar to accept functions that are not in XPath and
   XSLT. This should come in handy for XPointer or any other specs
   that use XPath.

4. Remove SableCC from the tool. Write a parser myself.

Interpreter
-----------

1. Handle errors with more grace by giving better error message than
   the default SableCC messages.

2. Stepping is not as nice as it should be.

3. Handling of functions should be a bit better. Replace the handling
   of the function at the end to the front. Does not look right for
   novice users.

4. Allows the use of an interface for the executor instead of the
   fixed executor currently allowed.

5. Move into a separate package.

Main
----

1. The relationship between Main, DriverFrame, Interpreter, Executor
   leaves a lot to be desired. Untangle it.

2. Should probably have a real class for the main program and move the
   functionality into a different package.

DriverFrame
-----------

1. A bit too confusing right now. Clean up the code.

2. Change into an interface and an abstract class to allow a new GUI
   for the tool.

Executor
--------

1. Change into an interface and an abstract class.

2. Move it to a separate package.

3. Allow it to store the instructions. That is, compile the
   expressions into reusable instructions.

4. Allow it to rewind instructions.

Context
-------

1. Change into an interface and an abstract class.

2. Allow undo.

3. Better error chacking and error message.

4. Better interface strategy with the executor.

TreeNode
--------

1. Clean up the abstract class and make it into an interface.

StackNode
---------

1. Clean up the abstract class and make it into an interface.

GUI
---

1. Use icons to make the tree looks nicer. [Done 1999-12-15]

2. Use 2D api to draw a real tree, not a JTree.

XMLParser
---------

1. Clean up SaxTree.

