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

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

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

      if (xmlEvent.isAttribute() || xmlEvent.isStartElement()) {
        if (context.testExpression("InstanceGroupId", targetDepth)) {
          instanceGroupDetail.setInstanceGroupId(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("Name", targetDepth)) {
          instanceGroupDetail.setName(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("Market", targetDepth)) {
          instanceGroupDetail.setMarket(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("InstanceRole", targetDepth)) {
          instanceGroupDetail.setInstanceRole(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("BidPrice", targetDepth)) {
          instanceGroupDetail.setBidPrice(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("InstanceType", targetDepth)) {
          instanceGroupDetail.setInstanceType(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("InstanceRequestCount", targetDepth)) {
          instanceGroupDetail.setInstanceRequestCount(
              IntegerStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("InstanceRunningCount", targetDepth)) {
          instanceGroupDetail.setInstanceRunningCount(
              IntegerStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("State", targetDepth)) {
          instanceGroupDetail.setState(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("LastStateChangeReason", targetDepth)) {
          instanceGroupDetail.setLastStateChangeReason(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("CreationDateTime", targetDepth)) {
          instanceGroupDetail.setCreationDateTime(
              DateStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("StartDateTime", targetDepth)) {
          instanceGroupDetail.setStartDateTime(
              DateStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("ReadyDateTime", targetDepth)) {
          instanceGroupDetail.setReadyDateTime(
              DateStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
        if (context.testExpression("EndDateTime", targetDepth)) {
          instanceGroupDetail.setEndDateTime(
              DateStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return instanceGroupDetail;
        }
      }
    }
  }
  public InstanceGroupDetail unmarshall(JsonUnmarshallerContext context) throws Exception {
    InstanceGroupDetail instanceGroupDetail = new InstanceGroupDetail();

    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("InstanceGroupId", targetDepth)) {
          context.nextToken();
          instanceGroupDetail.setInstanceGroupId(
              context.getUnmarshaller(String.class).unmarshall(context));
        }
        if (context.testExpression("Name", targetDepth)) {
          context.nextToken();
          instanceGroupDetail.setName(context.getUnmarshaller(String.class).unmarshall(context));
        }
        if (context.testExpression("Market", targetDepth)) {
          context.nextToken();
          instanceGroupDetail.setMarket(context.getUnmarshaller(String.class).unmarshall(context));
        }
        if (context.testExpression("InstanceRole", targetDepth)) {
          context.nextToken();
          instanceGroupDetail.setInstanceRole(
              context.getUnmarshaller(String.class).unmarshall(context));
        }
        if (context.testExpression("BidPrice", targetDepth)) {
          context.nextToken();
          instanceGroupDetail.setBidPrice(
              context.getUnmarshaller(String.class).unmarshall(context));
        }
        if (context.testExpression("InstanceType", targetDepth)) {
          context.nextToken();
          instanceGroupDetail.setInstanceType(
              context.getUnmarshaller(String.class).unmarshall(context));
        }
        if (context.testExpression("InstanceRequestCount", targetDepth)) {
          context.nextToken();
          instanceGroupDetail.setInstanceRequestCount(
              context.getUnmarshaller(Integer.class).unmarshall(context));
        }
        if (context.testExpression("InstanceRunningCount", targetDepth)) {
          context.nextToken();
          instanceGroupDetail.setInstanceRunningCount(
              context.getUnmarshaller(Integer.class).unmarshall(context));
        }
        if (context.testExpression("State", targetDepth)) {
          context.nextToken();
          instanceGroupDetail.setState(context.getUnmarshaller(String.class).unmarshall(context));
        }
        if (context.testExpression("LastStateChangeReason", targetDepth)) {
          context.nextToken();
          instanceGroupDetail.setLastStateChangeReason(
              context.getUnmarshaller(String.class).unmarshall(context));
        }
        if (context.testExpression("CreationDateTime", targetDepth)) {
          context.nextToken();
          instanceGroupDetail.setCreationDateTime(
              context.getUnmarshaller(java.util.Date.class).unmarshall(context));
        }
        if (context.testExpression("StartDateTime", targetDepth)) {
          context.nextToken();
          instanceGroupDetail.setStartDateTime(
              context.getUnmarshaller(java.util.Date.class).unmarshall(context));
        }
        if (context.testExpression("ReadyDateTime", targetDepth)) {
          context.nextToken();
          instanceGroupDetail.setReadyDateTime(
              context.getUnmarshaller(java.util.Date.class).unmarshall(context));
        }
        if (context.testExpression("EndDateTime", targetDepth)) {
          context.nextToken();
          instanceGroupDetail.setEndDateTime(
              context.getUnmarshaller(java.util.Date.class).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 instanceGroupDetail;
  }