private static Stream<MethodParameter> fromSimpleClass(Class<?> paramClass, Field field, String fieldNamePrefix, boolean parentRequired) {
		Annotation[] fieldAnnotations = field.getDeclaredAnnotations();
		try {
			Parameter parameter = field.getAnnotation(Parameter.class);
			Schema schema = field.getAnnotation(Schema.class);
			boolean fieldRequired = SchemaUtils.fieldRequired(field, schema, parameter);

			boolean paramRequired = parentRequired && fieldRequired;
			if (paramClass.getSuperclass() != null && paramClass.isRecord()) {
				return Stream.of(paramClass.getRecordComponents())
						.filter(d -> d.getName().equals(field.getName()))
						.map(RecordComponent::getAccessor)
						.map(method -> new MethodParameter(method, -1))
						.map(methodParameter -> DelegatingMethodParameter.changeContainingClass(methodParameter, paramClass))
						.map(param -> new DelegatingMethodParameter(param, fieldNamePrefix + field.getName(), fieldAnnotations, param.getMethodAnnotations(), true, field, !paramRequired));
			}
			else
				return Stream.of(Introspector.getBeanInfo(paramClass).getPropertyDescriptors())
						.filter(d -> d.getName().equals(field.getName()))
						.map(PropertyDescriptor::getReadMethod)
						.filter(Objects::nonNull)
						.map(method -> new MethodParameter(method, -1))
						.map(methodParameter -> DelegatingMethodParameter.changeContainingClass(methodParameter, paramClass))
						.map(param -> new DelegatingMethodParameter(param, fieldNamePrefix + field.getName(), fieldAnnotations, param.getMethodAnnotations(), true, field, !paramRequired));
		}
		catch (IntrospectionException e) {
			return Stream.of();
		}
	}
From simple class stream.

@param paramClass      the param class
@param field           the field
@param fieldNamePrefix the field name prefix
@return the stream
springdoc-openapi-starter-common/src/main/java/org/springdoc/core/extractor/MethodParameterPojoExtractor.java