public FilterVerifier.VerificationKey verifyFilter(FilterCriterion filter) {
    FilterVerifier.VerificationKey result;
    if (null != predecessor) {
      result = predecessor.verifyFilter(filter);
    } else {
      result = FILTER_UNSUPPORTED;
    }

    if (FILTER_SUPPORTED.equals(result) && (filter instanceof ScopedFilter)) {
      ScopedFilter valueFilter = (ScopedFilter) filter;
      if (!scope.equals(valueFilter.getScope())) {
        result = FilterVerifier.FILTER_IGNORED;
      }
    }
    return result;
  }
  public VerificationKey verifyFilter(FilterCriterion filter) {
    FilterVerifier.VerificationKey result;

    if (null != predecessor) {
      result = predecessor.verifyFilter(filter);
    } else {
      result = FILTER_UNSUPPORTED;
    }

    // TODO (sb): this verifier relies on not having a {@link WhitelistFilterVerifyer}
    // as predecessor which on its part contains
    // (@link ParticipantAssociationFilter}.class.
    // In this case the following check would not be executed.

    if (FILTER_UNSUPPORTED.equals(result)
        && (filter instanceof ParticipantAssociationFilter)
        && isInWhitelist(((ParticipantAssociationFilter) filter).getFilterKind())) {
      result = FilterVerifier.FILTER_SUPPORTED;
    }

    return result;
  }