public boolean hasRuntimeRetention() { Map<String, ? extends AnnotationMirror> types = getHelper().getAnnotationsByType(getElement().getAnnotationMirrors()); AnnotationMirror retention = types.get(Retention.class.getCanonicalName()); if (retention == null) { handleNoRetention(); return false; } AnnotationParser parser = AnnotationParser.create(getHelper()); parser.expectEnumConstant( AnnotationUtil.VALUE, getHelper().resolveType(RetentionPolicy.class.getCanonicalName()), null); String retentionPolicy = parser.parse(retention).get(AnnotationUtil.VALUE, String.class); return RetentionPolicy.RUNTIME.toString().equals(retentionPolicy); }