public List visibleClasses()

in compatibility-8/src/com/jetbrains/sa/jdi/CompatibilityHelper8.java [122:148]


    public List<ReferenceTypeImpl> visibleClasses(final Oop ref, final VirtualMachineImpl vm) {
        final List<ReferenceTypeImpl> res = new ArrayList<>();

        // refer to getClassLoaderClasses in jvmtiGetLoadedClasses.cpp
        //  a. SystemDictionary::classes_do doesn't include arrays of primitive types (any dimensions)
        SystemDictionary sysDict = vm.saSystemDictionary();
        sysDict.classesDo((k, loader) -> {
            if (ref.equals(loader)) {
                for (Klass l = k; l != null; l = l.arrayKlassOrNull()) {
                    res.add(vm.referenceType(l));
                }
            }
        });

        // b. multi dimensional arrays of primitive types
        sysDict.primArrayClassesDo((k, loader) -> {
            if (ref.equals(loader)) {
                res.add(vm.referenceType(k));
            }
        });

        // c. single dimensional primitive array klasses from Universe
        // these are not added to SystemDictionary
        vm.saUniverse().basicTypeClassesDo(k -> res.add(vm.referenceType(k)));

        return res;
    }