public void addWatchExpression(@NotNull XExpression expression, int index, final boolean navigateToWatchNode, boolean noDuplicates) {
    ThreadingAssertions.assertEventDispatchThread();
    XDebugSession session = getSession(getTree());
    boolean found = false;
    if (noDuplicates) {
      for (WatchNode child : myRootNode.getWatchChildren()) {
        if (child.getExpression().equals(expression)) {
          TreeUtil.selectNode(getTree(), child);
          found = true;
        }
      }
    }
    if (!found) {
      myRootNode.addWatchExpression(session != null ? session.getCurrentStackFrame() : null, expression, index, navigateToWatchNode);
      updateSessionData();
    }
    if (navigateToWatchNode && session != null) {
      XDebugSessionTab.showWatchesView((XDebugSessionImpl)session);
    }
  }
public void addWatchExpression(@NotNull XExpression expression, int index, final boolean navigateToWatchNode, boolean noDuplicates)