All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.camunda.community.rest.client.dto.TaskQueryDto Maven / Gradle / Ivy

The newest version!
/*
 * Camunda Platform REST API
 * OpenApi Spec for Camunda Platform REST API.
 *
 * The version of the OpenAPI document: 7.21.0
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


package org.camunda.community.rest.client.dto;

import java.util.Objects;
import java.util.Arrays;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.annotation.JsonValue;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.camunda.community.rest.client.dto.TaskQueryDtoSortingInner;
import org.camunda.community.rest.client.dto.VariableQueryParameterDto;
import org.openapitools.jackson.nullable.JsonNullable;
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.openapitools.jackson.nullable.JsonNullable;
import java.util.NoSuchElementException;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.annotation.JsonTypeName;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.StringJoiner;

/**
 * A Task query which defines a group of Tasks.
 */
@JsonPropertyOrder({
  TaskQueryDto.JSON_PROPERTY_TASK_ID,
  TaskQueryDto.JSON_PROPERTY_TASK_ID_IN,
  TaskQueryDto.JSON_PROPERTY_PROCESS_INSTANCE_ID,
  TaskQueryDto.JSON_PROPERTY_PROCESS_INSTANCE_ID_IN,
  TaskQueryDto.JSON_PROPERTY_PROCESS_INSTANCE_BUSINESS_KEY,
  TaskQueryDto.JSON_PROPERTY_PROCESS_INSTANCE_BUSINESS_KEY_EXPRESSION,
  TaskQueryDto.JSON_PROPERTY_PROCESS_INSTANCE_BUSINESS_KEY_IN,
  TaskQueryDto.JSON_PROPERTY_PROCESS_INSTANCE_BUSINESS_KEY_LIKE,
  TaskQueryDto.JSON_PROPERTY_PROCESS_INSTANCE_BUSINESS_KEY_LIKE_EXPRESSION,
  TaskQueryDto.JSON_PROPERTY_PROCESS_DEFINITION_ID,
  TaskQueryDto.JSON_PROPERTY_PROCESS_DEFINITION_KEY,
  TaskQueryDto.JSON_PROPERTY_PROCESS_DEFINITION_KEY_IN,
  TaskQueryDto.JSON_PROPERTY_PROCESS_DEFINITION_NAME,
  TaskQueryDto.JSON_PROPERTY_PROCESS_DEFINITION_NAME_LIKE,
  TaskQueryDto.JSON_PROPERTY_EXECUTION_ID,
  TaskQueryDto.JSON_PROPERTY_CASE_INSTANCE_ID,
  TaskQueryDto.JSON_PROPERTY_CASE_INSTANCE_BUSINESS_KEY,
  TaskQueryDto.JSON_PROPERTY_CASE_INSTANCE_BUSINESS_KEY_LIKE,
  TaskQueryDto.JSON_PROPERTY_CASE_DEFINITION_ID,
  TaskQueryDto.JSON_PROPERTY_CASE_DEFINITION_KEY,
  TaskQueryDto.JSON_PROPERTY_CASE_DEFINITION_NAME,
  TaskQueryDto.JSON_PROPERTY_CASE_DEFINITION_NAME_LIKE,
  TaskQueryDto.JSON_PROPERTY_CASE_EXECUTION_ID,
  TaskQueryDto.JSON_PROPERTY_ACTIVITY_INSTANCE_ID_IN,
  TaskQueryDto.JSON_PROPERTY_TENANT_ID_IN,
  TaskQueryDto.JSON_PROPERTY_WITHOUT_TENANT_ID,
  TaskQueryDto.JSON_PROPERTY_ASSIGNEE,
  TaskQueryDto.JSON_PROPERTY_ASSIGNEE_EXPRESSION,
  TaskQueryDto.JSON_PROPERTY_ASSIGNEE_LIKE,
  TaskQueryDto.JSON_PROPERTY_ASSIGNEE_LIKE_EXPRESSION,
  TaskQueryDto.JSON_PROPERTY_ASSIGNEE_IN,
  TaskQueryDto.JSON_PROPERTY_ASSIGNEE_NOT_IN,
  TaskQueryDto.JSON_PROPERTY_OWNER,
  TaskQueryDto.JSON_PROPERTY_OWNER_EXPRESSION,
  TaskQueryDto.JSON_PROPERTY_CANDIDATE_GROUP,
  TaskQueryDto.JSON_PROPERTY_CANDIDATE_GROUP_EXPRESSION,
  TaskQueryDto.JSON_PROPERTY_CANDIDATE_USER,
  TaskQueryDto.JSON_PROPERTY_CANDIDATE_USER_EXPRESSION,
  TaskQueryDto.JSON_PROPERTY_INCLUDE_ASSIGNED_TASKS,
  TaskQueryDto.JSON_PROPERTY_INVOLVED_USER,
  TaskQueryDto.JSON_PROPERTY_INVOLVED_USER_EXPRESSION,
  TaskQueryDto.JSON_PROPERTY_ASSIGNED,
  TaskQueryDto.JSON_PROPERTY_UNASSIGNED,
  TaskQueryDto.JSON_PROPERTY_TASK_DEFINITION_KEY,
  TaskQueryDto.JSON_PROPERTY_TASK_DEFINITION_KEY_IN,
  TaskQueryDto.JSON_PROPERTY_TASK_DEFINITION_KEY_LIKE,
  TaskQueryDto.JSON_PROPERTY_NAME,
  TaskQueryDto.JSON_PROPERTY_NAME_NOT_EQUAL,
  TaskQueryDto.JSON_PROPERTY_NAME_LIKE,
  TaskQueryDto.JSON_PROPERTY_NAME_NOT_LIKE,
  TaskQueryDto.JSON_PROPERTY_DESCRIPTION,
  TaskQueryDto.JSON_PROPERTY_DESCRIPTION_LIKE,
  TaskQueryDto.JSON_PROPERTY_PRIORITY,
  TaskQueryDto.JSON_PROPERTY_MAX_PRIORITY,
  TaskQueryDto.JSON_PROPERTY_MIN_PRIORITY,
  TaskQueryDto.JSON_PROPERTY_DUE_DATE,
  TaskQueryDto.JSON_PROPERTY_DUE_DATE_EXPRESSION,
  TaskQueryDto.JSON_PROPERTY_DUE_AFTER,
  TaskQueryDto.JSON_PROPERTY_DUE_AFTER_EXPRESSION,
  TaskQueryDto.JSON_PROPERTY_DUE_BEFORE,
  TaskQueryDto.JSON_PROPERTY_DUE_BEFORE_EXPRESSION,
  TaskQueryDto.JSON_PROPERTY_WITHOUT_DUE_DATE,
  TaskQueryDto.JSON_PROPERTY_FOLLOW_UP_DATE,
  TaskQueryDto.JSON_PROPERTY_FOLLOW_UP_DATE_EXPRESSION,
  TaskQueryDto.JSON_PROPERTY_FOLLOW_UP_AFTER,
  TaskQueryDto.JSON_PROPERTY_FOLLOW_UP_AFTER_EXPRESSION,
  TaskQueryDto.JSON_PROPERTY_FOLLOW_UP_BEFORE,
  TaskQueryDto.JSON_PROPERTY_FOLLOW_UP_BEFORE_EXPRESSION,
  TaskQueryDto.JSON_PROPERTY_FOLLOW_UP_BEFORE_OR_NOT_EXISTENT,
  TaskQueryDto.JSON_PROPERTY_FOLLOW_UP_BEFORE_OR_NOT_EXISTENT_EXPRESSION,
  TaskQueryDto.JSON_PROPERTY_CREATED_ON,
  TaskQueryDto.JSON_PROPERTY_CREATED_ON_EXPRESSION,
  TaskQueryDto.JSON_PROPERTY_CREATED_AFTER,
  TaskQueryDto.JSON_PROPERTY_CREATED_AFTER_EXPRESSION,
  TaskQueryDto.JSON_PROPERTY_CREATED_BEFORE,
  TaskQueryDto.JSON_PROPERTY_CREATED_BEFORE_EXPRESSION,
  TaskQueryDto.JSON_PROPERTY_UPDATED_AFTER,
  TaskQueryDto.JSON_PROPERTY_UPDATED_AFTER_EXPRESSION,
  TaskQueryDto.JSON_PROPERTY_DELEGATION_STATE,
  TaskQueryDto.JSON_PROPERTY_CANDIDATE_GROUPS,
  TaskQueryDto.JSON_PROPERTY_CANDIDATE_GROUPS_EXPRESSION,
  TaskQueryDto.JSON_PROPERTY_WITH_CANDIDATE_GROUPS,
  TaskQueryDto.JSON_PROPERTY_WITHOUT_CANDIDATE_GROUPS,
  TaskQueryDto.JSON_PROPERTY_WITH_CANDIDATE_USERS,
  TaskQueryDto.JSON_PROPERTY_WITHOUT_CANDIDATE_USERS,
  TaskQueryDto.JSON_PROPERTY_ACTIVE,
  TaskQueryDto.JSON_PROPERTY_SUSPENDED,
  TaskQueryDto.JSON_PROPERTY_TASK_VARIABLES,
  TaskQueryDto.JSON_PROPERTY_PROCESS_VARIABLES,
  TaskQueryDto.JSON_PROPERTY_CASE_INSTANCE_VARIABLES,
  TaskQueryDto.JSON_PROPERTY_VARIABLE_NAMES_IGNORE_CASE,
  TaskQueryDto.JSON_PROPERTY_VARIABLE_VALUES_IGNORE_CASE,
  TaskQueryDto.JSON_PROPERTY_PARENT_TASK_ID,
  TaskQueryDto.JSON_PROPERTY_OR_QUERIES,
  TaskQueryDto.JSON_PROPERTY_SORTING
})
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2024-06-27T13:50:23.655629899Z[Etc/UTC]")
public class TaskQueryDto {
  public static final String JSON_PROPERTY_TASK_ID = "taskId";
  private JsonNullable taskId = JsonNullable.undefined();

  public static final String JSON_PROPERTY_TASK_ID_IN = "taskIdIn";
  private JsonNullable> taskIdIn = JsonNullable.>undefined();

  public static final String JSON_PROPERTY_PROCESS_INSTANCE_ID = "processInstanceId";
  private JsonNullable processInstanceId = JsonNullable.undefined();

  public static final String JSON_PROPERTY_PROCESS_INSTANCE_ID_IN = "processInstanceIdIn";
  private JsonNullable> processInstanceIdIn = JsonNullable.>undefined();

  public static final String JSON_PROPERTY_PROCESS_INSTANCE_BUSINESS_KEY = "processInstanceBusinessKey";
  private JsonNullable processInstanceBusinessKey = JsonNullable.undefined();

  public static final String JSON_PROPERTY_PROCESS_INSTANCE_BUSINESS_KEY_EXPRESSION = "processInstanceBusinessKeyExpression";
  private JsonNullable processInstanceBusinessKeyExpression = JsonNullable.undefined();

  public static final String JSON_PROPERTY_PROCESS_INSTANCE_BUSINESS_KEY_IN = "processInstanceBusinessKeyIn";
  private JsonNullable> processInstanceBusinessKeyIn = JsonNullable.>undefined();

  public static final String JSON_PROPERTY_PROCESS_INSTANCE_BUSINESS_KEY_LIKE = "processInstanceBusinessKeyLike";
  private JsonNullable processInstanceBusinessKeyLike = JsonNullable.undefined();

  public static final String JSON_PROPERTY_PROCESS_INSTANCE_BUSINESS_KEY_LIKE_EXPRESSION = "processInstanceBusinessKeyLikeExpression";
  private JsonNullable processInstanceBusinessKeyLikeExpression = JsonNullable.undefined();

  public static final String JSON_PROPERTY_PROCESS_DEFINITION_ID = "processDefinitionId";
  private JsonNullable processDefinitionId = JsonNullable.undefined();

  public static final String JSON_PROPERTY_PROCESS_DEFINITION_KEY = "processDefinitionKey";
  private JsonNullable processDefinitionKey = JsonNullable.undefined();

  public static final String JSON_PROPERTY_PROCESS_DEFINITION_KEY_IN = "processDefinitionKeyIn";
  private JsonNullable> processDefinitionKeyIn = JsonNullable.>undefined();

  public static final String JSON_PROPERTY_PROCESS_DEFINITION_NAME = "processDefinitionName";
  private JsonNullable processDefinitionName = JsonNullable.undefined();

  public static final String JSON_PROPERTY_PROCESS_DEFINITION_NAME_LIKE = "processDefinitionNameLike";
  private JsonNullable processDefinitionNameLike = JsonNullable.undefined();

  public static final String JSON_PROPERTY_EXECUTION_ID = "executionId";
  private JsonNullable executionId = JsonNullable.undefined();

  public static final String JSON_PROPERTY_CASE_INSTANCE_ID = "caseInstanceId";
  private JsonNullable caseInstanceId = JsonNullable.undefined();

  public static final String JSON_PROPERTY_CASE_INSTANCE_BUSINESS_KEY = "caseInstanceBusinessKey";
  private JsonNullable caseInstanceBusinessKey = JsonNullable.undefined();

  public static final String JSON_PROPERTY_CASE_INSTANCE_BUSINESS_KEY_LIKE = "caseInstanceBusinessKeyLike";
  private JsonNullable caseInstanceBusinessKeyLike = JsonNullable.undefined();

  public static final String JSON_PROPERTY_CASE_DEFINITION_ID = "caseDefinitionId";
  private JsonNullable caseDefinitionId = JsonNullable.undefined();

  public static final String JSON_PROPERTY_CASE_DEFINITION_KEY = "caseDefinitionKey";
  private JsonNullable caseDefinitionKey = JsonNullable.undefined();

  public static final String JSON_PROPERTY_CASE_DEFINITION_NAME = "caseDefinitionName";
  private JsonNullable caseDefinitionName = JsonNullable.undefined();

  public static final String JSON_PROPERTY_CASE_DEFINITION_NAME_LIKE = "caseDefinitionNameLike";
  private JsonNullable caseDefinitionNameLike = JsonNullable.undefined();

  public static final String JSON_PROPERTY_CASE_EXECUTION_ID = "caseExecutionId";
  private JsonNullable caseExecutionId = JsonNullable.undefined();

  public static final String JSON_PROPERTY_ACTIVITY_INSTANCE_ID_IN = "activityInstanceIdIn";
  private JsonNullable> activityInstanceIdIn = JsonNullable.>undefined();

  public static final String JSON_PROPERTY_TENANT_ID_IN = "tenantIdIn";
  private JsonNullable> tenantIdIn = JsonNullable.>undefined();

  public static final String JSON_PROPERTY_WITHOUT_TENANT_ID = "withoutTenantId";
  private JsonNullable withoutTenantId = JsonNullable.of(false);

  public static final String JSON_PROPERTY_ASSIGNEE = "assignee";
  private JsonNullable assignee = JsonNullable.undefined();

  public static final String JSON_PROPERTY_ASSIGNEE_EXPRESSION = "assigneeExpression";
  private JsonNullable assigneeExpression = JsonNullable.undefined();

  public static final String JSON_PROPERTY_ASSIGNEE_LIKE = "assigneeLike";
  private JsonNullable assigneeLike = JsonNullable.undefined();

  public static final String JSON_PROPERTY_ASSIGNEE_LIKE_EXPRESSION = "assigneeLikeExpression";
  private JsonNullable assigneeLikeExpression = JsonNullable.undefined();

  public static final String JSON_PROPERTY_ASSIGNEE_IN = "assigneeIn";
  private JsonNullable> assigneeIn = JsonNullable.>undefined();

  public static final String JSON_PROPERTY_ASSIGNEE_NOT_IN = "assigneeNotIn";
  private JsonNullable> assigneeNotIn = JsonNullable.>undefined();

  public static final String JSON_PROPERTY_OWNER = "owner";
  private JsonNullable owner = JsonNullable.undefined();

  public static final String JSON_PROPERTY_OWNER_EXPRESSION = "ownerExpression";
  private JsonNullable ownerExpression = JsonNullable.undefined();

  public static final String JSON_PROPERTY_CANDIDATE_GROUP = "candidateGroup";
  private JsonNullable candidateGroup = JsonNullable.undefined();

  public static final String JSON_PROPERTY_CANDIDATE_GROUP_EXPRESSION = "candidateGroupExpression";
  private JsonNullable candidateGroupExpression = JsonNullable.undefined();

  public static final String JSON_PROPERTY_CANDIDATE_USER = "candidateUser";
  private JsonNullable candidateUser = JsonNullable.undefined();

  public static final String JSON_PROPERTY_CANDIDATE_USER_EXPRESSION = "candidateUserExpression";
  private JsonNullable candidateUserExpression = JsonNullable.undefined();

  public static final String JSON_PROPERTY_INCLUDE_ASSIGNED_TASKS = "includeAssignedTasks";
  private JsonNullable includeAssignedTasks = JsonNullable.of(false);

  public static final String JSON_PROPERTY_INVOLVED_USER = "involvedUser";
  private JsonNullable involvedUser = JsonNullable.undefined();

  public static final String JSON_PROPERTY_INVOLVED_USER_EXPRESSION = "involvedUserExpression";
  private JsonNullable involvedUserExpression = JsonNullable.undefined();

  public static final String JSON_PROPERTY_ASSIGNED = "assigned";
  private JsonNullable assigned = JsonNullable.of(false);

  public static final String JSON_PROPERTY_UNASSIGNED = "unassigned";
  private JsonNullable unassigned = JsonNullable.of(false);

  public static final String JSON_PROPERTY_TASK_DEFINITION_KEY = "taskDefinitionKey";
  private JsonNullable taskDefinitionKey = JsonNullable.undefined();

  public static final String JSON_PROPERTY_TASK_DEFINITION_KEY_IN = "taskDefinitionKeyIn";
  private JsonNullable> taskDefinitionKeyIn = JsonNullable.>undefined();

  public static final String JSON_PROPERTY_TASK_DEFINITION_KEY_LIKE = "taskDefinitionKeyLike";
  private JsonNullable taskDefinitionKeyLike = JsonNullable.undefined();

  public static final String JSON_PROPERTY_NAME = "name";
  private JsonNullable name = JsonNullable.undefined();

  public static final String JSON_PROPERTY_NAME_NOT_EQUAL = "nameNotEqual";
  private JsonNullable nameNotEqual = JsonNullable.undefined();

  public static final String JSON_PROPERTY_NAME_LIKE = "nameLike";
  private JsonNullable nameLike = JsonNullable.undefined();

  public static final String JSON_PROPERTY_NAME_NOT_LIKE = "nameNotLike";
  private JsonNullable nameNotLike = JsonNullable.undefined();

  public static final String JSON_PROPERTY_DESCRIPTION = "description";
  private JsonNullable description = JsonNullable.undefined();

  public static final String JSON_PROPERTY_DESCRIPTION_LIKE = "descriptionLike";
  private JsonNullable descriptionLike = JsonNullable.undefined();

  public static final String JSON_PROPERTY_PRIORITY = "priority";
  private JsonNullable priority = JsonNullable.undefined();

  public static final String JSON_PROPERTY_MAX_PRIORITY = "maxPriority";
  private JsonNullable maxPriority = JsonNullable.undefined();

  public static final String JSON_PROPERTY_MIN_PRIORITY = "minPriority";
  private JsonNullable minPriority = JsonNullable.undefined();

  public static final String JSON_PROPERTY_DUE_DATE = "dueDate";
  private JsonNullable dueDate = JsonNullable.undefined();

  public static final String JSON_PROPERTY_DUE_DATE_EXPRESSION = "dueDateExpression";
  private JsonNullable dueDateExpression = JsonNullable.undefined();

  public static final String JSON_PROPERTY_DUE_AFTER = "dueAfter";
  private JsonNullable dueAfter = JsonNullable.undefined();

  public static final String JSON_PROPERTY_DUE_AFTER_EXPRESSION = "dueAfterExpression";
  private JsonNullable dueAfterExpression = JsonNullable.undefined();

  public static final String JSON_PROPERTY_DUE_BEFORE = "dueBefore";
  private JsonNullable dueBefore = JsonNullable.undefined();

  public static final String JSON_PROPERTY_DUE_BEFORE_EXPRESSION = "dueBeforeExpression";
  private JsonNullable dueBeforeExpression = JsonNullable.undefined();

  public static final String JSON_PROPERTY_WITHOUT_DUE_DATE = "withoutDueDate";
  private JsonNullable withoutDueDate = JsonNullable.of(false);

  public static final String JSON_PROPERTY_FOLLOW_UP_DATE = "followUpDate";
  private JsonNullable followUpDate = JsonNullable.undefined();

  public static final String JSON_PROPERTY_FOLLOW_UP_DATE_EXPRESSION = "followUpDateExpression";
  private JsonNullable followUpDateExpression = JsonNullable.undefined();

  public static final String JSON_PROPERTY_FOLLOW_UP_AFTER = "followUpAfter";
  private JsonNullable followUpAfter = JsonNullable.undefined();

  public static final String JSON_PROPERTY_FOLLOW_UP_AFTER_EXPRESSION = "followUpAfterExpression";
  private JsonNullable followUpAfterExpression = JsonNullable.undefined();

