changeset 3453:b5d08bc0d224

8035473: [javadoc] Revamp the existing Doclet APIs 8146529: Update the new Doclet API 8146427: "-nohelp" option issue 8146475: "-helpfile" option issue Reviewed-by: alanb, bpatel, ihse, jjg, jlahoda, mchung, ogb, vromero
author ksrini
date Sat, 28 Nov 2015 18:52:17 -0800
parents 3d2e10d5d98d
children 3f60a4808377
files make/CompileInterim.gmk make/gensrc/Gensrc-jdk.javadoc.gmk make/netbeans/langtools/build.xml src/java.compiler/share/classes/javax/tools/ToolProvider.java src/jdk.javadoc/share/classes/com/sun/javadoc/package-info.java src/jdk.javadoc/share/classes/com/sun/tools/doclets/Taglet.java src/jdk.javadoc/share/classes/com/sun/tools/doclets/formats/html/markup/package-info.java src/jdk.javadoc/share/classes/com/sun/tools/doclets/formats/html/package-info.java src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/builders/package-info.java src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/package-info.java src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/package-info.java src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/util/links/package-info.java src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/util/package-info.java src/jdk.javadoc/share/classes/com/sun/tools/doclets/package-info.java src/jdk.javadoc/share/classes/com/sun/tools/javadoc/Start.java src/jdk.javadoc/share/classes/com/sun/tools/javadoc/api/JavadocTaskImpl.java src/jdk.javadoc/share/classes/com/sun/tools/javadoc/api/JavadocTool.java src/jdk.javadoc/share/classes/jdk/javadoc/doclet/Doclet.java src/jdk.javadoc/share/classes/jdk/javadoc/doclet/DocletEnvironment.java src/jdk.javadoc/share/classes/jdk/javadoc/doclet/Reporter.java src/jdk.javadoc/share/classes/jdk/javadoc/doclet/package-info.java src/jdk.javadoc/share/classes/jdk/javadoc/doclet/taglet/Taglet.java src/jdk.javadoc/share/classes/jdk/javadoc/doclet/taglet/package-info.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/api/JavadocTaskImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/api/JavadocTool.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractExecutableMemberWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractIndexWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractMemberWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractPackageIndexWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractTreeWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllClassesFrameWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeFieldWriterImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeOptionalMemberWriterImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeRequiredMemberWriterImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeWriterImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassUseWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriterImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConfigurationImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstantsSummaryWriterImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstructorWriterImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DeprecatedListWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/EnumConstantWriterImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/FieldWriterImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/FrameOutputWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HelpWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDoclet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlSerialFieldWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlSerialMethodWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/LinkFactoryImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/LinkInfoImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/LinkOutputImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MethodWriterImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/NestedClassWriterImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageFrameWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageIndexFrameWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageIndexWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageTreeWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageUseWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageWriterImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PropertyWriterImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SearchIndexItem.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SectionName.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SerializedFormWriterImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SingleIndexWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SourceToHTMLConverter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SplitIndexWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SubWriterHolderWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TagletWriterImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TreeWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/WriterFactoryImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Comment.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/ContentBuilder.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/DocType.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlAttr.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlConstants.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlDocWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlDocument.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlStyle.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlTag.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlTree.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlVersion.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/RawHtml.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/StringContent.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/package-info.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/package-info.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/glass.png src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/external/jquery/jquery.js src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/images/ui-bg_flat_75_ffffff_40x100.png src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/images/ui-bg_glass_65_ffffff_1x400.png src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/images/ui-bg_glass_75_dadada_1x400.png src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/images/ui-bg_glass_95_fef1ec_1x400.png src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/images/ui-icons_222222_256x240.png src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/images/ui-icons_2e83ff_256x240.png src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/images/ui-icons_454545_256x240.png src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/images/ui-icons_888888_256x240.png src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/images/ui-icons_cd0a0a_256x240.png src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/jquery-1.10.2.js src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/jquery-ui.css src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/jquery-ui.js src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/jquery-ui.min.css src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/jquery-ui.min.js src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/jquery-ui.structure.css src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/jquery-ui.structure.min.css src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/jszip-utils/dist/jszip-utils-ie.js src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/jszip-utils/dist/jszip-utils-ie.min.js src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/jszip-utils/dist/jszip-utils.js src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/jszip-utils/dist/jszip-utils.min.js src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/jszip/dist/jszip.js src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/jquery/jszip/dist/jszip.min.js src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/search.js src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard.properties src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_ja.properties src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_zh_CN.properties src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/x.png src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/package-info.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/standard/Standard.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/AbstractDoclet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/AnnotationTypeFieldWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/AnnotationTypeOptionalMemberWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/AnnotationTypeRequiredMemberWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/AnnotationTypeWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ClassWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/CommentUtils.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/Configuration.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ConstantsSummaryWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/ConstructorWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/Content.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/EnumConstantWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/FieldWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/MemberSummaryWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/MethodWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/NestedClassWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/OverviewElement.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/PackageSummaryWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/PropertyWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/SerializedFormWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/WorkArounds.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/WriterFactory.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/AbstractBuilder.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/AbstractMemberBuilder.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/AnnotationTypeBuilder.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/AnnotationTypeFieldBuilder.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/AnnotationTypeOptionalMemberBuilder.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/AnnotationTypeRequiredMemberBuilder.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/BuilderFactory.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/ClassBuilder.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/ConstantsSummaryBuilder.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/ConstructorBuilder.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/EnumConstantBuilder.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/FieldBuilder.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/LayoutParser.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/MemberSummaryBuilder.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/MethodBuilder.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/PackageSummaryBuilder.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/PropertyBuilder.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/SerializedFormBuilder.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/XMLNode.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/package-info.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/package-info.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclet.xml src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets.properties src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_ja.properties src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_zh_CN.properties src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/script.js src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/BaseExecutableMemberTaglet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/BaseInlineTaglet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/BasePropertyTaglet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/BaseTaglet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/CodeTaglet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/DeprecatedTaglet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/DocRootTaglet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/IndexTaglet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/InheritDocTaglet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/InheritableTaglet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/LiteralTaglet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ParamTaglet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/PropertyGetterTaglet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/PropertySetterTaglet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ReturnTaglet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/SeeTaglet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/SimpleTaglet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/Taglet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/TagletManager.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/TagletWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ThrowsTaglet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/UserTaglet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ValueTaglet.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/package-info.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/ClassTree.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/ClassUseMapper.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/CommentHelper.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DeprecatedAPIListBuilder.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DocFile.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DocFileFactory.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DocFinder.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DocLink.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DocPath.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DocPaths.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DocletAbortException.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DocletConstants.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Extern.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Group.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/ImplementedMethods.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/IndexBuilder.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/MessageRetriever.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/MetaKeywords.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/MethodTypes.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/PackageListWriter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/SimpleDocFileFactory.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/StandardDocFileFactory.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/TypeElementCatalog.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/VisibleMemberMap.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/links/LinkFactory.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/links/LinkInfo.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/links/LinkOutput.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/links/package-info.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/package-info.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/DocEnv.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/JavadocClassFinder.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/JavadocEnter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/JavadocMemberEnter.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/JavadocTodo.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/JavadocTool.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/Main.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/Messager.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/RootDocImpl.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/Start.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/ToolOption.java src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc.properties src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_ja.properties src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_zh_CN.properties test/TEST.groups test/jdk/javadoc/doclet/5093723/DocumentedClass.java test/jdk/javadoc/doclet/5093723/T5093723.java test/jdk/javadoc/doclet/5093723/UndocumentedClass.java test/jdk/javadoc/doclet/AccessAsciiArt/AccessAsciiArt.java test/jdk/javadoc/doclet/AccessAsciiArt/p1/C.java test/jdk/javadoc/doclet/AccessAsciiArt/p1/I.java test/jdk/javadoc/doclet/AccessAsciiArt/p1/SC.java test/jdk/javadoc/doclet/AccessAsciiArt/p1/SI.java test/jdk/javadoc/doclet/AccessAsciiArt/p1/subpkg/SSC.java test/jdk/javadoc/doclet/AccessFrameTitle/AccessFrameTitle.java test/jdk/javadoc/doclet/AccessFrameTitle/p1/C1.java test/jdk/javadoc/doclet/AccessFrameTitle/p2/C2.java test/jdk/javadoc/doclet/AccessH1/AccessH1.java test/jdk/javadoc/doclet/AccessH1/p1/C.java test/jdk/javadoc/doclet/AccessH1/p2/C2.java test/jdk/javadoc/doclet/AccessSkipNav/AccessSkipNav.java test/jdk/javadoc/doclet/AccessSkipNav/p1/C1.java test/jdk/javadoc/doclet/AccessSkipNav/p2/C2.java test/jdk/javadoc/doclet/AccessSummary/AccessSummary.java test/jdk/javadoc/doclet/AccessSummary/p1/C1.java test/jdk/javadoc/doclet/AccessSummary/p2/C2.java test/jdk/javadoc/doclet/AuthorDD/AuthorDD.java test/jdk/javadoc/doclet/AuthorDD/p1/C1.java test/jdk/javadoc/doclet/DocRootSlash/DocRootSlash.java test/jdk/javadoc/doclet/DocRootSlash/overview.html test/jdk/javadoc/doclet/DocRootSlash/p1/C1.java test/jdk/javadoc/doclet/DocRootSlash/p1/package.html test/jdk/javadoc/doclet/DocRootSlash/p2/C2.java test/jdk/javadoc/doclet/DocRootSlash/p2/package.html test/jdk/javadoc/doclet/InheritDocForUserTags/DocTest.java test/jdk/javadoc/doclet/JavascriptWinTitle/JavascriptWinTitle.java test/jdk/javadoc/doclet/JavascriptWinTitle/overview.html test/jdk/javadoc/doclet/JavascriptWinTitle/p1/C.java test/jdk/javadoc/doclet/JavascriptWinTitle/p2/C2.java test/jdk/javadoc/doclet/JavascriptWinTitle/package-list test/jdk/javadoc/doclet/MetaTag/MetaTag.java test/jdk/javadoc/doclet/MetaTag/p1/C1.java test/jdk/javadoc/doclet/MetaTag/p2/C2.java test/jdk/javadoc/doclet/PackagesHeader/PackagesHeader.java test/jdk/javadoc/doclet/PackagesHeader/p1/C1.java test/jdk/javadoc/doclet/PackagesHeader/p2/C2.java test/jdk/javadoc/doclet/T6735320/SerialFieldTest.java test/jdk/javadoc/doclet/T6735320/T6735320.java test/jdk/javadoc/doclet/ValidHtml/ValidHtml.java test/jdk/javadoc/doclet/ValidHtml/overview.html test/jdk/javadoc/doclet/ValidHtml/p1/C.java test/jdk/javadoc/doclet/ValidHtml/p2/C2.java test/jdk/javadoc/doclet/VersionNumber/VersionNumber.java test/jdk/javadoc/doclet/VersionNumber/p1/C.java test/jdk/javadoc/doclet/WindowTitles/WindowTitles.java test/jdk/javadoc/doclet/WindowTitles/p1/C1.java test/jdk/javadoc/doclet/WindowTitles/p2/C2.java test/jdk/javadoc/doclet/_template/Template.java test/jdk/javadoc/doclet/_template/TemplateComplete.java test/jdk/javadoc/doclet/constantValues/A.java test/jdk/javadoc/doclet/constantValues/TestConstantValues.java test/jdk/javadoc/doclet/constantValues/TestConstantValues2.java test/jdk/javadoc/doclet/constantValues/TestConstantValuesDriver.java test/jdk/javadoc/doclet/dupThrowsTags/TestDupThrowsTags.java test/jdk/javadoc/doclet/lib/JavadocTester.java test/jdk/javadoc/doclet/testAbsLinkPath/TestAbsLinkPath.java test/jdk/javadoc/doclet/testAbsLinkPath/pkg1/C1.java test/jdk/javadoc/doclet/testAbsLinkPath/pkg2/C2.java test/jdk/javadoc/doclet/testAbstractMethod/TestAbstractMethod.java test/jdk/javadoc/doclet/testAbstractMethod/pkg/A.java test/jdk/javadoc/doclet/testAbstractMethod/pkg/B.java test/jdk/javadoc/doclet/testAbstractMethod/pkg/C.java test/jdk/javadoc/doclet/testAnchorNames/TestAnchorNames.java test/jdk/javadoc/doclet/testAnchorNames/pkg1/DeprMemClass.java test/jdk/javadoc/doclet/testAnchorNames/pkg1/RegClass.java test/jdk/javadoc/doclet/testAnnotationOptional/TestAnnotationOptional.java test/jdk/javadoc/doclet/testAnnotationOptional/pkg/AnnotationOptional.java test/jdk/javadoc/doclet/testAnnotationTypes/TestAnnotationTypes.java test/jdk/javadoc/doclet/testAnnotationTypes/pkg/AnnotationType.java test/jdk/javadoc/doclet/testAnnotationTypes/pkg/AnnotationTypeField.java test/jdk/javadoc/doclet/testBackSlashInLink/C.java test/jdk/javadoc/doclet/testBackSlashInLink/TestBackSlashInLink.java test/jdk/javadoc/doclet/testBadPackageFileInJar/TestBadPackageFileInJar.java test/jdk/javadoc/doclet/testBadPackageFileInJar/badPackageFileInJar.jar test/jdk/javadoc/doclet/testBadPackageFileInJar/pkg/C.java test/jdk/javadoc/doclet/testBadSourceFile/C1.java test/jdk/javadoc/doclet/testBadSourceFile/C2.java test/jdk/javadoc/doclet/testBadSourceFile/TestBadSourceFile.java test/jdk/javadoc/doclet/testBaseClass/Bar.java test/jdk/javadoc/doclet/testBaseClass/BaseClass.java test/jdk/javadoc/doclet/testBaseClass/TestBaseClass.java test/jdk/javadoc/doclet/testBaseClass/baz/Foo.java test/jdk/javadoc/doclet/testBreakIterator/TestBreakIterator.java test/jdk/javadoc/doclet/testBreakIterator/pkg/BreakIteratorTest.java test/jdk/javadoc/doclet/testCRLineSeparator/TestCRLineSeparator.java test/jdk/javadoc/doclet/testCRLineSeparator/pkg/MyClass.java test/jdk/javadoc/doclet/testCharset/TestCharset.java test/jdk/javadoc/doclet/testCharset/pkg/Foo.java test/jdk/javadoc/doclet/testClassCrossReferences/C.java test/jdk/javadoc/doclet/testClassCrossReferences/TestClassCrossReferences.java test/jdk/javadoc/doclet/testClassCrossReferences/package-list test/jdk/javadoc/doclet/testClassTree/TestClassTree.java test/jdk/javadoc/doclet/testClassTree/pkg/AnnotationType.java test/jdk/javadoc/doclet/testClassTree/pkg/ChildClass.java test/jdk/javadoc/doclet/testClassTree/pkg/Coin.java test/jdk/javadoc/doclet/testClassTree/pkg/ParentClass.java test/jdk/javadoc/doclet/testCmndLineClass/C5.java test/jdk/javadoc/doclet/testCmndLineClass/TestCmndLineClass.java test/jdk/javadoc/doclet/testCmndLineClass/pkg1/C1.java test/jdk/javadoc/doclet/testCmndLineClass/pkg1/C2.java test/jdk/javadoc/doclet/testCmndLineClass/pkg1/package.html test/jdk/javadoc/doclet/testCmndLineClass/pkg2/C3.java test/jdk/javadoc/doclet/testCmndLineClass/pkg2/C4.java test/jdk/javadoc/doclet/testCmndLineClass/pkg2/package.html test/jdk/javadoc/doclet/testCompletionFailure/TestCompletionFailure.java test/jdk/javadoc/doclet/testCompletionFailure/pkg1/NumberFormatTest.java test/jdk/javadoc/doclet/testConstantValuesPage/TestConstantValuesPage.java test/jdk/javadoc/doclet/testConstructorIndent/C.java test/jdk/javadoc/doclet/testConstructorIndent/TestConstructorIndent.java test/jdk/javadoc/doclet/testConstructors/TestConstructors.java test/jdk/javadoc/doclet/testConstructors/pkg1/Outer.java test/jdk/javadoc/doclet/testDeprecatedDocs/TestDeprecatedDocs.java test/jdk/javadoc/doclet/testDeprecatedDocs/pkg/DeprecatedClassByAnnotation.java test/jdk/javadoc/doclet/testDeprecatedDocs/pkg/TestAnnotationType.java test/jdk/javadoc/doclet/testDeprecatedDocs/pkg/TestClass.java test/jdk/javadoc/doclet/testDeprecatedDocs/pkg/TestEnum.java test/jdk/javadoc/doclet/testDeprecatedDocs/pkg/TestError.java test/jdk/javadoc/doclet/testDeprecatedDocs/pkg/TestException.java test/jdk/javadoc/doclet/testDeprecatedDocs/pkg/TestInterface.java test/jdk/javadoc/doclet/testDocEncoding/TestDocEncoding.java test/jdk/javadoc/doclet/testDocEncoding/pkg/Test.java test/jdk/javadoc/doclet/testDocErrorReporter/TestDocErrorReporter.java test/jdk/javadoc/doclet/testDocFileDir/TestDocFileDir.java test/jdk/javadoc/doclet/testDocFileDir/pkg/C.java test/jdk/javadoc/doclet/testDocFileDir/pkg/doc-files/subdir-excluded1/testfile.txt test/jdk/javadoc/doclet/testDocFileDir/pkg/doc-files/subdir-excluded2/testfile.txt test/jdk/javadoc/doclet/testDocFileDir/pkg/doc-files/subdir-used1/testfile.txt test/jdk/javadoc/doclet/testDocFileDir/pkg/doc-files/subdir-used2/testfile.txt test/jdk/javadoc/doclet/testDocFileDir/pkg/doc-files/testfile.txt test/jdk/javadoc/doclet/testDocFiles/TestDocFiles.java test/jdk/javadoc/doclet/testDocFiles/pkg/Test.java test/jdk/javadoc/doclet/testDocFiles/pkg/doc-files/test.txt test/jdk/javadoc/doclet/testDocRootInlineTag/TestDocRootInlineTag.java test/jdk/javadoc/doclet/testDocRootInlineTag/TestDocRootTag.java test/jdk/javadoc/doclet/testDocRootInlineTag/package-list test/jdk/javadoc/doclet/testDocRootInlineTag/pkg/C.java test/jdk/javadoc/doclet/testDocRootLink/TestDocRootLink.java test/jdk/javadoc/doclet/testDocRootLink/pkg1/C1.java test/jdk/javadoc/doclet/testDocRootLink/pkg1/package.html test/jdk/javadoc/doclet/testDocRootLink/pkg2/C2.java test/jdk/javadoc/doclet/testDocRootLink/pkg2/package.html test/jdk/javadoc/doclet/testDupParamWarn/TestDupParamWarn.java test/jdk/javadoc/doclet/testDupParamWarn/pkg/Bar.java test/jdk/javadoc/doclet/testDupParamWarn/pkg/Foo.java test/jdk/javadoc/doclet/testEmptyClass/TestEmptyClass.java test/jdk/javadoc/doclet/testEmptyClass/src/Empty.java test/jdk/javadoc/doclet/testEnclosingClass/TestEnclosingClass.java test/jdk/javadoc/doclet/testEnclosingClass/pkg/MyClass.java test/jdk/javadoc/doclet/testEncoding/EncodeTest.java test/jdk/javadoc/doclet/testEncoding/TestEncoding.java test/jdk/javadoc/doclet/testExternalOverridenMethod/TestExternalOverridenMethod.java test/jdk/javadoc/doclet/testExternalOverridenMethod/package-list test/jdk/javadoc/doclet/testExternalOverridenMethod/pkg/XReader.java test/jdk/javadoc/doclet/testGeneratedBy/TestGeneratedBy.java test/jdk/javadoc/doclet/testGeneratedBy/pkg/MyClass.java test/jdk/javadoc/doclet/testGroupOption/TestGroupOption.java test/jdk/javadoc/doclet/testGroupOption/pkg1/C.java test/jdk/javadoc/doclet/testGroupOption/pkg2/C.java test/jdk/javadoc/doclet/testGroupOption/pkg3/C.java test/jdk/javadoc/doclet/testHeadings/TestHeadings.java test/jdk/javadoc/doclet/testHeadings/pkg1/C1.java test/jdk/javadoc/doclet/testHeadings/pkg2/C2.java test/jdk/javadoc/doclet/testHelpFile/TestHelpFile.java test/jdk/javadoc/doclet/testHelpOption/Sample.java test/jdk/javadoc/doclet/testHelpOption/TestHelpOption.java test/jdk/javadoc/doclet/testHelpOption/test-help.html test/jdk/javadoc/doclet/testHiddenMembers/TestHiddenMembers.java test/jdk/javadoc/doclet/testHiddenMembers/pkg/BaseClass.java test/jdk/javadoc/doclet/testHiddenMembers/pkg/SubClass.java test/jdk/javadoc/doclet/testHref/TestHref.java test/jdk/javadoc/doclet/testHref/package-list test/jdk/javadoc/doclet/testHref/pkg/C1.java test/jdk/javadoc/doclet/testHref/pkg/C2.java test/jdk/javadoc/doclet/testHref/pkg/C4.java test/jdk/javadoc/doclet/testHrefInDocComment/TestHrefInDocComment.java test/jdk/javadoc/doclet/testHrefInDocComment/pkg/I1.java test/jdk/javadoc/doclet/testHrefInDocComment/pkg/I2.java test/jdk/javadoc/doclet/testHtmlComments/C.java test/jdk/javadoc/doclet/testHtmlComments/TestHtmlComments.java test/jdk/javadoc/doclet/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java test/jdk/javadoc/doclet/testHtmlDefinitionListTag/pkg1/C1.java test/jdk/javadoc/doclet/testHtmlDefinitionListTag/pkg1/C2.java test/jdk/javadoc/doclet/testHtmlDefinitionListTag/pkg1/C3.java test/jdk/javadoc/doclet/testHtmlDefinitionListTag/pkg1/C4.java test/jdk/javadoc/doclet/testHtmlDefinitionListTag/pkg1/C5.java test/jdk/javadoc/doclet/testHtmlDefinitionListTag/pkg1/package-info.java test/jdk/javadoc/doclet/testHtmlDocument/TestHtmlDocument.java test/jdk/javadoc/doclet/testHtmlDocument/testLink.html test/jdk/javadoc/doclet/testHtmlDocument/testMarkup.html test/jdk/javadoc/doclet/testHtmlStrongTag/TestHtmlStrongTag.java test/jdk/javadoc/doclet/testHtmlStrongTag/pkg1/C1.java test/jdk/javadoc/doclet/testHtmlStrongTag/pkg2/C2.java test/jdk/javadoc/doclet/testHtmlTableStyles/TestHtmlTableStyles.java test/jdk/javadoc/doclet/testHtmlTableStyles/pkg1/TestTable.java test/jdk/javadoc/doclet/testHtmlTableStyles/pkg2/TestUse.java test/jdk/javadoc/doclet/testHtmlTableTags/TestHtmlTableTags.java test/jdk/javadoc/doclet/testHtmlTableTags/pkg1/C1.java test/jdk/javadoc/doclet/testHtmlTableTags/pkg1/I1.java test/jdk/javadoc/doclet/testHtmlTableTags/pkg1/package-info.java test/jdk/javadoc/doclet/testHtmlTableTags/pkg2/C2.java test/jdk/javadoc/doclet/testHtmlTableTags/pkg2/C3.java test/jdk/javadoc/doclet/testHtmlTableTags/pkg2/C4.java test/jdk/javadoc/doclet/testHtmlTableTags/pkg2/package-info.java test/jdk/javadoc/doclet/testHtmlTag/TestHtmlTag.java test/jdk/javadoc/doclet/testHtmlTag/pkg1/C1.java test/jdk/javadoc/doclet/testHtmlTag/pkg2/C2.java test/jdk/javadoc/doclet/testHtmlTag/pkg3/A.java test/jdk/javadoc/doclet/testHtmlTag/pkg3/package.html test/jdk/javadoc/doclet/testHtmlVersion/TestHtmlVersion.java test/jdk/javadoc/doclet/testHtmlVersion/pkg/AnnotationType.java test/jdk/javadoc/doclet/testHtmlVersion/pkg/AnotherClass.java test/jdk/javadoc/doclet/testHtmlVersion/pkg/TestError.java test/jdk/javadoc/doclet/testHtmlVersion/pkg/TestException.java test/jdk/javadoc/doclet/testHtmlVersion/pkg/TestInterface.java test/jdk/javadoc/doclet/testHtmlVersion/pkg/package-info.java test/jdk/javadoc/doclet/testHtmlVersion/pkg1/NestedInnerClass.java test/jdk/javadoc/doclet/testHtmlVersion/pkg1/PrivateIncludeInnerClass.java test/jdk/javadoc/doclet/testHtmlVersion/pkg1/ProtectedInnerClass.java test/jdk/javadoc/doclet/testHtmlVersion/pkg1/PublicExcludeInnerClass.java test/jdk/javadoc/doclet/testHtmlVersion/pkg1/RegClass.java test/jdk/javadoc/doclet/testHtmlVersion/pkg2/DeprecatedClassByAnnotation.java test/jdk/javadoc/doclet/testHtmlVersion/pkg2/Interface.java test/jdk/javadoc/doclet/testHtmlVersion/pkg2/TestAnnotationType.java test/jdk/javadoc/doclet/testHtmlVersion/pkg2/TestClass.java test/jdk/javadoc/doclet/testHtmlVersion/pkg2/TestEnum.java test/jdk/javadoc/doclet/testHtmlVersion/pkg2/TestError.java test/jdk/javadoc/doclet/testHtmlVersion/pkg2/TestException.java test/jdk/javadoc/doclet/testHtmlVersion/pkg2/TestInterface.java test/jdk/javadoc/doclet/testHtmlVersion/pkg3/ClassNoConstants.java test/jdk/javadoc/doclet/testIndentation/TestIndentation.java test/jdk/javadoc/doclet/testIndentation/p/Indent.java test/jdk/javadoc/doclet/testIndex/NoPackage.java test/jdk/javadoc/doclet/testIndex/TestIndex.java test/jdk/javadoc/doclet/testIndex/pkg/AnnotationType.java test/jdk/javadoc/doclet/testIndex/pkg/C.java test/jdk/javadoc/doclet/testIndex/pkg/Coin.java test/jdk/javadoc/doclet/testIndex/pkg/Interface.java test/jdk/javadoc/doclet/testInlineLinkLabel/TestInlineLinkLabel.java test/jdk/javadoc/doclet/testInlineLinkLabel/pkg/C1.java test/jdk/javadoc/doclet/testInlineLinkLabel/pkg/C2.java test/jdk/javadoc/doclet/testInlineLinkLabel/pkg/package.html test/jdk/javadoc/doclet/testInterface/TestInterface.java test/jdk/javadoc/doclet/testInterface/pkg/Child.java test/jdk/javadoc/doclet/testInterface/pkg/Interface.java test/jdk/javadoc/doclet/testInterface/pkg/Parent.java test/jdk/javadoc/doclet/testInterface/pkg1/Child.java test/jdk/javadoc/doclet/testInterface/pkg1/GrandParent.java test/jdk/javadoc/doclet/testInterface/pkg1/Interface.java test/jdk/javadoc/doclet/testInterface/pkg1/Parent.java test/jdk/javadoc/doclet/testInterface/pkg2/Abstract.java test/jdk/javadoc/doclet/testInterface/pkg2/Spliterator.java test/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java test/jdk/javadoc/doclet/testJavaFX/pkg1/C.java test/jdk/javadoc/doclet/testJavaFX/pkg1/D.java test/jdk/javadoc/doclet/testJavaFX/pkg2/Test.java test/jdk/javadoc/doclet/testJavascript/TestJavascript.java test/jdk/javadoc/doclet/testJavascript/pkg/C.java test/jdk/javadoc/doclet/testLambdaFeature/TestLambdaFeature.java test/jdk/javadoc/doclet/testLambdaFeature/pkg/A.java test/jdk/javadoc/doclet/testLambdaFeature/pkg/B.java test/jdk/javadoc/doclet/testLambdaFeature/pkg1/FuncInf.java test/jdk/javadoc/doclet/testLambdaFeature/pkg1/NotAFuncInf.java test/jdk/javadoc/doclet/testLeadingSpaces/LeadingSpaces.java test/jdk/javadoc/doclet/testLegacyTaglet/C.java test/jdk/javadoc/doclet/testLegacyTaglet/Check.java test/jdk/javadoc/doclet/testLegacyTaglet/TestLegacyTaglet.java test/jdk/javadoc/doclet/testLegacyTaglet/ToDoTaglet.java test/jdk/javadoc/doclet/testLegacyTaglet/UnderlineTaglet.java test/jdk/javadoc/doclet/testLinkOption/TestBadLinkOption.java test/jdk/javadoc/doclet/testLinkOption/TestLinkOption.java test/jdk/javadoc/doclet/testLinkOption/TestNewLineInLink.java test/jdk/javadoc/doclet/testLinkOption/java/lang/StringBuilderChild.java test/jdk/javadoc/doclet/testLinkOption/package-list test/jdk/javadoc/doclet/testLinkOption/pkg/B.java test/jdk/javadoc/doclet/testLinkOption/pkg/C.java test/jdk/javadoc/doclet/testLinkOption/pkg2/C2.java test/jdk/javadoc/doclet/testLinkOption/testNewLineInLink/C.java test/jdk/javadoc/doclet/testLinkOption/testNewLineInLink/package.html test/jdk/javadoc/doclet/testLinkTaglet/TestLinkTaglet.java test/jdk/javadoc/doclet/testLinkTaglet/checkPkg/A.java test/jdk/javadoc/doclet/testLinkTaglet/checkPkg/B.java test/jdk/javadoc/doclet/testLinkTaglet/pkg/C.java test/jdk/javadoc/doclet/testLinkToSerialForm/TestLinkToSerialForm.java test/jdk/javadoc/doclet/testLinkToSerialForm/pkg/C.java test/jdk/javadoc/doclet/testLiteralCodeInPre/TestLiteralCodeInPre.java test/jdk/javadoc/doclet/testLiteralCodeInPre/pkg/Test.java test/jdk/javadoc/doclet/testMemberInheritence/TestMemberInheritence.java test/jdk/javadoc/doclet/testMemberInheritence/diamond/A.java test/jdk/javadoc/doclet/testMemberInheritence/diamond/B.java test/jdk/javadoc/doclet/testMemberInheritence/diamond/C.java test/jdk/javadoc/doclet/testMemberInheritence/diamond/X.java test/jdk/javadoc/doclet/testMemberInheritence/diamond/Z.java test/jdk/javadoc/doclet/testMemberInheritence/inheritDist/A.java test/jdk/javadoc/doclet/testMemberInheritence/inheritDist/B.java test/jdk/javadoc/doclet/testMemberInheritence/inheritDist/C.java test/jdk/javadoc/doclet/testMemberInheritence/pkg/BaseClass.java test/jdk/javadoc/doclet/testMemberInheritence/pkg/BaseInterface.java test/jdk/javadoc/doclet/testMemberInheritence/pkg/SubClass.java test/jdk/javadoc/doclet/testMemberInheritence/pkg1/Implementer.java test/jdk/javadoc/doclet/testMemberInheritence/pkg1/Interface.java test/jdk/javadoc/doclet/testMemberSummary/TestMemberSummary.java test/jdk/javadoc/doclet/testMemberSummary/pkg/PrivateParent.java test/jdk/javadoc/doclet/testMemberSummary/pkg/PublicChild.java test/jdk/javadoc/doclet/testMemberSummary/pkg2/A.java test/jdk/javadoc/doclet/testMethodTypes/TestMethodTypes.java test/jdk/javadoc/doclet/testMethodTypes/pkg1/A.java test/jdk/javadoc/doclet/testMethodTypes/pkg1/B.java test/jdk/javadoc/doclet/testMethodTypes/pkg1/D.java test/jdk/javadoc/doclet/testModifierEx/TestModifierEx.java test/jdk/javadoc/doclet/testModifierEx/pkg1/Abstract.java test/jdk/javadoc/doclet/testModifierEx/pkg1/AnnotationType.java test/jdk/javadoc/doclet/testModifierEx/pkg1/Enum.java test/jdk/javadoc/doclet/testModifierEx/pkg1/Interface.java test/jdk/javadoc/doclet/testModifierEx/pkg1/Klass.java test/jdk/javadoc/doclet/testNavigation/TestNavigation.java test/jdk/javadoc/doclet/testNavigation/pkg/A.java test/jdk/javadoc/doclet/testNavigation/pkg/C.java test/jdk/javadoc/doclet/testNavigation/pkg/E.java test/jdk/javadoc/doclet/testNavigation/pkg/I.java test/jdk/javadoc/doclet/testNestedGenerics/TestNestedGenerics.java test/jdk/javadoc/doclet/testNestedGenerics/pkg/NestedGenerics.java test/jdk/javadoc/doclet/testNewLanguageFeatures/TestNewLanguageFeatures.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg/AnnotationType.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg/AnnotationTypeUndocumented.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg/AnnotationTypeUsage.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg/Coin.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg/MultiTypeParameters.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg/SubInterface.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg/SuperInterface.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg/TypeParameterSubClass.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg/TypeParameterSuperClass.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg/TypeParameters.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg/VarArgs.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg/Wildcards.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg/package-info.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg1/A.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg1/B.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg2/ClassUseTest1.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg2/ClassUseTest2.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg2/ClassUseTest3.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg2/Foo.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg2/Foo2.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg2/Foo3.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg2/Foo4.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg2/ParamTest.java test/jdk/javadoc/doclet/testNewLanguageFeatures/pkg2/ParamTest2.java test/jdk/javadoc/doclet/testNoPackagesFile/C.java test/jdk/javadoc/doclet/testNoPackagesFile/TestNoPackagesFile.java test/jdk/javadoc/doclet/testNotifications/TestNotifications.java test/jdk/javadoc/doclet/testNotifications/pkg/C.java test/jdk/javadoc/doclet/testOptions/TestOptions.java test/jdk/javadoc/doclet/testOptions/pkg/Foo.java test/jdk/javadoc/doclet/testOrdering/C.java test/jdk/javadoc/doclet/testOrdering/TestOrdering.java test/jdk/javadoc/doclet/testOrdering/UsedInC.java test/jdk/javadoc/doclet/testOrdering/order/MethodOrder.java test/jdk/javadoc/doclet/testOrdering/pkg1/A.java test/jdk/javadoc/doclet/testOrdering/pkg1/B.java test/jdk/javadoc/doclet/testOrdering/pkg1/C1.java test/jdk/javadoc/doclet/testOrdering/pkg1/C2.java test/jdk/javadoc/doclet/testOrdering/pkg1/C3.java test/jdk/javadoc/doclet/testOrdering/pkg1/C4.java test/jdk/javadoc/doclet/testOrdering/pkg1/ImplementsOrdering.java test/jdk/javadoc/doclet/testOrdering/pkg1/MethodOrder.java test/jdk/javadoc/doclet/testOrdering/pkg1/OverrideOrdering.java test/jdk/javadoc/doclet/testOrdering/pkg1/UsedClass.java test/jdk/javadoc/doclet/testOrdering/src-2/a/A.java test/jdk/javadoc/doclet/testOrdering/src-2/a/something.java test/jdk/javadoc/doclet/testOrdering/src-2/b/B.java test/jdk/javadoc/doclet/testOrdering/src-2/b/something.java test/jdk/javadoc/doclet/testOrdering/src-2/e/something.java test/jdk/javadoc/doclet/testOrdering/src-2/something/J.java test/jdk/javadoc/doclet/testOrdering/src-2/something/package-info.java test/jdk/javadoc/doclet/testOrdering/src-2/something/something.java test/jdk/javadoc/doclet/testOverridenMethods/TestMultiInheritence.java test/jdk/javadoc/doclet/testOverridenMethods/TestOverridenMethodDocCopy.java test/jdk/javadoc/doclet/testOverridenMethods/TestOverridenPrivateMethods.java test/jdk/javadoc/doclet/testOverridenMethods/TestOverridenPrivateMethodsWithPackageFlag.java test/jdk/javadoc/doclet/testOverridenMethods/TestOverridenPrivateMethodsWithPrivateFlag.java test/jdk/javadoc/doclet/testOverridenMethods/pkg1/BaseClass.java test/jdk/javadoc/doclet/testOverridenMethods/pkg1/SubClass.java test/jdk/javadoc/doclet/testOverridenMethods/pkg2/SubClass.java test/jdk/javadoc/doclet/testOverridenMethods/pkg3/I0.java test/jdk/javadoc/doclet/testOverridenMethods/pkg3/I1.java test/jdk/javadoc/doclet/testOverridenMethods/pkg3/I2.java test/jdk/javadoc/doclet/testOverridenMethods/pkg3/I3.java test/jdk/javadoc/doclet/testOverridenMethods/pkg3/I4.java test/jdk/javadoc/doclet/testPackageDeprecation/C2.java test/jdk/javadoc/doclet/testPackageDeprecation/FooDepr.java test/jdk/javadoc/doclet/testPackageDeprecation/TestPackageDeprecation.java test/jdk/javadoc/doclet/testPackageDeprecation/pkg/A.java test/jdk/javadoc/doclet/testPackageDeprecation/pkg1/ClassUseTest1.java test/jdk/javadoc/doclet/testPackageDeprecation/pkg1/Foo.java test/jdk/javadoc/doclet/testPackageDeprecation/pkg1/Foo2.java test/jdk/javadoc/doclet/testPackageDeprecation/pkg1/package-info.java test/jdk/javadoc/doclet/testPackagePage/TestPackagePage.java test/jdk/javadoc/doclet/testPackagePage/com/pkg/C.java test/jdk/javadoc/doclet/testPackagePage/com/pkg/package.html test/jdk/javadoc/doclet/testPackagePage/pkg2/C.java test/jdk/javadoc/doclet/testParamTaglet/TestParamTaglet.java test/jdk/javadoc/doclet/testParamTaglet/pkg/C.java test/jdk/javadoc/doclet/testParamTaglet/pkg/Parent.java test/jdk/javadoc/doclet/testPrivateClasses/TestPrivateClasses.java test/jdk/javadoc/doclet/testPrivateClasses/pkg/PrivateInterface.java test/jdk/javadoc/doclet/testPrivateClasses/pkg/PrivateParent.java test/jdk/javadoc/doclet/testPrivateClasses/pkg/PublicChild.java test/jdk/javadoc/doclet/testPrivateClasses/pkg/PublicInterface.java test/jdk/javadoc/doclet/testPrivateClasses/pkg2/C.java test/jdk/javadoc/doclet/testPrivateClasses/pkg2/I.java test/jdk/javadoc/doclet/testRecurseSubPackages/TestRecurseSubPackages.java test/jdk/javadoc/doclet/testRecurseSubPackages/pkg1/C1.java test/jdk/javadoc/doclet/testRecurseSubPackages/pkg1/C2.java test/jdk/javadoc/doclet/testRecurseSubPackages/pkg1/pkg2/C3.java test/jdk/javadoc/doclet/testRecurseSubPackages/pkg1/pkg2/C4.java test/jdk/javadoc/doclet/testRecurseSubPackages/pkg1/pkg2/packageToExclude/DummyClass.java test/jdk/javadoc/doclet/testRecurseSubPackages/pkg1/pkg2/pkg3/C5.java test/jdk/javadoc/doclet/testRecurseSubPackages/pkg1/pkg2/pkg3/C6.java test/jdk/javadoc/doclet/testRelativeLinks/TestRelativeLinks.java test/jdk/javadoc/doclet/testRelativeLinks/pkg/C.java test/jdk/javadoc/doclet/testRelativeLinks/pkg/package.html test/jdk/javadoc/doclet/testRelativeLinks/pkg2/Foo.java test/jdk/javadoc/doclet/testRepeatedAnnotations/TestRepeatedAnnotations.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/C.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/ContaineeRegDoc.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/ContaineeSynthDoc.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/ContainerRegDoc.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/ContainerRegNotDoc.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/ContainerSynthDoc.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/D.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/NonSynthDocContainer.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/RegArryDoc.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/RegContaineeDoc.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/RegContaineeNotDoc.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/RegContainerDoc.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/RegContainerNotDoc.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg/RegDoc.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg1/C.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg1/ContaineeNotDoc.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg1/ContaineeSynthDoc.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg1/ContainerSynthNotDoc.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg1/ContainerValDoc.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg1/ContainerValNotDoc.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg1/RegContaineeDoc.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg1/RegContaineeNotDoc.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg1/RegContainerValDoc.java test/jdk/javadoc/doclet/testRepeatedAnnotations/pkg1/RegContainerValNotDoc.java test/jdk/javadoc/doclet/testReturnTag/TestReturnTag.java test/jdk/javadoc/doclet/testSearch/TestSearch.java test/jdk/javadoc/doclet/testSearch/UnnamedPkgClass.java test/jdk/javadoc/doclet/testSearch/pkg/AnnotationType.java test/jdk/javadoc/doclet/testSearch/pkg/AnotherClass.java test/jdk/javadoc/doclet/testSearch/pkg/TestError.java test/jdk/javadoc/doclet/testSearch/pkg/TestException.java test/jdk/javadoc/doclet/testSearch/pkg/TestInterface.java test/jdk/javadoc/doclet/testSearch/pkg/package-info.java test/jdk/javadoc/doclet/testSearch/pkg1/NestedInnerClass.java test/jdk/javadoc/doclet/testSearch/pkg1/PrivateIncludeInnerClass.java test/jdk/javadoc/doclet/testSearch/pkg1/ProtectedInnerClass.java test/jdk/javadoc/doclet/testSearch/pkg1/PublicExcludeInnerClass.java test/jdk/javadoc/doclet/testSearch/pkg1/RegClass.java test/jdk/javadoc/doclet/testSearch/pkg2/DeprecatedClassByAnnotation.java test/jdk/javadoc/doclet/testSearch/pkg2/Interface.java test/jdk/javadoc/doclet/testSearch/pkg2/TestAnnotationType.java test/jdk/javadoc/doclet/testSearch/pkg2/TestClass.java test/jdk/javadoc/doclet/testSearch/pkg2/TestEnum.java test/jdk/javadoc/doclet/testSearch/pkg2/TestError.java test/jdk/javadoc/doclet/testSearch/pkg2/TestException.java test/jdk/javadoc/doclet/testSearch/pkg2/TestInterface.java test/jdk/javadoc/doclet/testSearch/pkg3/ClassNoConstants.java test/jdk/javadoc/doclet/testSearch/pkgfx/C.java test/jdk/javadoc/doclet/testSeeTag/TestSeeTag.java test/jdk/javadoc/doclet/testSeeTag/pkg/Test.java test/jdk/javadoc/doclet/testSeeTag/pkg/Test2.java test/jdk/javadoc/doclet/testSerialVersionUID/C.java test/jdk/javadoc/doclet/testSerialVersionUID/TestSerialVersionUID.java test/jdk/javadoc/doclet/testSerializedForm/TestSerializedForm.java test/jdk/javadoc/doclet/testSerializedForm/pkg1/NestedInnerClass.java test/jdk/javadoc/doclet/testSerializedForm/pkg1/PrivateIncludeInnerClass.java test/jdk/javadoc/doclet/testSerializedForm/pkg1/ProtectedInnerClass.java test/jdk/javadoc/doclet/testSerializedForm/pkg1/PublicExcludeInnerClass.java test/jdk/javadoc/doclet/testSerializedFormDeprecationInfo/TestSerializedFormDeprecationInfo.java test/jdk/javadoc/doclet/testSerializedFormDeprecationInfo/pkg1/C1.java test/jdk/javadoc/doclet/testSerializedFormDeprecationInfo/pkg1/C2.java test/jdk/javadoc/doclet/testSerializedFormDeprecationInfo/pkg1/C3.java test/jdk/javadoc/doclet/testSimpleTag/C.java test/jdk/javadoc/doclet/testSimpleTag/TestSimpleTag.java test/jdk/javadoc/doclet/testSimpleTagExclude/DummyClass.java test/jdk/javadoc/doclet/testSimpleTagExclude/TestSimpleTagExclude.java test/jdk/javadoc/doclet/testSimpleTagInherit/TestSimpleTagInherit.java test/jdk/javadoc/doclet/testSimpleTagInherit/p/BaseClass.java test/jdk/javadoc/doclet/testSimpleTagInherit/p/TestClass.java test/jdk/javadoc/doclet/testSinceTag/TestSinceTag.java test/jdk/javadoc/doclet/testSinceTag/pkg1/C1.java test/jdk/javadoc/doclet/testSingleQuotedLink/TestSingleQuotedLink.java test/jdk/javadoc/doclet/testSingleQuotedLink/pkg1/C1.java test/jdk/javadoc/doclet/testSingleQuotedLink/pkg1/C2.java test/jdk/javadoc/doclet/testSingleQuotedLink/pkg1/package.html test/jdk/javadoc/doclet/testSourceTab/DoubleTab/C.java test/jdk/javadoc/doclet/testSourceTab/SingleTab/C.java test/jdk/javadoc/doclet/testSourceTab/TestSourceTab.java test/jdk/javadoc/doclet/testStylesheet/TestStylesheet.java test/jdk/javadoc/doclet/testStylesheet/pkg/A.java test/jdk/javadoc/doclet/testSubTitle/TestSubTitle.java test/jdk/javadoc/doclet/testSubTitle/pkg/C.java test/jdk/javadoc/doclet/testSubTitle/pkg/package.html test/jdk/javadoc/doclet/testSummaryHeading/C.java test/jdk/javadoc/doclet/testSummaryHeading/TestSummaryHeading.java test/jdk/javadoc/doclet/testSuperclassInSerialForm/TestSuperClassInSerialForm.java test/jdk/javadoc/doclet/testSuperclassInSerialForm/pkg/SubClass.java test/jdk/javadoc/doclet/testSuperclassInSerialForm/pkg/SuperClass.java test/jdk/javadoc/doclet/testSupplementary/C.java test/jdk/javadoc/doclet/testSupplementary/TestSupplementary.java test/jdk/javadoc/doclet/testTagInheritence/TestTagInheritence.java test/jdk/javadoc/doclet/testTagInheritence/firstSentence/A.java test/jdk/javadoc/doclet/testTagInheritence/firstSentence/B.java test/jdk/javadoc/doclet/testTagInheritence/firstSentence2/A.java test/jdk/javadoc/doclet/testTagInheritence/firstSentence2/B.java test/jdk/javadoc/doclet/testTagInheritence/firstSentence2/C.java test/jdk/javadoc/doclet/testTagInheritence/pkg/TestAbstractClass.java test/jdk/javadoc/doclet/testTagInheritence/pkg/TestInterface.java test/jdk/javadoc/doclet/testTagInheritence/pkg/TestInterfaceForAbstractClass.java test/jdk/javadoc/doclet/testTagInheritence/pkg/TestSuperSuperClass.java test/jdk/javadoc/doclet/testTagInheritence/pkg/TestSuperSuperInterface.java test/jdk/javadoc/doclet/testTagInheritence/pkg/TestTagInheritence.java test/jdk/javadoc/doclet/testTagMisuse/TestTagMisuse.java test/jdk/javadoc/doclet/testTagOutput/TestTagOutput.java test/jdk/javadoc/doclet/testTagOutput/pkg1/DeprecatedTag.java test/jdk/javadoc/doclet/testThrowsHead/C.java test/jdk/javadoc/doclet/testThrowsHead/TestThrowsHead.java test/jdk/javadoc/doclet/testThrowsInheritence/C.java test/jdk/javadoc/doclet/testThrowsInheritence/Foo.java test/jdk/javadoc/doclet/testThrowsInheritence/I.java test/jdk/javadoc/doclet/testThrowsInheritence/Iface.java test/jdk/javadoc/doclet/testThrowsInheritence/TestThrowsTagInheritence.java test/jdk/javadoc/doclet/testThrowsInheritence/pkg/Abstract.java test/jdk/javadoc/doclet/testThrowsInheritence/pkg/Extender.java test/jdk/javadoc/doclet/testThrowsTag/TestThrowsTag.java test/jdk/javadoc/doclet/testThrowsTag/pkg/C.java test/jdk/javadoc/doclet/testThrowsTag/pkg/P.java test/jdk/javadoc/doclet/testThrowsTag/pkg/T1.java test/jdk/javadoc/doclet/testThrowsTag/pkg/T2.java test/jdk/javadoc/doclet/testThrowsTag/pkg/T3.java test/jdk/javadoc/doclet/testThrowsTag/pkg/T4.java test/jdk/javadoc/doclet/testThrowsTag/pkg/T5.java test/jdk/javadoc/doclet/testThrowsTag/pkg/T6.java test/jdk/javadoc/doclet/testThrowsTag/pkg/T7.java test/jdk/javadoc/doclet/testThrowsTag/pkg/T8.java test/jdk/javadoc/doclet/testTitleInHref/TestTitleInHref.java test/jdk/javadoc/doclet/testTitleInHref/package-list test/jdk/javadoc/doclet/testTitleInHref/pkg/Class.java test/jdk/javadoc/doclet/testTitleInHref/pkg/Interface.java test/jdk/javadoc/doclet/testTitleInHref/pkg/Links.java test/jdk/javadoc/doclet/testTopOption/TestTopOption.java test/jdk/javadoc/doclet/testTopOption/overview.html test/jdk/javadoc/doclet/testTopOption/pkg/AnnotationType.java test/jdk/javadoc/doclet/testTopOption/pkg/Cl.java test/jdk/javadoc/doclet/testTypeAnnotations/TestTypeAnnotations.java test/jdk/javadoc/doclet/testTypeAnnotations/typeannos/ClassExtends.java test/jdk/javadoc/doclet/testTypeAnnotations/typeannos/ClassParameters.java test/jdk/javadoc/doclet/testTypeAnnotations/typeannos/Fields.java test/jdk/javadoc/doclet/testTypeAnnotations/typeannos/MethodReturnType.java test/jdk/javadoc/doclet/testTypeAnnotations/typeannos/MethodTypeParameters.java test/jdk/javadoc/doclet/testTypeAnnotations/typeannos/Parameters.java test/jdk/javadoc/doclet/testTypeAnnotations/typeannos/Receivers.java test/jdk/javadoc/doclet/testTypeAnnotations/typeannos/Throws.java test/jdk/javadoc/doclet/testTypeAnnotations/typeannos/TypeParameters.java test/jdk/javadoc/doclet/testTypeAnnotations/typeannos/Varargs.java test/jdk/javadoc/doclet/testTypeAnnotations/typeannos/Wildcards.java test/jdk/javadoc/doclet/testTypeParams/TestTypeParameters.java test/jdk/javadoc/doclet/testTypeParams/pkg/C.java test/jdk/javadoc/doclet/testTypeParams/pkg/ClassUseTest3.java test/jdk/javadoc/doclet/testTypeParams/pkg/Foo4.java test/jdk/javadoc/doclet/testTypeParams/pkg/ParamTest2.java test/jdk/javadoc/doclet/testTypeParams/pkg/Parent.java test/jdk/javadoc/doclet/testUnnamedPackage/BadSource.java test/jdk/javadoc/doclet/testUnnamedPackage/C.java test/jdk/javadoc/doclet/testUnnamedPackage/TestUnnamedPackage.java test/jdk/javadoc/doclet/testUnnamedPackage/package.html test/jdk/javadoc/doclet/testUseOption/C.java test/jdk/javadoc/doclet/testUseOption/TestUseOption.java test/jdk/javadoc/doclet/testUseOption/UsedInC.java test/jdk/javadoc/doclet/testUseOption/pkg1/AnAbstract.java test/jdk/javadoc/doclet/testUseOption/pkg1/C1.java test/jdk/javadoc/doclet/testUseOption/pkg1/C10.java test/jdk/javadoc/doclet/testUseOption/pkg1/C2.java test/jdk/javadoc/doclet/testUseOption/pkg1/C4.java test/jdk/javadoc/doclet/testUseOption/pkg1/C5.java test/jdk/javadoc/doclet/testUseOption/pkg1/C6.java test/jdk/javadoc/doclet/testUseOption/pkg1/C7.java test/jdk/javadoc/doclet/testUseOption/pkg1/C8.java test/jdk/javadoc/doclet/testUseOption/pkg1/C9.java test/jdk/javadoc/doclet/testUseOption/pkg1/UsedClass.java test/jdk/javadoc/doclet/testUseOption/pkg1/UsedInterface.java test/jdk/javadoc/doclet/testUseOption/pkg1/UsedInterfaceA.java test/jdk/javadoc/doclet/testUseOption/pkg1/package.html test/jdk/javadoc/doclet/testUseOption/pkg2/C3.java test/jdk/javadoc/doclet/testUseOption/pkg2/package.html test/jdk/javadoc/doclet/testUseOption/unique/C1.java test/jdk/javadoc/doclet/testUseOption/unique/UseMe.java test/jdk/javadoc/doclet/testValueTag/TestValueTag.java test/jdk/javadoc/doclet/testValueTag/pkg1/Class1.java test/jdk/javadoc/doclet/testValueTag/pkg1/Class2.java test/jdk/javadoc/doclet/testValueTag/pkg1/CustomTagUsage.java test/jdk/javadoc/doclet/testValueTag/pkg2/Class3.java test/jdk/javadoc/doclet/testValueTag/pkg2/package.html test/jdk/javadoc/doclet/testWarnBadParamNames/C.java test/jdk/javadoc/doclet/testWarnBadParamNames/TestWarnBadParamNames.java test/jdk/javadoc/doclet/testWarnings/TestWarnings.java test/jdk/javadoc/doclet/testWarnings/pkg/X.java test/jdk/javadoc/doclet/testWarnings/pkg/package.html test/jdk/javadoc/doclet/testWindowTitle/TestWindowTitle.java test/jdk/javadoc/doclet/testWindowTitle/p1/C1.java test/jdk/javadoc/doclet/testWindowTitle/p2/C2.java test/jdk/javadoc/doclet/testXOption/TestXOption.java test/jdk/javadoc/doclet/typeAnnotations/smoke/TestSmoke.java test/jdk/javadoc/doclet/typeAnnotations/smoke/pkg/TargetTypes.java test/jdk/javadoc/tool/6176978/T6176978.java test/jdk/javadoc/tool/6176978/X.java test/jdk/javadoc/tool/6227454/Test.java test/jdk/javadoc/tool/6942366/T6942366.java test/jdk/javadoc/tool/6942366/Test.java test/jdk/javadoc/tool/6942366/p/Base.java test/jdk/javadoc/tool/6958836/Test.java test/jdk/javadoc/tool/6958836/errs/Errors.java test/jdk/javadoc/tool/6958836/warns/Warnings.java test/jdk/javadoc/tool/6964914/Error.java test/jdk/javadoc/tool/6964914/JavacWarning.java test/jdk/javadoc/tool/6964914/JavadocWarning.java test/jdk/javadoc/tool/6964914/Test.java test/jdk/javadoc/tool/6964914/TestStdDoclet.java test/jdk/javadoc/tool/6964914/TestUserDoclet.java test/jdk/javadoc/tool/8025693/Test.java test/jdk/javadoc/tool/BreakIteratorWarning.java test/jdk/javadoc/tool/CheckResourceKeys.java test/jdk/javadoc/tool/EnsureNewOldDoclet.java test/jdk/javadoc/tool/FlagsTooEarly.java test/jdk/javadoc/tool/InlineTagsWithBraces.java test/jdk/javadoc/tool/LangVers.java test/jdk/javadoc/tool/MaxWarns.java test/jdk/javadoc/tool/NoStar.java test/jdk/javadoc/tool/QuietOption.java test/jdk/javadoc/tool/ReleaseOption.java test/jdk/javadoc/tool/ReleaseOptionSource.java test/jdk/javadoc/tool/T4696488.java test/jdk/javadoc/tool/T4994049/FileWithTabs.java test/jdk/javadoc/tool/T4994049/T4994049.java test/jdk/javadoc/tool/T6551367.java test/jdk/javadoc/tool/T6968833.java test/jdk/javadoc/tool/VerifyLocale.java test/jdk/javadoc/tool/XWerror.java test/jdk/javadoc/tool/api/basic/APITest.java test/jdk/javadoc/tool/api/basic/DocletPathTest.java test/jdk/javadoc/tool/api/basic/DocumentationToolLocationTest.java test/jdk/javadoc/tool/api/basic/GetSourceVersionsTest.java test/jdk/javadoc/tool/api/basic/GetTask_DiagListenerTest.java test/jdk/javadoc/tool/api/basic/GetTask_DocletClassTest.java test/jdk/javadoc/tool/api/basic/GetTask_FileManagerTest.java test/jdk/javadoc/tool/api/basic/GetTask_FileObjectsTest.java test/jdk/javadoc/tool/api/basic/GetTask_OptionsTest.java test/jdk/javadoc/tool/api/basic/GetTask_WriterTest.java test/jdk/javadoc/tool/api/basic/IsSupportedOptionTest.java test/jdk/javadoc/tool/api/basic/JavadocTaskImplTest.java test/jdk/javadoc/tool/api/basic/RunTest.java test/jdk/javadoc/tool/api/basic/TagletPathTest.java test/jdk/javadoc/tool/api/basic/Task_reuseTest.java test/jdk/javadoc/tool/api/basic/pkg/C.java test/jdk/javadoc/tool/api/basic/taglets/UnderlineTaglet.java test/jdk/javadoc/tool/badSuper/BadSuper.java test/jdk/javadoc/tool/badSuper/p/A.java test/jdk/javadoc/tool/badSuper/p/B.java test/jdk/javadoc/tool/completionFailure/CompletionFailure.java test/jdk/javadoc/tool/completionFailure/pkg/A.java test/jdk/javadoc/tool/completionFailure/pkg/B.java test/jdk/javadoc/tool/doclint/DocLintTest.java test/jdk/javadoc/tool/doclint/ImplicitHeadersTest.java test/jdk/javadoc/tool/dupOk/DupOk.java test/jdk/javadoc/tool/dupOk/sp1/p/A.java test/jdk/javadoc/tool/dupOk/sp2/p/A.java test/jdk/javadoc/tool/dupOk/sp2/p/B.java test/jdk/javadoc/tool/enum/docComments/Main.java test/jdk/javadoc/tool/enum/docComments/pkg1/Operation.java test/jdk/javadoc/tool/enum/enumType/Main.java test/jdk/javadoc/tool/enum/enumType/expected.out test/jdk/javadoc/tool/enum/enumType/pkg1/QuotablePerson.java test/jdk/javadoc/tool/generics/genericClass/Main.java test/jdk/javadoc/tool/generics/genericClass/expected.out test/jdk/javadoc/tool/generics/genericClass/pkg1/A.java test/jdk/javadoc/tool/generics/genericInnerAndOuter/Main.java test/jdk/javadoc/tool/generics/genericInnerAndOuter/expected.out test/jdk/javadoc/tool/generics/genericInnerAndOuter/pkg1/O.java test/jdk/javadoc/tool/generics/genericInnerAndOuter/pkg1/X.java test/jdk/javadoc/tool/generics/genericInterface/Main.java test/jdk/javadoc/tool/generics/genericInterface/expected.out test/jdk/javadoc/tool/generics/genericInterface/pkg1/A.java test/jdk/javadoc/tool/generics/genericMethod/Main.java test/jdk/javadoc/tool/generics/genericMethod/expected.out test/jdk/javadoc/tool/generics/genericMethod/pkg1/A.java test/jdk/javadoc/tool/generics/genericSuper/Main.java test/jdk/javadoc/tool/generics/genericSuper/expected.out test/jdk/javadoc/tool/generics/genericSuper/pkg1/A.java test/jdk/javadoc/tool/generics/supertypes/Main.java test/jdk/javadoc/tool/generics/supertypes/expected.out test/jdk/javadoc/tool/generics/supertypes/pkg1/A.java test/jdk/javadoc/tool/generics/supertypes/pkg1/B.java test/jdk/javadoc/tool/generics/throwsGeneric/Main.java test/jdk/javadoc/tool/generics/throwsGeneric/expected.out test/jdk/javadoc/tool/generics/throwsGeneric/pkg1/A.java test/jdk/javadoc/tool/generics/tparamCycle/Main.java test/jdk/javadoc/tool/generics/tparamCycle/pkg1/LikeEnum.java test/jdk/javadoc/tool/generics/tparamTagOnMethod/Main.java test/jdk/javadoc/tool/generics/tparamTagOnMethod/expected.out test/jdk/javadoc/tool/generics/tparamTagOnMethod/pkg1/A.java test/jdk/javadoc/tool/generics/tparamTagOnType/Main.java test/jdk/javadoc/tool/generics/tparamTagOnType/expected.out test/jdk/javadoc/tool/generics/tparamTagOnType/pkg1/A.java test/jdk/javadoc/tool/generics/wildcards/Main.java test/jdk/javadoc/tool/generics/wildcards/expected.out test/jdk/javadoc/tool/generics/wildcards/pkg1/A.java test/jdk/javadoc/tool/imports/I.java test/jdk/javadoc/tool/imports/MissingImport.java test/jdk/javadoc/tool/lib/Tester.java test/jdk/javadoc/tool/nonConstExprs/Test.java test/jdk/javadoc/tool/outputRedirect/Test.java test/jdk/javadoc/tool/outputRedirect/p/OutputRedirect.java test/jdk/javadoc/tool/parser/7091528/T7091528.java test/jdk/javadoc/tool/parser/7091528/p/C1.java test/jdk/javadoc/tool/parser/7091528/p/C3.java test/jdk/javadoc/tool/parser/7091528/p/q/C2.java test/jdk/javadoc/tool/sampleapi/README.txt test/jdk/javadoc/tool/sampleapi/SampleApiTest.java test/jdk/javadoc/tool/sampleapi/lib/sampleapi/SampleApi.java test/jdk/javadoc/tool/sampleapi/lib/sampleapi/SampleApiDefaultRunner.java test/jdk/javadoc/tool/sampleapi/lib/sampleapi/generator/DocCommentGenerator.java test/jdk/javadoc/tool/sampleapi/lib/sampleapi/generator/Documentifier.java test/jdk/javadoc/tool/sampleapi/lib/sampleapi/generator/PackageGenerator.java test/jdk/javadoc/tool/sampleapi/lib/sampleapi/util/PoorDocCommentTable.java test/jdk/javadoc/tool/sampleapi/lib/sampleapi/util/SimpleMultiplier.java test/jdk/javadoc/tool/sampleapi/res/xml/fx.xml test/jdk/javadoc/tool/sampleapi/res/xml/simple.xml test/jdk/javadoc/tool/sampleapi/res/xml/tiny.xml test/jdk/javadoc/tool/sourceOnly/Test.java test/jdk/javadoc/tool/sourceOnly/p/NonSource.class test/jdk/javadoc/tool/sourceOnly/p/SourceOnly.java test/jdk/javadoc/tool/sourceOption/SourceOption.java test/jdk/javadoc/tool/sourceOption/p/LambdaConstructTest.java test/jdk/javadoc/tool/subpackageIgnore/SubpackageIgnore.java test/jdk/javadoc/tool/subpackageIgnore/pkg1/not-subpkg/SomeJavaFile.java test/jdk/javadoc/tool/varArgs/Main.java test/jdk/javadoc/tool/varArgs/expected.out test/jdk/javadoc/tool/varArgs/pkg1/A.java test/tools/javac/diags/CheckResourceKeys.java test/tools/javadoc/api/basic/JavadocTaskImplTest.java test/tools/javadoc/api/basic/RunTest.java test/tools/javadoc/api/basic/TagletPathTest.java test/tools/javadoc/doclint/DocLintTest.java test/tools/javadoc/doclint/ImplicitHeadersTest.java test/tools/javadoc/sampleapi/SampleApiTest.java
diffstat 1002 files changed, 129851 insertions(+), 919 deletions(-) [+]
line wrap: on
line diff
--- a/make/CompileInterim.gmk	Wed Jan 27 22:23:21 2016 -0800
+++ b/make/CompileInterim.gmk	Sat Nov 28 18:52:17 2015 -0800
@@ -46,7 +46,7 @@
       $(SUPPORT_OUTPUTDIR)/gensrc/jdk.compiler \
       $(SUPPORT_OUTPUTDIR)/gensrc/jdk.javadoc \
       $(SUPPORT_OUTPUTDIR)/gensrc/jdk.jdeps, \
