class SCJavaFileManager extends ForwardingJavaFileManager<JavaFileManager> {

        private final ClassLoader classLoader;

        protected SCJavaFileManager(JavaFileManager fileManager, ClassLoader classLoader) {
            super(fileManager);
            this.classLoader = classLoader;
        }

        @Override
        public ClassLoader getClassLoader(Location location) {
            return classLoader;
        }

        @Override
        public Iterable<JavaFileObject> list(Location location, String packageName, Set<Kind> kinds,
                boolean recurse) throws IOException {
            return super.list(location, packageName, kinds, recurse);
        }

        @Override
        public JavaFileObject getJavaFileForOutput(Location location, String className, Kind kind,
                FileObject sibling) throws IOException {<FILL_FUNCTION_BODY>}
    }

            if (sibling != null && sibling instanceof SCJavaFileObject) {
                return ((SCJavaFileObject) sibling).addOutputJavaFile(className);
            }
            throw new IOException(
                    "The source file passed to getJavaFileForOutput() is not a SCJavaFileObject: "
                            + sibling);
        
<no_super_class>