@Override
	public Operation customize(Operation operation, HandlerMethod handlerMethod) {
		MethodParameter[] methodParameters = handlerMethod.getMethodParameters();

		int parametersLength = methodParameters.length;
		List<Parameter> parametersToAddToOperation = new ArrayList<>();
		for (int i = 0; i < parametersLength; i++) {
			MethodParameter parameter = methodParameters[i];
			QuerydslPredicate predicate = parameter.getParameterAnnotation(QuerydslPredicate.class);

			if (predicate == null)
				continue;

			QuerydslBindings bindings = extractQdslBindings(predicate);

			Set<String> fieldsToAdd = Arrays.stream(predicate.root().getDeclaredFields()).filter(field -> !Modifier.isStatic(field.getModifiers())).map(Field::getName).collect(Collectors.toCollection(LinkedHashSet::new));

			Map<String, Object> pathSpecMap = getPathSpec(bindings, "pathSpecs");
			//remove blacklisted fields
			Set<String> blacklist = getFieldValues(bindings, "denyList", "blackList");
			fieldsToAdd.removeIf(blacklist::contains);

			Set<String> whiteList = getFieldValues(bindings, "allowList", "whiteList");
			Set<String> aliases = getFieldValues(bindings, "aliases", null);

			fieldsToAdd.addAll(aliases);
			fieldsToAdd.addAll(whiteList);

			// if only listed properties should be included, remove all other fields from fieldsToAdd
			if (getFieldValueOfBoolean(bindings, "excludeUnlistedProperties")) {
				fieldsToAdd.removeIf(s -> !whiteList.contains(s) && !aliases.contains(s));
			}

			for (String fieldName : fieldsToAdd) {
				Type type = getFieldType(fieldName, pathSpecMap, predicate.root());
				if (type != null) {
					Parameter newParameter = buildParam(type, fieldName);
					parametersToAddToOperation.add(newParameter);
				}
			}
		}

		if (!CollectionUtils.isEmpty(parametersToAddToOperation)) {
			if (operation.getParameters() == null)
				operation.setParameters(parametersToAddToOperation);
			else
				operation.getParameters().addAll(parametersToAddToOperation);
		}

		return operation;
	}
Instantiates a new Querydsl predicate operation customizer.

@param querydslBindingsFactory   the querydsl bindings factory
@param springDocConfigProperties the spring doc config properties
springdoc-openapi-starter-common/src/main/java/org/springdoc/core/customizers/QuerydslPredicateOperationCustomizer.java