  public static final String JSON_PROPERTY_FOLLOW_UP_BEFORE = "followUpBefore";
  private JsonNullable followUpBefore = JsonNullable.undefined();

  public static final String JSON_PROPERTY_FOLLOW_UP_BEFORE_EXPRESSION = "followUpBeforeExpression";
  private JsonNullable followUpBeforeExpression = JsonNullable.undefined();

  public static final String JSON_PROPERTY_FOLLOW_UP_BEFORE_OR_NOT_EXISTENT = "followUpBeforeOrNotExistent";
  private JsonNullable followUpBeforeOrNotExistent = JsonNullable.undefined();

  public static final String JSON_PROPERTY_FOLLOW_UP_BEFORE_OR_NOT_EXISTENT_EXPRESSION = "followUpBeforeOrNotExistentExpression";
  private JsonNullable followUpBeforeOrNotExistentExpression = JsonNullable.undefined();

  public static final String JSON_PROPERTY_CREATED_ON = "createdOn";
  private JsonNullable createdOn = JsonNullable.undefined();

  public static final String JSON_PROPERTY_CREATED_ON_EXPRESSION = "createdOnExpression";
  private JsonNullable createdOnExpression = JsonNullable.undefined();

  public static final String JSON_PROPERTY_CREATED_AFTER = "createdAfter";
  private JsonNullable createdAfter = JsonNullable.undefined();

  public static final String JSON_PROPERTY_CREATED_AFTER_EXPRESSION = "createdAfterExpression";
  private JsonNullable createdAfterExpression = JsonNullable.undefined();

  public static final String JSON_PROPERTY_CREATED_BEFORE = "createdBefore";
  private JsonNullable createdBefore = JsonNullable.undefined();

  public static final String JSON_PROPERTY_CREATED_BEFORE_EXPRESSION = "createdBeforeExpression";
  private JsonNullable createdBeforeExpression = JsonNullable.undefined();

  public static final String JSON_PROPERTY_UPDATED_AFTER = "updatedAfter";
  private JsonNullable updatedAfter = JsonNullable.undefined();

  public static final String JSON_PROPERTY_UPDATED_AFTER_EXPRESSION = "updatedAfterExpression";
  private JsonNullable updatedAfterExpression = JsonNullable.undefined();

  /**
   * Restrict to tasks that are in the given delegation state. Valid values are `PENDING` and `RESOLVED`.
   */
  public enum DelegationStateEnum {
    PENDING("PENDING"),
    
    RESOLVED("RESOLVED");

    private String value;

    DelegationStateEnum(String value) {
      this.value = value;
    }

    @JsonValue
    public String getValue() {
      return value;
    }

    @Override
    public String toString() {
      return String.valueOf(value);
    }

    @JsonCreator
    public static DelegationStateEnum fromValue(String value) {
      for (DelegationStateEnum b : DelegationStateEnum.values()) {
        if (b.value.equals(value)) {
          return b;
        }
      }
      return null;
    }
  }

  public static final String JSON_PROPERTY_DELEGATION_STATE = "delegationState";
  private JsonNullable delegationState = JsonNullable.undefined();

  public static final String JSON_PROPERTY_CANDIDATE_GROUPS = "candidateGroups";
  private JsonNullable> candidateGroups = JsonNullable.>undefined();

  public static final String JSON_PROPERTY_CANDIDATE_GROUPS_EXPRESSION = "candidateGroupsExpression";
  private JsonNullable candidateGroupsExpression = JsonNullable.undefined();

  public static final String JSON_PROPERTY_WITH_CANDIDATE_GROUPS = "withCandidateGroups";
  private JsonNullable withCandidateGroups = JsonNullable.of(false);

  public static final String JSON_PROPERTY_WITHOUT_CANDIDATE_GROUPS = "withoutCandidateGroups";
  private JsonNullable withoutCandidateGroups = JsonNullable.of(false);

  public static final String JSON_PROPERTY_WITH_CANDIDATE_USERS = "withCandidateUsers";
  private JsonNullable withCandidateUsers = JsonNullable.of(false);

  public static final String JSON_PROPERTY_WITHOUT_CANDIDATE_USERS = "withoutCandidateUsers";
  private JsonNullable withoutCandidateUsers = JsonNullable.of(false);

  public static final String JSON_PROPERTY_ACTIVE = "active";
  private JsonNullable active = JsonNullable.of(false);

  public static final String JSON_PROPERTY_SUSPENDED = "suspended";
  private JsonNullable suspended = JsonNullable.of(false);

  public static final String JSON_PROPERTY_TASK_VARIABLES = "taskVariables";
  private JsonNullable> taskVariables = JsonNullable.>undefined();

  public static final String JSON_PROPERTY_PROCESS_VARIABLES = "processVariables";
  private JsonNullable> processVariables = JsonNullable.>undefined();

  public static final String JSON_PROPERTY_CASE_INSTANCE_VARIABLES = "caseInstanceVariables";
  private JsonNullable> caseInstanceVariables = JsonNullable.>undefined();

  public static final String JSON_PROPERTY_VARIABLE_NAMES_IGNORE_CASE = "variableNamesIgnoreCase";
  private JsonNullable variableNamesIgnoreCase = JsonNullable.of(false);

  public static final String JSON_PROPERTY_VARIABLE_VALUES_IGNORE_CASE = "variableValuesIgnoreCase";
  private JsonNullable variableValuesIgnoreCase = JsonNullable.of(false);

  public static final String JSON_PROPERTY_PARENT_TASK_ID = "parentTaskId";
  private JsonNullable parentTaskId = JsonNullable.undefined();

  public static final String JSON_PROPERTY_OR_QUERIES = "orQueries";
  private JsonNullable> orQueries = JsonNullable.>undefined();

  public static final String JSON_PROPERTY_SORTING = "sorting";
  private JsonNullable> sorting = JsonNullable.>undefined();

  public TaskQueryDto() {
  }

  public TaskQueryDto taskId(String taskId) {
    this.taskId = JsonNullable.of(taskId);
    
    return this;
  }

