private Broadcaster createBroadcaster(Class<? extends Broadcaster> c, Object id)
      throws BroadcasterCreationException {
    try {
      Broadcaster b =
          c.getConstructor(String.class, AtmosphereConfig.class).newInstance(id.toString(), config);
      InjectorProvider.getInjector().inject(b);

      if (b.getBroadcasterConfig() == null) {
        b.setBroadcasterConfig(
            new BroadcasterConfig(config.framework().broadcasterFilters, config));
      }

      b.setBroadcasterLifeCyclePolicy(policy);
      if (DefaultBroadcaster.class.isAssignableFrom(clazz)) {
        DefaultBroadcaster.class.cast(b).start();
      }

      for (BroadcasterListener l : broadcasterListeners) {
        b.addBroadcasterListener(l);
      }
      notifyOnPostCreate(b);
      return b;
    } catch (Throwable t) {
      throw new BroadcasterCreationException(t);
    }
  }
  @Test
  public void testEmptyDestroy() throws IOException, ServletException {
    Broadcaster b = framework.getBroadcasterFactory().lookup(B.class, "/test", true);
    b.setBroadcasterLifeCyclePolicy(BroadcasterLifeCyclePolicy.EMPTY_DESTROY);
    AR ah = new AR();

    framework.addAtmosphereHandler("/*", ah, b).init();
    AtmosphereRequest request =
        new AtmosphereRequestImpl.Builder().pathInfo("/a").method("GET").build();
    framework.doCometSupport(request, AtmosphereResponseImpl.newInstance());
    b.removeAtmosphereResource(ah.resource);

    assertFalse(B.class.cast(b).releaseExternalResources.get());
    assertTrue(B.class.cast(b).destroy.get());
  }