void (@NotNull PackagingElementType<?> type) { PackagingElementNode<?> parentNode = getParentNode(myTree.getSelection()); final PackagingElement<?> element = parentNode.getFirstElement(); final CompositePackagingElement<?> parent; if (element instanceof CompositePackagingElement<?>) { parent = (CompositePackagingElement<?>)element; } else { parent = getArtifact().getRootElement(); parentNode = getRootNode(); } if (!checkCanAdd(parent, parentNode)) return; final List<? extends PackagingElement<?>> children = type.chooseAndCreate(myContext, getArtifact(), parent); final PackagingElementNode<?> finalParentNode = parentNode; editLayout(() -> { CompositePackagingElement<?> actualParent = getOrCreateModifiableParent(parent, finalParentNode); for (PackagingElement<?> child : children) { actualParent.addOrFindChild(child); } }); updateAndSelect(parentNode, children); }