@@ -0,0 +1,2367 @@
+package io.github.classgraph.features;%0A%0Aimport static org.assertj.core.api.Assertions.assertThat;%0A%0Aimport java.lang.annotation.Annotation;%0Aimport java.lang.annotation.Retention;%0Aimport java.lang.annotation.RetentionPolicy;%0A%0Aimport org.junit.Test;%0A%0Aimport io.github.classgraph.AnnotationInfo;%0Aimport io.github.classgraph.ClassGraph;%0Aimport io.github.classgraph.ClassInfo;%0Aimport io.github.classgraph.ScanResult;%0A%0A/**%0A * The Class AnnotationEquality.%0A */%0Apublic class AnnotationEquality %7B%0A    /**%0A     * The Interface W.%0A     */%0A    private static interface W %7B%0A    %7D%0A%0A    /**%0A     * The Interface X.%0A     */%0A    @Retention(RetentionPolicy.RUNTIME)%0A    private static @interface X %7B%0A        /**%0A         * A.%0A         *%0A         * @return the int%0A         */%0A        int a() default 3;%0A%0A        /**%0A         * B.%0A         *%0A         * @return the int%0A         */%0A        int b();%0A%0A        /**%0A         * C.%0A         *%0A         * @return the class%5B%5D%0A         */%0A        Class%3C?%3E%5B%5D c();%0A    %7D%0A%0A    /**%0A     * The Class Y.%0A     */%0A    @X(b = 5, c = %7B Long.class, Integer.class, AnnotationEquality.class, W.class, X.class %7D)%0A    private static class Y %7B%0A    %7D%0A%0A    /**%0A     * Test equality of JRE-instantiated Annotation with proxy instance instantiated by ClassGraph.%0A     */%0A    @Test%0A    public void annotationEquality() %7B%0A        try (ScanResult scanResult = new ClassGraph()%0A                .whitelistPackages(AnnotationEquality.class.getPackage().getName()).enableAllInfo().scan()) %7B%0A            final ClassInfo classInfo = scanResult.getClassInfo(Y.class.getName());%0A            assertThat(classInfo).isNotNull();%0A            final Class%3C?%3E cls = classInfo.loadClass();%0A            final Annotation annotation = cls.getAnnotations()%5B0%5D;%0A            assertThat(X.class.isInstance(annotation));%0A            final AnnotationInfo annotationInfo = classInfo.getAnnotationInfo().get(0);%0A            final Annotation proxyAnnotation = annotationInfo.loadClassAndInstantiate();%0A            assertThat(X.class.isInstance(proxyAnnotation));%0A            assertThat(annotation.hashCode()).isEqualTo(proxyAnnotation.hashCode());%0A            assertThat(annotation).isEqualTo(proxyAnnotation);%0A            assertThat(annotation.toString()).isEqualTo(annotationInfo.toString());%0A            assertThat(annotation.toString()).isEqualTo(proxyAnnotation.toString());%0A        %7D%0A    %7D%0A%7D%0A

Make sure AnnotationInfo#toString works the same as Annotation#toString