   /**
   * Restrict to task with the given id.
   * @return taskId
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getTaskId() {
        return taskId.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_TASK_ID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getTaskId_JsonNullable() {
    return taskId;
  }
  
  @JsonProperty(JSON_PROPERTY_TASK_ID)
  public void setTaskId_JsonNullable(JsonNullable taskId) {
    this.taskId = taskId;
  }

  public void setTaskId(String taskId) {
    this.taskId = JsonNullable.of(taskId);
  }


  public TaskQueryDto taskIdIn(List taskIdIn) {
    this.taskIdIn = JsonNullable.>of(taskIdIn);
    
    return this;
  }

  public TaskQueryDto addTaskIdInItem(String taskIdInItem) {
    if (this.taskIdIn == null || !this.taskIdIn.isPresent()) {
      this.taskIdIn = JsonNullable.>of(new ArrayList<>());
    }
    try {
      this.taskIdIn.get().add(taskIdInItem);
    } catch (java.util.NoSuchElementException e) {
      // this can never happen, as we make sure above that the value is present
    }
    return this;
  }

   /**
   * Restrict to tasks with any of the given ids.
   * @return taskIdIn
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public List getTaskIdIn() {
        return taskIdIn.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_TASK_ID_IN)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable> getTaskIdIn_JsonNullable() {
    return taskIdIn;
  }
  
  @JsonProperty(JSON_PROPERTY_TASK_ID_IN)
  public void setTaskIdIn_JsonNullable(JsonNullable> taskIdIn) {
    this.taskIdIn = taskIdIn;
  }

  public void setTaskIdIn(List taskIdIn) {
    this.taskIdIn = JsonNullable.>of(taskIdIn);
  }


  public TaskQueryDto processInstanceId(String processInstanceId) {
    this.processInstanceId = JsonNullable.of(processInstanceId);
    
    return this;
  }

   /**
   * Restrict to tasks that belong to process instances with the given id.
   * @return processInstanceId
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getProcessInstanceId() {
        return processInstanceId.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_PROCESS_INSTANCE_ID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getProcessInstanceId_JsonNullable() {
    return processInstanceId;
  }
  
  @JsonProperty(JSON_PROPERTY_PROCESS_INSTANCE_ID)
  public void setProcessInstanceId_JsonNullable(JsonNullable processInstanceId) {
    this.processInstanceId = processInstanceId;
  }

  public void setProcessInstanceId(String processInstanceId) {
    this.processInstanceId = JsonNullable.of(processInstanceId);
  }


  public TaskQueryDto processInstanceIdIn(List processInstanceIdIn) {
    this.processInstanceIdIn = JsonNullable.>of(processInstanceIdIn);
    
    return this;
  }

  public TaskQueryDto addProcessInstanceIdInItem(String processInstanceIdInItem) {
    if (this.processInstanceIdIn == null || !this.processInstanceIdIn.isPresent()) {
      this.processInstanceIdIn = JsonNullable.>of(new ArrayList<>());
    }
    try {
      this.processInstanceIdIn.get().add(processInstanceIdInItem);
    } catch (java.util.NoSuchElementException e) {
      // this can never happen, as we make sure above that the value is present
    }
    return this;
  }

   /**
   * Restrict to tasks that belong to process instances with the given ids.
   * @return processInstanceIdIn
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public List getProcessInstanceIdIn() {
        return processInstanceIdIn.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_PROCESS_INSTANCE_ID_IN)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable> getProcessInstanceIdIn_JsonNullable() {
    return processInstanceIdIn;
  }
  
  @JsonProperty(JSON_PROPERTY_PROCESS_INSTANCE_ID_IN)
  public void setProcessInstanceIdIn_JsonNullable(JsonNullable> processInstanceIdIn) {
    this.processInstanceIdIn = processInstanceIdIn;
  }

  public void setProcessInstanceIdIn(List processInstanceIdIn) {
    this.processInstanceIdIn = JsonNullable.>of(processInstanceIdIn);
  }


  public TaskQueryDto processInstanceBusinessKey(String processInstanceBusinessKey) {
    this.processInstanceBusinessKey = JsonNullable.of(processInstanceBusinessKey);
    
    return this;
  }

   /**
   * Restrict to tasks that belong to process instances with the given business key.
   * @return processInstanceBusinessKey
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getProcessInstanceBusinessKey() {
        return processInstanceBusinessKey.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_PROCESS_INSTANCE_BUSINESS_KEY)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getProcessInstanceBusinessKey_JsonNullable() {
    return processInstanceBusinessKey;
  }
  
  @JsonProperty(JSON_PROPERTY_PROCESS_INSTANCE_BUSINESS_KEY)
  public void setProcessInstanceBusinessKey_JsonNullable(JsonNullable processInstanceBusinessKey) {
    this.processInstanceBusinessKey = processInstanceBusinessKey;
  }

  public void setProcessInstanceBusinessKey(String processInstanceBusinessKey) {
    this.processInstanceBusinessKey = JsonNullable.of(processInstanceBusinessKey);
  }


  public TaskQueryDto processInstanceBusinessKeyExpression(String processInstanceBusinessKeyExpression) {
    this.processInstanceBusinessKeyExpression = JsonNullable.of(processInstanceBusinessKeyExpression);
    
    return this;
  }

   /**
   * Restrict to tasks that belong to process instances with the given business key which  is described by an expression. See the  [user guide](https://docs.camunda.org/manual/7.21/user-guide/process-engine/expression-language/#internal-context-functions) for more information on available functions.
   * @return processInstanceBusinessKeyExpression
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getProcessInstanceBusinessKeyExpression() {
        return processInstanceBusinessKeyExpression.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_PROCESS_INSTANCE_BUSINESS_KEY_EXPRESSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getProcessInstanceBusinessKeyExpression_JsonNullable() {
    return processInstanceBusinessKeyExpression;
  }
  
  @JsonProperty(JSON_PROPERTY_PROCESS_INSTANCE_BUSINESS_KEY_EXPRESSION)
  public void setProcessInstanceBusinessKeyExpression_JsonNullable(JsonNullable processInstanceBusinessKeyExpression) {
    this.processInstanceBusinessKeyExpression = processInstanceBusinessKeyExpression;
  }

  public void setProcessInstanceBusinessKeyExpression(String processInstanceBusinessKeyExpression) {
    this.processInstanceBusinessKeyExpression = JsonNullable.of(processInstanceBusinessKeyExpression);
  }


  public TaskQueryDto processInstanceBusinessKeyIn(List processInstanceBusinessKeyIn) {
    this.processInstanceBusinessKeyIn = JsonNullable.>of(processInstanceBusinessKeyIn);
    
    return this;
  }

  public TaskQueryDto addProcessInstanceBusinessKeyInItem(String processInstanceBusinessKeyInItem) {
    if (this.processInstanceBusinessKeyIn == null || !this.processInstanceBusinessKeyIn.isPresent()) {
      this.processInstanceBusinessKeyIn = JsonNullable.>of(new ArrayList<>());
    }
    try {
      this.processInstanceBusinessKeyIn.get().add(processInstanceBusinessKeyInItem);
    } catch (java.util.NoSuchElementException e) {
      // this can never happen, as we make sure above that the value is present
    }
    return this;
  }

   /**
   * Restrict to tasks that belong to process instances with one of the give business keys.  The keys need to be in a comma-separated list.
   * @return processInstanceBusinessKeyIn
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public List getProcessInstanceBusinessKeyIn() {
        return processInstanceBusinessKeyIn.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_PROCESS_INSTANCE_BUSINESS_KEY_IN)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable> getProcessInstanceBusinessKeyIn_JsonNullable() {
    return processInstanceBusinessKeyIn;
  }
  
  @JsonProperty(JSON_PROPERTY_PROCESS_INSTANCE_BUSINESS_KEY_IN)
  public void setProcessInstanceBusinessKeyIn_JsonNullable(JsonNullable> processInstanceBusinessKeyIn) {
    this.processInstanceBusinessKeyIn = processInstanceBusinessKeyIn;
  }

  public void setProcessInstanceBusinessKeyIn(List processInstanceBusinessKeyIn) {
    this.processInstanceBusinessKeyIn = JsonNullable.>of(processInstanceBusinessKeyIn);
  }


  public TaskQueryDto processInstanceBusinessKeyLike(String processInstanceBusinessKeyLike) {
    this.processInstanceBusinessKeyLike = JsonNullable.of(processInstanceBusinessKeyLike);
    
    return this;
  }

   /**
   * Restrict to tasks that have a process instance business key that has the parameter  value as a substring.
   * @return processInstanceBusinessKeyLike
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getProcessInstanceBusinessKeyLike() {
        return processInstanceBusinessKeyLike.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_PROCESS_INSTANCE_BUSINESS_KEY_LIKE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getProcessInstanceBusinessKeyLike_JsonNullable() {
    return processInstanceBusinessKeyLike;
  }
  
  @JsonProperty(JSON_PROPERTY_PROCESS_INSTANCE_BUSINESS_KEY_LIKE)
  public void setProcessInstanceBusinessKeyLike_JsonNullable(JsonNullable processInstanceBusinessKeyLike) {
    this.processInstanceBusinessKeyLike = processInstanceBusinessKeyLike;
  }

  public void setProcessInstanceBusinessKeyLike(String processInstanceBusinessKeyLike) {
    this.processInstanceBusinessKeyLike = JsonNullable.of(processInstanceBusinessKeyLike);
  }


  public TaskQueryDto processInstanceBusinessKeyLikeExpression(String processInstanceBusinessKeyLikeExpression) {
    this.processInstanceBusinessKeyLikeExpression = JsonNullable.of(processInstanceBusinessKeyLikeExpression);
    
    return this;
  }

   /**
   * Restrict to tasks that have a process instance business key that has the parameter  value as a substring and is described by an expression. See the [user guide](https://docs.camunda.org/manual/7.21/user-guide/process-engine/expression-language/#internal-context-functions)  for more information on available functions.
   * @return processInstanceBusinessKeyLikeExpression
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getProcessInstanceBusinessKeyLikeExpression() {
        return processInstanceBusinessKeyLikeExpression.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_PROCESS_INSTANCE_BUSINESS_KEY_LIKE_EXPRESSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getProcessInstanceBusinessKeyLikeExpression_JsonNullable() {
    return processInstanceBusinessKeyLikeExpression;
  }
  
  @JsonProperty(JSON_PROPERTY_PROCESS_INSTANCE_BUSINESS_KEY_LIKE_EXPRESSION)
  public void setProcessInstanceBusinessKeyLikeExpression_JsonNullable(JsonNullable processInstanceBusinessKeyLikeExpression) {
    this.processInstanceBusinessKeyLikeExpression = processInstanceBusinessKeyLikeExpression;
  }

  public void setProcessInstanceBusinessKeyLikeExpression(String processInstanceBusinessKeyLikeExpression) {
    this.processInstanceBusinessKeyLikeExpression = JsonNullable.of(processInstanceBusinessKeyLikeExpression);
  }


  public TaskQueryDto processDefinitionId(String processDefinitionId) {
    this.processDefinitionId = JsonNullable.of(processDefinitionId);
    
    return this;
  }

   /**
   * Restrict to tasks that belong to a process definition with the given id.
   * @return processDefinitionId
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getProcessDefinitionId() {
        return processDefinitionId.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_PROCESS_DEFINITION_ID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getProcessDefinitionId_JsonNullable() {
    return processDefinitionId;
  }
  
  @JsonProperty(JSON_PROPERTY_PROCESS_DEFINITION_ID)
  public void setProcessDefinitionId_JsonNullable(JsonNullable processDefinitionId) {
    this.processDefinitionId = processDefinitionId;
  }

  public void setProcessDefinitionId(String processDefinitionId) {
    this.processDefinitionId = JsonNullable.of(processDefinitionId);
  }


  public TaskQueryDto processDefinitionKey(String processDefinitionKey) {
    this.processDefinitionKey = JsonNullable.of(processDefinitionKey);
    
    return this;
  }

   /**
   * Restrict to tasks that belong to a process definition with the given key.
   * @return processDefinitionKey
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getProcessDefinitionKey() {
        return processDefinitionKey.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_PROCESS_DEFINITION_KEY)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getProcessDefinitionKey_JsonNullable() {
    return processDefinitionKey;
  }
  
  @JsonProperty(JSON_PROPERTY_PROCESS_DEFINITION_KEY)
  public void setProcessDefinitionKey_JsonNullable(JsonNullable processDefinitionKey) {
    this.processDefinitionKey = processDefinitionKey;
  }

  public void setProcessDefinitionKey(String processDefinitionKey) {
    this.processDefinitionKey = JsonNullable.of(processDefinitionKey);
  }


  public TaskQueryDto processDefinitionKeyIn(List processDefinitionKeyIn) {
    this.processDefinitionKeyIn = JsonNullable.>of(processDefinitionKeyIn);
    
    return this;
  }

  public TaskQueryDto addProcessDefinitionKeyInItem(String processDefinitionKeyInItem) {
    if (this.processDefinitionKeyIn == null || !this.processDefinitionKeyIn.isPresent()) {
      this.processDefinitionKeyIn = JsonNullable.>of(new ArrayList<>());
    }
    try {
      this.processDefinitionKeyIn.get().add(processDefinitionKeyInItem);
    } catch (java.util.NoSuchElementException e) {
      // this can never happen, as we make sure above that the value is present
    }
    return this;
  }

   /**
   * Restrict to tasks that belong to a process definition with one of the given keys. The  keys need to be in a comma-separated list.
   * @return processDefinitionKeyIn
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public List getProcessDefinitionKeyIn() {
        return processDefinitionKeyIn.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_PROCESS_DEFINITION_KEY_IN)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable> getProcessDefinitionKeyIn_JsonNullable() {
    return processDefinitionKeyIn;
  }
  
  @JsonProperty(JSON_PROPERTY_PROCESS_DEFINITION_KEY_IN)
  public void setProcessDefinitionKeyIn_JsonNullable(JsonNullable> processDefinitionKeyIn) {
    this.processDefinitionKeyIn = processDefinitionKeyIn;
  }

  public void setProcessDefinitionKeyIn(List processDefinitionKeyIn) {
    this.processDefinitionKeyIn = JsonNullable.>of(processDefinitionKeyIn);
  }


  public TaskQueryDto processDefinitionName(String processDefinitionName) {
    this.processDefinitionName = JsonNullable.of(processDefinitionName);
    
    return this;
  }

   /**
   * Restrict to tasks that belong to a process definition with the given name.
   * @return processDefinitionName
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getProcessDefinitionName() {
        return processDefinitionName.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_PROCESS_DEFINITION_NAME)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getProcessDefinitionName_JsonNullable() {
    return processDefinitionName;
  }
  
  @JsonProperty(JSON_PROPERTY_PROCESS_DEFINITION_NAME)
  public void setProcessDefinitionName_JsonNullable(JsonNullable processDefinitionName) {
    this.processDefinitionName = processDefinitionName;
  }

  public void setProcessDefinitionName(String processDefinitionName) {
    this.processDefinitionName = JsonNullable.of(processDefinitionName);
  }


  public TaskQueryDto processDefinitionNameLike(String processDefinitionNameLike) {
    this.processDefinitionNameLike = JsonNullable.of(processDefinitionNameLike);
    
    return this;
  }

   /**
   * Restrict to tasks that have a process definition name that has the parameter value as  a substring.
   * @return processDefinitionNameLike
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getProcessDefinitionNameLike() {
        return processDefinitionNameLike.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_PROCESS_DEFINITION_NAME_LIKE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getProcessDefinitionNameLike_JsonNullable() {
    return processDefinitionNameLike;
  }
  
  @JsonProperty(JSON_PROPERTY_PROCESS_DEFINITION_NAME_LIKE)
  public void setProcessDefinitionNameLike_JsonNullable(JsonNullable processDefinitionNameLike) {
    this.processDefinitionNameLike = processDefinitionNameLike;
  }

  public void setProcessDefinitionNameLike(String processDefinitionNameLike) {
    this.processDefinitionNameLike = JsonNullable.of(processDefinitionNameLike);
  }


  public TaskQueryDto executionId(String executionId) {
    this.executionId = JsonNullable.of(executionId);
    
    return this;
  }

   /**
   * Restrict to tasks that belong to an execution with the given id.
   * @return executionId
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getExecutionId() {
        return executionId.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_EXECUTION_ID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getExecutionId_JsonNullable() {
    return executionId;
  }
  
  @JsonProperty(JSON_PROPERTY_EXECUTION_ID)
  public void setExecutionId_JsonNullable(JsonNullable executionId) {
    this.executionId = executionId;
  }

  public void setExecutionId(String executionId) {
    this.executionId = JsonNullable.of(executionId);
  }


  public TaskQueryDto caseInstanceId(String caseInstanceId) {
    this.caseInstanceId = JsonNullable.of(caseInstanceId);
    
    return this;
  }

   /**
   * Restrict to tasks that belong to case instances with the given id.
   * @return caseInstanceId
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getCaseInstanceId() {
        return caseInstanceId.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CASE_INSTANCE_ID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getCaseInstanceId_JsonNullable() {
    return caseInstanceId;
  }
  
  @JsonProperty(JSON_PROPERTY_CASE_INSTANCE_ID)
  public void setCaseInstanceId_JsonNullable(JsonNullable caseInstanceId) {
    this.caseInstanceId = caseInstanceId;
  }

  public void setCaseInstanceId(String caseInstanceId) {
    this.caseInstanceId = JsonNullable.of(caseInstanceId);
  }


  public TaskQueryDto caseInstanceBusinessKey(String caseInstanceBusinessKey) {
    this.caseInstanceBusinessKey = JsonNullable.of(caseInstanceBusinessKey);
    
    return this;
  }

   /**
   * Restrict to tasks that belong to case instances with the given business key.
   * @return caseInstanceBusinessKey
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getCaseInstanceBusinessKey() {
        return caseInstanceBusinessKey.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CASE_INSTANCE_BUSINESS_KEY)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getCaseInstanceBusinessKey_JsonNullable() {
    return caseInstanceBusinessKey;
  }
  
  @JsonProperty(JSON_PROPERTY_CASE_INSTANCE_BUSINESS_KEY)
  public void setCaseInstanceBusinessKey_JsonNullable(JsonNullable caseInstanceBusinessKey) {
    this.caseInstanceBusinessKey = caseInstanceBusinessKey;
  }

  public void setCaseInstanceBusinessKey(String caseInstanceBusinessKey) {
    this.caseInstanceBusinessKey = JsonNullable.of(caseInstanceBusinessKey);
  }


  public TaskQueryDto caseInstanceBusinessKeyLike(String caseInstanceBusinessKeyLike) {
    this.caseInstanceBusinessKeyLike = JsonNullable.of(caseInstanceBusinessKeyLike);
    
    return this;
  }

   /**
   * Restrict to tasks that have a case instance business key that has the parameter value  as a substring.
   * @return caseInstanceBusinessKeyLike
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getCaseInstanceBusinessKeyLike() {
        return caseInstanceBusinessKeyLike.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CASE_INSTANCE_BUSINESS_KEY_LIKE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getCaseInstanceBusinessKeyLike_JsonNullable() {
    return caseInstanceBusinessKeyLike;
  }
  
  @JsonProperty(JSON_PROPERTY_CASE_INSTANCE_BUSINESS_KEY_LIKE)
  public void setCaseInstanceBusinessKeyLike_JsonNullable(JsonNullable caseInstanceBusinessKeyLike) {
    this.caseInstanceBusinessKeyLike = caseInstanceBusinessKeyLike;
  }

  public void setCaseInstanceBusinessKeyLike(String caseInstanceBusinessKeyLike) {
    this.caseInstanceBusinessKeyLike = JsonNullable.of(caseInstanceBusinessKeyLike);
  }


  public TaskQueryDto caseDefinitionId(String caseDefinitionId) {
    this.caseDefinitionId = JsonNullable.of(caseDefinitionId);
    
    return this;
  }

   /**
   * Restrict to tasks that belong to a case definition with the given id.
   * @return caseDefinitionId
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getCaseDefinitionId() {
        return caseDefinitionId.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CASE_DEFINITION_ID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getCaseDefinitionId_JsonNullable() {
    return caseDefinitionId;
  }
  
  @JsonProperty(JSON_PROPERTY_CASE_DEFINITION_ID)
  public void setCaseDefinitionId_JsonNullable(JsonNullable caseDefinitionId) {
    this.caseDefinitionId = caseDefinitionId;
  }

  public void setCaseDefinitionId(String caseDefinitionId) {
    this.caseDefinitionId = JsonNullable.of(caseDefinitionId);
  }


  public TaskQueryDto caseDefinitionKey(String caseDefinitionKey) {
    this.caseDefinitionKey = JsonNullable.of(caseDefinitionKey);
    
    return this;
  }

   /**
   * Restrict to tasks that belong to a case definition with the given key.
   * @return caseDefinitionKey
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getCaseDefinitionKey() {
        return caseDefinitionKey.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CASE_DEFINITION_KEY)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getCaseDefinitionKey_JsonNullable() {
    return caseDefinitionKey;
  }
  
  @JsonProperty(JSON_PROPERTY_CASE_DEFINITION_KEY)
  public void setCaseDefinitionKey_JsonNullable(JsonNullable caseDefinitionKey) {
    this.caseDefinitionKey = caseDefinitionKey;
  }

  public void setCaseDefinitionKey(String caseDefinitionKey) {
    this.caseDefinitionKey = JsonNullable.of(caseDefinitionKey);
  }


  public TaskQueryDto caseDefinitionName(String caseDefinitionName) {
    this.caseDefinitionName = JsonNullable.of(caseDefinitionName);
    
    return this;
  }

   /**
   * Restrict to tasks that belong to a case definition with the given name.
   * @return caseDefinitionName
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getCaseDefinitionName() {
        return caseDefinitionName.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CASE_DEFINITION_NAME)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getCaseDefinitionName_JsonNullable() {
    return caseDefinitionName;
  }
  
  @JsonProperty(JSON_PROPERTY_CASE_DEFINITION_NAME)
  public void setCaseDefinitionName_JsonNullable(JsonNullable caseDefinitionName) {
    this.caseDefinitionName = caseDefinitionName;
  }

  public void setCaseDefinitionName(String caseDefinitionName) {
    this.caseDefinitionName = JsonNullable.of(caseDefinitionName);
  }


  public TaskQueryDto caseDefinitionNameLike(String caseDefinitionNameLike) {
    this.caseDefinitionNameLike = JsonNullable.of(caseDefinitionNameLike);
    
    return this;
  }

   /**
   * Restrict to tasks that have a case definition name that has the parameter value as a  substring.
   * @return caseDefinitionNameLike
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getCaseDefinitionNameLike() {
        return caseDefinitionNameLike.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CASE_DEFINITION_NAME_LIKE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getCaseDefinitionNameLike_JsonNullable() {
    return caseDefinitionNameLike;
  }
  
  @JsonProperty(JSON_PROPERTY_CASE_DEFINITION_NAME_LIKE)
  public void setCaseDefinitionNameLike_JsonNullable(JsonNullable caseDefinitionNameLike) {
    this.caseDefinitionNameLike = caseDefinitionNameLike;
  }

  public void setCaseDefinitionNameLike(String caseDefinitionNameLike) {
    this.caseDefinitionNameLike = JsonNullable.of(caseDefinitionNameLike);
  }


  public TaskQueryDto caseExecutionId(String caseExecutionId) {
    this.caseExecutionId = JsonNullable.of(caseExecutionId);
    
    return this;
  }

   /**
   * Restrict to tasks that belong to a case execution with the given id.
   * @return caseExecutionId
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getCaseExecutionId() {
        return caseExecutionId.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CASE_EXECUTION_ID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getCaseExecutionId_JsonNullable() {
    return caseExecutionId;
  }
  
  @JsonProperty(JSON_PROPERTY_CASE_EXECUTION_ID)
  public void setCaseExecutionId_JsonNullable(JsonNullable caseExecutionId) {
    this.caseExecutionId = caseExecutionId;
  }

  public void setCaseExecutionId(String caseExecutionId) {
    this.caseExecutionId = JsonNullable.of(caseExecutionId);
  }


  public TaskQueryDto activityInstanceIdIn(List activityInstanceIdIn) {
    this.activityInstanceIdIn = JsonNullable.>of(activityInstanceIdIn);
    
    return this;
  }

  public TaskQueryDto addActivityInstanceIdInItem(String activityInstanceIdInItem) {
    if (this.activityInstanceIdIn == null || !this.activityInstanceIdIn.isPresent()) {
      this.activityInstanceIdIn = JsonNullable.>of(new ArrayList<>());
    }
    try {
      this.activityInstanceIdIn.get().add(activityInstanceIdInItem);
    } catch (java.util.NoSuchElementException e) {
      // this can never happen, as we make sure above that the value is present
    }
    return this;
  }

   /**
   * Only include tasks which belong to one of the passed and comma-separated activity  instance ids.
   * @return activityInstanceIdIn
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public List getActivityInstanceIdIn() {
        return activityInstanceIdIn.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_ACTIVITY_INSTANCE_ID_IN)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable> getActivityInstanceIdIn_JsonNullable() {
    return activityInstanceIdIn;
  }
  
  @JsonProperty(JSON_PROPERTY_ACTIVITY_INSTANCE_ID_IN)
  public void setActivityInstanceIdIn_JsonNullable(JsonNullable> activityInstanceIdIn) {
    this.activityInstanceIdIn = activityInstanceIdIn;
  }

  public void setActivityInstanceIdIn(List activityInstanceIdIn) {
    this.activityInstanceIdIn = JsonNullable.>of(activityInstanceIdIn);
  }


  public TaskQueryDto tenantIdIn(List tenantIdIn) {
    this.tenantIdIn = JsonNullable.>of(tenantIdIn);
    
    return this;
  }

  public TaskQueryDto addTenantIdInItem(String tenantIdInItem) {
    if (this.tenantIdIn == null || !this.tenantIdIn.isPresent()) {
      this.tenantIdIn = JsonNullable.>of(new ArrayList<>());
    }
    try {
      this.tenantIdIn.get().add(tenantIdInItem);
    } catch (java.util.NoSuchElementException e) {
      // this can never happen, as we make sure above that the value is present
    }
    return this;
  }

   /**
   * Only include tasks which belong to one of the passed and comma-separated  tenant ids.
   * @return tenantIdIn
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public List getTenantIdIn() {
        return tenantIdIn.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_TENANT_ID_IN)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable> getTenantIdIn_JsonNullable() {
    return tenantIdIn;
  }
  
  @JsonProperty(JSON_PROPERTY_TENANT_ID_IN)
  public void setTenantIdIn_JsonNullable(JsonNullable> tenantIdIn) {
    this.tenantIdIn = tenantIdIn;
  }

  public void setTenantIdIn(List tenantIdIn) {
    this.tenantIdIn = JsonNullable.>of(tenantIdIn);
  }


  public TaskQueryDto withoutTenantId(Boolean withoutTenantId) {
    this.withoutTenantId = JsonNullable.of(withoutTenantId);
    
    return this;
  }

   /**
   * Only include tasks which belong to no tenant. Value may only be `true`,  as `false` is the default behavior.
   * @return withoutTenantId
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public Boolean getWithoutTenantId() {
        return withoutTenantId.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_WITHOUT_TENANT_ID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getWithoutTenantId_JsonNullable() {
    return withoutTenantId;
  }
  
  @JsonProperty(JSON_PROPERTY_WITHOUT_TENANT_ID)
  public void setWithoutTenantId_JsonNullable(JsonNullable withoutTenantId) {
    this.withoutTenantId = withoutTenantId;
  }

  public void setWithoutTenantId(Boolean withoutTenantId) {
    this.withoutTenantId = JsonNullable.of(withoutTenantId);
  }


  public TaskQueryDto assignee(String assignee) {
    this.assignee = JsonNullable.of(assignee);
    
    return this;
  }

   /**
   * Restrict to tasks that the given user is assigned to.
   * @return assignee
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getAssignee() {
        return assignee.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_ASSIGNEE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getAssignee_JsonNullable() {
    return assignee;
  }
  
  @JsonProperty(JSON_PROPERTY_ASSIGNEE)
  public void setAssignee_JsonNullable(JsonNullable assignee) {
    this.assignee = assignee;
  }

  public void setAssignee(String assignee) {
    this.assignee = JsonNullable.of(assignee);
  }


  public TaskQueryDto assigneeExpression(String assigneeExpression) {
    this.assigneeExpression = JsonNullable.of(assigneeExpression);
    
    return this;
  }

   /**
   * Restrict to tasks that the user described by the given expression is assigned to. See the [user guide](https://docs.camunda.org/manual/7.21/user-guide/process-engine/expression-language/#internal-context-functions)  for more information on available functions.
   * @return assigneeExpression
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getAssigneeExpression() {
        return assigneeExpression.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_ASSIGNEE_EXPRESSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getAssigneeExpression_JsonNullable() {
    return assigneeExpression;
  }
  
  @JsonProperty(JSON_PROPERTY_ASSIGNEE_EXPRESSION)
  public void setAssigneeExpression_JsonNullable(JsonNullable assigneeExpression) {
    this.assigneeExpression = assigneeExpression;
  }

  public void setAssigneeExpression(String assigneeExpression) {
    this.assigneeExpression = JsonNullable.of(assigneeExpression);
  }


  public TaskQueryDto assigneeLike(String assigneeLike) {
    this.assigneeLike = JsonNullable.of(assigneeLike);
    
    return this;
  }

   /**
   * Restrict to tasks that have an assignee that has the parameter  value as a substring.
   * @return assigneeLike
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getAssigneeLike() {
        return assigneeLike.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_ASSIGNEE_LIKE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getAssigneeLike_JsonNullable() {
    return assigneeLike;
  }
  
  @JsonProperty(JSON_PROPERTY_ASSIGNEE_LIKE)
  public void setAssigneeLike_JsonNullable(JsonNullable assigneeLike) {
    this.assigneeLike = assigneeLike;
  }

  public void setAssigneeLike(String assigneeLike) {
    this.assigneeLike = JsonNullable.of(assigneeLike);
  }


  public TaskQueryDto assigneeLikeExpression(String assigneeLikeExpression) {
    this.assigneeLikeExpression = JsonNullable.of(assigneeLikeExpression);
    
    return this;
  }

   /**
   * Restrict to tasks that have an assignee that has the parameter value described by the  given expression as a substring. See the  [user guide](https://docs.camunda.org/manual/7.21/user-guide/process-engine/expression-language/#internal-context-functions)  for more information on available functions.
   * @return assigneeLikeExpression
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getAssigneeLikeExpression() {
        return assigneeLikeExpression.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_ASSIGNEE_LIKE_EXPRESSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getAssigneeLikeExpression_JsonNullable() {
    return assigneeLikeExpression;
  }
  
  @JsonProperty(JSON_PROPERTY_ASSIGNEE_LIKE_EXPRESSION)
  public void setAssigneeLikeExpression_JsonNullable(JsonNullable assigneeLikeExpression) {
    this.assigneeLikeExpression = assigneeLikeExpression;
  }

  public void setAssigneeLikeExpression(String assigneeLikeExpression) {
    this.assigneeLikeExpression = JsonNullable.of(assigneeLikeExpression);
  }


  public TaskQueryDto assigneeIn(List assigneeIn) {
    this.assigneeIn = JsonNullable.>of(assigneeIn);
    
    return this;
  }

  public TaskQueryDto addAssigneeInItem(String assigneeInItem) {
    if (this.assigneeIn == null || !this.assigneeIn.isPresent()) {
      this.assigneeIn = JsonNullable.>of(new ArrayList<>());
    }
    try {
      this.assigneeIn.get().add(assigneeInItem);
    } catch (java.util.NoSuchElementException e) {
      // this can never happen, as we make sure above that the value is present
    }
    return this;
  }

   /**
   * Only include tasks which are assigned to one of the passed and comma-separated user ids.
   * @return assigneeIn
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public List getAssigneeIn() {
        return assigneeIn.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_ASSIGNEE_IN)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable> getAssigneeIn_JsonNullable() {
    return assigneeIn;
  }
  
  @JsonProperty(JSON_PROPERTY_ASSIGNEE_IN)
  public void setAssigneeIn_JsonNullable(JsonNullable> assigneeIn) {
    this.assigneeIn = assigneeIn;
  }

  public void setAssigneeIn(List assigneeIn) {
    this.assigneeIn = JsonNullable.>of(assigneeIn);
  }


  public TaskQueryDto assigneeNotIn(List assigneeNotIn) {
    this.assigneeNotIn = JsonNullable.>of(assigneeNotIn);
    
    return this;
  }

  public TaskQueryDto addAssigneeNotInItem(String assigneeNotInItem) {
    if (this.assigneeNotIn == null || !this.assigneeNotIn.isPresent()) {
      this.assigneeNotIn = JsonNullable.>of(new ArrayList<>());
    }
    try {
      this.assigneeNotIn.get().add(assigneeNotInItem);
    } catch (java.util.NoSuchElementException e) {
      // this can never happen, as we make sure above that the value is present
    }
    return this;
  }

   /**
   * Only include tasks which are not assigned to one of the passed and comma-separated user ids.
   * @return assigneeNotIn
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public List getAssigneeNotIn() {
        return assigneeNotIn.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_ASSIGNEE_NOT_IN)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable> getAssigneeNotIn_JsonNullable() {
    return assigneeNotIn;
  }
  
  @JsonProperty(JSON_PROPERTY_ASSIGNEE_NOT_IN)
  public void setAssigneeNotIn_JsonNullable(JsonNullable> assigneeNotIn) {
    this.assigneeNotIn = assigneeNotIn;
  }

  public void setAssigneeNotIn(List assigneeNotIn) {
    this.assigneeNotIn = JsonNullable.>of(assigneeNotIn);
  }


  public TaskQueryDto owner(String owner) {
    this.owner = JsonNullable.of(owner);
    
    return this;
  }

   /**
   * Restrict to tasks that the given user owns.
   * @return owner
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getOwner() {
        return owner.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_OWNER)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getOwner_JsonNullable() {
    return owner;
  }
  
  @JsonProperty(JSON_PROPERTY_OWNER)
  public void setOwner_JsonNullable(JsonNullable owner) {
    this.owner = owner;
  }

  public void setOwner(String owner) {
    this.owner = JsonNullable.of(owner);
  }


  public TaskQueryDto ownerExpression(String ownerExpression) {
    this.ownerExpression = JsonNullable.of(ownerExpression);
    
    return this;
  }

   /**
   * Restrict to tasks that the user described by the given expression owns. See the  [user guide](https://docs.camunda.org/manual/7.21/user-guide/process-engine/expression-language/#internal-context-functions)  for more information on available functions.
   * @return ownerExpression
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getOwnerExpression() {
        return ownerExpression.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_OWNER_EXPRESSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getOwnerExpression_JsonNullable() {
    return ownerExpression;
  }
  
  @JsonProperty(JSON_PROPERTY_OWNER_EXPRESSION)
  public void setOwnerExpression_JsonNullable(JsonNullable ownerExpression) {
    this.ownerExpression = ownerExpression;
  }

  public void setOwnerExpression(String ownerExpression) {
    this.ownerExpression = JsonNullable.of(ownerExpression);
  }


  public TaskQueryDto candidateGroup(String candidateGroup) {
    this.candidateGroup = JsonNullable.of(candidateGroup);
    
    return this;
  }

   /**
   * Only include tasks that are offered to the given group.
   * @return candidateGroup
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getCandidateGroup() {
        return candidateGroup.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CANDIDATE_GROUP)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getCandidateGroup_JsonNullable() {
    return candidateGroup;
  }
  
  @JsonProperty(JSON_PROPERTY_CANDIDATE_GROUP)
  public void setCandidateGroup_JsonNullable(JsonNullable candidateGroup) {
    this.candidateGroup = candidateGroup;
  }

  public void setCandidateGroup(String candidateGroup) {
    this.candidateGroup = JsonNullable.of(candidateGroup);
  }


  public TaskQueryDto candidateGroupExpression(String candidateGroupExpression) {
    this.candidateGroupExpression = JsonNullable.of(candidateGroupExpression);
    
    return this;
  }

   /**
   * Only include tasks that are offered to the group described by the given expression.  See the  [user guide](https://docs.camunda.org/manual/7.21/user-guide/process-engine/expression-language/#internal-context-functions)  for more information on available functions.
   * @return candidateGroupExpression
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getCandidateGroupExpression() {
        return candidateGroupExpression.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CANDIDATE_GROUP_EXPRESSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getCandidateGroupExpression_JsonNullable() {
    return candidateGroupExpression;
  }
  
  @JsonProperty(JSON_PROPERTY_CANDIDATE_GROUP_EXPRESSION)
  public void setCandidateGroupExpression_JsonNullable(JsonNullable candidateGroupExpression) {
    this.candidateGroupExpression = candidateGroupExpression;
  }

  public void setCandidateGroupExpression(String candidateGroupExpression) {
    this.candidateGroupExpression = JsonNullable.of(candidateGroupExpression);
  }


  public TaskQueryDto candidateUser(String candidateUser) {
    this.candidateUser = JsonNullable.of(candidateUser);
    
    return this;
  }

   /**
   * Only include tasks that are offered to the given user or to one of his groups.
   * @return candidateUser
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getCandidateUser() {
        return candidateUser.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CANDIDATE_USER)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getCandidateUser_JsonNullable() {
    return candidateUser;
  }
  
  @JsonProperty(JSON_PROPERTY_CANDIDATE_USER)
  public void setCandidateUser_JsonNullable(JsonNullable candidateUser) {
    this.candidateUser = candidateUser;
  }

  public void setCandidateUser(String candidateUser) {
    this.candidateUser = JsonNullable.of(candidateUser);
  }


  public TaskQueryDto candidateUserExpression(String candidateUserExpression) {
    this.candidateUserExpression = JsonNullable.of(candidateUserExpression);
    
    return this;
  }

   /**
   * Only include tasks that are offered to the user described by the given expression.  See the  [user guide](https://docs.camunda.org/manual/7.21/user-guide/process-engine/expression-language/#internal-context-functions)  for more information on available functions.
   * @return candidateUserExpression
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getCandidateUserExpression() {
        return candidateUserExpression.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CANDIDATE_USER_EXPRESSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getCandidateUserExpression_JsonNullable() {
    return candidateUserExpression;
  }
  
  @JsonProperty(JSON_PROPERTY_CANDIDATE_USER_EXPRESSION)
  public void setCandidateUserExpression_JsonNullable(JsonNullable candidateUserExpression) {
    this.candidateUserExpression = candidateUserExpression;
  }

  public void setCandidateUserExpression(String candidateUserExpression) {
    this.candidateUserExpression = JsonNullable.of(candidateUserExpression);
  }


  public TaskQueryDto includeAssignedTasks(Boolean includeAssignedTasks) {
    this.includeAssignedTasks = JsonNullable.of(includeAssignedTasks);
    
    return this;
  }

   /**
   * Also include tasks that are assigned to users in candidate queries. Default is to only  include tasks that are not assigned to any user if you query by candidate user or group(s).
   * @return includeAssignedTasks
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public Boolean getIncludeAssignedTasks() {
        return includeAssignedTasks.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_INCLUDE_ASSIGNED_TASKS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getIncludeAssignedTasks_JsonNullable() {
    return includeAssignedTasks;
  }
  
  @JsonProperty(JSON_PROPERTY_INCLUDE_ASSIGNED_TASKS)
  public void setIncludeAssignedTasks_JsonNullable(JsonNullable includeAssignedTasks) {
    this.includeAssignedTasks = includeAssignedTasks;
  }

  public void setIncludeAssignedTasks(Boolean includeAssignedTasks) {
    this.includeAssignedTasks = JsonNullable.of(includeAssignedTasks);
  }


  public TaskQueryDto involvedUser(String involvedUser) {
    this.involvedUser = JsonNullable.of(involvedUser);
    
    return this;
  }

   /**
   * Only include tasks that the given user is involved in. A user is involved in a task if  an identity link exists between task and user (e.g., the user is the assignee).
   * @return involvedUser
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getInvolvedUser() {
        return involvedUser.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_INVOLVED_USER)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getInvolvedUser_JsonNullable() {
    return involvedUser;
  }
  
  @JsonProperty(JSON_PROPERTY_INVOLVED_USER)
  public void setInvolvedUser_JsonNullable(JsonNullable involvedUser) {
    this.involvedUser = involvedUser;
  }

  public void setInvolvedUser(String involvedUser) {
    this.involvedUser = JsonNullable.of(involvedUser);
  }


  public TaskQueryDto involvedUserExpression(String involvedUserExpression) {
    this.involvedUserExpression = JsonNullable.of(involvedUserExpression);
    
    return this;
  }

   /**
   * Only include tasks that the user described by the given expression is involved in. A user is involved in a task if an identity link exists between task and user (e.g., the user is the assignee). See the [user guide](https://docs.camunda.org/manual/7.21/user-guide/process-engine/expression-language/#internal-context-functions) for more information on available functions.
   * @return involvedUserExpression
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getInvolvedUserExpression() {
        return involvedUserExpression.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_INVOLVED_USER_EXPRESSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getInvolvedUserExpression_JsonNullable() {
    return involvedUserExpression;
  }
  
  @JsonProperty(JSON_PROPERTY_INVOLVED_USER_EXPRESSION)
  public void setInvolvedUserExpression_JsonNullable(JsonNullable involvedUserExpression) {
    this.involvedUserExpression = involvedUserExpression;
  }

  public void setInvolvedUserExpression(String involvedUserExpression) {
    this.involvedUserExpression = JsonNullable.of(involvedUserExpression);
  }


  public TaskQueryDto assigned(Boolean assigned) {
    this.assigned = JsonNullable.of(assigned);
    
    return this;
  }

   /**
   * If set to `true`, restricts the query to all tasks that are assigned.
   * @return assigned
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public Boolean getAssigned() {
        return assigned.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_ASSIGNED)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getAssigned_JsonNullable() {
    return assigned;
  }
  
  @JsonProperty(JSON_PROPERTY_ASSIGNED)
  public void setAssigned_JsonNullable(JsonNullable assigned) {
    this.assigned = assigned;
  }

  public void setAssigned(Boolean assigned) {
    this.assigned = JsonNullable.of(assigned);
  }


  public TaskQueryDto unassigned(Boolean unassigned) {
    this.unassigned = JsonNullable.of(unassigned);
    
    return this;
  }

   /**
   * If set to `true`, restricts the query to all tasks that are unassigned.
   * @return unassigned
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public Boolean getUnassigned() {
        return unassigned.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_UNASSIGNED)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getUnassigned_JsonNullable() {
    return unassigned;
  }
  
  @JsonProperty(JSON_PROPERTY_UNASSIGNED)
  public void setUnassigned_JsonNullable(JsonNullable unassigned) {
    this.unassigned = unassigned;
  }

  public void setUnassigned(Boolean unassigned) {
    this.unassigned = JsonNullable.of(unassigned);
  }


  public TaskQueryDto taskDefinitionKey(String taskDefinitionKey) {
    this.taskDefinitionKey = JsonNullable.of(taskDefinitionKey);
    
    return this;
  }

   /**
   * Restrict to tasks that have the given key.
   * @return taskDefinitionKey
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getTaskDefinitionKey() {
        return taskDefinitionKey.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_TASK_DEFINITION_KEY)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getTaskDefinitionKey_JsonNullable() {
    return taskDefinitionKey;
  }
  
  @JsonProperty(JSON_PROPERTY_TASK_DEFINITION_KEY)
  public void setTaskDefinitionKey_JsonNullable(JsonNullable taskDefinitionKey) {
    this.taskDefinitionKey = taskDefinitionKey;
  }

  public void setTaskDefinitionKey(String taskDefinitionKey) {
    this.taskDefinitionKey = JsonNullable.of(taskDefinitionKey);
  }


  public TaskQueryDto taskDefinitionKeyIn(List taskDefinitionKeyIn) {
    this.taskDefinitionKeyIn = JsonNullable.>of(taskDefinitionKeyIn);
    
    return this;
  }

  public TaskQueryDto addTaskDefinitionKeyInItem(String taskDefinitionKeyInItem) {
    if (this.taskDefinitionKeyIn == null || !this.taskDefinitionKeyIn.isPresent()) {
      this.taskDefinitionKeyIn = JsonNullable.>of(new ArrayList<>());
    }
    try {
      this.taskDefinitionKeyIn.get().add(taskDefinitionKeyInItem);
    } catch (java.util.NoSuchElementException e) {
      // this can never happen, as we make sure above that the value is present
    }
    return this;
  }

   /**
   * Restrict to tasks that have one of the given keys. The keys need to be in a comma-separated list.
   * @return taskDefinitionKeyIn
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public List getTaskDefinitionKeyIn() {
        return taskDefinitionKeyIn.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_TASK_DEFINITION_KEY_IN)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable> getTaskDefinitionKeyIn_JsonNullable() {
    return taskDefinitionKeyIn;
  }
  
  @JsonProperty(JSON_PROPERTY_TASK_DEFINITION_KEY_IN)
  public void setTaskDefinitionKeyIn_JsonNullable(JsonNullable> taskDefinitionKeyIn) {
    this.taskDefinitionKeyIn = taskDefinitionKeyIn;
  }

  public void setTaskDefinitionKeyIn(List taskDefinitionKeyIn) {
    this.taskDefinitionKeyIn = JsonNullable.>of(taskDefinitionKeyIn);
  }


  public TaskQueryDto taskDefinitionKeyLike(String taskDefinitionKeyLike) {
    this.taskDefinitionKeyLike = JsonNullable.of(taskDefinitionKeyLike);
    
    return this;
  }

   /**
   * Restrict to tasks that have a key that has the parameter value as a substring.
   * @return taskDefinitionKeyLike
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getTaskDefinitionKeyLike() {
        return taskDefinitionKeyLike.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_TASK_DEFINITION_KEY_LIKE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getTaskDefinitionKeyLike_JsonNullable() {
    return taskDefinitionKeyLike;
  }
  
  @JsonProperty(JSON_PROPERTY_TASK_DEFINITION_KEY_LIKE)
  public void setTaskDefinitionKeyLike_JsonNullable(JsonNullable taskDefinitionKeyLike) {
    this.taskDefinitionKeyLike = taskDefinitionKeyLike;
  }

  public void setTaskDefinitionKeyLike(String taskDefinitionKeyLike) {
    this.taskDefinitionKeyLike = JsonNullable.of(taskDefinitionKeyLike);
  }


  public TaskQueryDto name(String name) {
    this.name = JsonNullable.of(name);
    
    return this;
  }

   /**
   * Restrict to tasks that have the given name.
   * @return name
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getName() {
        return name.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_NAME)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getName_JsonNullable() {
    return name;
  }
  
  @JsonProperty(JSON_PROPERTY_NAME)
  public void setName_JsonNullable(JsonNullable name) {
    this.name = name;
  }

  public void setName(String name) {
    this.name = JsonNullable.of(name);
  }


  public TaskQueryDto nameNotEqual(String nameNotEqual) {
    this.nameNotEqual = JsonNullable.of(nameNotEqual);
    
    return this;
  }

   /**
   * Restrict to tasks that do not have the given name.
   * @return nameNotEqual
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getNameNotEqual() {
        return nameNotEqual.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_NAME_NOT_EQUAL)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getNameNotEqual_JsonNullable() {
    return nameNotEqual;
  }
  
  @JsonProperty(JSON_PROPERTY_NAME_NOT_EQUAL)
  public void setNameNotEqual_JsonNullable(JsonNullable nameNotEqual) {
    this.nameNotEqual = nameNotEqual;
  }

  public void setNameNotEqual(String nameNotEqual) {
    this.nameNotEqual = JsonNullable.of(nameNotEqual);
  }


  public TaskQueryDto nameLike(String nameLike) {
    this.nameLike = JsonNullable.of(nameLike);
    
    return this;
  }

   /**
   * Restrict to tasks that have a name with the given parameter value as substring.
   * @return nameLike
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getNameLike() {
        return nameLike.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_NAME_LIKE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getNameLike_JsonNullable() {
    return nameLike;
  }
  
  @JsonProperty(JSON_PROPERTY_NAME_LIKE)
  public void setNameLike_JsonNullable(JsonNullable nameLike) {
    this.nameLike = nameLike;
  }

  public void setNameLike(String nameLike) {
    this.nameLike = JsonNullable.of(nameLike);
  }


  public TaskQueryDto nameNotLike(String nameNotLike) {
    this.nameNotLike = JsonNullable.of(nameNotLike);
    
    return this;
  }

   /**
   * Restrict to tasks that do not have a name with the given parameter value as substring.
   * @return nameNotLike
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getNameNotLike() {
        return nameNotLike.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_NAME_NOT_LIKE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getNameNotLike_JsonNullable() {
    return nameNotLike;
  }
  
  @JsonProperty(JSON_PROPERTY_NAME_NOT_LIKE)
  public void setNameNotLike_JsonNullable(JsonNullable nameNotLike) {
    this.nameNotLike = nameNotLike;
  }

  public void setNameNotLike(String nameNotLike) {
    this.nameNotLike = JsonNullable.of(nameNotLike);
  }


  public TaskQueryDto description(String description) {
    this.description = JsonNullable.of(description);
    
    return this;
  }

   /**
   * Restrict to tasks that have the given description.
   * @return description
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getDescription() {
        return description.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_DESCRIPTION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getDescription_JsonNullable() {
    return description;
  }
  
  @JsonProperty(JSON_PROPERTY_DESCRIPTION)
  public void setDescription_JsonNullable(JsonNullable description) {
    this.description = description;
  }

  public void setDescription(String description) {
    this.description = JsonNullable.of(description);
  }


  public TaskQueryDto descriptionLike(String descriptionLike) {
    this.descriptionLike = JsonNullable.of(descriptionLike);
    
    return this;
  }

   /**
   * Restrict to tasks that have a description that has the parameter value as a substring.
   * @return descriptionLike
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getDescriptionLike() {
        return descriptionLike.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_DESCRIPTION_LIKE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getDescriptionLike_JsonNullable() {
    return descriptionLike;
  }
  
  @JsonProperty(JSON_PROPERTY_DESCRIPTION_LIKE)
  public void setDescriptionLike_JsonNullable(JsonNullable descriptionLike) {
    this.descriptionLike = descriptionLike;
  }

  public void setDescriptionLike(String descriptionLike) {
    this.descriptionLike = JsonNullable.of(descriptionLike);
  }


  public TaskQueryDto priority(Integer priority) {
    this.priority = JsonNullable.of(priority);
    
    return this;
  }

   /**
   * Restrict to tasks that have the given priority.
   * @return priority
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public Integer getPriority() {
        return priority.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_PRIORITY)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getPriority_JsonNullable() {
    return priority;
  }
  
  @JsonProperty(JSON_PROPERTY_PRIORITY)
  public void setPriority_JsonNullable(JsonNullable priority) {
    this.priority = priority;
  }

  public void setPriority(Integer priority) {
    this.priority = JsonNullable.of(priority);
  }


  public TaskQueryDto maxPriority(Integer maxPriority) {
    this.maxPriority = JsonNullable.of(maxPriority);
    
    return this;
  }

   /**
   * Restrict to tasks that have a lower or equal priority.
   * @return maxPriority
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public Integer getMaxPriority() {
        return maxPriority.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_MAX_PRIORITY)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getMaxPriority_JsonNullable() {
    return maxPriority;
  }
  
  @JsonProperty(JSON_PROPERTY_MAX_PRIORITY)
  public void setMaxPriority_JsonNullable(JsonNullable maxPriority) {
    this.maxPriority = maxPriority;
  }

  public void setMaxPriority(Integer maxPriority) {
    this.maxPriority = JsonNullable.of(maxPriority);
  }


  public TaskQueryDto minPriority(Integer minPriority) {
    this.minPriority = JsonNullable.of(minPriority);
    
    return this;
  }

   /**
   * Restrict to tasks that have a higher or equal priority.
   * @return minPriority
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public Integer getMinPriority() {
        return minPriority.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_MIN_PRIORITY)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getMinPriority_JsonNullable() {
    return minPriority;
  }
  
  @JsonProperty(JSON_PROPERTY_MIN_PRIORITY)
  public void setMinPriority_JsonNullable(JsonNullable minPriority) {
    this.minPriority = minPriority;
  }

  public void setMinPriority(Integer minPriority) {
    this.minPriority = JsonNullable.of(minPriority);
  }


  public TaskQueryDto dueDate(OffsetDateTime dueDate) {
    this.dueDate = JsonNullable.of(dueDate);
    
    return this;
  }

   /**
   * Restrict to tasks that are due on the given date. By [default](https://docs.camunda.org/manual/7.21/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd'T'HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.546+0200`.
   * @return dueDate
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public OffsetDateTime getDueDate() {
        return dueDate.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_DUE_DATE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getDueDate_JsonNullable() {
    return dueDate;
  }
  
  @JsonProperty(JSON_PROPERTY_DUE_DATE)
  public void setDueDate_JsonNullable(JsonNullable dueDate) {
    this.dueDate = dueDate;
  }

  public void setDueDate(OffsetDateTime dueDate) {
    this.dueDate = JsonNullable.of(dueDate);
  }


  public TaskQueryDto dueDateExpression(String dueDateExpression) {
    this.dueDateExpression = JsonNullable.of(dueDateExpression);
    
    return this;
  }

   /**
   * Restrict to tasks that are due on the date described by the given expression. See the [user guide](https://docs.camunda.org/manual/7.21/user-guide/process-engine/expression-language/#internal-context-functions) for more information on available functions. The expression must evaluate to a `java.util.Date` or `org.joda.time.DateTime` object.
   * @return dueDateExpression
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getDueDateExpression() {
        return dueDateExpression.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_DUE_DATE_EXPRESSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getDueDateExpression_JsonNullable() {
    return dueDateExpression;
  }
  
  @JsonProperty(JSON_PROPERTY_DUE_DATE_EXPRESSION)
  public void setDueDateExpression_JsonNullable(JsonNullable dueDateExpression) {
    this.dueDateExpression = dueDateExpression;
  }

  public void setDueDateExpression(String dueDateExpression) {
    this.dueDateExpression = JsonNullable.of(dueDateExpression);
  }


  public TaskQueryDto dueAfter(OffsetDateTime dueAfter) {
    this.dueAfter = JsonNullable.of(dueAfter);
    
    return this;
  }

   /**
   * Restrict to tasks that are due after the given date. By [default](https://docs.camunda.org/manual/7.21/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd'T'HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.435+0200`.
   * @return dueAfter
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public OffsetDateTime getDueAfter() {
        return dueAfter.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_DUE_AFTER)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getDueAfter_JsonNullable() {
    return dueAfter;
  }
  
  @JsonProperty(JSON_PROPERTY_DUE_AFTER)
  public void setDueAfter_JsonNullable(JsonNullable dueAfter) {
    this.dueAfter = dueAfter;
  }

  public void setDueAfter(OffsetDateTime dueAfter) {
    this.dueAfter = JsonNullable.of(dueAfter);
  }


  public TaskQueryDto dueAfterExpression(String dueAfterExpression) {
    this.dueAfterExpression = JsonNullable.of(dueAfterExpression);
    
    return this;
  }

   /**
   * Restrict to tasks that are due after the date described by the given expression. See the [user guide](https://docs.camunda.org/manual/7.21/user-guide/process-engine/expression-language/#internal-context-functions) for more information on available functions. The expression must evaluate to a `java.util.Date` or `org.joda.time.DateTime` object.
   * @return dueAfterExpression
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getDueAfterExpression() {
        return dueAfterExpression.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_DUE_AFTER_EXPRESSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getDueAfterExpression_JsonNullable() {
    return dueAfterExpression;
  }
  
  @JsonProperty(JSON_PROPERTY_DUE_AFTER_EXPRESSION)
  public void setDueAfterExpression_JsonNullable(JsonNullable dueAfterExpression) {
    this.dueAfterExpression = dueAfterExpression;
  }

  public void setDueAfterExpression(String dueAfterExpression) {
    this.dueAfterExpression = JsonNullable.of(dueAfterExpression);
  }


  public TaskQueryDto dueBefore(OffsetDateTime dueBefore) {
    this.dueBefore = JsonNullable.of(dueBefore);
    
    return this;
  }

   /**
   * Restrict to tasks that are due before the given date. By [default](https://docs.camunda.org/manual/7.21/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd'T'HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.243+0200`.
   * @return dueBefore
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public OffsetDateTime getDueBefore() {
        return dueBefore.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_DUE_BEFORE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getDueBefore_JsonNullable() {
    return dueBefore;
  }
  
  @JsonProperty(JSON_PROPERTY_DUE_BEFORE)
  public void setDueBefore_JsonNullable(JsonNullable dueBefore) {
    this.dueBefore = dueBefore;
  }

  public void setDueBefore(OffsetDateTime dueBefore) {
    this.dueBefore = JsonNullable.of(dueBefore);
  }


  public TaskQueryDto dueBeforeExpression(String dueBeforeExpression) {
    this.dueBeforeExpression = JsonNullable.of(dueBeforeExpression);
    
    return this;
  }

   /**
   * Restrict to tasks that are due before the date described by the given expression. See the [user guide](https://docs.camunda.org/manual/7.21/user-guide/process-engine/expression-language/#internal-context-functions) for more information on available functions. The expression must evaluate to a `java.util.Date` or `org.joda.time.DateTime` object.
   * @return dueBeforeExpression
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getDueBeforeExpression() {
        return dueBeforeExpression.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_DUE_BEFORE_EXPRESSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getDueBeforeExpression_JsonNullable() {
    return dueBeforeExpression;
  }
  
  @JsonProperty(JSON_PROPERTY_DUE_BEFORE_EXPRESSION)
  public void setDueBeforeExpression_JsonNullable(JsonNullable dueBeforeExpression) {
    this.dueBeforeExpression = dueBeforeExpression;
  }

  public void setDueBeforeExpression(String dueBeforeExpression) {
    this.dueBeforeExpression = JsonNullable.of(dueBeforeExpression);
  }


  public TaskQueryDto withoutDueDate(Boolean withoutDueDate) {
    this.withoutDueDate = JsonNullable.of(withoutDueDate);
    
    return this;
  }

   /**
   * Only include tasks which have no due date. Value may only be `true`,  as `false` is the default behavior.
   * @return withoutDueDate
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public Boolean getWithoutDueDate() {
        return withoutDueDate.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_WITHOUT_DUE_DATE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getWithoutDueDate_JsonNullable() {
    return withoutDueDate;
  }
  
  @JsonProperty(JSON_PROPERTY_WITHOUT_DUE_DATE)
  public void setWithoutDueDate_JsonNullable(JsonNullable withoutDueDate) {
    this.withoutDueDate = withoutDueDate;
  }

  public void setWithoutDueDate(Boolean withoutDueDate) {
    this.withoutDueDate = JsonNullable.of(withoutDueDate);
  }


  public TaskQueryDto followUpDate(OffsetDateTime followUpDate) {
    this.followUpDate = JsonNullable.of(followUpDate);
    
    return this;
  }

   /**
   * Restrict to tasks that have a followUp date on the given date. By [default](https://docs.camunda.org/manual/7.21/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd'T'HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.342+0200`.
   * @return followUpDate
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public OffsetDateTime getFollowUpDate() {
        return followUpDate.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_FOLLOW_UP_DATE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getFollowUpDate_JsonNullable() {
    return followUpDate;
  }
  
  @JsonProperty(JSON_PROPERTY_FOLLOW_UP_DATE)
  public void setFollowUpDate_JsonNullable(JsonNullable followUpDate) {
    this.followUpDate = followUpDate;
  }

  public void setFollowUpDate(OffsetDateTime followUpDate) {
    this.followUpDate = JsonNullable.of(followUpDate);
  }


  public TaskQueryDto followUpDateExpression(String followUpDateExpression) {
    this.followUpDateExpression = JsonNullable.of(followUpDateExpression);
    
    return this;
  }

   /**
   * Restrict to tasks that have a followUp date on the date described by the given expression. See the [user guide](https://docs.camunda.org/manual/7.21/user-guide/process-engine/expression-language/#internal-context-functions) for more information on available functions. The expression must evaluate to a `java.util.Date` or `org.joda.time.DateTime` object.
   * @return followUpDateExpression
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getFollowUpDateExpression() {
        return followUpDateExpression.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_FOLLOW_UP_DATE_EXPRESSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getFollowUpDateExpression_JsonNullable() {
    return followUpDateExpression;
  }
  
  @JsonProperty(JSON_PROPERTY_FOLLOW_UP_DATE_EXPRESSION)
  public void setFollowUpDateExpression_JsonNullable(JsonNullable followUpDateExpression) {
    this.followUpDateExpression = followUpDateExpression;
  }

  public void setFollowUpDateExpression(String followUpDateExpression) {
    this.followUpDateExpression = JsonNullable.of(followUpDateExpression);
  }


  public TaskQueryDto followUpAfter(OffsetDateTime followUpAfter) {
    this.followUpAfter = JsonNullable.of(followUpAfter);
    
    return this;
  }

   /**
   * Restrict to tasks that have a followUp date after the given date. By [default](https://docs.camunda.org/manual/7.21/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd'T'HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.542+0200`.
   * @return followUpAfter
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public OffsetDateTime getFollowUpAfter() {
        return followUpAfter.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_FOLLOW_UP_AFTER)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getFollowUpAfter_JsonNullable() {
    return followUpAfter;
  }
  
  @JsonProperty(JSON_PROPERTY_FOLLOW_UP_AFTER)
  public void setFollowUpAfter_JsonNullable(JsonNullable followUpAfter) {
    this.followUpAfter = followUpAfter;
  }

  public void setFollowUpAfter(OffsetDateTime followUpAfter) {
    this.followUpAfter = JsonNullable.of(followUpAfter);
  }


  public TaskQueryDto followUpAfterExpression(String followUpAfterExpression) {
    this.followUpAfterExpression = JsonNullable.of(followUpAfterExpression);
    
    return this;
  }

   /**
   * Restrict to tasks that have a followUp date after the date described by the given expression. See the [user guide](https://docs.camunda.org/manual/7.21/user-guide/process-engine/expression-language/#internal-context-functions) for more information on available functions. The expression must evaluate to a `java.util.Date` or `org.joda.time.DateTime` object.
   * @return followUpAfterExpression
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getFollowUpAfterExpression() {
        return followUpAfterExpression.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_FOLLOW_UP_AFTER_EXPRESSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getFollowUpAfterExpression_JsonNullable() {
    return followUpAfterExpression;
  }
  
  @JsonProperty(JSON_PROPERTY_FOLLOW_UP_AFTER_EXPRESSION)
  public void setFollowUpAfterExpression_JsonNullable(JsonNullable followUpAfterExpression) {
    this.followUpAfterExpression = followUpAfterExpression;
  }

  public void setFollowUpAfterExpression(String followUpAfterExpression) {
    this.followUpAfterExpression = JsonNullable.of(followUpAfterExpression);
  }


  public TaskQueryDto followUpBefore(String followUpBefore) {
    this.followUpBefore = JsonNullable.of(followUpBefore);
    
    return this;
  }

   /**
   * Restrict to tasks that have a followUp date before the given date. By [default](https://docs.camunda.org/manual/7.21/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd'T'HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.234+0200`.
   * @return followUpBefore
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getFollowUpBefore() {
        return followUpBefore.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_FOLLOW_UP_BEFORE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getFollowUpBefore_JsonNullable() {
    return followUpBefore;
  }
  
  @JsonProperty(JSON_PROPERTY_FOLLOW_UP_BEFORE)
  public void setFollowUpBefore_JsonNullable(JsonNullable followUpBefore) {
    this.followUpBefore = followUpBefore;
  }

  public void setFollowUpBefore(String followUpBefore) {
    this.followUpBefore = JsonNullable.of(followUpBefore);
  }


  public TaskQueryDto followUpBeforeExpression(String followUpBeforeExpression) {
    this.followUpBeforeExpression = JsonNullable.of(followUpBeforeExpression);
    
    return this;
  }

   /**
   * Restrict to tasks that have a followUp date before the date described by the given expression. See the [user guide](https://docs.camunda.org/manual/7.21/user-guide/process-engine/expression-language/#internal-context-functions) for more information on available functions. The expression must evaluate to a `java.util.Date` or `org.joda.time.DateTime` object.
   * @return followUpBeforeExpression
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getFollowUpBeforeExpression() {
        return followUpBeforeExpression.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_FOLLOW_UP_BEFORE_EXPRESSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getFollowUpBeforeExpression_JsonNullable() {
    return followUpBeforeExpression;
  }
  
  @JsonProperty(JSON_PROPERTY_FOLLOW_UP_BEFORE_EXPRESSION)
  public void setFollowUpBeforeExpression_JsonNullable(JsonNullable followUpBeforeExpression) {
    this.followUpBeforeExpression = followUpBeforeExpression;
  }

  public void setFollowUpBeforeExpression(String followUpBeforeExpression) {
    this.followUpBeforeExpression = JsonNullable.of(followUpBeforeExpression);
  }


  public TaskQueryDto followUpBeforeOrNotExistent(OffsetDateTime followUpBeforeOrNotExistent) {
    this.followUpBeforeOrNotExistent = JsonNullable.of(followUpBeforeOrNotExistent);
    
    return this;
  }

   /**
   * Restrict to tasks that have no followUp date or a followUp date before the given date. By [default](https://docs.camunda.org/manual/7.21/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd'T'HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.432+0200`. The typical use case is to query all `active` tasks for a user for a given date.
   * @return followUpBeforeOrNotExistent
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public OffsetDateTime getFollowUpBeforeOrNotExistent() {
        return followUpBeforeOrNotExistent.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_FOLLOW_UP_BEFORE_OR_NOT_EXISTENT)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getFollowUpBeforeOrNotExistent_JsonNullable() {
    return followUpBeforeOrNotExistent;
  }
  
  @JsonProperty(JSON_PROPERTY_FOLLOW_UP_BEFORE_OR_NOT_EXISTENT)
  public void setFollowUpBeforeOrNotExistent_JsonNullable(JsonNullable followUpBeforeOrNotExistent) {
    this.followUpBeforeOrNotExistent = followUpBeforeOrNotExistent;
  }

  public void setFollowUpBeforeOrNotExistent(OffsetDateTime followUpBeforeOrNotExistent) {
    this.followUpBeforeOrNotExistent = JsonNullable.of(followUpBeforeOrNotExistent);
  }


  public TaskQueryDto followUpBeforeOrNotExistentExpression(String followUpBeforeOrNotExistentExpression) {
    this.followUpBeforeOrNotExistentExpression = JsonNullable.of(followUpBeforeOrNotExistentExpression);
    
    return this;
  }

   /**
   * Restrict to tasks that have no followUp date or a followUp date before the date described by the given expression. See the [user guide](https://docs.camunda.org/manual/7.21/user-guide/process-engine/expression-language/#internal-context-functions) for more information on available functions. The expression must evaluate to a `java.util.Date` or `org.joda.time.DateTime` object.
   * @return followUpBeforeOrNotExistentExpression
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getFollowUpBeforeOrNotExistentExpression() {
        return followUpBeforeOrNotExistentExpression.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_FOLLOW_UP_BEFORE_OR_NOT_EXISTENT_EXPRESSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getFollowUpBeforeOrNotExistentExpression_JsonNullable() {
    return followUpBeforeOrNotExistentExpression;
  }
  
  @JsonProperty(JSON_PROPERTY_FOLLOW_UP_BEFORE_OR_NOT_EXISTENT_EXPRESSION)
  public void setFollowUpBeforeOrNotExistentExpression_JsonNullable(JsonNullable followUpBeforeOrNotExistentExpression) {
    this.followUpBeforeOrNotExistentExpression = followUpBeforeOrNotExistentExpression;
  }

  public void setFollowUpBeforeOrNotExistentExpression(String followUpBeforeOrNotExistentExpression) {
    this.followUpBeforeOrNotExistentExpression = JsonNullable.of(followUpBeforeOrNotExistentExpression);
  }


  public TaskQueryDto createdOn(OffsetDateTime createdOn) {
    this.createdOn = JsonNullable.of(createdOn);
    
    return this;
  }

   /**
   * Restrict to tasks that were created on the given date. By [default](https://docs.camunda.org/manual/7.21/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd'T'HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.324+0200`.
   * @return createdOn
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public OffsetDateTime getCreatedOn() {
        return createdOn.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CREATED_ON)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getCreatedOn_JsonNullable() {
    return createdOn;
  }
  
  @JsonProperty(JSON_PROPERTY_CREATED_ON)
  public void setCreatedOn_JsonNullable(JsonNullable createdOn) {
    this.createdOn = createdOn;
  }

  public void setCreatedOn(OffsetDateTime createdOn) {
    this.createdOn = JsonNullable.of(createdOn);
  }


  public TaskQueryDto createdOnExpression(String createdOnExpression) {
    this.createdOnExpression = JsonNullable.of(createdOnExpression);
    
    return this;
  }

   /**
   * Restrict to tasks that were created on the date described by the given expression. See the [user guide](https://docs.camunda.org/manual/7.21/user-guide/process-engine/expression-language/#internal-context-functions) for more information on available functions. The expression must evaluate to a `java.util.Date` or `org.joda.time.DateTime` object.
   * @return createdOnExpression
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getCreatedOnExpression() {
        return createdOnExpression.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CREATED_ON_EXPRESSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getCreatedOnExpression_JsonNullable() {
    return createdOnExpression;
  }
  
  @JsonProperty(JSON_PROPERTY_CREATED_ON_EXPRESSION)
  public void setCreatedOnExpression_JsonNullable(JsonNullable createdOnExpression) {
    this.createdOnExpression = createdOnExpression;
  }

  public void setCreatedOnExpression(String createdOnExpression) {
    this.createdOnExpression = JsonNullable.of(createdOnExpression);
  }


  public TaskQueryDto createdAfter(OffsetDateTime createdAfter) {
    this.createdAfter = JsonNullable.of(createdAfter);
    
    return this;
  }

   /**
   * Restrict to tasks that were created after the given date. By [default](https://docs.camunda.org/manual/7.21/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd'T'HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.342+0200`.
   * @return createdAfter
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public OffsetDateTime getCreatedAfter() {
        return createdAfter.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CREATED_AFTER)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getCreatedAfter_JsonNullable() {
    return createdAfter;
  }
  
  @JsonProperty(JSON_PROPERTY_CREATED_AFTER)
  public void setCreatedAfter_JsonNullable(JsonNullable createdAfter) {
    this.createdAfter = createdAfter;
  }

  public void setCreatedAfter(OffsetDateTime createdAfter) {
    this.createdAfter = JsonNullable.of(createdAfter);
  }


  public TaskQueryDto createdAfterExpression(String createdAfterExpression) {
    this.createdAfterExpression = JsonNullable.of(createdAfterExpression);
    
    return this;
  }

   /**
   * Restrict to tasks that were created after the date described by the given expression. See the [user guide](https://docs.camunda.org/manual/7.21/user-guide/process-engine/expression-language/#internal-context-functions) for more information on available functions. The expression must evaluate to a `java.util.Date` or `org.joda.time.DateTime` object.
   * @return createdAfterExpression
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getCreatedAfterExpression() {
        return createdAfterExpression.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CREATED_AFTER_EXPRESSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getCreatedAfterExpression_JsonNullable() {
    return createdAfterExpression;
  }
  
  @JsonProperty(JSON_PROPERTY_CREATED_AFTER_EXPRESSION)
  public void setCreatedAfterExpression_JsonNullable(JsonNullable createdAfterExpression) {
    this.createdAfterExpression = createdAfterExpression;
  }

  public void setCreatedAfterExpression(String createdAfterExpression) {
    this.createdAfterExpression = JsonNullable.of(createdAfterExpression);
  }


  public TaskQueryDto createdBefore(OffsetDateTime createdBefore) {
    this.createdBefore = JsonNullable.of(createdBefore);
    
    return this;
  }

   /**
   * Restrict to tasks that were created before the given date. By [default](https://docs.camunda.org/manual/7.21/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd'T'HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.332+0200`.
   * @return createdBefore
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public OffsetDateTime getCreatedBefore() {
        return createdBefore.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CREATED_BEFORE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getCreatedBefore_JsonNullable() {
    return createdBefore;
  }
  
  @JsonProperty(JSON_PROPERTY_CREATED_BEFORE)
  public void setCreatedBefore_JsonNullable(JsonNullable createdBefore) {
    this.createdBefore = createdBefore;
  }

  public void setCreatedBefore(OffsetDateTime createdBefore) {
    this.createdBefore = JsonNullable.of(createdBefore);
  }


  public TaskQueryDto createdBeforeExpression(String createdBeforeExpression) {
    this.createdBeforeExpression = JsonNullable.of(createdBeforeExpression);
    
    return this;
  }

   /**
   * Restrict to tasks that were created before the date described by the given expression. See the [user guide](https://docs.camunda.org/manual/7.21/user-guide/process-engine/expression-language/#internal-context-functions) for more information on available functions. The expression must evaluate to a `java.util.Date` or `org.joda.time.DateTime` object.
   * @return createdBeforeExpression
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getCreatedBeforeExpression() {
        return createdBeforeExpression.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CREATED_BEFORE_EXPRESSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getCreatedBeforeExpression_JsonNullable() {
    return createdBeforeExpression;
  }
  
  @JsonProperty(JSON_PROPERTY_CREATED_BEFORE_EXPRESSION)
  public void setCreatedBeforeExpression_JsonNullable(JsonNullable createdBeforeExpression) {
    this.createdBeforeExpression = createdBeforeExpression;
  }

  public void setCreatedBeforeExpression(String createdBeforeExpression) {
    this.createdBeforeExpression = JsonNullable.of(createdBeforeExpression);
  }


  public TaskQueryDto updatedAfter(OffsetDateTime updatedAfter) {
    this.updatedAfter = JsonNullable.of(updatedAfter);
    
    return this;
  }

   /**
   * Restrict to tasks that were updated after the given date. Every action that fires  a [task update event](https://docs.camunda.org/manual/7.21/user-guide/process-engine/delegation-code/#task-listener-event-lifecycle) is considered as updating the task. By [default](https://docs.camunda.org/manual/7.21/reference/rest/overview/date-format/), the date must have the format `yyyy-MM-dd'T'HH:mm:ss.SSSZ`, e.g., `2013-01-23T14:42:45.332+0200`.
   * @return updatedAfter
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public OffsetDateTime getUpdatedAfter() {
        return updatedAfter.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_UPDATED_AFTER)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getUpdatedAfter_JsonNullable() {
    return updatedAfter;
  }
  
  @JsonProperty(JSON_PROPERTY_UPDATED_AFTER)
  public void setUpdatedAfter_JsonNullable(JsonNullable updatedAfter) {
    this.updatedAfter = updatedAfter;
  }

  public void setUpdatedAfter(OffsetDateTime updatedAfter) {
    this.updatedAfter = JsonNullable.of(updatedAfter);
  }


  public TaskQueryDto updatedAfterExpression(String updatedAfterExpression) {
    this.updatedAfterExpression = JsonNullable.of(updatedAfterExpression);
    
    return this;
  }

   /**
   * Restrict to tasks that were updated after the date described by the given expression. Every action that fires  a [task update event](https://docs.camunda.org/manual/7.21/user-guide/process-engine/delegation-code/#task-listener-event-lifecycle) is considered as updating the task. See the [user guide](https://docs.camunda.org/manual/7.21/user-guide/process-engine/expression-language/#internal-context-functions) for more information on available functions. The expression must evaluate to a `java.util.Date` or `org.joda.time.DateTime` object.
   * @return updatedAfterExpression
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getUpdatedAfterExpression() {
        return updatedAfterExpression.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_UPDATED_AFTER_EXPRESSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getUpdatedAfterExpression_JsonNullable() {
    return updatedAfterExpression;
  }
  
  @JsonProperty(JSON_PROPERTY_UPDATED_AFTER_EXPRESSION)
  public void setUpdatedAfterExpression_JsonNullable(JsonNullable updatedAfterExpression) {
    this.updatedAfterExpression = updatedAfterExpression;
  }

  public void setUpdatedAfterExpression(String updatedAfterExpression) {
    this.updatedAfterExpression = JsonNullable.of(updatedAfterExpression);
  }


  public TaskQueryDto delegationState(DelegationStateEnum delegationState) {
    this.delegationState = JsonNullable.of(delegationState);
    
    return this;
  }

   /**
   * Restrict to tasks that are in the given delegation state. Valid values are `PENDING` and `RESOLVED`.
   * @return delegationState
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public DelegationStateEnum getDelegationState() {
        return delegationState.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_DELEGATION_STATE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getDelegationState_JsonNullable() {
    return delegationState;
  }
  
  @JsonProperty(JSON_PROPERTY_DELEGATION_STATE)
  public void setDelegationState_JsonNullable(JsonNullable delegationState) {
    this.delegationState = delegationState;
  }

  public void setDelegationState(DelegationStateEnum delegationState) {
    this.delegationState = JsonNullable.of(delegationState);
  }


  public TaskQueryDto candidateGroups(List candidateGroups) {
    this.candidateGroups = JsonNullable.>of(candidateGroups);
    
    return this;
  }

  public TaskQueryDto addCandidateGroupsItem(String candidateGroupsItem) {
    if (this.candidateGroups == null || !this.candidateGroups.isPresent()) {
      this.candidateGroups = JsonNullable.>of(new ArrayList<>());
    }
    try {
      this.candidateGroups.get().add(candidateGroupsItem);
    } catch (java.util.NoSuchElementException e) {
      // this can never happen, as we make sure above that the value is present
    }
    return this;
  }

   /**
   * Restrict to tasks that are offered to any of the given candidate groups. Takes a comma-separated list of group names, so for example `developers,support,sales`.
   * @return candidateGroups
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public List getCandidateGroups() {
        return candidateGroups.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CANDIDATE_GROUPS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable> getCandidateGroups_JsonNullable() {
    return candidateGroups;
  }
  
  @JsonProperty(JSON_PROPERTY_CANDIDATE_GROUPS)
  public void setCandidateGroups_JsonNullable(JsonNullable> candidateGroups) {
    this.candidateGroups = candidateGroups;
  }

  public void setCandidateGroups(List candidateGroups) {
    this.candidateGroups = JsonNullable.>of(candidateGroups);
  }


  public TaskQueryDto candidateGroupsExpression(String candidateGroupsExpression) {
    this.candidateGroupsExpression = JsonNullable.of(candidateGroupsExpression);
    
    return this;
  }

   /**
   * Restrict to tasks that are offered to any of the candidate groups described by the given expression. See the [user guide](https://docs.camunda.org/manual/7.21/user-guide/process-engine/expression-language/#internal-context-functions) for more information on available functions. The expression must evaluate to `java.util.List` of Strings.
   * @return candidateGroupsExpression
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getCandidateGroupsExpression() {
        return candidateGroupsExpression.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CANDIDATE_GROUPS_EXPRESSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getCandidateGroupsExpression_JsonNullable() {
    return candidateGroupsExpression;
  }
  
  @JsonProperty(JSON_PROPERTY_CANDIDATE_GROUPS_EXPRESSION)
  public void setCandidateGroupsExpression_JsonNullable(JsonNullable candidateGroupsExpression) {
    this.candidateGroupsExpression = candidateGroupsExpression;
  }

  public void setCandidateGroupsExpression(String candidateGroupsExpression) {
    this.candidateGroupsExpression = JsonNullable.of(candidateGroupsExpression);
  }


  public TaskQueryDto withCandidateGroups(Boolean withCandidateGroups) {
    this.withCandidateGroups = JsonNullable.of(withCandidateGroups);
    
    return this;
  }

   /**
   * Only include tasks which have a candidate group. Value may only be `true`, as `false` is the default behavior.
   * @return withCandidateGroups
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public Boolean getWithCandidateGroups() {
        return withCandidateGroups.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_WITH_CANDIDATE_GROUPS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getWithCandidateGroups_JsonNullable() {
    return withCandidateGroups;
  }
  
  @JsonProperty(JSON_PROPERTY_WITH_CANDIDATE_GROUPS)
  public void setWithCandidateGroups_JsonNullable(JsonNullable withCandidateGroups) {
    this.withCandidateGroups = withCandidateGroups;
  }

  public void setWithCandidateGroups(Boolean withCandidateGroups) {
    this.withCandidateGroups = JsonNullable.of(withCandidateGroups);
  }


  public TaskQueryDto withoutCandidateGroups(Boolean withoutCandidateGroups) {
    this.withoutCandidateGroups = JsonNullable.of(withoutCandidateGroups);
    
    return this;
  }

   /**
   * Only include tasks which have no candidate group. Value may only be `true`, as `false` is the default behavior.
   * @return withoutCandidateGroups
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public Boolean getWithoutCandidateGroups() {
        return withoutCandidateGroups.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_WITHOUT_CANDIDATE_GROUPS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getWithoutCandidateGroups_JsonNullable() {
    return withoutCandidateGroups;
  }
  
  @JsonProperty(JSON_PROPERTY_WITHOUT_CANDIDATE_GROUPS)
  public void setWithoutCandidateGroups_JsonNullable(JsonNullable withoutCandidateGroups) {
    this.withoutCandidateGroups = withoutCandidateGroups;
  }

  public void setWithoutCandidateGroups(Boolean withoutCandidateGroups) {
    this.withoutCandidateGroups = JsonNullable.of(withoutCandidateGroups);
  }


  public TaskQueryDto withCandidateUsers(Boolean withCandidateUsers) {
    this.withCandidateUsers = JsonNullable.of(withCandidateUsers);
    
    return this;
  }

   /**
   * Only include tasks which have a candidate user. Value may only be `true`, as `false` is the default behavior.
   * @return withCandidateUsers
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public Boolean getWithCandidateUsers() {
        return withCandidateUsers.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_WITH_CANDIDATE_USERS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getWithCandidateUsers_JsonNullable() {
    return withCandidateUsers;
  }
  
  @JsonProperty(JSON_PROPERTY_WITH_CANDIDATE_USERS)
  public void setWithCandidateUsers_JsonNullable(JsonNullable withCandidateUsers) {
    this.withCandidateUsers = withCandidateUsers;
  }

  public void setWithCandidateUsers(Boolean withCandidateUsers) {
    this.withCandidateUsers = JsonNullable.of(withCandidateUsers);
  }


  public TaskQueryDto withoutCandidateUsers(Boolean withoutCandidateUsers) {
    this.withoutCandidateUsers = JsonNullable.of(withoutCandidateUsers);
    
    return this;
  }

   /**
   * Only include tasks which have no candidate users. Value may only be `true`, as `false` is the default behavior.
   * @return withoutCandidateUsers
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public Boolean getWithoutCandidateUsers() {
        return withoutCandidateUsers.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_WITHOUT_CANDIDATE_USERS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getWithoutCandidateUsers_JsonNullable() {
    return withoutCandidateUsers;
  }
  
  @JsonProperty(JSON_PROPERTY_WITHOUT_CANDIDATE_USERS)
  public void setWithoutCandidateUsers_JsonNullable(JsonNullable withoutCandidateUsers) {
    this.withoutCandidateUsers = withoutCandidateUsers;
  }

  public void setWithoutCandidateUsers(Boolean withoutCandidateUsers) {
    this.withoutCandidateUsers = JsonNullable.of(withoutCandidateUsers);
  }


  public TaskQueryDto active(Boolean active) {
    this.active = JsonNullable.of(active);
    
    return this;
  }

   /**
   * Only include active tasks. Value may only be `true`, as `false` is the default behavior.
   * @return active
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public Boolean getActive() {
        return active.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_ACTIVE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getActive_JsonNullable() {
    return active;
  }
  
  @JsonProperty(JSON_PROPERTY_ACTIVE)
  public void setActive_JsonNullable(JsonNullable active) {
    this.active = active;
  }

  public void setActive(Boolean active) {
    this.active = JsonNullable.of(active);
  }


  public TaskQueryDto suspended(Boolean suspended) {
    this.suspended = JsonNullable.of(suspended);
    
    return this;
  }

   /**
   * Only include suspended tasks. Value may only be `true`, as `false` is the default behavior.
   * @return suspended
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public Boolean getSuspended() {
        return suspended.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_SUSPENDED)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getSuspended_JsonNullable() {
    return suspended;
  }
  
  @JsonProperty(JSON_PROPERTY_SUSPENDED)
  public void setSuspended_JsonNullable(JsonNullable suspended) {
    this.suspended = suspended;
  }

  public void setSuspended(Boolean suspended) {
    this.suspended = JsonNullable.of(suspended);
  }


  public TaskQueryDto taskVariables(List taskVariables) {
    this.taskVariables = JsonNullable.>of(taskVariables);
    
    return this;
  }

  public TaskQueryDto addTaskVariablesItem(VariableQueryParameterDto taskVariablesItem) {
    if (this.taskVariables == null || !this.taskVariables.isPresent()) {
      this.taskVariables = JsonNullable.>of(new ArrayList<>());
    }
    try {
      this.taskVariables.get().add(taskVariablesItem);
    } catch (java.util.NoSuchElementException e) {
      // this can never happen, as we make sure above that the value is present
    }
    return this;
  }

   /**
   * A JSON array to only include tasks that have variables with certain values. The array consists of JSON objects with three properties `name`, `operator` and `value`. `name` is the variable name, `operator` is the comparison operator to be used and `value` the variable value. `value` may be of type `String`, `Number` or `Boolean`.  Valid `operator` values are: `eq` - equal to; `neq` - not equal to; `gt` - greater than; `gteq` - greater than or equal to; `lt` - lower than; `lteq` - lower than or equal to; `like`. `key` and `value` may not contain underscore or comma characters.
   * @return taskVariables
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public List getTaskVariables() {
        return taskVariables.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_TASK_VARIABLES)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable> getTaskVariables_JsonNullable() {
    return taskVariables;
  }
  
  @JsonProperty(JSON_PROPERTY_TASK_VARIABLES)
  public void setTaskVariables_JsonNullable(JsonNullable> taskVariables) {
    this.taskVariables = taskVariables;
  }

  public void setTaskVariables(List taskVariables) {
    this.taskVariables = JsonNullable.>of(taskVariables);
  }


  public TaskQueryDto processVariables(List processVariables) {
    this.processVariables = JsonNullable.>of(processVariables);
    
    return this;
  }

  public TaskQueryDto addProcessVariablesItem(VariableQueryParameterDto processVariablesItem) {
    if (this.processVariables == null || !this.processVariables.isPresent()) {
      this.processVariables = JsonNullable.>of(new ArrayList<>());
    }
    try {
      this.processVariables.get().add(processVariablesItem);
    } catch (java.util.NoSuchElementException e) {
      // this can never happen, as we make sure above that the value is present
    }
    return this;
  }

   /**
   * A JSON array to only include tasks that belong to a process instance with variables with certain values. The array consists of JSON objects with three properties `name`, `operator` and `value`. `name` is the variable name, `operator` is the comparison operator to be used and `value` the variable value. `value` may be of type `String`, `Number` or `Boolean`.  Valid `operator` values are: `eq` - equal to; `neq` - not equal to; `gt` - greater than; `gteq` - greater than or equal to; `lt` - lower than; `lteq` - lower than or equal to; `like`; `notLike`. `key` and `value` may not contain underscore or comma characters.
   * @return processVariables
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public List getProcessVariables() {
        return processVariables.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_PROCESS_VARIABLES)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable> getProcessVariables_JsonNullable() {
    return processVariables;
  }
  
  @JsonProperty(JSON_PROPERTY_PROCESS_VARIABLES)
  public void setProcessVariables_JsonNullable(JsonNullable> processVariables) {
    this.processVariables = processVariables;
  }

  public void setProcessVariables(List processVariables) {
    this.processVariables = JsonNullable.>of(processVariables);
  }


  public TaskQueryDto caseInstanceVariables(List caseInstanceVariables) {
    this.caseInstanceVariables = JsonNullable.>of(caseInstanceVariables);
    
    return this;
  }

  public TaskQueryDto addCaseInstanceVariablesItem(VariableQueryParameterDto caseInstanceVariablesItem) {
    if (this.caseInstanceVariables == null || !this.caseInstanceVariables.isPresent()) {
      this.caseInstanceVariables = JsonNullable.>of(new ArrayList<>());
    }
    try {
      this.caseInstanceVariables.get().add(caseInstanceVariablesItem);
    } catch (java.util.NoSuchElementException e) {
      // this can never happen, as we make sure above that the value is present
    }
    return this;
  }

   /**
   * A JSON array to only include tasks that belong to a case instance with variables with certain values. The array consists of JSON objects with three properties `name`, `operator` and `value`. `name` is the variable name, `operator` is the comparison operator to be used and `value` the variable value. `value` may be of type `String`, `Number` or `Boolean`.  Valid `operator` values are: `eq` - equal to; `neq` - not equal to; `gt` - greater than; `gteq` - greater than or equal to; `lt` - lower than; `lteq` - lower than or equal to; `like`. `key` and `value` may not contain underscore or comma characters.
   * @return caseInstanceVariables
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public List getCaseInstanceVariables() {
        return caseInstanceVariables.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_CASE_INSTANCE_VARIABLES)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable> getCaseInstanceVariables_JsonNullable() {
    return caseInstanceVariables;
  }
  
  @JsonProperty(JSON_PROPERTY_CASE_INSTANCE_VARIABLES)
  public void setCaseInstanceVariables_JsonNullable(JsonNullable> caseInstanceVariables) {
    this.caseInstanceVariables = caseInstanceVariables;
  }

  public void setCaseInstanceVariables(List caseInstanceVariables) {
    this.caseInstanceVariables = JsonNullable.>of(caseInstanceVariables);
  }


  public TaskQueryDto variableNamesIgnoreCase(Boolean variableNamesIgnoreCase) {
    this.variableNamesIgnoreCase = JsonNullable.of(variableNamesIgnoreCase);
    
    return this;
  }

   /**
   * Match all variable names in this query case-insensitively. If set `variableName` and `variablename` are treated as equal.
   * @return variableNamesIgnoreCase
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public Boolean getVariableNamesIgnoreCase() {
        return variableNamesIgnoreCase.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_VARIABLE_NAMES_IGNORE_CASE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getVariableNamesIgnoreCase_JsonNullable() {
    return variableNamesIgnoreCase;
  }
  
  @JsonProperty(JSON_PROPERTY_VARIABLE_NAMES_IGNORE_CASE)
  public void setVariableNamesIgnoreCase_JsonNullable(JsonNullable variableNamesIgnoreCase) {
    this.variableNamesIgnoreCase = variableNamesIgnoreCase;
  }

  public void setVariableNamesIgnoreCase(Boolean variableNamesIgnoreCase) {
    this.variableNamesIgnoreCase = JsonNullable.of(variableNamesIgnoreCase);
  }


  public TaskQueryDto variableValuesIgnoreCase(Boolean variableValuesIgnoreCase) {
    this.variableValuesIgnoreCase = JsonNullable.of(variableValuesIgnoreCase);
    
    return this;
  }

   /**
   * Match all variable values in this query case-insensitively. If set `variableValue` and `variablevalue` are treated as equal.
   * @return variableValuesIgnoreCase
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public Boolean getVariableValuesIgnoreCase() {
        return variableValuesIgnoreCase.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_VARIABLE_VALUES_IGNORE_CASE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getVariableValuesIgnoreCase_JsonNullable() {
    return variableValuesIgnoreCase;
  }
  
  @JsonProperty(JSON_PROPERTY_VARIABLE_VALUES_IGNORE_CASE)
  public void setVariableValuesIgnoreCase_JsonNullable(JsonNullable variableValuesIgnoreCase) {
    this.variableValuesIgnoreCase = variableValuesIgnoreCase;
  }

  public void setVariableValuesIgnoreCase(Boolean variableValuesIgnoreCase) {
    this.variableValuesIgnoreCase = JsonNullable.of(variableValuesIgnoreCase);
  }


  public TaskQueryDto parentTaskId(String parentTaskId) {
    this.parentTaskId = JsonNullable.of(parentTaskId);
    
    return this;
  }

   /**
   * Restrict query to all tasks that are sub tasks of the given task. Takes a task id.
   * @return parentTaskId
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public String getParentTaskId() {
        return parentTaskId.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_PARENT_TASK_ID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable getParentTaskId_JsonNullable() {
    return parentTaskId;
  }
  
  @JsonProperty(JSON_PROPERTY_PARENT_TASK_ID)
  public void setParentTaskId_JsonNullable(JsonNullable parentTaskId) {
    this.parentTaskId = parentTaskId;
  }

  public void setParentTaskId(String parentTaskId) {
    this.parentTaskId = JsonNullable.of(parentTaskId);
  }


  public TaskQueryDto orQueries(List orQueries) {
    this.orQueries = JsonNullable.>of(orQueries);
    
    return this;
  }

  public TaskQueryDto addOrQueriesItem(TaskQueryDto orQueriesItem) {
    if (this.orQueries == null || !this.orQueries.isPresent()) {
      this.orQueries = JsonNullable.>of(new ArrayList<>());
    }
    try {
      this.orQueries.get().add(orQueriesItem);
    } catch (java.util.NoSuchElementException e) {
      // this can never happen, as we make sure above that the value is present
    }
    return this;
  }

   /**
   * A JSON array of nested task queries with OR semantics. A task matches a nested query if it fulfills *at least one* of the query's predicates. With multiple nested queries, a task must fulfill at least one predicate of *each* query ([Conjunctive Normal Form](https://en.wikipedia.org/wiki/Conjunctive_normal_form)).  All task query properties can be used except for: `sorting`, `withCandidateGroups`, `withoutCandidateGroups`, `withCandidateUsers`, `withoutCandidateUsers`  See the [User guide](https://docs.camunda.org/manual/7.21/user-guide/process-engine/process-engine-api/#or-queries) for more information about OR queries.
   * @return orQueries
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public List getOrQueries() {
        return orQueries.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_OR_QUERIES)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable> getOrQueries_JsonNullable() {
    return orQueries;
  }
  
  @JsonProperty(JSON_PROPERTY_OR_QUERIES)
  public void setOrQueries_JsonNullable(JsonNullable> orQueries) {
    this.orQueries = orQueries;
  }

  public void setOrQueries(List orQueries) {
    this.orQueries = JsonNullable.>of(orQueries);
  }


  public TaskQueryDto sorting(List sorting) {
    this.sorting = JsonNullable.>of(sorting);
    
    return this;
  }

  public TaskQueryDto addSortingItem(TaskQueryDtoSortingInner sortingItem) {
    if (this.sorting == null || !this.sorting.isPresent()) {
      this.sorting = JsonNullable.>of(new ArrayList<>());
    }
    try {
      this.sorting.get().add(sortingItem);
    } catch (java.util.NoSuchElementException e) {
      // this can never happen, as we make sure above that the value is present
    }
    return this;
  }

   /**
   * Apply sorting of the result
   * @return sorting
  **/
  @javax.annotation.Nullable
  @JsonIgnore

