private static void checkValidObject(Path path, AbstractConfigObject reference,
            AbstractConfigObject value,
            List<ConfigException.ValidationProblem> accumulator) {
        for (Map.Entry<String, ConfigValue> entry : reference.entrySet()) {
            String key = entry.getKey();

            Path childPath;
            if (path != null)
                childPath = Path.newKey(key).prepend(path);
            else
                childPath = Path.newKey(key);

            AbstractConfigValue v = value.get(key);
            if (v == null) {
                addMissing(accumulator, entry.getValue(), childPath, value.origin());
            } else {
                checkValid(childPath, entry.getValue(), v, accumulator);
            }
        }
    }
private static void checkValidObject ( Path path , AbstractConfigObject reference , AbstractConfigObject value , List < ConfigException . ValidationProblem > accumulator ) { for ( Map . Entry < String , ConfigValue > entry : reference . entrySet ( ) ) { String key = entry . getKey ( ) ; Path childPath ; if ( path != null ) childPath = Path . newKey ( key ) . prepend ( path ) ; else childPath = Path . newKey ( key ) ; AbstractConfigValue v = value . get ( key ) ; if ( v == null ) { addMissing ( accumulator , entry . getValue ( ) , childPath , value . origin ( ) ) ; } else { checkValid ( childPath , entry . getValue ( ) , v , accumulator ) ; } } }
path is null if we're at the root