public DeleteRequest unmarshall(JsonUnmarshallerContext context) throws Exception {
    DeleteRequest deleteRequest = new DeleteRequest();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("Key", targetDepth)) {
          context.nextToken();
          deleteRequest.setKey(
              new MapUnmarshaller<String, AttributeValue>(
                      StringJsonUnmarshaller.getInstance(),
                      AttributeValueJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }

      token = context.nextToken();
    }

    return deleteRequest;
  }
  public CreateGrantResult unmarshall(JsonUnmarshallerContext context) throws Exception {
    CreateGrantResult createGrantResult = new CreateGrantResult();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("GrantToken", targetDepth)) {
          context.nextToken();
          createGrantResult.setGrantToken(
              context.getUnmarshaller(String.class).unmarshall(context));
        }
        if (context.testExpression("GrantId", targetDepth)) {
          context.nextToken();
          createGrantResult.setGrantId(context.getUnmarshaller(String.class).unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }
      token = context.nextToken();
    }

    return createGrantResult;
  }
  public ConfirmConnectionResult unmarshall(JsonUnmarshallerContext context) throws Exception {
    ConfirmConnectionResult confirmConnectionResult = new ConfirmConnectionResult();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("connectionState", targetDepth)) {
          context.nextToken();
          confirmConnectionResult.setConnectionState(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }
      token = context.nextToken();
    }

    return confirmConnectionResult;
  }
  public ParameterConstraints unmarshall(JsonUnmarshallerContext context) throws Exception {
    ParameterConstraints parameterConstraints = new ParameterConstraints();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("AllowedValues", targetDepth)) {
          context.nextToken();
          parameterConstraints.setAllowedValues(
              new ListUnmarshaller<String>(context.getUnmarshaller(String.class))
                  .unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }
      token = context.nextToken();
    }

    return parameterConstraints;
  }
  public ListPartsResult unmarshall(JsonUnmarshallerContext context) throws Exception {
    ListPartsResult listPartsResult = new ListPartsResult();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("MultipartUploadId", targetDepth)) {
          context.nextToken();
          listPartsResult.setMultipartUploadId(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("VaultARN", targetDepth)) {
          context.nextToken();
          listPartsResult.setVaultARN(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("ArchiveDescription", targetDepth)) {
          context.nextToken();
          listPartsResult.setArchiveDescription(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("PartSizeInBytes", targetDepth)) {
          context.nextToken();
          listPartsResult.setPartSizeInBytes(
              LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("CreationDate", targetDepth)) {
          context.nextToken();
          listPartsResult.setCreationDate(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Parts", targetDepth)) {
          context.nextToken();
          listPartsResult.setParts(
              new ListUnmarshaller<PartListElement>(PartListElementJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
        if (context.testExpression("Marker", targetDepth)) {
          context.nextToken();
          listPartsResult.setMarker(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }

      token = context.nextToken();
    }

    return listPartsResult;
  }
  public CancelWorkflowExecutionDecisionAttributes unmarshall(JsonUnmarshallerContext context)
      throws Exception {
    CancelWorkflowExecutionDecisionAttributes cancelWorkflowExecutionDecisionAttributes =
        new CancelWorkflowExecutionDecisionAttributes();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("details", targetDepth)) {
          context.nextToken();
          cancelWorkflowExecutionDecisionAttributes.setDetails(
              context.getUnmarshaller(String.class).unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }
      token = context.nextToken();
    }

    return cancelWorkflowExecutionDecisionAttributes;
  }
  public SeverityLevel unmarshall(JsonUnmarshallerContext context) throws Exception {
    SeverityLevel severityLevel = new SeverityLevel();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("code", targetDepth)) {
          context.nextToken();
          severityLevel.setCode(context.getUnmarshaller(String.class).unmarshall(context));
        }
        if (context.testExpression("name", targetDepth)) {
          context.nextToken();
          severityLevel.setName(context.getUnmarshaller(String.class).unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }
      token = context.nextToken();
    }

    return severityLevel;
  }
  public DomainDetail unmarshall(JsonUnmarshallerContext context) throws Exception {
    DomainDetail domainDetail = new DomainDetail();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.currentToken;
    if (token == null) token = context.nextToken();

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("domainInfo", targetDepth)) {
          context.nextToken();
          domainDetail.setDomainInfo(DomainInfoJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("configuration", targetDepth)) {
          context.nextToken();
          domainDetail.setConfiguration(
              DomainConfigurationJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }

      token = context.nextToken();
    }

    return domainDetail;
  }
  public FleetError unmarshall(JsonUnmarshallerContext context) throws Exception {
    FleetError fleetError = new FleetError();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("ErrorCode", targetDepth)) {
          context.nextToken();
          fleetError.setErrorCode(context.getUnmarshaller(String.class).unmarshall(context));
        }
        if (context.testExpression("ErrorMessage", targetDepth)) {
          context.nextToken();
          fleetError.setErrorMessage(context.getUnmarshaller(String.class).unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }
      token = context.nextToken();
    }

    return fleetError;
  }
  public FileSystemSize unmarshall(JsonUnmarshallerContext context) throws Exception {
    FileSystemSize fileSystemSize = new FileSystemSize();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("Value", targetDepth)) {
          context.nextToken();
          fileSystemSize.setValue(LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Timestamp", targetDepth)) {
          context.nextToken();
          fileSystemSize.setTimestamp(DateJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }
      token = context.nextToken();
    }

    return fileSystemSize;
  }
  public ActivityType unmarshall(JsonUnmarshallerContext context) throws Exception {
    ActivityType activityType = new ActivityType();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.currentToken;
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("name", targetDepth)) {
          context.nextToken();
          activityType.setName(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("version", targetDepth)) {
          context.nextToken();
          activityType.setVersion(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }

      token = context.nextToken();
    }

    return activityType;
  }
  public Clip unmarshall(JsonUnmarshallerContext context) throws Exception {
    Clip clip = new Clip();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("TimeSpan", targetDepth)) {
          context.nextToken();
          clip.setTimeSpan(TimeSpanJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }
      token = context.nextToken();
    }

    return clip;
  }
  public BatchGetDeploymentsResult unmarshall(JsonUnmarshallerContext context) throws Exception {
    BatchGetDeploymentsResult batchGetDeploymentsResult = new BatchGetDeploymentsResult();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("deploymentsInfo", targetDepth)) {
          context.nextToken();
          batchGetDeploymentsResult.setDeploymentsInfo(
              new ListUnmarshaller<DeploymentInfo>(DeploymentInfoJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }
      token = context.nextToken();
    }

    return batchGetDeploymentsResult;
  }
  public BootstrapActionConfig unmarshall(JsonUnmarshallerContext context) throws Exception {
    BootstrapActionConfig bootstrapActionConfig = new BootstrapActionConfig();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("Name", targetDepth)) {
          context.nextToken();
          bootstrapActionConfig.setName(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("ScriptBootstrapAction", targetDepth)) {
          context.nextToken();
          bootstrapActionConfig.setScriptBootstrapAction(
              ScriptBootstrapActionConfigJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }
      token = context.nextToken();
    }

    return bootstrapActionConfig;
  }
  public IncompatibilityMessage unmarshall(JsonUnmarshallerContext context) throws Exception {
    IncompatibilityMessage incompatibilityMessage = new IncompatibilityMessage();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("message", targetDepth)) {
          context.nextToken();
          incompatibilityMessage.setMessage(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("type", targetDepth)) {
          context.nextToken();
          incompatibilityMessage.setType(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }
      token = context.nextToken();
    }

    return incompatibilityMessage;
  }
  public ThrottleSettings unmarshall(JsonUnmarshallerContext context) throws Exception {
    ThrottleSettings throttleSettings = new ThrottleSettings();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("burstLimit", targetDepth)) {
          context.nextToken();
          throttleSettings.setBurstLimit(
              context.getUnmarshaller(Integer.class).unmarshall(context));
        }
        if (context.testExpression("rateLimit", targetDepth)) {
          context.nextToken();
          throttleSettings.setRateLimit(context.getUnmarshaller(Double.class).unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }
      token = context.nextToken();
    }

    return throttleSettings;
  }
  public DataRetrievalRule unmarshall(JsonUnmarshallerContext context) throws Exception {
    DataRetrievalRule dataRetrievalRule = new DataRetrievalRule();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("Strategy", targetDepth)) {
          context.nextToken();
          dataRetrievalRule.setStrategy(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("BytesPerHour", targetDepth)) {
          context.nextToken();
          dataRetrievalRule.setBytesPerHour(LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }

      token = context.nextToken();
    }

    return dataRetrievalRule;
  }
  public RefreshTrustedAdvisorCheckResult unmarshall(JsonUnmarshallerContext context)
      throws Exception {
    RefreshTrustedAdvisorCheckResult refreshTrustedAdvisorCheckResult =
        new RefreshTrustedAdvisorCheckResult();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("status", targetDepth)) {
          context.nextToken();
          refreshTrustedAdvisorCheckResult.setStatus(
              TrustedAdvisorCheckRefreshStatusJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }
      token = context.nextToken();
    }

    return refreshTrustedAdvisorCheckResult;
  }
  public CreateRestApiResult unmarshall(JsonUnmarshallerContext context) throws Exception {
    CreateRestApiResult createRestApiResult = new CreateRestApiResult();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("id", targetDepth)) {
          context.nextToken();
          createRestApiResult.setId(context.getUnmarshaller(String.class).unmarshall(context));
        }
        if (context.testExpression("name", targetDepth)) {
          context.nextToken();
          createRestApiResult.setName(context.getUnmarshaller(String.class).unmarshall(context));
        }
        if (context.testExpression("description", targetDepth)) {
          context.nextToken();
          createRestApiResult.setDescription(
              context.getUnmarshaller(String.class).unmarshall(context));
        }
        if (context.testExpression("createdDate", targetDepth)) {
          context.nextToken();
          createRestApiResult.setCreatedDate(
              context.getUnmarshaller(java.util.Date.class).unmarshall(context));
        }
        if (context.testExpression("version", targetDepth)) {
          context.nextToken();
          createRestApiResult.setVersion(context.getUnmarshaller(String.class).unmarshall(context));
        }
        if (context.testExpression("warnings", targetDepth)) {
          context.nextToken();
          createRestApiResult.setWarnings(
              new ListUnmarshaller<String>(context.getUnmarshaller(String.class))
                  .unmarshall(context));
        }
        if (context.testExpression("binaryMediaTypes", targetDepth)) {
          context.nextToken();
          createRestApiResult.setBinaryMediaTypes(
              new ListUnmarshaller<String>(context.getUnmarshaller(String.class))
                  .unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }
      token = context.nextToken();
    }

    return createRestApiResult;
  }
  public Tag unmarshall(JsonUnmarshallerContext context) throws Exception {
    Tag tag = new Tag();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("Key", targetDepth)) {
          context.nextToken();
          tag.setKey(context.getUnmarshaller(String.class).unmarshall(context));
        }
        if (context.testExpression("Value", targetDepth)) {
          context.nextToken();
          tag.setValue(context.getUnmarshaller(String.class).unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }
      token = context.nextToken();
    }

    return tag;
  }
  public AddWorkingStorageResult unmarshall(JsonUnmarshallerContext context) throws Exception {
    AddWorkingStorageResult addWorkingStorageResult = new AddWorkingStorageResult();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.currentToken;
    if (token == null) token = context.nextToken();

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("GatewayARN", targetDepth)) {
          context.nextToken();
          addWorkingStorageResult.setGatewayARN(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }

      token = context.nextToken();
    }

    return addWorkingStorageResult;
  }
  public JobSummary unmarshall(JsonUnmarshallerContext context) throws Exception {
    JobSummary jobSummary = new JobSummary();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("jobId", targetDepth)) {
          context.nextToken();
          jobSummary.setJobId(context.getUnmarshaller(String.class).unmarshall(context));
        }
        if (context.testExpression("jobName", targetDepth)) {
          context.nextToken();
          jobSummary.setJobName(context.getUnmarshaller(String.class).unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }
      token = context.nextToken();
    }

    return jobSummary;
  }
  public DescribeServicesResult unmarshall(JsonUnmarshallerContext context) throws Exception {
    DescribeServicesResult describeServicesResult = new DescribeServicesResult();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.currentToken;
    if (token == null) token = context.nextToken();

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("services", targetDepth)) {
          describeServicesResult.setServices(
              new ListUnmarshaller<Service>(ServiceJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }

      token = context.nextToken();
    }

    return describeServicesResult;
  }
  public WebACLUpdate unmarshall(JsonUnmarshallerContext context) throws Exception {
    WebACLUpdate webACLUpdate = new WebACLUpdate();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("Action", targetDepth)) {
          context.nextToken();
          webACLUpdate.setAction(context.getUnmarshaller(String.class).unmarshall(context));
        }
        if (context.testExpression("ActivatedRule", targetDepth)) {
          context.nextToken();
          webACLUpdate.setActivatedRule(
              ActivatedRuleJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }
      token = context.nextToken();
    }

    return webACLUpdate;
  }
  public ListRunsResult unmarshall(JsonUnmarshallerContext context) throws Exception {
    ListRunsResult listRunsResult = new ListRunsResult();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("runs", targetDepth)) {
          context.nextToken();
          listRunsResult.setRuns(
              new ListUnmarshaller<Run>(RunJsonUnmarshaller.getInstance()).unmarshall(context));
        }
        if (context.testExpression("nextToken", targetDepth)) {
          context.nextToken();
          listRunsResult.setNextToken(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }
      token = context.nextToken();
    }

    return listRunsResult;
  }
  public DescribeLoadBasedAutoScalingResult unmarshall(JsonUnmarshallerContext context)
      throws Exception {
    DescribeLoadBasedAutoScalingResult describeLoadBasedAutoScalingResult =
        new DescribeLoadBasedAutoScalingResult();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("LoadBasedAutoScalingConfigurations", targetDepth)) {
          context.nextToken();
          describeLoadBasedAutoScalingResult.setLoadBasedAutoScalingConfigurations(
              new ListUnmarshaller<LoadBasedAutoScalingConfiguration>(
                      LoadBasedAutoScalingConfigurationJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }
      token = context.nextToken();
    }

    return describeLoadBasedAutoScalingResult;
  }
  public Location unmarshall(JsonUnmarshallerContext context) throws Exception {
    Location location = new Location();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.currentToken;
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("locationCode", targetDepth)) {
          context.nextToken();
          location.setLocationCode(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("locationName", targetDepth)) {
          context.nextToken();
          location.setLocationName(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }

      token = context.nextToken();
    }

    return location;
  }
  public AddCommunicationToCaseResult unmarshall(JsonUnmarshallerContext context) throws Exception {
    AddCommunicationToCaseResult addCommunicationToCaseResult = new AddCommunicationToCaseResult();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("result", targetDepth)) {
          context.nextToken();
          addCommunicationToCaseResult.setResult(
              BooleanJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }
      token = context.nextToken();
    }

    return addCommunicationToCaseResult;
  }
  public GitHubLocation unmarshall(JsonUnmarshallerContext context) throws Exception {
    GitHubLocation gitHubLocation = new GitHubLocation();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("repository", targetDepth)) {
          context.nextToken();
          gitHubLocation.setRepository(context.getUnmarshaller(String.class).unmarshall(context));
        }
        if (context.testExpression("commitId", targetDepth)) {
          context.nextToken();
          gitHubLocation.setCommitId(context.getUnmarshaller(String.class).unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }
      token = context.nextToken();
    }

    return gitHubLocation;
  }
  public VaultAccessPolicy unmarshall(JsonUnmarshallerContext context) throws Exception {
    VaultAccessPolicy vaultAccessPolicy = new VaultAccessPolicy();

    int originalDepth = context.getCurrentDepth();
    String currentParentElement = context.getCurrentParentElement();
    int targetDepth = originalDepth + 1;

    JsonToken token = context.getCurrentToken();
    if (token == null) token = context.nextToken();
    if (token == VALUE_NULL) return null;

    while (true) {
      if (token == null) break;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("Policy", targetDepth)) {
          context.nextToken();
          vaultAccessPolicy.setPolicy(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getLastParsedParentElement() == null
            || context.getLastParsedParentElement().equals(currentParentElement)) {
          if (context.getCurrentDepth() <= originalDepth) break;
        }
      }

      token = context.nextToken();
    }

    return vaultAccessPolicy;
  }