@Before
 public void setUp() {
   ApplicationStatus.destroyForJUnitTests();
   LifecycleHook.destroyInstanceForJUnitTests();
   mMockClient = mock(GoogleApiClient.class);
 }
 @After
 public void tearDown() {
   ApplicationStatus.destroyForJUnitTests();
   LifecycleHook.destroyInstanceForJUnitTests();
 }
  public LifecycleHook unmarshall(StaxUnmarshallerContext context) throws Exception {
    LifecycleHook lifecycleHook = new LifecycleHook();
    int originalDepth = context.getCurrentDepth();
    int targetDepth = originalDepth + 1;

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

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

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

        if (context.testExpression("LifecycleHookName", targetDepth)) {
          lifecycleHook.setLifecycleHookName(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("AutoScalingGroupName", targetDepth)) {
          lifecycleHook.setAutoScalingGroupName(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("LifecycleTransition", targetDepth)) {
          lifecycleHook.setLifecycleTransition(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("NotificationTargetARN", targetDepth)) {
          lifecycleHook.setNotificationTargetARN(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("RoleARN", targetDepth)) {
          lifecycleHook.setRoleARN(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("NotificationMetadata", targetDepth)) {
          lifecycleHook.setNotificationMetadata(
              StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("HeartbeatTimeout", targetDepth)) {
          lifecycleHook.setHeartbeatTimeout(
              IntegerStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("GlobalTimeout", targetDepth)) {
          lifecycleHook.setGlobalTimeout(IntegerStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }

        if (context.testExpression("DefaultResult", targetDepth)) {
          lifecycleHook.setDefaultResult(StringStaxUnmarshaller.getInstance().unmarshall(context));
          continue;
        }
      } else if (xmlEvent.isEndElement()) {
        if (context.getCurrentDepth() < originalDepth) {
          return lifecycleHook;
        }
      }
    }
  }