code: private void performHandle(final Wave wave, final Method method) throws WaveException {
  
          // Build parameter list of the searched method
          final List<Object> parameterValues = new ArrayList<>();
  
          // Don't add WaveType parameters if we us the default processWave method
          if (!AbstractComponent.PROCESS_WAVE_METHOD_NAME.equals(method.getName())) {
              for (final WaveData<?> wd : wave.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);
  
          try {
  
              ClassUtility.callMethod(method, getWaveReady(), parameterValues.toArray());
  
          } catch (final CoreException e) {
              LOGGER.error(WAVE_DISPATCH_ERROR, e);
              // Propagate the wave exception
              throw new WaveException(wave, e);
          }
  
      }
docs: Perform the handle independently of thread used.
  
  @param wave the wave to manage
  @param method the handler method to call, could be null
  
  @throws WaveException if an error occurred while processing the wave