TaskResultImpl toTaskResult(TaskId taskId) {

    TaskResultImpl result =
        new TaskResultImpl(
            taskId,
            getSerializedValue(),
            getSerializedException(),
            getLogs(),
            getPropagatedVariables());

    result.setPreviewerClassName(getPreviewerClassName());
    FlowActionData actionData = getFlowAction();
    if (actionData != null) {
      FlowAction action = new FlowAction(actionData.getType());
      action.setDupNumber(actionData.getDupNumber());
      action.setTarget(actionData.getTarget());
      action.setTargetContinuation(actionData.getTargetContinuation());
      action.setTargetElse(actionData.getTargetElse());
      result.setAction(action);
    }

    return result;
  }