All
Marko has added caching for the hashcode value on AnnotationLiteral, which is based on the
premise that an AnnotationLiteral is not mutable.
https://github.com/luksa/cdi/commit/f3c200fcdf8ca8681c194c921567aedcce375102
This is a reasonable thing to require (as real annotations are normally immutable!) and a
very good optimisation, however it is not backwards compatible, as we have not previously
required AnnotationLiteral to be immutable.
An alternative option is to introduce the ImmutableAnnotationLiteral subclass, which would
require any concrete instances to be immutable and could use this optimisation. We could
"deprecate" AnnotationLiteral (as described in
java.net/projects/javaee-spec/pages/CompatibilityRequirements).
Note that regardless, we can apply the minor optimisation suggested by Mark, that we
return 0 if the annotation has no members.
Pete