class ModelImplementationProviderFinderImpl implements ModelImplementationProviderFinder {

    @Override
    @SuppressWarnings("rawtypes")
    public <T extends Model, E extends KiePMMLModel> List<ModelImplementationProvider<T, E>> getImplementations(boolean refresh) {
        logger.debug("getImplementations {}", refresh);
        List<ModelImplementationProvider<T, E>> toReturn = new ArrayList<>();
        Iterator<ModelImplementationProvider> providers = getProviders(refresh);
        providers.forEachRemaining(toReturn::add);
        logger.debug("toReturn {} {}", toReturn, toReturn.size());
        if (logger.isTraceEnabled()) {
            toReturn.forEach(provider -> logger.trace("{} : {}", provider.getPMMLModelType(), provider));
        }
        return toReturn;
    }

}