@NotNull
    private static Map<Value, JdiValueInfo> requestJdi(@NotNull StackFrameProxyEx proxy, @NotNull Map<Value, List<DfaVariableValue>> map)
      throws EvaluateException {
      ClassLoaderReference classLoader = proxy.getClassLoader();
      Predicate<ClassLoaderReference> classLoaderFilter = new Predicate<>() {
        private @Nullable List<ClassLoaderReference> myParentLoaders = null;

        @Override
        public boolean test(ClassLoaderReference loader) {
          if (loader == null || loader.equals(classLoader)) return true;
          return getParentLoaders().contains(loader);
        }

        @NotNull
        private List<ClassLoaderReference> getParentLoaders() {
          if (myParentLoaders == null) {
            List<ClassLoaderReference> loaders = Collections.emptyList();
            if (classLoader != null) {
              ClassType classLoaderClass = (ClassType)classLoader.referenceType();
              while (classLoaderClass != null && !"java.lang.ClassLoader".equals(classLoaderClass.name())) {
                classLoaderClass = classLoaderClass.superclass();
              }
              if (classLoaderClass != null) {
                Field parent = classLoaderClass.fieldByName("parent");
                if (parent != null) {
                  loaders = StreamEx.iterate(
                      classLoader, Objects::nonNull, loader -> ObjectUtils.tryCast(loader.getValue(parent), ClassLoaderReference.class))
                    .toList();
                }
              }
            }
            myParentLoaders = loaders;
          }
          return myParentLoaders;
        }
      };

      return StreamEx.ofKeys(map)
        .mapToEntry(value -> JdiValueInfo.from(value, classLoaderFilter))
        .nonNullValues()
        .toMap();
    }
@NotNull
    private static Map<Value, JdiValueInfo> requestJdi(@NotNull StackFrameProxyEx proxy, @NotNull Map<Value, List<DfaVariableValue>> map)