-    EXCLUDES := sun jdk, \
+    EXCLUDES := sun, \
     COPY := .gif .png .xml .css .js javax.tools.JavaCompilerTool, \
     BIN := $(BUILDTOOLS_OUTPUTDIR)/langtools_interim_classes, \
     JAR := $(INTERIM_LANGTOOLS_JAR)))
--- a/make/gensrc/Gensrc-jdk.javadoc.gmk	Wed Jan 27 22:23:21 2016 -0800
+++ b/make/gensrc/Gensrc-jdk.javadoc.gmk	Sat Nov 28 18:52:17 2015 -0800
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -25,8 +25,11 @@
 
 include GensrcCommon.gmk
 
+$(eval $(call SetupVersionProperties,OLD_JAVADOC_VERSION,\
+    com/sun/tools/javadoc/resources/version.properties))
+
 $(eval $(call SetupVersionProperties,JAVADOC_VERSION,\
-    com/sun/tools/javadoc/resources/version.properties))
+    jdk/javadoc/internal/tool/resources/version.properties))
 
 $(eval $(call SetupCompileProperties,COMPILE_PROPERTIES, $(JAVADOC_VERSION)))
 
--- a/make/netbeans/langtools/build.xml	Wed Jan 27 22:23:21 2016 -0800
+++ b/make/netbeans/langtools/build.xml	Sat Nov 28 18:52:17 2015 -0800
@@ -93,7 +93,11 @@
         <macrodef name="resolve-main-class">
           <attribute name="tool.name"/>
           <sequential>
