private static void checkForRuntimeRetention( Class<? extends Annotation> annotationType )
    {
        Retention retention = annotationType.getAnnotation( Retention.class );
        if ( retention == null || RetentionPolicy.RUNTIME != retention.value() )
        {
            throw new IllegalArgumentException( "Annotation @" + annotationType.getName()
                + " is missing RUNTIME retention" );
        }
    }