class AbstractConfig {

    public Map<String, Object> originalsWithPrefix(String prefix) {
        Map<String, Object> result = new RecordingMap<>();
        for (Map.Entry<String, ?> entry : originals.entrySet()) {
            if (entry.getKey()
                     .startsWith(prefix) && entry.getKey()
                                                 .length() > prefix.length()) {
                result.put(entry.getKey()
                                .substring(prefix.length()), entry.getValue());
            }
        }
        return result;
    }

    @SuppressWarnings("unchecked") public  AbstractConfig(ConfigDef definition, Map<?, ?> originals, boolean doLog);
    public  AbstractConfig(ConfigDef definition, Map<?, ?> originals);
    public  AbstractConfig(Map<String, Object> parsedConfig);

}