public ActivityTaskStatus unmarshall(JsonUnmarshallerContext context) throws Exception {
    ActivityTaskStatus activityTaskStatus = new ActivityTaskStatus();

    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("cancelRequested", targetDepth)) {
          context.nextToken();
          activityTaskStatus.setCancelRequested(
              BooleanJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getCurrentDepth() <= originalDepth) break;
      }
      token = context.nextToken();
    }

    return activityTaskStatus;
  }
  public PutPipelineDefinitionResult unmarshall(JsonUnmarshallerContext context) throws Exception {
    PutPipelineDefinitionResult putPipelineDefinitionResult = new PutPipelineDefinitionResult();

    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("validationErrors", targetDepth)) {
          putPipelineDefinitionResult.setValidationErrors(
              new ListUnmarshaller<ValidationError>(ValidationErrorJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
        if (context.testExpression("errored", targetDepth)) {
          context.nextToken();
          putPipelineDefinitionResult.setErrored(
              BooleanJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getCurrentDepth() <= originalDepth) break;
      }

      token = context.nextToken();
    }

    return putPipelineDefinitionResult;
  }
  public WorkflowExecutionCount unmarshall(JsonUnmarshallerContext context) throws Exception {
    WorkflowExecutionCount workflowExecutionCount = new WorkflowExecutionCount();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

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

    while (true) {
      if (token == null) return workflowExecutionCount;

      if (token == FIELD_NAME || token == START_OBJECT) {
        if (context.testExpression("count", targetDepth)) {
          context.nextToken();
          workflowExecutionCount.setCount(
              IntegerJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("truncated", targetDepth)) {
          context.nextToken();
          workflowExecutionCount.setTruncated(
              BooleanJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getCurrentDepth() <= originalDepth) {
          return workflowExecutionCount;
        }
      }
      token = context.nextToken();
    }
  }
  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 VolumeiSCSIAttributes unmarshall(JsonUnmarshallerContext context) throws Exception {
    VolumeiSCSIAttributes volumeiSCSIAttributes = new VolumeiSCSIAttributes();

    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("TargetARN", targetDepth)) {
          context.nextToken();
          volumeiSCSIAttributes.setTargetARN(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("NetworkInterfaceId", targetDepth)) {
          context.nextToken();
          volumeiSCSIAttributes.setNetworkInterfaceId(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("NetworkInterfacePort", targetDepth)) {
          context.nextToken();
          volumeiSCSIAttributes.setNetworkInterfacePort(
              IntegerJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("LunNumber", targetDepth)) {
          context.nextToken();
          volumeiSCSIAttributes.setLunNumber(
              IntegerJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("ChapEnabled", targetDepth)) {
          context.nextToken();
          volumeiSCSIAttributes.setChapEnabled(
              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 volumeiSCSIAttributes;
  }
  public UserProfile unmarshall(JsonUnmarshallerContext context) throws Exception {
    UserProfile userProfile = new UserProfile();

    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("IamUserArn", targetDepth)) {
          context.nextToken();
          userProfile.setIamUserArn(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Name", targetDepth)) {
          context.nextToken();
          userProfile.setName(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("SshUsername", targetDepth)) {
          context.nextToken();
          userProfile.setSshUsername(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("SshPublicKey", targetDepth)) {
          context.nextToken();
          userProfile.setSshPublicKey(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("AllowSelfManagement", targetDepth)) {
          context.nextToken();
          userProfile.setAllowSelfManagement(
              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 userProfile;
  }
  public TopicRulePayload unmarshall(JsonUnmarshallerContext context) throws Exception {
    TopicRulePayload topicRulePayload = new TopicRulePayload();

    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("sql", targetDepth)) {
          context.nextToken();
          topicRulePayload.setSql(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("description", targetDepth)) {
          context.nextToken();
          topicRulePayload.setDescription(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("actions", targetDepth)) {
          context.nextToken();
          topicRulePayload.setActions(
              new ListUnmarshaller<Action>(ActionJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
        if (context.testExpression("ruleDisabled", targetDepth)) {
          context.nextToken();
          topicRulePayload.setRuleDisabled(
              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 topicRulePayload;
  }
  public QueryObjectsResult unmarshall(JsonUnmarshallerContext context) throws Exception {
    QueryObjectsResult queryObjectsResult = new QueryObjectsResult();

    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("ids", targetDepth)) {
          context.nextToken();
          queryObjectsResult.setIds(
              new ListUnmarshaller<String>(StringJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
        if (context.testExpression("marker", targetDepth)) {
          context.nextToken();
          queryObjectsResult.setMarker(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("hasMoreResults", targetDepth)) {
          context.nextToken();
          queryObjectsResult.setHasMoreResults(
              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 queryObjectsResult;
  }
  public StreamSpecification unmarshall(JsonUnmarshallerContext context) throws Exception {
    StreamSpecification streamSpecification = new StreamSpecification();

    AwsJsonReader reader = context.getReader();
    reader.beginObject();
    while (reader.hasNext()) {
      String name = reader.nextName();

      if (name.equals("StreamEnabled")) {
        streamSpecification.setStreamEnabled(
            BooleanJsonUnmarshaller.getInstance().unmarshall(context));
      } else if (name.equals("StreamViewType")) {
        streamSpecification.setStreamViewType(
            StringJsonUnmarshaller.getInstance().unmarshall(context));
      } else {
        reader.skipValue();
      }
    }
    reader.endObject();

    return streamSpecification;
  }
  public MethodSetting unmarshall(JsonUnmarshallerContext context) throws Exception {
    MethodSetting methodSetting = new MethodSetting();

    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("metricsEnabled", targetDepth)) {
          context.nextToken();
          methodSetting.setMetricsEnabled(
              BooleanJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("loggingLevel", targetDepth)) {
          context.nextToken();
          methodSetting.setLoggingLevel(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("dataTraceEnabled", targetDepth)) {
          context.nextToken();
          methodSetting.setDataTraceEnabled(
              BooleanJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("throttlingBurstLimit", targetDepth)) {
          context.nextToken();
          methodSetting.setThrottlingBurstLimit(
              IntegerJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("throttlingRateLimit", targetDepth)) {
          context.nextToken();
          methodSetting.setThrottlingRateLimit(
              DoubleJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("cachingEnabled", targetDepth)) {
          context.nextToken();
          methodSetting.setCachingEnabled(
              BooleanJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("cacheTtlInSeconds", targetDepth)) {
          context.nextToken();
          methodSetting.setCacheTtlInSeconds(
              IntegerJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("cacheDataEncrypted", targetDepth)) {
          context.nextToken();
          methodSetting.setCacheDataEncrypted(
              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 methodSetting;
  }
  public RadiusSettings unmarshall(JsonUnmarshallerContext context) throws Exception {
    RadiusSettings radiusSettings = new RadiusSettings();

    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("RadiusServers", targetDepth)) {
          context.nextToken();
          radiusSettings.setRadiusServers(
              new ListUnmarshaller<String>(StringJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
        if (context.testExpression("RadiusPort", targetDepth)) {
          context.nextToken();
          radiusSettings.setRadiusPort(IntegerJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("RadiusTimeout", targetDepth)) {
          context.nextToken();
          radiusSettings.setRadiusTimeout(
              IntegerJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("RadiusRetries", targetDepth)) {
          context.nextToken();
          radiusSettings.setRadiusRetries(
              IntegerJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("SharedSecret", targetDepth)) {
          context.nextToken();
          radiusSettings.setSharedSecret(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("AuthenticationProtocol", targetDepth)) {
          context.nextToken();
          radiusSettings.setAuthenticationProtocol(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("DisplayLabel", targetDepth)) {
          context.nextToken();
          radiusSettings.setDisplayLabel(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("UseSameUsername", targetDepth)) {
          context.nextToken();
          radiusSettings.setUseSameUsername(
              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 radiusSettings;
  }
  public Trail unmarshall(JsonUnmarshallerContext context) throws Exception {
    Trail trail = new Trail();

    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();
          trail.setName(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("S3BucketName", targetDepth)) {
          context.nextToken();
          trail.setS3BucketName(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("S3KeyPrefix", targetDepth)) {
          context.nextToken();
          trail.setS3KeyPrefix(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("SnsTopicName", targetDepth)) {
          context.nextToken();
          trail.setSnsTopicName(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("IncludeGlobalServiceEvents", targetDepth)) {
          context.nextToken();
          trail.setIncludeGlobalServiceEvents(
              BooleanJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("IsMultiRegionTrail", targetDepth)) {
          context.nextToken();
          trail.setIsMultiRegionTrail(BooleanJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("HomeRegion", targetDepth)) {
          context.nextToken();
          trail.setHomeRegion(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("TrailARN", targetDepth)) {
          context.nextToken();
          trail.setTrailARN(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("LogFileValidationEnabled", targetDepth)) {
          context.nextToken();
          trail.setLogFileValidationEnabled(
              BooleanJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("CloudWatchLogsLogGroupArn", targetDepth)) {
          context.nextToken();
          trail.setCloudWatchLogsLogGroupArn(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("CloudWatchLogsRoleArn", targetDepth)) {
          context.nextToken();
          trail.setCloudWatchLogsRoleArn(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("KmsKeyId", targetDepth)) {
          context.nextToken();
          trail.setKmsKeyId(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 trail;
  }
  public ConfigurationRecorderStatus unmarshall(JsonUnmarshallerContext context) throws Exception {
    ConfigurationRecorderStatus configurationRecorderStatus = new ConfigurationRecorderStatus();

    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();
          configurationRecorderStatus.setName(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("lastStartTime", targetDepth)) {
          context.nextToken();
          configurationRecorderStatus.setLastStartTime(
              DateJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("lastStopTime", targetDepth)) {
          context.nextToken();
          configurationRecorderStatus.setLastStopTime(
              DateJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("recording", targetDepth)) {
          context.nextToken();
          configurationRecorderStatus.setRecording(
              BooleanJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("lastStatus", targetDepth)) {
          context.nextToken();
          configurationRecorderStatus.setLastStatus(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("lastErrorCode", targetDepth)) {
          context.nextToken();
          configurationRecorderStatus.setLastErrorCode(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("lastErrorMessage", targetDepth)) {
          context.nextToken();
          configurationRecorderStatus.setLastErrorMessage(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("lastStatusChangeTime", targetDepth)) {
          context.nextToken();
          configurationRecorderStatus.setLastStatusChangeTime(
              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 configurationRecorderStatus;
  }
  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 Method unmarshall(JsonUnmarshallerContext context) throws Exception {
    Method method = new Method();

    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("httpMethod", targetDepth)) {
          context.nextToken();
          method.setHttpMethod(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("authorizationType", targetDepth)) {
          context.nextToken();
          method.setAuthorizationType(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("apiKeyRequired", targetDepth)) {
          context.nextToken();
          method.setApiKeyRequired(BooleanJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("requestParameters", targetDepth)) {
          context.nextToken();
          method.setRequestParameters(
              new MapUnmarshaller<String, Boolean>(
                      StringJsonUnmarshaller.getInstance(), BooleanJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
        if (context.testExpression("requestModels", targetDepth)) {
          context.nextToken();
          method.setRequestModels(
              new MapUnmarshaller<String, String>(
                      StringJsonUnmarshaller.getInstance(), StringJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
        if (context.testExpression("methodResponses", targetDepth)) {
          context.nextToken();
          method.setMethodResponses(
              new MapUnmarshaller<String, MethodResponse>(
                      StringJsonUnmarshaller.getInstance(),
                      MethodResponseJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
        if (context.testExpression("methodIntegration", targetDepth)) {
          context.nextToken();
          method.setMethodIntegration(
              IntegrationJsonUnmarshaller.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 method;
  }