protected void assertFrameworkEvent(
     int type, Bundle bundle, Class<? extends Throwable> expectedThrowable) throws Exception {
   FrameworkEvent event = (FrameworkEvent) waitForEvent(frameworkEvents, type);
   log.debug("frameworkEvents=" + frameworkEvents);
   assertNotNull("Event not null", event);
   frameworkEvents.remove(event);
   assertEquals(
       ConstantsHelper.frameworkEvent(type), ConstantsHelper.frameworkEvent(event.getType()));
   Throwable t = event.getThrowable();
   if (expectedThrowable == null) {
     if (t != null) {
       log.error("Unexpected error in Framework event: ", t);
       fail("Unexpected throwable: " + t);
     }
   } else {
     String message =
         expectedThrowable.getSimpleName() + " is assignable from " + t.getClass().getSimpleName();
     assertTrue(message, expectedThrowable.isAssignableFrom(t.getClass()));
   }
   assertEquals(bundle, event.getSource());
   assertEquals(bundle, event.getBundle());
 }