An IClassWeaver is initialized with a class (a type, really, but let's ignore that for now) and a world, and has one method that
actually weaves the contents of the world into the class implementation.
Interface that can be implemented by MessageHandlers that need to
perform some additional processing when a build is starting and
when it has finished.
This static void method goes on the aspect that declares the inter-type field and is called from the appropriate place
(target's initializer, or clinit, or topmost implementer's inits), to initialize the field;
Returns whether or not this shadow munger came from a binary aspect - keep a record of whether or not we've checked if we're
binary otherwise we keep calculating the same thing many times
Check if the annotations contain a SuppressAjWarnings annotation and if that annotation specifies that the given lint message
(identified by its key) should be ignored.