@Override public Set<Role> extractProvidedRoles(final RestrictedAccess annotation) { if (annotation.providers().length == 0) { return Collections.<Role>emptySet(); } else { final RequiredRolesProvider[] providers = getProviderInstances(annotation.providers()); final Set<Role> providedRoles = new HashSet<Role>(); for (final RequiredRolesProvider provider : providers) { providedRoles.addAll(provider.getRoles()); destroyProviderInstance(provider); } return providedRoles; } }