  public List getSorting() {
        return sorting.orElse(null);
  }

  @JsonProperty(JSON_PROPERTY_SORTING)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public JsonNullable> getSorting_JsonNullable() {
    return sorting;
  }
  
  @JsonProperty(JSON_PROPERTY_SORTING)
  public void setSorting_JsonNullable(JsonNullable> sorting) {
    this.sorting = sorting;
  }

  public void setSorting(List sorting) {
    this.sorting = JsonNullable.>of(sorting);
  }

  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    TaskQueryDto taskQueryDto = (TaskQueryDto) o;
    return equalsNullable(this.taskId, taskQueryDto.taskId) &&
        equalsNullable(this.taskIdIn, taskQueryDto.taskIdIn) &&
        equalsNullable(this.processInstanceId, taskQueryDto.processInstanceId) &&
        equalsNullable(this.processInstanceIdIn, taskQueryDto.processInstanceIdIn) &&
        equalsNullable(this.processInstanceBusinessKey, taskQueryDto.processInstanceBusinessKey) &&
        equalsNullable(this.processInstanceBusinessKeyExpression, taskQueryDto.processInstanceBusinessKeyExpression) &&
        equalsNullable(this.processInstanceBusinessKeyIn, taskQueryDto.processInstanceBusinessKeyIn) &&
        equalsNullable(this.processInstanceBusinessKeyLike, taskQueryDto.processInstanceBusinessKeyLike) &&
        equalsNullable(this.processInstanceBusinessKeyLikeExpression, taskQueryDto.processInstanceBusinessKeyLikeExpression) &&
        equalsNullable(this.processDefinitionId, taskQueryDto.processDefinitionId) &&
        equalsNullable(this.processDefinitionKey, taskQueryDto.processDefinitionKey) &&
        equalsNullable(this.processDefinitionKeyIn, taskQueryDto.processDefinitionKeyIn) &&
        equalsNullable(this.processDefinitionName, taskQueryDto.processDefinitionName) &&
        equalsNullable(this.processDefinitionNameLike, taskQueryDto.processDefinitionNameLike) &&
        equalsNullable(this.executionId, taskQueryDto.executionId) &&
        equalsNullable(this.caseInstanceId, taskQueryDto.caseInstanceId) &&
        equalsNullable(this.caseInstanceBusinessKey, taskQueryDto.caseInstanceBusinessKey) &&
        equalsNullable(this.caseInstanceBusinessKeyLike, taskQueryDto.caseInstanceBusinessKeyLike) &&
        equalsNullable(this.caseDefinitionId, taskQueryDto.caseDefinitionId) &&
        equalsNullable(this.caseDefinitionKey, taskQueryDto.caseDefinitionKey) &&
        equalsNullable(this.caseDefinitionName, taskQueryDto.caseDefinitionName) &&
        equalsNullable(this.caseDefinitionNameLike, taskQueryDto.caseDefinitionNameLike) &&
        equalsNullable(this.caseExecutionId, taskQueryDto.caseExecutionId) &&
        equalsNullable(this.activityInstanceIdIn, taskQueryDto.activityInstanceIdIn) &&
        equalsNullable(this.tenantIdIn, taskQueryDto.tenantIdIn) &&
        equalsNullable(this.withoutTenantId, taskQueryDto.withoutTenantId) &&
        equalsNullable(this.assignee, taskQueryDto.assignee) &&
        equalsNullable(this.assigneeExpression, taskQueryDto.assigneeExpression) &&
        equalsNullable(this.assigneeLike, taskQueryDto.assigneeLike) &&
        equalsNullable(this.assigneeLikeExpression, taskQueryDto.assigneeLikeExpression) &&
        equalsNullable(this.assigneeIn, taskQueryDto.assigneeIn) &&
        equalsNullable(this.assigneeNotIn, taskQueryDto.assigneeNotIn) &&
        equalsNullable(this.owner, taskQueryDto.owner) &&
        equalsNullable(this.ownerExpression, taskQueryDto.ownerExpression) &&
        equalsNullable(this.candidateGroup, taskQueryDto.candidateGroup) &&
        equalsNullable(this.candidateGroupExpression, taskQueryDto.candidateGroupExpression) &&
        equalsNullable(this.candidateUser, taskQueryDto.candidateUser) &&
        equalsNullable(this.candidateUserExpression, taskQueryDto.candidateUserExpression) &&
        equalsNullable(this.includeAssignedTasks, taskQueryDto.includeAssignedTasks) &&
        equalsNullable(this.involvedUser, taskQueryDto.involvedUser) &&
        equalsNullable(this.involvedUserExpression, taskQueryDto.involvedUserExpression) &&
        equalsNullable(this.assigned, taskQueryDto.assigned) &&
        equalsNullable(this.unassigned, taskQueryDto.unassigned) &&
        equalsNullable(this.taskDefinitionKey, taskQueryDto.taskDefinitionKey) &&
        equalsNullable(this.taskDefinitionKeyIn, taskQueryDto.taskDefinitionKeyIn) &&
        equalsNullable(this.taskDefinitionKeyLike, taskQueryDto.taskDefinitionKeyLike) &&
        equalsNullable(this.name, taskQueryDto.name) &&
        equalsNullable(this.nameNotEqual, taskQueryDto.nameNotEqual) &&
        equalsNullable(this.nameLike, taskQueryDto.nameLike) &&
        equalsNullable(this.nameNotLike, taskQueryDto.nameNotLike) &&
        equalsNullable(this.description, taskQueryDto.description) &&
        equalsNullable(this.descriptionLike, taskQueryDto.descriptionLike) &&
        equalsNullable(this.priority, taskQueryDto.priority) &&
        equalsNullable(this.maxPriority, taskQueryDto.maxPriority) &&
        equalsNullable(this.minPriority, taskQueryDto.minPriority) &&
        equalsNullable(this.dueDate, taskQueryDto.dueDate) &&
        equalsNullable(this.dueDateExpression, taskQueryDto.dueDateExpression) &&
        equalsNullable(this.dueAfter, taskQueryDto.dueAfter) &&
        equalsNullable(this.dueAfterExpression, taskQueryDto.dueAfterExpression) &&
        equalsNullable(this.dueBefore, taskQueryDto.dueBefore) &&
        equalsNullable(this.dueBeforeExpression, taskQueryDto.dueBeforeExpression) &&
        equalsNullable(this.withoutDueDate, taskQueryDto.withoutDueDate) &&
        equalsNullable(this.followUpDate, taskQueryDto.followUpDate) &&
        equalsNullable(this.followUpDateExpression, taskQueryDto.followUpDateExpression) &&
        equalsNullable(this.followUpAfter, taskQueryDto.followUpAfter) &&
        equalsNullable(this.followUpAfterExpression, taskQueryDto.followUpAfterExpression) &&
        equalsNullable(this.followUpBefore, taskQueryDto.followUpBefore) &&
        equalsNullable(this.followUpBeforeExpression, taskQueryDto.followUpBeforeExpression) &&
        equalsNullable(this.followUpBeforeOrNotExistent, taskQueryDto.followUpBeforeOrNotExistent) &&
        equalsNullable(this.followUpBeforeOrNotExistentExpression, taskQueryDto.followUpBeforeOrNotExistentExpression) &&
        equalsNullable(this.createdOn, taskQueryDto.createdOn) &&
        equalsNullable(this.createdOnExpression, taskQueryDto.createdOnExpression) &&
        equalsNullable(this.createdAfter, taskQueryDto.createdAfter) &&
        equalsNullable(this.createdAfterExpression, taskQueryDto.createdAfterExpression) &&
        equalsNullable(this.createdBefore, taskQueryDto.createdBefore) &&
        equalsNullable(this.createdBeforeExpression, taskQueryDto.createdBeforeExpression) &&
        equalsNullable(this.updatedAfter, taskQueryDto.updatedAfter) &&
        equalsNullable(this.updatedAfterExpression, taskQueryDto.updatedAfterExpression) &&
        equalsNullable(this.delegationState, taskQueryDto.delegationState) &&
        equalsNullable(this.candidateGroups, taskQueryDto.candidateGroups) &&
        equalsNullable(this.candidateGroupsExpression, taskQueryDto.candidateGroupsExpression) &&
        equalsNullable(this.withCandidateGroups, taskQueryDto.withCandidateGroups) &&
        equalsNullable(this.withoutCandidateGroups, taskQueryDto.withoutCandidateGroups) &&
        equalsNullable(this.withCandidateUsers, taskQueryDto.withCandidateUsers) &&
        equalsNullable(this.withoutCandidateUsers, taskQueryDto.withoutCandidateUsers) &&
        equalsNullable(this.active, taskQueryDto.active) &&
        equalsNullable(this.suspended, taskQueryDto.suspended) &&
        equalsNullable(this.taskVariables, taskQueryDto.taskVariables) &&
        equalsNullable(this.processVariables, taskQueryDto.processVariables) &&
        equalsNullable(this.caseInstanceVariables, taskQueryDto.caseInstanceVariables) &&
        equalsNullable(this.variableNamesIgnoreCase, taskQueryDto.variableNamesIgnoreCase) &&
        equalsNullable(this.variableValuesIgnoreCase, taskQueryDto.variableValuesIgnoreCase) &&
        equalsNullable(this.parentTaskId, taskQueryDto.parentTaskId) &&
        equalsNullable(this.orQueries, taskQueryDto.orQueries) &&
        equalsNullable(this.sorting, taskQueryDto.sorting);
  }

  private static  boolean equalsNullable(JsonNullable a, JsonNullable b) {
    return a == b || (a != null && b != null && a.isPresent() && b.isPresent() && Objects.deepEquals(a.get(), b.get()));
  }

  @Override
  public int hashCode() {
    return Objects.hash(hashCodeNullable(taskId), hashCodeNullable(taskIdIn), hashCodeNullable(processInstanceId), hashCodeNullable(processInstanceIdIn), hashCodeNullable(processInstanceBusinessKey), hashCodeNullable(processInstanceBusinessKeyExpression), hashCodeNullable(processInstanceBusinessKeyIn), hashCodeNullable(processInstanceBusinessKeyLike), hashCodeNullable(processInstanceBusinessKeyLikeExpression), hashCodeNullable(processDefinitionId), hashCodeNullable(processDefinitionKey), hashCodeNullable(processDefinitionKeyIn), hashCodeNullable(processDefinitionName), hashCodeNullable(processDefinitionNameLike), hashCodeNullable(executionId), hashCodeNullable(caseInstanceId), hashCodeNullable(caseInstanceBusinessKey), hashCodeNullable(caseInstanceBusinessKeyLike), hashCodeNullable(caseDefinitionId), hashCodeNullable(caseDefinitionKey), hashCodeNullable(caseDefinitionName), hashCodeNullable(caseDefinitionNameLike), hashCodeNullable(caseExecutionId), hashCodeNullable(activityInstanceIdIn), hashCodeNullable(tenantIdIn), hashCodeNullable(withoutTenantId), hashCodeNullable(assignee), hashCodeNullable(assigneeExpression), hashCodeNullable(assigneeLike), hashCodeNullable(assigneeLikeExpression), hashCodeNullable(assigneeIn), hashCodeNullable(assigneeNotIn), hashCodeNullable(owner), hashCodeNullable(ownerExpression), hashCodeNullable(candidateGroup), hashCodeNullable(candidateGroupExpression), hashCodeNullable(candidateUser), hashCodeNullable(candidateUserExpression), hashCodeNullable(includeAssignedTasks), hashCodeNullable(involvedUser), hashCodeNullable(involvedUserExpression), hashCodeNullable(assigned), hashCodeNullable(unassigned), hashCodeNullable(taskDefinitionKey), hashCodeNullable(taskDefinitionKeyIn), hashCodeNullable(taskDefinitionKeyLike), hashCodeNullable(name), hashCodeNullable(nameNotEqual), hashCodeNullable(nameLike), hashCodeNullable(nameNotLike), hashCodeNullable(description), hashCodeNullable(descriptionLike), hashCodeNullable(priority), hashCodeNullable(maxPriority), hashCodeNullable(minPriority), hashCodeNullable(dueDate), hashCodeNullable(dueDateExpression), hashCodeNullable(dueAfter), hashCodeNullable(dueAfterExpression), hashCodeNullable(dueBefore), hashCodeNullable(dueBeforeExpression), hashCodeNullable(withoutDueDate), hashCodeNullable(followUpDate), hashCodeNullable(followUpDateExpression), hashCodeNullable(followUpAfter), hashCodeNullable(followUpAfterExpression), hashCodeNullable(followUpBefore), hashCodeNullable(followUpBeforeExpression), hashCodeNullable(followUpBeforeOrNotExistent), hashCodeNullable(followUpBeforeOrNotExistentExpression), hashCodeNullable(createdOn), hashCodeNullable(createdOnExpression), hashCodeNullable(createdAfter), hashCodeNullable(createdAfterExpression), hashCodeNullable(createdBefore), hashCodeNullable(createdBeforeExpression), hashCodeNullable(updatedAfter), hashCodeNullable(updatedAfterExpression), hashCodeNullable(delegationState), hashCodeNullable(candidateGroups), hashCodeNullable(candidateGroupsExpression), hashCodeNullable(withCandidateGroups), hashCodeNullable(withoutCandidateGroups), hashCodeNullable(withCandidateUsers), hashCodeNullable(withoutCandidateUsers), hashCodeNullable(active), hashCodeNullable(suspended), hashCodeNullable(taskVariables), hashCodeNullable(processVariables), hashCodeNullable(caseInstanceVariables), hashCodeNullable(variableNamesIgnoreCase), hashCodeNullable(variableValuesIgnoreCase), hashCodeNullable(parentTaskId), hashCodeNullable(orQueries), hashCodeNullable(sorting));
  }

  private static  int hashCodeNullable(JsonNullable a) {
    if (a == null) {
      return 1;
    }
    return a.isPresent() ? Arrays.deepHashCode(new Object[]{a.get()}) : 31;
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class TaskQueryDto {\n");
    sb.append("    taskId: ").append(toIndentedString(taskId)).append("\n");
    sb.append("    taskIdIn: ").append(toIndentedString(taskIdIn)).append("\n");
    sb.append("    processInstanceId: ").append(toIndentedString(processInstanceId)).append("\n");
    sb.append("    processInstanceIdIn: ").append(toIndentedString(processInstanceIdIn)).append("\n");
    sb.append("    processInstanceBusinessKey: ").append(toIndentedString(processInstanceBusinessKey)).append("\n");
    sb.append("    processInstanceBusinessKeyExpression: ").append(toIndentedString(processInstanceBusinessKeyExpression)).append("\n");
    sb.append("    processInstanceBusinessKeyIn: ").append(toIndentedString(processInstanceBusinessKeyIn)).append("\n");
    sb.append("    processInstanceBusinessKeyLike: ").append(toIndentedString(processInstanceBusinessKeyLike)).append("\n");
    sb.append("    processInstanceBusinessKeyLikeExpression: ").append(toIndentedString(processInstanceBusinessKeyLikeExpression)).append("\n");
    sb.append("    processDefinitionId: ").append(toIndentedString(processDefinitionId)).append("\n");
    sb.append("    processDefinitionKey: ").append(toIndentedString(processDefinitionKey)).append("\n");
    sb.append("    processDefinitionKeyIn: ").append(toIndentedString(processDefinitionKeyIn)).append("\n");
    sb.append("    processDefinitionName: ").append(toIndentedString(processDefinitionName)).append("\n");
    sb.append("    processDefinitionNameLike: ").append(toIndentedString(processDefinitionNameLike)).append("\n");
    sb.append("    executionId: ").append(toIndentedString(executionId)).append("\n");
    sb.append("    caseInstanceId: ").append(toIndentedString(caseInstanceId)).append("\n");
    sb.append("    caseInstanceBusinessKey: ").append(toIndentedString(caseInstanceBusinessKey)).append("\n");
    sb.append("    caseInstanceBusinessKeyLike: ").append(toIndentedString(caseInstanceBusinessKeyLike)).append("\n");
    sb.append("    caseDefinitionId: ").append(toIndentedString(caseDefinitionId)).append("\n");
    sb.append("    caseDefinitionKey: ").append(toIndentedString(caseDefinitionKey)).append("\n");
    sb.append("    caseDefinitionName: ").append(toIndentedString(caseDefinitionName)).append("\n");
    sb.append("    caseDefinitionNameLike: ").append(toIndentedString(caseDefinitionNameLike)).append("\n");
    sb.append("    caseExecutionId: ").append(toIndentedString(caseExecutionId)).append("\n");
    sb.append("    activityInstanceIdIn: ").append(toIndentedString(activityInstanceIdIn)).append("\n");
    sb.append("    tenantIdIn: ").append(toIndentedString(tenantIdIn)).append("\n");
    sb.append("    withoutTenantId: ").append(toIndentedString(withoutTenantId)).append("\n");
    sb.append("    assignee: ").append(toIndentedString(assignee)).append("\n");
    sb.append("    assigneeExpression: ").append(toIndentedString(assigneeExpression)).append("\n");
    sb.append("    assigneeLike: ").append(toIndentedString(assigneeLike)).append("\n");
    sb.append("    assigneeLikeExpression: ").append(toIndentedString(assigneeLikeExpression)).append("\n");
    sb.append("    assigneeIn: ").append(toIndentedString(assigneeIn)).append("\n");
    sb.append("    assigneeNotIn: ").append(toIndentedString(assigneeNotIn)).append("\n");
    sb.append("    owner: ").append(toIndentedString(owner)).append("\n");
    sb.append("    ownerExpression: ").append(toIndentedString(ownerExpression)).append("\n");
    sb.append("    candidateGroup: ").append(toIndentedString(candidateGroup)).append("\n");
    sb.append("    candidateGroupExpression: ").append(toIndentedString(candidateGroupExpression)).append("\n");
    sb.append("    candidateUser: ").append(toIndentedString(candidateUser)).append("\n");
    sb.append("    candidateUserExpression: ").append(toIndentedString(candidateUserExpression)).append("\n");
    sb.append("    includeAssignedTasks: ").append(toIndentedString(includeAssignedTasks)).append("\n");
    sb.append("    involvedUser: ").append(toIndentedString(involvedUser)).append("\n");
    sb.append("    involvedUserExpression: ").append(toIndentedString(involvedUserExpression)).append("\n");
    sb.append("    assigned: ").append(toIndentedString(assigned)).append("\n");
    sb.append("    unassigned: ").append(toIndentedString(unassigned)).append("\n");
    sb.append("    taskDefinitionKey: ").append(toIndentedString(taskDefinitionKey)).append("\n");
    sb.append("    taskDefinitionKeyIn: ").append(toIndentedString(taskDefinitionKeyIn)).append("\n");
    sb.append("    taskDefinitionKeyLike: ").append(toIndentedString(taskDefinitionKeyLike)).append("\n");
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    nameNotEqual: ").append(toIndentedString(nameNotEqual)).append("\n");
    sb.append("    nameLike: ").append(toIndentedString(nameLike)).append("\n");
    sb.append("    nameNotLike: ").append(toIndentedString(nameNotLike)).append("\n");
    sb.append("    description: ").append(toIndentedString(description)).append("\n");
    sb.append("    descriptionLike: ").append(toIndentedString(descriptionLike)).append("\n");
    sb.append("    priority: ").append(toIndentedString(priority)).append("\n");
    sb.append("    maxPriority: ").append(toIndentedString(maxPriority)).append("\n");
    sb.append("    minPriority: ").append(toIndentedString(minPriority)).append("\n");
    sb.append("    dueDate: ").append(toIndentedString(dueDate)).append("\n");
    sb.append("    dueDateExpression: ").append(toIndentedString(dueDateExpression)).append("\n");
    sb.append("    dueAfter: ").append(toIndentedString(dueAfter)).append("\n");
    sb.append("    dueAfterExpression: ").append(toIndentedString(dueAfterExpression)).append("\n");
    sb.append("    dueBefore: ").append(toIndentedString(dueBefore)).append("\n");
    sb.append("    dueBeforeExpression: ").append(toIndentedString(dueBeforeExpression)).append("\n");
    sb.append("    withoutDueDate: ").append(toIndentedString(withoutDueDate)).append("\n");
    sb.append("    followUpDate: ").append(toIndentedString(followUpDate)).append("\n");
    sb.append("    followUpDateExpression: ").append(toIndentedString(followUpDateExpression)).append("\n");
    sb.append("    followUpAfter: ").append(toIndentedString(followUpAfter)).append("\n");
    sb.append("    followUpAfterExpression: ").append(toIndentedString(followUpAfterExpression)).append("\n");
    sb.append("    followUpBefore: ").append(toIndentedString(followUpBefore)).append("\n");
    sb.append("    followUpBeforeExpression: ").append(toIndentedString(followUpBeforeExpression)).append("\n");
    sb.append("    followUpBeforeOrNotExistent: ").append(toIndentedString(followUpBeforeOrNotExistent)).append("\n");
    sb.append("    followUpBeforeOrNotExistentExpression: ").append(toIndentedString(followUpBeforeOrNotExistentExpression)).append("\n");
    sb.append("    createdOn: ").append(toIndentedString(createdOn)).append("\n");
    sb.append("    createdOnExpression: ").append(toIndentedString(createdOnExpression)).append("\n");
    sb.append("    createdAfter: ").append(toIndentedString(createdAfter)).append("\n");
    sb.append("    createdAfterExpression: ").append(toIndentedString(createdAfterExpression)).append("\n");
    sb.append("    createdBefore: ").append(toIndentedString(createdBefore)).append("\n");
    sb.append("    createdBeforeExpression: ").append(toIndentedString(createdBeforeExpression)).append("\n");
    sb.append("    updatedAfter: ").append(toIndentedString(updatedAfter)).append("\n");
    sb.append("    updatedAfterExpression: ").append(toIndentedString(updatedAfterExpression)).append("\n");
    sb.append("    delegationState: ").append(toIndentedString(delegationState)).append("\n");
    sb.append("    candidateGroups: ").append(toIndentedString(candidateGroups)).append("\n");
    sb.append("    candidateGroupsExpression: ").append(toIndentedString(candidateGroupsExpression)).append("\n");
    sb.append("    withCandidateGroups: ").append(toIndentedString(withCandidateGroups)).append("\n");
    sb.append("    withoutCandidateGroups: ").append(toIndentedString(withoutCandidateGroups)).append("\n");
    sb.append("    withCandidateUsers: ").append(toIndentedString(withCandidateUsers)).append("\n");
    sb.append("    withoutCandidateUsers: ").append(toIndentedString(withoutCandidateUsers)).append("\n");
    sb.append("    active: ").append(toIndentedString(active)).append("\n");
    sb.append("    suspended: ").append(toIndentedString(suspended)).append("\n");
    sb.append("    taskVariables: ").append(toIndentedString(taskVariables)).append("\n");
    sb.append("    processVariables: ").append(toIndentedString(processVariables)).append("\n");
    sb.append("    caseInstanceVariables: ").append(toIndentedString(caseInstanceVariables)).append("\n");
    sb.append("    variableNamesIgnoreCase: ").append(toIndentedString(variableNamesIgnoreCase)).append("\n");
    sb.append("    variableValuesIgnoreCase: ").append(toIndentedString(variableValuesIgnoreCase)).append("\n");
    sb.append("    parentTaskId: ").append(toIndentedString(parentTaskId)).append("\n");
    sb.append("    orQueries: ").append(toIndentedString(orQueries)).append("\n");
    sb.append("    sorting: ").append(toIndentedString(sorting)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }

  /**
   * Convert the instance into URL query string.
   *
   * @return URL query string
   */
  public String toUrlQueryString() {
    return toUrlQueryString(null);
  }

  /**
   * Convert the instance into URL query string.
   *
   * @param prefix prefix of the query string
   * @return URL query string
   */
  public String toUrlQueryString(String prefix) {
    String suffix = "";
    String containerSuffix = "";
    String containerPrefix = "";
    if (prefix == null) {
      // style=form, explode=true, e.g. /pet?name=cat&type=manx
      prefix = "";
    } else {
      // deepObject style e.g. /pet?id[name]=cat&id[type]=manx
      prefix = prefix + "[";
      suffix = "]";
      containerSuffix = "]";
      containerPrefix = "[";
    }

    StringJoiner joiner = new StringJoiner("&");

    // add `taskId` to the URL query string
    if (getTaskId() != null) {
      try {
        joiner.add(String.format("%staskId%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getTaskId()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `taskIdIn` to the URL query string
    if (getTaskIdIn() != null) {
      for (int i = 0; i < getTaskIdIn().size(); i++) {
        try {
          joiner.add(String.format("%staskIdIn%s%s=%s", prefix, suffix,
              "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
              URLEncoder.encode(String.valueOf(getTaskIdIn().get(i)), "UTF-8").replaceAll("\\+", "%20")));
        } catch (UnsupportedEncodingException e) {
          // Should never happen, UTF-8 is always supported
          throw new RuntimeException(e);
        }
      }
    }

    // add `processInstanceId` to the URL query string
    if (getProcessInstanceId() != null) {
      try {
        joiner.add(String.format("%sprocessInstanceId%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getProcessInstanceId()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `processInstanceIdIn` to the URL query string
    if (getProcessInstanceIdIn() != null) {
      for (int i = 0; i < getProcessInstanceIdIn().size(); i++) {
        try {
          joiner.add(String.format("%sprocessInstanceIdIn%s%s=%s", prefix, suffix,
              "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
              URLEncoder.encode(String.valueOf(getProcessInstanceIdIn().get(i)), "UTF-8").replaceAll("\\+", "%20")));
        } catch (UnsupportedEncodingException e) {
          // Should never happen, UTF-8 is always supported
          throw new RuntimeException(e);
        }
      }
    }

    // add `processInstanceBusinessKey` to the URL query string
    if (getProcessInstanceBusinessKey() != null) {
      try {
        joiner.add(String.format("%sprocessInstanceBusinessKey%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getProcessInstanceBusinessKey()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `processInstanceBusinessKeyExpression` to the URL query string
    if (getProcessInstanceBusinessKeyExpression() != null) {
      try {
        joiner.add(String.format("%sprocessInstanceBusinessKeyExpression%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getProcessInstanceBusinessKeyExpression()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `processInstanceBusinessKeyIn` to the URL query string
    if (getProcessInstanceBusinessKeyIn() != null) {
      for (int i = 0; i < getProcessInstanceBusinessKeyIn().size(); i++) {
        try {
          joiner.add(String.format("%sprocessInstanceBusinessKeyIn%s%s=%s", prefix, suffix,
              "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
              URLEncoder.encode(String.valueOf(getProcessInstanceBusinessKeyIn().get(i)), "UTF-8").replaceAll("\\+", "%20")));
        } catch (UnsupportedEncodingException e) {
          // Should never happen, UTF-8 is always supported
          throw new RuntimeException(e);
        }
      }
    }

    // add `processInstanceBusinessKeyLike` to the URL query string
    if (getProcessInstanceBusinessKeyLike() != null) {
      try {
        joiner.add(String.format("%sprocessInstanceBusinessKeyLike%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getProcessInstanceBusinessKeyLike()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `processInstanceBusinessKeyLikeExpression` to the URL query string
    if (getProcessInstanceBusinessKeyLikeExpression() != null) {
      try {
        joiner.add(String.format("%sprocessInstanceBusinessKeyLikeExpression%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getProcessInstanceBusinessKeyLikeExpression()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `processDefinitionId` to the URL query string
    if (getProcessDefinitionId() != null) {
      try {
        joiner.add(String.format("%sprocessDefinitionId%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getProcessDefinitionId()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `processDefinitionKey` to the URL query string
    if (getProcessDefinitionKey() != null) {
      try {
        joiner.add(String.format("%sprocessDefinitionKey%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getProcessDefinitionKey()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `processDefinitionKeyIn` to the URL query string
    if (getProcessDefinitionKeyIn() != null) {
      for (int i = 0; i < getProcessDefinitionKeyIn().size(); i++) {
        try {
          joiner.add(String.format("%sprocessDefinitionKeyIn%s%s=%s", prefix, suffix,
              "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
              URLEncoder.encode(String.valueOf(getProcessDefinitionKeyIn().get(i)), "UTF-8").replaceAll("\\+", "%20")));
        } catch (UnsupportedEncodingException e) {
          // Should never happen, UTF-8 is always supported
          throw new RuntimeException(e);
        }
      }
    }

    // add `processDefinitionName` to the URL query string
    if (getProcessDefinitionName() != null) {
      try {
        joiner.add(String.format("%sprocessDefinitionName%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getProcessDefinitionName()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `processDefinitionNameLike` to the URL query string
    if (getProcessDefinitionNameLike() != null) {
      try {
        joiner.add(String.format("%sprocessDefinitionNameLike%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getProcessDefinitionNameLike()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `executionId` to the URL query string
    if (getExecutionId() != null) {
      try {
        joiner.add(String.format("%sexecutionId%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getExecutionId()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `caseInstanceId` to the URL query string
    if (getCaseInstanceId() != null) {
      try {
        joiner.add(String.format("%scaseInstanceId%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getCaseInstanceId()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `caseInstanceBusinessKey` to the URL query string
    if (getCaseInstanceBusinessKey() != null) {
      try {
        joiner.add(String.format("%scaseInstanceBusinessKey%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getCaseInstanceBusinessKey()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `caseInstanceBusinessKeyLike` to the URL query string
    if (getCaseInstanceBusinessKeyLike() != null) {
      try {
        joiner.add(String.format("%scaseInstanceBusinessKeyLike%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getCaseInstanceBusinessKeyLike()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `caseDefinitionId` to the URL query string
    if (getCaseDefinitionId() != null) {
      try {
        joiner.add(String.format("%scaseDefinitionId%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getCaseDefinitionId()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `caseDefinitionKey` to the URL query string
    if (getCaseDefinitionKey() != null) {
      try {
        joiner.add(String.format("%scaseDefinitionKey%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getCaseDefinitionKey()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `caseDefinitionName` to the URL query string
    if (getCaseDefinitionName() != null) {
      try {
        joiner.add(String.format("%scaseDefinitionName%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getCaseDefinitionName()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `caseDefinitionNameLike` to the URL query string
    if (getCaseDefinitionNameLike() != null) {
      try {
        joiner.add(String.format("%scaseDefinitionNameLike%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getCaseDefinitionNameLike()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `caseExecutionId` to the URL query string
    if (getCaseExecutionId() != null) {
      try {
        joiner.add(String.format("%scaseExecutionId%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getCaseExecutionId()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `activityInstanceIdIn` to the URL query string
    if (getActivityInstanceIdIn() != null) {
      for (int i = 0; i < getActivityInstanceIdIn().size(); i++) {
        try {
          joiner.add(String.format("%sactivityInstanceIdIn%s%s=%s", prefix, suffix,
              "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
              URLEncoder.encode(String.valueOf(getActivityInstanceIdIn().get(i)), "UTF-8").replaceAll("\\+", "%20")));
        } catch (UnsupportedEncodingException e) {
          // Should never happen, UTF-8 is always supported
          throw new RuntimeException(e);
        }
      }
    }

    // add `tenantIdIn` to the URL query string
    if (getTenantIdIn() != null) {
      for (int i = 0; i < getTenantIdIn().size(); i++) {
        try {
          joiner.add(String.format("%stenantIdIn%s%s=%s", prefix, suffix,
              "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
              URLEncoder.encode(String.valueOf(getTenantIdIn().get(i)), "UTF-8").replaceAll("\\+", "%20")));
        } catch (UnsupportedEncodingException e) {
          // Should never happen, UTF-8 is always supported
          throw new RuntimeException(e);
        }
      }
    }

    // add `withoutTenantId` to the URL query string
    if (getWithoutTenantId() != null) {
      try {
        joiner.add(String.format("%swithoutTenantId%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getWithoutTenantId()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `assignee` to the URL query string
    if (getAssignee() != null) {
      try {
        joiner.add(String.format("%sassignee%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getAssignee()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `assigneeExpression` to the URL query string
    if (getAssigneeExpression() != null) {
      try {
        joiner.add(String.format("%sassigneeExpression%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getAssigneeExpression()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `assigneeLike` to the URL query string
    if (getAssigneeLike() != null) {
      try {
        joiner.add(String.format("%sassigneeLike%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getAssigneeLike()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `assigneeLikeExpression` to the URL query string
    if (getAssigneeLikeExpression() != null) {
      try {
        joiner.add(String.format("%sassigneeLikeExpression%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getAssigneeLikeExpression()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `assigneeIn` to the URL query string
    if (getAssigneeIn() != null) {
      for (int i = 0; i < getAssigneeIn().size(); i++) {
        try {
          joiner.add(String.format("%sassigneeIn%s%s=%s", prefix, suffix,
              "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
              URLEncoder.encode(String.valueOf(getAssigneeIn().get(i)), "UTF-8").replaceAll("\\+", "%20")));
        } catch (UnsupportedEncodingException e) {
          // Should never happen, UTF-8 is always supported
          throw new RuntimeException(e);
        }
      }
    }

    // add `assigneeNotIn` to the URL query string
    if (getAssigneeNotIn() != null) {
      for (int i = 0; i < getAssigneeNotIn().size(); i++) {
        try {
          joiner.add(String.format("%sassigneeNotIn%s%s=%s", prefix, suffix,
              "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
              URLEncoder.encode(String.valueOf(getAssigneeNotIn().get(i)), "UTF-8").replaceAll("\\+", "%20")));
        } catch (UnsupportedEncodingException e) {
          // Should never happen, UTF-8 is always supported
          throw new RuntimeException(e);
        }
      }
    }

    // add `owner` to the URL query string
    if (getOwner() != null) {
      try {
        joiner.add(String.format("%sowner%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getOwner()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `ownerExpression` to the URL query string
    if (getOwnerExpression() != null) {
      try {
        joiner.add(String.format("%sownerExpression%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getOwnerExpression()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `candidateGroup` to the URL query string
    if (getCandidateGroup() != null) {
      try {
        joiner.add(String.format("%scandidateGroup%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getCandidateGroup()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `candidateGroupExpression` to the URL query string
    if (getCandidateGroupExpression() != null) {
      try {
        joiner.add(String.format("%scandidateGroupExpression%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getCandidateGroupExpression()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `candidateUser` to the URL query string
    if (getCandidateUser() != null) {
      try {
        joiner.add(String.format("%scandidateUser%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getCandidateUser()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `candidateUserExpression` to the URL query string
    if (getCandidateUserExpression() != null) {
      try {
        joiner.add(String.format("%scandidateUserExpression%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getCandidateUserExpression()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `includeAssignedTasks` to the URL query string
    if (getIncludeAssignedTasks() != null) {
      try {
        joiner.add(String.format("%sincludeAssignedTasks%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getIncludeAssignedTasks()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `involvedUser` to the URL query string
    if (getInvolvedUser() != null) {
      try {
        joiner.add(String.format("%sinvolvedUser%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getInvolvedUser()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `involvedUserExpression` to the URL query string
    if (getInvolvedUserExpression() != null) {
      try {
        joiner.add(String.format("%sinvolvedUserExpression%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getInvolvedUserExpression()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `assigned` to the URL query string
    if (getAssigned() != null) {
      try {
        joiner.add(String.format("%sassigned%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getAssigned()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `unassigned` to the URL query string
    if (getUnassigned() != null) {
      try {
        joiner.add(String.format("%sunassigned%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getUnassigned()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `taskDefinitionKey` to the URL query string
    if (getTaskDefinitionKey() != null) {
      try {
        joiner.add(String.format("%staskDefinitionKey%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getTaskDefinitionKey()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `taskDefinitionKeyIn` to the URL query string
    if (getTaskDefinitionKeyIn() != null) {
      for (int i = 0; i < getTaskDefinitionKeyIn().size(); i++) {
        try {
          joiner.add(String.format("%staskDefinitionKeyIn%s%s=%s", prefix, suffix,
              "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
              URLEncoder.encode(String.valueOf(getTaskDefinitionKeyIn().get(i)), "UTF-8").replaceAll("\\+", "%20")));
        } catch (UnsupportedEncodingException e) {
          // Should never happen, UTF-8 is always supported
          throw new RuntimeException(e);
        }
      }
    }

    // add `taskDefinitionKeyLike` to the URL query string
    if (getTaskDefinitionKeyLike() != null) {
      try {
        joiner.add(String.format("%staskDefinitionKeyLike%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getTaskDefinitionKeyLike()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `name` to the URL query string
    if (getName() != null) {
      try {
        joiner.add(String.format("%sname%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getName()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `nameNotEqual` to the URL query string
    if (getNameNotEqual() != null) {
      try {
        joiner.add(String.format("%snameNotEqual%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getNameNotEqual()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `nameLike` to the URL query string
    if (getNameLike() != null) {
      try {
        joiner.add(String.format("%snameLike%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getNameLike()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `nameNotLike` to the URL query string
    if (getNameNotLike() != null) {
      try {
        joiner.add(String.format("%snameNotLike%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getNameNotLike()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `description` to the URL query string
    if (getDescription() != null) {
      try {
        joiner.add(String.format("%sdescription%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getDescription()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `descriptionLike` to the URL query string
    if (getDescriptionLike() != null) {
      try {
        joiner.add(String.format("%sdescriptionLike%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getDescriptionLike()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `priority` to the URL query string
    if (getPriority() != null) {
      try {
        joiner.add(String.format("%spriority%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getPriority()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `maxPriority` to the URL query string
    if (getMaxPriority() != null) {
      try {
        joiner.add(String.format("%smaxPriority%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getMaxPriority()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `minPriority` to the URL query string
    if (getMinPriority() != null) {
      try {
        joiner.add(String.format("%sminPriority%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getMinPriority()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `dueDate` to the URL query string
    if (getDueDate() != null) {
      try {
        joiner.add(String.format("%sdueDate%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getDueDate()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `dueDateExpression` to the URL query string
    if (getDueDateExpression() != null) {
      try {
        joiner.add(String.format("%sdueDateExpression%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getDueDateExpression()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `dueAfter` to the URL query string
    if (getDueAfter() != null) {
      try {
        joiner.add(String.format("%sdueAfter%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getDueAfter()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `dueAfterExpression` to the URL query string
    if (getDueAfterExpression() != null) {
      try {
        joiner.add(String.format("%sdueAfterExpression%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getDueAfterExpression()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `dueBefore` to the URL query string
    if (getDueBefore() != null) {
      try {
        joiner.add(String.format("%sdueBefore%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getDueBefore()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `dueBeforeExpression` to the URL query string
    if (getDueBeforeExpression() != null) {
      try {
        joiner.add(String.format("%sdueBeforeExpression%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getDueBeforeExpression()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `withoutDueDate` to the URL query string
    if (getWithoutDueDate() != null) {
      try {
        joiner.add(String.format("%swithoutDueDate%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getWithoutDueDate()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `followUpDate` to the URL query string
    if (getFollowUpDate() != null) {
      try {
        joiner.add(String.format("%sfollowUpDate%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getFollowUpDate()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `followUpDateExpression` to the URL query string
    if (getFollowUpDateExpression() != null) {
      try {
        joiner.add(String.format("%sfollowUpDateExpression%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getFollowUpDateExpression()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `followUpAfter` to the URL query string
    if (getFollowUpAfter() != null) {
      try {
        joiner.add(String.format("%sfollowUpAfter%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getFollowUpAfter()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `followUpAfterExpression` to the URL query string
    if (getFollowUpAfterExpression() != null) {
      try {
        joiner.add(String.format("%sfollowUpAfterExpression%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getFollowUpAfterExpression()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `followUpBefore` to the URL query string
    if (getFollowUpBefore() != null) {
      try {
        joiner.add(String.format("%sfollowUpBefore%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getFollowUpBefore()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `followUpBeforeExpression` to the URL query string
    if (getFollowUpBeforeExpression() != null) {
      try {
        joiner.add(String.format("%sfollowUpBeforeExpression%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getFollowUpBeforeExpression()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `followUpBeforeOrNotExistent` to the URL query string
    if (getFollowUpBeforeOrNotExistent() != null) {
      try {
        joiner.add(String.format("%sfollowUpBeforeOrNotExistent%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getFollowUpBeforeOrNotExistent()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `followUpBeforeOrNotExistentExpression` to the URL query string
    if (getFollowUpBeforeOrNotExistentExpression() != null) {
      try {
        joiner.add(String.format("%sfollowUpBeforeOrNotExistentExpression%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getFollowUpBeforeOrNotExistentExpression()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `createdOn` to the URL query string
    if (getCreatedOn() != null) {
      try {
        joiner.add(String.format("%screatedOn%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getCreatedOn()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `createdOnExpression` to the URL query string
    if (getCreatedOnExpression() != null) {
      try {
        joiner.add(String.format("%screatedOnExpression%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getCreatedOnExpression()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `createdAfter` to the URL query string
    if (getCreatedAfter() != null) {
      try {
        joiner.add(String.format("%screatedAfter%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getCreatedAfter()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `createdAfterExpression` to the URL query string
    if (getCreatedAfterExpression() != null) {
      try {
        joiner.add(String.format("%screatedAfterExpression%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getCreatedAfterExpression()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `createdBefore` to the URL query string
    if (getCreatedBefore() != null) {
      try {
        joiner.add(String.format("%screatedBefore%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getCreatedBefore()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `createdBeforeExpression` to the URL query string
    if (getCreatedBeforeExpression() != null) {
      try {
        joiner.add(String.format("%screatedBeforeExpression%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getCreatedBeforeExpression()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `updatedAfter` to the URL query string
    if (getUpdatedAfter() != null) {
      try {
        joiner.add(String.format("%supdatedAfter%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getUpdatedAfter()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `updatedAfterExpression` to the URL query string
    if (getUpdatedAfterExpression() != null) {
      try {
        joiner.add(String.format("%supdatedAfterExpression%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getUpdatedAfterExpression()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `delegationState` to the URL query string
    if (getDelegationState() != null) {
      try {
        joiner.add(String.format("%sdelegationState%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getDelegationState()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `candidateGroups` to the URL query string
    if (getCandidateGroups() != null) {
      for (int i = 0; i < getCandidateGroups().size(); i++) {
        try {
          joiner.add(String.format("%scandidateGroups%s%s=%s", prefix, suffix,
              "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
              URLEncoder.encode(String.valueOf(getCandidateGroups().get(i)), "UTF-8").replaceAll("\\+", "%20")));
        } catch (UnsupportedEncodingException e) {
          // Should never happen, UTF-8 is always supported
          throw new RuntimeException(e);
        }
      }
    }

    // add `candidateGroupsExpression` to the URL query string
    if (getCandidateGroupsExpression() != null) {
      try {
        joiner.add(String.format("%scandidateGroupsExpression%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getCandidateGroupsExpression()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `withCandidateGroups` to the URL query string
    if (getWithCandidateGroups() != null) {
      try {
        joiner.add(String.format("%swithCandidateGroups%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getWithCandidateGroups()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `withoutCandidateGroups` to the URL query string
    if (getWithoutCandidateGroups() != null) {
      try {
        joiner.add(String.format("%swithoutCandidateGroups%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getWithoutCandidateGroups()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `withCandidateUsers` to the URL query string
    if (getWithCandidateUsers() != null) {
      try {
        joiner.add(String.format("%swithCandidateUsers%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getWithCandidateUsers()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `withoutCandidateUsers` to the URL query string
    if (getWithoutCandidateUsers() != null) {
      try {
        joiner.add(String.format("%swithoutCandidateUsers%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getWithoutCandidateUsers()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `active` to the URL query string
    if (getActive() != null) {
      try {
        joiner.add(String.format("%sactive%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getActive()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `suspended` to the URL query string
    if (getSuspended() != null) {
      try {
        joiner.add(String.format("%ssuspended%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getSuspended()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `taskVariables` to the URL query string
    if (getTaskVariables() != null) {
      for (int i = 0; i < getTaskVariables().size(); i++) {
        if (getTaskVariables().get(i) != null) {
          joiner.add(getTaskVariables().get(i).toUrlQueryString(String.format("%staskVariables%s%s", prefix, suffix,
              "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix))));
        }
      }
    }

    // add `processVariables` to the URL query string
    if (getProcessVariables() != null) {
      for (int i = 0; i < getProcessVariables().size(); i++) {
        if (getProcessVariables().get(i) != null) {
          joiner.add(getProcessVariables().get(i).toUrlQueryString(String.format("%sprocessVariables%s%s", prefix, suffix,
              "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix))));
        }
      }
    }

    // add `caseInstanceVariables` to the URL query string
    if (getCaseInstanceVariables() != null) {
      for (int i = 0; i < getCaseInstanceVariables().size(); i++) {
        if (getCaseInstanceVariables().get(i) != null) {
          joiner.add(getCaseInstanceVariables().get(i).toUrlQueryString(String.format("%scaseInstanceVariables%s%s", prefix, suffix,
              "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix))));
        }
      }
    }

    // add `variableNamesIgnoreCase` to the URL query string
    if (getVariableNamesIgnoreCase() != null) {
      try {
        joiner.add(String.format("%svariableNamesIgnoreCase%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getVariableNamesIgnoreCase()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `variableValuesIgnoreCase` to the URL query string
    if (getVariableValuesIgnoreCase() != null) {
      try {
        joiner.add(String.format("%svariableValuesIgnoreCase%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getVariableValuesIgnoreCase()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `parentTaskId` to the URL query string
    if (getParentTaskId() != null) {
      try {
        joiner.add(String.format("%sparentTaskId%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getParentTaskId()), "UTF-8").replaceAll("\\+", "%20")));
      } catch (UnsupportedEncodingException e) {
        // Should never happen, UTF-8 is always supported
        throw new RuntimeException(e);
      }
    }

    // add `orQueries` to the URL query string
    if (getOrQueries() != null) {
      for (int i = 0; i < getOrQueries().size(); i++) {
        if (getOrQueries().get(i) != null) {
          joiner.add(getOrQueries().get(i).toUrlQueryString(String.format("%sorQueries%s%s", prefix, suffix,
              "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix))));
        }
      }
    }

    // add `sorting` to the URL query string
    if (getSorting() != null) {
      for (int i = 0; i < getSorting().size(); i++) {
        if (getSorting().get(i) != null) {
          joiner.add(getSorting().get(i).toUrlQueryString(String.format("%ssorting%s%s", prefix, suffix,
              "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix))));
        }
      }
    }

    return joiner.toString();
  }

}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy