code: @SuppressWarnings("unchecked")
      public <T> ParameterMetadata<? extends T> next(Part part, Class<T> type) {
          Parameter parameter = parameters.next();
          Class<?> typeToUse = ClassUtils.isAssignable(type, parameter.getType()) ? parameter.getType() : type;
          return (ParameterMetadata<? extends T>) next(part, typeToUse, parameter);
      }
docs: Builds a new {@link ParameterMetadata} of the given {@link Part} and type. Forwards the underlying
  {@link Parameters} as well.
  
  @param <T>
  @param type must not be {@literal null}.
  @return