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.
Install global values into local config unless values conflict:
Collections are unioned
values takes local value unless default and global set
this only sets one of outputDir and outputJar as needed
This also configures super if javaOptions change.
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;
The member finder looks after intertype declared inner classes on a type, there is one member finder per type that was hit by an
new inner type declaration.
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.