### Question:
DeferringLockClient implements Locks.Client { @Override public void stop() { stopped = true; clientDelegate.stop(); } DeferringLockClient( Locks.Client clientDelegate ); @Override void acquireShared( LockTracer tracer, ResourceType resourceType, long... resourceIds ); @Override void acquireExclusive( LockTracer tracer, ResourceType resourceType, long... resourceIds ); @Override boolean tryExclusiveLock( ResourceType resourceType, long resourceId ); @Override boolean trySharedLock( ResourceType resourceType, long resourceId ); @Override boolean reEnterShared( ResourceType resourceType, long resourceId ); @Override boolean reEnterExclusive( ResourceType resourceType, long resourceId ); @Override void releaseShared( ResourceType resourceType, long... resourceIds ); @Override void releaseExclusive( ResourceType resourceType, long... resourceIds ); @Override void prepare(); @Override void stop(); @Override void close(); @Override int getLockSessionId(); @Override Stream<? extends ActiveLock> activeLocks(); @Override long activeLockCount();  }### Answer:
@Test public void shouldStopUnderlyingClient() { Locks.Client actualClient = mock( Locks.Client.class ); DeferringLockClient client = new DeferringLockClient( actualClient ); client.stop(); verify( actualClient ).stop(); }