docs: @SuppressWarnings("unchecked")
      public AccessAssertion setRequiredRoles(final Collection<String> assertionRequiredRoles) {
          if (this.requiredRoles != null) {
              throw new AssertionError(getClass() +
                                               "#setRequiredRoles() may only be called once any further calls" +
                                               " result in an exception");
          }
          if (assertionRequiredRoles == null) {
              this.requiredRoles = Collections.unmodifiableSet(Collections.emptySet());
          } else {
              if (assertionRequiredRoles instanceof Set) {
                  Set roles = (Set) assertionRequiredRoles;
                  this.requiredRoles = Collections.unmodifiableSet(roles);
              } else {
                  this.requiredRoles = Collections.unmodifiableSet(new HashSet<>(assertionRequiredRoles));
              }
          }
          return this;
      }