show stoppers
-------------
- package local types in another compilation unit doesn't get proper IDs.
- main page is slow to load. move most JavaScript to another frame.
  (in place reloading is not very attractive because it renders the back button useless.)
- jump to a line number doesn't work correctly from findUsage
- if there's only one hit in the find usage, jump right away
- outline method list doesn't have parameter type names.

other issues
------------
- come up with a naming scheme for inner and local types.
  what if we use encoded names, like binary name.

  org.acme.Foo$Nested
              ~~~~~~~ <- for nested type, simply its name.
                         for local types, number that represents its uniqueness

- local types can be only referenced from the same cu.
- "usage search" index is often broken if source files fail to analyze

- consider eliminating usage table for Object, String, and a few other very common types.
  index often just gets too large.
- labels and break/continue
- block folding
- when jumping to definition, move to the center screen
- better handling for jumping to external source files
  (including JRE)
- search for usage
  - support for searching declarations that are confied within a single compilation unit,
    such as local variables. They don't produce usage index, so we need a different scheme.
  - usage of private methods are always confined within a single CU.
    think about those cases and reduce the size of the usage index.
  - highlight the usage in the source view

Notes
-----
- DOM manipulation turns out to be expensive.