¿El cargador de clases definitorio de una anotación de nivel de clase es siempre un padre del cargador de clases iniciador de esa clase?

Supongamos lo siguiente:

@SomeAnnotation
public interface Foo {
}

Me gustaría saber si siempre es el caso que el cargador de clases definitorio deSomeAnnotation es igual o un padre del cargador de clases iniciador deFoo.

he leídoJVMS v8 sección 5.3. pero no estoy seguro de qué se aplica aquí. La Sección 5.3.4 habla sobre las restricciones de carga, pero parece que no se aplican a las anotaciones.

La pregunta que hago es porque un código como este:

    Class<?> fooClass = //will in some way obtain a reference to class Foo
    fooClass.getAnnotation(SomeAnnotation.class);

fallará en presencia de diferentes cargadores de clases. Sé que podría usargetAnnotations y busque en la matriz resultante un elemento cuyo nombre de clase sea igual al nombre deSomeAnnotation. Pero me pregunto si lo siguiente también funcionará:

    Class<?> fooClass = //will in some way obtain a reference to class Foo
    fooClass.getAnnotation((Class<? extends Annotation>) fooClass
            .getClassLoader().loadClass(SomeAnnotation.class.getName()));

Respuestas a la pregunta(1)

Su respuesta a la pregunta