code: @SuppressWarnings("unchecked")
      @Override
      protected T call() throws CoreException {
  
          this.wave.status(Status.Consumed);
  
          T res = null;
          try {
  
              // Build parameter list of the searched method
              final List<Object> params = new ArrayList<>();
              for (final Object o : this.parameterValues) {
                  params.add(o);
              }
              // Add the current wave to process
              params.add(this.wave);
  
              // Call this method with right parameters
              res = (T) this.method.invoke(this.service, params.toArray());
  
              if (Void.TYPE.equals(this.method.getReturnType()) && this.wave.waveType().returnItem() != JRebirthItems.voidItem) {
                  // No return wave required because the service method will return nothing (VOID)
                  LOGGER.log(NO_RETURN_WAVE_CONSUMED, this.service.getClass().getSimpleName(), this.wave.toString());
                  // Consumed + Handled because there is only one handler: the service task
                  this.wave.status(Status.Handled);
  
                  // Otherwise prepare the return wave
              } else {
  
                  // Send the result into a wave
                  sendReturnWave(res);
  
              }
  
          } catch (IllegalAccessException | IllegalArgumentException e) {
              handleException(e);
          } catch (final InvocationTargetException e) {
              if (e.getTargetException() != null) {
                  handleException(e.getTargetException());
              } else {
                  handleException(e);
              }
          } catch (final ServiceException se) {
              handleException(se.getCause());
          } catch (final Exception e) { // NOSONAR, catch all to try to do something smart !
              handleException(e);
          }
          return res;
      }
docs: {@inheritDoc}
  
  @throws CoreException if return WaveType has bad API