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;
        }
      }
    }
  }