@Override
      public void contextAction(@NotNull SuspendContextImpl suspendContext) {
        try {
          if (dialog.isDisposed()) {
            return;
          }

          EvaluationContextImpl evaluationContext = new EvaluationContextImpl(suspendContext, suspendContext.getFrameProxy());
          MemoryAgent memoryAgent = MemoryAgent.get(evaluationContext);
          if (memoryAgent.isDisabled()) {
            dialog.setAgentCouldntBeLoadedMessage();
            return;
          }

          Disposer.register(dialog.getDisposable(), () -> memoryAgent.cancelAction());
          memoryAgent.setProgressIndicator(dialog.createProgressIndicator());
          MemoryAgentActionResult<Pair<long[], ObjectReference[]>> result = memoryAgent.estimateObjectSize(
            evaluationContext, reference, Registry.get("debugger.memory.agent.action.timeout").asInteger()
          );

          if (dialog.isDisposed()) {
            return;
          }

          interpretResult(result, dialog);
        }
        catch (EvaluateException e) {
          XDebuggerManagerImpl.getNotificationGroup().createNotification(JavaDebuggerBundle.message("action.failed"), NotificationType.ERROR);
        }
      }
@Override
      public void contextAction(@NotNull SuspendContextImpl suspendContext)