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

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

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

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

        if (context.testExpression("bytesConverted", targetDepth)) {
          importVolumeTaskDetails.setBytesConverted(
              LongStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("availabilityZone", targetDepth)) {
          importVolumeTaskDetails.setAvailabilityZone(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

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

        if (context.testExpression("image", targetDepth)) {
          importVolumeTaskDetails.setImage(
              DiskImageDescriptionStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("volume", targetDepth)) {
          importVolumeTaskDetails.setVolume(
              DiskImageVolumeDescriptionStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return importVolumeTaskDetails;
        }
      }
    }
  }
  public DiskImageDescription unmarshall(StaxUnmarshallerContext context) throws Exception {
    DiskImageDescription diskImageDescription = new DiskImageDescription();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

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

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

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

        if (context.testExpression("format", targetDepth)) {
          diskImageDescription.setFormat(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("size", targetDepth)) {
          diskImageDescription.setSize(LongStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("importManifestUrl", targetDepth)) {
          diskImageDescription.setImportManifestUrl(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("checksum", targetDepth)) {
          diskImageDescription.setChecksum(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return diskImageDescription;
        }
      }
    }
  }
  public VolumeDetail unmarshall(StaxUnmarshallerContext context) throws Exception {
    VolumeDetail volumeDetail = new VolumeDetail();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

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

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

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

        if (context.testExpression("size", targetDepth)) {
          volumeDetail.setSize(LongStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return volumeDetail;
        }
      }
    }
  }
  public ReservedInstancesOffering unmarshall(StaxUnmarshallerContext context) throws Exception {
    ReservedInstancesOffering reservedInstancesOffering = new ReservedInstancesOffering();
    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 reservedInstancesOffering;

      if (xmlEvent == XmlPullParser.START_TAG) {
        if (context.testExpression("reservedInstancesOfferingId", targetDepth)) {
          reservedInstancesOffering.setReservedInstancesOfferingId(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("instanceType", targetDepth)) {
          reservedInstancesOffering.setInstanceType(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("availabilityZone", targetDepth)) {
          reservedInstancesOffering.setAvailabilityZone(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("duration", targetDepth)) {
          reservedInstancesOffering.setDuration(
              LongStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("usagePrice", targetDepth)) {
          reservedInstancesOffering.setUsagePrice(
              FloatStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("fixedPrice", targetDepth)) {
          reservedInstancesOffering.setFixedPrice(
              FloatStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("productDescription", targetDepth)) {
          reservedInstancesOffering.setProductDescription(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("instanceTenancy", targetDepth)) {
          reservedInstancesOffering.setInstanceTenancy(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("currencyCode", targetDepth)) {
          reservedInstancesOffering.setCurrencyCode(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("offeringType", targetDepth)) {
          reservedInstancesOffering.setOfferingType(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("recurringCharges/item", targetDepth)) {
          reservedInstancesOffering
              .getRecurringCharges()
              .add(RecurringChargeStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("marketplace", targetDepth)) {
          reservedInstancesOffering.setMarketplace(
              BooleanStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("pricingDetailsSet/item", targetDepth)) {
          reservedInstancesOffering
              .getPricingDetails()
              .add(PricingDetailStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent == XmlPullParser.END_TAG) {
        if (context.getCurrentDepth() < originalDepth) {
          return reservedInstancesOffering;
        }
      }
    }
  }
  public ReservedInstancesOffering unmarshall(StaxUnmarshallerContext context) throws Exception {
    ReservedInstancesOffering reservedInstancesOffering = new ReservedInstancesOffering();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

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

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

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

        if (context.testExpression("reservedInstancesOfferingId", targetDepth)) {
          reservedInstancesOffering.setReservedInstancesOfferingId(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("instanceType", targetDepth)) {
          reservedInstancesOffering.setInstanceType(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("availabilityZone", targetDepth)) {
          reservedInstancesOffering.setAvailabilityZone(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("duration", targetDepth)) {
          reservedInstancesOffering.setDuration(
              LongStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("usagePrice", targetDepth)) {
          reservedInstancesOffering.setUsagePrice(
              FloatStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("fixedPrice", targetDepth)) {
          reservedInstancesOffering.setFixedPrice(
              FloatStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("productDescription", targetDepth)) {
          reservedInstancesOffering.setProductDescription(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("instanceTenancy", targetDepth)) {
          reservedInstancesOffering.setInstanceTenancy(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("currencyCode", targetDepth)) {
          reservedInstancesOffering.setCurrencyCode(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("offeringType", targetDepth)) {
          reservedInstancesOffering.setOfferingType(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("recurringCharges", targetDepth)) {
          reservedInstancesOffering.withRecurringCharges(new ArrayList<RecurringCharge>());
          continue;
        }

        if (context.testExpression("recurringCharges/item", targetDepth)) {
          reservedInstancesOffering.withRecurringCharges(
              RecurringChargeStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("marketplace", targetDepth)) {
          reservedInstancesOffering.setMarketplace(
              BooleanStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("pricingDetailsSet", targetDepth)) {
          reservedInstancesOffering.withPricingDetails(new ArrayList<PricingDetail>());
          continue;
        }

        if (context.testExpression("pricingDetailsSet/item", targetDepth)) {
          reservedInstancesOffering.withPricingDetails(
              PricingDetailStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("offeringClass", targetDepth)) {
          reservedInstancesOffering.setOfferingClass(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("scope", targetDepth)) {
          reservedInstancesOffering.setScope(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return reservedInstancesOffering;
        }
      }
    }
  }