@NotNull
  private static CompletableFuture<List<NodeRenderer>> getApplicableRenderers(List<JavaValue> values, DebugProcessImpl process) {
    List<CompletableFuture<List<NodeRenderer>>> futures = new ArrayList<>(values.size());
    for (JavaValue value : values) {
      if (value instanceof JavaReferringObjectsValue) { // disable for any referrers at all
        return CompletableFuture.completedFuture(Collections.emptyList());
      }
      ValueDescriptorImpl valueDescriptor = value.getDescriptor();
      if (!valueDescriptor.isValueValid()) {
        return CompletableFuture.completedFuture(Collections.emptyList());
      }
      futures.add(process.getApplicableRenderers(valueDescriptor.getType()));
    }

    return CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).thenApply(__ -> {
      List<NodeRenderer> res = null;
      for (CompletableFuture<List<NodeRenderer>> future : futures) {
        List<NodeRenderer> list = future.join();
        if (res == null) {
          res = list;
        }
        else {
          res.retainAll(list);
        }
      }
      return ContainerUtil.notNullize(res);
    });
  }
@NotNull
  private static CompletableFuture<List<NodeRenderer>> getApplicableRenderers(List<JavaValue> values, DebugProcessImpl process)