class ChecklistPlanner {

    static CheckSpec applyOverrides(final List<CheckSpec> checkOverrides, final CheckSpec base) {
        CheckSpec merged = base;
        LOGGER.trace("[applyOverrides] base: {}", base);
        List<CheckSpec> applicable = checkOverrides.stream().filter(base::isOverriddenBy)
                .collect(Collectors.toList());
        for (CheckSpec spec : applicable) {
            merged = spec.overlay(merged);
            LOGGER.trace("[applyOverrides] spec: {}, merged: {}", spec, merged);
        }
        return merged;
    }

    public  ChecklistPlanner(final List<String> activeChecklistIds);

}