This examples plug-in demonstrates the following features:

1. deferred tree/table population
    - serialized children fetch jobs or concurrent
    - batching updates to the collector
    - (optional) different ways of showing progress replacing current pending node (e.g. changing parent's label / image)
    
2. progress view
    - cancellation
    - showing progress, sub tasks
    - showing errors
    - progress groups
    - appearing/disapearing as floating window
    - system jobs aren't shown
    
3. requestInUI
    - post a request
    - post a request then cancel before user has launched it
    - post a request, cancel, and replace with another
    - post a request and allow the user to cancel without running the request
    
4. blocked foreground operation
    - run a background job that locks the workspace
    - run a foreground job that requires workspace (expect blocked dialog with progress view embeded)
    - open an editor and type then save (progress dialog should show blocked)
    
5. workbench part support for progress
    - run a job in the context of a view/editor
    - get busy cursor plus animating something
    - view or editor adding their own custom behavior when job is run
    
6. Creating progress groups
    - that are run serialized
    - that are run concurrently
    - cancel one sub job
    - parent is updated correctly
    
7. running action via busyCursorWhile