1. A method for processing a data stream comprising: receiving a data stream input at a scanner component, the data stream input representing a plurality of program elements; and scanning the data stream input for annotations, scanning the data stream input including: encountering a description of a data type, informing a handler component regarding the data type description, determining whether to process program elements within the data type, the determination being based at least in part on any messages received from the handler component indicating that the data type is not of interest, and if there is a determination to process the program elements in the data type, scanning the program elements of the type to identify annotated program elements and associated annotation values.