@Override
  public void actionPerformed(@NotNull final AnActionEvent e) {
    DebuggerTreeNodeImpl[] selectedNode = getSelectedNodes(e.getDataContext());
    if (selectedNode == null) {
      return;
    }
    final DebuggerContextImpl debuggerContext = getDebuggerContext(e.getDataContext());
    final DebugProcessImpl debugProcess = debuggerContext.getDebugProcess();

    for (final DebuggerTreeNodeImpl debuggerTreeNode : selectedNode) {
      ThreadDescriptorImpl threadDescriptor = ((ThreadDescriptorImpl)debuggerTreeNode.getDescriptor());
      final ThreadReferenceProxyImpl thread = threadDescriptor.getThreadReference();

      if (!threadDescriptor.isFrozen()) {
        DebuggerManagerThreadImpl debuggerManagerThread = debugProcess.getManagerThread();
        debuggerManagerThread.schedule(new DebuggerCommandImpl() {
          @Override
          protected void action() {
            debuggerManagerThread.invoke(debugProcess.createFreezeThreadCommand(thread));
            ApplicationManager.getApplication().invokeLater(() -> debuggerTreeNode.calcValue());
          }
        });
      }
    }
  }
@Override
  public void actionPerformed(@NotNull final AnActionEvent e)