docs: private boolean checkFilter(SCIMFilter filter) {
          switch (filter.getFilterType()) {
              case AND:
              case OR:
                  return checkFilter(filter.getFilterComponents().get(0)) | checkFilter(filter.getFilterComponents().get(1));
              case EQUALITY:
                  String name = filter.getFilterAttribute().getAttributeName();
                  if ("id".equalsIgnoreCase(name) ||
                      "userName".equalsIgnoreCase(name)) {
                      return true;
                  } else if (OriginKeys.ORIGIN.equalsIgnoreCase(name)) {
                      return false;
                  } else {
                      throw new ScimException("Invalid filter attribute.", HttpStatus.BAD_REQUEST);
                  }
              case PRESENCE:
              case STARTS_WITH:
              case CONTAINS:
                  throw new ScimException("Wildcards are not allowed in filter.", HttpStatus.BAD_REQUEST);
              case GREATER_THAN:
              case GREATER_OR_EQUAL:
              case LESS_THAN:
              case LESS_OR_EQUAL:
                  throw new ScimException("Invalid operator.", HttpStatus.BAD_REQUEST);
          }
          return false;
      }