class PluginCache {

    public static final String PLUGIN_PATH = "org/hotswap/agent/plugin";

    private Map<ClassLoader, Set<CtClass>> pluginDefs = new HashMap<>();

    Scanner scanner = new ClassPathScanner();

    public Set<CtClass> getPlugins(ClassLoader classLoader) {
        if (pluginDefs.containsKey(classLoader))
            return pluginDefs.get(classLoader);
        else
            return Collections.emptySet();
    }

    public Set<CtClass> scanPlugins(ClassLoader classLoader) throws IOException {<FILL_FUNCTION_BODY>}
}

        if (!pluginDefs.containsKey(classLoader)) {
            synchronized (pluginDefs) {
                if (!pluginDefs.containsKey(classLoader)) {
                    final Set<CtClass> plugins = new HashSet<>();
                    final ClassPool classPool = ClassPool.getDefault();

                    scanner.scan(getClass().getClassLoader(), PLUGIN_PATH, new ScannerVisitor() {
                        @Override
                        public void visit(InputStream file) throws IOException {
                            plugins.add(classPool.makeClass(file));
                        }
                    });
                }
            }
        }

        return pluginDefs.get(classLoader);
    
<no_super_class>