private void insertNewChildNodes()

in src/main/java/org/apache/commons/configuration2/BaseHierarchicalConfiguration.java [601:636]


        private void insertNewChildNodes(final ImmutableNode node, final ReferenceNodeHandler refHandler) {
            final Collection<ImmutableNode> subNodes = new LinkedList<>(refHandler.getChildren(node));
            final Iterator<ImmutableNode> children = subNodes.iterator();
            ImmutableNode sibling1;
            ImmutableNode nd = null;

            while (children.hasNext()) {
                // find the next new node
                do {
                    sibling1 = nd;
                    nd = children.next();
                } while (refHandler.getReference(nd) != null && children.hasNext());

                if (refHandler.getReference(nd) == null) {
                    // find all following new nodes
                    final List<ImmutableNode> newNodes = new LinkedList<>();
                    newNodes.add(nd);
                    while (children.hasNext()) {
                        nd = children.next();
                        if (refHandler.getReference(nd) != null) {
                            break;
                        }
                        newNodes.add(nd);
                    }

                    // Insert all new nodes
                    final ImmutableNode sibling2 = refHandler.getReference(nd) == null ? null : nd;
                    for (final ImmutableNode insertNode : newNodes) {
                        if (refHandler.getReference(insertNode) == null) {
                            insert(insertNode, node, sibling1, sibling2, refHandler);
                            sibling1 = insertNode;
                        }
                    }
                }
            }
        }