void (final CompositePackagingElementType<?> type, final CompositePackagingElement<?> parent, final List<? extends PackagingElement<?>> selected, LayoutTreeComponent treeComponent) { if (myArtifactEditor.isDisposed() || selected.isEmpty()) return; final Project project = myArtifactEditor.getContext().getProject(); final String elementName = ContainerUtil.getFirstItem(selected, null).createPresentation(myArtifactEditor.getContext()).getPresentableName(); final String baseName = PathUtil.suggestFileName(elementName); final CompositePackagingElement<?> newParent = type.createComposite(parent, baseName, myArtifactEditor.getContext()); if (newParent != null) { treeComponent.editLayout(() -> { for (PackagingElement<?> element : selected) { newParent.addOrFindChild(ArtifactUtil.copyWithChildren(element, project)); } for (PackagingElement<?> element : selected) { parent.removeChild(element); } parent.addOrFindChild(newParent); }); treeComponent.rebuildTree(); } }