@NotNull
  private static Value callMethod(@NotNull EvaluationContextImpl evaluationContext,
                                  @NotNull ClassType proxyType,
                                  @NotNull String methodName,
                                  @NotNull ObjectReference cancellationFileName,
                                  @NotNull ObjectReference progressFileName,
                                  @NotNull LongValue timeoutInMillis,
                                  @NotNull List<? extends Value> args) throws EvaluateException {

    DebuggerManagerThreadImpl.assertIsManagerThread();
    long start = System.currentTimeMillis();
    List<Method> methods = DebuggerUtilsEx.declaredMethodsByName(proxyType, methodName);
    if (methods.isEmpty()) {
      throw EvaluateExceptionUtil.createEvaluateException("Could not find method with such name: " + methodName);
    }
    if (methods.size() > 1) {
      throw EvaluateExceptionUtil.createEvaluateException("Too many methods \"" + methodName + "\" found. Count: " + methods.size());
    }

    Method method = methods.get(0);
    Value result = evaluationContext
      .computeAndKeep(() -> {
        DebugProcessImpl debugProcess = evaluationContext.getDebugProcess();
        ObjectReference proxyInstance = getProxyInstance(
          evaluationContext, proxyType, cancellationFileName, progressFileName, timeoutInMillis
        );
        return debugProcess.invokeInstanceMethod(
          evaluationContext, proxyInstance, method, args, ObjectReference.INVOKE_SINGLE_THREADED
        );
      });

    LOG.info("Memory agent's method \"" + methodName + "\" took " + (System.currentTimeMillis() - start) + " ms");
    return result;
  }
@NotNull
  private static Value callMethod(@NotNull EvaluationContextImpl evaluationContext,
                                  @NotNull ClassType proxyType,
                                  @NotNull String methodName,
                                  @NotNull ObjectReference cancellationFileName,
                                  @NotNull ObjectReference progressFileName,
                                  @NotNull LongValue timeoutInMillis,
                                  @NotNull List<? extends Value> args)