class CachedLibrarian implements ConnectionLibrarian<CachedConnection> {

    @Override
    public CachedConnection checkOut(final String username, final String password, final URI serverAddress) {
        final String id = idGenerator.buildKey(username, password, serverAddress);
        return retrieveCachedConnection(id, new UserPasswordCreator(username, password, serverAddress, this));
    }

    public  CachedLibrarian(final IdentifierGenerator idGenerator, final Cache cache);

}