code: @Override
      public <T extends Object> ServiceTask<T> returnData(final Wave sourceWave) {
  
          ServiceTask<T> task = null;
          try {
              // Build parameter list of the searched method
              final List<Object> parameterValues = new ArrayList<>();
              for (final WaveData<?> wd : sourceWave.waveDatas()) {
                  // Add only wave items defined as parameter
                  if (wd.key().isParameter()) {
                      parameterValues.add(wd.value());
                  }
              }
              // Add the current wave to process
              // parameterValues.add(wave);
  
              if (sourceWave.waveType() == null) {
                  LOGGER.error(NO_WAVE_TYPE_DEFINED, this.getClass().getSimpleName());
              }
  
              // Search the wave handler method
              final Method method = ClassUtility.getMethodByName(this.getClass(), ClassUtility.underscoreToCamelCase(sourceWave.waveType().toString()));
              if (method != null) {
  
                  // final Class<T> returnClass = (Class<T>) method.getReturnType();
  
                  task = runTask(sourceWave, method, parameterValues.toArray());
  
              }
          } catch (final NoSuchMethodException e) {
              // If no method was found, call the default method
              processWave(sourceWave);
          }
          return task;
      }
docs: {@inheritDoc}