List<BreakpointItem> (boolean traverse) { TreePath[] selectionPaths = myTreeView.getSelectionPaths(); if (selectionPaths == null || selectionPaths.length == 0) return Collections.emptyList(); final ArrayList<BreakpointItem> list = new ArrayList<>(); for (TreePath selectionPath : selectionPaths) { TreeNode startNode = (TreeNode)selectionPath.getLastPathComponent(); if (traverse) { TreeUtil.treeNodeTraverser(startNode).traverse(TreeTraversal.PRE_ORDER_DFS).processEach(node -> { if (node instanceof BreakpointItemNode) { list.add(((BreakpointItemNode)node).getBreakpointItem()); } return true; }); } else { if (startNode instanceof BreakpointItemNode) { list.add(((BreakpointItemNode)startNode).getBreakpointItem()); } } } return list; }