@SuppressWarnings("unchecked")
  private void doneRefresh() {
    refreshState = null;
    CometClientTransportWrapper temp = primaryTransport;
    primaryTransport = refreshTransport;
    refreshTransport = temp;

    listener.onAfterRefresh();

    if (refreshQueue != null) {
      if (refreshQueue.size() > 0) {
        GWT.log("CometClient: pushing queued messages");
      }
      for (Object object : refreshQueue) {
        if (object == REFRESH) {
          doOnRefresh(primaryTransport);
        } else if (object == DISCONNECT) {
          doOnDisconnected(primaryTransport);
        } else {
          doOnMessage((List<?>) object, primaryTransport);
        }
      }
      refreshQueue.clear();
    }
  }
 private void doOnConnected(
     int heartbeat, int connectionID, CometClientTransportWrapper transport) {
   if (refreshState != null) {
     if (transport == refreshTransport) {
       if (refreshState == RefreshState.PRIMARY_DISCONNECTED) {
         doneRefresh();
       } else if (refreshState == RefreshState.CONNECTING) {
         primaryTransport.disconnect();
         doneRefresh();
       } else {
         throw new IllegalStateException("Unexpected refresh state");
       }
     } else {
       // refreshed connection after connection failed
       if (refreshState != RefreshState.CONNECTING) {
         throw new IllegalStateException("Unexpected refresh state");
       }
       refreshState = null;
       listener.onAfterRefresh();
     }
   } else {
     listener.onConnected(heartbeat, connectionID);
   }
 }