public DecisionTask unmarshall(JsonUnmarshallerContext context) throws Exception {
    DecisionTask decisionTask = new DecisionTask();

    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("taskToken", targetDepth)) {
          context.nextToken();
          decisionTask.setTaskToken(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("startedEventId", targetDepth)) {
          context.nextToken();
          decisionTask.setStartedEventId(LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("workflowExecution", targetDepth)) {
          context.nextToken();
          decisionTask.setWorkflowExecution(
              WorkflowExecutionJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("workflowType", targetDepth)) {
          context.nextToken();
          decisionTask.setWorkflowType(
              WorkflowTypeJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("events", targetDepth)) {
          decisionTask.setEvents(
              new ListUnmarshaller<HistoryEvent>(HistoryEventJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
        if (context.testExpression("nextPageToken", targetDepth)) {
          context.nextToken();
          decisionTask.setNextPageToken(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("previousStartedEventId", targetDepth)) {
          context.nextToken();
          decisionTask.setPreviousStartedEventId(
              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 decisionTask;
  }
  public ChildWorkflowExecutionFailedEventAttributes unmarshall(JsonUnmarshallerContext context)
      throws Exception {
    ChildWorkflowExecutionFailedEventAttributes childWorkflowExecutionFailedEventAttributes =
        new ChildWorkflowExecutionFailedEventAttributes();

    int originalDepth = context.getCurrentDepth();
    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("workflowExecution", targetDepth)) {
          context.nextToken();
          childWorkflowExecutionFailedEventAttributes.setWorkflowExecution(
              WorkflowExecutionJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("workflowType", targetDepth)) {
          context.nextToken();
          childWorkflowExecutionFailedEventAttributes.setWorkflowType(
              WorkflowTypeJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("reason", targetDepth)) {
          context.nextToken();
          childWorkflowExecutionFailedEventAttributes.setReason(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("details", targetDepth)) {
          context.nextToken();
          childWorkflowExecutionFailedEventAttributes.setDetails(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("initiatedEventId", targetDepth)) {
          context.nextToken();
          childWorkflowExecutionFailedEventAttributes.setInitiatedEventId(
              LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("startedEventId", targetDepth)) {
          context.nextToken();
          childWorkflowExecutionFailedEventAttributes.setStartedEventId(
              LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getCurrentDepth() <= originalDepth) break;
      }
      token = context.nextToken();
    }

    return childWorkflowExecutionFailedEventAttributes;
  }
  public ProvisionedThroughputDescription unmarshall(JsonUnmarshallerContext context)
      throws Exception {
    ProvisionedThroughputDescription provisionedThroughputDescription =
        new ProvisionedThroughputDescription();

    int originalDepth = context.getCurrentDepth();
    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("LastIncreaseDateTime", targetDepth)) {
          context.nextToken();
          provisionedThroughputDescription.setLastIncreaseDateTime(
              DateJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("LastDecreaseDateTime", targetDepth)) {
          context.nextToken();
          provisionedThroughputDescription.setLastDecreaseDateTime(
              DateJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("NumberOfDecreasesToday", targetDepth)) {
          context.nextToken();
          provisionedThroughputDescription.setNumberOfDecreasesToday(
              LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("ReadCapacityUnits", targetDepth)) {
          context.nextToken();
          provisionedThroughputDescription.setReadCapacityUnits(
              LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("WriteCapacityUnits", targetDepth)) {
          context.nextToken();
          provisionedThroughputDescription.setWriteCapacityUnits(
              LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getCurrentDepth() <= originalDepth) break;
      }

      token = context.nextToken();
    }

    return provisionedThroughputDescription;
  }
  public TrustedAdvisorResourcesSummary unmarshall(JsonUnmarshallerContext context)
      throws Exception {
    TrustedAdvisorResourcesSummary trustedAdvisorResourcesSummary =
        new TrustedAdvisorResourcesSummary();

    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("resourcesProcessed", targetDepth)) {
          context.nextToken();
          trustedAdvisorResourcesSummary.setResourcesProcessed(
              LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("resourcesFlagged", targetDepth)) {
          context.nextToken();
          trustedAdvisorResourcesSummary.setResourcesFlagged(
              LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("resourcesIgnored", targetDepth)) {
          context.nextToken();
          trustedAdvisorResourcesSummary.setResourcesIgnored(
              LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("resourcesSuppressed", targetDepth)) {
          context.nextToken();
          trustedAdvisorResourcesSummary.setResourcesSuppressed(
              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 trustedAdvisorResourcesSummary;
  }
  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 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 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 VolumeRecoveryPointInfo unmarshall(JsonUnmarshallerContext context) throws Exception {
    VolumeRecoveryPointInfo volumeRecoveryPointInfo = new VolumeRecoveryPointInfo();

    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("VolumeARN", targetDepth)) {
          context.nextToken();
          volumeRecoveryPointInfo.setVolumeARN(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("VolumeSizeInBytes", targetDepth)) {
          context.nextToken();
          volumeRecoveryPointInfo.setVolumeSizeInBytes(
              LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("VolumeUsageInBytes", targetDepth)) {
          context.nextToken();
          volumeRecoveryPointInfo.setVolumeUsageInBytes(
              LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("VolumeRecoveryPointTime", targetDepth)) {
          context.nextToken();
          volumeRecoveryPointInfo.setVolumeRecoveryPointTime(
              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 volumeRecoveryPointInfo;
  }
  public ActivityTaskCompletedEventAttributes unmarshall(JsonUnmarshallerContext context)
      throws Exception {
    ActivityTaskCompletedEventAttributes activityTaskCompletedEventAttributes =
        new ActivityTaskCompletedEventAttributes();

    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("result", targetDepth)) {
          context.nextToken();
          activityTaskCompletedEventAttributes.setResult(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("scheduledEventId", targetDepth)) {
          context.nextToken();
          activityTaskCompletedEventAttributes.setScheduledEventId(
              LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("startedEventId", targetDepth)) {
          context.nextToken();
          activityTaskCompletedEventAttributes.setStartedEventId(
              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 activityTaskCompletedEventAttributes;
  }
  public DescribeBandwidthRateLimitResult unmarshall(JsonUnmarshallerContext context)
      throws Exception {
    DescribeBandwidthRateLimitResult describeBandwidthRateLimitResult =
        new DescribeBandwidthRateLimitResult();

    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("GatewayARN", targetDepth)) {
          context.nextToken();
          describeBandwidthRateLimitResult.setGatewayARN(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("AverageUploadRateLimitInBitsPerSec", targetDepth)) {
          context.nextToken();
          describeBandwidthRateLimitResult.setAverageUploadRateLimitInBitsPerSec(
              LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("AverageDownloadRateLimitInBitsPerSec", targetDepth)) {
          context.nextToken();
          describeBandwidthRateLimitResult.setAverageDownloadRateLimitInBitsPerSec(
              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 describeBandwidthRateLimitResult;
  }
  public ActivityTask unmarshall(JsonUnmarshallerContext context) throws Exception {
    ActivityTask activityTask = new ActivityTask();

    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("taskToken", targetDepth)) {
          context.nextToken();
          activityTask.setTaskToken(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("activityId", targetDepth)) {
          context.nextToken();
          activityTask.setActivityId(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("startedEventId", targetDepth)) {
          context.nextToken();
          activityTask.setStartedEventId(LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("workflowExecution", targetDepth)) {
          context.nextToken();
          activityTask.setWorkflowExecution(
              WorkflowExecutionJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("activityType", targetDepth)) {
          context.nextToken();
          activityTask.setActivityType(
              ActivityTypeJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("input", targetDepth)) {
          context.nextToken();
          activityTask.setInput(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 activityTask;
  }
  public OutputLogEvent unmarshall(JsonUnmarshallerContext context) throws Exception {
    OutputLogEvent outputLogEvent = new OutputLogEvent();

    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("timestamp", targetDepth)) {
          context.nextToken();
          outputLogEvent.setTimestamp(LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("message", targetDepth)) {
          context.nextToken();
          outputLogEvent.setMessage(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("ingestionTime", targetDepth)) {
          context.nextToken();
          outputLogEvent.setIngestionTime(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 outputLogEvent;
  }
 public ProvisionedThroughput unmarshall(JsonUnmarshallerContext context) throws Exception {
   AwsJsonReader reader = context.getReader();
   if (!reader.isContainer()) {
     reader.skipValue();
     return null;
   }
   ProvisionedThroughput provisionedThroughput = new ProvisionedThroughput();
   reader.beginObject();
   while (reader.hasNext()) {
     String name = reader.nextName();
     if (name.equals("ReadCapacityUnits")) {
       provisionedThroughput.setReadCapacityUnits(
           LongJsonUnmarshaller.getInstance().unmarshall(context));
     } else if (name.equals("WriteCapacityUnits")) {
       provisionedThroughput.setWriteCapacityUnits(
           LongJsonUnmarshaller.getInstance().unmarshall(context));
     } else {
       reader.skipValue();
     }
   }
   reader.endObject();
   return provisionedThroughput;
 }
  public TrustedAdvisorCheckRefreshStatus unmarshall(JsonUnmarshallerContext context)
      throws Exception {
    TrustedAdvisorCheckRefreshStatus trustedAdvisorCheckRefreshStatus =
        new TrustedAdvisorCheckRefreshStatus();

    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("checkId", targetDepth)) {
          context.nextToken();
          trustedAdvisorCheckRefreshStatus.setCheckId(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("status", targetDepth)) {
          context.nextToken();
          trustedAdvisorCheckRefreshStatus.setStatus(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("millisUntilNextRefreshable", targetDepth)) {
          context.nextToken();
          trustedAdvisorCheckRefreshStatus.setMillisUntilNextRefreshable(
              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 trustedAdvisorCheckRefreshStatus;
  }
  public WorkflowExecutionCancelRequestedEventAttributes unmarshall(JsonUnmarshallerContext context)
      throws Exception {
    WorkflowExecutionCancelRequestedEventAttributes
        workflowExecutionCancelRequestedEventAttributes =
            new WorkflowExecutionCancelRequestedEventAttributes();

    int originalDepth = context.getCurrentDepth();
    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("externalWorkflowExecution", targetDepth)) {
          context.nextToken();
          workflowExecutionCancelRequestedEventAttributes.setExternalWorkflowExecution(
              WorkflowExecutionJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("externalInitiatedEventId", targetDepth)) {
          context.nextToken();
          workflowExecutionCancelRequestedEventAttributes.setExternalInitiatedEventId(
              LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("cause", targetDepth)) {
          context.nextToken();
          workflowExecutionCancelRequestedEventAttributes.setCause(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getCurrentDepth() <= originalDepth) break;
      }

      token = context.nextToken();
    }

    return workflowExecutionCancelRequestedEventAttributes;
  }
  public GlacierJobDescription unmarshall(JsonUnmarshallerContext context) throws Exception {
    GlacierJobDescription glacierJobDescription = new GlacierJobDescription();

    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("JobId", targetDepth)) {
          context.nextToken();
          glacierJobDescription.setJobId(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("JobDescription", targetDepth)) {
          context.nextToken();
          glacierJobDescription.setJobDescription(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Action", targetDepth)) {
          context.nextToken();
          glacierJobDescription.setAction(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("ArchiveId", targetDepth)) {
          context.nextToken();
          glacierJobDescription.setArchiveId(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("VaultARN", targetDepth)) {
          context.nextToken();
          glacierJobDescription.setVaultARN(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("CreationDate", targetDepth)) {
          context.nextToken();
          glacierJobDescription.setCreationDate(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Completed", targetDepth)) {
          context.nextToken();
          glacierJobDescription.setCompleted(
              BooleanJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("StatusCode", targetDepth)) {
          context.nextToken();
          glacierJobDescription.setStatusCode(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("StatusMessage", targetDepth)) {
          context.nextToken();
          glacierJobDescription.setStatusMessage(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("ArchiveSizeInBytes", targetDepth)) {
          context.nextToken();
          glacierJobDescription.setArchiveSizeInBytes(
              LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("InventorySizeInBytes", targetDepth)) {
          context.nextToken();
          glacierJobDescription.setInventorySizeInBytes(
              LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("SNSTopic", targetDepth)) {
          context.nextToken();
          glacierJobDescription.setSNSTopic(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("CompletionDate", targetDepth)) {
          context.nextToken();
          glacierJobDescription.setCompletionDate(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("SHA256TreeHash", targetDepth)) {
          context.nextToken();
          glacierJobDescription.setSHA256TreeHash(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("ArchiveSHA256TreeHash", targetDepth)) {
          context.nextToken();
          glacierJobDescription.setArchiveSHA256TreeHash(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("RetrievalByteRange", targetDepth)) {
          context.nextToken();
          glacierJobDescription.setRetrievalByteRange(
              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 glacierJobDescription;
  }
  public StorediSCSIVolume unmarshall(JsonUnmarshallerContext context) throws Exception {
    StorediSCSIVolume storediSCSIVolume = new StorediSCSIVolume();

    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("VolumeARN", targetDepth)) {
          context.nextToken();
          storediSCSIVolume.setVolumeARN(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("VolumeId", targetDepth)) {
          context.nextToken();
          storediSCSIVolume.setVolumeId(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("VolumeType", targetDepth)) {
          context.nextToken();
          storediSCSIVolume.setVolumeType(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("VolumeStatus", targetDepth)) {
          context.nextToken();
          storediSCSIVolume.setVolumeStatus(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("VolumeSizeInBytes", targetDepth)) {
          context.nextToken();
          storediSCSIVolume.setVolumeSizeInBytes(
              LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("VolumeProgress", targetDepth)) {
          context.nextToken();
          storediSCSIVolume.setVolumeProgress(
              DoubleJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("VolumeDiskId", targetDepth)) {
          context.nextToken();
          storediSCSIVolume.setVolumeDiskId(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("SourceSnapshotId", targetDepth)) {
          context.nextToken();
          storediSCSIVolume.setSourceSnapshotId(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("PreservedExistingData", targetDepth)) {
          context.nextToken();
          storediSCSIVolume.setPreservedExistingData(
              BooleanJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("VolumeiSCSIAttributes", targetDepth)) {
          context.nextToken();
          storediSCSIVolume.setVolumeiSCSIAttributes(
              VolumeiSCSIAttributesJsonUnmarshaller.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 storediSCSIVolume;
  }
  public GlobalSecondaryIndexDescription unmarshall(JsonUnmarshallerContext context)
      throws Exception {
    GlobalSecondaryIndexDescription globalSecondaryIndexDescription =
        new GlobalSecondaryIndexDescription();

    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("IndexName", targetDepth)) {
          context.nextToken();
          globalSecondaryIndexDescription.setIndexName(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("KeySchema", targetDepth)) {
          globalSecondaryIndexDescription.setKeySchema(
              new ListUnmarshaller<KeySchemaElement>(KeySchemaElementJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
        if (context.testExpression("Projection", targetDepth)) {
          context.nextToken();
          globalSecondaryIndexDescription.setProjection(
              ProjectionJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("IndexStatus", targetDepth)) {
          context.nextToken();
          globalSecondaryIndexDescription.setIndexStatus(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("ProvisionedThroughput", targetDepth)) {
          context.nextToken();
          globalSecondaryIndexDescription.setProvisionedThroughput(
              ProvisionedThroughputDescriptionJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("IndexSizeBytes", targetDepth)) {
          context.nextToken();
          globalSecondaryIndexDescription.setIndexSizeBytes(
              LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("ItemCount", targetDepth)) {
          context.nextToken();
          globalSecondaryIndexDescription.setItemCount(
              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 globalSecondaryIndexDescription;
  }
  public DescribeCacheResult unmarshall(JsonUnmarshallerContext context) throws Exception {
    DescribeCacheResult describeCacheResult = new DescribeCacheResult();

    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("GatewayARN", targetDepth)) {
          context.nextToken();
          describeCacheResult.setGatewayARN(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("DiskIds", targetDepth)) {
          describeCacheResult.setDiskIds(
              new ListUnmarshaller<String>(StringJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
        if (context.testExpression("CacheAllocatedInBytes", targetDepth)) {
          context.nextToken();
          describeCacheResult.setCacheAllocatedInBytes(
              LongJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("CacheUsedPercentage", targetDepth)) {
          context.nextToken();
          describeCacheResult.setCacheUsedPercentage(
              DoubleJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("CacheDirtyPercentage", targetDepth)) {
          context.nextToken();
          describeCacheResult.setCacheDirtyPercentage(
              DoubleJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("CacheHitPercentage", targetDepth)) {
          context.nextToken();
          describeCacheResult.setCacheHitPercentage(
              DoubleJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("CacheMissPercentage", targetDepth)) {
          context.nextToken();
          describeCacheResult.setCacheMissPercentage(
              DoubleJsonUnmarshaller.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 describeCacheResult;
  }