testDispose() {
    mockHTML5LocalStorageCtor().$returns(mockHtml5LocalStorage);
    mockHTML5LocalStorageCtor().$returns(mockHtml5LocalStorage);
    const mockStorage = mockControl.createLooseMock(StorageStorage);

    const mockStorageCtor =
        mockControl.createConstructorMock(goog.storage, 'Storage');

    mockStorageCtor(mockHtml5LocalStorage).$returns(mockStorage);
    mockStorageCtor(mockHtml5LocalStorage).$returns(mockStorage);

    if (isIe8) {
      mockStorage.remove(BroadcastPubSub.IE8_EVENTS_KEY_);
    }

    mockControl.$replayAll();
    broadcastPubSub = new BroadcastPubSub();
    log.setLevel(broadcastPubSub.logger_, Level.OFF);

    const broadcastPubSubExtra = new BroadcastPubSub();
    assertArrayEquals(
        BroadcastPubSub.instances_, [broadcastPubSub, broadcastPubSubExtra]);

    assertFalse(
        'BroadcastChannel extra instance must not have been disposed of',
        broadcastPubSubExtra.isDisposed());
    broadcastPubSubExtra.dispose();
    assertTrue(
        'BroadcastChannel extra instance must have been disposed of',
        broadcastPubSubExtra.isDisposed());
    assertFalse(
        'BroadcastChannel instance must not have been disposed of',
        broadcastPubSub.isDisposed());

    assertArrayEquals(BroadcastPubSub.instances_, [broadcastPubSub]);
    assertFalse(
        'BroadcastChannel instance must not have been disposed of',
        broadcastPubSub.isDisposed());
    broadcastPubSub.dispose();
    assertTrue(
        'BroadcastChannel instance must have been disposed of',
        broadcastPubSub.isDisposed());
    assertArrayEquals(BroadcastPubSub.instances_, []);
    mockControl.$verifyAll();
  }
Verify we cleanup after ourselves.
     @suppress {checkTypes,missingProperties,visibility} suppression added to
     enable type checking