public NetworkInterface unmarshall(JsonUnmarshallerContext context) throws Exception {
    NetworkInterface networkInterface = new NetworkInterface();

    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("Ipv4Address", targetDepth)) {
          context.nextToken();
          networkInterface.setIpv4Address(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("MacAddress", targetDepth)) {
          context.nextToken();
          networkInterface.setMacAddress(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Ipv6Address", targetDepth)) {
          context.nextToken();
          networkInterface.setIpv6Address(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getCurrentDepth() <= originalDepth) break;
      }

      token = context.nextToken();
    }

    return networkInterface;
  }
  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 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 CompleteMultipartUploadResult unmarshall(JsonUnmarshallerContext context)
      throws Exception {
    CompleteMultipartUploadResult completeMultipartUploadResult =
        new CompleteMultipartUploadResult();

    if (context.isStartOfDocument()) {
      if (context.getHeader("Location") != null) {
        context.setCurrentHeader("Location");
        completeMultipartUploadResult.setLocation(
            StringJsonUnmarshaller.getInstance().unmarshall(context));
      }

      if (context.getHeader("x-amz-sha256-tree-hash") != null) {
        context.setCurrentHeader("x-amz-sha256-tree-hash");
        completeMultipartUploadResult.setChecksum(
            StringJsonUnmarshaller.getInstance().unmarshall(context));
      }

      if (context.getHeader("x-amz-archive-id") != null) {
        context.setCurrentHeader("x-amz-archive-id");
        completeMultipartUploadResult.setArchiveId(
            StringJsonUnmarshaller.getInstance().unmarshall(context));
      }
    }

    return completeMultipartUploadResult;
  }
  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 CertificateDescription unmarshall(JsonUnmarshallerContext context) throws Exception {
    CertificateDescription certificateDescription = new CertificateDescription();

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

      if (name.equals("certificateArn")) {
        certificateDescription.setCertificateArn(
            StringJsonUnmarshaller.getInstance().unmarshall(context));
      } else if (name.equals("certificateId")) {
        certificateDescription.setCertificateId(
            StringJsonUnmarshaller.getInstance().unmarshall(context));
      } else if (name.equals("status")) {
        certificateDescription.setStatus(StringJsonUnmarshaller.getInstance().unmarshall(context));
      } else if (name.equals("certificatePem")) {
        certificateDescription.setCertificatePem(
            StringJsonUnmarshaller.getInstance().unmarshall(context));
      } else if (name.equals("ownedBy")) {
        certificateDescription.setOwnedBy(StringJsonUnmarshaller.getInstance().unmarshall(context));
      } else if (name.equals("creationDate")) {
        certificateDescription.setCreationDate(
            DateJsonUnmarshaller.getInstance().unmarshall(context));
      } else if (name.equals("lastModifiedDate")) {
        certificateDescription.setLastModifiedDate(
            DateJsonUnmarshaller.getInstance().unmarshall(context));
      } else {
        reader.skipValue();
      }
    }
    reader.endObject();

    return certificateDescription;
  }
  public StopDeploymentResult unmarshall(JsonUnmarshallerContext context) throws Exception {
    StopDeploymentResult stopDeploymentResult = new StopDeploymentResult();

    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();
          stopDeploymentResult.setStatus(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("statusMessage", targetDepth)) {
          context.nextToken();
          stopDeploymentResult.setStatusMessage(
              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 stopDeploymentResult;
  }
  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 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 Preset unmarshall(JsonUnmarshallerContext context) throws Exception {
    Preset preset = new Preset();

    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("Id", targetDepth)) {
          context.nextToken();
          preset.setId(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Name", targetDepth)) {
          context.nextToken();
          preset.setName(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Description", targetDepth)) {
          context.nextToken();
          preset.setDescription(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Container", targetDepth)) {
          context.nextToken();
          preset.setContainer(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Audio", targetDepth)) {
          context.nextToken();
          preset.setAudio(AudioParametersJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Video", targetDepth)) {
          context.nextToken();
          preset.setVideo(VideoParametersJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Thumbnails", targetDepth)) {
          context.nextToken();
          preset.setThumbnails(ThumbnailsJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Type", targetDepth)) {
          context.nextToken();
          preset.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 preset;
  }
  public Recipes unmarshall(JsonUnmarshallerContext context) throws Exception {
    Recipes recipes = new Recipes();

    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("Setup", targetDepth)) {
          context.nextToken();
          recipes.setSetup(
              new ListUnmarshaller<String>(StringJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
        if (context.testExpression("Configure", targetDepth)) {
          context.nextToken();
          recipes.setConfigure(
              new ListUnmarshaller<String>(StringJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
        if (context.testExpression("Deploy", targetDepth)) {
          context.nextToken();
          recipes.setDeploy(
              new ListUnmarshaller<String>(StringJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
        if (context.testExpression("Undeploy", targetDepth)) {
          context.nextToken();
          recipes.setUndeploy(
              new ListUnmarshaller<String>(StringJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
        if (context.testExpression("Shutdown", targetDepth)) {
          context.nextToken();
          recipes.setShutdown(
              new ListUnmarshaller<String>(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 recipes;
  }
  public JobFlowExecutionStatusDetail unmarshall(JsonUnmarshallerContext context) throws Exception {
    JobFlowExecutionStatusDetail jobFlowExecutionStatusDetail = new JobFlowExecutionStatusDetail();

    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("State", targetDepth)) {
          context.nextToken();
          jobFlowExecutionStatusDetail.setState(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("CreationDateTime", targetDepth)) {
          context.nextToken();
          jobFlowExecutionStatusDetail.setCreationDateTime(
              DateJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("StartDateTime", targetDepth)) {
          context.nextToken();
          jobFlowExecutionStatusDetail.setStartDateTime(
              DateJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("ReadyDateTime", targetDepth)) {
          context.nextToken();
          jobFlowExecutionStatusDetail.setReadyDateTime(
              DateJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("EndDateTime", targetDepth)) {
          context.nextToken();
          jobFlowExecutionStatusDetail.setEndDateTime(
              DateJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("LastStateChangeReason", targetDepth)) {
          context.nextToken();
          jobFlowExecutionStatusDetail.setLastStateChangeReason(
              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 jobFlowExecutionStatusDetail;
  }
  public QueryResult unmarshall(JsonUnmarshallerContext context) throws Exception {
    QueryResult queryResult = new QueryResult();

    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("Items", targetDepth)) {
          context.nextToken();
          queryResult.setItems(
              new ListUnmarshaller<java.util.Map<String, AttributeValue>>(
                      new MapUnmarshaller<String, AttributeValue>(
                          StringJsonUnmarshaller.getInstance(),
                          AttributeValueJsonUnmarshaller.getInstance()))
                  .unmarshall(context));
        }
        if (context.testExpression("Count", targetDepth)) {
          context.nextToken();
          queryResult.setCount(IntegerJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("ScannedCount", targetDepth)) {
          context.nextToken();
          queryResult.setScannedCount(IntegerJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("LastEvaluatedKey", targetDepth)) {
          context.nextToken();
          queryResult.setLastEvaluatedKey(
              new MapUnmarshaller<String, AttributeValue>(
                      StringJsonUnmarshaller.getInstance(),
                      AttributeValueJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
        if (context.testExpression("ConsumedCapacity", targetDepth)) {
          context.nextToken();
          queryResult.setConsumedCapacity(
              ConsumedCapacityJsonUnmarshaller.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 queryResult;
  }
  public RedshiftDestinationUpdate unmarshall(JsonUnmarshallerContext context) throws Exception {
    RedshiftDestinationUpdate redshiftDestinationUpdate = new RedshiftDestinationUpdate();

    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("RoleARN", targetDepth)) {
          context.nextToken();
          redshiftDestinationUpdate.setRoleARN(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("ClusterJDBCURL", targetDepth)) {
          context.nextToken();
          redshiftDestinationUpdate.setClusterJDBCURL(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("CopyCommand", targetDepth)) {
          context.nextToken();
          redshiftDestinationUpdate.setCopyCommand(
              CopyCommandJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Username", targetDepth)) {
          context.nextToken();
          redshiftDestinationUpdate.setUsername(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Password", targetDepth)) {
          context.nextToken();
          redshiftDestinationUpdate.setPassword(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("S3Update", targetDepth)) {
          context.nextToken();
          redshiftDestinationUpdate.setS3Update(
              S3DestinationUpdateJsonUnmarshaller.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 redshiftDestinationUpdate;
  }
  public VolumeConfiguration unmarshall(JsonUnmarshallerContext context) throws Exception {
    VolumeConfiguration volumeConfiguration = new VolumeConfiguration();

    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("MountPoint", targetDepth)) {
          context.nextToken();
          volumeConfiguration.setMountPoint(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("RaidLevel", targetDepth)) {
          context.nextToken();
          volumeConfiguration.setRaidLevel(
              IntegerJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("NumberOfDisks", targetDepth)) {
          context.nextToken();
          volumeConfiguration.setNumberOfDisks(
              IntegerJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Size", targetDepth)) {
          context.nextToken();
          volumeConfiguration.setSize(IntegerJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("VolumeType", targetDepth)) {
          context.nextToken();
          volumeConfiguration.setVolumeType(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Iops", targetDepth)) {
          context.nextToken();
          volumeConfiguration.setIops(IntegerJsonUnmarshaller.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 volumeConfiguration;
  }
  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 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 StackSummary unmarshall(JsonUnmarshallerContext context) throws Exception {
    StackSummary stackSummary = new StackSummary();

    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("StackId", targetDepth)) {
          context.nextToken();
          stackSummary.setStackId(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Name", targetDepth)) {
          context.nextToken();
          stackSummary.setName(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Arn", targetDepth)) {
          context.nextToken();
          stackSummary.setArn(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("LayersCount", targetDepth)) {
          context.nextToken();
          stackSummary.setLayersCount(IntegerJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("AppsCount", targetDepth)) {
          context.nextToken();
          stackSummary.setAppsCount(IntegerJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("InstancesCount", targetDepth)) {
          context.nextToken();
          stackSummary.setInstancesCount(
              InstancesCountJsonUnmarshaller.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 stackSummary;
  }
  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 PipelineDescription unmarshall(JsonUnmarshallerContext context) throws Exception {
    PipelineDescription pipelineDescription = new PipelineDescription();

    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("pipelineId", targetDepth)) {
          context.nextToken();
          pipelineDescription.setPipelineId(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("name", targetDepth)) {
          context.nextToken();
          pipelineDescription.setName(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("fields", targetDepth)) {
          context.nextToken();
          pipelineDescription.setFields(
              new ListUnmarshaller<Field>(FieldJsonUnmarshaller.getInstance()).unmarshall(context));
        }
        if (context.testExpression("description", targetDepth)) {
          context.nextToken();
          pipelineDescription.setDescription(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("tags", targetDepth)) {
          context.nextToken();
          pipelineDescription.setTags(
              new ListUnmarshaller<Tag>(TagJsonUnmarshaller.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 pipelineDescription;
  }
  public UpdateDeploymentResult unmarshall(JsonUnmarshallerContext context) throws Exception {
    UpdateDeploymentResult updateDeploymentResult = new UpdateDeploymentResult();

    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();
          updateDeploymentResult.setId(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("description", targetDepth)) {
          context.nextToken();
          updateDeploymentResult.setDescription(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("createdDate", targetDepth)) {
          context.nextToken();
          updateDeploymentResult.setCreatedDate(
              DateJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("apiSummary", targetDepth)) {
          context.nextToken();
          updateDeploymentResult.setApiSummary(
              new MapUnmarshaller<String, java.util.Map<String, MethodSnapshot>>(
                      StringJsonUnmarshaller.getInstance(),
                      new MapUnmarshaller<String, MethodSnapshot>(
                          StringJsonUnmarshaller.getInstance(),
                          MethodSnapshotJsonUnmarshaller.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 updateDeploymentResult;
  }
  public ScheduleActivityTaskFailedEventAttributes unmarshall(JsonUnmarshallerContext context)
      throws Exception {
    ScheduleActivityTaskFailedEventAttributes scheduleActivityTaskFailedEventAttributes =
        new ScheduleActivityTaskFailedEventAttributes();

    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("activityType", targetDepth)) {
          context.nextToken();
          scheduleActivityTaskFailedEventAttributes.setActivityType(
              ActivityTypeJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("activityId", targetDepth)) {
          context.nextToken();
          scheduleActivityTaskFailedEventAttributes.setActivityId(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("cause", targetDepth)) {
          context.nextToken();
          scheduleActivityTaskFailedEventAttributes.setCause(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("decisionTaskCompletedEventId", targetDepth)) {
          context.nextToken();
          scheduleActivityTaskFailedEventAttributes.setDecisionTaskCompletedEventId(
              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 scheduleActivityTaskFailedEventAttributes;
  }
  public Thumbnails unmarshall(JsonUnmarshallerContext context) throws Exception {
    Thumbnails thumbnails = new Thumbnails();

    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("Format", targetDepth)) {
          context.nextToken();
          thumbnails.setFormat(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Interval", targetDepth)) {
          context.nextToken();
          thumbnails.setInterval(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Resolution", targetDepth)) {
          context.nextToken();
          thumbnails.setResolution(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("AspectRatio", targetDepth)) {
          context.nextToken();
          thumbnails.setAspectRatio(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("MaxWidth", targetDepth)) {
          context.nextToken();
          thumbnails.setMaxWidth(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("MaxHeight", targetDepth)) {
          context.nextToken();
          thumbnails.setMaxHeight(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("SizingPolicy", targetDepth)) {
          context.nextToken();
          thumbnails.setSizingPolicy(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("PaddingPolicy", targetDepth)) {
          context.nextToken();
          thumbnails.setPaddingPolicy(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 thumbnails;
  }
  public WebACL unmarshall(JsonUnmarshallerContext context) throws Exception {
    WebACL webACL = new WebACL();

    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("WebACLId", targetDepth)) {
          context.nextToken();
          webACL.setWebACLId(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Name", targetDepth)) {
          context.nextToken();
          webACL.setName(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("MetricName", targetDepth)) {
          context.nextToken();
          webACL.setMetricName(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("DefaultAction", targetDepth)) {
          context.nextToken();
          webACL.setDefaultAction(WafActionJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("Rules", targetDepth)) {
          context.nextToken();
          webACL.setRules(
              new ListUnmarshaller<ActivatedRule>(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 webACL;
  }
  public Shard unmarshall(JsonUnmarshallerContext context) throws Exception {
    Shard shard = new Shard();

    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("ShardId", targetDepth)) {
          context.nextToken();
          shard.setShardId(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("ParentShardId", targetDepth)) {
          context.nextToken();
          shard.setParentShardId(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("AdjacentParentShardId", targetDepth)) {
          context.nextToken();
          shard.setAdjacentParentShardId(StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("HashKeyRange", targetDepth)) {
          context.nextToken();
          shard.setHashKeyRange(HashKeyRangeJsonUnmarshaller.getInstance().unmarshall(context));
        }
        if (context.testExpression("SequenceNumberRange", targetDepth)) {
          context.nextToken();
          shard.setSequenceNumberRange(
              SequenceNumberRangeJsonUnmarshaller.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 shard;
  }
  public WorkflowExecutionInfos unmarshall(JsonUnmarshallerContext context) throws Exception {
    WorkflowExecutionInfos workflowExecutionInfos = new WorkflowExecutionInfos();

    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("executionInfos", targetDepth)) {
          workflowExecutionInfos.setExecutionInfos(
              new ListUnmarshaller<WorkflowExecutionInfo>(
                      WorkflowExecutionInfoJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
        if (context.testExpression("nextPageToken", targetDepth)) {
          context.nextToken();
          workflowExecutionInfos.setNextPageToken(
              StringJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getCurrentDepth() <= originalDepth) break;
      }

      token = context.nextToken();
    }

    return workflowExecutionInfos;
  }
  public PutItemResult unmarshall(JsonUnmarshallerContext context) throws Exception {
    PutItemResult putItemResult = new PutItemResult();

    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("Attributes", targetDepth)) {
          putItemResult.setAttributes(
              new MapUnmarshaller<String, AttributeValue>(
                      StringJsonUnmarshaller.getInstance(),
                      AttributeValueJsonUnmarshaller.getInstance())
                  .unmarshall(context));
        }
        if (context.testExpression("ConsumedCapacityUnits", targetDepth)) {
          context.nextToken();
          putItemResult.setConsumedCapacityUnits(
              DoubleJsonUnmarshaller.getInstance().unmarshall(context));
        }
      } else if (token == END_ARRAY || token == END_OBJECT) {
        if (context.getCurrentDepth() <= originalDepth) break;
      }
      token = context.nextToken();
    }

    return putItemResult;
  }
  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 RetrieveDomainAuthCodeResult unmarshall(JsonUnmarshallerContext context) throws Exception {
    RetrieveDomainAuthCodeResult retrieveDomainAuthCodeResult = new RetrieveDomainAuthCodeResult();

    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("AuthCode", targetDepth)) {
          context.nextToken();
          retrieveDomainAuthCodeResult.setAuthCode(
              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 retrieveDomainAuthCodeResult;
  }
  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;
  }