This is a list of features, that would be nice to have:

Decompiler:
 - outline inlined methods.
 - remove string decrypt method.
 - remove synthetic methods if and only if all calls to them are resolved.

Obfuscator:
 - flow obfuscation/optimization.
 - warn about Class.forName and list occurences.
 - detect Class.forName on constant strings and handle appropriately.
 - work around Class.forName, by creating a new version using a hash
   table that maps md5 sums of old names to obfuscated names.

DeObfuscator:
 - generate nice names:
    - classes: derive name from super. 
    - fields:  derive name from type.
 - give synthetic methods the right attribute and name (e.g. class$)
 - detect inner classes and give suitable names.
 
User Interface:
 - make a nice user interface:
   - list fields/method of selected class.
   - show only decompilation of selected method.
   - show usage of method/fields.
 - syntax highlighting, hyper links etc.  
	(look at java.swing.JEditorPane or at Java Insight)
 - visual obfuscation/deobfuscation (like klassmaster?, better?)

Internal:
 - clean up package hierarchy, esp. expr, flow and decompiler.
 - move to net.sf.jode package.
 - make the class names more precise, e.g. StructuredBlock is Statement,
   FlowBlock is BasicBlock.
