@Override
    public void listClientVersions(String organizationId, String clientId, int page, int pageSize, IAsyncResultHandler<List<String>> handler) {
        // For now, ignore paging, but it's there for future. Would need to ensure stable ordering.
        List<String> res = map.values().stream()
                .filter(entity -> entity instanceof Client)
                .map(entity -> (Client) entity)
                .filter(client -> client.getOrganizationId().equals(organizationId) && client.getClientId().equals(clientId))
                .map(Client::getVersion)
                .distinct()
                .collect(Collectors.toList());
        handler.handle(AsyncResultImpl.create(res));
    }
@see io.apiman.gateway.engine.IRegistry#getContract(java.lang.String, java.lang.String, java.lang.String, java.lang.String, io.apiman.gateway.engine.async.IAsyncResultHandler)
gateway/engine/core/src/main/java/io/apiman/gateway/engine/impl/InMemoryRegistry.java