An AppGranule represents a particular application - e.g. Adobe InDesign, Illustrator, QuarkXPress...
AppGranule normally don't roam the data flow. Instead they represent the application that's hosting the current Crawler conversion.
The AppGranule provides an easy 'repository' for application-specific data.
Another function of the AppGranule is to serve as the 'parent granule' of all 'top level' granules.
Normally, there is only a single AppGranule for the current Crawler session.
E.g. when running an InDesign-to-something conversion, the 'host' application will be InDesign, and there will be a single InDesignAppGranule available.