-            <property name="langtools.main.class" value="${tool.@{tool.name}.main.class}"/>
+            <condition property="langtools.main.class"
+                    value="jdk.javadoc.internal.tool.Main"
+                    else="${tool.@{tool.name}.main.class}">
+                <equals arg1="${langtools.tool.name}" arg2="javadoc"/>
+            </condition>
           </sequential>
         </macrodef>
     </target>
--- a/src/java.compiler/share/classes/javax/tools/ToolProvider.java	Wed Jan 27 22:23:21 2016 -0800
+++ b/src/java.compiler/share/classes/javax/tools/ToolProvider.java	Sat Nov 28 18:52:17 2015 -0800
@@ -104,7 +104,7 @@
     }
 
     private static final String systemDocumentationToolName
-        = "com.sun.tools.javadoc.api.JavadocTool";
+        = "jdk.javadoc.internal.api.JavadocTool";
 
     /**
      * Returns the Java&trade; programming language documentation tool provided
--- a/src/jdk.javadoc/share/classes/com/sun/javadoc/package-info.java	Wed Jan 27 22:23:21 2016 -0800
+++ b/src/jdk.javadoc/share/classes/com/sun/javadoc/package-info.java	Sat Nov 28 18:52:17 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,11 @@
  */
 
 /**
+<p style="font-style: italic; font-size:larger">
+<b>Note:</b> The declarations in this package have been superseded by those
+in the package {@code jdk.javadoc.doclet}.
+</p>
+
 The Doclet API (also called the Javadoc API) provides a mechanism
 for clients to inspect the source-level structure of programs and
 libraries, including javadoc comments embedded in the source.
--- a/src/jdk.javadoc/share/classes/com/sun/tools/doclets/Taglet.java	Wed Jan 27 22:23:21 2016 -0800
+++ b/src/jdk.javadoc/share/classes/com/sun/tools/doclets/Taglet.java	Sat Nov 28 18:52:17 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -29,7 +29,14 @@
 
 /**
  * The interface for a custom tag used by Doclets. A custom
- * tag must implement this interface.  To be loaded and used by
+ * tag must implement this interface.
+ *
+ * <p style="font-style: italic; font-size:larger">
+ * <b>Note:</b> This interface has been superseded by one
+ * in the new package {@code jdk.javadoc.doclet.taglet}.
+ * </p>
+ *
+ * To be loaded and used by
  * doclets at run-time, the taglet must have a static method called
  * <code>register</code> that accepts a {@link java.util.Map} as an
  * argument with the following signature:
--- a/src/jdk.javadoc/share/classes/com/sun/tools/doclets/formats/html/markup/package-info.java	Wed Jan 27 22:23:21 2016 -0800
+++ b/src/jdk.javadoc/share/classes/com/sun/tools/doclets/formats/html/markup/package-info.java	Sat Nov 28 18:52:17 2015 -0800
@@ -31,4 +31,5 @@
     This code and its internal interfaces are subject to change or
     deletion without notice.</b>
  */
+
 package com.sun.tools.doclets.formats.html.markup;
--- a/src/jdk.javadoc/share/classes/com/sun/tools/doclets/formats/html/package-info.java	Wed Jan 27 22:23:21 2016 -0800
+++ b/src/jdk.javadoc/share/classes/com/sun/tools/doclets/formats/html/package-info.java	Sat Nov 28 18:52:17 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -24,8 +24,7 @@
  */
 
 /**
-    This is the default doclet provided with JDK that produces Javadoc's
-    default HTML-formatted API output.  For more documentation
+    This produces Javadoc's HTML-formatted API output.  For more documentation
     on this doclet, please refer to the link below.
 
     @see <a href="http://www.java.sun.com/javadoc/standard-doclet.html">
@@ -36,4 +35,5 @@
     This code and its internal interfaces are subject to change or
     deletion without notice.</b>
 */
+
 package com.sun.tools.doclets.formats.html;
--- a/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/builders/package-info.java	Wed Jan 27 22:23:21 2016 -0800
+++ b/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/builders/package-info.java	Sat Nov 28 18:52:17 2015 -0800
@@ -37,4 +37,5 @@
     This code and its internal interfaces are subject to change or
     deletion without notice.</b>
 */
+
 package com.sun.tools.doclets.internal.toolkit.builders;
--- a/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/package-info.java	Wed Jan 27 22:23:21 2016 -0800
+++ b/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/package-info.java	Sat Nov 28 18:52:17 2015 -0800
@@ -53,4 +53,5 @@
     This code and its internal interfaces are subject to change or
     deletion without notice.</b>
 */
+
 package com.sun.tools.doclets.internal.toolkit;
--- a/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/package-info.java	Wed Jan 27 22:23:21 2016 -0800
+++ b/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/package-info.java	Sat Nov 28 18:52:17 2015 -0800
@@ -48,4 +48,5 @@
     This code and its internal interfaces are subject to change or
     deletion without notice.</b>
 */
+
 package com.sun.tools.doclets.internal.toolkit.taglets;
--- a/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/util/links/package-info.java	Wed Jan 27 22:23:21 2016 -0800
+++ b/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/util/links/package-info.java	Sat Nov 28 18:52:17 2015 -0800
@@ -31,4 +31,5 @@
     This code and its internal interfaces are subject to change or
     deletion without notice.</b>
 */
+
 package com.sun.tools.doclets.internal.toolkit.util.links;
--- a/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/util/package-info.java	Wed Jan 27 22:23:21 2016 -0800
+++ b/src/jdk.javadoc/share/classes/com/sun/tools/doclets/internal/toolkit/util/package-info.java	Sat Nov 28 18:52:17 2015 -0800
@@ -32,4 +32,5 @@
     This code and its internal interfaces are subject to change or
     deletion without notice.</b>
 */
+
 package com.sun.tools.doclets.internal.toolkit.util;
--- a/src/jdk.javadoc/share/classes/com/sun/tools/doclets/package-info.java	Wed Jan 27 22:23:21 2016 -0800
+++ b/src/jdk.javadoc/share/classes/com/sun/tools/doclets/package-info.java	Sat Nov 28 18:52:17 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,11 @@
  */
 
 /**
+<p style="font-style: italic; font-size:larger">
+<b>Note:</b> The declarations in this package have been superseded by those
+in the new package {@code jdk.javadoc.doclet}.
+</p>
+
     As of JDK version 1.5, replaced by
     {@code com.sun.tools.doclets.internal.toolkit.util}.
 
@@ -32,4 +37,5 @@
     This code and its internal interfaces are subject to change or
     deletion without notice.</b>
 */
+
 package com.sun.tools.doclets;
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/Start.java	Wed Jan 27 22:23:21 2016 -0800
+++ b/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/Start.java	Sat Nov 28 18:52:17 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -103,7 +103,11 @@
         this(programName, errWriter, warnWriter, noticeWriter, defaultDocletClassName, null);
     }
 
