package bug.demo; 

import java.util.Set; 

import javax.lang.model.SourceVersion; 
import javax.lang.model.element.Element; 
import javax.lang.model.element.TypeElement; 
import javax.lang.model.util.Elements; 
import javax.lang.model.util.Types; 
import javax.tools.JavaFileManager; 
import javax.tools.JavaFileObject.Kind; 

import com.sun.source.util.DocTrees; 

import jdk.javadoc.doclet.DocletEnvironment; 
import jdk.javadoc.doclet.StandardDoclet; 

public class NewDoclet extends StandardDoclet { 

    @Override 
    public boolean run(DocletEnvironment docEnv) { 
        return super.run(wrap(docEnv)); 
    } 

    public DocletEnvironment wrap(DocletEnvironment env) { 
        return new DocletEnvironment() { 
            @Override 
            public Set<? extends Element> getSpecifiedElements() { 
                return env.getSpecifiedElements(); 
            } 

            @Override 
            public Set<? extends Element> getIncludedElements() { 
                return env.getIncludedElements(); 
            } 

            @Override 
            public DocTrees getDocTrees() { 
                return env.getDocTrees(); 
            } 

            @Override 
            public Elements getElementUtils() { 
                return env.getElementUtils(); 
            } 

            @Override 
            public Types getTypeUtils() { 
                return env.getTypeUtils(); 
            } 

            @Override 
            public boolean isIncluded(Element element) { 
                return env.isIncluded(element); 
            } 

            @Override 
            public boolean isSelected(Element element) { 
                return env.isSelected(element); 
            } 

            @Override 
            public JavaFileManager getJavaFileManager() { 
                return env.getJavaFileManager(); 
            } 

            @Override 
            public SourceVersion getSourceVersion() { 
                return env.getSourceVersion(); 
            } 

            @Override 
            public ModuleMode getModuleMode() { 
                return env.getModuleMode(); 
            } 

            @Override 
            public Kind getFileKind(TypeElement type) { 
                return env.getFileKind(type); 
            } 
        }; 
    } 
} 