public function prepareDataProcessing(TaskListPosition $newTaskListPosition, $target, array $metadata = [])
    {
        $type = MessageNameUtils::getTypePartOfMessageName($this->messageName);

        $metadata = ArrayUtils::merge($this->metadata, $metadata);

        return new self(
            $this->payload,
            MessageNameUtils::getProcessDataCommandName($type),
            $this->target, //Target of the last answer is the origin of the new command
            $target,
            $metadata,
            $newTaskListPosition,
            $this->version + 1
        );
    }