public synchronized String getDebugInfo() {
   StringBuilder builder = new StringBuilder();
   builder.append("Hosts: ").append(StringUtils.join(hosts, ", ")).append("\n");
   builder.append("Num connections per host: ").append(numConnections).append("\n");
   builder.append("\n");
   for (String host : hosts) {
     builder.append(host).append(": ");
     builder.append(keyedConnectionPool.getNumActive(host)).append(" active; ");
     builder.append(keyedConnectionPool.getNumIdle(host)).append(" idle.\n");
   }
   builder.append("\n");
   builder.append("Total: ");
   builder.append(this.getNumActive()).append(" active; ");
   builder.append(this.getNumIdle()).append(" idle.\n");
   builder.append("\n");
   builder.append("Queue: ").append(StringUtils.join(hostQueue.toArray(), ", "));
   return builder.toString();
 }
 @Override
 public int getNumIdle() throws UnsupportedOperationException {
   return keyedConnectionPool.getNumIdle();
 }