public InstanceStatus unmarshall(StaxUnmarshallerContext context) throws Exception { InstanceStatus instanceStatus = new InstanceStatus(); 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 instanceStatus; if (xmlEvent == XmlPullParser.START_TAG) { if (context.testExpression("instanceId", targetDepth)) { instanceStatus.setInstanceId(StringStaxUnmarshaller.getInstance().unmarshall(context)); continue; } if (context.testExpression("availabilityZone", targetDepth)) { instanceStatus.setAvailabilityZone( StringStaxUnmarshaller.getInstance().unmarshall(context)); continue; } if (context.testExpression("eventsSet/item", targetDepth)) { instanceStatus .getEvents() .add(InstanceStatusEventStaxUnmarshaller.getInstance().unmarshall(context)); continue; } if (context.testExpression("instanceState", targetDepth)) { instanceStatus.setInstanceState( InstanceStateStaxUnmarshaller.getInstance().unmarshall(context)); continue; } if (context.testExpression("systemStatus", targetDepth)) { instanceStatus.setSystemStatus( InstanceStatusSummaryStaxUnmarshaller.getInstance().unmarshall(context)); continue; } if (context.testExpression("instanceStatus", targetDepth)) { instanceStatus.setInstanceStatus( InstanceStatusSummaryStaxUnmarshaller.getInstance().unmarshall(context)); continue; } } else if (xmlEvent == XmlPullParser.END_TAG) { if (context.getCurrentDepth() < originalDepth) { return instanceStatus; } } } }