code: private void resubscribeChannels() throws InterruptedException, BitfinexClientException {
  		final Map<Integer, ChannelCallbackHandler> oldChannelIdSymbolMap = new HashMap<>();
  
  		synchronized (channelIdToHandlerMap) {
  			oldChannelIdSymbolMap.putAll(channelIdToHandlerMap);
  			channelIdToHandlerMap.clear();
  			channelIdToHandlerMap.notifyAll();
  			
  			// Implicit channel account info channel
  			channelIdToHandlerMap.put(ACCCOUNT_INFO_CHANNEL, oldChannelIdSymbolMap.get(ACCCOUNT_INFO_CHANNEL));
  		}
  		
  		// Resubscribe channels
  		for(final ChannelCallbackHandler handler : oldChannelIdSymbolMap.values()) {
  			final BitfinexStreamSymbol symbol = handler.getSymbol();
  			if(symbol instanceof BitfinexTickerSymbol) {
  				sendCommand(new SubscribeTickerCommand((BitfinexTickerSymbol) symbol));
  			} else if(symbol instanceof BitfinexExecutedTradeSymbol) {
  				sendCommand(new SubscribeTradesCommand((BitfinexExecutedTradeSymbol) symbol));
  			} else if(symbol instanceof BitfinexCandlestickSymbol) {
  				sendCommand(new SubscribeCandlesCommand((BitfinexCandlestickSymbol) symbol));
  			} else if(symbol instanceof BitfinexOrderBookSymbol) {
  				sendCommand(new SubscribeOrderbookCommand((BitfinexOrderBookSymbol) symbol));
  			} else if(symbol instanceof BitfinexAccountSymbol) {
  				// This symbol does not need to be resubscribed
  			} else {
  				logger.error("Unknown stream symbol: {}", symbol);
  			}
  		}
  		
  		waitForChannelResubscription(oldChannelIdSymbolMap);		
  	}
docs: Re-subscribe the old ticker
  @return
  @throws InterruptedException
  @throws BitfinexClientException