void (@NotNull JTree tree, @NotNull DefaultMutableTreeNode root, @NotNull List<Object> pathsToExpand, @NotNull List<Object> selectionPaths, boolean storeElementsOnly) { List<TreeNode> childNodes = TreeUtil.listChildren(root); for (final Object childNode1 : childNodes) { DefaultMutableTreeNode childNode = (DefaultMutableTreeNode)childNode1; TreePath path = new TreePath(childNode.getPath()); final Object userObject = childNode.getUserObject(); if (tree.isPathSelected(path)) { if (!(userObject instanceof NodeDescriptor)) { LOG.error("Node: " + childNode + "; userObject: " + userObject + " of class " + userObject.getClass()); return; } selectionPaths.add(storeElementsOnly ? ((NodeDescriptor<?>)userObject).getElement() : path); } if (tree.isExpanded(path) || childNode.getChildCount() == 0) { pathsToExpand.add(storeElementsOnly && userObject instanceof NodeDescriptor ? ((NodeDescriptor<?>)userObject).getElement() : path); _storePaths(tree, childNode, pathsToExpand, selectionPaths, storeElementsOnly); } } }