@NotNull
  public MemoryAgentActionResult<Pair<long[], long[]>> getShallowAndRetainedSizesByObjects(@NotNull EvaluationContextImpl evaluationContext,
                                                                                           @NotNull List<ObjectReference> references,
                                                                                           long timeoutInMillis) throws EvaluateException {
    ArrayReference array = wrapWithArray(evaluationContext, references);
    Value result = callMethod(
      evaluationContext,
      GET_SHALLOW_AND_RETAINED_SIZE_BY_OBJECTS,
      timeoutInMillis, array
    );
    Pair<MemoryAgentActionResult.ErrorCode, Value> errCodeAndResult = ErrorCodeParser.INSTANCE.parse(result);
    if (errCodeAndResult.getFirst() != MemoryAgentActionResult.ErrorCode.OK) {
      return new MemoryAgentActionResult<>(new Pair<>(new long[0], new long[0]), errCodeAndResult.getFirst());
    }
    else {
      return getShallowAndRetainedSizesResult(errCodeAndResult);
    }
  }
@NotNull
  public MemoryAgentActionResult<Pair<long[], long[]>> getShallowAndRetainedSizesByObjects(@NotNull EvaluationContextImpl evaluationContext,
                                                                                           @NotNull List<ObjectReference> references,
                                                                                           long timeoutInMillis)