private List<VirtualFile> getSelectedVirtualFiles(final Object tag) {
   Set<VirtualFile> files = new HashSet<VirtualFile>();
   final TreePath[] paths = getSelectionPaths();
   if (paths != null) {
     for (TreePath path : paths) {
       if (path.getPathCount() > 1) {
         ChangesBrowserNode firstNode = (ChangesBrowserNode) path.getPathComponent(1);
         if (tag == null || firstNode.getUserObject() == tag) {
           ChangesBrowserNode<?> node = (ChangesBrowserNode) path.getLastPathComponent();
           files.addAll(node.getAllFilesUnder());
         }
       }
     }
   }
   return new ArrayList<VirtualFile>(files);
 }
 protected List<VirtualFile> getSelectedObjects(final ChangesBrowserNode node) {
   return node.getAllFilesUnder();
 }