-    Start(String programName,
+    public Start(PrintWriter pw) {
+        this(javadocName, pw, pw, pw, standardDocletClassName);
+    }
+
+    public Start(String programName,
           PrintWriter errWriter,
           PrintWriter warnWriter,
           PrintWriter noticeWriter,
@@ -139,7 +143,7 @@
         this(javadocName, docletParentClassLoader);
     }
 
-    Start() {
+    public Start() {
         this(javadocName);
     }
 
@@ -212,7 +216,7 @@
     /**
      * Main program - external wrapper
      */
-    int begin(String... argv) {
+    public int begin(String... argv) {
         boolean ok = begin(null, argv, Collections.<JavaFileObject> emptySet());
         return ok ? 0 : 1;
     }
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/api/JavadocTaskImpl.java	Wed Jan 27 22:23:21 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.api;
-
-import com.sun.tools.javac.util.ClientCodeException;
-import java.util.Locale;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import javax.tools.DocumentationTool.DocumentationTask;
-import javax.tools.JavaFileObject;
-
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javadoc.Start;
-import java.util.Collections;
-
-import com.sun.tools.javac.util.DefinedBy;
-import com.sun.tools.javac.util.DefinedBy.Api;
-
-/**
- * Provides access to functionality specific to the JDK documentation tool,
- * javadoc.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own
- * risk.  This code and its internal interfaces are subject to change
- * or deletion without notice.</b></p>
- */
-public class JavadocTaskImpl implements DocumentationTask {
-    private final AtomicBoolean used = new AtomicBoolean();
-
-    private final Context context;
-    private Class<?> docletClass;
-    private Iterable<String> options;
-    private Iterable<? extends JavaFileObject> fileObjects;
-    private Locale locale;
-
-    public JavadocTaskImpl(Context context, Class<?> docletClass,
-            Iterable<String> options, Iterable<? extends JavaFileObject> fileObjects) {
-        this.context = context;
-        this.docletClass = docletClass;
-
-        this.options = (options == null) ? Collections.<String>emptySet()
-                : nullCheck(options);
-        this.fileObjects = (fileObjects == null) ? Collections.<JavaFileObject>emptySet()
-                : nullCheck(fileObjects);
-        setLocale(Locale.getDefault());
-    }
-
-    @DefinedBy(Api.COMPILER)
-    public void setLocale(Locale locale) {
-        if (used.get())
-            throw new IllegalStateException();
-        this.locale = locale;
-    }
-
-    @DefinedBy(Api.COMPILER)
-    public Boolean call() {
-        if (!used.getAndSet(true)) {
-            initContext();
-            Start jdoc = new Start(context);
-            try {
-                return jdoc.begin(docletClass, options, fileObjects);
-            } catch (ClientCodeException e) {
-                throw new RuntimeException(e.getCause());
-            }
-        } else {
-            throw new IllegalStateException("multiple calls to method 'call'");
-        }
-    }
-
-    private void initContext() {
-        //initialize compiler's default locale
-        context.put(Locale.class, locale);
-    }
-
-    private static <T> Iterable<T> nullCheck(Iterable<T> items) {
-        for (T item: items) {
-            if (item == null)
-                throw new NullPointerException();
-        }
-        return items;
-    }
-}
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/api/JavadocTool.java	Wed Jan 27 22:23:21 2016 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,180 +0,0 @@
-/*
- * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.javadoc.api;
-
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.Writer;
-import java.nio.charset.Charset;
-import java.util.Collections;
-import java.util.EnumSet;
-import java.util.Locale;
-import java.util.Objects;
-import java.util.Set;
-
-import javax.lang.model.SourceVersion;
-import javax.tools.DiagnosticListener;
-import javax.tools.DocumentationTool;
-import javax.tools.JavaFileManager;
-import javax.tools.JavaFileObject;
-import javax.tools.StandardJavaFileManager;
-
-import com.sun.tools.javac.api.ClientCodeWrapper;
-import com.sun.tools.javac.file.JavacFileManager;
-import com.sun.tools.javac.file.BaseFileManager;
-import com.sun.tools.javac.util.ClientCodeException;
-import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.DefinedBy;
-import com.sun.tools.javac.util.DefinedBy.Api;
-import com.sun.tools.javac.util.Log;
-import com.sun.tools.javadoc.ToolOption;
-
-/**
- * Provides access to functionality specific to the JDK documentation tool,
- * javadoc.
- *
- * <p><b>This is NOT part of any supported API.
- * If you write code that depends on this, you do so at your own
- * risk.  This code and its internal interfaces are subject to change
- * or deletion without notice.</b></p>
- */
-public class JavadocTool implements DocumentationTool {
-    @Override @DefinedBy(Api.COMPILER)
-    public DocumentationTask getTask(
-            Writer out,
-            JavaFileManager fileManager,
-            DiagnosticListener<? super JavaFileObject> diagnosticListener,
-            Class<?> docletClass,
-            Iterable<String> options,
-            Iterable<? extends JavaFileObject> compilationUnits) {
-        Context context = new Context();
-        return getTask(out, fileManager, diagnosticListener,
-                docletClass, options, compilationUnits, context);
-    }
-
-    public DocumentationTask getTask(
-            Writer out,
-            JavaFileManager fileManager,
-            DiagnosticListener<? super JavaFileObject> diagnosticListener,
-            Class<?> docletClass,
-            Iterable<String> options,
-            Iterable<? extends JavaFileObject> compilationUnits,
-            Context context) {
-        try {
-            ClientCodeWrapper ccw = ClientCodeWrapper.instance(context);
-
-            if (options != null) {
-                for (String option : options)
-                    Objects.requireNonNull(option);
-            }
-
-            if (compilationUnits != null) {
-                compilationUnits = ccw.wrapJavaFileObjects(compilationUnits); // implicit null check
-                for (JavaFileObject cu : compilationUnits) {
-                    if (cu.getKind() != JavaFileObject.Kind.SOURCE) {
-                        final String kindMsg = "All compilation units must be of SOURCE kind";
-                        throw new IllegalArgumentException(kindMsg);
-                    }
-                }
-            }
-
-            if (diagnosticListener != null)
-                context.put(DiagnosticListener.class, ccw.wrap(diagnosticListener));
-
-            if (out == null)
-                context.put(Log.outKey, new PrintWriter(System.err, true));
-            else if (out instanceof PrintWriter)
-                context.put(Log.outKey, ((PrintWriter) out));
-            else
-                context.put(Log.outKey, new PrintWriter(out, true));
-
-            if (fileManager == null) {
-                fileManager = getStandardFileManager(diagnosticListener, null, null);
-                if (fileManager instanceof BaseFileManager) {
-                    ((BaseFileManager) fileManager).autoClose = true;
-                }
-            }
-            fileManager = ccw.wrap(fileManager);
-            context.put(JavaFileManager.class, fileManager);
-
-            return new JavadocTaskImpl(context, docletClass, options, compilationUnits);
-        } catch (ClientCodeException ex) {
-            throw new RuntimeException(ex.getCause());
-        }
-    }
-
-    // TODO: used shared static method in JavacFileManager
-    @Override @DefinedBy(Api.COMPILER)
-    public StandardJavaFileManager getStandardFileManager(
-            DiagnosticListener<? super JavaFileObject> diagnosticListener,
-            Locale locale,
-            Charset charset) {
-        Context context = new Context();
-        context.put(Locale.class, locale);
-        if (diagnosticListener != null)
-            context.put(DiagnosticListener.class, diagnosticListener);
-        PrintWriter pw = (charset == null)
-                ? new PrintWriter(System.err, true)
-                : new PrintWriter(new OutputStreamWriter(System.err, charset), true);
-        context.put(Log.outKey, pw);
-        return new JavacFileManager(context, true, charset);
-    }
-
-    @Override @DefinedBy(Api.COMPILER)
-    public int run(InputStream in, OutputStream out, OutputStream err, String... arguments) {
-        PrintWriter err_pw = new PrintWriter(err == null ? System.err : err, true);
-        PrintWriter out_pw = new PrintWriter(out == null ? System.out : out);
-        try {
-            String standardDocletName = "com.sun.tools.doclets.standard.Standard";
-            ClassLoader cl = getClass().getClassLoader();
-            return com.sun.tools.javadoc.Main.execute(
-                    "javadoc", err_pw, err_pw, out_pw, standardDocletName, cl, arguments);
-        } finally {
-            err_pw.flush();
-            out_pw.flush();
-        }
-    }
-
-    @Override @DefinedBy(Api.COMPILER)
-    public Set<SourceVersion> getSourceVersions() {
-        return Collections.unmodifiableSet(
-                EnumSet.range(SourceVersion.RELEASE_3, SourceVersion.latest()));
-    }
-
-    @Override @DefinedBy(Api.COMPILER)
-    public int isSupportedOption(String option) {
-        if (option == null)
-            throw new NullPointerException();
-        for (ToolOption o: ToolOption.values()) {
-            if (o.opt.equals(option))
-                return o.hasArg ? 1 : 0;
-        }
-        return -1;
-    }
-
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/doclet/Doclet.java	Sat Nov 28 18:52:17 2015 -0800
@@ -0,0 +1,170 @@
+/*
+ * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.javadoc.doclet;
+
+import java.util.ListIterator;
+import java.util.Locale;
+import java.util.Set;
+
+import javax.lang.model.SourceVersion;
+
+/**
+ * The user doclet must implement this interface, as described in the
+ * <a href="package-summary.html#package_description">package description</a>.
+ * Each implementation of a Doclet must provide a public no-argument constructor
+ * to be used by tools to instantiate the doclet. The tool infrastructure will
+ * interact with classes implementing this interface as follows:
+ * <ol>
+ * <li> The tool will create an instance of a doclet using the no-arg constructor
+ *  of the doclet class.
+ * <li> Next, the tool calls the {@link #init init} method with an appropriate locale
+ *  and reporter.
+ * <li> Afterwards, the tool calls {@link #getSupportedOptions getSupportedOptions},
+ * and {@link #getSupportedSourceVersion getSupportedSourceVersion}.
+ * These methods are only called once.
+ * <li> As appropriate, the tool calls the {@link #run run} method on the doclet
+ * object, giving it a DocletEnvironment object, from which the doclet can determine
+ * the elements to be included in the documentation.
+ * </ol>
+ * <p>
+ * If a doclet object is created and used without the above protocol being followed,
+ * then the doclet's behavior is not defined by this interface specification.
+ * <p> To start the doclet, pass {@code -doclet} followed by the fully-qualified
+ * name of the entry point class (i.e. the implementation of this interface) on
+ * the javadoc tool command line.
+ *
+ * @since 9
+ */
+public interface Doclet {
+
+    /**
+     * Initializes this doclet with the given locale and error reporter.
+     * This locale will be used by the reporter and the doclet components.
+     * It is recommended to call this as early as possible, for a
+     * uniform localized user experience,
+     * @param locale the locale to be used
+     * @param reporter the reporter to be used
+     */
+    public void init(Locale locale, Reporter reporter);
+
+    /**
+     * Returns a name identifying the doclet. A name is a simple identifier
+     * without white spaces, as defined in <cite>The Java&trade; Language Specification</cite>,
+     * section 6.2 "Names and Identifiers".
+     * @return name of the Doclet
+     */
+    public abstract String getName();
+
+    /**
+     * Returns all the supported options.
+     *
+     * @return a Set containing all the supported options, an empty set if none.
+     */
+    public Set<Option> getSupportedOptions();
+
+    /**
+     * Returns the version of the Java Programming Language supported
+     * by this doclet.
+     *
+     * @return  the language version supported by this doclet, usually
+     * the latest version.
+     */
+    public SourceVersion getSupportedSourceVersion();
+
+    /**
+     * The entry point of the doclet. Further processing will commence as
+     * instructed by this method.
+     *
+     * @param environment from which essential information can be extracted
+     * @return true on success
+     */
+    public boolean run(DocletEnvironment environment);
+
+    /**
+     * An encapsulation of option name, aliases, parameters and descriptions
+     * as used by the Doclet.
+     */
+    interface Option {
+        /**
+         * Returns the number of arguments, this option will consume.
+         * @return number of consumed arguments
+         */
+        int getArgumentCount();
+
+        /**
+         * Returns the description of the option. For instance, the option "group", would
+         * return the synopsis of the option such as, "groups the documents".
+         * @return description if set, otherwise an empty String
+         */
+        String getDescription();
+
+        /**
+         * Returns the option kind.
+         * @return the kind of this option
+         */
+        Option.Kind getKind();
+
+        /**
+         * Returns the option name. For instance for option "-group", will return "group"
+         * @return name of the option, if set, otherwise an empty String
+         */
+        String getName();
+
+        /**
+         * Returns the parameters of the option. For instance "name &lt;p1&gt;:&lt;p2&gt;.."
+         * @return parameters if set, otherwise an empty String
+         */
+        String getParameters();
+
+        /**
+         * Checks if the given option name is handled by this option.
+         * @param option the option name with or without the leading "-"
+         * @return true if same
+         */
+        boolean matches(String option);
+
+        /**
+         * Processes the option and arguments as needed. This method will
+         * be invoked if the given option name matches the option.
+         * @param option the option
+         * @param arguments a ListIterator encapsulating the arguments
+         * @return true if operation succeeded, false otherwise
+         */
+        boolean process(String option, ListIterator<String> arguments);
+
+        /**
+         * The kind of an option.
+         */
+        public static enum Kind {
+            /** an extended option, such as those prefixed with -X */
+            EXTENDED,
+            /** a standard option */
+            STANDARD,
+            /** an implementation reserved option */
+            OTHER;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/doclet/DocletEnvironment.java	Sat Nov 28 18:52:17 2015 -0800
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.javadoc.doclet;
+
+import java.util.List;
+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 com.sun.source.util.DocTrees;
+
+/**
+ * Represents the operating environment of a single invocation
+ * of the doclet. This object can be used to access the program
+ * structures, various utilities and the user specified elements
+ * on the command line.
+ *
+ * @since 9
+ */
+public interface DocletEnvironment {
+    /**
+     * Returns the <a href="package-summary.html#included">included</a>
+     * classes, interfaces and enums in all packages.
+     *
+     * @return a Set containing {@link javax.lang.model.element.TypeElement TypeElements}.
+     */
+    Set<TypeElement> getIncludedClasses();
+
+    /**
+     * Returns an instance of the {@code DocTrees} utility class.
+     * This class provides methods to access {@code TreePath}s, {@code DocCommentTree}s
+     * and so on.
+     * @return a utility class to operate on doc trees.
+     */
+    DocTrees getDocTrees();
+
+    /**
+     * Returns an instance of the {@code Elements} utility class.
+     * This class provides methods for operating on
+     * {@link javax.lang.model.element.Element elements}.
+     * @return a utility class to operate on elements
+     */
+    Elements getElementUtils();
+
+    /**
+     * Returns the selected elements that can be documented.
+     *
+     * @param elements those that need to be checked
+     * @return elements selected, an empty list if none.
+     */
+    List<Element> getSelectedElements(List<? extends Element> elements);
+
+    /**
+     * Returns the elements <a href="package-summary.html#included">specified</a>
+     * on the command line, usually PackageElements and TypeElements.
+     * If {@code -subpackages} and {@code -exclude} options
+     * are used, return all the non-excluded packages.
+     *
+     * @return elements specified on the command line.
+     */
+    Set<Element> getSpecifiedElements();
+
+    /**
+     * Returns an instance of the {@code Types} utility class.
+     * This class provides methods for operating on
+     * {@link javax.lang.model.type.TypeMirror type mirrors}.
+     * @return a utility class to operate on type mirrors
+     */
+    Types getTypeUtils();
+
+    /**
+     * Indicates if an element is <a href="package-summary.html#included">included</a>.
+     *
+     * @param e the Element in question
+     * @return true if included, false otherwise
+     */
+    boolean isIncluded(Element e);
+
+    /**
+     * Returns the file manager used to read and write files.
+     *
+     * @return the file manager used to read and write files
+     */
+    JavaFileManager getJavaFileManager();
+
+    /**
+     * Returns the source version of the source files that were read.
+     *
+     * @return the source version
+     */
+    SourceVersion getSourceVersion();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/doclet/Reporter.java	Sat Nov 28 18:52:17 2015 -0800
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.javadoc.doclet;
+
+import javax.lang.model.element.Element;
+import javax.tools.Diagnostic;
+
+import com.sun.source.util.DocTreePath;
+
+/**
+ * This interface provides error, warning and notice reporting.
+ *
+ * @since 9
+ */
+public interface Reporter {
+
+    /**
+     * Print error message and increment error count.
+     *
+     * @param kind specify the diagnostic kind
+     * @param msg message to print
+     */
+    void print(Diagnostic.Kind kind, String msg);
+
+    /**
+     * Print an error message and increment error count.
+     *
+     * @param kind specify the diagnostic kind
+     * @param path the DocTreePath of item where the error occurs
+     * @param msg message to print
+     */
+    void print(Diagnostic.Kind kind, DocTreePath path, String msg);
+
+    /**
+     * Print an error message and increment error count.
+     *
+     * @param kind specify the diagnostic kind
+     * @param e the Element for which  the error occurs
+     * @param msg message to print
+     */
+    void print(Diagnostic.Kind kind, Element e, String msg);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/doclet/package-info.java	Sat Nov 28 18:52:17 2015 -0800
@@ -0,0 +1,251 @@
+/*
+ * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * The Doclet API provides an environment which, in conjunction with
+ * the Language Model API and Compiler Tree API, allows clients
+ * to inspect the source-level structures of programs and
+ * libraries, including javadoc comments embedded in the source.
+ *
+ * <p style="font-style: italic">
+ * <b>Note:</b> The declarations in this package supersede those
+ * in the older package {@code com.sun.javadoc}. For details on the
+ * mapping of old types to new types, see the
+ * <a href="#migration">Migration Guide</a>.
+ * </p>
+ *
+ * <p>
+ * Doclets are invoked by javadoc and this API can be used to write out
+ * program information to files.  For example, the standard doclet is
+ * invoked by default, to generate HTML documentation.
+ * <p>
+
+ * The invocation is defined by the interface {@link jdk.javadoc.doclet.Doclet}
+ * -- the {@link jdk.javadoc.doclet.Doclet#run(DocletEnvironment) run} interface
+ * method, defines the entry point.
+ * <pre>
+ *    public boolean <b>run</b>(DocletEnvironment environment)
+ * </pre>
+ * The {@link jdk.javadoc.doclet.DocletEnvironment} instance holds the environment that the
+ * doclet will be initialized with. From this environment all other information can be
+ * extracted, in the form of {@link javax.lang.model} elements. One can further use the
+ * APIs and utilities described by {@link javax.lang.model} to query Elements and Types.
+ * <p>
+ *
+ * <a name="terminology"></a>
+ * <h3>Terminology</h3>
+ *
+ * <a name="included"></a>
+ * When calling javadoc, one can pass in package names and source file names --
+ * these are called the <em>specified</em> PackageElements and TypeElements.
+ * Javadoc options are also passed in; the <em>access control</em> Javadoc options
+ * ({@code -public}, {@code -protected}, {@code -package},
+ * and {@code -private}) are used to filter program elements, producing a
+ * result set, called the <em>included</em> set, or "selected" set.
+ * <p>
+
+ * <a name="qualified"></a>
+ * A <em>qualified</em> element name is one that has its package
+ * name prepended to it, such as {@code java.lang.String}.  A non-qualified
+ * name has no package name, such as {@code String}.
+ * <p>
+ *
+ * <a name="example"></a>
+ * <h3>Example</h3>
+ *
+ * The following is an example doclet that displays information of a class
+ * and its members, supporting an option "someoption".
+ * <pre>
+ * import com.sun.source.doctree.DocCommentTree;
+ * import com.sun.source.util.DocTrees;
+ * import java.io.IOException;
+ * import java.util.Collections;
+ * import java.util.Set;
+ * import javax.lang.model.SourceVersion;
+ * import javax.lang.model.element.Element;
+ * import javax.lang.model.element.TypeElement;
+ * import jdk.javadoc.doclet.*;
+ *
+ * public class Example implements Doclet {
+ *
+ *     &#64;Override
+ *     public void init(Locale locale, Reporter reporter) {
+ *        return;
+ *     }
+ *
+ *     &#64;Override
+ *     public boolean run(RootDoc root) {
+ *         // cache the DocTrees utility class to access DocComments
+ *         DocTrees docTrees = root.getDocTrees();
+ *
+ *         // location of an element in the same directory as overview.html
+ *         try {
+ *             Element barElement = null;
+ *             for (Element e : root.getIncludedClasses()) {
+ *                 if (e.getSimpleName().toString().equals("FooBar")) {
+ *                     barElement = e;
+ *                 }
+ *             }
+ *             DocCommentTree docCommentTree =
+ *                     docTrees.getDocCommentTree(barElement, "overview.html");
+ *             if (docCommentTree != null) {
+ *                 System.out.println("Overview html: " +
+ *                         docCommentTree.getFullBody());
+ *             }
+ *         } catch (IOException missing) {
+ *             System.err.println("No overview.html found.");
+ *         }
+ *
+ *         for (TypeElement t : root.getIncludedClasses()) {
+ *             System.out.println(t.getKind() + ":" + t);
+ *             for (Element e : t.getEnclosedElements()) {
+ *                 DocCommentTree docCommentTree = docTrees.getDocCommentTree(e);
+ *                 if (docCommentTree != null) {
+ *                     System.out.println("Element (" + e.getKind() + ": " +
+ *                             e + ") has the following comments:");
+ *                     System.out.println("Entire body: " + docCommentTree.getFullBody());
+ *                     System.out.println("Block tags: " + docCommentTree.getBlockTags());
+ *                 } else {
+ *                     System.out.println("no comment.");
+ *                 }
+ *             }
+ *         }
+ *         return true;
+ *     }
+ *
+ *     &#64;Override
+ *     public String getName() {
+ *         return "Example";
+ *     }
+ *
+ *   private String someOption;
+ *
+ *   &#64;Override
+ *   public Set&lt;Option&gt; getSupportedOptions() {
+ *       Option[] options = {
+ *           new Option() {
+ *               public int getArgumentCount() {
+ *                   return 1;
+ *               }
+ *               public String getDescription() {
+ *                   return "someoption";
+ *               }
+ *               public Option.Kind getKind() {
+ *                   return Option.Kind.STANDARD;
+ *               }
+ *               public String getName() {
+ *                   return "someoption";
+ *               }
+ *               public String getParameters() {
+ *                   return "url";
+ *               }
+ *               public boolean matches(String option) {
+ *                  String opt = option.startsWith("-") ? option.substring(1) : option;
+ *                  return getName().equals(opt);
+ *               }
+ *               public boolean process(String option, ListIterator&lt;String&gt; arguments) {
+ *                  overviewpath = arguments.next();
+ *                  return true;
+ *               }
+ *          }
+ *      };
+ *      return new HashSet&lt;Option&gt;(Arrays.asList(options));
+ *     }
+ *
+ *     &#64;Override
+ *     public SourceVersion getSupportedSourceVersion() {
+ *         // support the latest release
+ *         return SourceVersion.latest();
+ *     }
+ * }
+ * </pre>
+ * <p>
+ * This doclet when invoked with a command line, such as:
+ * <pre>
+ *     javadoc -doclet Example -sourcepath &lt;source-location&gt;
+ * </pre>
+ * will produce an output, such as:
+ * <pre>
+ *  Overview.html: overview comments
+ *  ...
+ *  ...
+ *  CLASS: SomeKlass
+ *  .....
+ *  Element (METHOD: main(java.lang.String...)) has the following comments:
+ *  Entire body: The main entry point.
+ *  Block tags: @param an array of Strings
+ *  ...
+ * </pre>
+ *
+ * <h3><a name="migration">Migration Guide</a></h3>
+ *
+ * <p>Many of the types in the old {@code com.sun.javadoc} API do not have equivalents in this
+ * package. Instead, types in the {@code javax.lang.model} and {@code com.sun.source} APIs
+ * are used instead.
+ *
+ * <p>The following table gives a guide to the mapping from old types to their replacements.
+ * In some cases, there is no direct equivalent.
+ *
+ * <table style="font-family: monospace" border=1>
+    <caption>Guide for mapping old types to new types</caption>
+    <tr><th>Old Type<th>New Type
+    <tr><td>AnnotatedType<td>javax.lang.model.type.Type
+    <tr><td>AnnotationDesc<td>javax.lang.model.element.AnnotationMirror
+    <tr><td>AnnotationDesc.ElementValuePair<td>javax.lang.model.element.AnnotationValue
+    <tr><td>AnnotationTypeDoc<td>javax.lang.model.element.TypeElement
+    <tr><td>AnnotationTypeElementDoc<td>javax.lang.model.element.ExecutableElement
+    <tr><td>AnnotationValue<td>javax.lang.model.element.AnnotationValue
+    <tr><td>ClassDoc<td>javax.lang.model.element.TypeElement
+    <tr><td>ConstructorDoc<td>javax.lang.model.element.ExecutableElement
+    <tr><td>Doc<td>javax.lang.model.element.Element
+    <tr><td>DocErrorReporter<td>jdk.javadoc.doclet.Reporter
+    <tr><td>Doclet<td>jdk.javadoc.doclet.Doclet
+    <tr><td>ExecutableMemberDoc<td>javax.lang.model.element.ExecutableElement
+    <tr><td>FieldDoc<td>javax.lang.model.element.VariableElement
+    <tr><td>LanguageVersion<td>javax.lang.model.SourceVersion
+    <tr><td>MemberDoc<td>javax.lang.model.element.Element
+    <tr><td>MethodDoc<td>javax.lang.model.element.ExecutableElement
+    <tr><td>PackageDoc<td>javax.lang.model.element.PackageElement
+    <tr><td>Parameter<td>javax.lang.model.element.VariableElement
+    <tr><td>ParameterizedType<td>javax.lang.model.type.DeclaredType
+    <tr><td>ParamTag<td>com.sun.source.doctree.ParamTree
+    <tr><td>ProgramElementDoc<td>javax.lang.model.element.Element
+    <tr><td>RootDoc<td>jdk.javadoc.doclet.DocletEnvironment
+    <tr><td>SeeTag<td>com.sun.source.doctree.LinkTree<br>com.sun.source.doctree.SeeTree
+    <tr><td>SerialFieldTag<td>com.sun.source.doctree.SerialFieldTree
+    <tr><td>SourcePosition<td>com.sun.source.util.SourcePositions
+    <tr><td>Tag<td>com.sun.source.doctree.DocTree
+    <tr><td>ThrowsTag<td>com.sun.source.doctree.ThrowsTree
+    <tr><td>Type<td>javax.lang.model.type.Type
+    <tr><td>TypeVariable<td>javax.lang.model.type.TypeVariable
+    <tr><td>WildcardType<td>javax.lang.model.type.WildcardType
+ * </table>
+ *
+ * @see jdk.javadoc.doclet.Doclet
+ * @see jdk.javadoc.doclet.DocletEnvironment
+ * @since 9
+*/
+
+package jdk.javadoc.doclet;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/doclet/taglet/Taglet.java	Sat Nov 28 18:52:17 2015 -0800
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.javadoc.doclet.taglet;
+
+import java.util.List;
+import java.util.Set;
+
+import com.sun.source.doctree.DocTree;
+
+/**
+ * The interface for a custom tag used by Doclets. A custom
+ * tag must implement this interface, and must have a public
+ * default constructor (i.e. a public constructor with no
+ * parameters), by which, the doclet will instantiate and
+ * register the custom tag.
+ *
+ * @since 9
+ */
+
+public interface Taglet {
+
+    /**
+     * Returns the set of locations in which a taglet may be used.
+     * @return the set of locations in which a taglet may be used
+     * allowed in or an empty set.
+     */
+    Set<Location> getAllowedLocations();
+
+    /**
+     * Indicates the tag is an inline or a body tag.
+     * @return true if this <code>Taglet</code>
+     * is an inline tag, false otherwise.
+     */
+    public abstract boolean isInlineTag();
+
+    /**
+     * Returns the name of the tag.
+     * @return the name of this custom tag.
+     */
+    public abstract String getName();
+
+    /**
+     * Given the {@link DocTree DocTree} representation of this custom
+     * tag, return its string representation, which is output
+     * to the generated page.
+     * @param tag the <code>Tag</code> representation of this custom tag.
+     * @return the string representation of this <code>Tag</code>.
+     */
+    public abstract String toString(DocTree tag);
+
+    /**
+     * Given a List of {@link DocTree DocTrees} representing this custom
+     * tag, return its string representation, which is output
+     * to the generated page.  This method should
+     * return null if this taglet represents an inline or body tag.
+     * @param tags the list of <code>DocTree</code>s representing this custom tag.
+     * @return the string representation of this <code>Tag</code>.
+     */
+    public abstract String toString(List<? extends DocTree> tags);
+
+    /**
+     * The kind of location.
+     */
+    public static enum Location {
+        /** In an Overview document. */
+        OVERVIEW,
+        /** In the documentation for a package. */
+        PACKAGE,
+        /** In the documentation for a class, interface or enum. */
+        TYPE,
+        /** In the documentation for a constructor. */
+        CONSTRUCTOR,
+        /** In the documentation for a method. */
+        METHOD,
+        /** In the documentation for a field. */
+        FIELD
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/doclet/taglet/package-info.java	Sat Nov 28 18:52:17 2015 -0800
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * The Taglet API provides a way to declare custom tags that can be
+ * used by the standard doclet.
+ *
+ * <p style="font-style: italic">
+ * <b>Note:</b> The declarations in this package supersede those
+ * in the older package {@code com.sun.tools.doclets}.
+ * </p>
+ *
+ * @since 9
+ */
+package jdk.javadoc.doclet.taglet;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/api/JavadocTaskImpl.java	Sat Nov 28 18:52:17 2015 -0800
@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.javadoc.internal.api;
+
+import java.util.Collections;
+import java.util.Locale;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import javax.tools.DocumentationTool.DocumentationTask;
+import javax.tools.JavaFileObject;
+
+import com.sun.tools.javac.util.ClientCodeException;
+import com.sun.tools.javac.util.Context;
+import com.sun.tools.javac.util.DefinedBy;
+import com.sun.tools.javac.util.DefinedBy.Api;
+import jdk.javadoc.internal.tool.Start;
+
+/**
+ * Provides access to functionality specific to the JDK documentation tool,
+ * javadoc.
+ *
+ * <p><b>This is NOT part of any supported API.
+ * If you write code that depends on this, you do so at your own
+ * risk.  This code and its internal interfaces are subject to change
+ * or deletion without notice.</b></p>
+ */
+public class JavadocTaskImpl implements DocumentationTask {
+    private final AtomicBoolean used = new AtomicBoolean();
+
+    private final Context context;
+    private Class<?> docletClass;
+    private Iterable<String> options;
+    private Iterable<? extends JavaFileObject> fileObjects;
+    private Locale locale;
+
+    public JavadocTaskImpl(Context context, Class<?> docletClass,
+            Iterable<String> options, Iterable<? extends JavaFileObject> fileObjects) {
+        this.context = context;
+        this.docletClass = docletClass;
+
+        this.options = (options == null) ? Collections.<String>emptySet()
+                : nullCheck(options);
+        this.fileObjects = (fileObjects == null) ? Collections.<JavaFileObject>emptySet()
+                : nullCheck(fileObjects);
+        setLocale(Locale.getDefault());
+    }
+
+    @DefinedBy(Api.COMPILER)
+    public void setLocale(Locale locale) {
+        if (used.get())
+            throw new IllegalStateException();
+        this.locale = locale;
+    }
+
+    @DefinedBy(Api.COMPILER)
+    public Boolean call() {
+        if (!used.getAndSet(true)) {
+            initContext();
+            Start jdoc = new Start(context);
+            try {
+                return jdoc.begin(docletClass, options, fileObjects);
+            } catch (ClientCodeException e) {
+                throw new RuntimeException(e.getCause());
+            }
+        } else {
+            throw new IllegalStateException("multiple calls to method 'call'");
+        }
+    }
+
+    private void initContext() {
+        //initialize compiler's default locale
+        context.put(Locale.class, locale);
+    }
+
+    private static <T> Iterable<T> nullCheck(Iterable<T> items) {
+        for (T item: items) {
+            if (item == null)
+                throw new NullPointerException();
+        }
+        return items;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/api/JavadocTool.java	Sat Nov 28 18:52:17 2015 -0800
@@ -0,0 +1,177 @@
+/*
+ * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.javadoc.internal.api;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.Writer;
+import java.nio.charset.Charset;
+import java.util.Collections;
+import java.util.EnumSet;
+import java.util.Locale;
+import java.util.Objects;
+import java.util.Set;
+
+import javax.lang.model.SourceVersion;
+import javax.tools.DiagnosticListener;
+import javax.tools.DocumentationTool;
+import javax.tools.JavaFileManager;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+
+import com.sun.tools.javac.api.ClientCodeWrapper;
+import com.sun.tools.javac.file.JavacFileManager;
+import com.sun.tools.javac.file.BaseFileManager;
+import com.sun.tools.javac.util.ClientCodeException;
+import com.sun.tools.javac.util.Context;
+import com.sun.tools.javac.util.DefinedBy;
+import com.sun.tools.javac.util.DefinedBy.Api;
+import com.sun.tools.javac.util.Log;
+import jdk.javadoc.internal.tool.ToolOption;
+
+/**
+ * Provides access to functionality specific to the JDK documentation tool,
+ * javadoc.
+ *
+ * <p><b>This is NOT part of any supported API.
+ * If you write code that depends on this, you do so at your own
+ * risk.  This code and its internal interfaces are subject to change
+ * or deletion without notice.</b></p>
+ */
+public class JavadocTool implements DocumentationTool {
+    @Override @DefinedBy(Api.COMPILER)
+    public DocumentationTask getTask(
+            Writer out,
+            JavaFileManager fileManager,
+            DiagnosticListener<? super JavaFileObject> diagnosticListener,
+            Class<?> docletClass,
+            Iterable<String> options,
+            Iterable<? extends JavaFileObject> compilationUnits) {
+        Context context = new Context();
+        return getTask(out, fileManager, diagnosticListener,
+                docletClass, options, compilationUnits, context);
+    }
+
+    public DocumentationTask getTask(
+            Writer out,
+            JavaFileManager fileManager,
+            DiagnosticListener<? super JavaFileObject> diagnosticListener,
+            Class<?> docletClass,
+            Iterable<String> options,
+            Iterable<? extends JavaFileObject> compilationUnits,
+            Context context) {
+        try {
+            ClientCodeWrapper ccw = ClientCodeWrapper.instance(context);
+
+            if (options != null) {
+                for (String option : options)
+                    Objects.requireNonNull(option);
+            }
+
+            if (compilationUnits != null) {
+                compilationUnits = ccw.wrapJavaFileObjects(compilationUnits); // implicit null check
+                for (JavaFileObject cu : compilationUnits) {
+                    if (cu.getKind() != JavaFileObject.Kind.SOURCE) {
+                        final String kindMsg = "All compilation units must be of SOURCE kind";
+                        throw new IllegalArgumentException(kindMsg);
+                    }
+                }
+            }
+
+            if (diagnosticListener != null)
+                context.put(DiagnosticListener.class, ccw.wrap(diagnosticListener));
+
+            if (out == null)
+                context.put(Log.outKey, new PrintWriter(System.err, true));
+            else if (out instanceof PrintWriter)
+                context.put(Log.outKey, ((PrintWriter) out));
+            else
+                context.put(Log.outKey, new PrintWriter(out, true));
+
+            if (fileManager == null) {
+                fileManager = getStandardFileManager(diagnosticListener, null, null);
+                if (fileManager instanceof BaseFileManager) {
+                    ((BaseFileManager) fileManager).autoClose = true;
+                }
+            }
+            fileManager = ccw.wrap(fileManager);
+            context.put(JavaFileManager.class, fileManager);
+
+            return new JavadocTaskImpl(context, docletClass, options, compilationUnits);
+        } catch (ClientCodeException ex) {
+            throw new RuntimeException(ex.getCause());
+        }
+    }
+
+    // TODO: used shared static method in JavacFileManager
+    @Override @DefinedBy(Api.COMPILER)
+    public StandardJavaFileManager getStandardFileManager(
+            DiagnosticListener<? super JavaFileObject> diagnosticListener,
+            Locale locale,
+            Charset charset) {
+        Context context = new Context();
+        context.put(Locale.class, locale);
+        if (diagnosticListener != null)
+            context.put(DiagnosticListener.class, diagnosticListener);
+        PrintWriter pw = (charset == null)
+                ? new PrintWriter(System.err, true)
+                : new PrintWriter(new OutputStreamWriter(System.err, charset), true);
+        context.put(Log.outKey, pw);
+        return new JavacFileManager(context, true, charset);
+    }
+
+    @Override @DefinedBy(Api.COMPILER)
+    public int run(InputStream in, OutputStream out, OutputStream err, String... arguments) {
+        PrintWriter err_pw = new PrintWriter(err == null ? System.err : err, true);
+        PrintWriter out_pw = new PrintWriter(out == null ? System.out : out);
+        try {
+            return jdk.javadoc.internal.tool.Main.execute(arguments, err_pw);
+        } finally {
+            err_pw.flush();
+            out_pw.flush();
+        }
+    }
+
+    @Override @DefinedBy(Api.COMPILER)
+    public Set<SourceVersion> getSourceVersions() {
+        return Collections.unmodifiableSet(
+                EnumSet.range(SourceVersion.RELEASE_3, SourceVersion.latest()));
+    }
+
+    @Override @DefinedBy(Api.COMPILER)
+    public int isSupportedOption(String option) {
+        if (option == null)
+            throw new NullPointerException();
+        for (ToolOption o: ToolOption.values()) {
+            if (o.opt.equals(option))
+                return o.hasArg ? 1 : 0;
+        }
+        return -1;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractExecutableMemberWriter.java	Sat Nov 28 18:52:17 2015 -0800
@@ -0,0 +1,352 @@
+/*
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.javadoc.internal.doclets.formats.html;
+
+import java.util.List;
+
+import javax.lang.model.element.AnnotationMirror;
+import javax.lang.model.element.Element;
+import javax.lang.model.element.ElementKind;
+import javax.lang.model.element.ExecutableElement;
+import javax.lang.model.element.TypeElement;
+import javax.lang.model.element.VariableElement;
+import javax.lang.model.type.ArrayType;
+import javax.lang.model.type.DeclaredType;
+import javax.lang.model.type.TypeMirror;
+import javax.lang.model.type.TypeVariable;
+import javax.lang.model.util.SimpleTypeVisitor9;
+
+import com.sun.tools.javac.util.DefinedBy;
+import com.sun.tools.javac.util.DefinedBy.Api;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
+import jdk.javadoc.internal.doclets.toolkit.Content;
+import jdk.javadoc.internal.doclets.toolkit.util.DocletConstants;
+
+import static jdk.javadoc.internal.doclets.formats.html.LinkInfoImpl.Kind.*;
+
+/**
+ * Print method and constructor info.
+ *
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ *
+ * @author Robert Field
+ * @author Atul M Dambalkar
+ * @author Bhavesh Patel (Modified)
+ */
+public abstract class AbstractExecutableMemberWriter extends AbstractMemberWriter {
+
+    public AbstractExecutableMemberWriter(SubWriterHolderWriter writer, TypeElement typeElement) {
+        super(writer, typeElement);
+    }
+
+    public AbstractExecutableMemberWriter(SubWriterHolderWriter writer) {
+        super(writer);
+    }
+
+    /**
+     * Add the type parameters for the executable member.
+     *
+     * @param member the member to write type parameters for.
+     * @param htmltree the content tree to which the parameters will be added.
+     */
+    protected void addTypeParameters(ExecutableElement member, Content htmltree) {
+        Content typeParameters = getTypeParameters(member);
+        if (!typeParameters.isEmpty()) {
+            htmltree.addContent(typeParameters);
+            htmltree.addContent(writer.getSpace());
+        }
+    }
+
+    /**
+     * Get the type parameters for the executable member.
+     *
+     * @param member the member for which to get the type parameters.
+     * @return the type parameters.
+     */
+    protected Content getTypeParameters(ExecutableElement member) {
+        LinkInfoImpl linkInfo = new LinkInfoImpl(configuration, MEMBER_TYPE_PARAMS, member);
+        return writer.getTypeParameterLinks(linkInfo);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected Content getDeprecatedLink(Element member) {
+        StringBuilder sb = new StringBuilder();
+        sb.append(utils.getFullyQualifiedName(member));
+        if (!utils.isConstructor(member)) {
+            sb.append(".");
+            sb.append(member.getSimpleName().toString());
+        }
+        sb.append(utils.flatSignature((ExecutableElement) member));
+
+        return writer.getDocLink(MEMBER, member, sb.toString());
+    }
+
+    /**
+     * Add the summary link for the member.
+     *
+     * @param context the id of the context where the link will be printed
+     * @param te the classDoc that we should link to
+     * @param member the member being linked to
+     * @param tdSummary the content tree to which the link will be added
+     */
+    @Override
+    protected void addSummaryLink(LinkInfoImpl.Kind context, TypeElement te, Element member,
+            Content tdSummary) {
+        ExecutableElement ee = (ExecutableElement)member;
+        Content memberLink = HtmlTree.SPAN(HtmlStyle.memberNameLink,
+                writer.getDocLink(context, te, ee,
+                name(ee), false));
+        Content code = HtmlTree.CODE(memberLink);
+        addParameters(ee, false, code, name(ee).length() - 1);
+        tdSummary.addContent(code);
+    }
+
+    /**
+     * Add the inherited summary link for the member.
+     *
+     * @param te the type element that we should link to
+     * @param member the member being linked to
+     * @param linksTree the content tree to which the link will be added
+     */
+    @Override
+    protected void addInheritedSummaryLink(TypeElement te, Element member, Content linksTree) {
+        linksTree.addContent(writer.getDocLink(MEMBER, te, member, name(member), false));
+    }
+
+    /**
+     * Add the parameter for the executable member.
+     *
+     * @param member the member to write parameter for.
+     * @param param the parameter that needs to be written.
+     * @param isVarArg true if this is a link to var arg.
+     * @param tree the content tree to which the parameter information will be added.
+     */
+    protected void addParam(ExecutableElement member, VariableElement param,
+            boolean isVarArg, Content tree) {
+        Content link = writer.getLink(new LinkInfoImpl(configuration, EXECUTABLE_MEMBER_PARAM,
+                param.asType()).varargs(isVarArg));
+        tree.addContent(link);
+        if(name(param).length() > 0) {
+            tree.addContent(writer.getSpace());
+            tree.addContent(name(param));
+        }
+    }
+
+    /**
+     * Add the receiver annotations information.
+     *
+     * @param member the member to write receiver annotations for.
+     * @param rcvrType the receiver type.
+     * @param descList list of annotation description.
+     * @param tree the content tree to which the information will be added.
+     */
+    protected void addReceiverAnnotations(ExecutableElement member, TypeMirror rcvrType,
+            List<? extends AnnotationMirror> annotationMirrors, Content tree) {
+        writer.addReceiverAnnotationInfo(member, rcvrType, annotationMirrors, tree);
+        tree.addContent(writer.getSpace());
+        tree.addContent(utils.getTypeName(rcvrType, false));
+        LinkInfoImpl linkInfo = new LinkInfoImpl(configuration, RECEIVER_TYPE, rcvrType);
+        tree.addContent(writer.getTypeParameterLinks(linkInfo));
+        tree.addContent(writer.getSpace());
+        tree.addContent("this");
+    }
+
+
+    /**
+     * Add all the parameters for the executable member.
+     *
+     * @param member the member to write parameters for.
+     * @param htmltree the content tree to which the parameters information will be added.
+     */
+    protected void addParameters(ExecutableElement member, Content htmltree, int indentSize) {
+        addParameters(member, true, htmltree, indentSize);
+    }
+
+    /**
+     * Add all the parameters for the executable member.
+     *
+     * @param member the member to write parameters for.
+     * @param includeAnnotations true if annotation information needs to be added.
+     * @param htmltree the content tree to which the parameters information will be added.
+     */
+    protected void addParameters(ExecutableElement member,
+            boolean includeAnnotations, Content htmltree, int indentSize) {
+        htmltree.addContent("(");
+        String sep = "";
+        List<? extends VariableElement> parameters = member.getParameters();
+        String indent = makeSpace(indentSize + 1);
+        TypeMirror rcvrType = member.getReceiverType();
+        if (includeAnnotations && rcvrType != null && utils.isAnnotated(rcvrType)) {
+            List<? extends AnnotationMirror> annotationMirrors = rcvrType.getAnnotationMirrors();
+            addReceiverAnnotations(member, rcvrType, annotationMirrors, htmltree);
+            sep = "," + DocletConstants.NL + indent;
+        }
+        int paramstart;
+        for (paramstart = 0; paramstart < parameters.size(); paramstart++) {
+            htmltree.addContent(sep);
+            VariableElement param = parameters.get(paramstart);
+
+            if (param.getKind() != ElementKind.INSTANCE_INIT) {
+                if (includeAnnotations) {
+                    boolean foundAnnotations =
+                            writer.addAnnotationInfo(indent.length(),
+                            member, param, htmltree);
+                    if (foundAnnotations) {
+                        htmltree.addContent(DocletConstants.NL);
+                        htmltree.addContent(indent);
+                    }
+                }
+                addParam(member, param,
+                    (paramstart == parameters.size() - 1) && member.isVarArgs(), htmltree);
+                break;
+            }
+        }
+
+        for (int i = paramstart + 1; i < parameters.size(); i++) {
+            htmltree.addContent(",");
+            htmltree.addContent(DocletConstants.NL);
+            htmltree.addContent(indent);
+            if (includeAnnotations) {
+                boolean foundAnnotations =
+                        writer.addAnnotationInfo(indent.length(), member, parameters.get(i),
+                        htmltree);
+                if (foundAnnotations) {
+                    htmltree.addContent(DocletConstants.NL);
+                    htmltree.addContent(indent);
+                }
+            }
+            addParam(member, parameters.get(i), (i == parameters.size() - 1) && member.isVarArgs(),
+                    htmltree);
+        }
+        htmltree.addContent(")");
+    }
+
+    /**
+     * Add exceptions for the executable member.
+     *
+     * @param member the member to write exceptions for.
+     * @param htmltree the content tree to which the exceptions information will be added.
+     */
+    protected void addExceptions(ExecutableElement member, Content htmltree, int indentSize) {
+        List<? extends TypeMirror> exceptions = member.getThrownTypes();
+        if (!exceptions.isEmpty()) {
+            String indent = makeSpace(indentSize + 1 - 7);
+            htmltree.addContent(DocletConstants.NL);
+            htmltree.addContent(indent);
+            htmltree.addContent("throws ");
+            indent = makeSpace(indentSize + 1);
+            Content link = writer.getLink(new LinkInfoImpl(configuration, MEMBER, exceptions.get(0)));
+            htmltree.addContent(link);
+            for(int i = 1; i < exceptions.size(); i++) {
+                htmltree.addContent(",");
+                htmltree.addContent(DocletConstants.NL);
+                htmltree.addContent(indent);
+                Content exceptionLink = writer.getLink(new LinkInfoImpl(configuration, MEMBER,
+                        exceptions.get(i)));
+                htmltree.addContent(exceptionLink);
+            }
+        }
+    }
+
+    protected TypeElement implementsMethodInIntfac(ExecutableElement method,
+                                                List<TypeElement> intfacs) {
+        for (TypeElement intf : intfacs) {
+            List<ExecutableElement> methods = utils.getMethods(intf);
+            if (!methods.isEmpty()) {
+                for (ExecutableElement md : methods) {
+                    if (name(md).equals(name(method)) &&
+                        md.toString().equals(method.toString())) {
+                        return intf;
+                    }
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
+     * For backward compatibility, include an anchor using the erasures of the
+     * parameters.  NOTE:  We won't need this method anymore after we fix
+     * see tags so that they use the type instead of the erasure.
+     *
+     * @param executableElement the ExecutableElement to anchor to.
+     * @return the 1.4.x style anchor for the executable element.
+     */
+    protected String getErasureAnchor(ExecutableElement executableElement) {
+        final StringBuilder buf = new StringBuilder(name(executableElement) + "(");
+        List<? extends VariableElement> parameters = executableElement.getParameters();
+        boolean foundTypeVariable = false;
+        for (int i = 0; i < parameters.size(); i++) {
+            if (i > 0) {
+                buf.append(",");
+            }
+            TypeMirror t = parameters.get(i).asType();
+            SimpleTypeVisitor9<Boolean, Void> stv = new SimpleTypeVisitor9<Boolean, Void>() {
+                boolean foundTypeVariable = false;
+
+                @Override @DefinedBy(Api.LANGUAGE_MODEL)
+                public Boolean visitArray(ArrayType t, Void p) {
+                    visit(t.getComponentType());
+                    buf.append(utils.getDimension(t));
+                    return foundTypeVariable;
+                }
+
+                @Override @DefinedBy(Api.LANGUAGE_MODEL)
+                public Boolean visitTypeVariable(TypeVariable t, Void p) {
+                    buf.append(utils.asTypeElement(t).getQualifiedName());
+                    foundTypeVariable = true;
+                    return foundTypeVariable;
+                }
+
+                @Override @DefinedBy(Api.LANGUAGE_MODEL)
+                public Boolean visitDeclared(DeclaredType t, Void p) {
+                    buf.append(utils.getQualifiedTypeName(t));
+                    return foundTypeVariable;
+                }
+
+                @Override @DefinedBy(Api.LANGUAGE_MODEL)
+                protected Boolean defaultAction(TypeMirror e, Void p) {
+                    buf.append(e.toString());
+                    return foundTypeVariable;
+                }
+            };
+
+            boolean isTypeVariable = stv.visit(t);
+            if (!foundTypeVariable) {
+                foundTypeVariable = isTypeVariable;
+            }
+        }
+        buf.append(")");
+        return foundTypeVariable ? writer.getName(buf.toString()) : null;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractIndexWriter.java	Sat Nov 28 18:52:17 2015 -0800
@@ -0,0 +1,461 @@
+/*
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.javadoc.internal.doclets.formats.html;
+
+import java.io.*;
+import java.nio.file.*;
+import java.util.*;
+import java.util.zip.*;
+
+import javax.lang.model.element.Element;
+import javax.lang.model.element.ExecutableElement;
+import javax.lang.model.element.PackageElement;
+import javax.lang.model.element.TypeElement;
+import javax.lang.model.util.SimpleElementVisitor9;
+
+import com.sun.source.doctree.DocTree;
+import com.sun.tools.javac.util.DefinedBy;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
+import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
+import jdk.javadoc.internal.doclets.toolkit.Content;
+import jdk.javadoc.internal.doclets.toolkit.util.DocFile;
+import jdk.javadoc.internal.doclets.toolkit.util.DocPath;
+import jdk.javadoc.internal.doclets.toolkit.util.DocPaths;
+import jdk.javadoc.internal.doclets.toolkit.util.DocletAbortException;
+import jdk.javadoc.internal.doclets.toolkit.util.IndexBuilder;
+
+/**
+ * Generate Index for all the Member Names with Indexing in
+ * Unicode Order. This class is a base class for {@link SingleIndexWriter} and
+ * {@link SplitIndexWriter}. It uses the functionality from
+ * {@link HtmlDocletWriter} to generate the Index Contents.
+ *
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ *
+ * @see    IndexBuilder
+ * @author Atul M Dambalkar
+ * @author Bhavesh Patel (Modified)
+ */
+public class AbstractIndexWriter extends HtmlDocletWriter {
+
+    /**
+     * The index of all the members with unicode character.
+     */
+    protected IndexBuilder indexbuilder;
+
+    /**
+     * This constructor will be used by {@link SplitIndexWriter}. Initializes
+     * path to this file and relative path from this file.
+     *
+     * @param configuration  The current configuration
+     * @param path       Path to the file which is getting generated.
+     * @param indexbuilder Unicode based Index from {@link IndexBuilder}
+     */
+    protected AbstractIndexWriter(ConfigurationImpl configuration,
+                                  DocPath path,
+                                  IndexBuilder indexbuilder)
+                                  throws IOException {
+        super(configuration, path);
+        this.indexbuilder = indexbuilder;
+    }
+
+    /**
+     * Get the index label for navigation bar.
+     *
+     * @return a content tree for the tree label
+     */
+    protected Content getNavLinkIndex() {
+        Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, indexLabel);
+        return li;
+    }
+
+    /**
+     * Add the member information for the unicode character along with the
+     * list of the members.
+     *
+     * @param uc Unicode for which member list information to be generated
+     * @param memberlist List of members for the unicode character
+     * @param contentTree the content tree to which the information will be added
+     */
+    protected void addContents(Character uc, Collection<? extends Element> memberlist,
+            Content contentTree) {
+        addHeading(uc, contentTree);
+        // Display the list only if there are elements to be displayed.
+        if (!memberlist.isEmpty()) {
+            Content dl = new HtmlTree(HtmlTag.DL);
+            for (Element element : memberlist) {
+                addDescription(dl, element);
+            }
+            contentTree.addContent(dl);
+        }
+    }
+
+    protected void addSearchContents(Character uc, List<SearchIndexItem> searchList,
+            Content contentTree) {
+        addHeading(uc, contentTree);
+        // Display the list only if there are elements to be displayed.
+        if (!searchList.isEmpty()) {
+            Content dl = new HtmlTree(HtmlTag.DL);
+            for (SearchIndexItem sii : searchList) {
+                addDescription(sii, dl);
+            }
+            contentTree.addContent(dl);
+        }
+    }
+
+    protected void addContents(Character uc, List<? extends Element> memberlist,
+            List<SearchIndexItem> searchList, Content contentTree) {
+        addHeading(uc, contentTree);
+        int memberListSize = memberlist.size();
+        int searchListSize = searchList.size();
+        int i = 0;
+        int j = 0;
+        Content dl = new HtmlTree(HtmlTag.DL);
+        while (i < memberListSize && j < searchListSize) {
+            String name = utils.getSimpleName(memberlist.get(i));
+            if (name.compareTo(searchList.get(j).getLabel()) < 0) {
+                addDescription(dl, memberlist.get(i));
+                i++;
+            } else if (name.compareTo(searchList.get(j).getLabel()) > 0) {
+                addDescription(searchList.get(j), dl);
+                j++;
+            } else {
+                addDescription(dl, memberlist.get(i));
+                addDescription(searchList.get(j), dl);
+                j++;
+                i++;
+            }
+        }
+        if (i >= memberListSize) {
+            while (j < searchListSize) {
+                addDescription(searchList.get(j), dl);
+                j++;
+            }
+        }
+        if (j >= searchListSize) {
+            while (i < memberListSize) {
+                addDescription(dl, memberlist.get(i));
+                i++;
+            }
+        }
+        contentTree.addContent(dl);
+    }
+
+    protected void addHeading(Character uc, Content contentTree) {
+        String unicode = uc.toString();
+        contentTree.addContent(getMarkerAnchorForIndex(unicode));
+        Content headContent = new StringContent(unicode);
+        Content heading = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, false,
+                HtmlStyle.title, headContent);
+        contentTree.addContent(heading);
+    }
+
+    protected void addDescription(Content dl, Element element) {
+        SearchIndexItem si = new SearchIndexItem();
+        new SimpleElementVisitor9<Void, Void>() {
+
+            @Override @DefinedBy(DefinedBy.Api.LANGUAGE_MODEL)
+            public Void visitPackage(PackageElement e, Void p) {
+                addDescription(e, dl, si);
+                configuration.packageSearchIndex.add(si);
+                return null;
+            }
+
+            @Override @DefinedBy(DefinedBy.Api.LANGUAGE_MODEL)
+            public Void visitType(TypeElement e, Void p) {
+                addDescription(e, dl, si);
+                configuration.typeSearchIndex.add(si);
+                return null;
+            }
+
+            @Override @DefinedBy(DefinedBy.Api.LANGUAGE_MODEL)
+            protected Void defaultAction(Element e, Void p) {
+                addDescription(e, dl, si);
+                configuration.memberSearchIndex.add(si);
+                return null;
+            }
+
+        }.visit(element);
+    }
+
+    /**
+     * Add one line summary comment for the package.
+     *
+     * @param pkg the package to be documented
+     * @param dlTree the content tree to which the description will be added
+     */
+    protected void addDescription(PackageElement pkg, Content dlTree, SearchIndexItem si) {
+        Content link = getPackageLink(pkg, new StringContent(utils.getPackageName(pkg)));
+        si.setLabel(utils.getPackageName(pkg));
+        si.setCategory(getResource("doclet.Packages").toString());
+        Content dt = HtmlTree.DT(link);
+        dt.addContent(" - ");
+        dt.addContent(getResource("doclet.package"));
+        dt.addContent(" " + utils.getPackageName(pkg));
+        dlTree.addContent(dt);
+        Content dd = new HtmlTree(HtmlTag.DD);
+        addSummaryComment(pkg, dd);
+        dlTree.addContent(dd);
+    }
+
+    /**
+     * Add one line summary comment for the class.
+     *
+     * @param typeElement the class being documented
+     * @param dlTree the content tree to which the description will be added
+     */
+    protected void addDescription(TypeElement typeElement, Content dlTree, SearchIndexItem si) {
+        Content link = getLink(new LinkInfoImpl(configuration,
+                        LinkInfoImpl.Kind.INDEX, typeElement).strong(true));
+        si.setContainingPackage(utils.getPackageName(utils.containingPackage(typeElement)));
+        si.setLabel(utils.getSimpleName(typeElement));
+        si.setCategory(getResource("doclet.Types").toString());
+        Content dt = HtmlTree.DT(link);
+        dt.addContent(" - ");
+        addClassInfo(typeElement, dt);
+        dlTree.addContent(dt);
+        Content dd = new HtmlTree(HtmlTag.DD);
+        addComment(typeElement, dd);
+        dlTree.addContent(dd);
+    }
+
+    /**
+     * Add the classkind (class, interface, exception), error of the class
+     * passed.
+     *
+     * @param te the class being documented
+     * @param contentTree the content tree to which the class info will be added
+     */
+    protected void addClassInfo(TypeElement te, Content contentTree) {
+        contentTree.addContent(getResource("doclet.in",
+                utils.getTypeElementName(te, false),
+                getPackageLink(utils.containingPackage(te),
+                    utils.getPackageName(utils.containingPackage(te)))
+                ));
+    }
+
+    /**
+     * Add description for Class, Field, Method or Constructor.
+     *
+     * @param member the member of the Class Kind
+     * @param dlTree the content tree to which the description will be added
+     * @param si search index item
+     */
+    protected void addDescription(Element member, Content dlTree, SearchIndexItem si) {
+
+        si.setContainingPackage(utils.getPackageName(utils.containingPackage(member)));
+        si.setContainingClass(utils.getSimpleName(utils.getEnclosingTypeElement(member)));
+        String name = utils.getSimpleName(member);
+        if (utils.isExecutableElement(member)) {
+            ExecutableElement ee = (ExecutableElement)member;
+            name = name + utils.flatSignature(ee);
+            si.setLabel(name);
+            if (!((utils.signature(ee)).equals(utils.flatSignature(ee)))) {
+                si.setUrl(getName(getAnchor(ee)));
+            }
+
+        }  else {
+            si.setLabel(name);
+        }
+        si.setCategory(getResource("doclet.Members").toString());
+        Content span = HtmlTree.SPAN(HtmlStyle.memberNameLink,
+                getDocLink(LinkInfoImpl.Kind.INDEX, member, name));
+        Content dt = HtmlTree.DT(span);
+        dt.addContent(" - ");
+        addMemberDesc(member, dt);
+        dlTree.addContent(dt);
+        Content dd = new HtmlTree(HtmlTag.DD);
+        addComment(member, dd);
+        dlTree.addContent(dd);
+    }
+
+    protected void addDescription(SearchIndexItem sii, Content dlTree) {
+        String path = pathToRoot.isEmpty() ? "" : pathToRoot.getPath() + "/";
+        path += sii.getUrl();
+        HtmlTree labelLink = HtmlTree.A(path, new StringContent(sii.getLabel()));
+        Content dt = HtmlTree.DT(HtmlTree.SPAN(HtmlStyle.searchTagLink, labelLink));
+        dt.addContent(" - ");
+        dt.addContent(getResource("doclet.Search_tag_in", sii.getHolder()));
+        dlTree.addContent(dt);
+        Content dd = new HtmlTree(HtmlTag.DD);
+        if (sii.getDescription().isEmpty()) {
+            dd.addContent(getSpace());
+        } else {
+            dd.addContent(sii.getDescription());
+        }
+        dlTree.addContent(dd);
+    }
+
+    /**
+     * Add comment for each element in the index. If the element is deprecated
+     * and it has a @deprecated tag, use that comment. Else if the containing
+     * class for this element is deprecated, then add the word "Deprecated." at
+     * the start and then print the normal comment.
+     *
+     * @param element Index element
+     * @param contentTree the content tree to which the comment will be added
+     */
+    protected void addComment(Element element, Content contentTree) {
+        List<? extends DocTree> tags;
+        Content span = HtmlTree.SPAN(HtmlStyle.deprecatedLabel, deprecatedPhrase);
+        HtmlTree div = new HtmlTree(HtmlTag.DIV);
+        div.addStyle(HtmlStyle.block);
+        if (utils.isDeprecated(element)) {
+            div.addContent(span);
+            tags = utils.getBlockTags(element, DocTree.Kind.DEPRECATED);
+            if (!tags.isEmpty())
+                addInlineDeprecatedComment(element, tags.get(0), div);
+            contentTree.addContent(div);
+        } else {
+            TypeElement encl = utils.getEnclosingTypeElement(element);
+            while (encl != null) {
+                if (utils.isDeprecated(encl)) {
+                    div.addContent(span);
+                    contentTree.addContent(div);
+                    break;
+                }
+                encl = utils.getEnclosingTypeElement(encl);
+            }
+            addSummaryComment(element, contentTree);
+        }
+    }
+
+    /**
+     * Add description about the Static Variable/Method/Constructor for a
+     * member.
+     *
+     * @param member MemberDoc for the member within the Class Kind
+     * @param contentTree the content tree to which the member description will be added
+     */
+    protected void addMemberDesc(Element member, Content contentTree) {
+        TypeElement containing = utils.getEnclosingTypeElement(member);
+        String classdesc = utils.getTypeElementName(containing, true) + " ";
+        if (utils.isField(member)) {
+            Content resource = getResource(utils.isStatic(member)
+                    ? "doclet.Static_variable_in"
+                    : "doclet.Variable_in", classdesc);
+            contentTree.addContent(resource);
+        } else if (utils.isConstructor(member)) {
+            contentTree.addContent(
+                    getResource("doclet.Constructor_for", classdesc));
+        } else if (utils.isMethod(member)) {
+            Content resource = getResource(utils.isStatic(member)
+                    ? "doclet.Static_method_in"
+                    : "doclet.Method_in", classdesc);
+            contentTree.addContent(resource);
+        }
+        addPreQualifiedClassLink(LinkInfoImpl.Kind.INDEX, containing,
+                false, contentTree);
+    }
+
+    /**
+     * Get the marker anchor which will be added to the index documentation tree.
+     *
+     * @param anchorNameForIndex the anchor name attribute for index page
+     * @return a content tree for the marker anchor
+     */
+    public Content getMarkerAnchorForIndex(String anchorNameForIndex) {
+        return getMarkerAnchor(getNameForIndex(anchorNameForIndex), null);
+    }
+
+    /**
+     * Generate a valid HTML name for member index page.
+     *
+     * @param unicode the string that needs to be converted to valid HTML name.
+     * @return a valid HTML name string.
+     */
+    public String getNameForIndex(String unicode) {
+        return "I:" + getName(unicode);
+    }
+
+    protected void createSearchIndexFiles() {
+        createSearchIndexFile(DocPaths.PACKAGE_SEARCH_INDEX_JSON, DocPaths.PACKAGE_SEARCH_INDEX_ZIP,
+                configuration.packageSearchIndex);
+        createSearchIndexFile(DocPaths.TYPE_SEARCH_INDEX_JSON, DocPaths.TYPE_SEARCH_INDEX_ZIP,
+                configuration.typeSearchIndex);
+        createSearchIndexFile(DocPaths.MEMBER_SEARCH_INDEX_JSON, DocPaths.MEMBER_SEARCH_INDEX_ZIP,
+                configuration.memberSearchIndex);
+        createSearchIndexFile(DocPaths.TAG_SEARCH_INDEX_JSON, DocPaths.TAG_SEARCH_INDEX_ZIP,
+                configuration.tagSearchIndex);
+    }
+
+    protected void createSearchIndexFile(DocPath searchIndexFile, DocPath searchIndexZip,
+            List<SearchIndexItem> searchIndex) {
+        if (!searchIndex.isEmpty()) {
+            try {
+                StringBuilder searchVar = new StringBuilder("[");
+                boolean first = true;
+                DocFile searchFile = DocFile.createFileForOutput(configuration, searchIndexFile);
+                Path p = Paths.get(searchFile.getPath());
+                for (SearchIndexItem item : searchIndex) {
+                    if (first) {
+                        searchVar.append(item.toString());
+                        first = false;
+                    } else {
+                        searchVar.append(",").append(item.toString());
+                    }
+                }
+                searchVar.append("]");
+                Files.write(p, searchVar.toString().getBytes());
+                DocFile zipFile = DocFile.createFileForOutput(configuration, searchIndexZip);
+                try (FileOutputStream fos = new FileOutputStream(zipFile.getPath());
+                        ZipOutputStream zos = new ZipOutputStream(fos)) {
+                    zipFile(searchFile.getPath(), searchIndexFile, zos);
+                }
+                Files.delete(p);
+            } catch (IOException ie) {
+                throw new DocletAbortException(ie);
+            }
+        }
+    }
+
+    protected void zipFile(String inputFile, DocPath file, ZipOutputStream zos) {
+        try {
+            try {
+                ZipEntry ze = new ZipEntry(file.getPath());
+                zos.putNextEntry(ze);
+                try (FileInputStream fis = new FileInputStream(new File(inputFile))) {
+                    byte[] buf = new byte[2048];
+                    int len = fis.read(buf);
+                    while (len > 0) {
+                        zos.write(buf, 0, len);
+                        len = fis.read(buf);
+                    }
+                }
+            } finally {
+                zos.closeEntry();
+            }
+        } catch (IOException e) {
+            throw new DocletAbortException(e);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractMemberWriter.java	Sat Nov 28 18:52:17 2015 -0800
@@ -0,0 +1,708 @@
+/*
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.javadoc.internal.doclets.formats.html;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+import javax.lang.model.element.Element;
+import javax.lang.model.element.ExecutableElement;
+import javax.lang.model.element.Modifier;
+import javax.lang.model.element.TypeElement;
+import javax.lang.model.element.TypeParameterElement;
+import javax.lang.model.element.VariableElement;
+import javax.lang.model.type.TypeMirror;
+import javax.lang.model.util.SimpleElementVisitor9;
+
+import com.sun.source.doctree.DocTree;
+import com.sun.tools.javac.util.DefinedBy;
+import com.sun.tools.javac.util.DefinedBy.Api;
+
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
+import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
+import jdk.javadoc.internal.doclets.toolkit.Content;
+import jdk.javadoc.internal.doclets.toolkit.taglets.DeprecatedTaglet;
+import jdk.javadoc.internal.doclets.toolkit.util.MethodTypes;
+import jdk.javadoc.internal.doclets.toolkit.util.Utils;
+import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberMap;
+
+import static javax.lang.model.element.Modifier.*;
+
+/**
+ * The base class for member writers.
+ *
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ *
+ * @author Robert Field
+ * @author Atul M Dambalkar
+ * @author Jamie Ho (Re-write)
+ * @author Bhavesh Patel (Modified)
+ */
+public abstract class AbstractMemberWriter {
+
+    protected final ConfigurationImpl configuration;
+    protected final Utils utils;
+    protected final SubWriterHolderWriter writer;
+    protected final TypeElement typeElement;
+    protected Map<String, Integer> typeMap = new LinkedHashMap<>();
+    protected Set<MethodTypes> methodTypes = EnumSet.noneOf(MethodTypes.class);
+    private int methodTypesOr = 0;
+    public final boolean nodepr;
+
+    protected boolean printedSummaryHeader = false;
+
+    public AbstractMemberWriter(SubWriterHolderWriter writer, TypeElement typeElement) {
+        this.configuration = writer.configuration;
+        this.writer = writer;
+        this.nodepr = configuration.nodeprecated;
+        this.typeElement = typeElement;
+        this.utils = writer.configuration.utils;
+    }
+
+    public AbstractMemberWriter(SubWriterHolderWriter writer) {
+        this(writer, null);
+    }
+
+    /*** abstracts ***/
+
+    /**
+     * Add the summary label for the member.
+     *
+     * @param memberTree the content tree to which the label will be added
+     */
+    public abstract void addSummaryLabel(Content memberTree);
+
+    /**
+     * Get the summary for the member summary table.
+     *
+     * @return a string for the table summary
+     */
+    public abstract String getTableSummary();
+
+    /**
+     * Get the caption for the member summary table.
+     *
+     * @return a string for the table caption
+     */
+    public abstract Content getCaption();
+
+    /**
+     * Get the summary table header for the member.
+     *
+     * @param member the member to be documented
+     * @return the summary table header
+     */
+    public abstract List<String> getSummaryTableHeader(Element member);
+
+    /**
+     * Add inherited summary label for the member.
+     *
+     * @param typeElement the TypeElement to which to link to
+     * @param inheritedTree the content tree to which the inherited summary label will be added
+     */
+    public abstract void addInheritedSummaryLabel(TypeElement typeElement, Content inheritedTree);
+
+    /**
+     * Add the anchor for the summary section of the member.
+     *
+     * @param typeElement the TypeElement to be documented
+     * @param memberTree the content tree to which the summary anchor will be added
+     */
+    public abstract void addSummaryAnchor(TypeElement typeElement, Content memberTree);
+
+    /**
+     * Add the anchor for the inherited summary section of the member.
+     *
+     * @param typeElement the TypeElement to be documented
+     * @param inheritedTree the content tree to which the inherited summary anchor will be added
+     */
+    public abstract void addInheritedSummaryAnchor(TypeElement typeElement, Content inheritedTree);
+
+    /**
+     * Add the summary type for the member.
+     *
+     * @param member the member to be documented
+     * @param tdSummaryType the content tree to which the type will be added
+     */
+    protected abstract void addSummaryType(Element member, Content tdSummaryType);
+
+    /**
+     * Add the summary link for the member.
+     *
+     * @param typeElement the TypeElement to be documented
+     * @param member the member to be documented
+     * @param tdSummary the content tree to which the link will be added
+     */
+    protected void addSummaryLink(TypeElement typeElement, Element member, Content tdSummary) {
+        addSummaryLink(LinkInfoImpl.Kind.MEMBER, typeElement, member, tdSummary);
+    }
+
+    /**
+     * Add the summary link for the member.
+     *
+     * @param context the id of the context where the link will be printed
+     * @param typeElement the TypeElement to be documented
+     * @param member the member to be documented
+     * @param tdSummary the content tree to which the summary link will be added
+     */
+    protected abstract void addSummaryLink(LinkInfoImpl.Kind context,
+            TypeElement typeElement, Element member, Content tdSummary);
+
+    /**
+     * Add the inherited summary link for the member.
+     *
+     * @param typeElement the TypeElement to be documented
+     * @param member the member to be documented
+     * @param linksTree the content tree to which the inherited summary link will be added
+     */
+    protected abstract void addInheritedSummaryLink(TypeElement typeElement,
+            Element member, Content linksTree);
+
+    /**
+     * Get the deprecated link.
+     *
+     * @param member the member being linked to
+     * @return a content tree representing the link
+     */
+    protected abstract Content getDeprecatedLink(Element member);
+
+    /**
+     * Get the navigation summary link.
+     *
+     * @param typeElement the TypeElement to be documented
+     * @param link true if its a link else the label to be printed
+     * @return a content tree for the navigation summary link.
+     */
+    protected abstract Content getNavSummaryLink(TypeElement typeElement, boolean link);
+
+    /**
+     * Add the navigation detail link.
+     *
+     * @param link true if its a link else the label to be printed
+     * @param liNav the content tree to which the navigation detail link will be added
+     */
+    protected abstract void addNavDetailLink(boolean link, Content liNav);
+
+    /**
+     * Add the member name to the content tree.
+     *
+     * @param name the member name to be added to the content tree.
+     * @param htmltree the content tree to which the name will be added.
+     */
+    protected void addName(String name, Content htmltree) {
+        htmltree.addContent(name);
+    }
+
+    protected String typeString(Element member) {
+        return new SimpleElementVisitor9<String, Void>() {
+
+            @Override @DefinedBy(Api.LANGUAGE_MODEL)
+            public String visitExecutable(ExecutableElement e, Void p) {
+               return utils.isMethod(e) ? e.getReturnType().toString() : "";
+            }
+
+            @Override @DefinedBy(Api.LANGUAGE_MODEL)
+            public String visitVariable(VariableElement e, Void p) {
+                return e.toString();
+            }
+
+            @Override @DefinedBy(Api.LANGUAGE_MODEL)
+            protected String defaultAction(Element e, Void p) {
+                return "";
+            }
+        }.visit(member);
+    }
+
+    /**
+     * Add the modifier for the member. The modifiers are ordered as specified
+     * by <em>The Java Language Specification</em>.
+     *
+     * @param member the member for which teh modifier will be added.
+     * @param htmltree the content tree to which the modifier information will be added.
+     */
+    protected void addModifiers(Element member, Content htmltree) {
+        Set<Modifier> set = new TreeSet<>(member.getModifiers());
+
+        // remove the ones we really don't need
+        set.remove(NATIVE);
+        set.remove(SYNCHRONIZED);
+        set.remove(STRICTFP);
+
+        // According to JLS, we should not be showing public modifier for
+        // interface methods.
+        if ((utils.isField(member) || utils.isMethod(member))
+                && writer instanceof ClassWriterImpl
+                && utils.isInterface(((ClassWriterImpl) writer).getTypeElement())) {
+            // Remove the implicit abstract and public modifiers
+            if (utils.isMethod(member) && utils.isInterface(member.getEnclosingElement())) {
+                set.remove(ABSTRACT);
+                set.remove(PUBLIC);
+            }
+            if (!utils.isMethod(member)) {
+                set.remove(PUBLIC);
+            }
+        }
+        if (!set.isEmpty()) {
+            String mods = set.stream().map(m -> m.toString()).collect(Collectors.joining(" "));
+            htmltree.addContent(mods);
+            htmltree.addContent(writer.getSpace());
+        }
+    }
+
+    protected String makeSpace(int len) {
+        if (len <= 0) {
+            return "";
+        }
+        StringBuilder sb = new StringBuilder(len);
+        for (int i = 0; i < len; i++) {
+            sb.append(' ');
+        }
+        return sb.toString();
+    }
+
+    /**
+     * Add the modifier and type for the member in the member summary.
+     *
+     * @param member the member to add the type for
+     * @param type the type to add
+     * @param tdSummaryType the content tree to which the modified and type will be added
+     */
+    protected void addModifierAndType(Element member, TypeMirror type,
+            Content tdSummaryType) {
+        HtmlTree code = new HtmlTree(HtmlTag.CODE);
+        addModifier(member, code);
+        if (type == null) {
+            code.addContent(utils.isClass(member) ? "class" : "interface");
+            code.addContent(writer.getSpace());
+        } else {
+            List<? extends TypeParameterElement> list = utils.isExecutableElement(member)
+                    ? ((ExecutableElement)member).getTypeParameters()
+                    : null;
+            if (list != null && !list.isEmpty()) {
+                Content typeParameters = ((AbstractExecutableMemberWriter) this)
+                        .getTypeParameters((ExecutableElement)member);
+                    code.addContent(typeParameters);
+                //Code to avoid ugly wrapping in member summary table.
+                if (typeParameters.charCount() > 10) {
+                    code.addContent(new HtmlTree(HtmlTag.BR));
+                } else {
+                    code.addContent(writer.getSpace());
+                }
+                code.addContent(
+                        writer.getLink(new LinkInfoImpl(configuration,
+                        LinkInfoImpl.Kind.SUMMARY_RETURN_TYPE, type)));
+            } else {
+                code.addContent(
+                        writer.getLink(new LinkInfoImpl(configuration,
+                        LinkInfoImpl.Kind.SUMMARY_RETURN_TYPE, type)));
+            }
+
+        }
+        tdSummaryType.addContent(code);
+    }
+
+    /**
+     * Add the modifier for the member.
+     *
+     * @param member the member to add the type for
+     * @param code the content tree to which the modified will be added
+     */
+    private void addModifier(Element member, Content code) {
+        if (utils.isProtected(member)) {
+            code.addContent("protected ");
+        } else if (utils.isPrivate(member)) {
+            code.addContent("private ");
+        } else if (!utils.isPublic(member)) { // Package private
+            code.addContent(configuration.getText("doclet.Package_private"));
+            code.addContent(" ");
+        }
+        boolean isAnnotatedTypeElement = utils.isAnnotationType(member.getEnclosingElement());
+        if (!isAnnotatedTypeElement && utils.isMethod(member)) {
+            if (!utils.isInterface(member.getEnclosingElement()) && utils.isAbstract(member)) {
+                code.addContent("abstract ");
+            }
+            if (utils.isDefault(member)) {
+                code.addContent("default ");
+            }
+        }
+        if (utils.isStatic(member)) {
+            code.addContent("static ");
+        }
+    }
+
+    /**
+     * Add the deprecated information for the given member.
+     *
+     * @param member the member being documented.
+     * @param contentTree the content tree to which the deprecated information will be added.
+     */
+    protected void addDeprecatedInfo(Element member, Content contentTree) {
+        Content output = (new DeprecatedTaglet()).getTagletOutput(member,
+            writer.getTagletWriterInstance(false));
+        if (!output.isEmpty()) {
+            Content deprecatedContent = output;
+            Content div = HtmlTree.DIV(HtmlStyle.block, deprecatedContent);
+            contentTree.addContent(div);
+        }
+    }
+
+    /**
+     * Add the comment for the given member.
+     *
+     * @param member the member being documented.
+     * @param htmltree the content tree to which the comment will be added.
+     */
+    protected void addComment(Element member, Content htmltree) {
+        if (!utils.getBody(member).isEmpty()) {
+            writer.addInlineComment(member, htmltree);
+        }
+    }
+
+    protected String name(Element member) {
+        return utils.getSimpleName(member);
+    }
+
+    /**
+     * Get the header for the section.
+     *
+     * @param member the member being documented.
+     * @return a header content for the section.
+     */
+    protected Content getHead(Element member) {
+        Content memberContent = new StringContent(name(member));
+        Content heading = HtmlTree.HEADING(HtmlConstants.MEMBER_HEADING, memberContent);
+        return heading;
+    }
+
+    /**
+    * Return true if the given <code>ProgramElement</code> is inherited
+    * by the class that is being documented.
+    *
+    * @param ped The <code>ProgramElement</code> being checked.
+    * return true if the <code>ProgramElement</code> is being inherited and
+    * false otherwise.
+    */
+    protected boolean isInherited(Element ped){
+        return (!utils.isPrivate(ped) &&
+                (!utils.isPackagePrivate(ped) ||
+                    ped.getEnclosingElement().equals(ped.getEnclosingElement())));
+    }
+
+    /**
+     * Add deprecated information to the documentation tree
+     *
+     * @param deprmembers list of deprecated members
+     * @param headingKey the caption for the deprecated members table
+     * @param tableSummary the summary for the deprecated members table
+     * @param tableHeader table headers for the deprecated members table
+     * @param contentTree the content tree to which the deprecated members table will be added
+     */
+    protected void addDeprecatedAPI(Collection<Element> deprmembers, String headingKey,
+            String tableSummary, List<String> tableHeader, Content contentTree) {
+        if (deprmembers.size() > 0) {
+            Content caption = writer.getTableCaption(configuration.getResource(headingKey));
+            Content table = (configuration.isOutputHtml5())
+                    ? HtmlTree.TABLE(HtmlStyle.deprecatedSummary, caption)
+                    : HtmlTree.TABLE(HtmlStyle.deprecatedSummary, tableSummary, caption);
+            table.addContent(writer.getSummaryTableHeader(tableHeader, "col"));
+            Content tbody = new HtmlTree(HtmlTag.TBODY);
+            boolean altColor = true;
+            for (Element member : deprmembers) {
+                HtmlTree td = HtmlTree.TD(HtmlStyle.colOne, getDeprecatedLink(member));
+                List<? extends DocTree> deprTrees = utils.getBlockTags(member, DocTree.Kind.DEPRECATED);
+                if (!deprTrees.isEmpty()) {
+                    writer.addInlineDeprecatedComment(member, deprTrees.get(0), td);
+                }
+                HtmlTree tr = HtmlTree.TR(td);
+                tr.addStyle(altColor ? HtmlStyle.altColor : HtmlStyle.rowColor);
+                altColor = !altColor;
+                tbody.addContent(tr);
+            }
+            table.addContent(tbody);
+            Content li = HtmlTree.LI(HtmlStyle.blockList, table);
+            Content ul = HtmlTree.UL(HtmlStyle.blockList, li);
+            contentTree.addContent(ul);
+        }
+    }
+
+    /**
+     * Add use information to the documentation tree.
+     *
+     * @param mems list of program elements for which the use information will be added
+     * @param heading the section heading
+     * @param tableSummary the summary for the use table
+     * @param contentTree the content tree to which the use information will be added
+     */
+    protected void addUseInfo(List<? extends Element> mems,
+            Content heading, String tableSummary, Content contentTree) {
+        if (mems == null || mems.isEmpty()) {
+            return;
+        }
+        List<? extends Element> members = mems;
+        boolean printedUseTableHeader = false;
+        if (members.size() > 0) {
+            Content caption = writer.getTableCaption(heading);
+            Content table = (configuration.isOutputHtml5())
+                    ? HtmlTree.TABLE(HtmlStyle.useSummary, caption)
+                    : HtmlTree.TABLE(HtmlStyle.useSummary, tableSummary, caption);
+            Content tbody = new HtmlTree(HtmlTag.TBODY);
+            boolean altColor = true;
+            for (Element element : members) {
+                TypeElement te = utils.getEnclosingTypeElement(element);
+                if (!printedUseTableHeader) {
+                    table.addContent(writer.getSummaryTableHeader(
+                            this.getSummaryTableHeader(element), "col"));
+                    printedUseTableHeader = true;
+                }
+                HtmlTree tr = new HtmlTree(HtmlTag.TR);
+                tr.addStyle(altColor ? HtmlStyle.altColor : HtmlStyle.rowColor);
+                altColor = !altColor;
+                HtmlTree tdFirst = new HtmlTree(HtmlTag.TD);
+                tdFirst.addStyle(HtmlStyle.colFirst);
+                writer.addSummaryType(this, element, tdFirst);
+                tr.addContent(tdFirst);
+                HtmlTree tdLast = new HtmlTree(HtmlTag.TD);
+                tdLast.addStyle(HtmlStyle.colLast);
+                if (te != null
+                        && !utils.isConstructor(element)
+                        && !utils.isClass(element)
+                        && !utils.isInterface(element)
+                        && !utils.isAnnotationType(element)) {
+                    HtmlTree name = new HtmlTree(HtmlTag.SPAN);
+                    name.addStyle(HtmlStyle.typeNameLabel);
+                    name.addContent(name(te) + ".");
+                    tdLast.addContent(name);
+                }
+                addSummaryLink(utils.isClass(element) || utils.isInterface(element)
+                        ? LinkInfoImpl.Kind.CLASS_USE
+                        : LinkInfoImpl.Kind.MEMBER,
+                    te, element, tdLast);
+                writer.addSummaryLinkComment(this, element, tdLast);
+                tr.addContent(tdLast);
+                tbody.addContent(tr);
+            }
+            table.addContent(tbody);
+            contentTree.addContent(table);
+        }
+    }
+
+    /**
+     * Add the navigation detail link.
+     *
+     * @param members the members to be linked
+     * @param liNav the content tree to which the navigation detail link will be added
+     */
+    protected void addNavDetailLink(SortedSet<Element> members, Content liNav) {
+        addNavDetailLink(!members.isEmpty(), liNav);
+    }
+
+    /**
+     * Add the navigation summary link.
+     *
+     * @param members members to be linked
+     * @param visibleMemberMap the visible inherited members map
+     * @param liNav the content tree to which the navigation summary link will be added
+     */
+    protected void addNavSummaryLink(SortedSet<? extends Element> members,
+            VisibleMemberMap visibleMemberMap, Content liNav) {
+        if (!members.isEmpty()) {
+            liNav.addContent(getNavSummaryLink(null, true));
+            return;
+        }
+
+        TypeElement superClass = utils.getSuperClass(typeElement);
+        while (superClass != null) {
+            if (visibleMemberMap.hasMembersFor(superClass)) {
+                liNav.addContent(getNavSummaryLink(superClass, true));
+                return;
+            }
+            superClass = utils.getSuperClass(superClass);
+        }
+        liNav.addContent(getNavSummaryLink(null, false));
+    }
+
+    protected void serialWarning(Element e, String key, String a1, String a2) {
+        if (configuration.serialwarn) {
+            configuration.getDocletSpecificMsg().warning(e, key, a1, a2);
+        }
+    }
+
+    /**
+     * Add the member summary for the given class.
+     *
+     * @param tElement the class that is being documented
+     * @param member the member being documented
+     * @param firstSentenceTags the first sentence tags to be added to the summary
+     * @param tableContents the list of contents to which the documentation will be added
+     * @param counter the counter for determining id and style for the table row
+     */
+    public void addMemberSummary(TypeElement tElement, Element member,
+            List<? extends DocTree> firstSentenceTags, List<Content> tableContents, int counter) {
+        HtmlTree tdSummaryType = new HtmlTree(HtmlTag.TD);
+        tdSummaryType.addStyle(HtmlStyle.colFirst);
+        writer.addSummaryType(this, member, tdSummaryType);
+        HtmlTree tdSummary = new HtmlTree(HtmlTag.TD);
+        setSummaryColumnStyle(tdSummary);
+        addSummaryLink(tElement, member, tdSummary);
+        writer.addSummaryLinkComment(this, member, firstSentenceTags, tdSummary);
+        HtmlTree tr = HtmlTree.TR(tdSummaryType);
+        tr.addContent(tdSummary);
+        if (utils.isMethod(member) && !utils.isAnnotationType(member)) {
+            int methodType = utils.isStatic(member) ? MethodTypes.STATIC.value() :
+                    MethodTypes.INSTANCE.value();
+            if (utils.isInterface(member.getEnclosingElement())) {
+                methodType = utils.isAbstract(member)
+                        ? methodType | MethodTypes.ABSTRACT.value()
+                        : methodType | MethodTypes.DEFAULT.value();
+            } else {
+                methodType = utils.isAbstract(member)
+                        ? methodType | MethodTypes.ABSTRACT.value()
+                        : methodType | MethodTypes.CONCRETE.value();
+            }
+            if (utils.isDeprecated(member) || utils.isDeprecated(typeElement)) {
+                methodType = methodType | MethodTypes.DEPRECATED.value();
+            }
+            methodTypesOr = methodTypesOr | methodType;
+            String tableId = "i" + counter;
+            typeMap.put(tableId, methodType);
+            tr.addAttr(HtmlAttr.ID, tableId);
+        }
+        if (counter%2 == 0)
+            tr.addStyle(HtmlStyle.altColor);
+        else
+            tr.addStyle(HtmlStyle.rowColor);
+        tableContents.add(tr);
+    }
+
+    /**
+     * Generate the method types set and return true if the method summary table
+     * needs to show tabs.
+     *
+     * @return true if the table should show tabs
+     */
+    public boolean showTabs() {
+        int value;
+        for (MethodTypes type : EnumSet.allOf(MethodTypes.class)) {
+            value = type.value();
+            if ((value & methodTypesOr) == value) {
+                methodTypes.add(type);
+            }
+        }
+        boolean showTabs = methodTypes.size() > 1;
+        if (showTabs) {
+            methodTypes.add(MethodTypes.ALL);
+        }
+        return showTabs;
+    }
+
+    /**
+     * Set the style for the summary column.
+     *
+     * @param tdTree the column for which the style will be set
+     */
+    public void setSummaryColumnStyle(HtmlTree tdTree) {
+        tdTree.addStyle(HtmlStyle.colLast);
+    }
+
+    /**
+     * Add inherited member summary for the given class and member.
+     *
+     * @param tElement the class the inherited member belongs to
+     * @param nestedClass the inherited member that is summarized
+     * @param isFirst true if this is the first member in the list
+     * @param isLast true if this is the last member in the list
+     * @param linksTree the content tree to which the summary will be added
+     */
+    public void addInheritedMemberSummary(TypeElement tElement,
+            Element nestedClass, boolean isFirst, boolean isLast,
+            Content linksTree) {
+        writer.addInheritedMemberSummary(this, tElement, nestedClass, isFirst,
+                linksTree);
+    }
+
+    /**
+     * Get the inherited summary header for the given class.
+     *
+     * @param tElement the class the inherited member belongs to
+     * @return a content tree for the inherited summary header
+     */
+    public Content getInheritedSummaryHeader(TypeElement tElement) {
+        Content inheritedTree = writer.getMemberTreeHeader();
+        writer.addInheritedSummaryHeader(this, tElement, inheritedTree);
+        return inheritedTree;
+    }
+
+    /**
+     * Get the inherited summary links tree.
+     *
+     * @return a content tree for the inherited summary links
+     */
+    public Content getInheritedSummaryLinksTree() {
+        return new HtmlTree(HtmlTag.CODE);
+    }
+
+    /**
+     * Get the summary table tree for the given class.
+     *
+     * @param tElement the class for which the summary table is generated
+     * @param tableContents list of contents to be displayed in the summary table
+     * @return a content tree for the summary table
+     */
+    public Content getSummaryTableTree(TypeElement tElement, List<Content> tableContents) {
+        return writer.getSummaryTableTree(this, tElement, tableContents, showTabs());
+    }
+
+    /**
+     * Get the member tree to be documented.
+     *
+     * @param memberTree the content tree of member to be documented
+     * @return a content tree that will be added to the class documentation
+     */
+    public Content getMemberTree(Content memberTree) {
+        return writer.getMemberTree(memberTree);
+    }
+
+    /**
+     * Get the member tree to be documented.
+     *
+     * @param memberTree the content tree of member to be documented
+     * @param isLastContent true if the content to be added is the last content
+     * @return a content tree that will be added to the class documentation
+     */
+    public Content getMemberTree(Content memberTree, boolean isLastContent) {
+        if (isLastContent)
+            return HtmlTree.UL(HtmlStyle.blockListLast, memberTree);
+        else
+            return HtmlTree.UL(HtmlStyle.blockList, memberTree);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractPackageIndexWriter.java	Sat Nov 28 18:52:17 2015 -0800
@@ -0,0 +1,202 @@
+/*
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.javadoc.internal.doclets.formats.html;
+
+import java.io.*;
+import java.util.*;
+
+import javax.lang.model.element.PackageElement;
+
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
+import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml;
+import jdk.javadoc.internal.doclets.toolkit.Content;
+import jdk.javadoc.internal.doclets.toolkit.util.DocPath;
+
+/**
+ * Abstract class to generate the overview files in
+ * Frame and Non-Frame format. This will be sub-classed by to
+ * generate overview-frame.html as well as overview-summary.html.
+ *
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ *
+ * @author Atul M Dambalkar
+ * @author Bhavesh Patel (Modified)
+ */
+public abstract class AbstractPackageIndexWriter extends HtmlDocletWriter {
+
+    /**
+     * A Set of Packages to be documented.
+     */
+    protected SortedSet<PackageElement> packages;
+
+    /**
+     * Constructor. Also initializes the packages variable.
+     *
+     * @param configuration  The current configuration
+     * @param filename Name of the package index file to be generated.
+     */
+    public AbstractPackageIndexWriter(ConfigurationImpl configuration,
+                                      DocPath filename) throws IOException {
+        super(configuration, filename);
+        packages = configuration.packages;
+    }
+
+    /**
+     * Adds the navigation bar header to the documentation tree.
+     *
+     * @param body the document tree to which the navigation bar header will be added
+     */
+    protected abstract void addNavigationBarHeader(Content body);
+
+    /**
+     * Adds the navigation bar footer to the documentation tree.
+     *
+     * @param body the document tree to which the navigation bar footer will be added
+     */
+    protected abstract void addNavigationBarFooter(Content body);
+
+    /**
+     * Adds the overview header to the documentation tree.
+     *
+     * @param body the document tree to which the overview header will be added
+     */
+    protected abstract void addOverviewHeader(Content body);
+
+    /**
+     * Adds the packages list to the documentation tree.
+     *
+     * @param packages a collection of packagedoc objects
+     * @param text caption for the table
+     * @param tableSummary summary for the table
+     * @param body the document tree to which the packages list will be added
+     */
+    protected abstract void addPackagesList(Collection<PackageElement> packages, String text,
+            String tableSummary, Content body);
+
+    /**
+     * Generate and prints the contents in the package index file. Call appropriate
+     * methods from the sub-class in order to generate Frame or Non
+     * Frame format.
+     *
+     * @param title the title of the window.
+     * @param includeScript boolean set true if windowtitle script is to be included
+     */
+    protected void buildPackageIndexFile(String title, boolean includeScript) throws IOException {
+        String windowOverview = configuration.getText(title);
+        Content body = getBody(includeScript, getWindowTitle(windowOverview));
+        addNavigationBarHeader(body);
+        addOverviewHeader(body);
+        addIndex(body);
+        addOverview(body);
+        addNavigationBarFooter(body);
+        printHtmlDocument(configuration.metakeywords.getOverviewMetaKeywords(title,
+                configuration.doctitle), includeScript, body);
+    }
+
+    /**
+     * Default to no overview, override to add overview.
+     *
+     * @param body the document tree to which the overview will be added
+     */
+    protected void addOverview(Content body) throws IOException {
+    }
+
+    /**
+     * Adds the frame or non-frame package index to the documentation tree.
+     *
+     * @param body the document tree to which the index will be added
+     */
+    protected void addIndex(Content body) {
+        addIndexContents(packages, "doclet.Package_Summary",
+                configuration.getText("doclet.Member_Table_Summary",
+                configuration.getText("doclet.Package_Summary"),
+                configuration.getText("doclet.packages")), body);
+    }
+
+    /**
+     * Adds package index contents. Call appropriate methods from
+     * the sub-classes. Adds it to the body HtmlTree
+     *
+     * @param packages a collection of packages to be documented
+     * @param text string which will be used as the heading
+     * @param tableSummary summary for the table
+     * @param body the document tree to which the index contents will be added
+     */
+    protected void addIndexContents(Collection<PackageElement> packages, String text,
+            String tableSummary, Content body) {
+        if (!packages.isEmpty()) {
+            HtmlTree htmlTree = (configuration.allowTag(HtmlTag.NAV))
+                    ? HtmlTree.NAV()
+                    : new HtmlTree(HtmlTag.DIV);
+            htmlTree.addStyle(HtmlStyle.indexNav);
+            HtmlTree ul = new HtmlTree(HtmlTag.UL);
+            addAllClassesLink(ul);
+            htmlTree.addContent(ul);
+            body.addContent(htmlTree);
+            addPackagesList(packages, text, tableSummary, body);
+        }
+    }
+
+    /**
+     * Adds the doctitle to the documentation tree, if it is specified on the command line.
+     *
+     * @param body the document tree to which the title will be added
+     */
+    protected void addConfigurationTitle(Content body) {
+        if (configuration.doctitle.length() > 0) {
+            Content title = new RawHtml(configuration.doctitle);
+            Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING,
+                    HtmlStyle.title, title);
+            Content div = HtmlTree.DIV(HtmlStyle.header, heading);
+            body.addContent(div);
+        }
+    }
+
+    /**
+     * Returns highlighted "Overview", in the navigation bar as this is the
+     * overview page.
+     *
+     * @return a Content object to be added to the documentation tree
+     */
+    protected Content getNavLinkContents() {
+        Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, overviewLabel);
+        return li;
+    }
+
+    /**
+     * Do nothing. This will be overridden.
+     *
+     * @param div the document tree to which the all classes link will be added
+     */
+    protected void addAllClassesLink(Content div) {
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractTreeWriter.java	Sat Nov 28 18:52:17 2015 -0800
@@ -0,0 +1,202 @@
+/*
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.javadoc.internal.doclets.formats.html;
+
+import java.io.*;
+import java.util.*;
+
+import javax.lang.model.element.TypeElement;
+
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
+import jdk.javadoc.internal.doclets.toolkit.Content;
+import jdk.javadoc.internal.doclets.toolkit.util.ClassTree;
+import jdk.javadoc.internal.doclets.toolkit.util.DocPath;
+import jdk.javadoc.internal.doclets.toolkit.util.DocletAbortException;
+
+
+/**
+ * Abstract class to print the class hierarchy page for all the Classes. This
+ * is sub-classed by {@link PackageTreeWriter} and {@link TreeWriter} to
+ * generate the Package Tree and global Tree(for all the classes and packages)
+ * pages.
+ *
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ *
+ * @author Atul M Dambalkar
+ */
+public abstract class AbstractTreeWriter extends HtmlDocletWriter {
+
+    /**
+     * The class and interface tree built by using {@link ClassTree}
+     */
+    protected final ClassTree classtree;
+
+    /**
+     * Constructor initializes classtree variable. This constructor will be used
+     * while generating global tree file "overview-tree.html".
+     *
+     * @param configuration  The current configuration
+     * @param filename   File to be generated.
+     * @param classtree  Tree built by {@link ClassTree}.
+     * @throws IOException
+     * @throws DocletAbortException
+     */
+    protected AbstractTreeWriter(ConfigurationImpl configuration,
+                                 DocPath filename, ClassTree classtree)
+                                 throws IOException {
+        super(configuration, filename);
+        this.classtree = classtree;
+    }
+
+    /**
+     * Add each level of the class tree. For each sub-class or
+     * sub-interface indents the next level information.
+     * Recurses itself to add sub-classes info.
+     *
+     * @param parent the superclass or superinterface of the sset
+     * @param collection  a collection of the sub-classes at this level
+     * @param isEnum true if we are generating a tree for enums
+     * @param contentTree the content tree to which the level information will be added
+     */
+    protected void addLevelInfo(TypeElement parent, Collection<TypeElement> collection,
+            boolean isEnum, Content contentTree) {
+        if (!collection.isEmpty()) {
+            Content ul = new HtmlTree(HtmlTag.UL);
+            for (TypeElement local : collection) {
+                HtmlTree li = new HtmlTree(HtmlTag.LI);
+                li.addStyle(HtmlStyle.circle);
+                addPartialInfo(local, li);
+                addExtendsImplements(parent, local, li);
+                addLevelInfo(local, classtree.directSubClasses(local, isEnum),
+                             isEnum, li);   // Recurse
+                ul.addContent(li);
+            }
+            contentTree.addContent(ul);
+        }
+    }
+
+    /**
+     * Add the heading for the tree depending upon tree type if it's a
+     * Class Tree or Interface tree.
+     *
+     * @param sset classes which are at the most base level, all the
+     * other classes in this run will derive from these classes
+     * @param heading heading for the tree
+     * @param div the content tree to which the tree will be added
+     */
+    protected void addTree(SortedSet<TypeElement> sset, String heading, HtmlTree div) {
+        addTree(sset, heading, div, false);
+    }
+
+    protected void addTree(SortedSet<TypeElement> sset, String heading,
+                           HtmlTree div, boolean isEnums) {
+        if (!sset.isEmpty()) {
+            TypeElement firstTypeElement = sset.first();
+            Content headingContent = getResource(heading);
+            Content sectionHeading = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, true,
+                    headingContent);
+            HtmlTree htmlTree;
+            if (configuration.allowTag(HtmlTag.SECTION)) {
+                htmlTree = HtmlTree.SECTION(sectionHeading);
+            } else {
+                div.addContent(sectionHeading);
+                htmlTree = div;
+            }
+            addLevelInfo(!utils.isInterface(firstTypeElement) ? firstTypeElement : null,
+                    sset, isEnums, htmlTree);
+            if (configuration.allowTag(HtmlTag.SECTION)) {
+                div.addContent(htmlTree);
+            }
+        }
+    }
+
+    /**
+     * Add information regarding the classes which this class extends or
+     * implements.
+     *
+     * @param parent the parent class of the class being documented
+     * @param typeElement the TypeElement under consideration
+     * @param contentTree the content tree to which the information will be added
+     */
+    protected void addExtendsImplements(TypeElement parent, TypeElement typeElement,
+            Content contentTree) {
+        SortedSet<TypeElement> interfaces = new TreeSet<>(utils.makeGeneralPurposeComparator());
+        typeElement.getInterfaces().stream().forEach((t) -> {
+            interfaces.add(utils.asTypeElement(t));
+        });
+        if (interfaces.size() > (utils.isInterface(typeElement) ? 1 : 0)) {
+            boolean isFirst = true;
+            for (TypeElement intf : interfaces) {
+                if (parent != intf) {
+                    if (utils.isPublic(intf) || utils.isLinkable(intf)) {
+                        if (isFirst) {
+                            isFirst = false;
+                            if (utils.isInterface(typeElement)) {
+                                contentTree.addContent(" (");
+                                contentTree.addContent(getResource("doclet.also"));
+                                contentTree.addContent(" extends ");
+                            } else {
+                                contentTree.addContent(" (implements ");
+                            }
+                        } else {
+                            contentTree.addContent(", ");
+                        }
+                        addPreQualifiedClassLink(LinkInfoImpl.Kind.TREE, intf, contentTree);
+                    }
+                }
+            }
+            if (!isFirst) {
+                contentTree.addContent(")");
+            }
+        }
+    }
+
+    /**
+     * Add information about the class kind, if it's a "class" or "interface".
+     *
+     * @param typeElement the class being documented
+     * @param contentTree the content tree to which the information will be added
+     */
+    protected void addPartialInfo(TypeElement typeElement, Content contentTree) {
+        addPreQualifiedStrongClassLink(LinkInfoImpl.Kind.TREE, typeElement, contentTree);
+    }
+
+    /**
+     * Get the tree label for the navigation bar.
+     *
+     * @return a content tree for the tree label
+     */
+    protected Content getNavLinkTree() {
+        Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, treeLabel);
+        return li;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllClassesFrameWriter.java	Sat Nov 28 18:52:17 2015 -0800
@@ -0,0 +1,180 @@
+/*
+ * Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.javadoc.internal.doclets.formats.html;
+
+import java.io.*;
+
+import javax.lang.model.element.Element;
+import javax.lang.model.element.TypeElement;
+
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
+import jdk.javadoc.internal.doclets.toolkit.Content;
+import jdk.javadoc.internal.doclets.toolkit.util.DocPath;
+import jdk.javadoc.internal.doclets.toolkit.util.DocPaths;
+import jdk.javadoc.internal.doclets.toolkit.util.DocletAbortException;
+import jdk.javadoc.internal.doclets.toolkit.util.IndexBuilder;
+
+
+/**
+ * Generate the file with list of all the classes in this run. This page will be
+ * used in the left-hand bottom frame, when "All Classes" link is clicked in
+ * the left-hand top frame. The name of the generated file is
+ * "allclasses-frame.html".
+ *
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ *
+ * @author Atul M Dambalkar
+ * @author Doug Kramer
+ * @author Bhavesh Patel (Modified)
+ */
+public class AllClassesFrameWriter extends HtmlDocletWriter {
+
+    /**
+     * Index of all the classes.
+     */
+    protected IndexBuilder indexbuilder;
+
+    /**
+     * BR tag to be used within a document tree.
+     */
+    final HtmlTree BR = new HtmlTree(HtmlTag.BR);
+
+    /**
+     * Construct AllClassesFrameWriter object. Also initializes the indexbuilder
+     * variable in this class.
+     * @param configuration  The current configuration
+     * @param filename       Path to the file which is getting generated.
+     * @param indexbuilder   Unicode based Index from {@link IndexBuilder}
+     * @throws IOException
+     * @throws DocletAbortException
+     */
+    public AllClassesFrameWriter(ConfigurationImpl configuration,
+                                 DocPath filename, IndexBuilder indexbuilder)
+                              throws IOException {
+        super(configuration, filename);
+        this.indexbuilder = indexbuilder;
+    }
+
+    /**
+     * Create AllClassesFrameWriter object. Then use it to generate the
+     * "allclasses-frame.html" file. Generate the file in the current or the
+     * destination directory.
+     *
+     * @param indexbuilder IndexBuilder object for all classes index.
+     * @throws DocletAbortException
+     */
+    public static void generate(ConfigurationImpl configuration,
+                                IndexBuilder indexbuilder) {
+        AllClassesFrameWriter allclassgen;
+        DocPath filename = DocPaths.ALLCLASSES_FRAME;
+        try {
+            allclassgen = new AllClassesFrameWriter(configuration,
+                                                    filename, indexbuilder);
+            allclassgen.buildAllClassesFile(true);
+            allclassgen.close();
+            filename = DocPaths.ALLCLASSES_NOFRAME;
+            allclassgen = new AllClassesFrameWriter(configuration,
+                                                    filename, indexbuilder);
+            allclassgen.buildAllClassesFile(false);
+            allclassgen.close();
+        } catch (IOException exc) {
+            configuration.standardmessage.
+                     error("doclet.exception_encountered",
+                           exc.toString(), filename);
+            throw new DocletAbortException(exc);
+        }
+    }
+
+    /**
+     * Print all the classes in the file.
+     * @param wantFrames True if we want frames.
+     */
+    protected void buildAllClassesFile(boolean wantFrames) throws IOException {
+        String label = configuration.getText("doclet.All_Classes");
+        Content body = getBody(false, getWindowTitle(label));
+        Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING,
+                HtmlStyle.bar, allclassesLabel);
+        body.addContent(heading);
+        Content ul = new HtmlTree(HtmlTag.UL);
+        // Generate the class links and add it to the tdFont tree.
+        addAllClasses(ul, wantFrames);
+        HtmlTree htmlTree = (configuration.allowTag(HtmlTag.MAIN))
+                ? HtmlTree.MAIN(HtmlStyle.indexContainer, ul)
+                : HtmlTree.DIV(HtmlStyle.indexContainer, ul);
+        body.addContent(htmlTree);
+        printHtmlDocument(null, false, body);
+    }
+
+    /**
+     * Use the sorted index of all the classes and add all the classes to the
+     * content list.
+     *
+     * @param content HtmlTree content to which all classes information will be added
+     * @param wantFrames True if we want frames.
+     */
+    protected void addAllClasses(Content content, boolean wantFrames) {
+        for (Character unicode : indexbuilder.index()) {
+            addContents(indexbuilder.getMemberList(unicode), wantFrames, content);
+        }
+    }
+
+    /**
+     * Given a list of classes, generate links for each class or interface.
+     * If the class kind is interface, print it in the italics font. Also all
+     * links should target the right-hand frame. If clicked on any class name
+     * in this page, appropriate class page should get opened in the right-hand
+     * frame.
+     *
+     * @param classlist Sorted list of classes.
+     * @param wantFrames True if we want frames.
+     * @param content HtmlTree content to which the links will be added
+     */
+    protected void addContents(Iterable<? extends Element> classlist, boolean wantFrames,
+                               Content content) {
+        for (Element element : classlist) {
+            TypeElement typeElement = (TypeElement)element;
+            if (!utils.isCoreClass(typeElement)) {
+                continue;
+            }
+            Content label = interfaceName(typeElement, false);
+            Content linkContent;
+            if (wantFrames) {
+                linkContent = getLink(new LinkInfoImpl(configuration,
+                                                       LinkInfoImpl.Kind.ALL_CLASSES_FRAME, typeElement).label(label).target("classFrame"));
+            } else {
+                linkContent = getLink(new LinkInfoImpl(configuration, LinkInfoImpl.Kind.DEFAULT, typeElement).label(label));
+            }
+            Content li = HtmlTree.LI(linkContent);
+            content.addContent(li);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeFieldWriterImpl.java	Sat Nov 28 18:52:17 2015 -0800
@@ -0,0 +1,324 @@
+/*
+ * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.javadoc.internal.doclets.formats.html;
+
+import java.io.*;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.lang.model.element.Element;
+import javax.lang.model.element.ExecutableElement;
+import javax.lang.model.element.TypeElement;
+import javax.lang.model.type.TypeMirror;
+
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
+import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
+import jdk.javadoc.internal.doclets.toolkit.AnnotationTypeFieldWriter;
+import jdk.javadoc.internal.doclets.toolkit.Content;
+import jdk.javadoc.internal.doclets.toolkit.MemberSummaryWriter;
+
+
+/**
+ * Writes annotation type field documentation in HTML format.
+ *
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ *
+ * @author Bhavesh Patel
+ */
+public class AnnotationTypeFieldWriterImpl extends AbstractMemberWriter
+    implements AnnotationTypeFieldWriter, MemberSummaryWriter {
+
+    /**
+     * Construct a new AnnotationTypeFieldWriterImpl.
+     *
+     * @param writer         the writer that will write the output.
+     * @param annotationType the AnnotationType that holds this member.
+     */
+    public AnnotationTypeFieldWriterImpl(SubWriterHolderWriter writer,
+            TypeElement annotationType) {
+        super(writer, annotationType);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Content getMemberSummaryHeader(TypeElement typeElement,
+            Content memberSummaryTree) {
+        memberSummaryTree.addContent(
+                HtmlConstants.START_OF_ANNOTATION_TYPE_FIELD_SUMMARY);
+        Content memberTree = writer.getMemberTreeHeader();
+        writer.addSummaryHeader(this, typeElement, memberTree);
+        return memberTree;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Content getMemberTreeHeader() {
+        return writer.getMemberTreeHeader();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addMemberTree(Content memberSummaryTree, Content memberTree) {
+        writer.addMemberTree(memberSummaryTree, memberTree);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addAnnotationFieldDetailsMarker(Content memberDetails) {
+        memberDetails.addContent(HtmlConstants.START_OF_ANNOTATION_TYPE_FIELD_DETAILS);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addAnnotationDetailsTreeHeader(TypeElement typeElement,
+            Content memberDetailsTree) {
+        if (!writer.printedAnnotationFieldHeading) {
+            memberDetailsTree.addContent(writer.getMarkerAnchor(
+                    SectionName.ANNOTATION_TYPE_FIELD_DETAIL));
+            Content heading = HtmlTree.HEADING(HtmlConstants.DETAILS_HEADING,
+                    writer.fieldDetailsLabel);
+            memberDetailsTree.addContent(heading);
+            writer.printedAnnotationFieldHeading = true;
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Content getAnnotationDocTreeHeader(Element member,
+            Content annotationDetailsTree) {
+        annotationDetailsTree.addContent(
+                writer.getMarkerAnchor(name(member)));
+        Content annotationDocTree = writer.getMemberTreeHeader();
+        Content heading = new HtmlTree(HtmlConstants.MEMBER_HEADING);
+        heading.addContent(name(member));
+        annotationDocTree.addContent(heading);
+        return annotationDocTree;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Content getSignature(Element member) {
+        Content pre = new HtmlTree(HtmlTag.PRE);
+        writer.addAnnotationInfo(member, pre);
+        addModifiers(member, pre);
+        Content link =
+                writer.getLink(new LinkInfoImpl(configuration,
+                        LinkInfoImpl.Kind.MEMBER, getType(member)));
+        pre.addContent(link);
+        pre.addContent(writer.getSpace());
+        if (configuration.linksource) {
+            Content memberName = new StringContent(name(member));
+            writer.addSrcLink(member, memberName, pre);
+        } else {
+            addName(name(member), pre);
+        }
+        return pre;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addDeprecated(Element member, Content annotationDocTree) {
+        addDeprecatedInfo(member, annotationDocTree);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addComments(Element member, Content annotationDocTree) {
+        addComment(member, annotationDocTree);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addTags(Element member, Content annotationDocTree) {
+        writer.addTagsInfo(member, annotationDocTree);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Content getAnnotationDetails(Content annotationDetailsTree) {
+        if (configuration.allowTag(HtmlTag.SECTION)) {
+            HtmlTree htmlTree = HtmlTree.SECTION(getMemberTree(annotationDetailsTree));
+            return htmlTree;
+        }
+        return getMemberTree(annotationDetailsTree);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Content getAnnotationDoc(Content annotationDocTree,
+            boolean isLastContent) {
+        return getMemberTree(annotationDocTree, isLastContent);
+    }
+
+    /**
+     * Close the writer.
+     */
+    public void close() throws IOException {
+        writer.close();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addSummaryLabel(Content memberTree) {
+        Content label = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING,
+                writer.getResource("doclet.Field_Summary"));
+        memberTree.addContent(label);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getTableSummary() {
+        return configuration.getText("doclet.Member_Table_Summary",
+                configuration.getText("doclet.Field_Summary"),
+                configuration.getText("doclet.fields"));
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Content getCaption() {
+        return configuration.getResource("doclet.Fields");
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public List<String> getSummaryTableHeader(Element member) {
+        List<String> header = Arrays.asList(writer.getModifierTypeHeader(),
+                configuration.getText("doclet.0_and_1",
+                        configuration.getText("doclet.Fields"),
+                        configuration.getText("doclet.Description")));
+        return header;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addSummaryAnchor(TypeElement typeElement, Content memberTree) {
+        memberTree.addContent(writer.getMarkerAnchor(
+                SectionName.ANNOTATION_TYPE_FIELD_SUMMARY));
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addInheritedSummaryAnchor(TypeElement typeElement, Content inheritedTree) {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addInheritedSummaryLabel(TypeElement typeElement, Content inheritedTree) {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void addSummaryLink(LinkInfoImpl.Kind context, TypeElement typeElement, Element member,
+            Content tdSummary) {
+        Content memberLink = HtmlTree.SPAN(HtmlStyle.memberNameLink,
+                writer.getDocLink(context, member, name(member), false));
+        Content code = HtmlTree.CODE(memberLink);
+        tdSummary.addContent(code);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void addInheritedSummaryLink(TypeElement typeElement,
+            Element member, Content linksTree) {
+        //Not applicable.
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void addSummaryType(Element member, Content tdSummaryType) {
+        addModifierAndType(member, getType(member), tdSummaryType);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    protected Content getDeprecatedLink(Element member) {
+        return writer.getDocLink(LinkInfoImpl.Kind.MEMBER,
+                member, utils.getFullyQualifiedName(member));
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    protected Content getNavSummaryLink(TypeElement typeElement, boolean link) {
+        if (link) {
+            return writer.getHyperLink(
+                    SectionName.ANNOTATION_TYPE_FIELD_SUMMARY,
+                    writer.getResource("doclet.navField"));
+        } else {
+            return writer.getResource("doclet.navField");
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void addNavDetailLink(boolean link, Content liNav) {
+        if (link) {
+            liNav.addContent(writer.getHyperLink(
+                    SectionName.ANNOTATION_TYPE_FIELD_DETAIL,
+                    writer.getResource("doclet.navField")));
+        } else {
+            liNav.addContent(writer.getResource("doclet.navField"));
+        }
+    }
+    private TypeMirror getType(Element member) {
+        if (utils.isConstructor(member))
+            return null;
+        if (utils.isExecutableElement(member))
+            return utils.getReturnType((ExecutableElement)member);
+        return member.asType();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeOptionalMemberWriterImpl.java	Sat Nov 28 18:52:17 2015 -0800
@@ -0,0 +1,171 @@
+/*
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.javadoc.internal.doclets.formats.html;
+
+import java.io.*;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.lang.model.element.AnnotationValue;
+import javax.lang.model.element.Element;
+import javax.lang.model.element.ExecutableElement;
+import javax.lang.model.element.TypeElement;
+
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
+import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
+import jdk.javadoc.internal.doclets.toolkit.AnnotationTypeOptionalMemberWriter;
+import jdk.javadoc.internal.doclets.toolkit.Content;
+import jdk.javadoc.internal.doclets.toolkit.MemberSummaryWriter;
+
+
+/**
+ * Writes annotation type optional member documentation in HTML format.
+ *
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ *
+ * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
+ */
+public class AnnotationTypeOptionalMemberWriterImpl extends
+        AnnotationTypeRequiredMemberWriterImpl
+    implements AnnotationTypeOptionalMemberWriter, MemberSummaryWriter {
+
+    /**
+     * Construct a new AnnotationTypeOptionalMemberWriterImpl.
+     *
+     * @param writer         the writer that will write the output.
+     * @param annotationType the AnnotationType that holds this member.
+     */
+    public AnnotationTypeOptionalMemberWriterImpl(SubWriterHolderWriter writer,
+        TypeElement annotationType) {
+        super(writer, annotationType);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Content getMemberSummaryHeader(TypeElement typeElement,
+            Content memberSummaryTree) {
+        memberSummaryTree.addContent(
+                HtmlConstants.START_OF_ANNOTATION_TYPE_OPTIONAL_MEMBER_SUMMARY);
+        Content memberTree = writer.getMemberTreeHeader();
+        writer.addSummaryHeader(this, typeElement, memberTree);
+        return memberTree;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addMemberTree(Content memberSummaryTree, Content memberTree) {
+        writer.addMemberTree(memberSummaryTree, memberTree);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addDefaultValueInfo(Element member, Content annotationDocTree) {
+        if (utils.isAnnotationType(member)) {
+            ExecutableElement ee = (ExecutableElement)member;
+            AnnotationValue value = ee.getDefaultValue();
+            if (value != null) {
+                Content dt = HtmlTree.DT(writer.getResource("doclet.Default"));
+                Content dl = HtmlTree.DL(dt);
+                Content dd = HtmlTree.DD(new StringContent(value.toString()));
+                dl.addContent(dd);
+                annotationDocTree.addContent(dl);
+            }
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void close() throws IOException {
+        writer.close();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addSummaryLabel(Content memberTree) {
+        Content label = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING,
+                writer.getResource("doclet.Annotation_Type_Optional_Member_Summary"));
+        memberTree.addContent(label);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getTableSummary() {
+        return configuration.getText("doclet.Member_Table_Summary",
+                configuration.getText("doclet.Annotation_Type_Optional_Member_Summary"),
+                configuration.getText("doclet.annotation_type_optional_members"));
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Content getCaption() {
+        return configuration.getResource("doclet.Annotation_Type_Optional_Members");
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public List<String> getSummaryTableHeader(Element member) {
+        List<String> header = Arrays.asList(writer.getModifierTypeHeader(),
+                configuration.getText("doclet.0_and_1",
+                        configuration.getText("doclet.Annotation_Type_Optional_Member"),
+                        configuration.getText("doclet.Description")));
+        return header;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addSummaryAnchor(TypeElement typeElement, Content memberTree) {
+        memberTree.addContent(writer.getMarkerAnchor(
+                SectionName.ANNOTATION_TYPE_OPTIONAL_ELEMENT_SUMMARY));
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    protected Content getNavSummaryLink(TypeElement typeElement, boolean link) {
+        if (link) {
+            return writer.getHyperLink(
+                    SectionName.ANNOTATION_TYPE_OPTIONAL_ELEMENT_SUMMARY,
+                    writer.getResource("doclet.navAnnotationTypeOptionalMember"));
+        } else {
+            return writer.getResource("doclet.navAnnotationTypeOptionalMember");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeRequiredMemberWriterImpl.java	Sat Nov 28 18:52:17 2015 -0800
@@ -0,0 +1,324 @@
+/*
+ * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.javadoc.internal.doclets.formats.html;
+
+import java.io.*;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.lang.model.element.Element;
+import javax.lang.model.element.ExecutableElement;
+import javax.lang.model.element.TypeElement;
+import javax.lang.model.type.TypeMirror;
+
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
+import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
+import jdk.javadoc.internal.doclets.toolkit.AnnotationTypeRequiredMemberWriter;
+import jdk.javadoc.internal.doclets.toolkit.Content;
+import jdk.javadoc.internal.doclets.toolkit.MemberSummaryWriter;
+
+
+/**
+ * Writes annotation type required member documentation in HTML format.
+ *
+ *  <p><b>This is NOT part of any supported API.
+ *  If you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ *
+ * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
+ */
+public class AnnotationTypeRequiredMemberWriterImpl extends AbstractMemberWriter
+    implements AnnotationTypeRequiredMemberWriter, MemberSummaryWriter {
+
+    /**
+     * Construct a new AnnotationTypeRequiredMemberWriterImpl.
+     *
+     * @param writer         the writer that will write the output.
+     * @param annotationType the AnnotationType that holds this member.
+     */
+    public AnnotationTypeRequiredMemberWriterImpl(SubWriterHolderWriter writer,
+            TypeElement annotationType) {
+        super(writer, annotationType);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Content getMemberSummaryHeader(TypeElement typeElement,
+            Content memberSummaryTree) {
+        memberSummaryTree.addContent(
+                HtmlConstants.START_OF_ANNOTATION_TYPE_REQUIRED_MEMBER_SUMMARY);
+        Content memberTree = writer.getMemberTreeHeader();
+        writer.addSummaryHeader(this, typeElement, memberTree);
+        return memberTree;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Content getMemberTreeHeader() {
+        return writer.getMemberTreeHeader();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addMemberTree(Content memberSummaryTree, Content memberTree) {
+        writer.addMemberTree(memberSummaryTree, memberTree);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addAnnotationDetailsMarker(Content memberDetails) {
+        memberDetails.addContent(HtmlConstants.START_OF_ANNOTATION_TYPE_DETAILS);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addAnnotationDetailsTreeHeader(TypeElement classDoc,
+            Content memberDetailsTree) {
+        if (!writer.printedAnnotationHeading) {
+            memberDetailsTree.addContent(writer.getMarkerAnchor(
+                    SectionName.ANNOTATION_TYPE_ELEMENT_DETAIL));
+            Content heading = HtmlTree.HEADING(HtmlConstants.DETAILS_HEADING,
+                    writer.annotationTypeDetailsLabel);
+            memberDetailsTree.addContent(heading);
+            writer.printedAnnotationHeading = true;
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Content getAnnotationDocTreeHeader(Element member,
+            Content annotationDetailsTree) {
+        String simpleName = name(member);
+        annotationDetailsTree.addContent(writer.getMarkerAnchor(simpleName +
+                utils.signature((ExecutableElement) member)));
+        Content annotationDocTree = writer.getMemberTreeHeader();
+        Content heading = new HtmlTree(HtmlConstants.MEMBER_HEADING);
+        heading.addContent(simpleName);
+        annotationDocTree.addContent(heading);
+        return annotationDocTree;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Content getSignature(Element member) {
+        Content pre = new HtmlTree(HtmlTag.PRE);
+        writer.addAnnotationInfo(member, pre);
+        addModifiers(member, pre);
+        Content link =
+                writer.getLink(new LinkInfoImpl(configuration,
+                        LinkInfoImpl.Kind.MEMBER, getType(member)));
+        pre.addContent(link);
+        pre.addContent(writer.getSpace());
+        if (configuration.linksource) {
+            Content memberName = new StringContent(name(member));
+            writer.addSrcLink(member, memberName, pre);
+        } else {
+            addName(name(member), pre);
+        }
+        return pre;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addDeprecated(Element member, Content annotationDocTree) {
+        addDeprecatedInfo(member, annotationDocTree);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addComments(Element member, Content annotationDocTree) {
+        addComment(member, annotationDocTree);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addTags(Element member, Content annotationDocTree) {
+        writer.addTagsInfo(member, annotationDocTree);
+    }
+
+    /**
+     * {@inheritDoc}