def add_entry(property, block, subtree)
        if property.is_a?(Hash)
          property.each do |key, val|
            subtree[key] = add_entry(val, block, subtree.fetch(key, {}))
          end