code: public String getItems() {
          final StringBuilder sb = new StringBuilder();
          boolean first = true;
          for (final WaveItem<?> waveItem : items()) {
              if (first) {
                  first = false;
              } else {
                  sb.append(", ");
              }
              String fullName = waveItem.type() instanceof ParameterizedType ? ((ParameterizedType) waveItem.type()).toString()
                      : ((Class<?>) waveItem.type()).getName();
              sb.append(fullName).append(" ");
  
              fullName = fullName.replaceAll("[<>]", "");
              if (waveItem.name() == null || waveItem.name().isEmpty()) {
                  sb.append(ObjectUtility.lowerFirstChar(fullName.substring(fullName.lastIndexOf('.') + 1)));
              } else {
                  sb.append(waveItem.name());
              }
          }
          return sb.toString();
      }
docs: Return the required method parameter list to handle this WaveType.
  
  @return the parameter list (Type1 arg1, Type2 arg2 ...)