Compile the annotation tests with the annotations in the class path

Earlier, if the annotations were already up-to-date (but
Annotations.class not), the compilation would fail.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Proxy: make all methods public

Proxies implement interfaces whose methods *must* be public, as per the
specification of the Java language.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
AnnotationInvocationHandler: avoid calling Method#getName too often

This is only a cosmetic change, but we should not call getName()
over and over again ;-)

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Implement Method#getDefaultValue()

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Use the default value in annotations' proxies

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Pass the correct Method instance to the InvocationHandlers

We should pass the method of the original interface to the
InvocationHandler, not the method of the interface.

That way, proxy instances of annotations will have easy access to
the default values.

This happens to be compatible with the way Oracle Java does it, too.

To accomplish our goal, we keep a global map between proxy classes and
Method references and assign the appropriate list to a field of the
Proxy subclass. This means that we now have to call the super-class
constructor in the generated constructor (which is the correct thing to
do anyway... ;-)).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Verify that Proxy instances have access to annotations' default values

For quick access, the sezpoz library stores lists in
META-INF/annotations/ of classes that have been annotated in a
special way.

To support the use case where the annotations actually changed since
sezpoz stored said lists, sezpoz then creates proxy instances for the
annotations to provide some backwards compatibility: as long as there
are default values for any newly-introduced annotation values,
everything is groovy.

Therefore, let's make sure that proxy instances inherit the
annotations' default values.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Fix parsing of recursive annotations

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Test complicated annotation constructs

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Merge pull request #102 from dscho/proxy-annotations

This looks good to me, good work.