class AbstractClientConnection {

    @VisibleForTesting
    final OptionalLong checkTimeout(final long now) {
        lock.lock();
        try {
            return lockedCheckTimeout(now);
        } finally {
            lock.unlock();
        }
    }

    private  AbstractClientConnection(final AbstractClientConnection<T> oldConn, final TransmitQueue newQueue,
            final String backendName);
      AbstractClientConnection(final ClientActorContext context, final Long cookie, final String backendName,
            final int queueDepth);
      AbstractClientConnection(final AbstractClientConnection<T> oldConn);
      AbstractClientConnection(final AbstractClientConnection<T> oldConn, final T newBackend,
            final int queueDepth);

}