class ConfigNode {

    protected ConfigNode addChild(ConfigNode child) {
        getNode(child.key).ifPresent(ConfigNode::remove);
        childNodes.put(child.key, child);
        nodeOrder.add(child.key);
        child.updateParent(this);
        return child;
    }

    public  ConfigNode(String key, ConfigNode parent, String value);

}