class TransportWriteThrottle implements TransportThrottle {

    @Override
    public void install( Channel channel )
    {
        ThrottleLock lock = lockSupplier.get();

        channel.attr( LOCK_KEY ).set( lock );
        channel.config().setWriteBufferWaterMark( new WriteBufferWaterMark( lowWaterMark, highWaterMark ) );
        channel.pipeline().addLast( listener );
    }

    public  TransportWriteThrottle( int lowWaterMark, int highWaterMark, Clock clock, Duration maxLockDuration );
    public  TransportWriteThrottle( int lowWaterMark, int highWaterMark, Clock clock, Duration maxLockDuration, Supplier<ThrottleLock> lockSupplier );

}