class JobRuntimePredictionSelectors {

    public static Map<String, JobRuntimePredictionSelector> aboveThresholds(Config config, Map<String, String> selectionMetadata) {
        String[] keys = Iterators.toArray(config.getKeys(), String.class);
        Set<String> cellNames = PropertiesExt.getRootNames(Arrays.asList(keys), 1);

        Map<String, Config> subConfigs = new HashMap<>();
        cellNames.forEach(cell -> subConfigs.put(cell, config.getPrefixedView(cell)));

        Map<String, String> allMetadata = appendSelectorInfoIfMissing(
                selectionMetadata,
                () -> String.format("aboveThresholds[%s], createdAt: %s",
                        new TreeSet<>(subConfigs.keySet()).stream().map(k -> k + '=' + Archaius2Ext.toString(subConfigs.get(k))).collect(Collectors.joining(", ")) + ']',
                        DateTimeExt.toLocalDateTimeString(System.currentTimeMillis())
                )
        );

        return CollectionsExt.mapValues(subConfigs, cell -> aboveThreshold(cell, allMetadata), HashMap::new);
    }

    private  JobRuntimePredictionSelectors();

}