code: public static void dispose(JDBC4ClientConnection connection) {
          synchronized (ClientConnections) {
              connection.dispose();
              if (connection.users == 0)
                  ClientConnections.remove(connection.key);
          }
      }
docs: Releases a connection. This method (or connection.close() must be called by the user thread
  once the connection is no longer needed to release it back into the pool where other threads
  can pick it up. Failure to do so will cause a memory leak as more and more new connections
  will be created, never to be released and reused. The pool itself will run the logic to
  decide whether the actual underlying connection should be kept alive (if other threads are
  using it), or closed for good (if the calling thread was the last user of that connection).
  
  @param connection
  the connection to release back into the pool.