public DescribeAvailabilityZonesResult unmarshall(StaxUnmarshallerContext context)
      throws Exception {
    DescribeAvailabilityZonesResult describeAvailabilityZonesResult =
        new DescribeAvailabilityZonesResult();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 1;

    while (true) {
      int xmlEvent = context.nextEvent();
      if (xmlEvent == XmlPullParser.END_DOCUMENT) return describeAvailabilityZonesResult;

      if (xmlEvent == XmlPullParser.START_TAG) {
        if (context.testExpression("availabilityZoneInfo/item", targetDepth)) {
          describeAvailabilityZonesResult
              .getAvailabilityZones()
              .add(AvailabilityZoneStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent == XmlPullParser.END_TAG) {
        if (context.getCurrentDepth() < originalDepth) {
          return describeAvailabilityZonesResult;
        }
      }
    }
  }
  public CreateNetworkAclResult unmarshall(StaxUnmarshallerContext context) throws Exception {
    CreateNetworkAclResult createNetworkAclResult = new CreateNetworkAclResult();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 1;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return createNetworkAclResult;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {

        if (context.testExpression("networkAcl", targetDepth)) {
          createNetworkAclResult.setNetworkAcl(
              NetworkAclStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return createNetworkAclResult;
        }
      }
    }
  }
  public ModifyCacheParameterGroupResult unmarshall(StaxUnmarshallerContext context)
      throws Exception {
    ModifyCacheParameterGroupResult modifyCacheParameterGroupResult =
        new ModifyCacheParameterGroupResult();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 2;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return modifyCacheParameterGroupResult;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {

        if (context.testExpression("CacheParameterGroupName", targetDepth)) {
          modifyCacheParameterGroupResult.setCacheParameterGroupName(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return modifyCacheParameterGroupResult;
        }
      }
    }
  }
  public GetPlatformApplicationAttributesResult unmarshall(StaxUnmarshallerContext context)
      throws Exception {
    GetPlatformApplicationAttributesResult getPlatformApplicationAttributesResult =
        new GetPlatformApplicationAttributesResult();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 2;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return getPlatformApplicationAttributesResult;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {
        if (context.testExpression("Attributes/entry", targetDepth)) {
          Entry<String, String> entry =
              AttributesMapEntryUnmarshaller.getInstance().unmarshall(context);
          getPlatformApplicationAttributesResult
              .getAttributes()
              .put(entry.getKey(), entry.getValue());
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return getPlatformApplicationAttributesResult;
        }
      }
    }
  }
  public DescribeVolumesResult unmarshall(StaxUnmarshallerContext context) throws Exception {
    DescribeVolumesResult describeVolumesResult = new DescribeVolumesResult();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 1;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return describeVolumesResult;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {
        if (context.testExpression("volumeSet/item", targetDepth)) {
          describeVolumesResult
              .getVolumes()
              .add(VolumeStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return describeVolumesResult;
        }
      }
    }
  }
    @Override
    public Entry<String, String> unmarshall(StaxUnmarshallerContext context) throws Exception {
      int originalDepth = context.getCurrentDepth();
      int targetDepth = originalDepth + 1;

      MapEntry<String, String> entry = new MapEntry<String, String>();

      while (true) {
        int xmlEvent = context.nextEvent();
        if (xmlEvent == XmlPullParser.END_DOCUMENT) return entry;

        if (xmlEvent == XmlPullParser.START_TAG) {
          if (context.testExpression("key", targetDepth)) {
            entry.setKey(StringStaxUnmarshaller.getInstance().unmarshall(context));
            continue;
          }
          if (context.testExpression("value", targetDepth)) {
            entry.setValue(StringStaxUnmarshaller.getInstance().unmarshall(context));
            continue;
          }
        } else if (xmlEvent == XmlPullParser.END_TAG) {
          if (context.getCurrentDepth() < originalDepth) return entry;
        }
      }
    }
  public EstimateTemplateCostResult unmarshall(StaxUnmarshallerContext context) throws Exception {
    EstimateTemplateCostResult estimateTemplateCostResult = new EstimateTemplateCostResult();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 2;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return estimateTemplateCostResult;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {

        if (context.testExpression("Url", targetDepth)) {
          estimateTemplateCostResult.setUrl(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return estimateTemplateCostResult;
        }
      }
    }
  }
  public CreateQueueResult unmarshall(StaxUnmarshallerContext context) throws Exception {
    CreateQueueResult createQueueResult = new CreateQueueResult();

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

    if (context.isStartOfDocument()) targetDepth += 2;

    while (true) {
      int xmlEvent = context.nextEvent();
      if (xmlEvent == XmlPullParser.END_DOCUMENT) break;

      if (xmlEvent == XmlPullParser.START_TAG) {
        if (context.testExpression("QueueUrl", targetDepth)) {
          createQueueResult.setQueueUrl(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent == XmlPullParser.END_TAG) {
        if (context.getCurrentDepth() < originalDepth) {
          break;
        }
      }
    }
    return createQueueResult;
  }
  public DecodeAuthorizationMessageResult unmarshall(StaxUnmarshallerContext context)
      throws Exception {
    DecodeAuthorizationMessageResult decodeAuthorizationMessageResult =
        new DecodeAuthorizationMessageResult();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 2;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return decodeAuthorizationMessageResult;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {

        if (context.testExpression("DecodedMessage", targetDepth)) {
          decodeAuthorizationMessageResult.setDecodedMessage(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return decodeAuthorizationMessageResult;
        }
      }
    }
  }
  public Topic unmarshall(StaxUnmarshallerContext context) throws Exception {
    Topic topic = new Topic();

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

    if (context.isStartOfDocument()) targetDepth += 2;

    while (true) {
      int xmlEvent = context.nextEvent();
      if (xmlEvent == XmlPullParser.END_DOCUMENT) break;

      if (xmlEvent == XmlPullParser.START_TAG) {
        if (context.testExpression("TopicArn", targetDepth)) {
          topic.setTopicArn(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent == XmlPullParser.END_TAG) {
        if (context.getCurrentDepth() < originalDepth) {
          break;
        }
      }
    }
    return topic;
  }
  public BuildSuggestersResult unmarshall(StaxUnmarshallerContext context) throws Exception {
    BuildSuggestersResult buildSuggestersResult = new BuildSuggestersResult();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 2;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return buildSuggestersResult;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {

        if (context.testExpression("FieldNames/member", targetDepth)) {
          buildSuggestersResult.withFieldNames(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return buildSuggestersResult;
        }
      }
    }
  }
  public VerifyDomainIdentityResult unmarshall(StaxUnmarshallerContext context) throws Exception {
    VerifyDomainIdentityResult verifyDomainIdentityResult = new VerifyDomainIdentityResult();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 2;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return verifyDomainIdentityResult;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {

        if (context.testExpression("VerificationToken", targetDepth)) {
          verifyDomainIdentityResult.setVerificationToken(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return verifyDomainIdentityResult;
        }
      }
    }
  }
  public VerifyDomainDkimResult unmarshall(StaxUnmarshallerContext context) throws Exception {
    VerifyDomainDkimResult verifyDomainDkimResult = new VerifyDomainDkimResult();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 2;

    while (true) {
      int xmlEvent = context.nextEvent();
      if (xmlEvent == XmlPullParser.END_DOCUMENT) return verifyDomainDkimResult;

      if (xmlEvent == XmlPullParser.START_TAG) {
        if (context.testExpression("DkimTokens/member", targetDepth)) {
          verifyDomainDkimResult
              .getDkimTokens()
              .add(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent == XmlPullParser.END_TAG) {
        if (context.getCurrentDepth() < originalDepth) {
          return verifyDomainDkimResult;
        }
      }
    }
  }
  public EnableVpcClassicLinkDnsSupportResult unmarshall(StaxUnmarshallerContext context)
      throws Exception {
    EnableVpcClassicLinkDnsSupportResult enableVpcClassicLinkDnsSupportResult =
        new EnableVpcClassicLinkDnsSupportResult();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 1;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return enableVpcClassicLinkDnsSupportResult;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {

        if (context.testExpression("return", targetDepth)) {
          enableVpcClassicLinkDnsSupportResult.setReturn(
              BooleanStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return enableVpcClassicLinkDnsSupportResult;
        }
      }
    }
  }
  public GetEndpointAttributesResult unmarshall(StaxUnmarshallerContext context) throws Exception {
    GetEndpointAttributesResult getEndpointAttributesResult = new GetEndpointAttributesResult();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 2;

    while (true) {
      int xmlEvent = context.nextEvent();
      if (xmlEvent == XmlPullParser.END_DOCUMENT) return getEndpointAttributesResult;

      if (xmlEvent == XmlPullParser.START_TAG) {
        if (context.testExpression("Attributes/entry", targetDepth)) {
          Entry<String, String> entry =
              AttributesMapEntryUnmarshaller.getInstance().unmarshall(context);
          getEndpointAttributesResult.getAttributes().put(entry.getKey(), entry.getValue());
          continue;
        }
      } else if (xmlEvent == XmlPullParser.END_TAG) {
        if (context.getCurrentDepth() < originalDepth) {
          return getEndpointAttributesResult;
        }
      }
    }
  }
    @Override
    public Entry<String, String> unmarshall(StaxUnmarshallerContext context) throws Exception {
      int originalDepth = context.getCurrentDepth();
      int targetDepth = originalDepth + 1;

      MapEntry<String, String> entry = new MapEntry<String, String>();

      while (true) {
        XMLEvent xmlEvent = context.nextEvent();
        if (xmlEvent.isEndDocument()) return entry;

        if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {
          if (context.testExpression("key", targetDepth)) {
            entry.setKey(StringStaxUnmarshaller.getInstance().unmarshall(context));
            continue;
          }
          if (context.testExpression("value", targetDepth)) {
            entry.setValue(StringStaxUnmarshaller.getInstance().unmarshall(context));
            continue;
          }
        } else if (xmlEvent.isEndElement()) {
          if (context.getCurrentDepth() < originalDepth) return entry;
        }
      }
    }
  public ListDeadLetterSourceQueuesResult unmarshall(StaxUnmarshallerContext context)
      throws Exception {
    ListDeadLetterSourceQueuesResult listDeadLetterSourceQueuesResult =
        new ListDeadLetterSourceQueuesResult();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 2;

    while (true) {
      int xmlEvent = context.nextEvent();
      if (xmlEvent == XmlPullParser.END_DOCUMENT) return listDeadLetterSourceQueuesResult;

      if (xmlEvent == XmlPullParser.START_TAG) {
        if (context.testExpression("QueueUrl", targetDepth)) {
          listDeadLetterSourceQueuesResult
              .getQueueUrls()
              .add(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent == XmlPullParser.END_TAG) {
        if (context.getCurrentDepth() < originalDepth) {
          return listDeadLetterSourceQueuesResult;
        }
      }
    }
  }
  public OpenIDConnectProviderListEntry unmarshall(StaxUnmarshallerContext context)
      throws Exception {
    OpenIDConnectProviderListEntry openIDConnectProviderListEntry =
        new OpenIDConnectProviderListEntry();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 1;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return openIDConnectProviderListEntry;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {

        if (context.testExpression("Arn", targetDepth)) {
          openIDConnectProviderListEntry.setArn(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return openIDConnectProviderListEntry;
        }
      }
    }
  }
  public GetTrafficPolicyResult unmarshall(StaxUnmarshallerContext context) throws Exception {
    GetTrafficPolicyResult getTrafficPolicyResult = new GetTrafficPolicyResult();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 1;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return getTrafficPolicyResult;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {

        if (context.testExpression("TrafficPolicy", targetDepth)) {
          getTrafficPolicyResult.setTrafficPolicy(
              TrafficPolicyStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return getTrafficPolicyResult;
        }
      }
    }
  }
  public ImportVolumeResult unmarshall(StaxUnmarshallerContext context) throws Exception {
    ImportVolumeResult importVolumeResult = new ImportVolumeResult();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 1;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return importVolumeResult;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {

        if (context.testExpression("conversionTask", targetDepth)) {
          importVolumeResult.setConversionTask(
              ConversionTaskStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return importVolumeResult;
        }
      }
    }
  }
  public GetHealthCheckStatusResult unmarshall(StaxUnmarshallerContext context) throws Exception {
    GetHealthCheckStatusResult getHealthCheckStatusResult = new GetHealthCheckStatusResult();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 1;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return getHealthCheckStatusResult;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {

        if (context.testExpression("HealthCheckObservations/HealthCheckObservation", targetDepth)) {
          getHealthCheckStatusResult.withHealthCheckObservations(
              HealthCheckObservationStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return getHealthCheckStatusResult;
        }
      }
    }
  }
  public ListDeadLetterSourceQueuesResult unmarshall(StaxUnmarshallerContext context)
      throws Exception {
    ListDeadLetterSourceQueuesResult listDeadLetterSourceQueuesResult =
        new ListDeadLetterSourceQueuesResult();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 2;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return listDeadLetterSourceQueuesResult;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {

        if (context.testExpression("QueueUrl", targetDepth)) {
          listDeadLetterSourceQueuesResult.withQueueUrls(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return listDeadLetterSourceQueuesResult;
        }
      }
    }
  }
  public DescribeLoadBalancerPoliciesResult unmarshall(StaxUnmarshallerContext context)
      throws Exception {
    DescribeLoadBalancerPoliciesResult describeLoadBalancerPoliciesResult =
        new DescribeLoadBalancerPoliciesResult();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 2;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return describeLoadBalancerPoliciesResult;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {
        if (context.testExpression("PolicyDescriptions/member", targetDepth)) {
          describeLoadBalancerPoliciesResult
              .getPolicyDescriptions()
              .add(PolicyDescriptionStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return describeLoadBalancerPoliciesResult;
        }
      }
    }
  }
  public EnvironmentResourceDescription unmarshall(StaxUnmarshallerContext context)
      throws Exception {
    EnvironmentResourceDescription environmentResourceDescription =
        new EnvironmentResourceDescription();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 2;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return environmentResourceDescription;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {
        if (context.testExpression("EnvironmentName", targetDepth)) {
          environmentResourceDescription.setEnvironmentName(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("AutoScalingGroups/member", targetDepth)) {
          environmentResourceDescription
              .getAutoScalingGroups()
              .add(AutoScalingGroupStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("Instances/member", targetDepth)) {
          environmentResourceDescription
              .getInstances()
              .add(InstanceStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("LaunchConfigurations/member", targetDepth)) {
          environmentResourceDescription
              .getLaunchConfigurations()
              .add(LaunchConfigurationStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("LoadBalancers/member", targetDepth)) {
          environmentResourceDescription
              .getLoadBalancers()
              .add(LoadBalancerStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("Triggers/member", targetDepth)) {
          environmentResourceDescription
              .getTriggers()
              .add(TriggerStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return environmentResourceDescription;
        }
      }
    }
  }
  public ClusterSubnetGroup unmarshall(StaxUnmarshallerContext context) throws Exception {
    ClusterSubnetGroup clusterSubnetGroup = new ClusterSubnetGroup();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 3;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return clusterSubnetGroup;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {

        if (context.testExpression("ClusterSubnetGroupName", targetDepth)) {
          clusterSubnetGroup.setClusterSubnetGroupName(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("Description", targetDepth)) {
          clusterSubnetGroup.setDescription(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("VpcId", targetDepth)) {
          clusterSubnetGroup.setVpcId(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("SubnetGroupStatus", targetDepth)) {
          clusterSubnetGroup.setSubnetGroupStatus(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("Subnets/Subnet", targetDepth)) {
          clusterSubnetGroup.withSubnets(SubnetStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("Tags/Tag", targetDepth)) {
          clusterSubnetGroup.withTags(TagStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return clusterSubnetGroup;
        }
      }
    }
  }
  public Credentials unmarshall(StaxUnmarshallerContext context) throws Exception {
    Credentials credentials = new Credentials();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 2;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return credentials;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {
        if (context.testExpression("AccessKeyId", targetDepth)) {
          credentials.setAccessKeyId(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("SecretAccessKey", targetDepth)) {
          credentials.setSecretAccessKey(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("SessionToken", targetDepth)) {
          credentials.setSessionToken(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("Expiration", targetDepth)) {
          credentials.setExpiration(DateStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return credentials;
        }
      }
    }
  }
  public ValidationMessage unmarshall(StaxUnmarshallerContext context) throws Exception {
    ValidationMessage validationMessage = new ValidationMessage();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 2;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return validationMessage;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {
        if (context.testExpression("Message", targetDepth)) {
          validationMessage.setMessage(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("Severity", targetDepth)) {
          validationMessage.setSeverity(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("Namespace", targetDepth)) {
          validationMessage.setNamespace(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("OptionName", targetDepth)) {
          validationMessage.setOptionName(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return validationMessage;
        }
      }
    }
  }
  public TagDescription unmarshall(StaxUnmarshallerContext context) throws Exception {
    TagDescription tagDescription = new TagDescription();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 1;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return tagDescription;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {
        if (context.testExpression("resourceId", targetDepth)) {
          tagDescription.setResourceId(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("resourceType", targetDepth)) {
          tagDescription.setResourceType(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("key", targetDepth)) {
          tagDescription.setKey(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("value", targetDepth)) {
          tagDescription.setValue(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return tagDescription;
        }
      }
    }
  }
  public Role unmarshall(StaxUnmarshallerContext context) throws Exception {
    Role role = new Role();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 1;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return role;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {

        if (context.testExpression("Path", targetDepth)) {
          role.setPath(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("RoleName", targetDepth)) {
          role.setRoleName(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("RoleId", targetDepth)) {
          role.setRoleId(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("Arn", targetDepth)) {
          role.setArn(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("CreateDate", targetDepth)) {
          role.setCreateDate(DateStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("AssumeRolePolicyDocument", targetDepth)) {
          role.setAssumeRolePolicyDocument(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return role;
        }
      }
    }
  }
  public ChangeBatchRecord unmarshall(StaxUnmarshallerContext context) throws Exception {
    ChangeBatchRecord changeBatchRecord = new ChangeBatchRecord();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

    if (context.isStartOfDocument()) targetDepth += 1;

    while (true) {
      XMLEvent xmlEvent = context.nextEvent();
      if (xmlEvent.isEndDocument()) return changeBatchRecord;

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {

        if (context.testExpression("Id", targetDepth)) {
          changeBatchRecord.setId(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("SubmittedAt", targetDepth)) {
          changeBatchRecord.setSubmittedAt(DateStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("Status", targetDepth)) {
          changeBatchRecord.setStatus(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("Comment", targetDepth)) {
          changeBatchRecord.setComment(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("Submitter", targetDepth)) {
          changeBatchRecord.setSubmitter(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("Changes/Change", targetDepth)) {
          changeBatchRecord.withChanges(ChangeStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return changeBatchRecord;
        }
      }
    }
  }