@Nullable
 private TreePath findOption(@NotNull Object nodeObject, @NotNull DescriptorMatcher matcher) {
   for (int i = 0; i < myTreeModel.getChildCount(nodeObject); i++) {
     Object childObject = myTreeModel.getChild(nodeObject, i);
     if (childObject instanceof MyTreeNode) {
       Object data = ((MyTreeNode) childObject).getUserObject();
       if (matcher.matches(data)) {
         return new TreePath(myTreeModel.getPathToRoot((MyTreeNode) childObject));
       }
     }
     TreePath pathInChild = findOption(childObject, matcher);
     if (pathInChild != null) return pathInChild;
   }
   return null;
 }