6851834: Javadoc doclet needs a structured approach to generate the output HTML.
authorbpatel
Wed, 01 Dec 2010 11:02:38 -0800
changeset 7614 cfadc977ca75
parent 7336 3fd30668e9b5
child 7616 f2f219a2e1ef
6851834: Javadoc doclet needs a structured approach to generate the output HTML. Reviewed-by: jjg
langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractExecutableMemberWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractIndexWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractMemberWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractPackageIndexWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractTreeWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/AllClassesFrameWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeOptionalMemberWriterImpl.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeRequiredMemberWriterImpl.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeWriterImpl.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/ClassUseWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/ClassWriterImpl.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/ConstantsSummaryWriterImpl.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/ConstructorWriterImpl.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/DeprecatedListWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/EnumConstantWriterImpl.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/FieldWriterImpl.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/FrameOutputWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/HelpWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDoclet.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlSerialFieldWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlSerialMethodWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/LinkFactoryImpl.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/MethodWriterImpl.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/NestedClassWriterImpl.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageFrameWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexFrameWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageTreeWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageUseWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageWriterImpl.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/SerializedFormWriterImpl.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/SingleIndexWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/SourceToHTMLConverter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/SplitIndexWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/StylesheetWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/SubWriterHolderWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/TagletWriterImpl.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/TreeWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/Comment.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/DocType.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlAttr.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlConstants.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlDocWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlDocument.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlStyle.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlTag.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlTree.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlWriter.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/RawHtml.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/StringContent.java
langtools/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard.properties
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/AnnotationTypeOptionalMemberWriter.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/AnnotationTypeRequiredMemberWriter.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/AnnotationTypeWriter.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/ClassWriter.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/ConstantsSummaryWriter.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/ConstructorWriter.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/Content.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/EnumConstantWriter.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/FieldWriter.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/MemberSummaryWriter.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/MethodWriter.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/NestedClassWriter.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/PackageSummaryWriter.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/SerializedFormWriter.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AbstractBuilder.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AbstractMemberBuilder.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeBuilder.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeOptionalMemberBuilder.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeRequiredMemberBuilder.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ClassBuilder.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ConstantsSummaryBuilder.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ConstructorBuilder.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/EnumConstantBuilder.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/FieldBuilder.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/LayoutParser.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/MemberSummaryBuilder.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/MethodBuilder.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/PackageSummaryBuilder.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/SerializedFormBuilder.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclet.xml
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets.properties
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/stylesheet.css
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/DirectoryManager.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/SourceToHTMLConverter.java
langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/Util.java
langtools/test/com/sun/javadoc/AccessAsciiArt/AccessAsciiArt.java
langtools/test/com/sun/javadoc/AccessH1/AccessH1.java
langtools/test/com/sun/javadoc/AccessSkipNav/AccessSkipNav.java
langtools/test/com/sun/javadoc/AccessSummary/AccessSummary.java
langtools/test/com/sun/javadoc/AuthorDD/AuthorDD.java
langtools/test/com/sun/javadoc/JavascriptWinTitle/JavascriptWinTitle.java
langtools/test/com/sun/javadoc/MetaTag/MetaTag.java
langtools/test/com/sun/javadoc/ValidHtml/ValidHtml.java
langtools/test/com/sun/javadoc/VersionNumber/VersionNumber.java
langtools/test/com/sun/javadoc/WindowTitles/WindowTitles.java
langtools/test/com/sun/javadoc/constantValues/TestConstantValuesDriver.java
langtools/test/com/sun/javadoc/testClassCrossReferences/TestClassCrossReferences.java
langtools/test/com/sun/javadoc/testClassTree/TestClassTree.java
langtools/test/com/sun/javadoc/testConstructorIndent/TestConstructorIndent.java
langtools/test/com/sun/javadoc/testDeprecatedDocs/TestDeprecatedDocs.java
langtools/test/com/sun/javadoc/testDocRootInlineTag/TestDocRootInlineTag.java
langtools/test/com/sun/javadoc/testExternalOverridenMethod/TestExternalOverridenMethod.java
langtools/test/com/sun/javadoc/testHeadings/TestHeadings.java
langtools/test/com/sun/javadoc/testHelpOption/TestHelpOption.java
langtools/test/com/sun/javadoc/testHref/TestHref.java
langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java
langtools/test/com/sun/javadoc/testHtmlDocument/TestHtmlDocument.java
langtools/test/com/sun/javadoc/testHtmlDocument/testLink.html
langtools/test/com/sun/javadoc/testHtmlDocument/testMarkup.html
langtools/test/com/sun/javadoc/testHtmlStrongTag/TestHtmlStrongTag.java
langtools/test/com/sun/javadoc/testHtmlTableTags/TestHtmlTableTags.java
langtools/test/com/sun/javadoc/testHtmlTag/TestHtmlTag.java
langtools/test/com/sun/javadoc/testIndex/TestIndex.java
langtools/test/com/sun/javadoc/testInlineLinkLabel/TestInlineLinkLabel.java
langtools/test/com/sun/javadoc/testInterface/TestInterface.java
langtools/test/com/sun/javadoc/testJavascript/TestJavascript.java
langtools/test/com/sun/javadoc/testLinkOption/TestLinkOption.java
langtools/test/com/sun/javadoc/testLinkTaglet/TestLinkTaglet.java
langtools/test/com/sun/javadoc/testLinkToSerialForm/TestLinkToSerialForm.java
langtools/test/com/sun/javadoc/testMemberInheritence/TestMemberInheritence.java
langtools/test/com/sun/javadoc/testMemberSummary/TestMemberSummary.java
langtools/test/com/sun/javadoc/testNavagation/TestNavagation.java
langtools/test/com/sun/javadoc/testNewLanguageFeatures/TestNewLanguageFeatures.java
langtools/test/com/sun/javadoc/testOverridenMethods/TestMultiInheritence.java
langtools/test/com/sun/javadoc/testOverridenMethods/TestOverridenMethodDocCopy.java
langtools/test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethods.java
langtools/test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethodsWithPackageFlag.java
langtools/test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethodsWithPrivateFlag.java
langtools/test/com/sun/javadoc/testPackagePage/TestPackagePage.java
langtools/test/com/sun/javadoc/testParamTaglet/TestParamTaglet.java
langtools/test/com/sun/javadoc/testPrivateClasses/TestPrivateClasses.java
langtools/test/com/sun/javadoc/testSerializedForm/TestSerializedForm.java
langtools/test/com/sun/javadoc/testSerializedFormDeprecationInfo/TestSerializedFormDeprecationInfo.java
langtools/test/com/sun/javadoc/testSimpleTag/TestSimpleTag.java
langtools/test/com/sun/javadoc/testStylesheet/TestStylesheet.java
langtools/test/com/sun/javadoc/testSummaryHeading/TestSummaryHeading.java
langtools/test/com/sun/javadoc/testSuperclassInSerialForm/TestSuperClassInSerialForm.java
langtools/test/com/sun/javadoc/testTagInheritence/TestTagInheritence.java
langtools/test/com/sun/javadoc/testTaglets/TestTaglets.java
langtools/test/com/sun/javadoc/testTaglets/taglets/Foo.java
langtools/test/com/sun/javadoc/testThrowsHead/TestThrowsHead.java
langtools/test/com/sun/javadoc/testThrowsTag/TestThrowsTag.java
langtools/test/com/sun/javadoc/testTitleInHref/TestTitleInHref.java
langtools/test/com/sun/javadoc/testTypeParams/TestTypeParameters.java
langtools/test/com/sun/javadoc/testUnnamedPackage/TestUnnamedPackage.java
langtools/test/com/sun/javadoc/testValueTag/TestValueTag.java
langtools/test/com/sun/javadoc/testWarnings/TestWarnings.java
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractExecutableMemberWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractExecutableMemberWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -26,12 +26,16 @@
 package com.sun.tools.doclets.formats.html;
 
 import com.sun.javadoc.*;
+import com.sun.tools.doclets.formats.html.markup.*;
+import com.sun.tools.doclets.internal.toolkit.*;
+import com.sun.tools.doclets.internal.toolkit.util.*;
 
 /**
  * Print method and constructor info.
  *
  * @author Robert Field
  * @author Atul M Dambalkar
+ * @author Bhavesh Patel (Modified)
  */
 public abstract class AbstractExecutableMemberWriter extends AbstractMemberWriter {
 
@@ -45,82 +49,111 @@
     }
 
     /**
-     * Write the type parameters for the executable member.
+     * 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.
      * @return the display length required to write this information.
      */
-    protected int writeTypeParameters(ExecutableMemberDoc member) {
+    protected int addTypeParameters(ExecutableMemberDoc member, Content htmltree) {
         LinkInfoImpl linkInfo = new LinkInfoImpl(
             LinkInfoImpl.CONTEXT_MEMBER_TYPE_PARAMS, member, false);
         String typeParameters = writer.getTypeParameterLinks(linkInfo);
         if (linkInfo.displayLength > 0) {
-            writer.print(typeParameters + " ");
+            Content linkContent = new RawHtml(typeParameters);
+            htmltree.addContent(linkContent);
+            htmltree.addContent(writer.getSpace());
             writer.displayLength += linkInfo.displayLength + 1;
         }
         return linkInfo.displayLength;
     }
 
-    protected void writeSignature(ExecutableMemberDoc member) {
-        writer.displayLength = 0;
-        writer.pre();
-        writer.writeAnnotationInfo(member);
-        printModifiers(member);
-        writeTypeParameters(member);
-        if (configuration().linksource &&
-            member.position().line() != classdoc.position().line()) {
-            writer.printSrcLink(member, member.name());
-        } else {
-            strong(member.name());
-        }
-        writeParameters(member);
-        writeExceptions(member);
-        writer.preEnd();
+    /**
+     * {@inheritDoc}
+     */
+    protected Content getDeprecatedLink(ProgramElementDoc member) {
+        ExecutableMemberDoc emd = (ExecutableMemberDoc)member;
+        return writer.getDocLink(LinkInfoImpl.CONTEXT_MEMBER, (MemberDoc) emd,
+                emd.qualifiedName() + emd.flatSignature());
     }
 
-    protected void writeDeprecatedLink(ProgramElementDoc member) {
+    /**
+     * Add the summary link for the member.
+     *
+     * @param context the id of the context where the link will be printed
+     * @param classDoc 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
+     */
+    protected void addSummaryLink(int context, ClassDoc cd, ProgramElementDoc member,
+            Content tdSummary) {
         ExecutableMemberDoc emd = (ExecutableMemberDoc)member;
-        writer.printDocLink(LinkInfoImpl.CONTEXT_MEMBER, (MemberDoc) emd,
-            emd.qualifiedName() + emd.flatSignature(), false);
+        String name = emd.name();
+        Content strong = HtmlTree.STRONG(new RawHtml(
+                writer.getDocLink(context, cd, (MemberDoc) emd,
+                name, false)));
+        Content code = HtmlTree.CODE(strong);
+        writer.displayLength = name.length();
+        addParameters(emd, false, code);
+        tdSummary.addContent(code);
     }
 
-    protected void writeSummaryLink(int context, ClassDoc cd, ProgramElementDoc member) {
-        ExecutableMemberDoc emd = (ExecutableMemberDoc)member;
-        String name = emd.name();
-        writer.strong();
-        writer.printDocLink(context, cd, (MemberDoc) emd,
-            name, false);
-        writer.strongEnd();
-        writer.displayLength = name.length();
-        writeParameters(emd, false);
+    /**
+     * Add the inherited summary link for the member.
+     *
+     * @param classDoc the classDoc that we should link to
+     * @param member the member being linked to
+     * @param linksTree the content tree to which the link will be added
+     */
+    protected void addInheritedSummaryLink(ClassDoc cd,
+            ProgramElementDoc member, Content linksTree) {
+        linksTree.addContent(new RawHtml(
+                writer.getDocLink(LinkInfoImpl.CONTEXT_MEMBER, cd, (MemberDoc) member,
+                member.name(), false)));
     }
 
-    protected void writeInheritedSummaryLink(ClassDoc cd,
-            ProgramElementDoc member) {
-        writer.printDocLink(LinkInfoImpl.CONTEXT_MEMBER, cd, (MemberDoc) member,
-            member.name(), false);
-    }
-
-    protected void writeParam(ExecutableMemberDoc member, Parameter param,
-        boolean isVarArg) {
+    /**
+     * 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(ExecutableMemberDoc member, Parameter param,
+        boolean isVarArg, Content tree) {
         if (param.type() != null) {
-            writer.printLink(new LinkInfoImpl(
-                LinkInfoImpl.CONTEXT_EXECUTABLE_MEMBER_PARAM, param.type(),
-                isVarArg));
+            Content link = new RawHtml(writer.getLink(new LinkInfoImpl(
+                    LinkInfoImpl.CONTEXT_EXECUTABLE_MEMBER_PARAM, param.type(),
+                    isVarArg)));
+            tree.addContent(link);
         }
         if(param.name().length() > 0) {
-            writer.space();
-            writer.print(param.name());
+            tree.addContent(writer.getSpace());
+            tree.addContent(param.name());
         }
     }
 
-    protected void writeParameters(ExecutableMemberDoc member) {
-        writeParameters(member, true);
+    /**
+     * Add all the parameters for the executable member.
+     *
+     * @param member the member to write parameters for.
+     * @param tree the content tree to which the parameters information will be added.
+     */
+    protected void addParameters(ExecutableMemberDoc member, Content htmltree) {
+        addParameters(member, true, htmltree);
     }
 
-    protected void writeParameters(ExecutableMemberDoc member,
-            boolean includeAnnotations) {
-        print('(');
+    /**
+     * 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 tree the content tree to which the parameters information will be added.
+     */
+    protected void addParameters(ExecutableMemberDoc member,
+            boolean includeAnnotations, Content htmltree) {
+        htmltree.addContent("(");
         Parameter[] params = member.parameters();
         String indent = makeSpace(writer.displayLength);
         if (configuration().linksource) {
@@ -132,58 +165,70 @@
             Parameter param = params[paramstart];
             if (!param.name().startsWith("this$")) {
                 if (includeAnnotations) {
-                        boolean foundAnnotations =
-                                writer.writeAnnotationInfo(indent.length(), member, param);
-                        if (foundAnnotations) {
-                                writer.println();
-                                writer.print(indent);
+                    boolean foundAnnotations =
+                            writer.addAnnotationInfo(indent.length(),
+                            member, param, htmltree);
+                    if (foundAnnotations) {
+                        htmltree.addContent(DocletConstants.NL);
+                        htmltree.addContent(indent);
                     }
                 }
-                writeParam(member, param,
-                    (paramstart == params.length - 1) && member.isVarArgs());
+                addParam(member, param,
+                    (paramstart == params.length - 1) && member.isVarArgs(), htmltree);
                 break;
             }
         }
 
         for (int i = paramstart + 1; i < params.length; i++) {
-            writer.print(',');
-            writer.println();
-            writer.print(indent);
+            htmltree.addContent(",");
+            htmltree.addContent(DocletConstants.NL);
+            htmltree.addContent(indent);
             if (includeAnnotations) {
                 boolean foundAnnotations =
-                    writer.writeAnnotationInfo(indent.length(), member, params[i]);
+                        writer.addAnnotationInfo(indent.length(), member, params[i],
+                        htmltree);
                 if (foundAnnotations) {
-                    writer.println();
-                    writer.print(indent);
+                    htmltree.addContent(DocletConstants.NL);
+                    htmltree.addContent(indent);
                 }
             }
-            writeParam(member, params[i], (i == params.length - 1) && member.isVarArgs());
+            addParam(member, params[i], (i == params.length - 1) && member.isVarArgs(),
+                    htmltree);
         }
-        writer.print(')');
+        htmltree.addContent(")");
     }
 
-    protected void writeExceptions(ExecutableMemberDoc member) {
+    /**
+     * 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(ExecutableMemberDoc member, Content htmltree) {
         Type[] exceptions = member.thrownExceptionTypes();
         if(exceptions.length > 0) {
             LinkInfoImpl memberTypeParam = new LinkInfoImpl(
-                LinkInfoImpl.CONTEXT_MEMBER, member, false);
+                    LinkInfoImpl.CONTEXT_MEMBER, member, false);
             int retlen = getReturnTypeLength(member);
             writer.getTypeParameterLinks(memberTypeParam);
             retlen += memberTypeParam.displayLength == 0 ?
                 0 : memberTypeParam.displayLength + 1;
             String indent = makeSpace(modifierString(member).length() +
-                member.name().length() + retlen - 4);
-            writer.println();
-            writer.print(indent);
-            writer.print("throws ");
+                    member.name().length() + retlen - 4);
+            htmltree.addContent(DocletConstants.NL);
+            htmltree.addContent(indent);
+            htmltree.addContent("throws ");
             indent += "       ";
-            writer.printLink(new LinkInfoImpl(
-                LinkInfoImpl.CONTEXT_MEMBER, exceptions[0]));
+            Content link = new RawHtml(writer.getLink(new LinkInfoImpl(
+                    LinkInfoImpl.CONTEXT_MEMBER, exceptions[0])));
+            htmltree.addContent(link);
             for(int i = 1; i < exceptions.length; i++) {
-                writer.println(",");
-                writer.print(indent);
-                writer.printLink(new LinkInfoImpl(
-                    LinkInfoImpl.CONTEXT_MEMBER, exceptions[i]));
+                htmltree.addContent(",");
+                htmltree.addContent(DocletConstants.NL);
+                htmltree.addContent(indent);
+                Content exceptionLink = new RawHtml(writer.getLink(new LinkInfoImpl(
+                        LinkInfoImpl.CONTEXT_MEMBER, exceptions[i])));
+                htmltree.addContent(exceptionLink);
             }
         }
     }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractIndexWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractIndexWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -30,6 +30,8 @@
 
 import com.sun.javadoc.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
+import com.sun.tools.doclets.formats.html.markup.*;
+import com.sun.tools.doclets.internal.toolkit.*;
 
 /**
  * Generate Index for all the Member Names with Indexing in
@@ -39,6 +41,7 @@
  *
  * @see    IndexBuilder
  * @author Atul M Dambalkar
+ * @author Bhavesh Patel (Modified)
  */
 public class AbstractIndexWriter extends HtmlDocletWriter {
 
@@ -78,175 +81,187 @@
     }
 
     /**
-     * Print the text "Index" in strong format in the navigation bar.
+     * Get the index label for navigation bar.
+     *
+     * @return a content tree for the tree label
      */
-    protected void navLinkIndex() {
-        navCellRevStart();
-        fontStyle("NavBarFont1Rev");
-        strongText("doclet.Index");
-        fontEnd();
-        navCellEnd();
+    protected Content getNavLinkIndex() {
+        Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, indexLabel);
+        return li;
     }
 
     /**
-     * Generate the member information for the unicode character along with the
+     * Add the member information for the unicode character along with the
      * list of the members.
      *
-     * @param unicode Unicode for which member list information to be generated.
-     * @param memberlist List of members for the unicode character.
+     * @param unicode 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 generateContents(Character unicode, List<? extends Doc> memberlist) {
-        anchor("_" + unicode + "_");
-        h2();
-        strong(unicode.toString());
-        h2End();
+    protected void addContents(Character unicode, List<? extends Doc> memberlist,
+            Content contentTree) {
+        contentTree.addContent(getMarkerAnchor("_" + unicode + "_"));
+        Content headContent = new StringContent(unicode.toString());
+        Content heading = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, false,
+                HtmlStyle.title, headContent);
+        contentTree.addContent(heading);
         int memberListSize = memberlist.size();
         // Display the list only if there are elements to be displayed.
         if (memberListSize > 0) {
-            dl();
+            Content dl = new HtmlTree(HtmlTag.DL);
             for (int i = 0; i < memberListSize; i++) {
                 Doc element = memberlist.get(i);
                 if (element instanceof MemberDoc) {
-                    printDescription((MemberDoc)element);
+                    addDescription((MemberDoc)element, dl);
                 } else if (element instanceof ClassDoc) {
-                    printDescription((ClassDoc)element);
+                    addDescription((ClassDoc)element, dl);
                 } else if (element instanceof PackageDoc) {
-                    printDescription((PackageDoc)element);
+                    addDescription((PackageDoc)element, dl);
                 }
             }
-            dlEnd();
+            contentTree.addContent(dl);
         }
-        hr();
     }
 
-
     /**
-     * Print one line summary comment for the package.
+     * Add one line summary comment for the package.
      *
-     * @param pkg PackageDoc passed.
+     * @param pkg the package to be documented
+     * @param dlTree the content tree to which the description will be added
      */
-    protected void printDescription(PackageDoc pkg) {
-        dt();
-        printPackageLink(pkg, Util.getPackageName(pkg), true);
-        print(" - ");
-        print(configuration.getText("doclet.package") + " " + pkg.name());
-        dtEnd();
-        dd();
-        printSummaryComment(pkg);
-        ddEnd();
+    protected void addDescription(PackageDoc pkg, Content dlTree) {
+        Content link = getPackageLink(pkg, new StringContent(Util.getPackageName(pkg)));
+        Content dt = HtmlTree.DT(link);
+        dt.addContent(" - ");
+        dt.addContent(getResource("doclet.package"));
+        dt.addContent(" " + pkg.name());
+        dlTree.addContent(dt);
+        Content dd = new HtmlTree(HtmlTag.DD);
+        addSummaryComment(pkg, dd);
+        dlTree.addContent(dd);
     }
 
     /**
-     * Print one line summary comment for the class.
+     * Add one line summary comment for the class.
      *
-     * @param cd ClassDoc passed.
+     * @param cd the class being documented
+     * @param dlTree the content tree to which the description will be added
      */
-    protected void printDescription(ClassDoc cd) {
-        dt();
-        printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_INDEX, cd, true));
-        print(" - ");
-        printClassInfo(cd);
-        dtEnd();
-        dd();
-        printComment(cd);
-        ddEnd();
+    protected void addDescription(ClassDoc cd, Content dlTree) {
+        Content link = new RawHtml(
+                getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_INDEX, cd, true)));
+        Content dt = HtmlTree.DT(link);
+        dt.addContent(" - ");
+        addClassInfo(cd, dt);
+        dlTree.addContent(dt);
+        Content dd = new HtmlTree(HtmlTag.DD);
+        addComment(cd, dd);
+        dlTree.addContent(dd);
     }
 
     /**
-     * Print the classkind(class, interface, exception, error of the class
+     * Add the classkind(class, interface, exception, error of the class
      * passed.
      *
-     * @param cd ClassDoc.
+     * @param cd the class being documented
+     * @param contentTree the content tree to which the class info will be added
      */
-    protected void printClassInfo(ClassDoc cd) {
-        print(configuration.getText("doclet.in",
-            Util.getTypeName(configuration, cd, false),
-            getPackageLink(cd.containingPackage(),
+    protected void addClassInfo(ClassDoc cd, Content contentTree) {
+        contentTree.addContent(getResource("doclet.in",
+                Util.getTypeName(configuration, cd, false),
+                getPackageLinkString(cd.containingPackage(),
                 Util.getPackageName(cd.containingPackage()), false)));
     }
 
-
     /**
-     * Generate Description for Class, Field, Method or Constructor.
-     * for Java.* Packages Class Members.
+     * Add description for Class, Field, Method or Constructor.
      *
-     * @param member MemberDoc for the member of the Class Kind.
-     * @see com.sun.javadoc.MemberDoc
+     * @param member MemberDoc for the member of the Class Kind
+     * @param dlTree the content tree to which the description will be added
      */
-    protected void printDescription(MemberDoc member) {
+    protected void addDescription(MemberDoc member, Content dlTree) {
         String name = (member instanceof ExecutableMemberDoc)?
             member.name() + ((ExecutableMemberDoc)member).flatSignature() :
             member.name();
         if (name.indexOf("<") != -1 || name.indexOf(">") != -1) {
                 name = Util.escapeHtmlChars(name);
         }
-        ClassDoc containing = member.containingClass();
-        dt();
-        printDocLink(LinkInfoImpl.CONTEXT_INDEX, member, name, true);
-        println(" - ");
-        printMemberDesc(member);
-        println();
-        dtEnd();
-        dd();
-        printComment(member);
-        ddEnd();
-        println();
+        Content span = HtmlTree.SPAN(HtmlStyle.strong,
+                getDocLink(LinkInfoImpl.CONTEXT_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);
     }
 
-
     /**
-     * Print comment for each element in the index. If the element is deprecated
+     * 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 element Index element
+     * @param contentTree the content tree to which the comment will be added
      */
-    protected void printComment(ProgramElementDoc element) {
+    protected void addComment(ProgramElementDoc element, Content contentTree) {
         Tag[] tags;
+        Content span = HtmlTree.SPAN(HtmlStyle.strong, deprecatedPhrase);
+        HtmlTree div = new HtmlTree(HtmlTag.DIV);
+        div.addStyle(HtmlStyle.block);
         if (Util.isDeprecated(element)) {
-            strongText("doclet.Deprecated"); space();
+            div.addContent(span);
             if ((tags = element.tags("deprecated")).length > 0)
-                printInlineDeprecatedComment(element, tags[0]);
+                addInlineDeprecatedComment(element, tags[0], div);
+            contentTree.addContent(div);
         } else {
             ClassDoc cont = element.containingClass();
             while (cont != null) {
                 if (Util.isDeprecated(cont)) {
-                    strongText("doclet.Deprecated"); space();
+                    div.addContent(span);
+                    contentTree.addContent(div);
                     break;
                 }
                 cont = cont.containingClass();
             }
-            printSummaryComment(element);
+            addSummaryComment(element, contentTree);
         }
     }
 
     /**
-     * Print description about the Static Varible/Method/Constructor for a
+     * Add description about the Static Varible/Method/Constructor for a
      * member.
      *
-     * @param member MemberDoc for the member within the Class Kind.
-     * @see com.sun.javadoc.MemberDoc
+     * @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 printMemberDesc(MemberDoc member) {
+    protected void addMemberDesc(MemberDoc member, Content contentTree) {
         ClassDoc containing = member.containingClass();
-        String classdesc = Util.getTypeName(configuration, containing, true) + " " +
-            getPreQualifiedClassLink(LinkInfoImpl.CONTEXT_INDEX, containing,
-                false);
+        String classdesc = Util.getTypeName(
+                configuration, containing, true) + " ";
         if (member.isField()) {
             if (member.isStatic()) {
-                printText("doclet.Static_variable_in", classdesc);
+                contentTree.addContent(
+                        getResource("doclet.Static_variable_in", classdesc));
             } else {
-                printText("doclet.Variable_in", classdesc);
+                contentTree.addContent(
+                        getResource("doclet.Variable_in", classdesc));
             }
         } else if (member.isConstructor()) {
-            printText("doclet.Constructor_for", classdesc);
+            contentTree.addContent(
+                    getResource("doclet.Constructor_for", classdesc));
         } else if (member.isMethod()) {
             if (member.isStatic()) {
-                printText("doclet.Static_method_in", classdesc);
+                contentTree.addContent(
+                        getResource("doclet.Static_method_in", classdesc));
             } else {
-                printText("doclet.Method_in", classdesc);
+                contentTree.addContent(
+                        getResource("doclet.Method_in", classdesc));
             }
         }
+        addPreQualifiedClassLink(LinkInfoImpl.CONTEXT_INDEX, containing,
+                false, contentTree);
     }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractMemberWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractMemberWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,10 +25,11 @@
 
 package com.sun.tools.doclets.formats.html;
 
+import java.util.*;
 import java.lang.reflect.Modifier;
-import java.util.*;
-
 import com.sun.javadoc.*;
+import com.sun.tools.doclets.formats.html.markup.*;
+import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
 import com.sun.tools.doclets.internal.toolkit.taglets.*;
 
@@ -60,36 +61,125 @@
 
     /*** abstracts ***/
 
-    public abstract void printSummaryLabel();
+    /**
+     * 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);
 
-    public abstract void printTableSummary();
+    /**
+     * Get the summary for the member summary table.
+     *
+     * @return a string for the table summary
+     */
+    public abstract String getTableSummary();
 
-    public abstract void printSummaryTableHeader(ProgramElementDoc member);
+    /**
+     * Get the caption for the member summary table.
+     *
+     * @return a string for the table caption
+     */
+    public abstract String getCaption();
 
-    public abstract void printInheritedSummaryLabel(ClassDoc cd);
+    /**
+     * Get the summary table header for the member.
+     *
+     * @param member the member to be documented
+     * @return the summary table header
+     */
+    public abstract String[] getSummaryTableHeader(ProgramElementDoc member);
 
-    public abstract void printSummaryAnchor(ClassDoc cd);
+    /**
+     * Add inherited summary lable for the member.
+     *
+     * @param cd the class doc to which to link to
+     * @param inheritedTree the content tree to which the inherited summary label will be added
+     */
+    public abstract void addInheritedSummaryLabel(ClassDoc cd, Content inheritedTree);
 
-    public abstract void printInheritedSummaryAnchor(ClassDoc cd);
+    /**
+     * Add the anchor for the summary section of the member.
+     *
+     * @param cd the class doc to be documented
+     * @param memberTree the content tree to which the summary anchor will be added
+     */
+    public abstract void addSummaryAnchor(ClassDoc cd, Content memberTree);
 
-    protected abstract void printSummaryType(ProgramElementDoc member);
+    /**
+     * Add the anchor for the inherited summary section of the member.
+     *
+     * @param cd the class doc to be documented
+     * @param inheritedTree the content tree to which the inherited summary anchor will be added
+     */
+    public abstract void addInheritedSummaryAnchor(ClassDoc cd, Content inheritedTree);
 
-    protected void writeSummaryLink(ClassDoc cd, ProgramElementDoc member) {
-        writeSummaryLink(LinkInfoImpl.CONTEXT_MEMBER, cd, member);
+    /**
+     * 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(ProgramElementDoc member,
+            Content tdSummaryType);
+
+    /**
+     * Add the summary link for the member.
+     *
+     * @param cd the class doc 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(ClassDoc cd, ProgramElementDoc member,
+            Content tdSummary) {
+        addSummaryLink(LinkInfoImpl.CONTEXT_MEMBER, cd, member, tdSummary);
     }
 
-    protected abstract void writeSummaryLink(int context,
-                                             ClassDoc cd,
-                                             ProgramElementDoc member);
+    /**
+     * Add the summary link for the member.
+     *
+     * @param context the id of the context where the link will be printed
+     * @param cd the class doc 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(int context,
+            ClassDoc cd, ProgramElementDoc member, Content tdSummary);
+
+    /**
+     * Add the inherited summary link for the member.
+     *
+     * @param cd the class doc 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(ClassDoc cd,
+            ProgramElementDoc member, Content linksTree);
 
-    protected abstract void writeInheritedSummaryLink(ClassDoc cd,
-                                                     ProgramElementDoc member);
+    /**
+     * Get the deprecated link.
+     *
+     * @param member the member being linked to
+     * @return a content tree representing the link
+     */
+    protected abstract Content getDeprecatedLink(ProgramElementDoc member);
 
-    protected abstract void writeDeprecatedLink(ProgramElementDoc member);
+    /**
+     * Get the navigation summary link.
+     *
+     * @param cd the class doc 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(ClassDoc cd, boolean link);
 
-    protected abstract void printNavSummaryLink(ClassDoc cd, boolean link);
-
-    protected abstract void printNavDetailLink(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);
 
     /***  ***/
 
@@ -109,6 +199,17 @@
     }
 
     /**
+     * Add the member name to the content tree and modifies the display length.
+     *
+     * @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);
+        writer.displayLength += name.length();
+    }
+
+    /**
      * Return a string describing the access modifier flags.
      * Don't include native or synchronized.
      *
@@ -131,18 +232,24 @@
         return type;
     }
 
-    protected void printModifiers(MemberDoc member) {
+    /**
+     * Add the modifier for the member.
+     *
+     * @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(MemberDoc member, Content htmltree) {
         String mod = modifierString(member);
         // According to JLS, we should not be showing public modifier for
         // interface methods.
         if ((member.isField() || member.isMethod()) &&
             writer instanceof ClassWriterImpl &&
-             ((ClassWriterImpl) writer).getClassDoc().isInterface()) {
+            ((ClassWriterImpl) writer).getClassDoc().isInterface()) {
             mod = Util.replaceText(mod, "public", "").trim();
         }
         if(mod.length() > 0) {
-            print(mod);
-            print(' ');
+            htmltree.addContent(mod);
+            htmltree.addContent(writer.getSpace());
         }
     }
 
@@ -158,66 +265,43 @@
     }
 
     /**
-     * Print 'static' if static and type link.
+     * 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 printStaticAndType(boolean isStatic, Type type) {
-        writer.printTypeSummaryHeader();
-        if (isStatic) {
-            print("static");
-        }
-        writer.space();
-        if (type != null) {
-            writer.printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER,
-                type));
-        }
-        writer.printTypeSummaryFooter();
-    }
-
-    /**
-     * Print the modifier and type for the member in the member summary.
-     *
-     * @param member the member to print the type for.
-     * @param type   the type to print.
-     */
-    protected void printModifierAndType(ProgramElementDoc member, Type type) {
-        writer.printTypeSummaryHeader();
-        printModifier(member);
+    protected void addModifierAndType(ProgramElementDoc member, Type type,
+            Content tdSummaryType) {
+        HtmlTree code = new HtmlTree(HtmlTag.CODE);
+        addModifier(member, code);
         if (type == null) {
-            writer.space();
             if (member.isClass()) {
-                print("class");
+                code.addContent("class");
             } else {
-                print("interface");
+                code.addContent("interface");
             }
+            code.addContent(writer.getSpace());
         } else {
             if (member instanceof ExecutableMemberDoc &&
                     ((ExecutableMemberDoc) member).typeParameters().length > 0) {
                 //Code to avoid ugly wrapping in member summary table.
-                writer.table(0,0,0);
-                writer.trAlignVAlign("right", "");
-                writer.tdNowrap();
-                writer.font("-1");
-                writer.code();
-                int displayLength = ((AbstractExecutableMemberWriter) this).
-                writeTypeParameters((ExecutableMemberDoc) member);
+                int displayLength = ((AbstractExecutableMemberWriter) this).addTypeParameters(
+                        (ExecutableMemberDoc) member, code);
                 if (displayLength > 10) {
-                    writer.br();
+                    code.addContent(new HtmlTree(HtmlTag.BR));
                 }
-                writer.printLink(new LinkInfoImpl(
-                    LinkInfoImpl.CONTEXT_SUMMARY_RETURN_TYPE, type));
-                writer.codeEnd();
-                writer.fontEnd();
-                writer.tdEnd();
-                writer.trEnd();
-                writer.tableEnd();
+                code.addContent(new RawHtml(
+                        writer.getLink(new LinkInfoImpl(
+                        LinkInfoImpl.CONTEXT_SUMMARY_RETURN_TYPE, type))));
             } else {
-                writer.space();
-                writer.printLink(new LinkInfoImpl(
-                    LinkInfoImpl.CONTEXT_SUMMARY_RETURN_TYPE, type));
+                code.addContent(new RawHtml(
+                        writer.getLink(new LinkInfoImpl(
+                        LinkInfoImpl.CONTEXT_SUMMARY_RETURN_TYPE, type))));
             }
 
         }
-        writer.printTypeSummaryFooter();
+        tdSummaryType.addContent(code);
     }
 
     private void printModifier(ProgramElementDoc member) {
@@ -238,25 +322,53 @@
     }
 
     /**
-     * Print the deprecated output for the given member.
+     * 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(ProgramElementDoc member, Content code) {
+        if (member.isProtected()) {
+            code.addContent("protected ");
+        } else if (member.isPrivate()) {
+            code.addContent("private ");
+        } else if (!member.isPublic()) { // Package private
+            code.addContent(configuration().getText("doclet.Package_private"));
+            code.addContent(" ");
+        }
+        if (member.isMethod() && ((MethodDoc)member).isAbstract()) {
+            code.addContent("abstract ");
+        }
+        if (member.isStatic()) {
+            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 printDeprecated(ProgramElementDoc member) {
+    protected void addDeprecatedInfo(ProgramElementDoc member, Content contentTree) {
         String output = (new DeprecatedTaglet()).getTagletOutput(member,
             writer.getTagletWriterInstance(false)).toString().trim();
         if (!output.isEmpty()) {
-            writer.printMemberDetailsListStartTag();
-            writer.print(output);
+            Content deprecatedContent = new RawHtml(output);
+            Content div = HtmlTree.DIV(HtmlStyle.block, deprecatedContent);
+            contentTree.addContent(div);
         }
     }
 
-    protected void printComment(ProgramElementDoc member) {
+    /**
+     * Add the comment for the given member.
+     *
+     * @param member the member being documented.
+     * @param contentTree the content tree to which the comment will be added.
+     */
+    protected void addComment(ProgramElementDoc member, Content htmltree) {
         if (member.inlineTags().length > 0) {
-            writer.printMemberDetailsListStartTag();
-            writer.dd();
-            writer.printInlineComment(member);
-            writer.ddEnd();
+            writer.addInlineComment(member, htmltree);
         }
     }
 
@@ -264,67 +376,19 @@
         return member.name();
     }
 
-    protected void printHead(MemberDoc member) {
-        writer.h3();
-        writer.print(member.name());
-        writer.h3End();
-    }
-
-    protected void printFullComment(ProgramElementDoc member) {
-        if(configuration().nocomment){
-            return;
-        }
-        writer.dl();
-        print(((TagletOutputImpl)
-            (new DeprecatedTaglet()).getTagletOutput(member,
-            writer.getTagletWriterInstance(false))).toString());
-        printCommentAndTags(member);
-        writer.dlEnd();
-    }
-
-    protected void printCommentAndTags(ProgramElementDoc member) {
-        printComment(member);
-        writer.printTags(member);
+    /**
+     * Get the header for the section.
+     *
+     * @param member the member being documented.
+     * @return a header content for the section.
+     */
+    protected Content getHead(MemberDoc member) {
+        Content memberContent = new RawHtml(member.name());
+        Content heading = HtmlTree.HEADING(HtmlConstants.MEMBER_HEADING, memberContent);
+        return heading;
     }
 
     /**
-     * Write the member footer.
-     */
-    protected void printMemberFooter() {
-        writer.printMemberDetailsListEndTag();
-        assert !writer.getMemberDetailsListPrinted();
-    }
-
-    /**
-     * Forward to containing writer
-     */
-    public void printSummaryHeader(ClassDoc cd) {
-        printedSummaryHeader = true;
-        writer.printSummaryHeader(this, cd);
-    }
-
-    /**
-     * Forward to containing writer
-     */
-    public void printInheritedSummaryHeader(ClassDoc cd) {
-        writer.printInheritedSummaryHeader(this, cd);
-    }
-
-    /**
-     * Forward to containing writer
-     */
-    public void printInheritedSummaryFooter(ClassDoc cd) {
-        writer.printInheritedSummaryFooter(this, cd);
-    }
-
-    /**
-     * Forward to containing writer
-     */
-    public void printSummaryFooter(ClassDoc cd) {
-        writer.printSummaryFooter(this, cd);
-    }
-
-   /**
     * Return true if the given <code>ProgramElement</code> is inherited
     * by the class that is being documented.
     *
@@ -340,102 +404,134 @@
         return true;
     }
 
-
     /**
-     * Generate the code for listing the deprecated APIs. Create the table
-     * format for listing the API. Call methods from the sub-class to complete
-     * the generation.
+     * 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 printDeprecatedAPI(List<Doc> deprmembers, String headingKey, String tableSummary, String[] tableHeader) {
+    protected void addDeprecatedAPI(List<Doc> deprmembers, String headingKey,
+            String tableSummary, String[] tableHeader, Content contentTree) {
         if (deprmembers.size() > 0) {
-            writer.tableIndexSummary(tableSummary);
-            writer.tableCaptionStart();
-            writer.printText(headingKey);
-            writer.tableCaptionEnd();
-            writer.summaryTableHeader(tableHeader, "col");
+            Content table = HtmlTree.TABLE(0, 3, 0, tableSummary,
+                writer.getTableCaption(configuration().getText(headingKey)));
+            table.addContent(writer.getSummaryTableHeader(tableHeader, "col"));
+            Content tbody = new HtmlTree(HtmlTag.TBODY);
             for (int i = 0; i < deprmembers.size(); i++) {
                 ProgramElementDoc member =(ProgramElementDoc)deprmembers.get(i);
-                writer.trBgcolorStyle("white", "TableRowColor");
-                writer.summaryRow(0);
-                writeDeprecatedLink(member);
-                writer.br();
-                writer.printNbsps();
+                HtmlTree td = HtmlTree.TD(HtmlStyle.colOne, getDeprecatedLink(member));
                 if (member.tags("deprecated").length > 0)
-                    writer.printInlineDeprecatedComment(member, member.tags("deprecated")[0]);
-                writer.space();
-                writer.summaryRowEnd();
-                writer.trEnd();
+                    writer.addInlineDeprecatedComment(member,
+                            member.tags("deprecated")[0], td);
+                HtmlTree tr = HtmlTree.TR(td);
+                if (i%2 == 0)
+                    tr.addStyle(HtmlStyle.altColor);
+                else
+                    tr.addStyle(HtmlStyle.rowColor);
+                tbody.addContent(tr);
             }
-            writer.tableEnd();
-            writer.space();
-            writer.p();
+            table.addContent(tbody);
+            Content li = HtmlTree.LI(HtmlStyle.blockList, table);
+            Content ul = HtmlTree.UL(HtmlStyle.blockList, li);
+            contentTree.addContent(ul);
         }
     }
 
     /**
-     * Print use info.
+     * 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 printUseInfo(List<? extends ProgramElementDoc> mems, String heading, String tableSummary) {
+    protected void addUseInfo(List<? extends ProgramElementDoc> mems,
+            String heading, String tableSummary, Content contentTree) {
         if (mems == null) {
             return;
         }
         List<? extends ProgramElementDoc> members = mems;
         boolean printedUseTableHeader = false;
         if (members.size() > 0) {
-            writer.tableIndexSummary(tableSummary);
-            writer.tableSubCaptionStart();
-            writer.print(heading);
-            writer.tableCaptionEnd();
-            for (Iterator<? extends ProgramElementDoc> it = members.iterator(); it.hasNext(); ) {
+            Content table = HtmlTree.TABLE(0, 3, 0, tableSummary,
+                    writer.getTableCaption(heading));
+            Content tbody = new HtmlTree(HtmlTag.TBODY);
+            Iterator<? extends ProgramElementDoc> it = members.iterator();
+            for (int i = 0; it.hasNext(); i++) {
                 ProgramElementDoc pgmdoc = it.next();
                 ClassDoc cd = pgmdoc.containingClass();
                 if (!printedUseTableHeader) {
-                    // Passing ProgramElementDoc helps decides printing
-                    // interface or class header in case of nested classes.
-                    this.printSummaryTableHeader(pgmdoc);
+                    table.addContent(writer.getSummaryTableHeader(
+                            this.getSummaryTableHeader(pgmdoc), "col"));
                     printedUseTableHeader = true;
                 }
-
-                writer.printSummaryLinkType(this, pgmdoc);
-                if (cd != null && !(pgmdoc instanceof ConstructorDoc)
-                               && !(pgmdoc instanceof ClassDoc)) {
-                    // Add class context
-                    writer.strong(cd.name() + ".");
+                HtmlTree tr = new HtmlTree(HtmlTag.TR);
+                if (i % 2 == 0) {
+                    tr.addStyle(HtmlStyle.altColor);
+                } else {
+                    tr.addStyle(HtmlStyle.rowColor);
                 }
-                writeSummaryLink(
-                    pgmdoc instanceof ClassDoc ?
-                        LinkInfoImpl.CONTEXT_CLASS_USE : LinkInfoImpl.CONTEXT_MEMBER,
-                    cd, pgmdoc);
-                writer.printSummaryLinkComment(this, pgmdoc);
+                HtmlTree tdFirst = new HtmlTree(HtmlTag.TD);
+                tdFirst.addStyle(HtmlStyle.colFirst);
+                writer.addSummaryType(this, pgmdoc, tdFirst);
+                tr.addContent(tdFirst);
+                HtmlTree tdLast = new HtmlTree(HtmlTag.TD);
+                tdLast.addStyle(HtmlStyle.colLast);
+                if (cd != null && !(pgmdoc instanceof ConstructorDoc)
+                        && !(pgmdoc instanceof ClassDoc)) {
+                    HtmlTree name = new HtmlTree(HtmlTag.SPAN);
+                    name.addStyle(HtmlStyle.strong);
+                    name.addContent(cd.name() + ".");
+                    tdLast.addContent(name);
+                }
+                addSummaryLink(pgmdoc instanceof ClassDoc ?
+                    LinkInfoImpl.CONTEXT_CLASS_USE : LinkInfoImpl.CONTEXT_MEMBER,
+                    cd, pgmdoc, tdLast);
+                writer.addSummaryLinkComment(this, pgmdoc, tdLast);
+                tr.addContent(tdLast);
+                tbody.addContent(tr);
             }
-            writer.tableEnd();
-            writer.space();
-            writer.p();
+            table.addContent(tbody);
+            contentTree.addContent(table);
         }
     }
 
-    protected void navDetailLink(List<?> members) {
-            printNavDetailLink(members.size() > 0? true: false);
+    /**
+     * 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(List<?> members, Content liNav) {
+        addNavDetailLink(members.size() > 0 ? true : false, liNav);
     }
 
-
-    protected void navSummaryLink(List<?> members,
-            VisibleMemberMap visibleMemberMap) {
+    /**
+     * 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(List<?> members,
+            VisibleMemberMap visibleMemberMap, Content liNav) {
         if (members.size() > 0) {
-            printNavSummaryLink(null, true);
+            liNav.addContent(getNavSummaryLink(null, true));
             return;
-        } else {
-            ClassDoc icd = classdoc.superclass();
-            while (icd != null) {
-                List<?> inhmembers = visibleMemberMap.getMembersFor(icd);
-                if (inhmembers.size() > 0) {
-                    printNavSummaryLink(icd, true);
-                    return;
-                }
-                icd = icd.superclass();
+        }
+        ClassDoc icd = classdoc.superclass();
+        while (icd != null) {
+            List<?> inhmembers = visibleMemberMap.getMembersFor(icd);
+            if (inhmembers.size() > 0) {
+                liNav.addContent(getNavSummaryLink(icd, true));
+                return;
             }
+            icd = icd.superclass();
         }
-        printNavSummaryLink(null, false);
+        liNav.addContent(getNavSummaryLink(null, false));
     }
 
     protected void serialWarning(SourcePosition pos, String key, String a1, String a2) {
@@ -453,12 +549,109 @@
     }
 
     /**
-     * {@inheritDoc}
+     * Add the member summary for the given class.
+     *
+     * @param classDoc 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 tableTree the content tree to which the documentation will be added
+     * @param counter the counter for determing style for the table row
+     */
+    public void addMemberSummary(ClassDoc classDoc, ProgramElementDoc member,
+            Tag[] firstSentenceTags, Content tableTree, 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(classDoc, member, tdSummary);
+        writer.addSummaryLinkComment(this, member, firstSentenceTags, tdSummary);
+        HtmlTree tr = HtmlTree.TR(tdSummaryType);
+        tr.addContent(tdSummary);
+        if (counter%2 == 0)
+            tr.addStyle(HtmlStyle.altColor);
+        else
+            tr.addStyle(HtmlStyle.rowColor);
+        tableTree.addContent(tr);
+    }
+
+    /**
+     * 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 classDoc 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 writeMemberSummary(ClassDoc classDoc, ProgramElementDoc member,
-        Tag[] firstSentenceTags, boolean isFirst, boolean isLast) {
-        writer.printSummaryLinkType(this, member);
-        writeSummaryLink(classDoc, member);
-        writer.printSummaryLinkComment(this, member, firstSentenceTags);
+    public void addInheritedMemberSummary(ClassDoc classDoc,
+            ProgramElementDoc nestedClass, boolean isFirst, boolean isLast,
+            Content linksTree) {
+        writer.addInheritedMemberSummary(this, classDoc, nestedClass, isFirst,
+                linksTree);
+    }
+
+    /**
+     * Get the inherited summary header for the given class.
+     *
+     * @param classDoc the class the inherited member belongs to
+     * @return a content tree for the inherited summary header
+     */
+    public Content getInheritedSummaryHeader(ClassDoc classDoc) {
+        Content inheritedTree = writer.getMemberTreeHeader();
+        writer.addInheritedSummaryHeader(this, classDoc, 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 classDoc the class for which the summary table is generated
+     * @return a content tree for the summary table
+     */
+    public Content getSummaryTableTree(ClassDoc classDoc) {
+        return writer.getSummaryTableTree(this, classDoc);
+    }
+
+    /**
+     * 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);
     }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractPackageIndexWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractPackageIndexWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,9 +25,11 @@
 
 package com.sun.tools.doclets.formats.html;
 
-import com.sun.javadoc.*;
 import java.io.*;
 import java.util.*;
+import com.sun.javadoc.*;
+import com.sun.tools.doclets.formats.html.markup.*;
+import com.sun.tools.doclets.internal.toolkit.*;
 
 /**
  * Abstract class to generate the overview files in
@@ -56,105 +58,127 @@
         packages = configuration.packages;
     }
 
-    protected abstract void printNavigationBarHeader();
-
-    protected abstract void printNavigationBarFooter();
-
-    protected abstract void printOverviewHeader();
+    /**
+     * 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);
 
-    protected abstract void printIndexHeader(String text, String tableSummary);
-
-    protected abstract void printIndexRow(PackageDoc pkg);
-
-    protected abstract void printIndexFooter();
+    /**
+     * 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);
 
     /**
-     * Generate the contants in the package index file. Call appropriate
+     * 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 an array 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(PackageDoc[] 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 generatePackageIndexFile(String title, boolean includeScript) throws IOException {
+    protected void buildPackageIndexFile(String title, boolean includeScript) throws IOException {
         String windowOverview = configuration.getText(title);
-        printHtmlHeader(windowOverview,
-            configuration.metakeywords.getOverviewMetaKeywords(title,
-                configuration.doctitle),
-            includeScript);
-        printNavigationBarHeader();
-        printOverviewHeader();
-
-        generateIndex();
-
-        printOverview();
-
-        printNavigationBarFooter();
-        printBodyHtmlEnd();
+        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, overwrite to add overview.
+     * Default to no overview, override to add overview.
+     *
+     * @param body the document tree to which the overview will be added
      */
-    protected void printOverview() throws IOException {
+    protected void addOverview(Content body) throws IOException {
     }
 
     /**
-     * Generate the frame or non-frame package index.
+     * 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 generateIndex() {
-        printIndexContents(packages, "doclet.Package_Summary",
+    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")));
+                configuration.getText("doclet.packages")), body);
     }
 
     /**
-     * Generate code for package index contents. Call appropriate methods from
-     * the sub-classes.
+     * Adds package index contents. Call appropriate methods from
+     * the sub-classes. Adds it to the body HtmlTree
      *
-     * @param packages Array of packages to be documented.
-     * @param text     String which will be used as the heading.
+     * @param packages array 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 printIndexContents(PackageDoc[] packages, String text, String tableSummary) {
+    protected void addIndexContents(PackageDoc[] packages, String text,
+            String tableSummary, Content body) {
         if (packages.length > 0) {
             Arrays.sort(packages);
-            printIndexHeader(text, tableSummary);
-            printAllClassesPackagesLink();
-            for(int i = 0; i < packages.length; i++) {
-                if (packages[i] != null) {
-                    printIndexRow(packages[i]);
-                }
-            }
-            printIndexFooter();
+            addAllClassesLink(body);
+            addPackagesList(packages, text, tableSummary, body);
         }
     }
 
     /**
-     * Print the doctitle, if it is specified on the command line.
+     * 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 printConfigurationTitle() {
+    protected void addConfigurationTitle(Content body) {
         if (configuration.doctitle.length() > 0) {
-            center();
-            h1(configuration.doctitle);
-            centerEnd();
+            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);
         }
     }
 
     /**
-     * Highlight "Overview" in the strong format, in the navigation bar as this
-     * is the overview page.
+     * 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 void navLinkContents() {
-        navCellRevStart();
-        fontStyle("NavBarFont1Rev");
-        strongText("doclet.Overview");
-        fontEnd();
-        navCellEnd();
+    protected Content getNavLinkContents() {
+        Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, overviewLabel);
+        return li;
     }
 
     /**
      * Do nothing. This will be overridden in PackageIndexFrameWriter.
+     *
+     * @param body the document tree to which the all classes link will be added
      */
-    protected void printAllClassesPackagesLink() {
+    protected void addAllClassesLink(Content body) {
     }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractTreeWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractTreeWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,11 +25,12 @@
 
 package com.sun.tools.doclets.formats.html;
 
-import com.sun.tools.doclets.internal.toolkit.util.*;
-
-import com.sun.javadoc.*;
 import java.io.*;
 import java.util.*;
+import com.sun.tools.doclets.internal.toolkit.util.*;
+import com.sun.tools.doclets.internal.toolkit.*;
+import com.sun.tools.doclets.formats.html.markup.*;
+import com.sun.javadoc.*;
 
 /**
  * Abstract class to print the class hierarchy page for all the Classes. This
@@ -46,6 +47,8 @@
      */
     protected final ClassTree classtree;
 
+    private static final String LI_CIRCLE  = "circle";
+
     /**
      * Constructor initilises classtree variable. This constructor will be used
      * while generating global tree file "overview-tree.html".
@@ -87,55 +90,64 @@
     }
 
     /**
-     * Generate each level of the class tree. For each sub-class or
+     * Add each level of the class tree. For each sub-class or
      * sub-interface indents the next level information.
-     * Recurses itself to generate subclasses info.
-     * To iterate is human, to recurse is divine - L. Peter Deutsch.
+     * Recurses itself to add subclasses info.
      *
-     * @param parent the superclass or superinterface of the list.
-     * @param list list of the sub-classes at this level.
-     * @param isEnum true if we are generating a tree for enums.
+     * @param parent the superclass or superinterface of the list
+     * @param list list 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 generateLevelInfo(ClassDoc parent, List<ClassDoc> list,
-            boolean isEnum) {
-        if (list.size() > 0) {
-            ul();
-            for (int i = 0; i < list.size(); i++) {
+    protected void addLevelInfo(ClassDoc parent, List<ClassDoc> list,
+            boolean isEnum, Content contentTree) {
+        int size = list.size();
+        if (size > 0) {
+            Content ul = new HtmlTree(HtmlTag.UL);
+            for (int i = 0; i < size; i++) {
                 ClassDoc local = list.get(i);
-                printPartialInfo(local);
-                printExtendsImplements(parent, local);
-                generateLevelInfo(local, classtree.subs(local, isEnum),
-                    isEnum);   // Recurse
+                HtmlTree li = new HtmlTree(HtmlTag.LI);
+                li.addAttr(HtmlAttr.TYPE, LI_CIRCLE);
+                addPartialInfo(local, li);
+                addExtendsImplements(parent, local, li);
+                addLevelInfo(local, classtree.subs(local, isEnum),
+                        isEnum, li);   // Recurse
+                ul.addContent(li);
             }
-            ulEnd();
+            contentTree.addContent(ul);
         }
     }
 
     /**
-     * Generate the heading for the tree depending upon tree type if it's a
-     * Class Tree or Interface tree and also print the tree.
+     * Add the heading for the tree depending upon tree type if it's a
+     * Class Tree or Interface tree.
      *
      * @param list List of 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.
+     * 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 generateTree(List<ClassDoc> list, String heading) {
+    protected void addTree(List<ClassDoc> list, String heading, Content div) {
         if (list.size() > 0) {
             ClassDoc firstClassDoc = list.get(0);
-            printTreeHeading(heading);
-            generateLevelInfo(!firstClassDoc.isInterface()? firstClassDoc : null,
-                list,
-                list == classtree.baseEnums());
+            Content headingContent = getResource(heading);
+            div.addContent(HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, true,
+                    headingContent));
+            addLevelInfo(!firstClassDoc.isInterface()? firstClassDoc : null,
+                    list, list == classtree.baseEnums(), div);
         }
     }
 
     /**
-     * Print the information regarding the classes which this class extends or
+     * Add information regarding the classes which this class extends or
      * implements.
      *
-     * @param cd The classdoc under consideration.
+     * @param parent the parent class of the class being documented
+     * @param cd the classdoc under consideration
+     * @param contentTree the content tree to which the information will be added
      */
-    protected void printExtendsImplements(ClassDoc parent, ClassDoc cd) {
+    protected void addExtendsImplements(ClassDoc parent, ClassDoc cd,
+            Content contentTree) {
         ClassDoc[] interfaces = cd.interfaces();
         if (interfaces.length > (cd.isInterface()? 1 : 0)) {
             Arrays.sort(interfaces);
@@ -148,53 +160,43 @@
                     }
                     if (counter == 0) {
                         if (cd.isInterface()) {
-                            print(" (" + configuration.getText("doclet.also") + " extends ");
+                            contentTree.addContent(" (");
+                            contentTree.addContent(getResource("doclet.also"));
+                            contentTree.addContent(" extends ");
                         } else {
-                            print(" (implements ");
+                            contentTree.addContent(" (implements ");
                         }
                     } else {
-                        print(", ");
+                        contentTree.addContent(", ");
                     }
-                    printPreQualifiedClassLink(LinkInfoImpl.CONTEXT_TREE,
-                        interfaces[i]);
+                    addPreQualifiedClassLink(LinkInfoImpl.CONTEXT_TREE,
+                            interfaces[i], contentTree);
                     counter++;
                 }
             }
             if (counter > 0) {
-                println(")");
+                contentTree.addContent(")");
             }
         }
     }
 
     /**
-     * Print information about the class kind, if it's a "class" or "interface".
+     * Add information about the class kind, if it's a "class" or "interface".
      *
-     * @param cd classdoc.
+     * @param cd the class being documented
+     * @param contentTree the content tree to which the information will be added
      */
-    protected void printPartialInfo(ClassDoc cd) {
-        li("circle");
-        printPreQualifiedStrongClassLink(LinkInfoImpl.CONTEXT_TREE, cd);
+    protected void addPartialInfo(ClassDoc cd, Content contentTree) {
+        addPreQualifiedStrongClassLink(LinkInfoImpl.CONTEXT_TREE, cd, contentTree);
     }
 
     /**
-     * Print the heading for the tree.
+     * Get the tree label for the navigation bar.
      *
-     * @param heading Heading for the tree.
+     * @return a content tree for the tree label
      */
-    protected void printTreeHeading(String heading) {
-        h2();
-        println(configuration.getText(heading));
-        h2End();
-    }
-
-    /**
-     * Highlight "Tree" word in the navigation bar, since this is the tree page.
-     */
-    protected void navLinkTree() {
-        navCellRevStart();
-        fontStyle("NavBarFont1Rev");
-        strongText("doclet.Tree");
-        fontEnd();
-        navCellEnd();
+    protected Content getNavLinkTree() {
+        Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, treeLabel);
+        return li;
     }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AllClassesFrameWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AllClassesFrameWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,11 +25,14 @@
 
 package com.sun.tools.doclets.formats.html;
 
-import com.sun.tools.doclets.internal.toolkit.util.*;
-import com.sun.javadoc.*;
 import java.io.*;
 import java.util.*;
 
+import com.sun.javadoc.*;
+import com.sun.tools.doclets.internal.toolkit.*;
+import com.sun.tools.doclets.internal.toolkit.util.*;
+import com.sun.tools.doclets.formats.html.markup.*;
+
 /**
  * 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
@@ -38,6 +41,7 @@
  *
  * @author Atul M Dambalkar
  * @author Doug Kramer
+ * @author Bhavesh Patel (Modified)
  */
 public class AllClassesFrameWriter extends HtmlDocletWriter {
 
@@ -57,6 +61,11 @@
     protected IndexBuilder indexbuilder;
 
     /**
+     * BR tag to be used within a document tree.
+     */
+    final HtmlTree BR = new HtmlTree(HtmlTag.BR);
+
+    /**
      * Construct AllClassesFrameWriter object. Also initilises the indexbuilder
      * variable in this class.
      * @throws IOException
@@ -84,12 +93,12 @@
         try {
             allclassgen = new AllClassesFrameWriter(configuration,
                                                     filename, indexbuilder);
-            allclassgen.generateAllClassesFile(true);
+            allclassgen.buildAllClassesFile(true);
             allclassgen.close();
             filename = OUTPUT_FILE_NAME_NOFRAMES;
             allclassgen = new AllClassesFrameWriter(configuration,
                                                     filename, indexbuilder);
-            allclassgen.generateAllClassesFile(false);
+            allclassgen.buildAllClassesFile(false);
             allclassgen.close();
         } catch (IOException exc) {
             configuration.standardmessage.
@@ -100,30 +109,34 @@
     }
 
     /**
-     * Print all the classes in table format in the file.
+     * Print all the classes in the file.
      * @param wantFrames True if we want frames.
      */
-    protected void generateAllClassesFile(boolean wantFrames) throws IOException {
+    protected void buildAllClassesFile(boolean wantFrames) throws IOException {
         String label = configuration.getText("doclet.All_Classes");
-
-        printHtmlHeader(label, null, false);
-
-        printAllClassesTableHeader();
-        printAllClasses(wantFrames);
-        printAllClassesTableFooter();
-
-        printBodyHtmlEnd();
+        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);
+        Content div = HtmlTree.DIV(HtmlStyle.indexContainer, ul);
+        body.addContent(div);
+        printHtmlDocument(null, false, body);
     }
 
     /**
-     * Use the sorted index of all the classes and print all the classes.
+     * 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 printAllClasses(boolean wantFrames) {
+    protected void addAllClasses(Content content, boolean wantFrames) {
         for (int i = 0; i < indexbuilder.elements().length; i++) {
             Character unicode = (Character)((indexbuilder.elements())[i]);
-            generateContents(indexbuilder.getMemberList(unicode), wantFrames);
+            addContents(indexbuilder.getMemberList(unicode), wantFrames, content);
         }
     }
 
@@ -136,46 +149,25 @@
      *
      * @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 generateContents(List<Doc> classlist, boolean wantFrames) {
+    protected void addContents(List<Doc> classlist, boolean wantFrames,
+            Content content) {
         for (int i = 0; i < classlist.size(); i++) {
             ClassDoc cd = (ClassDoc)classlist.get(i);
             if (!Util.isCoreClass(cd)) {
                 continue;
             }
             String label = italicsClassName(cd, false);
+            Content linkContent;
             if(wantFrames){
-                printLink(new LinkInfoImpl(LinkInfoImpl.ALL_CLASSES_FRAME, cd,
-                    label, "classFrame")
-                );
+                linkContent = new RawHtml(getLink(new LinkInfoImpl(
+                        LinkInfoImpl.ALL_CLASSES_FRAME, cd, label, "classFrame")));
             } else {
-                printLink(new LinkInfoImpl(cd, label));
+                linkContent = new RawHtml(getLink(new LinkInfoImpl(cd, label)));
             }
-            br();
+            Content li = HtmlTree.LI(linkContent);
+            content.addContent(li);
         }
     }
-
-    /**
-     * Print the heading "All Classes" and also print Html table tag.
-     */
-    protected void printAllClassesTableHeader() {
-        fontSizeStyle("+1", "FrameHeadingFont");
-        strongText("doclet.All_Classes");
-        fontEnd();
-        br();
-        table();
-        tr();
-        tdNowrap();
-        fontStyle("FrameItemFont");
-    }
-
-    /**
-     * Print Html closing table tag.
-     */
-    protected void printAllClassesTableFooter() {
-        fontEnd();
-        tdEnd();
-        trEnd();
-        tableEnd();
-    }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeOptionalMemberWriterImpl.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeOptionalMemberWriterImpl.java	Wed Dec 01 11:02:38 2010 -0800
@@ -28,6 +28,7 @@
 import java.io.*;
 
 import com.sun.javadoc.*;
+import com.sun.tools.doclets.formats.html.markup.*;
 import com.sun.tools.doclets.internal.toolkit.*;
 
 /**
@@ -54,29 +55,26 @@
     /**
      * {@inheritDoc}
      */
-    public void writeMemberSummaryHeader(ClassDoc classDoc) {
-        writer.println("<!-- =========== ANNOTATION TYPE OPTIONAL MEMBER SUMMARY =========== -->");
-        writer.println();
-        writer.printSummaryHeader(this, classDoc);
+    public Content getMemberSummaryHeader(ClassDoc classDoc,
+            Content memberSummaryTree) {
+        memberSummaryTree.addContent(
+                HtmlConstants.START_OF_ANNOTATION_TYPE_OPTIONAL_MEMBER_SUMMARY);
+        Content memberTree = writer.getMemberTreeHeader();
+        writer.addSummaryHeader(this, classDoc, memberTree);
+        return memberTree;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeDefaultValueInfo(MemberDoc member) {
+    public void addDefaultValueInfo(MemberDoc member, Content annotationDocTree) {
         if (((AnnotationTypeElementDoc) member).defaultValue() != null) {
-            writer.printMemberDetailsListStartTag();
-            writer.dd();
-            writer.dl();
-            writer.dt();
-            writer.strong(ConfigurationImpl.getInstance().
-                getText("doclet.Default"));
-            writer.dtEnd();
-            writer.dd();
-            writer.print(((AnnotationTypeElementDoc) member).defaultValue());
-            writer.ddEnd();
-            writer.dlEnd();
-            writer.ddEnd();
+            Content dt = HtmlTree.DT(writer.getResource("doclet.Default"));
+            Content dl = HtmlTree.DL(dt);
+            Content dd = HtmlTree.DD(new StringContent(
+                    ((AnnotationTypeElementDoc) member).defaultValue().toString()));
+            dl.addContent(dd);
+            annotationDocTree.addContent(dl);
         }
     }
 
@@ -90,45 +88,58 @@
     /**
      * {@inheritDoc}
      */
-    public void printSummaryLabel() {
-        writer.printText("doclet.Annotation_Type_Optional_Member_Summary");
+    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 void printTableSummary() {
-        writer.tableIndexSummary(configuration().getText("doclet.Member_Table_Summary",
+    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")));
+                configuration().getText("doclet.annotation_type_optional_members"));
     }
 
-    public void printSummaryTableHeader(ProgramElementDoc member) {
+    /**
+     * {@inheritDoc}
+     */
+    public String getCaption() {
+        return configuration().getText("doclet.Annotation_Type_Optional_Members");
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String[] getSummaryTableHeader(ProgramElementDoc member) {
         String[] header = new String[] {
             writer.getModifierTypeHeader(),
             configuration().getText("doclet.0_and_1",
                     configuration().getText("doclet.Annotation_Type_Optional_Member"),
                     configuration().getText("doclet.Description"))
         };
-        writer.summaryTableHeader(header, "col");
+        return header;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void printSummaryAnchor(ClassDoc cd) {
-        writer.anchor("annotation_type_optional_element_summary");
+    public void addSummaryAnchor(ClassDoc cd, Content memberTree) {
+        memberTree.addContent(writer.getMarkerAnchor(
+                "annotation_type_optional_element_summary"));
     }
 
     /**
      * {@inheritDoc}
      */
-    protected void printNavSummaryLink(ClassDoc cd, boolean link) {
+    protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
         if (link) {
-            writer.printHyperLink("", "annotation_type_optional_element_summary",
-                    configuration().getText("doclet.navAnnotationTypeOptionalMember"));
+            return writer.getHyperLink("", "annotation_type_optional_element_summary",
+                    writer.getResource("doclet.navAnnotationTypeOptionalMember"));
         } else {
-            writer.printText("doclet.navAnnotationTypeOptionalMember");
+            return writer.getResource("doclet.navAnnotationTypeOptionalMember");
         }
     }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeRequiredMemberWriterImpl.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeRequiredMemberWriterImpl.java	Wed Dec 01 11:02:38 2010 -0800
@@ -28,6 +28,7 @@
 import java.io.*;
 
 import com.sun.javadoc.*;
+import com.sun.tools.doclets.formats.html.markup.*;
 import com.sun.tools.doclets.internal.toolkit.*;
 
 /**
@@ -51,122 +52,102 @@
     }
 
     /**
-     * Write the annotation type member summary header for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
+     * {@inheritDoc}
      */
-    public void writeMemberSummaryHeader(ClassDoc classDoc) {
-        writer.println("<!-- =========== ANNOTATION TYPE REQUIRED MEMBER SUMMARY =========== -->");
-        writer.println();
-        writer.printSummaryHeader(this, classDoc);
-    }
-
-    /**
-     * Write the annotation type member summary footer for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
-     */
-    public void writeMemberSummaryFooter(ClassDoc classDoc) {
-        writer.printSummaryFooter(this, classDoc);
+    public Content getMemberSummaryHeader(ClassDoc classDoc,
+            Content memberSummaryTree) {
+        memberSummaryTree.addContent(
+                HtmlConstants.START_OF_ANNOTATION_TYPE_REQUIRED_MEMBER_SUMMARY);
+        Content memberTree = writer.getMemberTreeHeader();
+        writer.addSummaryHeader(this, classDoc, memberTree);
+        return memberTree;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeInheritedMemberSummaryHeader(ClassDoc classDoc) {
-        //Not appliable.
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void writeInheritedMemberSummary(ClassDoc classDoc,
-        ProgramElementDoc member, boolean isFirst, boolean isLast) {
-        //Not appliable.
+    public void addAnnotationDetailsTreeHeader(ClassDoc classDoc,
+            Content memberDetailsTree) {
+        if (!writer.printedAnnotationHeading) {
+            memberDetailsTree.addContent(writer.getMarkerAnchor(
+                    "annotation_type_element_detail"));
+            Content heading = HtmlTree.HEADING(HtmlConstants.DETAILS_HEADING,
+                    writer.annotationTypeDetailsLabel);
+            memberDetailsTree.addContent(heading);
+            writer.printedAnnotationHeading = true;
+        }
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeInheritedMemberSummaryFooter(ClassDoc classDoc) {
-        //Not appliable.
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void writeHeader(ClassDoc classDoc, String header) {
-        writer.println();
-        writer.println("<!-- ============ ANNOTATION TYPE MEMBER DETAIL =========== -->");
-        writer.println();
-        writer.anchor("annotation_type_element_detail");
-        writer.printTableHeadingBackground(header);
-        writer.println();
+    public Content getAnnotationDocTreeHeader(MemberDoc member,
+            Content annotationDetailsTree) {
+        annotationDetailsTree.addContent(
+                writer.getMarkerAnchor(member.name() +
+                ((ExecutableMemberDoc) member).signature()));
+        Content annotationDocTree = writer.getMemberTreeHeader();
+        Content heading = new HtmlTree(HtmlConstants.MEMBER_HEADING);
+        heading.addContent(member.name());
+        annotationDocTree.addContent(heading);
+        return annotationDocTree;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeMemberHeader(MemberDoc member, boolean isFirst) {
-        if (! isFirst) {
-            writer.printMemberHeader();
-            writer.println("");
+    public Content getSignature(MemberDoc member) {
+        Content pre = new HtmlTree(HtmlTag.PRE);
+        writer.addAnnotationInfo(member, pre);
+        addModifiers(member, pre);
+        Content link = new RawHtml(
+                writer.getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER,
+                getType(member))));
+        pre.addContent(link);
+        pre.addContent(writer.getSpace());
+        if (configuration().linksource) {
+            Content memberName = new StringContent(member.name());
+            writer.addSrcLink(member, memberName, pre);
+        } else {
+            addName(member.name(), pre);
         }
-        writer.anchor(member.name() + ((ExecutableMemberDoc) member).signature());
-        writer.h3();
-        writer.print(member.name());
-        writer.h3End();
+        return pre;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeSignature(MemberDoc member) {
-        writer.pre();
-        writer.writeAnnotationInfo(member);
-        printModifiers(member);
-        writer.printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER,
-            getType(member)));
-        print(' ');
-        if (configuration().linksource) {
-            writer.printSrcLink(member, member.name());
-        } else {
-            strong(member.name());
-        }
-        writer.preEnd();
-        assert !writer.getMemberDetailsListPrinted();
+    public void addDeprecated(MemberDoc member, Content annotationDocTree) {
+        addDeprecatedInfo(member, annotationDocTree);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addComments(MemberDoc member, Content annotationDocTree) {
+        addComment(member, annotationDocTree);
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeComments(MemberDoc member) {
-        printComment(member);
-    }
-
-    /**
-     * Write the tag output for the given member.
-     *
-     * @param member the member being documented.
-     */
-    public void writeTags(MemberDoc member) {
-        writer.printTags(member);
+    public void addTags(MemberDoc member, Content annotationDocTree) {
+        writer.addTagsInfo(member, annotationDocTree);
     }
 
     /**
-     * Write the annotation type member footer.
+     * {@inheritDoc}
      */
-    public void writeMemberFooter() {
-        printMemberFooter();
+    public Content getAnnotationDetails(Content annotationDetailsTree) {
+        return getMemberTree(annotationDetailsTree);
     }
 
     /**
-     * Write the footer for the annotation type member documentation.
-     *
-     * @param classDoc the class that the annotation type member belong to.
+     * {@inheritDoc}
      */
-    public void writeFooter(ClassDoc classDoc) {
-        //No footer to write for annotation type member documentation
+    public Content getAnnotationDoc(Content annotationDocTree,
+            boolean isLastContent) {
+        return getMemberTree(annotationDocTree, isLastContent);
     }
 
     /**
@@ -179,113 +160,120 @@
     /**
      * {@inheritDoc}
      */
-    public void printSummaryLabel() {
-        writer.printText("doclet.Annotation_Type_Required_Member_Summary");
+    public void addSummaryLabel(Content memberTree) {
+        Content label = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING,
+                writer.getResource("doclet.Annotation_Type_Required_Member_Summary"));
+        memberTree.addContent(label);
     }
 
     /**
      * {@inheritDoc}
      */
-    public void printTableSummary() {
-        writer.tableIndexSummary(configuration().getText("doclet.Member_Table_Summary",
+    public String getTableSummary() {
+        return configuration().getText("doclet.Member_Table_Summary",
                 configuration().getText("doclet.Annotation_Type_Required_Member_Summary"),
-                configuration().getText("doclet.annotation_type_required_members")));
+                configuration().getText("doclet.annotation_type_required_members"));
     }
 
-    public void printSummaryTableHeader(ProgramElementDoc member) {
+    /**
+     * {@inheritDoc}
+     */
+    public String getCaption() {
+        return configuration().getText("doclet.Annotation_Type_Required_Members");
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String[] getSummaryTableHeader(ProgramElementDoc member) {
         String[] header = new String[] {
             writer.getModifierTypeHeader(),
             configuration().getText("doclet.0_and_1",
                     configuration().getText("doclet.Annotation_Type_Required_Member"),
                     configuration().getText("doclet.Description"))
         };
-        writer.summaryTableHeader(header, "col");
+        return header;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void printSummaryAnchor(ClassDoc cd) {
-        writer.anchor("annotation_type_required_element_summary");
+    public void addSummaryAnchor(ClassDoc cd, Content memberTree) {
+        memberTree.addContent(writer.getMarkerAnchor(
+                "annotation_type_required_element_summary"));
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addInheritedSummaryAnchor(ClassDoc cd, Content inheritedTree) {
     }
 
     /**
      * {@inheritDoc}
      */
-    public void printInheritedSummaryAnchor(ClassDoc cd) {
-    }   // no such
-
-    /**
-     * {@inheritDoc}
-     */
-    public void printInheritedSummaryLabel(ClassDoc cd) {
-        // no such
+    public void addInheritedSummaryLabel(ClassDoc cd, Content inheritedTree) {
     }
 
     /**
      * {@inheritDoc}
      */
-    protected void writeSummaryLink(int context, ClassDoc cd, ProgramElementDoc member) {
-        writer.strong();
-        writer.printDocLink(context, (MemberDoc) member, member.name(), false);
-        writer.strongEnd();
+    protected void addSummaryLink(int context, ClassDoc cd, ProgramElementDoc member,
+            Content tdSummary) {
+        Content strong = HtmlTree.STRONG(new RawHtml(
+                writer.getDocLink(context, (MemberDoc) member, member.name(), false)));
+        Content code = HtmlTree.CODE(strong);
+        tdSummary.addContent(code);
     }
 
     /**
      * {@inheritDoc}
      */
-    protected void writeInheritedSummaryLink(ClassDoc cd,
-            ProgramElementDoc member) {
+    protected void addInheritedSummaryLink(ClassDoc cd,
+            ProgramElementDoc member, Content linksTree) {
         //Not applicable.
     }
 
     /**
      * {@inheritDoc}
      */
-    protected void printSummaryType(ProgramElementDoc member) {
+    protected void addSummaryType(ProgramElementDoc member, Content tdSummaryType) {
         MemberDoc m = (MemberDoc)member;
-        printModifierAndType(m, getType(m));
+        addModifierAndType(m, getType(m), tdSummaryType);
     }
 
     /**
      * {@inheritDoc}
      */
-    protected void writeDeprecatedLink(ProgramElementDoc member) {
-        writer.printDocLink(LinkInfoImpl.CONTEXT_MEMBER,
-            (MemberDoc) member, ((MemberDoc)member).qualifiedName(), false);
+    protected Content getDeprecatedLink(ProgramElementDoc member) {
+        return writer.getDocLink(LinkInfoImpl.CONTEXT_MEMBER,
+                (MemberDoc) member, ((MemberDoc)member).qualifiedName());
     }
 
     /**
      * {@inheritDoc}
      */
-    protected void printNavSummaryLink(ClassDoc cd, boolean link) {
+    protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
         if (link) {
-            writer.printHyperLink("", "annotation_type_required_element_summary",
-                    configuration().getText("doclet.navAnnotationTypeRequiredMember"));
+            return writer.getHyperLink("", "annotation_type_required_element_summary",
+                    writer.getResource("doclet.navAnnotationTypeRequiredMember"));
         } else {
-            writer.printText("doclet.navAnnotationTypeRequiredMember");
+            return writer.getResource("doclet.navAnnotationTypeRequiredMember");
         }
     }
 
     /**
      * {@inheritDoc}
      */
-    protected void printNavDetailLink(boolean link) {
+    protected void addNavDetailLink(boolean link, Content liNav) {
         if (link) {
-            writer.printHyperLink("", "annotation_type_element_detail",
-                configuration().getText("doclet.navAnnotationTypeMember"));
+            liNav.addContent(writer.getHyperLink("", "annotation_type_element_detail",
+                    writer.getResource("doclet.navAnnotationTypeMember")));
         } else {
-            writer.printText("doclet.navAnnotationTypeMember");
+            liNav.addContent(writer.getResource("doclet.navAnnotationTypeMember"));
         }
     }
 
-    /**
-     * {@inheritDoc}
-     */
-    public void writeDeprecated(MemberDoc member) {
-        printDeprecated(member);
-    }
-
     private Type getType(MemberDoc member) {
         if (member instanceof FieldDoc) {
             return ((FieldDoc) member).type();
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeWriterImpl.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeWriterImpl.java	Wed Dec 01 11:02:38 2010 -0800
@@ -29,6 +29,7 @@
 import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
 import com.sun.tools.doclets.internal.toolkit.builders.*;
+import com.sun.tools.doclets.formats.html.markup.*;
 
 /**
  * Generate the Class Information Page.
@@ -40,6 +41,7 @@
  *
  * @author Atul M Dambalkar
  * @author Robert Field
+ * @author Bhavesh Patel (Modified)
  */
 public class AnnotationTypeWriterImpl extends SubWriterHolderWriter
         implements AnnotationTypeWriter {
@@ -69,126 +71,168 @@
     }
 
     /**
-     * Print this package link
+     * Get this package link.
+     *
+     * @return a content tree for the package link
      */
-    protected void navLinkPackage() {
-        navCellStart();
-        printHyperLink("package-summary.html", "",
-            configuration.getText("doclet.Package"), true, "NavBarFont1");
-        navCellEnd();
+    protected Content getNavLinkPackage() {
+        Content linkContent = getHyperLink("package-summary.html", "",
+                packageLabel);
+        Content li = HtmlTree.LI(linkContent);
+        return li;
     }
 
     /**
-     * Print class page indicator
+     * Get the class link.
+     *
+     * @return a content tree for the class link
      */
-    protected void navLinkClass() {
-        navCellRevStart();
-        fontStyle("NavBarFont1Rev");
-        strongText("doclet.Class");
-        fontEnd();
-        navCellEnd();
+    protected Content getNavLinkClass() {
+        Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, classLabel);
+        return li;
+    }
+
+    /**
+     * Get the class use link.
+     *
+     * @return a content tree for the class use link
+     */
+    protected Content getNavLinkClassUse() {
+        Content linkContent = getHyperLink("class-use/" + filename, "", useLabel);
+        Content li = HtmlTree.LI(linkContent);
+        return li;
     }
 
     /**
-     * Print class use link
+     * Get link to previous class.
+     *
+     * @return a content tree for the previous class link
      */
-    protected void navLinkClassUse() {
-        navCellStart();
-        printHyperLink("class-use/" + filename, "",
-                       configuration.getText("doclet.navClassUse"), true, "NavBarFont1");
-        navCellEnd();
+    public Content getNavLinkPrevious() {
+        Content li;
+        if (prev != null) {
+            Content prevLink = new RawHtml(getLink(new LinkInfoImpl(
+                    LinkInfoImpl.CONTEXT_CLASS, prev.asClassDoc(), "",
+                    configuration.getText("doclet.Prev_Class"), true)));
+            li = HtmlTree.LI(prevLink);
+        }
+        else
+            li = HtmlTree.LI(prevclassLabel);
+        return li;
     }
 
     /**
-     * Print previous package link
+     * Get link to next class.
+     *
+     * @return a content tree for the next class link
      */
-    protected void navLinkPrevious() {
-        if (prev == null) {
-            printText("doclet.Prev_Class");
-        } else {
-            printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS,
-                prev.asClassDoc(), "",
-                configuration.getText("doclet.Prev_Class"), true));
+    public Content getNavLinkNext() {
+        Content li;
+        if (next != null) {
+            Content nextLink = new RawHtml(getLink(new LinkInfoImpl(
+                    LinkInfoImpl.CONTEXT_CLASS, next.asClassDoc(), "",
+                    configuration.getText("doclet.Next_Class"), true)));
+            li = HtmlTree.LI(nextLink);
         }
-    }
-
-    /**
-     * Print next package link
-     */
-    protected void navLinkNext() {
-        if (next == null) {
-            printText("doclet.Next_Class");
-        } else {
-            printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS,
-                next.asClassDoc(), "",
-                configuration.getText("doclet.Next_Class"), true));
-        }
+        else
+            li = HtmlTree.LI(nextclassLabel);
+        return li;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeHeader(String header) {
-
+    public Content getHeader(String header) {
         String pkgname = (annotationType.containingPackage() != null)?
             annotationType.containingPackage().name(): "";
         String clname = annotationType.name();
+        Content bodyTree = getBody(true, getWindowTitle(clname));
+        addTop(bodyTree);
+        addNavLinks(true, bodyTree);
+        bodyTree.addContent(HtmlConstants.START_OF_CLASS_DATA);
+        HtmlTree div = new HtmlTree(HtmlTag.DIV);
+        div.addStyle(HtmlStyle.header);
+        if (pkgname.length() > 0) {
+            Content pkgNameContent = new StringContent(pkgname);
+            Content pkgNamePara = HtmlTree.P(HtmlStyle.subTitle, pkgNameContent);
+            div.addContent(pkgNamePara);
+        }
+        LinkInfoImpl linkInfo = new LinkInfoImpl(
+                LinkInfoImpl.CONTEXT_CLASS_HEADER, annotationType, false);
+        Content headerContent = new StringContent(header);
+        Content heading = HtmlTree.HEADING(HtmlConstants.CLASS_PAGE_HEADING, true,
+                HtmlStyle.title, headerContent);
+        heading.addContent(new RawHtml(getTypeParameterLinks(linkInfo)));
+        div.addContent(heading);
+        bodyTree.addContent(div);
+        return bodyTree;
+    }
 
-        printHtmlHeader(clname,
-            configuration.metakeywords.getMetaKeywords(annotationType), true);
-        printTop();
-        navLinks(true);
-        hr();
-        println("<!-- ======== START OF CLASS DATA ======== -->");
-        h2();
-        if (pkgname.length() > 0) {
-            font("-1"); print(pkgname); fontEnd(); br();
-        }
-        print(header + getTypeParameterLinks(new LinkInfoImpl(
-            LinkInfoImpl.CONTEXT_CLASS_HEADER,
-            annotationType, false)));
-        h2End();
+    /**
+     * {@inheritDoc}
+     */
+    public Content getAnnotationContentHeader() {
+        return getContentHeader();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addFooter(Content contentTree) {
+        contentTree.addContent(HtmlConstants.END_OF_CLASS_DATA);
+        addNavLinks(false, contentTree);
+        addBottom(contentTree);
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeFooter() {
-        println("<!-- ========= END OF CLASS DATA ========= -->");
-        hr();
-        navLinks(false);
-        printBottom();
-        printBodyHtmlEnd();
+    public void printDocument(Content contentTree) {
+        printHtmlDocument(configuration.metakeywords.getMetaKeywords(annotationType),
+                true, contentTree);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Content getAnnotationInfoTreeHeader() {
+        return getMemberTreeHeader();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Content getAnnotationInfo(Content annotationInfoTree) {
+        return getMemberTree(HtmlStyle.description, annotationInfoTree);
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeAnnotationTypeSignature(String modifiers) {
-        preNoNewLine();
-        writeAnnotationInfo(annotationType);
-        print(modifiers);
-        String name = annotationType.name() +
-            getTypeParameterLinks(new LinkInfoImpl(
-                LinkInfoImpl.CONTEXT_CLASS_SIGNATURE, annotationType, false));
+    public void addAnnotationTypeSignature(String modifiers, Content annotationInfoTree) {
+        annotationInfoTree.addContent(new HtmlTree(HtmlTag.BR));
+        Content pre = new HtmlTree(HtmlTag.PRE);
+        addAnnotationInfo(annotationType, pre);
+        pre.addContent(modifiers);
+        LinkInfoImpl linkInfo = new LinkInfoImpl(
+                LinkInfoImpl.CONTEXT_CLASS_SIGNATURE, annotationType, false);
+        Content name = new RawHtml (annotationType.name() +
+                getTypeParameterLinks(linkInfo));
         if (configuration().linksource) {
-            printSrcLink(annotationType, name);
+            addSrcLink(annotationType, name, pre);
         } else {
-            strong(name);
+            pre.addContent(HtmlTree.STRONG(name));
         }
-        preEnd();
-        p();
+        annotationInfoTree.addContent(pre);
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeAnnotationTypeDescription() {
+    public void addAnnotationTypeDescription(Content annotationInfoTree) {
         if(!configuration.nocomment) {
-            // generate documentation for the class.
             if (annotationType.inlineTags().length > 0) {
-                printInlineComment(annotationType);
-                p();
+                addInlineComment(annotationType, annotationInfoTree);
             }
         }
     }
@@ -196,148 +240,152 @@
     /**
      * {@inheritDoc}
      */
-    public void writeAnnotationTypeTagInfo() {
-        boolean needHr = annotationType.elements().length > 0;
+    public void addAnnotationTypeTagInfo(Content annotationInfoTree) {
         if(!configuration.nocomment) {
-            // Print Information about all the tags here
-            printTags(annotationType);
-            if (needHr) {
-                hr();
-            }
-            p();
-        } else if (needHr) {
-            hr();
+            addTagsInfo(annotationType, annotationInfoTree);
         }
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeAnnotationTypeDeprecationInfo() {
-        hr();
+    public void addAnnotationTypeDeprecationInfo(Content annotationInfoTree) {
+        Content hr = new HtmlTree(HtmlTag.HR);
+        annotationInfoTree.addContent(hr);
         Tag[] deprs = annotationType.tags("deprecated");
         if (Util.isDeprecated(annotationType)) {
-            strongText("doclet.Deprecated");
+            Content strong = HtmlTree.STRONG(deprecatedPhrase);
+            Content div = HtmlTree.DIV(HtmlStyle.block, strong);
             if (deprs.length > 0) {
                 Tag[] commentTags = deprs[0].inlineTags();
                 if (commentTags.length > 0) {
-
-                    space();
-                    printInlineDeprecatedComment(annotationType, deprs[0]);
+                    div.addContent(getSpace());
+                    addInlineDeprecatedComment(annotationType, deprs[0], div);
                 }
             }
-            p();
+            annotationInfoTree.addContent(div);
         }
     }
 
-    protected void navLinkTree() {
-        navCellStart();
-        printHyperLink("package-tree.html", "",
-            configuration.getText("doclet.Tree"), true, "NavBarFont1");
-        navCellEnd();
+    /**
+     * {@inheritDoc}
+     */
+    public void addAnnotationDetailsMarker(Content memberDetails) {
+        memberDetails.addContent(HtmlConstants.START_OF_ANNOTATION_TYPE_DETAILS);
     }
 
-    protected void printSummaryDetailLinks() {
+    /**
+     * {@inheritDoc}
+     */
+    protected Content getNavLinkTree() {
+        Content treeLinkContent = getHyperLink("package-tree.html",
+                "", treeLabel, "", "");
+        Content li = HtmlTree.LI(treeLinkContent);
+        return li;
+    }
+
+    /**
+     * Add summary details to the navigation bar.
+     *
+     * @param subDiv the content tree to which the summary detail links will be added
+     */
+    protected void addSummaryDetailLinks(Content subDiv) {
         try {
-            tr();
-            tdVAlignClass("top", "NavBarCell3");
-            font("-2");
-            print("  ");
-            navSummaryLinks();
-            fontEnd();
-            tdEnd();
-
-            tdVAlignClass("top", "NavBarCell3");
-            font("-2");
-            navDetailLinks();
-            fontEnd();
-            tdEnd();
-            trEnd();
+            Content div = HtmlTree.DIV(getNavSummaryLinks());
+            div.addContent(getNavDetailLinks());
+            subDiv.addContent(div);
         } catch (Exception e) {
             e.printStackTrace();
             throw new DocletAbortException();
         }
     }
 
-    protected void navSummaryLinks() throws Exception {
-        printText("doclet.Summary");
-        space();
+    /**
+     * Get summary links for navigation bar.
+     *
+     * @return the content tree for the navigation summary links
+     */
+    protected Content getNavSummaryLinks() throws Exception {
+        Content li = HtmlTree.LI(summaryLabel);
+        li.addContent(getSpace());
+        Content ulNav = HtmlTree.UL(HtmlStyle.subNavList, li);
         MemberSummaryBuilder memberSummaryBuilder = (MemberSummaryBuilder)
-            configuration.getBuilderFactory().getMemberSummaryBuilder(this);
-        writeNavSummaryLink(memberSummaryBuilder,
-            "doclet.navAnnotationTypeRequiredMember",
-            VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED);
-        navGap();
-        writeNavSummaryLink(memberSummaryBuilder,
-            "doclet.navAnnotationTypeOptionalMember",
-            VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL);
+                configuration.getBuilderFactory().getMemberSummaryBuilder(this);
+        Content liNavReq = new HtmlTree(HtmlTag.LI);
+        addNavSummaryLink(memberSummaryBuilder,
+                "doclet.navAnnotationTypeRequiredMember",
+                VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED, liNavReq);
+        addNavGap(liNavReq);
+        ulNav.addContent(liNavReq);
+        Content liNavOpt = new HtmlTree(HtmlTag.LI);
+        addNavSummaryLink(memberSummaryBuilder,
+                "doclet.navAnnotationTypeOptionalMember",
+                VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL, liNavOpt);
+        ulNav.addContent(liNavOpt);
+        return ulNav;
     }
 
-    private void writeNavSummaryLink(MemberSummaryBuilder builder,
-            String label, int type) {
+    /**
+     * Add the navigation summary link.
+     *
+     * @param builder builder for the member to be documented
+     * @param label the label for the navigation
+     * @param type type to be documented
+     * @param liNav the content tree to which the navigation summary link will be added
+     */
+    protected void addNavSummaryLink(MemberSummaryBuilder builder,
+            String label, int type, Content liNav) {
         AbstractMemberWriter writer = ((AbstractMemberWriter) builder.
-            getMemberSummaryWriter(type));
+                getMemberSummaryWriter(type));
         if (writer == null) {
-              printText(label);
+            liNav.addContent(getResource(label));
         } else {
-            writer.printNavSummaryLink(null,
-                ! builder.getVisibleMemberMap(type).noVisibleMembers());
+            liNav.addContent(writer.getNavSummaryLink(null,
+                    ! builder.getVisibleMemberMap(type).noVisibleMembers()));
         }
     }
 
     /**
-     * Method navDetailLinks
+     * Get detail links for the navigation bar.
      *
-     * @throws   Exception
-     *
+     * @return the content tree for the detail links
      */
-    protected void navDetailLinks() throws Exception {
-        printText("doclet.Detail");
-        space();
+    protected Content getNavDetailLinks() throws Exception {
+        Content li = HtmlTree.LI(detailLabel);
+        li.addContent(getSpace());
+        Content ulNav = HtmlTree.UL(HtmlStyle.subNavList, li);
         MemberSummaryBuilder memberSummaryBuilder = (MemberSummaryBuilder)
-            configuration.getBuilderFactory().getMemberSummaryBuilder(this);
+                configuration.getBuilderFactory().getMemberSummaryBuilder(this);
         AbstractMemberWriter writerOptional =
-            ((AbstractMemberWriter) memberSummaryBuilder.
+                ((AbstractMemberWriter) memberSummaryBuilder.
                 getMemberSummaryWriter(VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL));
         AbstractMemberWriter writerRequired =
-            ((AbstractMemberWriter) memberSummaryBuilder.
+                ((AbstractMemberWriter) memberSummaryBuilder.
                 getMemberSummaryWriter(VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED));
         if (writerOptional != null){
-            writerOptional.printNavDetailLink(annotationType.elements().length > 0);
+            Content liNavOpt = new HtmlTree(HtmlTag.LI);
+            writerOptional.addNavDetailLink(annotationType.elements().length > 0, liNavOpt);
+            ulNav.addContent(liNavOpt);
         } else if (writerRequired != null){
-            writerRequired.printNavDetailLink(annotationType.elements().length > 0);
+            Content liNavReq = new HtmlTree(HtmlTag.LI);
+            writerRequired.addNavDetailLink(annotationType.elements().length > 0, liNavReq);
+            ulNav.addContent(liNavReq);
         } else {
-            printText("doclet.navAnnotationTypeMember");
+            Content liNav = HtmlTree.LI(getResource("doclet.navAnnotationTypeMember"));
+            ulNav.addContent(liNav);
         }
-    }
-
-    protected void navGap() {
-        space();
-        print('|');
-        space();
+        return ulNav;
     }
 
     /**
-     * If this is an inner class or interface, write the enclosing class or
-     * interface.
+     * Add gap between navigation bar elements.
+     *
+     * @param liNav the content tree to which the gap will be added
      */
-    public void writeNestedClassInfo() {
-        ClassDoc outerClass = annotationType.containingClass();
-        if (outerClass != null) {
-            dl();
-            dt();
-            if (annotationType.isInterface()) {
-                strongText("doclet.Enclosing_Interface");
-            } else {
-                strongText("doclet.Enclosing_Class");
-            }
-            dtEnd();
-            dd();
-            printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS, outerClass,
-                false));
-            ddEnd();
-            dlEnd();
-        }
+    protected void addNavGap(Content liNav) {
+        liNav.addContent(getSpace());
+        liNav.addContent("|");
+        liNav.addContent(getSpace());
     }
 
     /**
@@ -346,11 +394,4 @@
     public AnnotationTypeDoc getAnnotationTypeDoc() {
         return annotationType;
     }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void completeMemberSummaryBuild() {
-        p();
-    }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/ClassUseWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/ClassUseWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,10 +25,12 @@
 
 package com.sun.tools.doclets.formats.html;
 
-import com.sun.tools.doclets.internal.toolkit.util.*;
-import com.sun.javadoc.*;
 import java.io.*;
 import java.util.*;
+import com.sun.javadoc.*;
+import com.sun.tools.doclets.internal.toolkit.util.*;
+import com.sun.tools.doclets.formats.html.markup.*;
+import com.sun.tools.doclets.internal.toolkit.*;
 
 /**
  * Generate class usage information.
@@ -207,257 +209,301 @@
     }
 
     /**
-     * Print the class use list.
+     * Generate the class use list.
      */
     protected void generateClassUseFile() throws IOException {
-
-        printClassUseHeader();
-
+        Content body = getClassUseHeader();
+        HtmlTree div = new HtmlTree(HtmlTag.DIV);
+        div.addStyle(HtmlStyle.classUseContainer);
         if (pkgSet.size() > 0) {
-            generateClassUse();
+            addClassUse(div);
         } else {
-            printText("doclet.ClassUse_No.usage.of.0",
-                      classdoc.qualifiedName());
-            p();
-        }
-
-        printClassUseFooter();
-    }
-
-    protected void generateClassUse() throws IOException {
-        if (configuration.packages.length > 1) {
-            generatePackageList();
-            generatePackageAnnotationList();
+            div.addContent(getResource("doclet.ClassUse_No.usage.of.0",
+                    classdoc.qualifiedName()));
         }
-        generateClassList();
-    }
-
-    protected void generatePackageList() throws IOException {
-        tableIndexSummary(useTableSummary);
-        tableCaptionStart();
-        printText("doclet.ClassUse_Packages.that.use.0",
-            getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS_USE_HEADER, classdoc,
-                false)));
-        tableCaptionEnd();
-        summaryTableHeader(packageTableHeader, "col");
-
-        for (Iterator<PackageDoc> it = pkgSet.iterator(); it.hasNext();) {
-            PackageDoc pkg = it.next();
-            generatePackageUse(pkg);
-        }
-        tableEnd();
-        space();
-        p();
+        body.addContent(div);
+        addNavLinks(false, body);
+        addBottom(body);
+        printHtmlDocument(null, true, body);
     }
 
-    protected void generatePackageAnnotationList() throws IOException {
-        if ((! classdoc.isAnnotationType()) ||
-               pkgToPackageAnnotations == null ||
-               pkgToPackageAnnotations.size() == 0)
-            return;
-        tableIndexSummary(useTableSummary);
-        tableCaptionStart();
-        printText("doclet.ClassUse_PackageAnnotation",
-            getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS_USE_HEADER, classdoc,
-                false)));
-        tableCaptionEnd();
-        summaryTableHeader(packageTableHeader, "col");
-        for (Iterator<PackageDoc> it = pkgToPackageAnnotations.iterator(); it.hasNext();) {
-            PackageDoc pkg = it.next();
-            trBgcolorStyle("white", "TableRowColor");
-            summaryRow(0);
-            //Just want an anchor here.
-            printPackageLink(pkg, pkg.name(), true);
-            summaryRowEnd();
-            summaryRow(0);
-            printSummaryComment(pkg);
-            space();
-            summaryRowEnd();
-            trEnd();
+    /**
+     * Add the class use documentation.
+     *
+     * @param contentTree the content tree to which the class use information will be added
+     */
+    protected void addClassUse(Content contentTree) throws IOException {
+        HtmlTree ul = new HtmlTree(HtmlTag.UL);
+        ul.addStyle(HtmlStyle.blockList);
+        if (configuration.packages.length > 1) {
+            addPackageList(ul);
+            addPackageAnnotationList(ul);
         }
-        tableEnd();
-        space();
-        p();
+        addClassList(ul);
+        contentTree.addContent(ul);
     }
 
-    protected void generateClassList() throws IOException {
-        for (Iterator<PackageDoc> it = pkgSet.iterator(); it.hasNext();) {
+    /**
+     * Add the packages list that use the given class.
+     *
+     * @param contentTree the content tree to which the packages list will be added
+     */
+    protected void addPackageList(Content contentTree) throws IOException {
+        Content table = HtmlTree.TABLE(0, 3, 0, useTableSummary,
+                getTableCaption(configuration().getText(
+                "doclet.ClassUse_Packages.that.use.0",
+                getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS_USE_HEADER, classdoc,
+                false)))));
+        table.addContent(getSummaryTableHeader(packageTableHeader, "col"));
+        Content tbody = new HtmlTree(HtmlTag.TBODY);
+        Iterator<PackageDoc> it = pkgSet.iterator();
+        for (int i = 0; it.hasNext(); i++) {
             PackageDoc pkg = it.next();
-            anchor(pkg.name());
-            tableIndexSummary();
-            tableHeaderStart("#CCCCFF");
-            printText("doclet.ClassUse_Uses.of.0.in.1",
-                getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS_USE_HEADER,
-                    classdoc, false)),
-                getPackageLink(pkg, Util.getPackageName(pkg), false));
-            tableHeaderEnd();
-            tableEnd();
-            space();
-            p();
-            generateClassUse(pkg);
+            HtmlTree tr = new HtmlTree(HtmlTag.TR);
+            if (i % 2 == 0) {
+                tr.addStyle(HtmlStyle.altColor);
+            } else {
+                tr.addStyle(HtmlStyle.rowColor);
+            }
+            addPackageUse(pkg, tr);
+            tbody.addContent(tr);
         }
+        table.addContent(tbody);
+        Content li = HtmlTree.LI(HtmlStyle.blockList, table);
+        contentTree.addContent(li);
     }
 
     /**
-     * Print the package use list.
+     * Add the package annotation list.
+     *
+     * @param contentTree the content tree to which the package annotation list will be added
      */
-    protected void generatePackageUse(PackageDoc pkg) throws IOException {
-        trBgcolorStyle("white", "TableRowColor");
-        summaryRow(0);
-        //Just want an anchor here.
-        printHyperLink("", pkg.name(), Util.getPackageName(pkg), true);
-        summaryRowEnd();
-        summaryRow(0);
-        printSummaryComment(pkg);
-        space();
-        summaryRowEnd();
-        trEnd();
+    protected void addPackageAnnotationList(Content contentTree) throws IOException {
+        if ((!classdoc.isAnnotationType()) ||
+                pkgToPackageAnnotations == null ||
+                pkgToPackageAnnotations.size() == 0) {
+            return;
+        }
+        Content table = HtmlTree.TABLE(0, 3, 0, useTableSummary,
+                getTableCaption(configuration().getText(
+                "doclet.ClassUse_PackageAnnotation",
+                getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS_USE_HEADER, classdoc,
+                false)))));
+        table.addContent(getSummaryTableHeader(packageTableHeader, "col"));
+        Content tbody = new HtmlTree(HtmlTag.TBODY);
+        Iterator<PackageDoc> it = pkgToPackageAnnotations.iterator();
+        for (int i = 0; it.hasNext(); i++) {
+            PackageDoc pkg = it.next();
+            HtmlTree tr = new HtmlTree(HtmlTag.TR);
+            if (i % 2 == 0) {
+                tr.addStyle(HtmlStyle.altColor);
+            } else {
+                tr.addStyle(HtmlStyle.rowColor);
+            }
+            Content tdFirst = HtmlTree.TD(HtmlStyle.colFirst,
+                    getPackageLink(pkg, new StringContent(pkg.name())));
+            tr.addContent(tdFirst);
+            HtmlTree tdLast = new HtmlTree(HtmlTag.TD);
+            tdLast.addStyle(HtmlStyle.colLast);
+            if (pkg != null) {
+                addSummaryComment(pkg, tdLast);
+            } else {
+                tdLast.addContent(getSpace());
+            }
+            tr.addContent(tdLast);
+            tbody.addContent(tr);
+        }
+        table.addContent(tbody);
+        Content li = HtmlTree.LI(HtmlStyle.blockList, table);
+        contentTree.addContent(li);
+    }
+
+    /**
+     * Add the class list that use the given class.
+     *
+     * @param contentTree the content tree to which the class list will be added
+     */
+    protected void addClassList(Content contentTree) throws IOException {
+        HtmlTree ul = new HtmlTree(HtmlTag.UL);
+        ul.addStyle(HtmlStyle.blockList);
+        for (Iterator<PackageDoc> it = pkgSet.iterator(); it.hasNext();) {
+            PackageDoc pkg = it.next();
+            Content li = HtmlTree.LI(HtmlStyle.blockList, getMarkerAnchor(pkg.name()));
+            Content link = new RawHtml(
+                    configuration.getText("doclet.ClassUse_Uses.of.0.in.1",
+                    getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS_USE_HEADER,
+                    classdoc, false)),
+                    getPackageLinkString(pkg, Util.getPackageName(pkg), false)));
+            Content heading = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING, link);
+            li.addContent(heading);
+            addClassUse(pkg, li);
+            ul.addContent(li);
+        }
+        Content li = HtmlTree.LI(HtmlStyle.blockList, ul);
+        contentTree.addContent(li);
     }
 
     /**
-     * Print the class use list.
+     * Add the package use information.
+     *
+     * @param pkg the package that uses the given class
+     * @param contentTree the content tree to which the package use information will be added
      */
-    protected void generateClassUse(PackageDoc pkg) throws IOException {
-        String classLink = getLink(new LinkInfoImpl(
-            LinkInfoImpl.CONTEXT_CLASS_USE_HEADER, classdoc, false));
-        String pkgLink = getPackageLink(pkg, Util.getPackageName(pkg), false);
-        classSubWriter.printUseInfo(pkgToClassAnnotations.get(pkg.name()),
-                configuration.getText("doclet.ClassUse_Annotation", classLink,
-                pkgLink), classUseTableSummary);
-        classSubWriter.printUseInfo(pkgToClassTypeParameter.get(pkg.name()),
-                configuration.getText("doclet.ClassUse_TypeParameter", classLink,
-                pkgLink), classUseTableSummary);
-        classSubWriter.printUseInfo(pkgToSubclass.get(pkg.name()),
-                configuration.getText("doclet.ClassUse_Subclass", classLink,
-                pkgLink), subclassUseTableSummary);
-        classSubWriter.printUseInfo(pkgToSubinterface.get(pkg.name()),
-                configuration.getText("doclet.ClassUse_Subinterface", classLink,
-                pkgLink), subinterfaceUseTableSummary);
-        classSubWriter.printUseInfo(pkgToImplementingClass.get(pkg.name()),
-                configuration.getText("doclet.ClassUse_ImplementingClass", classLink,
-                pkgLink), classUseTableSummary);
-        fieldSubWriter.printUseInfo(pkgToField.get(pkg.name()),
-                configuration.getText("doclet.ClassUse_Field", classLink,
-                pkgLink), fieldUseTableSummary);
-        fieldSubWriter.printUseInfo(pkgToFieldAnnotations.get(pkg.name()),
-                configuration.getText("doclet.ClassUse_FieldAnnotations", classLink,
-                pkgLink), fieldUseTableSummary);
-        fieldSubWriter.printUseInfo(pkgToFieldTypeParameter.get(pkg.name()),
-                configuration.getText("doclet.ClassUse_FieldTypeParameter", classLink,
-                pkgLink), fieldUseTableSummary);
-        methodSubWriter.printUseInfo(pkgToMethodAnnotations.get(pkg.name()),
-                configuration.getText("doclet.ClassUse_MethodAnnotations", classLink,
-                pkgLink), methodUseTableSummary);
-        methodSubWriter.printUseInfo(pkgToMethodParameterAnnotations.get(pkg.name()),
-                configuration.getText("doclet.ClassUse_MethodParameterAnnotations", classLink,
-                pkgLink), methodUseTableSummary);
-        methodSubWriter.printUseInfo(pkgToMethodTypeParameter.get(pkg.name()),
-                configuration.getText("doclet.ClassUse_MethodTypeParameter", classLink,
-                pkgLink), methodUseTableSummary);
-        methodSubWriter.printUseInfo(pkgToMethodReturn.get(pkg.name()),
-                configuration.getText("doclet.ClassUse_MethodReturn", classLink,
-                pkgLink), methodUseTableSummary);
-        methodSubWriter.printUseInfo(pkgToMethodReturnTypeParameter.get(pkg.name()),
-                configuration.getText("doclet.ClassUse_MethodReturnTypeParameter", classLink,
-                pkgLink), methodUseTableSummary);
-        methodSubWriter.printUseInfo(pkgToMethodArgs.get(pkg.name()),
-                configuration.getText("doclet.ClassUse_MethodArgs", classLink,
-                pkgLink), methodUseTableSummary);
-        methodSubWriter.printUseInfo(pkgToMethodArgTypeParameter.get(pkg.name()),
-                configuration.getText("doclet.ClassUse_MethodArgsTypeParameters", classLink,
-                pkgLink), methodUseTableSummary);
-        methodSubWriter.printUseInfo(pkgToMethodThrows.get(pkg.name()),
-                configuration.getText("doclet.ClassUse_MethodThrows", classLink,
-                pkgLink), methodUseTableSummary);
-        constrSubWriter.printUseInfo(pkgToConstructorAnnotations.get(pkg.name()),
-                configuration.getText("doclet.ClassUse_ConstructorAnnotations", classLink,
-                pkgLink), constructorUseTableSummary);
-        constrSubWriter.printUseInfo(pkgToConstructorParameterAnnotations.get(pkg.name()),
-                configuration.getText("doclet.ClassUse_ConstructorParameterAnnotations", classLink,
-                pkgLink), constructorUseTableSummary);
-        constrSubWriter.printUseInfo(pkgToConstructorArgs.get(pkg.name()),
-                configuration.getText("doclet.ClassUse_ConstructorArgs", classLink,
-                pkgLink), constructorUseTableSummary);
-        constrSubWriter.printUseInfo(pkgToConstructorArgTypeParameter.get(pkg.name()),
-                configuration.getText("doclet.ClassUse_ConstructorArgsTypeParameters", classLink,
-                pkgLink), constructorUseTableSummary);
-        constrSubWriter.printUseInfo(pkgToConstructorThrows.get(pkg.name()),
-                configuration.getText("doclet.ClassUse_ConstructorThrows", classLink,
-                pkgLink), constructorUseTableSummary);
+    protected void addPackageUse(PackageDoc pkg, Content contentTree) throws IOException {
+        Content tdFirst = HtmlTree.TD(HtmlStyle.colFirst,
+                getHyperLink("", pkg.name(), new StringContent(Util.getPackageName(pkg))));
+        contentTree.addContent(tdFirst);
+        HtmlTree tdLast = new HtmlTree(HtmlTag.TD);
+        tdLast.addStyle(HtmlStyle.colLast);
+        if (pkg != null)
+            addSummaryComment(pkg, tdLast);
+        else
+            tdLast.addContent(getSpace());
+        contentTree.addContent(tdLast);
     }
 
     /**
-     * Print the header for the class use Listing.
+     * Add the class use information.
+     *
+     * @param pkg the package that uses the given class
+     * @param contentTree the content tree to which the class use information will be added
      */
-    protected void printClassUseHeader() {
-        String cltype = configuration.getText(classdoc.isInterface()?
-                                    "doclet.Interface":
-                                    "doclet.Class");
-        String clname = classdoc.qualifiedName();
-        printHtmlHeader(configuration.getText("doclet.Window_ClassUse_Header",
-                            cltype, clname), null, true);
-        printTop();
-        navLinks(true);
-        hr();
-        center();
-        h2();
-        strongText("doclet.ClassUse_Title", cltype, clname);
-        h2End();
-        centerEnd();
+    protected void addClassUse(PackageDoc pkg, Content contentTree) throws IOException {
+        String classLink = getLink(new LinkInfoImpl(
+            LinkInfoImpl.CONTEXT_CLASS_USE_HEADER, classdoc, false));
+        String pkgLink = getPackageLinkString(pkg, Util.getPackageName(pkg), false);
+        classSubWriter.addUseInfo(pkgToClassAnnotations.get(pkg.name()),
+                configuration.getText("doclet.ClassUse_Annotation", classLink,
+                pkgLink), classUseTableSummary, contentTree);
+        classSubWriter.addUseInfo(pkgToClassTypeParameter.get(pkg.name()),
+                configuration.getText("doclet.ClassUse_TypeParameter", classLink,
+                pkgLink), classUseTableSummary, contentTree);
+        classSubWriter.addUseInfo(pkgToSubclass.get(pkg.name()),
+                configuration.getText("doclet.ClassUse_Subclass", classLink,
+                pkgLink), subclassUseTableSummary, contentTree);
+        classSubWriter.addUseInfo(pkgToSubinterface.get(pkg.name()),
+                configuration.getText("doclet.ClassUse_Subinterface", classLink,
+                pkgLink), subinterfaceUseTableSummary, contentTree);
+        classSubWriter.addUseInfo(pkgToImplementingClass.get(pkg.name()),
+                configuration.getText("doclet.ClassUse_ImplementingClass", classLink,
+                pkgLink), classUseTableSummary, contentTree);
+        fieldSubWriter.addUseInfo(pkgToField.get(pkg.name()),
+                configuration.getText("doclet.ClassUse_Field", classLink,
+                pkgLink), fieldUseTableSummary, contentTree);
+        fieldSubWriter.addUseInfo(pkgToFieldAnnotations.get(pkg.name()),
+                configuration.getText("doclet.ClassUse_FieldAnnotations", classLink,
+                pkgLink), fieldUseTableSummary, contentTree);
+        fieldSubWriter.addUseInfo(pkgToFieldTypeParameter.get(pkg.name()),
+                configuration.getText("doclet.ClassUse_FieldTypeParameter", classLink,
+                pkgLink), fieldUseTableSummary, contentTree);
+        methodSubWriter.addUseInfo(pkgToMethodAnnotations.get(pkg.name()),
+                configuration.getText("doclet.ClassUse_MethodAnnotations", classLink,
+                pkgLink), methodUseTableSummary, contentTree);
+        methodSubWriter.addUseInfo(pkgToMethodParameterAnnotations.get(pkg.name()),
+                configuration.getText("doclet.ClassUse_MethodParameterAnnotations", classLink,
+                pkgLink), methodUseTableSummary, contentTree);
+        methodSubWriter.addUseInfo(pkgToMethodTypeParameter.get(pkg.name()),
+                configuration.getText("doclet.ClassUse_MethodTypeParameter", classLink,
+                pkgLink), methodUseTableSummary, contentTree);
+        methodSubWriter.addUseInfo(pkgToMethodReturn.get(pkg.name()),
+                configuration.getText("doclet.ClassUse_MethodReturn", classLink,
+                pkgLink), methodUseTableSummary, contentTree);
+        methodSubWriter.addUseInfo(pkgToMethodReturnTypeParameter.get(pkg.name()),
+                configuration.getText("doclet.ClassUse_MethodReturnTypeParameter", classLink,
+                pkgLink), methodUseTableSummary, contentTree);
+        methodSubWriter.addUseInfo(pkgToMethodArgs.get(pkg.name()),
+                configuration.getText("doclet.ClassUse_MethodArgs", classLink,
+                pkgLink), methodUseTableSummary, contentTree);
+        methodSubWriter.addUseInfo(pkgToMethodArgTypeParameter.get(pkg.name()),
+                configuration.getText("doclet.ClassUse_MethodArgsTypeParameters", classLink,
+                pkgLink), methodUseTableSummary, contentTree);
+        methodSubWriter.addUseInfo(pkgToMethodThrows.get(pkg.name()),
+                configuration.getText("doclet.ClassUse_MethodThrows", classLink,
+                pkgLink), methodUseTableSummary, contentTree);
+        constrSubWriter.addUseInfo(pkgToConstructorAnnotations.get(pkg.name()),
+                configuration.getText("doclet.ClassUse_ConstructorAnnotations", classLink,
+                pkgLink), constructorUseTableSummary, contentTree);
+        constrSubWriter.addUseInfo(pkgToConstructorParameterAnnotations.get(pkg.name()),
+                configuration.getText("doclet.ClassUse_ConstructorParameterAnnotations", classLink,
+                pkgLink), constructorUseTableSummary, contentTree);
+        constrSubWriter.addUseInfo(pkgToConstructorArgs.get(pkg.name()),
+                configuration.getText("doclet.ClassUse_ConstructorArgs", classLink,
+                pkgLink), constructorUseTableSummary, contentTree);
+        constrSubWriter.addUseInfo(pkgToConstructorArgTypeParameter.get(pkg.name()),
+                configuration.getText("doclet.ClassUse_ConstructorArgsTypeParameters", classLink,
+                pkgLink), constructorUseTableSummary, contentTree);
+        constrSubWriter.addUseInfo(pkgToConstructorThrows.get(pkg.name()),
+                configuration.getText("doclet.ClassUse_ConstructorThrows", classLink,
+                pkgLink), constructorUseTableSummary, contentTree);
     }
 
     /**
-     * Print the footer for the class use Listing.
+     * Get the header for the class use Listing.
+     *
+     * @return a content tree representing the class use header
      */
-    protected void printClassUseFooter() {
-        hr();
-        navLinks(false);
-        printBottom();
-        printBodyHtmlEnd();
+    protected Content getClassUseHeader() {
+        String cltype = configuration.getText(classdoc.isInterface()?
+            "doclet.Interface":"doclet.Class");
+        String clname = classdoc.qualifiedName();
+        String title = configuration.getText("doclet.Window_ClassUse_Header",
+                cltype, clname);
+        Content bodyTree = getBody(true, getWindowTitle(title));
+        addTop(bodyTree);
+        addNavLinks(true, bodyTree);
+        Content headContent = getResource("doclet.ClassUse_Title", cltype, clname);
+        Content heading = HtmlTree.HEADING(HtmlConstants.CLASS_PAGE_HEADING,
+                true, HtmlStyle.title, headContent);
+        Content div = HtmlTree.DIV(HtmlStyle.header, heading);
+        bodyTree.addContent(div);
+        return bodyTree;
     }
 
-
     /**
-     * Print this package link
+     * Get this package link.
+     *
+     * @return a content tree for the package link
      */
-    protected void navLinkPackage() {
-        navCellStart();
-        printHyperLink("../package-summary.html", "",
-                       configuration.getText("doclet.Package"), true, "NavBarFont1");
-        navCellEnd();
+    protected Content getNavLinkPackage() {
+        Content linkContent = getHyperLink("../package-summary.html", "",
+                packageLabel);
+        Content li = HtmlTree.LI(linkContent);
+        return li;
     }
 
     /**
-     * Print class page indicator
+     * Get class page link.
+     *
+     * @return a content tree for the class page link
      */
-    protected void navLinkClass() {
-        navCellStart();
-        printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS_USE_HEADER, classdoc, "",
-            configuration.getText("doclet.Class"), true, "NavBarFont1"));
-        navCellEnd();
+    protected Content getNavLinkClass() {
+        Content linkContent = new RawHtml(getLink(new LinkInfoImpl(
+                LinkInfoImpl.CONTEXT_CLASS_USE_HEADER, classdoc, "",
+                configuration.getText("doclet.Class"), false)));
+        Content li = HtmlTree.LI(linkContent);
+        return li;
     }
 
     /**
-     * Print class use link
+     * Get the use link.
+     *
+     * @return a content tree for the use link
      */
-    protected void navLinkClassUse() {
-        navCellRevStart();
-        fontStyle("NavBarFont1Rev");
-        strongText("doclet.navClassUse");
-        fontEnd();
-        navCellEnd();
+    protected Content getNavLinkClassUse() {
+        Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, useLabel);
+        return li;
     }
 
-    protected void navLinkTree() {
-        navCellStart();
-        if (classdoc.containingPackage().isIncluded()) {
-            printHyperLink("../package-tree.html", "",
-                configuration.getText("doclet.Tree"), true, "NavBarFont1");
-        } else {
-            printHyperLink(relativePath + "overview-tree.html", "",
-                configuration.getText("doclet.Tree"), true, "NavBarFont1");
-        }
-        navCellEnd();
+    /**
+     * Get the tree link.
+     *
+     * @return a content tree for the tree link
+     */
+    protected Content getNavLinkTree() {
+        Content linkContent = classdoc.containingPackage().isIncluded() ?
+            getHyperLink("../package-tree.html", "", treeLabel) :
+            getHyperLink(relativePath + "overview-tree.html", "", treeLabel);
+        Content li = HtmlTree.LI(linkContent);
+        return li;
     }
-
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/ClassWriterImpl.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/ClassWriterImpl.java	Wed Dec 01 11:02:38 2010 -0800
@@ -32,6 +32,7 @@
 import com.sun.tools.doclets.internal.toolkit.util.*;
 import com.sun.tools.doclets.internal.toolkit.builders.*;
 import com.sun.tools.doclets.internal.toolkit.taglets.*;
+import com.sun.tools.doclets.formats.html.markup.*;
 
 /**
  * Generate the Class Information Page.
@@ -43,6 +44,7 @@
  *
  * @author Atul M Dambalkar
  * @author Robert Field
+ * @author Bhavesh Patel (Modified)
  */
 public class ClassWriterImpl extends SubWriterHolderWriter
         implements ClassWriter {
@@ -76,124 +78,173 @@
     }
 
     /**
-     * Print this package link
+     * Get this package link.
+     *
+     * @return a content tree for the package link
      */
-    protected void navLinkPackage() {
-        navCellStart();
-        printHyperLink("package-summary.html", "",
-            configuration.getText("doclet.Package"), true, "NavBarFont1");
-        navCellEnd();
+    protected Content getNavLinkPackage() {
+        Content linkContent = getHyperLink("package-summary.html", "",
+                packageLabel);
+        Content li = HtmlTree.LI(linkContent);
+        return li;
     }
 
     /**
-     * Print class page indicator
+     * Get the class link.
+     *
+     * @return a content tree for the class link
      */
-    protected void navLinkClass() {
-        navCellRevStart();
-        fontStyle("NavBarFont1Rev");
-        strongText("doclet.Class");
-        fontEnd();
-        navCellEnd();
+    protected Content getNavLinkClass() {
+        Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, classLabel);
+        return li;
+    }
+
+    /**
+     * Get the class use link.
+     *
+     * @return a content tree for the class use link
+     */
+    protected Content getNavLinkClassUse() {
+        Content linkContent = getHyperLink("class-use/" + filename, "", useLabel);
+        Content li = HtmlTree.LI(linkContent);
+        return li;
     }
 
     /**
-     * Print class use link
+     * Get link to previous class.
+     *
+     * @return a content tree for the previous class link
      */
-    protected void navLinkClassUse() {
-        navCellStart();
-        printHyperLink("class-use/" + filename, "",
-                       configuration.getText("doclet.navClassUse"), true, "NavBarFont1");
-        navCellEnd();
+    public Content getNavLinkPrevious() {
+        Content li;
+        if (prev != null) {
+            Content prevLink = new RawHtml(getLink(new LinkInfoImpl(
+                    LinkInfoImpl.CONTEXT_CLASS, prev, "",
+                    configuration.getText("doclet.Prev_Class"), true)));
+            li = HtmlTree.LI(prevLink);
+        }
+        else
+            li = HtmlTree.LI(prevclassLabel);
+        return li;
     }
 
     /**
-     * Print previous package link
+     * Get link to next class.
+     *
+     * @return a content tree for the next class link
      */
-    protected void navLinkPrevious() {
-        if (prev == null) {
-            printText("doclet.Prev_Class");
-        } else {
-            printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS, prev, "",
-                configuration.getText("doclet.Prev_Class"), true));
+    public Content getNavLinkNext() {
+        Content li;
+        if (next != null) {
+            Content nextLink = new RawHtml(getLink(new LinkInfoImpl(
+                    LinkInfoImpl.CONTEXT_CLASS, next, "",
+                    configuration.getText("doclet.Next_Class"), true)));
+            li = HtmlTree.LI(nextLink);
         }
-    }
-
-    /**
-     * Print next package link
-     */
-    protected void navLinkNext() {
-        if (next == null) {
-            printText("doclet.Next_Class");
-        } else {
-            printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS, next, "",
-                configuration.getText("doclet.Next_Class"), true));
-        }
+        else
+            li = HtmlTree.LI(nextclassLabel);
+        return li;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeHeader(String header) {
+    public Content getHeader(String header) {
         String pkgname = (classDoc.containingPackage() != null)?
             classDoc.containingPackage().name(): "";
         String clname = classDoc.name();
-        printHtmlHeader(clname,
-            configuration.metakeywords.getMetaKeywords(classDoc), true);
-        printTop();
-        navLinks(true);
-        hr();
-        println("<!-- ======== START OF CLASS DATA ======== -->");
-        h2();
+        Content bodyTree = getBody(true, getWindowTitle(clname));
+        addTop(bodyTree);
+        addNavLinks(true, bodyTree);
+        bodyTree.addContent(HtmlConstants.START_OF_CLASS_DATA);
+        HtmlTree div = new HtmlTree(HtmlTag.DIV);
+        div.addStyle(HtmlStyle.header);
         if (pkgname.length() > 0) {
-            font("-1"); print(pkgname); fontEnd(); br();
+            Content pkgNameContent = new StringContent(pkgname);
+            Content pkgNamePara = HtmlTree.P(HtmlStyle.subTitle, pkgNameContent);
+            div.addContent(pkgNamePara);
         }
         LinkInfoImpl linkInfo = new LinkInfoImpl( LinkInfoImpl.CONTEXT_CLASS_HEADER,
-            classDoc, false);
+                classDoc, false);
         //Let's not link to ourselves in the header.
         linkInfo.linkToSelf = false;
-        print(header + getTypeParameterLinks(linkInfo));
-        h2End();
+        Content headerContent = new StringContent(header);
+        Content heading = HtmlTree.HEADING(HtmlConstants.CLASS_PAGE_HEADING, true,
+                HtmlStyle.title, headerContent);
+        heading.addContent(new RawHtml(getTypeParameterLinks(linkInfo)));
+        div.addContent(heading);
+        bodyTree.addContent(div);
+        return bodyTree;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Content getClassContentHeader() {
+        return getContentHeader();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addFooter(Content contentTree) {
+        contentTree.addContent(HtmlConstants.END_OF_CLASS_DATA);
+        addNavLinks(false, contentTree);
+        addBottom(contentTree);
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeFooter() {
-        println("<!-- ========= END OF CLASS DATA ========= -->");
-        hr();
-        navLinks(false);
-        printBottom();
-        printBodyHtmlEnd();
+    public void printDocument(Content contentTree) {
+        printHtmlDocument(configuration.metakeywords.getMetaKeywords(classDoc),
+                true, contentTree);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Content getClassInfoTreeHeader() {
+        return getMemberTreeHeader();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Content getClassInfo(Content classInfoTree) {
+        return getMemberTree(HtmlStyle.description, classInfoTree);
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeClassSignature(String modifiers) {
+    public void addClassSignature(String modifiers, Content classInfoTree) {
         boolean isInterface = classDoc.isInterface();
-        preNoNewLine();
-        writeAnnotationInfo(classDoc);
-        print(modifiers);
+        classInfoTree.addContent(new HtmlTree(HtmlTag.BR));
+        Content pre = new HtmlTree(HtmlTag.PRE);
+        addAnnotationInfo(classDoc, pre);
+        pre.addContent(modifiers);
         LinkInfoImpl linkInfo = new LinkInfoImpl(
-            LinkInfoImpl.CONTEXT_CLASS_SIGNATURE, classDoc, false);
+                LinkInfoImpl.CONTEXT_CLASS_SIGNATURE, classDoc, false);
         //Let's not link to ourselves in the signature.
         linkInfo.linkToSelf = false;
-        String name = classDoc.name() +
-            getTypeParameterLinks(linkInfo);
+        Content name = new RawHtml (classDoc.name() +
+                getTypeParameterLinks(linkInfo));
         if (configuration().linksource) {
-            printSrcLink(classDoc, name);
+            addSrcLink(classDoc, name, pre);
         } else {
-            strong(name);
+            pre.addContent(HtmlTree.STRONG(name));
         }
         if (!isInterface) {
             Type superclass = Util.getFirstVisibleSuperClass(classDoc,
-                configuration());
+                    configuration());
             if (superclass != null) {
-                println();
-                print("extends ");
-                printLink(new LinkInfoImpl(
-                    LinkInfoImpl.CONTEXT_CLASS_SIGNATURE_PARENT_NAME,
-                    superclass));
+                pre.addContent("\n");
+                pre.addContent("extends ");
+                Content link = new RawHtml(getLink(new LinkInfoImpl(
+                        LinkInfoImpl.CONTEXT_CLASS_SIGNATURE_PARENT_NAME,
+                        superclass)));
+                pre.addContent(link);
             }
         }
         Type[] implIntfacs = classDoc.interfaceTypes();
@@ -202,34 +253,170 @@
             for (int i = 0; i < implIntfacs.length; i++) {
                 ClassDoc classDoc = implIntfacs[i].asClassDoc();
                 if (! (classDoc.isPublic() ||
-                    Util.isLinkable(classDoc, configuration()))) {
+                        Util.isLinkable(classDoc, configuration()))) {
                     continue;
                 }
                 if (counter == 0) {
-                    println();
-                    print(isInterface? "extends " : "implements ");
+                    pre.addContent("\n");
+                    pre.addContent(isInterface? "extends " : "implements ");
                 } else {
-                    print(", ");
+                    pre.addContent(", ");
                 }
-                printLink(new LinkInfoImpl(
-                    LinkInfoImpl.CONTEXT_CLASS_SIGNATURE_PARENT_NAME,
-                    implIntfacs[i]));
+                Content link = new RawHtml(getLink(new LinkInfoImpl(
+                        LinkInfoImpl.CONTEXT_CLASS_SIGNATURE_PARENT_NAME,
+                        implIntfacs[i])));
+                pre.addContent(link);
                 counter++;
             }
         }
-        preEnd();
-        p();
+        classInfoTree.addContent(pre);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addClassDescription(Content classInfoTree) {
+        if(!configuration.nocomment) {
+            // generate documentation for the class.
+            if (classDoc.inlineTags().length > 0) {
+                addInlineComment(classDoc, classInfoTree);
+            }
+        }
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeClassDescription() {
+    public void addClassTagInfo(Content classInfoTree) {
         if(!configuration.nocomment) {
-            // generate documentation for the class.
-            if (classDoc.inlineTags().length > 0) {
-                printInlineComment(classDoc);
-                p();
+            // Print Information about all the tags here
+            addTagsInfo(classDoc, classInfoTree);
+        }
+    }
+
+    /**
+     * Get the class hierarchy tree for the given class.
+     *
+     * @param type the class to print the hierarchy for
+     * @return a content tree for class inheritence
+     */
+    private Content getClassInheritenceTree(Type type) {
+        Type sup;
+        HtmlTree classTreeUl = new HtmlTree(HtmlTag.UL);
+        classTreeUl.addStyle(HtmlStyle.inheritance);
+        Content liTree = null;
+        do {
+            sup = Util.getFirstVisibleSuperClass(
+                    type instanceof ClassDoc ? (ClassDoc) type : type.asClassDoc(),
+                    configuration());
+            if (sup != null) {
+                HtmlTree ul = new HtmlTree(HtmlTag.UL);
+                ul.addStyle(HtmlStyle.inheritance);
+                ul.addContent(getTreeForClassHelper(type));
+                if (liTree != null)
+                    ul.addContent(liTree);
+                Content li = HtmlTree.LI(ul);
+                liTree = li;
+                type = sup;
+            }
+            else
+                classTreeUl.addContent(getTreeForClassHelper(type));
+        }
+        while (sup != null);
+        if (liTree != null)
+            classTreeUl.addContent(liTree);
+        return classTreeUl;
+    }
+
+    /**
+     * Get the class helper tree for the given class.
+     *
+     * @param type the class to print the helper for
+     * @return a content tree for class helper
+     */
+    private Content getTreeForClassHelper(Type type) {
+        Content li = new HtmlTree(HtmlTag.LI);
+        if (type.equals(classDoc)) {
+            String typeParameters = getTypeParameterLinks(
+                    new LinkInfoImpl(LinkInfoImpl.CONTEXT_TREE,
+                    classDoc, false));
+            if (configuration.shouldExcludeQualifier(
+                    classDoc.containingPackage().name())) {
+                li.addContent(type.asClassDoc().name());
+                li.addContent(new RawHtml(typeParameters));
+            } else {
+                li.addContent(type.asClassDoc().qualifiedName());
+                li.addContent(new RawHtml(typeParameters));
+            }
+        } else {
+            Content link = new RawHtml(getLink(new LinkInfoImpl(
+                    LinkInfoImpl.CONTEXT_CLASS_TREE_PARENT,
+                    type instanceof ClassDoc ? (ClassDoc) type : type,
+                    configuration.getClassName(type.asClassDoc()), false)));
+            li.addContent(link);
+        }
+        return li;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addClassTree(Content classContentTree) {
+        if (!classDoc.isClass()) {
+            return;
+        }
+        classContentTree.addContent(getClassInheritenceTree(classDoc));
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addTypeParamInfo(Content classInfoTree) {
+        if (classDoc.typeParamTags().length > 0) {
+            TagletOutput output = (new ParamTaglet()).getTagletOutput(classDoc,
+                    getTagletWriterInstance(false));
+            Content typeParam = new RawHtml(output.toString());
+            Content dl = HtmlTree.DL(typeParam);
+            classInfoTree.addContent(dl);
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addSubClassInfo(Content classInfoTree) {
+        if (classDoc.isClass()) {
+            if (classDoc.qualifiedName().equals("java.lang.Object") ||
+                    classDoc.qualifiedName().equals("org.omg.CORBA.Object")) {
+                return;    // Don't generate the list, too huge
+            }
+            List<ClassDoc> subclasses = classtree.subs(classDoc, false);
+            if (subclasses.size() > 0) {
+                Content label = getResource(
+                        "doclet.Subclasses");
+                Content dt = HtmlTree.DT(label);
+                Content dl = HtmlTree.DL(dt);
+                dl.addContent(getClassLinks(LinkInfoImpl.CONTEXT_SUBCLASSES,
+                        subclasses));
+                classInfoTree.addContent(dl);
+            }
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addSubInterfacesInfo(Content classInfoTree) {
+        if (classDoc.isInterface()) {
+            List<ClassDoc> subInterfaces = classtree.allSubs(classDoc, false);
+            if (subInterfaces.size() > 0) {
+                Content label = getResource(
+                        "doclet.Subinterfaces");
+                Content dt = HtmlTree.DT(label);
+                Content dl = HtmlTree.DL(dt);
+                dl.addContent(getClassLinks(LinkInfoImpl.CONTEXT_SUBINTERFACES,
+                        subInterfaces));
+                classInfoTree.addContent(dl);
             }
         }
     }
@@ -237,272 +424,178 @@
     /**
      * {@inheritDoc}
      */
-    public void writeClassTagInfo() {
-        if(!configuration.nocomment) {
-            // Print Information about all the tags here
-            printTags(classDoc);
-            hr();
-            p();
-        } else {
-            hr();
+    public void addInterfaceUsageInfo (Content classInfoTree) {
+        if (! classDoc.isInterface()) {
+            return;
+        }
+        if (classDoc.qualifiedName().equals("java.lang.Cloneable") ||
+                classDoc.qualifiedName().equals("java.io.Serializable")) {
+            return;   // Don't generate the list, too big
+        }
+        List<ClassDoc> implcl = classtree.implementingclasses(classDoc);
+        if (implcl.size() > 0) {
+            Content label = getResource(
+                    "doclet.Implementing_Classes");
+            Content dt = HtmlTree.DT(label);
+            Content dl = HtmlTree.DL(dt);
+            dl.addContent(getClassLinks(LinkInfoImpl.CONTEXT_IMPLEMENTED_CLASSES,
+                    implcl));
+            classInfoTree.addContent(dl);
         }
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeClassDeprecationInfo() {
-        hr();
-        Tag[] deprs = classDoc.tags("deprecated");
-        if (Util.isDeprecated(classDoc)) {
-            strongText("doclet.Deprecated");
-            if (deprs.length > 0) {
-                Tag[] commentTags = deprs[0].inlineTags();
-                if (commentTags.length > 0) {
-                    space();
-                    printInlineDeprecatedComment(classDoc, deprs[0]);
-                }
-            }
-            p();
-        }
-    }
-
-    /**
-     * Generate the indent and get the line image for the class tree.
-     * For user accessibility, the image includes the alt attribute
-     * "extended by".  (This method is not intended for a class
-     * implementing an interface, where "implemented by" would be required.)
-     *
-     * indent  integer indicating the number of spaces to indent
-     */
-    private void writeStep(int indent) {
-        print(spaces(4 * indent - 2));
-        print("<IMG SRC=\"" + relativepathNoSlash + "/resources/inherit.gif\" " +
-              "ALT=\"" + configuration.getText("doclet.extended_by") + " \">");
-    }
-
-    /**
-     * Print the class hierarchy tree for the given class.
-     * @param type the class to print the hierarchy for.
-     * @return return the amount that should be indented in
-     * the next level of the tree.
-     */
-    private int writeTreeForClassHelper(Type type) {
-        Type sup = Util.getFirstVisibleSuperClass(
-            type instanceof ClassDoc ? (ClassDoc) type : type.asClassDoc(),
-            configuration());
-        int indent = 0;
-        if (sup != null) {
-            indent = writeTreeForClassHelper(sup);
-            writeStep(indent);
-        }
-
-        if (type.equals(classDoc)) {
-            String typeParameters = getTypeParameterLinks(
-                new LinkInfoImpl(
-                    LinkInfoImpl.CONTEXT_TREE,
-                    classDoc, false));
-            if (configuration.shouldExcludeQualifier(
-                    classDoc.containingPackage().name())) {
-                strong(type.asClassDoc().name() + typeParameters);
-            } else {
-                strong(type.asClassDoc().qualifiedName() + typeParameters);
-            }
-        } else {
-            print(getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS_TREE_PARENT,
-                    type instanceof ClassDoc ? (ClassDoc) type : type,
-                    configuration.getClassName(type.asClassDoc()), false)));
-        }
-        println();
-        return indent + 1;
-    }
-
-    /**
-     * Print the class hierarchy tree for this class only.
-     */
-    public void writeClassTree() {
-        if (! classDoc.isClass()) {
-            return;
-        }
-        pre();
-        writeTreeForClassHelper(classDoc);
-        preEnd();
-    }
-
-    /**
-     * Write the type parameter information.
-     */
-    public void writeTypeParamInfo() {
-        if (classDoc.typeParamTags().length > 0) {
-            dl();
-            dt();
-            TagletOutput output = (new ParamTaglet()).getTagletOutput(classDoc,
-                getTagletWriterInstance(false));
-            print(output.toString());
-            dtEnd();
-            dlEnd();
+    public void addImplementedInterfacesInfo(Content classInfoTree) {
+        //NOTE:  we really should be using ClassDoc.interfaceTypes() here, but
+        //       it doesn't walk up the tree like we want it to.
+        List<Type> interfaceArray = Util.getAllInterfaces(classDoc, configuration);
+        if (classDoc.isClass() && interfaceArray.size() > 0) {
+            Content label = getResource(
+                    "doclet.All_Implemented_Interfaces");
+            Content dt = HtmlTree.DT(label);
+            Content dl = HtmlTree.DL(dt);
+            dl.addContent(getClassLinks(LinkInfoImpl.CONTEXT_IMPLEMENTED_INTERFACES,
+                    interfaceArray));
+            classInfoTree.addContent(dl);
         }
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeSubClassInfo() {
-        if (classDoc.isClass()) {
-            if (classDoc.qualifiedName().equals("java.lang.Object") ||
-                classDoc.qualifiedName().equals("org.omg.CORBA.Object")) {
-                return;    // Don't generate the list, too huge
+    public void addSuperInterfacesInfo(Content classInfoTree) {
+        //NOTE:  we really should be using ClassDoc.interfaceTypes() here, but
+        //       it doesn't walk up the tree like we want it to.
+        List<Type> interfaceArray = Util.getAllInterfaces(classDoc, configuration);
+        if (classDoc.isInterface() && interfaceArray.size() > 0) {
+            Content label = getResource(
+                    "doclet.All_Superinterfaces");
+            Content dt = HtmlTree.DT(label);
+            Content dl = HtmlTree.DL(dt);
+            dl.addContent(getClassLinks(LinkInfoImpl.CONTEXT_SUPER_INTERFACES,
+                    interfaceArray));
+            classInfoTree.addContent(dl);
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addNestedClassInfo(Content classInfoTree) {
+        ClassDoc outerClass = classDoc.containingClass();
+        if (outerClass != null) {
+            Content label;
+            if (outerClass.isInterface()) {
+                label = getResource(
+                        "doclet.Enclosing_Interface");
+            } else {
+                label = getResource(
+                        "doclet.Enclosing_Class");
             }
-            List<ClassDoc> subclasses = classtree.subs(classDoc, false);
-            if (subclasses.size() > 0) {
-                dl();
-                dt();
-                strongText("doclet.Subclasses");
-                dtEnd();
-                writeClassLinks(LinkInfoImpl.CONTEXT_SUBCLASSES,
-                    subclasses);
-                dlEnd();
-            }
+            Content dt = HtmlTree.DT(label);
+            Content dl = HtmlTree.DL(dt);
+            Content dd = new HtmlTree(HtmlTag.DD);
+            dd.addContent(new RawHtml(getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS, outerClass,
+                    false))));
+            dl.addContent(dd);
+            classInfoTree.addContent(dl);
         }
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeSubInterfacesInfo() {
-        if (classDoc.isInterface()) {
-            List<ClassDoc> subInterfaces = classtree.allSubs(classDoc, false);
-            if (subInterfaces.size() > 0) {
-                dl();
-                dt();
-                strongText("doclet.Subinterfaces");
-                dtEnd();
-                writeClassLinks(LinkInfoImpl.CONTEXT_SUBINTERFACES,
-                    subInterfaces);
-                dlEnd();
+    public void addClassDeprecationInfo(Content classInfoTree) {
+        Content hr = new HtmlTree(HtmlTag.HR);
+        classInfoTree.addContent(hr);
+        Tag[] deprs = classDoc.tags("deprecated");
+        if (Util.isDeprecated(classDoc)) {
+            Content strong = HtmlTree.STRONG(deprecatedPhrase);
+            Content div = HtmlTree.DIV(HtmlStyle.block, strong);
+            if (deprs.length > 0) {
+                Tag[] commentTags = deprs[0].inlineTags();
+                if (commentTags.length > 0) {
+                    div.addContent(getSpace());
+                    addInlineDeprecatedComment(classDoc, deprs[0], div);
+                }
             }
+            classInfoTree.addContent(div);
         }
     }
 
     /**
-     * If this is the interface which are the classes, that implement this?
+     * Get links to the given classes.
+     *
+     * @param context the id of the context where the link will be printed
+     * @param list the list of classes
+     * @return a content tree for the class list
      */
-    public void writeInterfaceUsageInfo () {
-        if (! classDoc.isInterface()) {
-            return;
-        }
-        if (classDoc.qualifiedName().equals("java.lang.Cloneable") ||
-            classDoc.qualifiedName().equals("java.io.Serializable")) {
-            return;   // Don't generate the list, too big
+    private Content getClassLinks(int context, List<?> list) {
+        Object[] typeList = list.toArray();
+        Content dd = new HtmlTree(HtmlTag.DD);
+        for (int i = 0; i < list.size(); i++) {
+            if (i > 0) {
+                Content separator = new StringContent(", ");
+                dd.addContent(separator);
+            }
+            if (typeList[i] instanceof ClassDoc) {
+                Content link = new RawHtml(getLink(
+                        new LinkInfoImpl(context, (ClassDoc)(typeList[i]))));
+                dd.addContent(link);
+            } else {
+                Content link = new RawHtml(getLink(
+                        new LinkInfoImpl(context, (Type)(typeList[i]))));
+                dd.addContent(link);
+            }
         }
-        List<ClassDoc> implcl = classtree.implementingclasses(classDoc);
-        if (implcl.size() > 0) {
-            dl();
-            dt();
-            strongText("doclet.Implementing_Classes");
-            dtEnd();
-            writeClassLinks(LinkInfoImpl.CONTEXT_IMPLEMENTED_CLASSES,
-                implcl);
-            dlEnd();
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void writeImplementedInterfacesInfo() {
-        //NOTE:  we really should be using ClassDoc.interfaceTypes() here, but
-        //       it doesn't walk up the tree like we want it to.
-        List<Type> interfaceArray = Util.getAllInterfaces(classDoc, configuration);
-        if (classDoc.isClass() && interfaceArray.size() > 0) {
-            dl();
-            dt();
-            strongText("doclet.All_Implemented_Interfaces");
-            dtEnd();
-            writeClassLinks(LinkInfoImpl.CONTEXT_IMPLEMENTED_INTERFACES,
-                interfaceArray);
-            dlEnd();
-        }
+        return dd;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeSuperInterfacesInfo() {
-        //NOTE:  we really should be using ClassDoc.interfaceTypes() here, but
-        //       it doesn't walk up the tree like we want it to.
-        List<Type> interfaceArray = Util.getAllInterfaces(classDoc, configuration);
-        if (classDoc.isInterface() && interfaceArray.size() > 0) {
-            dl();
-            dt();
-            strongText("doclet.All_Superinterfaces");
-            dtEnd();
-            writeClassLinks(LinkInfoImpl.CONTEXT_SUPER_INTERFACES,
-                interfaceArray);
-            dlEnd();
-        }
+    protected Content getNavLinkTree() {
+        Content treeLinkContent = getHyperLink("package-tree.html",
+                "", treeLabel, "", "");
+        Content li = HtmlTree.LI(treeLinkContent);
+        return li;
     }
 
     /**
-     * Generate links to the given classes.
+     * Add summary details to the navigation bar.
+     *
+     * @param subDiv the content tree to which the summary detail links will be added
      */
-    private void writeClassLinks(int context, List<?> list) {
-        Object[] typeList = list.toArray();
-        //Sort the list to be printed.
-        print(' ');
-        dd();
-        for (int i = 0; i < list.size(); i++) {
-            if (i > 0) {
-                print(", ");
-            }
-            if (typeList[i] instanceof ClassDoc) {
-                printLink(new LinkInfoImpl(context, (ClassDoc)(typeList[i])));
-
-            } else {
-                printLink(new LinkInfoImpl(context, (Type)(typeList[i])));
-            }
-        }
-        ddEnd();
-    }
-
-    protected void navLinkTree() {
-        navCellStart();
-        printHyperLink("package-tree.html", "",
-            configuration.getText("doclet.Tree"), true, "NavBarFont1");
-        navCellEnd();
-    }
-
-    protected void printSummaryDetailLinks() {
+    protected void addSummaryDetailLinks(Content subDiv) {
         try {
-            tr();
-            tdVAlignClass("top", "NavBarCell3");
-            font("-2");
-            print("  ");
-            navSummaryLinks();
-            fontEnd();
-            tdEnd();
-            tdVAlignClass("top", "NavBarCell3");
-            font("-2");
-            navDetailLinks();
-            fontEnd();
-            tdEnd();
-            trEnd();
+            Content div = HtmlTree.DIV(getNavSummaryLinks());
+            div.addContent(getNavDetailLinks());
+            subDiv.addContent(div);
         } catch (Exception e) {
             e.printStackTrace();
             throw new DocletAbortException();
         }
     }
 
-    protected void navSummaryLinks() throws Exception {
-        printText("doclet.Summary");
-        space();
+    /**
+     * Get summary links for navigation bar.
+     *
+     * @return the content tree for the navigation summary links
+     */
+    protected Content getNavSummaryLinks() throws Exception {
+        Content li = HtmlTree.LI(summaryLabel);
+        li.addContent(getSpace());
+        Content ulNav = HtmlTree.UL(HtmlStyle.subNavList, li);
         MemberSummaryBuilder memberSummaryBuilder = (MemberSummaryBuilder)
-            configuration.getBuilderFactory().getMemberSummaryBuilder(this);
+                configuration.getBuilderFactory().getMemberSummaryBuilder(this);
         String[] navLinkLabels =  new String[] {
             "doclet.navNested", "doclet.navEnum", "doclet.navField", "doclet.navConstructor",
-                "doclet.navMethod"
+            "doclet.navMethod"
         };
         for (int i = 0; i < navLinkLabels.length; i++ ) {
+            Content liNav = new HtmlTree(HtmlTag.LI);
             if (i == VisibleMemberMap.ENUM_CONSTANTS && ! classDoc.isEnum()) {
                 continue;
             }
@@ -511,38 +604,41 @@
             }
             AbstractMemberWriter writer =
                 ((AbstractMemberWriter) memberSummaryBuilder.
-                    getMemberSummaryWriter(i));
+                getMemberSummaryWriter(i));
             if (writer == null) {
-                printText(navLinkLabels[i]);
+                liNav.addContent(getResource(navLinkLabels[i]));
             } else {
-                writer.navSummaryLink(
-                    memberSummaryBuilder.members(i),
-                    memberSummaryBuilder.getVisibleMemberMap(i));
+                writer.addNavSummaryLink(
+                        memberSummaryBuilder.members(i),
+                        memberSummaryBuilder.getVisibleMemberMap(i), liNav);
             }
             if (i < navLinkLabels.length-1) {
-                navGap();
+                addNavGap(liNav);
             }
+            ulNav.addContent(liNav);
         }
+        return ulNav;
     }
 
     /**
-     * Method navDetailLinks
+     * Get detail links for the navigation bar.
      *
-     * @throws   Exception
-     *
+     * @return the content tree for the detail links
      */
-    protected void navDetailLinks() throws Exception {
-        printText("doclet.Detail");
-        space();
+    protected Content getNavDetailLinks() throws Exception {
+        Content li = HtmlTree.LI(detailLabel);
+        li.addContent(getSpace());
+        Content ulNav = HtmlTree.UL(HtmlStyle.subNavList, li);
         MemberSummaryBuilder memberSummaryBuilder = (MemberSummaryBuilder)
-            configuration.getBuilderFactory().getMemberSummaryBuilder(this);
+                configuration.getBuilderFactory().getMemberSummaryBuilder(this);
         String[] navLinkLabels =  new String[] {
             "doclet.navNested", "doclet.navEnum", "doclet.navField", "doclet.navConstructor",
-                "doclet.navMethod"
+            "doclet.navMethod"
         };
         for (int i = 1; i < navLinkLabels.length; i++ ) {
+            Content liNav = new HtmlTree(HtmlTag.LI);
             AbstractMemberWriter writer =
-                ((AbstractMemberWriter) memberSummaryBuilder.
+                    ((AbstractMemberWriter) memberSummaryBuilder.
                     getMemberSummaryWriter(i));
             if (i == VisibleMemberMap.ENUM_CONSTANTS && ! classDoc.isEnum()) {
                 continue;
@@ -551,43 +647,27 @@
                 continue;
             }
             if (writer == null) {
-                printText(navLinkLabels[i]);
+                liNav.addContent(getResource(navLinkLabels[i]));
             } else {
-                writer.navDetailLink(memberSummaryBuilder.members(i));
+                writer.addNavDetailLink(memberSummaryBuilder.members(i), liNav);
             }
             if (i < navLinkLabels.length - 1) {
-                navGap();
+                addNavGap(liNav);
             }
+            ulNav.addContent(liNav);
         }
-    }
-
-    protected void navGap() {
-        space();
-        print('|');
-        space();
+        return ulNav;
     }
 
     /**
-     * If this is an inner class or interface, write the enclosing class or
-     * interface.
+     * Add gap between navigation bar elements.
+     *
+     * @param liNav the content tree to which the gap will be added
      */
-    public void writeNestedClassInfo() {
-        ClassDoc outerClass = classDoc.containingClass();
-        if (outerClass != null) {
-            dl();
-            dt();
-            if (outerClass.isInterface()) {
-                strongText("doclet.Enclosing_Interface");
-            } else {
-                strongText("doclet.Enclosing_Class");
-            }
-            dtEnd();
-            dd();
-            printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS, outerClass,
-                false));
-            ddEnd();
-            dlEnd();
-        }
+    protected void addNavGap(Content liNav) {
+        liNav.addContent(getSpace());
+        liNav.addContent("|");
+        liNav.addContent(getSpace());
     }
 
     /**
@@ -598,11 +678,4 @@
     public ClassDoc getClassDoc() {
         return classDoc;
     }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void completeMemberSummaryBuild() {
-        p();
-    }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/ConstantsSummaryWriterImpl.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/ConstantsSummaryWriterImpl.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,11 +25,12 @@
 
 package com.sun.tools.doclets.formats.html;
 
+import java.io.*;
+import java.util.*;
+import com.sun.javadoc.*;
 import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
-import com.sun.javadoc.*;
-import java.io.*;
-import java.util.*;
+import com.sun.tools.doclets.formats.html.markup.*;
 
 /**
  * Write the Constants Summary Page in HTML format.
@@ -76,67 +77,106 @@
     /**
      * {@inheritDoc}
      */
-    public void writeHeader() {
-        printHtmlHeader(configuration.getText("doclet.Constants_Summary"),
-            null, true);
-        printTop();
-        navLinks(true);
-        hr();
-
-        center();
-        h1(); printText("doclet.Constants_Summary"); h1End();
-        centerEnd();
-
-        hr(4, "noshade");
+    public Content getHeader() {
+        String label = configuration.getText("doclet.Constants_Summary");
+        Content bodyTree = getBody(true, getWindowTitle(label));
+        addTop(bodyTree);
+        addNavLinks(true, bodyTree);
+        return bodyTree;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeFooter() {
-        hr();
-        navLinks(false);
-        printBottom();
-        printBodyHtmlEnd();
+    public Content getContentsHeader() {
+        return new HtmlTree(HtmlTag.UL);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addLinkToPackageContent(PackageDoc pkg, String parsedPackageName,
+            Set<String> printedPackageHeaders, Content contentListTree) {
+        String packageName = pkg.name();
+        //add link to summary
+        Content link;
+        if (packageName.length() == 0) {
+            link = getHyperLink("#" + DocletConstants.UNNAMED_PACKAGE_ANCHOR,
+                    "", defaultPackageLabel, "", "");
+        } else {
+            Content packageNameContent = getPackageLabel(parsedPackageName);
+            packageNameContent.addContent(".*");
+            link = getHyperLink("#" + parsedPackageName,
+                    "", packageNameContent, "", "");
+            printedPackageHeaders.add(parsedPackageName);
+        }
+        contentListTree.addContent(HtmlTree.LI(link));
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeContentsHeader() {
-        strong(configuration.getText("doclet.Contents"));
-        ul();
+    public Content getContentsList(Content contentListTree) {
+        Content titleContent = getResource(
+                "doclet.Constants_Summary");
+        Content pHeading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, true,
+                HtmlStyle.title, titleContent);
+        Content div = HtmlTree.DIV(HtmlStyle.header, pHeading);
+        Content headingContent = getResource(
+                "doclet.Contents");
+        div.addContent(HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, true,
+                headingContent));
+        div.addContent(contentListTree);
+        return div;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeContentsFooter() {
-        ulEnd();
-        println();
+    public Content getConstantSummaries() {
+        HtmlTree summariesDiv = new HtmlTree(HtmlTag.DIV);
+        summariesDiv.addStyle(HtmlStyle.constantValuesContainer);
+        return summariesDiv;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeLinkToPackageContent(PackageDoc pkg, String parsedPackageName, Set<String> printedPackageHeaders) {
-        String packageName = pkg.name();
-        //add link to summary
-        li();
-        if (packageName.length() == 0) {
-            printHyperLink("#" + DocletConstants.UNNAMED_PACKAGE_ANCHOR,
-                           DocletConstants.DEFAULT_PACKAGE_NAME);
+    public void addPackageName(PackageDoc pkg, String parsedPackageName,
+            Content summariesTree) {
+        Content pkgNameContent;
+        if (parsedPackageName.length() == 0) {
+            summariesTree.addContent(getMarkerAnchor(
+                    DocletConstants.UNNAMED_PACKAGE_ANCHOR));
+            pkgNameContent = defaultPackageLabel;
         } else {
-            printHyperLink("#" + parsedPackageName, parsedPackageName + ".*");
-            printedPackageHeaders.add(parsedPackageName);
+            summariesTree.addContent(getMarkerAnchor(
+                    parsedPackageName));
+            pkgNameContent = getPackageLabel(parsedPackageName);
         }
-        println();
+        Content headingContent = new StringContent(".*");
+        Content heading = HtmlTree.HEADING(HtmlConstants.PACKAGE_HEADING, true,
+                pkgNameContent);
+        heading.addContent(headingContent);
+        summariesTree.addContent(heading);
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeConstantMembersHeader(ClassDoc cd) {
+    public Content getClassConstantHeader() {
+        HtmlTree ul = new HtmlTree(HtmlTag.UL);
+        ul.addStyle(HtmlStyle.blockList);
+        return ul;
+    }
+
+    /**
+     * Get the table caption and header for the constant summary table
+     *
+     * @param cd classdoc to be documented
+     * @return constant members header content
+     */
+    public Content getConstantMembersHeader(ClassDoc cd) {
         //generate links backward only to public classes.
         String classlink = (cd.isPublic() || cd.isProtected())?
             getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CONSTANT_SUMMARY, cd,
@@ -144,112 +184,120 @@
             cd.qualifiedName();
         String name = cd.containingPackage().name();
         if (name.length() > 0) {
-            writeClassName(name + "." + classlink);
+            return getClassName(name + "." + classlink);
         } else {
-            writeClassName(classlink);
+            return getClassName(classlink);
         }
     }
 
     /**
-     * {@inheritDoc}
-     */
-    public void writeConstantMembersFooter(ClassDoc cd) {
-        tableFooter(false);
-        p();
-    }
-
-    /**
-     * Print the class name in the table heading.
-     * @param classStr the heading to print.
+     * Get the class name in the table caption and the table header.
+     *
+     * @param classStr the class name to print.
+     * @return the table caption and header
      */
-    protected void writeClassName(String classStr) {
-        table(1, 3, 0, constantsTableSummary);
-        tableSubCaptionStart();
-        write(classStr);
-        tableCaptionEnd();
-        summaryTableHeader(constantsTableHeader, "col");
-    }
-
-    private void tableFooter(boolean isHeader) {
-        fontEnd();
-        if (isHeader) {
-            thEnd();
-        } else {
-            tdEnd();
-        }
-        trEnd();
-        tableEnd();
-        p();
+    protected Content getClassName(String classStr) {
+        Content table = HtmlTree.TABLE(0, 3, 0, constantsTableSummary,
+                getTableCaption(classStr));
+        table.addContent(getSummaryTableHeader(constantsTableHeader, "col"));
+        return table;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writePackageName(PackageDoc pkg, String parsedPackageName) {
-        String pkgname;
-        if (parsedPackageName.length() == 0) {
-            anchor(DocletConstants.UNNAMED_PACKAGE_ANCHOR);
-            pkgname = DocletConstants.DEFAULT_PACKAGE_NAME;
-        } else {
-            anchor(parsedPackageName);
-            pkgname = parsedPackageName;
+    public void addConstantMembers(ClassDoc cd, List<FieldDoc> fields,
+            Content classConstantTree) {
+        currentClassDoc = cd;
+        Content tbody = new HtmlTree(HtmlTag.TBODY);
+        for (int i = 0; i < fields.size(); ++i) {
+            HtmlTree tr = new HtmlTree(HtmlTag.TR);
+            if (i%2 == 0)
+                tr.addStyle(HtmlStyle.altColor);
+            else
+                tr.addStyle(HtmlStyle.rowColor);
+            addConstantMember(fields.get(i), tr);
+            tbody.addContent(tr);
         }
-        table(1, "100%", 3, 0);
-        trBgcolorStyle("#CCCCFF", "TableHeadingColor");
-        thAlign("left");
-        font("+2");
-        write(pkgname + ".*");
-        tableFooter(true);
+        Content table = getConstantMembersHeader(cd);
+        table.addContent(tbody);
+        Content li = HtmlTree.LI(HtmlStyle.blockList, table);
+        classConstantTree.addContent(li);
+    }
+
+    /**
+     * Add the row for the constant summary table.
+     *
+     * @param member the field to be documented.
+     * @param trTree an htmltree object for the table row
+     */
+    private void addConstantMember(FieldDoc member, HtmlTree trTree) {
+        trTree.addContent(getTypeColumn(member));
+        trTree.addContent(getNameColumn(member));
+        trTree.addContent(getValue(member));
+    }
+
+    /**
+     * Get the type column for the constant summary table row.
+     *
+     * @param member the field to be documented.
+     * @return the type column of the constant table row
+     */
+    private Content getTypeColumn(FieldDoc member) {
+        Content anchor = getMarkerAnchor(currentClassDoc.qualifiedName() +
+                "." + member.name());
+        Content tdType = HtmlTree.TD(HtmlStyle.colFirst, anchor);
+        Content code = new HtmlTree(HtmlTag.CODE);
+        StringTokenizer mods = new StringTokenizer(member.modifiers());
+        while(mods.hasMoreTokens()) {
+            Content modifier = new StringContent(mods.nextToken());
+            code.addContent(modifier);
+            code.addContent(getSpace());
+        }
+        Content type = new RawHtml(getLink(new LinkInfoImpl(
+                LinkInfoImpl.CONTEXT_CONSTANT_SUMMARY, member.type())));
+        code.addContent(type);
+        tdType.addContent(code);
+        return tdType;
+    }
+
+    /**
+     * Get the name column for the constant summary table row.
+     *
+     * @param member the field to be documented.
+     * @return the name column of the constant table row
+     */
+    private Content getNameColumn(FieldDoc member) {
+        Content nameContent = new RawHtml(getDocLink(
+                LinkInfoImpl.CONTEXT_CONSTANT_SUMMARY, member, member.name(), false));
+        Content code = HtmlTree.CODE(nameContent);
+        return HtmlTree.TD(code);
+    }
+
+    /**
+     * Get the value column for the constant summary table row.
+     *
+     * @param member the field to be documented.
+     * @return the value column of the constant table row
+     */
+    private Content getValue(FieldDoc member) {
+        Content valueContent = new StringContent(member.constantValueExpression());
+        Content code = HtmlTree.CODE(valueContent);
+        return HtmlTree.TD(HtmlStyle.colLast, code);
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeConstantMembers(ClassDoc cd, List<FieldDoc> fields) {
-        currentClassDoc = cd;
-        for (int i = 0; i < fields.size(); ++i) {
-            writeConstantMember(fields.get(i));
-        }
-    }
-
-    private void writeConstantMember(FieldDoc member) {
-        trBgcolorStyle("white", "TableRowColor");
-        anchor(currentClassDoc.qualifiedName() + "." + member.name());
-        writeTypeColumn(member);
-        writeNameColumn(member);
-        writeValue(member);
-        trEnd();
+    public void addFooter(Content contentTree) {
+        addNavLinks(false, contentTree);
+        addBottom(contentTree);
     }
 
-    private void writeTypeColumn(FieldDoc member) {
-        tdAlign("right");
-        font("-1");
-        code();
-        StringTokenizer mods = new StringTokenizer(member.modifiers());
-        while(mods.hasMoreTokens()) {
-            print(mods.nextToken() + "&nbsp;");
-        }
-        printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CONSTANT_SUMMARY,
-            member.type()));
-        codeEnd();
-        fontEnd();
-        tdEnd();
-    }
-
-    private void writeNameColumn(FieldDoc member) {
-        tdAlign("left");
-        code();
-        printDocLink(LinkInfoImpl.CONTEXT_CONSTANT_SUMMARY, member,
-            member.name(), false);
-        codeEnd();
-        tdEnd();
-    }
-
-    private void writeValue(FieldDoc member) {
-        tdAlign("right");
-        code();
-        print(Util.escapeHtmlChars(member.constantValueExpression()));
-        codeEnd();
-        tdEnd();
+    /**
+     * {@inheritDoc}
+     */
+    public void printDocument(Content contentTree) {
+        printHtmlDocument(null, true, contentTree);
     }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/ConstructorWriterImpl.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/ConstructorWriterImpl.java	Wed Dec 01 11:02:38 2010 -0800
@@ -29,6 +29,7 @@
 import java.util.*;
 
 import com.sun.javadoc.*;
+import com.sun.tools.doclets.formats.html.markup.*;
 import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
 
@@ -43,7 +44,6 @@
     implements ConstructorWriter, MemberSummaryWriter {
 
     private boolean foundNonPubConstructor = false;
-    private boolean printedSummaryHeader = false;
 
     /**
      * Construct a new ConstructorWriterImpl.
@@ -75,125 +75,112 @@
     }
 
     /**
-     * Write the constructors summary header for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
+     * {@inheritDoc}
      */
-    public void writeMemberSummaryHeader(ClassDoc classDoc) {
-        printedSummaryHeader = true;
-        writer.println();
-        writer.println("<!-- ======== CONSTRUCTOR SUMMARY ======== -->");
-        writer.println();
-        writer.printSummaryHeader(this, classDoc);
-    }
-
-    /**
-     * Write the constructors summary footer for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
-     */
-    public void writeMemberSummaryFooter(ClassDoc classDoc) {
-        writer.printSummaryFooter(this, classDoc);
+    public Content getMemberSummaryHeader(ClassDoc classDoc,
+            Content memberSummaryTree) {
+        memberSummaryTree.addContent(HtmlConstants.START_OF_CONSTRUCTOR_SUMMARY);
+        Content memberTree = writer.getMemberTreeHeader();
+        writer.addSummaryHeader(this, classDoc, memberTree);
+        return memberTree;
     }
 
     /**
-     * Write the header for the constructor documentation.
-     *
-     * @param classDoc the class that the constructors belong to.
+     * {@inheritDoc}
      */
-    public void writeHeader(ClassDoc classDoc, String header) {
-        writer.println();
-        writer.println("<!-- ========= CONSTRUCTOR DETAIL ======== -->");
-        writer.println();
-        writer.anchor("constructor_detail");
-        writer.printTableHeadingBackground(header);
+    public Content getConstructorDetailsTreeHeader(ClassDoc classDoc,
+            Content memberDetailsTree) {
+        memberDetailsTree.addContent(HtmlConstants.START_OF_CONSTRUCTOR_DETAILS);
+        Content constructorDetailsTree = writer.getMemberTreeHeader();
+        constructorDetailsTree.addContent(writer.getMarkerAnchor("constructor_detail"));
+        Content heading = HtmlTree.HEADING(HtmlConstants.DETAILS_HEADING,
+                writer.constructorDetailsLabel);
+        constructorDetailsTree.addContent(heading);
+        return constructorDetailsTree;
     }
 
     /**
-     * Write the constructor header for the given constructor.
-     *
-     * @param constructor the constructor being documented.
-     * @param isFirst the flag to indicate whether or not the constructor is the
-     *        first to be documented.
+     * {@inheritDoc}
      */
-    public void writeConstructorHeader(ConstructorDoc constructor, boolean isFirst) {
-        if (! isFirst) {
-            writer.printMemberHeader();
-        }
-        writer.println();
+    public Content getConstructorDocTreeHeader(ConstructorDoc constructor,
+            Content constructorDetailsTree) {
         String erasureAnchor;
         if ((erasureAnchor = getErasureAnchor(constructor)) != null) {
-            writer.anchor(erasureAnchor);
+            constructorDetailsTree.addContent(writer.getMarkerAnchor((erasureAnchor)));
         }
-        writer.anchor(constructor);
-        writer.h3();
-        writer.print(constructor.name());
-        writer.h3End();
+        constructorDetailsTree.addContent(
+                writer.getMarkerAnchor(writer.getAnchor(constructor)));
+        Content constructorDocTree = writer.getMemberTreeHeader();
+        Content heading = new HtmlTree(HtmlConstants.MEMBER_HEADING);
+        heading.addContent(constructor.name());
+        constructorDocTree.addContent(heading);
+        return constructorDocTree;
     }
 
     /**
-     * Write the signature for the given constructor.
-     *
-     * @param constructor the constructor being documented.
+     * {@inheritDoc}
      */
-    public void writeSignature(ConstructorDoc constructor) {
+    public Content getSignature(ConstructorDoc constructor) {
         writer.displayLength = 0;
-        writer.pre();
-        writer.writeAnnotationInfo(constructor);
-        printModifiers(constructor);
-        //printReturnType((ConstructorDoc)constructor);
+        Content pre = new HtmlTree(HtmlTag.PRE);
+        writer.addAnnotationInfo(constructor, pre);
+        addModifiers(constructor, pre);
         if (configuration().linksource) {
-            writer.printSrcLink(constructor, constructor.name());
+            Content constructorName = new StringContent(constructor.name());
+            writer.addSrcLink(constructor, constructorName, pre);
         } else {
-            strong(constructor.name());
+            addName(constructor.name(), pre);
         }
-        writeParameters(constructor);
-        writeExceptions(constructor);
-        writer.preEnd();
-        assert !writer.getMemberDetailsListPrinted();
+        addParameters(constructor, pre);
+        addExceptions(constructor, pre);
+        return pre;
     }
 
     /**
-     * Write the deprecated output for the given constructor.
-     *
-     * @param constructor the constructor being documented.
+     * {@inheritDoc}
      */
-    public void writeDeprecated(ConstructorDoc constructor) {
-        printDeprecated(constructor);
+    @Override
+    public void setSummaryColumnStyle(HtmlTree tdTree) {
+        if (foundNonPubConstructor)
+            tdTree.addStyle(HtmlStyle.colLast);
+        else
+            tdTree.addStyle(HtmlStyle.colOne);
     }
 
     /**
-     * Write the comments for the given constructor.
-     *
-     * @param constructor the constructor being documented.
+     * {@inheritDoc}
      */
-    public void writeComments(ConstructorDoc constructor) {
-        printComment(constructor);
+    public void addDeprecated(ConstructorDoc constructor, Content constructorDocTree) {
+        addDeprecatedInfo(constructor, constructorDocTree);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addComments(ConstructorDoc constructor, Content constructorDocTree) {
+        addComment(constructor, constructorDocTree);
     }
 
     /**
-     * Write the tag output for the given constructor.
-     *
-     * @param constructor the constructor being documented.
+     * {@inheritDoc}
      */
-    public void writeTags(ConstructorDoc constructor) {
-        writer.printTags(constructor);
+    public void addTags(ConstructorDoc constructor, Content constructorDocTree) {
+        writer.addTagsInfo(constructor, constructorDocTree);
     }
 
     /**
-     * Write the constructor footer.
+     * {@inheritDoc}
      */
-    public void writeConstructorFooter() {
-        printMemberFooter();
+    public Content getConstructorDetails(Content constructorDetailsTree) {
+        return getMemberTree(constructorDetailsTree);
     }
 
     /**
-     * Write the footer for the constructor documentation.
-     *
-     * @param classDoc the class that the constructors belong to.
+     * {@inheritDoc}
      */
-    public void writeFooter(ClassDoc classDoc) {
-        //No footer to write for constructor documentation
+    public Content getConstructorDoc(Content constructorDocTree,
+            boolean isLastContent) {
+        return getMemberTree(constructorDocTree, isLastContent);
     }
 
     /**
@@ -212,17 +199,35 @@
         this.foundNonPubConstructor = foundNonPubConstructor;
     }
 
-    public void printSummaryLabel() {
-        writer.printText("doclet.Constructor_Summary");
+    /**
+     * {@inheritDoc}
+     */
+    public void addSummaryLabel(Content memberTree) {
+        Content label = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING,
+                writer.getResource("doclet.Constructor_Summary"));
+        memberTree.addContent(label);
     }
 
-    public void printTableSummary() {
-        writer.tableIndexSummary(configuration().getText("doclet.Member_Table_Summary",
+    /**
+     * {@inheritDoc}
+     */
+    public String getTableSummary() {
+        return configuration().getText("doclet.Member_Table_Summary",
                 configuration().getText("doclet.Constructor_Summary"),
-                configuration().getText("doclet.constructors")));
+                configuration().getText("doclet.constructors"));
     }
 
-    public void printSummaryTableHeader(ProgramElementDoc member) {
+    /**
+     * {@inheritDoc}
+     */
+    public String getCaption() {
+        return configuration().getText("doclet.Constructors");
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String[] getSummaryTableHeader(ProgramElementDoc member) {
         String[] header;
         if (foundNonPubConstructor) {
             header = new String[] {
@@ -239,87 +244,73 @@
                         configuration().getText("doclet.Description"))
             };
         }
-        writer.summaryTableHeader(header, "col");
+        return header;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addSummaryAnchor(ClassDoc cd, Content memberTree) {
+        memberTree.addContent(writer.getMarkerAnchor("constructor_summary"));
     }
 
-    public void printSummaryAnchor(ClassDoc cd) {
-        writer.anchor("constructor_summary");
+    /**
+     * {@inheritDoc}
+     */
+    public void addInheritedSummaryAnchor(ClassDoc cd, Content inheritedTree) {
     }
 
-    public void printInheritedSummaryAnchor(ClassDoc cd) {
-    }   // no such
-
-    public void printInheritedSummaryLabel(ClassDoc cd) {
-        // no such
+    /**
+     * {@inheritDoc}
+     */
+    public void addInheritedSummaryLabel(ClassDoc cd, Content inheritedTree) {
     }
 
     public int getMemberKind() {
         return VisibleMemberMap.CONSTRUCTORS;
     }
 
-    protected void navSummaryLink(List<?> members) {
-        printNavSummaryLink(classdoc,
-                members.size() > 0? true: false);
-    }
-
-    protected void printNavSummaryLink(ClassDoc cd, boolean link) {
+    /**
+     * {@inheritDoc}
+     */
+    protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
         if (link) {
-            writer.printHyperLink("", "constructor_summary",
-                    ConfigurationImpl.getInstance().getText("doclet.navConstructor"));
-        } else {
-            writer.printText("doclet.navConstructor");
-        }
-    }
-
-    protected void printNavDetailLink(boolean link) {
-        if (link) {
-            writer.printHyperLink("", "constructor_detail",
-                    ConfigurationImpl.getInstance().getText("doclet.navConstructor"));
+            return writer.getHyperLink("", "constructor_summary",
+                    writer.getResource("doclet.navConstructor"));
         } else {
-            writer.printText("doclet.navConstructor");
-        }
-    }
-
-    protected void printSummaryType(ProgramElementDoc member) {
-        if (foundNonPubConstructor) {
-            writer.printTypeSummaryHeader();
-            if (member.isProtected()) {
-                print("protected ");
-            } else if (member.isPrivate()) {
-                print("private ");
-            } else if (member.isPublic()) {
-                writer.space();
-            } else {
-                writer.printText("doclet.Package_private");
-            }
-            writer.printTypeSummaryFooter();
-        }
-    }
-
-    /**
-     * Write the inherited member summary header for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
-     */
-    public void writeInheritedMemberSummaryHeader(ClassDoc classDoc) {
-        if(! printedSummaryHeader){
-            //We don't want inherited summary to not be under heading.
-            writeMemberSummaryHeader(classDoc);
-            writeMemberSummaryFooter(classDoc);
-            printedSummaryHeader = true;
+            return writer.getResource("doclet.navConstructor");
         }
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeInheritedMemberSummary(ClassDoc classDoc,
-        ProgramElementDoc member, boolean isFirst, boolean isLast) {}
+    protected void addNavDetailLink(boolean link, Content liNav) {
+        if (link) {
+            liNav.addContent(writer.getHyperLink("", "constructor_detail",
+                    writer.getResource("doclet.navConstructor")));
+        } else {
+            liNav.addContent(writer.getResource("doclet.navConstructor"));
+        }
+    }
 
     /**
-     * Write the inherited member summary footer for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
+     * {@inheritDoc}
      */
-    public void writeInheritedMemberSummaryFooter(ClassDoc classDoc) {}
+    protected void addSummaryType(ProgramElementDoc member, Content tdSummaryType) {
+        if (foundNonPubConstructor) {
+            Content code = new HtmlTree(HtmlTag.CODE);
+            if (member.isProtected()) {
+                code.addContent("protected ");
+            } else if (member.isPrivate()) {
+                code.addContent("private ");
+            } else if (member.isPublic()) {
+                code.addContent(writer.getSpace());
+            } else {
+                code.addContent(
+                        configuration().getText("doclet.Package_private"));
+            }
+            tdSummaryType.addContent(code);
+        }
+    }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/DeprecatedListWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/DeprecatedListWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,9 +25,11 @@
 
 package com.sun.tools.doclets.formats.html;
 
+import java.io.*;
+import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.tools.doclets.internal.toolkit.util.DeprecatedAPIListBuilder;
 import com.sun.tools.doclets.internal.toolkit.util.*;
-import java.io.*;
+import com.sun.tools.doclets.formats.html.markup.*;
 
 /**
  * Generate File to list all the deprecated classes and class members with the
@@ -125,28 +127,21 @@
     }
 
     /**
-     * Print the deprecated API list. Separately print all class kinds and
-     * member kinds.
+     * Generate the deprecated API list.
      *
      * @param deprapi list of deprecated API built already.
      */
     protected void generateDeprecatedListFile(DeprecatedAPIListBuilder deprapi)
-             throws IOException {
-        writeHeader();
-
-        strong(configuration.getText("doclet.Contents"));
-        ul();
-        for (int i = 0; i < DeprecatedAPIListBuilder.NUM_TYPES; i++) {
-            writeIndexLink(deprapi, i);
-        }
-        ulEnd();
-        println();
-
+            throws IOException {
+        Content body = getHeader();
+        body.addContent(getContentsList(deprapi));
         String memberTableSummary;
         String[] memberTableHeader = new String[1];
+        HtmlTree div = new HtmlTree(HtmlTag.DIV);
+        div.addStyle(HtmlStyle.contentContainer);
         for (int i = 0; i < DeprecatedAPIListBuilder.NUM_TYPES; i++) {
             if (deprapi.hasDocumentation(i)) {
-                writeAnchor(deprapi, i);
+                addAnchor(deprapi, i, div);
                 memberTableSummary =
                         configuration.getText("doclet.Member_Table_Summary",
                         configuration.getText(HEADING_KEYS[i]),
@@ -154,66 +149,87 @@
                 memberTableHeader[0] = configuration.getText("doclet.0_and_1",
                         configuration.getText(HEADER_KEYS[i]),
                         configuration.getText("doclet.Description"));
-                writers[i].printDeprecatedAPI(deprapi.getList(i),
-                    HEADING_KEYS[i], memberTableSummary, memberTableHeader);
+                writers[i].addDeprecatedAPI(deprapi.getList(i),
+                        HEADING_KEYS[i], memberTableSummary, memberTableHeader, div);
             }
         }
-        printDeprecatedFooter();
+        body.addContent(div);
+        addNavLinks(false, body);
+        addBottom(body);
+        printHtmlDocument(null, true, body);
     }
 
-    private void writeIndexLink(DeprecatedAPIListBuilder builder,
-            int type) {
+    /**
+     * Add the index link.
+     *
+     * @param builder the deprecated list builder
+     * @param type the type of list being documented
+     * @param contentTree the content tree to which the index link will be added
+     */
+    private void addIndexLink(DeprecatedAPIListBuilder builder,
+            int type, Content contentTree) {
         if (builder.hasDocumentation(type)) {
-            li();
-            printHyperLink("#" + ANCHORS[type],
-                configuration.getText(HEADING_KEYS[type]));
-            println();
-        }
-    }
-
-    private void writeAnchor(DeprecatedAPIListBuilder builder, int type) {
-        if (builder.hasDocumentation(type)) {
-            anchor(ANCHORS[type]);
+            Content li = HtmlTree.LI(getHyperLink("#" + ANCHORS[type],
+                    getResource(HEADING_KEYS[type])));
+            contentTree.addContent(li);
         }
     }
 
     /**
-     * Print the navigation bar and header for the deprecated API Listing.
+     * Get the contents list.
+     *
+     * @param deprapi the deprecated list builder
+     * @return a content tree for the contents list
      */
-    protected void writeHeader() {
-        printHtmlHeader(configuration.getText("doclet.Window_Deprecated_List"),
-            null, true);
-        printTop();
-        navLinks(true);
-        hr();
-        center();
-        h2();
-        strongText("doclet.Deprecated_API");
-        h2End();
-        centerEnd();
-
-        hr(4, "noshade");
+    public Content getContentsList(DeprecatedAPIListBuilder deprapi) {
+        Content headContent = getResource("doclet.Deprecated_API");
+        Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, true,
+                HtmlStyle.title, headContent);
+        Content div = HtmlTree.DIV(HtmlStyle.header, heading);
+        Content headingContent = getResource("doclet.Contents");
+        div.addContent(HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, true,
+                headingContent));
+        Content ul = new HtmlTree(HtmlTag.UL);
+        for (int i = 0; i < DeprecatedAPIListBuilder.NUM_TYPES; i++) {
+            addIndexLink(deprapi, i, ul);
+        }
+        div.addContent(ul);
+        return div;
     }
 
     /**
-     * Print the navigation bar and the footer for the deprecated API Listing.
+     * Add the anchor.
+     *
+     * @param builder the deprecated list builder
+     * @param type the type of list being documented
+     * @param contentTree the content tree to which the anchor will be added
      */
-    protected void printDeprecatedFooter() {
-        hr();
-        navLinks(false);
-        printBottom();
-        printBodyHtmlEnd();
+    private void addAnchor(DeprecatedAPIListBuilder builder, int type, Content htmlTree) {
+        if (builder.hasDocumentation(type)) {
+            htmlTree.addContent(getMarkerAnchor(ANCHORS[type]));
+        }
     }
 
     /**
-     * Highlight the word "Deprecated" in the navigation bar as this is the same
-     * page.
+     * Get the header for the deprecated API Listing.
+     *
+     * @return a content tree for the header
      */
-    protected void navLinkDeprecated() {
-        navCellRevStart();
-        fontStyle("NavBarFont1Rev");
-        strongText("doclet.navDeprecated");
-        fontEnd();
-        navCellEnd();
+    public Content getHeader() {
+        String title = configuration.getText("doclet.Window_Deprecated_List");
+        Content bodyTree = getBody(true, getWindowTitle(title));
+        addTop(bodyTree);
+        addNavLinks(true, bodyTree);
+        return bodyTree;
+    }
+
+    /**
+     * Get the deprecated label.
+     *
+     * @return a content tree for the deprecated label
+     */
+    protected Content getNavLinkDeprecated() {
+        Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, deprecatedLabel);
+        return li;
     }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/EnumConstantWriterImpl.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/EnumConstantWriterImpl.java	Wed Dec 01 11:02:38 2010 -0800
@@ -28,6 +28,7 @@
 import java.io.*;
 
 import com.sun.javadoc.*;
+import com.sun.tools.doclets.formats.html.markup.*;
 import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
 
@@ -40,8 +41,6 @@
 public class EnumConstantWriterImpl extends AbstractMemberWriter
     implements EnumConstantWriter, MemberSummaryWriter {
 
-    private boolean printedSummaryHeader = false;
-
     public EnumConstantWriterImpl(SubWriterHolderWriter writer,
         ClassDoc classdoc) {
         super(writer, classdoc);
@@ -52,136 +51,98 @@
     }
 
     /**
-     * Write the enum constant summary header for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
-     */
-    public void writeMemberSummaryHeader(ClassDoc classDoc) {
-        printedSummaryHeader = true;
-        writer.println("<!-- =========== ENUM CONSTANT SUMMARY =========== -->");
-        writer.println();
-        writer.printSummaryHeader(this, classDoc);
-    }
-
-    /**
-     * Write the enum constant summary footer for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
+     * {@inheritDoc}
      */
-    public void writeMemberSummaryFooter(ClassDoc classDoc) {
-        writer.printSummaryFooter(this, classDoc);
-    }
-
-    /**
-     * Write the inherited enum constant summary header for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
-     */
-    public void writeInheritedMemberSummaryHeader(ClassDoc classDoc) {
-        if(! printedSummaryHeader){
-            //We don't want inherited summary to not be under heading.
-            writeMemberSummaryHeader(classDoc);
-            writeMemberSummaryFooter(classDoc);
-            printedSummaryHeader = true;
-        }
-        writer.printInheritedSummaryHeader(this, classDoc);
+    public Content getMemberSummaryHeader(ClassDoc classDoc,
+            Content memberSummaryTree) {
+        memberSummaryTree.addContent(HtmlConstants.START_OF_ENUM_CONSTANT_SUMMARY);
+        Content memberTree = writer.getMemberTreeHeader();
+        writer.addSummaryHeader(this, classDoc, memberTree);
+        return memberTree;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeInheritedMemberSummary(ClassDoc classDoc,
-        ProgramElementDoc enumConstant, boolean isFirst, boolean isLast) {
-        writer.printInheritedSummaryMember(this, classDoc, enumConstant, isFirst);
+    public Content getEnumConstantsDetailsTreeHeader(ClassDoc classDoc,
+            Content memberDetailsTree) {
+        memberDetailsTree.addContent(HtmlConstants.START_OF_ENUM_CONSTANT_DETAILS);
+        Content enumConstantsDetailsTree = writer.getMemberTreeHeader();
+        enumConstantsDetailsTree.addContent(writer.getMarkerAnchor("enum_constant_detail"));
+        Content heading = HtmlTree.HEADING(HtmlConstants.DETAILS_HEADING,
+                writer.enumConstantsDetailsLabel);
+        enumConstantsDetailsTree.addContent(heading);
+        return enumConstantsDetailsTree;
     }
 
     /**
-     * Write the inherited enum constant summary footer for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
+     * {@inheritDoc}
      */
-    public void writeInheritedMemberSummaryFooter(ClassDoc classDoc) {
-        writer.printInheritedSummaryFooter(this, classDoc);
+    public Content getEnumConstantsTreeHeader(FieldDoc enumConstant,
+            Content enumConstantsDetailsTree) {
+        enumConstantsDetailsTree.addContent(
+                writer.getMarkerAnchor(enumConstant.name()));
+        Content enumConstantsTree = writer.getMemberTreeHeader();
+        Content heading = new HtmlTree(HtmlConstants.MEMBER_HEADING);
+        heading.addContent(enumConstant.name());
+        enumConstantsTree.addContent(heading);
+        return enumConstantsTree;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeHeader(ClassDoc classDoc, String header) {
-        writer.println();
-        writer.println("<!-- ============ ENUM CONSTANT DETAIL =========== -->");
-        writer.println();
-        writer.anchor("enum_constant_detail");
-        writer.printTableHeadingBackground(header);
-        writer.println();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void writeEnumConstantHeader(FieldDoc enumConstant, boolean isFirst) {
-        if (! isFirst) {
-            writer.printMemberHeader();
-            writer.println("");
+    public Content getSignature(FieldDoc enumConstant) {
+        Content pre = new HtmlTree(HtmlTag.PRE);
+        writer.addAnnotationInfo(enumConstant, pre);
+        addModifiers(enumConstant, pre);
+        Content enumConstantLink = new RawHtml(writer.getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER,
+                enumConstant.type())));
+        pre.addContent(enumConstantLink);
+        pre.addContent(" ");
+        if (configuration().linksource) {
+            Content enumConstantName = new StringContent(enumConstant.name());
+            writer.addSrcLink(enumConstant, enumConstantName, pre);
+        } else {
+            addName(enumConstant.name(), pre);
         }
-        writer.anchor(enumConstant.name());
-        writer.h3();
-        writer.print(enumConstant.name());
-        writer.h3End();
+        return pre;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeSignature(FieldDoc enumConstant) {
-        writer.pre();
-        writer.writeAnnotationInfo(enumConstant);
-        printModifiers(enumConstant);
-        writer.printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER,
-            enumConstant.type()));
-        print(' ');
-        if (configuration().linksource) {
-            writer.printSrcLink(enumConstant, enumConstant.name());
-        } else {
-            strong(enumConstant.name());
-        }
-        writer.preEnd();
-        assert !writer.getMemberDetailsListPrinted();
+    public void addDeprecated(FieldDoc enumConstant, Content enumConstantsTree) {
+        addDeprecatedInfo(enumConstant, enumConstantsTree);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addComments(FieldDoc enumConstant, Content enumConstantsTree) {
+        addComment(enumConstant, enumConstantsTree);
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeDeprecated(FieldDoc enumConstant) {
-        printDeprecated(enumConstant);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void writeComments(FieldDoc enumConstant) {
-        printComment(enumConstant);
+    public void addTags(FieldDoc enumConstant, Content enumConstantsTree) {
+        writer.addTagsInfo(enumConstant, enumConstantsTree);
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeTags(FieldDoc enumConstant) {
-        writer.printTags(enumConstant);
+    public Content getEnumConstantsDetails(Content enumConstantsDetailsTree) {
+        return getMemberTree(enumConstantsDetailsTree);
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeEnumConstantFooter() {
-        printMemberFooter();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void writeFooter(ClassDoc classDoc) {
-        //No footer to write for enum constant documentation
+    public Content getEnumConstants(Content enumConstantsTree,
+            boolean isLastContent) {
+        return getMemberTree(enumConstantsTree, isLastContent);
     }
 
     /**
@@ -195,75 +156,127 @@
         return VisibleMemberMap.ENUM_CONSTANTS;
     }
 
-    public void printSummaryLabel() {
-        writer.printText("doclet.Enum_Constant_Summary");
+    /**
+     * {@inheritDoc}
+     */
+    public void addSummaryLabel(Content memberTree) {
+        Content label = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING,
+                writer.getResource("doclet.Enum_Constant_Summary"));
+        memberTree.addContent(label);
     }
 
-    public void printTableSummary() {
-        writer.tableIndexSummary(configuration().getText("doclet.Member_Table_Summary",
+    /**
+     * {@inheritDoc}
+     */
+    public String getTableSummary() {
+        return configuration().getText("doclet.Member_Table_Summary",
                 configuration().getText("doclet.Enum_Constant_Summary"),
-                configuration().getText("doclet.enum_constants")));
+                configuration().getText("doclet.enum_constants"));
     }
 
-    public void printSummaryTableHeader(ProgramElementDoc member) {
+    /**
+     * {@inheritDoc}
+     */
+    public String getCaption() {
+        return configuration().getText("doclet.Enum_Constants");
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String[] getSummaryTableHeader(ProgramElementDoc member) {
         String[] header = new String[] {
             configuration().getText("doclet.0_and_1",
                     configuration().getText("doclet.Enum_Constant"),
                     configuration().getText("doclet.Description"))
         };
-        writer.summaryTableHeader(header, "col");
+        return header;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addSummaryAnchor(ClassDoc cd, Content memberTree) {
+        memberTree.addContent(writer.getMarkerAnchor("enum_constant_summary"));
     }
 
-    public void printSummaryAnchor(ClassDoc cd) {
-        writer.anchor("enum_constant_summary");
+    /**
+     * {@inheritDoc}
+     */
+    public void addInheritedSummaryAnchor(ClassDoc cd, Content inheritedTree) {
     }
 
-    public void printInheritedSummaryAnchor(ClassDoc cd) {
-    }   // no such
-
-    public void printInheritedSummaryLabel(ClassDoc cd) {
-        // no such
+    /**
+     * {@inheritDoc}
+     */
+    public void addInheritedSummaryLabel(ClassDoc cd, Content inheritedTree) {
     }
 
-    protected void writeSummaryLink(int context, ClassDoc cd, ProgramElementDoc member) {
-        writer.strong();
-        writer.printDocLink(context, (MemberDoc) member, member.name(), false);
-        writer.strongEnd();
+    /**
+     * {@inheritDoc}
+     */
+    protected void addSummaryLink(int context, ClassDoc cd, ProgramElementDoc member,
+            Content tdSummary) {
+        Content strong = HtmlTree.STRONG(new RawHtml(
+                writer.getDocLink(context, (MemberDoc) member, member.name(), false)));
+        Content code = HtmlTree.CODE(strong);
+        tdSummary.addContent(code);
     }
 
-    protected void writeInheritedSummaryLink(ClassDoc cd,
-            ProgramElementDoc member) {
-        writer.printDocLink(LinkInfoImpl.CONTEXT_MEMBER, (MemberDoc)member,
-            member.name(), false);
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setSummaryColumnStyle(HtmlTree tdTree) {
+        tdTree.addStyle(HtmlStyle.colOne);
     }
 
-    protected void printSummaryType(ProgramElementDoc member) {
+    /**
+     * {@inheritDoc}
+     */
+    protected void addInheritedSummaryLink(ClassDoc cd,
+            ProgramElementDoc member, Content linksTree) {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void addSummaryType(ProgramElementDoc member, Content tdSummaryType) {
         //Not applicable.
     }
 
-    protected void writeDeprecatedLink(ProgramElementDoc member) {
-        writer.printDocLink(LinkInfoImpl.CONTEXT_MEMBER,
-            (MemberDoc) member, ((FieldDoc)member).qualifiedName(), false);
+    /**
+     * {@inheritDoc}
+     */
+    protected Content getDeprecatedLink(ProgramElementDoc member) {
+        return writer.getDocLink(LinkInfoImpl.CONTEXT_MEMBER,
+                (MemberDoc) member, ((FieldDoc)member).qualifiedName());
     }
 
-    protected void printNavSummaryLink(ClassDoc cd, boolean link) {
+    /**
+     * {@inheritDoc}
+     */
+    protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
         if (link) {
-            writer.printHyperLink("", (cd == null)?
-                        "enum_constant_summary":
-                        "enum_constants_inherited_from_class_" +
-                        configuration().getClassName(cd),
-                    configuration().getText("doclet.navEnum"));
+            return writer.getHyperLink("", (cd == null)?
+                "enum_constant_summary":
+                "enum_constants_inherited_from_class_" +
+                configuration().getClassName(cd),
+                writer.getResource("doclet.navEnum"));
         } else {
-            writer.printText("doclet.navEnum");
+            return writer.getResource("doclet.navEnum");
         }
     }
 
-    protected void printNavDetailLink(boolean link) {
+    /**
+     * {@inheritDoc}
+     */
+    protected void addNavDetailLink(boolean link, Content liNav) {
         if (link) {
-            writer.printHyperLink("", "enum_constant_detail",
-                configuration().getText("doclet.navEnum"));
+            liNav.addContent(writer.getHyperLink("", "enum_constant_detail",
+                    writer.getResource("doclet.navEnum")));
         } else {
-            writer.printText("doclet.navEnum");
+            liNav.addContent(writer.getResource("doclet.navEnum"));
         }
     }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/FieldWriterImpl.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/FieldWriterImpl.java	Wed Dec 01 11:02:38 2010 -0800
@@ -28,6 +28,7 @@
 import java.io.*;
 
 import com.sun.javadoc.*;
+import com.sun.tools.doclets.formats.html.markup.*;
 import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
 
@@ -42,8 +43,6 @@
 public class FieldWriterImpl extends AbstractMemberWriter
     implements FieldWriter, MemberSummaryWriter {
 
-    private boolean printedSummaryHeader = false;
-
     public FieldWriterImpl(SubWriterHolderWriter writer, ClassDoc classdoc) {
         super(writer, classdoc);
     }
@@ -53,177 +52,118 @@
     }
 
     /**
-     * Write the fields summary header for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
+     * {@inheritDoc}
      */
-    public void writeMemberSummaryHeader(ClassDoc classDoc) {
-        printedSummaryHeader = true;
-        writer.println("<!-- =========== FIELD SUMMARY =========== -->");
-        writer.println();
-        writer.printSummaryHeader(this, classDoc);
+    public Content getMemberSummaryHeader(ClassDoc classDoc,
+            Content memberSummaryTree) {
+        memberSummaryTree.addContent(HtmlConstants.START_OF_FIELD_SUMMARY);
+        Content memberTree = writer.getMemberTreeHeader();
+        writer.addSummaryHeader(this, classDoc, memberTree);
+        return memberTree;
     }
 
     /**
-     * Write the fields summary footer for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
+     * {@inheritDoc}
      */
-    public void writeMemberSummaryFooter(ClassDoc classDoc) {
-        writer.tableEnd();
-        writer.space();
+    public Content getFieldDetailsTreeHeader(ClassDoc classDoc,
+            Content memberDetailsTree) {
+        memberDetailsTree.addContent(HtmlConstants.START_OF_FIELD_DETAILS);
+        Content fieldDetailsTree = writer.getMemberTreeHeader();
+        fieldDetailsTree.addContent(writer.getMarkerAnchor("field_detail"));
+        Content heading = HtmlTree.HEADING(HtmlConstants.DETAILS_HEADING,
+                writer.fieldDetailsLabel);
+        fieldDetailsTree.addContent(heading);
+        return fieldDetailsTree;
     }
 
     /**
-     * Write the inherited fields summary header for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
+     * {@inheritDoc}
      */
-    public void writeInheritedMemberSummaryHeader(ClassDoc classDoc) {
-        if(! printedSummaryHeader){
-            //We don't want inherited summary to not be under heading.
-            writeMemberSummaryHeader(classDoc);
-            writeMemberSummaryFooter(classDoc);
-            printedSummaryHeader = true;
-        }
-        writer.printInheritedSummaryHeader(this, classDoc);
+    public Content getFieldDocTreeHeader(FieldDoc field,
+            Content fieldDetailsTree) {
+        fieldDetailsTree.addContent(
+                writer.getMarkerAnchor(field.name()));
+        Content fieldDocTree = writer.getMemberTreeHeader();
+        Content heading = new HtmlTree(HtmlConstants.MEMBER_HEADING);
+        heading.addContent(field.name());
+        fieldDocTree.addContent(heading);
+        return fieldDocTree;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeInheritedMemberSummary(ClassDoc classDoc,
-        ProgramElementDoc field, boolean isFirst, boolean isLast) {
-        writer.printInheritedSummaryMember(this, classDoc, field, isFirst);
-    }
-
-    /**
-     * Write the inherited fields summary footer for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
-     */
-    public void writeInheritedMemberSummaryFooter(ClassDoc classDoc) {
-        writer.printInheritedSummaryFooter(this, classDoc);
-    }
-
-    /**
-     * Write the header for the field documentation.
-     *
-     * @param classDoc the class that the fields belong to.
-     */
-    public void writeHeader(ClassDoc classDoc, String header) {
-        writer.println();
-        writer.println("<!-- ============ FIELD DETAIL =========== -->");
-        writer.println();
-        writer.anchor("field_detail");
-        writer.printTableHeadingBackground(header);
-        writer.println();
-    }
-
-    /**
-     * Write the field header for the given field.
-     *
-     * @param field the field being documented.
-     * @param isFirst the flag to indicate whether or not the field is the
-     *        first to be documented.
-     */
-    public void writeFieldHeader(FieldDoc field, boolean isFirst) {
-        if (! isFirst) {
-            writer.printMemberHeader();
-            writer.println("");
+    public Content getSignature(FieldDoc field) {
+        Content pre = new HtmlTree(HtmlTag.PRE);
+        writer.addAnnotationInfo(field, pre);
+        addModifiers(field, pre);
+        Content fieldlink = new RawHtml(writer.getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER,
+                field.type())));
+        pre.addContent(fieldlink);
+        pre.addContent(" ");
+        if (configuration().linksource) {
+            Content fieldName = new StringContent(field.name());
+            writer.addSrcLink(field, fieldName, pre);
+        } else {
+            addName(field.name(), pre);
         }
-        writer.anchor(field.name());
-        writer.h3();
-        writer.print(field.name());
-        writer.h3End();
+        return pre;
     }
 
     /**
-     * Write the signature for the given field.
-     *
-     * @param field the field being documented.
+     * {@inheritDoc}
      */
-    public void writeSignature(FieldDoc field) {
-        writer.pre();
-        writer.writeAnnotationInfo(field);
-        printModifiers(field);
-        writer.printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER,
-            field.type()));
-        print(' ');
-        if (configuration().linksource) {
-            writer.printSrcLink(field, field.name());
-        } else {
-            strong(field.name());
-        }
-        writer.preEnd();
-        assert !writer.getMemberDetailsListPrinted();
+    public void addDeprecated(FieldDoc field, Content fieldDocTree) {
+        addDeprecatedInfo(field, fieldDocTree);
     }
 
     /**
-     * Write the deprecated output for the given field.
-     *
-     * @param field the field being documented.
+     * {@inheritDoc}
      */
-    public void writeDeprecated(FieldDoc field) {
-        printDeprecated(field);
-    }
-
-    /**
-     * Write the comments for the given field.
-     *
-     * @param field the field being documented.
-     */
-    public void writeComments(FieldDoc field) {
+    public void addComments(FieldDoc field, Content fieldDocTree) {
         ClassDoc holder = field.containingClass();
         if (field.inlineTags().length > 0) {
-            writer.printMemberDetailsListStartTag();
             if (holder.equals(classdoc) ||
-                (! (holder.isPublic() || Util.isLinkable(holder, configuration())))) {
-                writer.dd();
-                writer.printInlineComment(field);
-                writer.ddEnd();
+                    (! (holder.isPublic() || Util.isLinkable(holder, configuration())))) {
+                writer.addInlineComment(field, fieldDocTree);
             } else {
-                String classlink = writer.codeText(
-                    writer.getDocLink(LinkInfoImpl.CONTEXT_FIELD_DOC_COPY,
+                Content link = new RawHtml(
+                        writer.getDocLink(LinkInfoImpl.CONTEXT_FIELD_DOC_COPY,
                         holder, field,
                         holder.isIncluded() ?
                             holder.typeName() : holder.qualifiedTypeName(),
-                        false));
-                writer.dd();
-                writer.strong(configuration().getText(holder.isClass()?
-                   "doclet.Description_From_Class" :
-                    "doclet.Description_From_Interface", classlink));
-                writer.ddEnd();
-                writer.dd();
-                writer.printInlineComment(field);
-                writer.ddEnd();
+                            false));
+                Content codeLink = HtmlTree.CODE(link);
+                Content strong = HtmlTree.STRONG(holder.isClass()?
+                   writer.descfrmClassLabel : writer.descfrmInterfaceLabel);
+                strong.addContent(writer.getSpace());
+                strong.addContent(codeLink);
+                fieldDocTree.addContent(HtmlTree.DIV(HtmlStyle.block, strong));
+                writer.addInlineComment(field, fieldDocTree);
             }
         }
     }
 
     /**
-     * Write the tag output for the given field.
-     *
-     * @param field the field being documented.
+     * {@inheritDoc}
      */
-    public void writeTags(FieldDoc field) {
-        writer.printTags(field);
+    public void addTags(FieldDoc field, Content fieldDocTree) {
+        writer.addTagsInfo(field, fieldDocTree);
     }
 
     /**
-     * Write the field footer.
+     * {@inheritDoc}
      */
-    public void writeFieldFooter() {
-        printMemberFooter();
+    public Content getFieldDetails(Content fieldDetailsTree) {
+        return getMemberTree(fieldDetailsTree);
     }
 
     /**
-     * Write the footer for the field documentation.
-     *
-     * @param classDoc the class that the fields belong to.
+     * {@inheritDoc}
      */
-    public void writeFooter(ClassDoc classDoc) {
-        //No footer to write for field documentation
+    public Content getFieldDoc(Content fieldDocTree,
+            boolean isLastContent) {
+        return getMemberTree(fieldDocTree, isLastContent);
     }
 
     /**
@@ -237,85 +177,136 @@
         return VisibleMemberMap.FIELDS;
     }
 
-    public void printSummaryLabel() {
-        writer.printText("doclet.Field_Summary");
+    /**
+     * {@inheritDoc}
+     */
+    public void addSummaryLabel(Content memberTree) {
+        Content label = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING,
+                writer.getResource("doclet.Field_Summary"));
+        memberTree.addContent(label);
     }
 
-    public void printTableSummary() {
-        writer.tableIndexSummary(configuration().getText("doclet.Member_Table_Summary",
+    /**
+     * {@inheritDoc}
+     */
+    public String getTableSummary() {
+        return configuration().getText("doclet.Member_Table_Summary",
                 configuration().getText("doclet.Field_Summary"),
-                configuration().getText("doclet.fields")));
+                configuration().getText("doclet.fields"));
     }
 
-    public void printSummaryTableHeader(ProgramElementDoc member) {
+    /**
+     * {@inheritDoc}
+     */
+    public String getCaption() {
+        return configuration().getText("doclet.Fields");
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String[] getSummaryTableHeader(ProgramElementDoc member) {
         String[] header = new String[] {
             writer.getModifierTypeHeader(),
             configuration().getText("doclet.0_and_1",
                     configuration().getText("doclet.Field"),
                     configuration().getText("doclet.Description"))
         };
-        writer.summaryTableHeader(header, "col");
+        return header;
     }
 
-    public void printSummaryAnchor(ClassDoc cd) {
-        writer.anchor("field_summary");
+    /**
+     * {@inheritDoc}
+     */
+    public void addSummaryAnchor(ClassDoc cd, Content memberTree) {
+        memberTree.addContent(writer.getMarkerAnchor("field_summary"));
     }
 
-    public void printInheritedSummaryAnchor(ClassDoc cd) {
-        writer.anchor("fields_inherited_from_class_" + configuration().getClassName(cd));
+    /**
+     * {@inheritDoc}
+     */
+    public void addInheritedSummaryAnchor(ClassDoc cd, Content inheritedTree) {
+        inheritedTree.addContent(writer.getMarkerAnchor(
+                "fields_inherited_from_class_" + configuration().getClassName(cd)));
     }
 
-    public void printInheritedSummaryLabel(ClassDoc cd) {
-        String classlink = writer.getPreQualifiedClassLink(
-            LinkInfoImpl.CONTEXT_MEMBER, cd, false);
-        writer.strong();
-        String key = cd.isClass()?
-            "doclet.Fields_Inherited_From_Class" :
-            "doclet.Fields_Inherited_From_Interface";
-        writer.printText(key, classlink);
-        writer.strongEnd();
+    /**
+     * {@inheritDoc}
+     */
+    public void addInheritedSummaryLabel(ClassDoc cd, Content inheritedTree) {
+        Content classLink = new RawHtml(writer.getPreQualifiedClassLink(
+                LinkInfoImpl.CONTEXT_MEMBER, cd, false));
+        Content label = new StringContent(cd.isClass() ?
+            configuration().getText("doclet.Fields_Inherited_From_Class") :
+            configuration().getText("doclet.Fields_Inherited_From_Interface"));
+        Content labelHeading = HtmlTree.HEADING(HtmlConstants.INHERITED_SUMMARY_HEADING,
+                label);
+        labelHeading.addContent(writer.getSpace());
+        labelHeading.addContent(classLink);
+        inheritedTree.addContent(labelHeading);
     }
 
-    protected void writeSummaryLink(int context, ClassDoc cd, ProgramElementDoc member) {
-        writer.strong();
-        writer.printDocLink(context, cd , (MemberDoc) member, member.name(), false);
-        writer.strongEnd();
+    /**
+     * {@inheritDoc}
+     */
+    protected void addSummaryLink(int context, ClassDoc cd, ProgramElementDoc member,
+            Content tdSummary) {
+        Content strong = HtmlTree.STRONG(new RawHtml(
+                writer.getDocLink(context, cd , (MemberDoc) member, member.name(), false)));
+        Content code = HtmlTree.CODE(strong);
+        tdSummary.addContent(code);
     }
 
-    protected void writeInheritedSummaryLink(ClassDoc cd,
-            ProgramElementDoc member) {
-        writer.printDocLink(LinkInfoImpl.CONTEXT_MEMBER, cd, (MemberDoc)member,
-            member.name(), false);
+    /**
+     * {@inheritDoc}
+     */
+    protected void addInheritedSummaryLink(ClassDoc cd,
+            ProgramElementDoc member, Content linksTree) {
+        linksTree.addContent(new RawHtml(
+                writer.getDocLink(LinkInfoImpl.CONTEXT_MEMBER, cd, (MemberDoc)member,
+                member.name(), false)));
     }
 
-    protected void printSummaryType(ProgramElementDoc member) {
+    /**
+     * {@inheritDoc}
+     */
+    protected void addSummaryType(ProgramElementDoc member, Content tdSummaryType) {
         FieldDoc field = (FieldDoc)member;
-        printModifierAndType(field, field.type());
-    }
-
-    protected void writeDeprecatedLink(ProgramElementDoc member) {
-        writer.printDocLink(LinkInfoImpl.CONTEXT_MEMBER,
-            (MemberDoc) member, ((FieldDoc)member).qualifiedName(), false);
+        addModifierAndType(field, field.type(), tdSummaryType);
     }
 
-    protected void printNavSummaryLink(ClassDoc cd, boolean link) {
+    /**
+     * {@inheritDoc}
+     */
+    protected Content getDeprecatedLink(ProgramElementDoc member) {
+        return writer.getDocLink(LinkInfoImpl.CONTEXT_MEMBER,
+                (MemberDoc) member, ((FieldDoc)member).qualifiedName());
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
         if (link) {
-            writer.printHyperLink("", (cd == null)?
-                        "field_summary":
-                        "fields_inherited_from_class_" +
-                        configuration().getClassName(cd),
-                    configuration().getText("doclet.navField"));
+            return writer.getHyperLink("", (cd == null)?
+                "field_summary":
+                "fields_inherited_from_class_" +
+                configuration().getClassName(cd),
+                writer.getResource("doclet.navField"));
         } else {
-            writer.printText("doclet.navField");
+            return writer.getResource("doclet.navField");
         }
     }
 
-    protected void printNavDetailLink(boolean link) {
+    /**
+     * {@inheritDoc}
+     */
+    protected void addNavDetailLink(boolean link, Content liNav) {
         if (link) {
-            writer.printHyperLink("", "field_detail",
-                configuration().getText("doclet.navField"));
+            liNav.addContent(writer.getHyperLink("", "field_detail",
+                    writer.getResource("doclet.navField")));
         } else {
-            writer.printText("doclet.navField");
+            liNav.addContent(writer.getResource("doclet.navField"));
         }
     }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/FrameOutputWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/FrameOutputWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,8 +25,10 @@
 
 package com.sun.tools.doclets.formats.html;
 
+import java.io.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
-import java.io.*;
+import com.sun.tools.doclets.internal.toolkit.*;
+import com.sun.tools.doclets.formats.html.markup.*;
 
 /**
  * Generate the documentation in the Html "frame" format in the browser. The
@@ -47,6 +49,8 @@
      */
     int noOfPackages;
 
+    private final String SCROLL_YES = "yes";
+
     /**
      * Constructor to construct FrameOutputWriter object.
      *
@@ -86,82 +90,93 @@
      * as well as warning if browser is not supporting the Html frames.
      */
     protected void generateFrameFile() {
+        Content frameset = getFrameDetails();
         if (configuration.windowtitle.length() > 0) {
-            printFramesetHeader(configuration.windowtitle, configuration.notimestamp);
+            printFramesetDocument(configuration.windowtitle, configuration.notimestamp,
+                    frameset);
         } else {
-            printFramesetHeader(configuration.getText("doclet.Generated_Docs_Untitled"),
-                                configuration.notimestamp);
+            printFramesetDocument(configuration.getText("doclet.Generated_Docs_Untitled"),
+                    configuration.notimestamp, frameset);
         }
-        printFrameDetails();
-        printFrameFooter();
     }
 
     /**
-     * Generate the code for issueing the warning for a non-frame capable web
+     * Add the code for issueing the warning for a non-frame capable web
      * client. Also provide links to the non-frame version documentation.
+     *
+     * @param contentTree the content tree to which the non-frames information will be added
      */
-    protected void printFrameWarning() {
-        noFrames();
-        h2();
-        printText("doclet.Frame_Alert");
-        h2End();
-        p();
-        printText("doclet.Frame_Warning_Message");
-        br();
-        printText("doclet.Link_To");
-        printHyperLink(configuration.topFile,
-            configuration.getText("doclet.Non_Frame_Version"));
-        println("");
-        noFramesEnd();
+    protected void addFrameWarning(Content contentTree) {
+        Content noframes = new HtmlTree(HtmlTag.NOFRAMES);
+        Content noScript = HtmlTree.NOSCRIPT(
+                HtmlTree.DIV(getResource("doclet.No_Script_Message")));
+        noframes.addContent(noScript);
+        Content noframesHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
+                getResource("doclet.Frame_Alert"));
+        noframes.addContent(noframesHead);
+        Content p = HtmlTree.P(getResource("doclet.Frame_Warning_Message"));
+        noframes.addContent(p);
+        noframes.addContent(new HtmlTree(HtmlTag.BR));
+        noframes.addContent(getResource("doclet.Link_To"));
+        Content link = getHyperLink(configuration.topFile,
+                getResource("doclet.Non_Frame_Version"));
+        noframes.addContent(link);
+        contentTree.addContent(noframes);
     }
 
     /**
-     * Print the frame sizes and their contents.
+     * Get the frame sizes and their contents.
+     *
+     * @return a content tree for the frame details
      */
-    protected void printFrameDetails() {
-        // title attribute intentionally made empty so
-        // 508 tests will not flag it as missing
-        frameSet("cols=\"20%,80%\" title=\"\" onLoad=\"top.loadFrames()\"");
+    protected Content getFrameDetails() {
+        HtmlTree frameset = HtmlTree.FRAMESET("20%,80%", null, "Documentation frame",
+                "top.loadFrames()");
         if (noOfPackages <= 1) {
-            printAllClassesFrameTag();
+            addAllClassesFrameTag(frameset);
         } else if (noOfPackages > 1) {
-            frameSet("rows=\"30%,70%\" title=\"\" onLoad=\"top.loadFrames()\"");
-            printAllPackagesFrameTag();
-            printAllClassesFrameTag();
-            frameSetEnd();
+            HtmlTree leftFrameset = HtmlTree.FRAMESET(null, "30%,70%", "Left frames",
+                "top.loadFrames()");
+            addAllPackagesFrameTag(leftFrameset);
+            addAllClassesFrameTag(leftFrameset);
+            frameset.addContent(leftFrameset);
         }
-        printClassFrameTag();
-        printFrameWarning();
-        frameSetEnd();
+        addClassFrameTag(frameset);
+        addFrameWarning(frameset);
+        return frameset;
     }
 
     /**
-     * Print the FRAME tag for the frame that lists all packages
+     * Add the FRAME tag for the frame that lists all packages.
+     *
+     * @param contentTree the content tree to which the information will be added
      */
-    private void printAllPackagesFrameTag() {
-        frame("src=\"overview-frame.html\" name=\"packageListFrame\""
-            + " title=\"" + configuration.getText("doclet.All_Packages") + "\"");
+    private void addAllPackagesFrameTag(Content contentTree) {
+        HtmlTree frame = HtmlTree.FRAME("overview-frame.html", "packageListFrame",
+                configuration.getText("doclet.All_Packages"));
+        contentTree.addContent(frame);
     }
 
     /**
-     * Print the FRAME tag for the frame that lists all classes
+     * Add the FRAME tag for the frame that lists all classes.
+     *
+     * @param contentTree the content tree to which the information will be added
      */
-    private void printAllClassesFrameTag() {
-        frame("src=\"" + "allclasses-frame.html" + "\""
-            + " name=\"packageFrame\""
-            + " title=\"" + configuration.getText("doclet.All_classes_and_interfaces")
-            + "\"");
+    private void addAllClassesFrameTag(Content contentTree) {
+        HtmlTree frame = HtmlTree.FRAME("allclasses-frame.html", "packageFrame",
+                configuration.getText("doclet.All_classes_and_interfaces"));
+        contentTree.addContent(frame);
     }
 
     /**
-     * Print the FRAME tag for the frame that describes the class in detail
+     * Add the FRAME tag for the frame that describes the class in detail.
+     *
+     * @param contentTree the content tree to which the information will be added
      */
-    private void printClassFrameTag() {
-        frame("src=\"" + configuration.topFile + "\""
-            + " name=\"classFrame\""
-            + " title=\""
-            + configuration.getText("doclet.Package_class_and_interface_descriptions")
-            + "\" scrolling=\"yes\"");
+    private void addClassFrameTag(Content contentTree) {
+        HtmlTree frame = HtmlTree.FRAME(configuration.topFile, "classFrame",
+                configuration.getText("doclet.Package_class_and_interface_descriptions"),
+                SCROLL_YES);
+        contentTree.addContent(frame);
     }
-
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/HelpWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/HelpWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,8 +25,10 @@
 
 package com.sun.tools.doclets.formats.html;
 
+import java.io.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
-import java.io.*;
+import com.sun.tools.doclets.internal.toolkit.*;
+import com.sun.tools.doclets.formats.html.markup.*;
 
 /**
  * Generate the Help File for the generated API documentation. The help file
@@ -72,159 +74,242 @@
      * Generate the help file contents.
      */
     protected void generateHelpFile() {
-        printHtmlHeader(configuration.getText("doclet.Window_Help_title"),
-            null, true);
-        printTop();
-        navLinks(true);  hr();
-
-        printHelpFileContents();
-
-        navLinks(false);
-        printBottom();
-        printBodyHtmlEnd();
+        String title = configuration.getText("doclet.Window_Help_title");
+        Content body = getBody(true, getWindowTitle(title));
+        addTop(body);
+        addNavLinks(true, body);
+        addHelpFileContents(body);
+        addNavLinks(false, body);
+        addBottom(body);
+        printHtmlDocument(null, true, body);
     }
 
     /**
-     * Print the help file contents from the resource file. While generating the
+     * Add the help file contents from the resource file to the content tree. While adding the
      * help file contents it also keeps track of user options. If "-notree"
-     * is used, then the "overview-tree.html" will not get generated and hence
-     * help information also will not get generated.
+     * is used, then the "overview-tree.html" will not get added and hence
+     * help information also will not get added.
+     *
+     * @param contentTree the content tree to which the help file contents will be added
      */
-    protected void printHelpFileContents() {
-        center(); h1(); printText("doclet.Help_line_1"); h1End(); centerEnd();
-        printText("doclet.Help_line_2");
+    protected void addHelpFileContents(Content contentTree) {
+        Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, false, HtmlStyle.title,
+                getResource("doclet.Help_line_1"));
+        Content div = HtmlTree.DIV(HtmlStyle.header, heading);
+        Content line2 = HtmlTree.P(HtmlStyle.subTitle,
+                getResource("doclet.Help_line_2"));
+        div.addContent(line2);
+        contentTree.addContent(div);
+        HtmlTree ul = new HtmlTree(HtmlTag.UL);
+        ul.addStyle(HtmlStyle.blockList);
         if (configuration.createoverview) {
-            h3(); printText("doclet.Overview"); h3End();
-            blockquote(); p();
-            printText("doclet.Help_line_3",
-                getHyperLink("overview-summary.html",
-                configuration.getText("doclet.Overview")));
-            blockquoteEnd();
+            Content overviewHeading = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
+                getResource("doclet.Overview"));
+            Content liOverview = HtmlTree.LI(HtmlStyle.blockList, overviewHeading);
+            Content line3 = getResource("doclet.Help_line_3",
+                    getHyperLinkString("overview-summary.html",
+                    configuration.getText("doclet.Overview")));
+            Content overviewPara = HtmlTree.P(line3);
+            liOverview.addContent(overviewPara);
+            ul.addContent(liOverview);
         }
-        h3(); printText("doclet.Package"); h3End();
-        blockquote(); p(); printText("doclet.Help_line_4");
-        ul();
-        li(); printText("doclet.Interfaces_Italic");
-        li(); printText("doclet.Classes");
-        li(); printText("doclet.Enums");
-        li(); printText("doclet.Exceptions");
-        li(); printText("doclet.Errors");
-        li(); printText("doclet.AnnotationTypes");
-        ulEnd();
-        blockquoteEnd();
-        h3(); printText("doclet.Help_line_5"); h3End();
-        blockquote(); p(); printText("doclet.Help_line_6");
-        ul();
-        li(); printText("doclet.Help_line_7");
-        li(); printText("doclet.Help_line_8");
-        li(); printText("doclet.Help_line_9");
-        li(); printText("doclet.Help_line_10");
-        li(); printText("doclet.Help_line_11");
-        li(); printText("doclet.Help_line_12");
-        p();
-        li(); printText("doclet.Nested_Class_Summary");
-        li(); printText("doclet.Field_Summary");
-        li(); printText("doclet.Constructor_Summary");
-        li(); printText("doclet.Method_Summary");
-        p();
-        li(); printText("doclet.Field_Detail");
-        li(); printText("doclet.Constructor_Detail");
-        li(); printText("doclet.Method_Detail");
-        ulEnd();
-        printText("doclet.Help_line_13");
-        blockquoteEnd();
-
+        Content packageHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
+                getResource("doclet.Package"));
+        Content liPackage = HtmlTree.LI(HtmlStyle.blockList, packageHead);
+        Content line4 = getResource("doclet.Help_line_4");
+        Content packagePara = HtmlTree.P(line4);
+        liPackage.addContent(packagePara);
+        HtmlTree ulPackage = new HtmlTree(HtmlTag.UL);
+        ulPackage.addContent(HtmlTree.LI(
+                getResource("doclet.Interfaces_Italic")));
+        ulPackage.addContent(HtmlTree.LI(
+                getResource("doclet.Classes")));
+        ulPackage.addContent(HtmlTree.LI(
+                getResource("doclet.Enums")));
+        ulPackage.addContent(HtmlTree.LI(
+                getResource("doclet.Exceptions")));
+        ulPackage.addContent(HtmlTree.LI(
+                getResource("doclet.Errors")));
+        ulPackage.addContent(HtmlTree.LI(
+                getResource("doclet.AnnotationTypes")));
+        liPackage.addContent(ulPackage);
+        ul.addContent(liPackage);
+        Content classHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
+                getResource("doclet.Help_line_5"));
+        Content liClass = HtmlTree.LI(HtmlStyle.blockList, classHead);
+        Content line6 = getResource("doclet.Help_line_6");
+        Content classPara = HtmlTree.P(line6);
+        liClass.addContent(classPara);
+        HtmlTree ul1 = new HtmlTree(HtmlTag.UL);
+        ul1.addContent(HtmlTree.LI(
+                getResource("doclet.Help_line_7")));
+        ul1.addContent(HtmlTree.LI(
+                getResource("doclet.Help_line_8")));
+        ul1.addContent(HtmlTree.LI(
+                getResource("doclet.Help_line_9")));
+        ul1.addContent(HtmlTree.LI(
+                getResource("doclet.Help_line_10")));
+        ul1.addContent(HtmlTree.LI(
+                getResource("doclet.Help_line_11")));
+        ul1.addContent(HtmlTree.LI(
+                getResource("doclet.Help_line_12")));
+        liClass.addContent(ul1);
+        HtmlTree ul2 = new HtmlTree(HtmlTag.UL);
+        ul2.addContent(HtmlTree.LI(
+                getResource("doclet.Nested_Class_Summary")));
+        ul2.addContent(HtmlTree.LI(
+                getResource("doclet.Field_Summary")));
+        ul2.addContent(HtmlTree.LI(
+                getResource("doclet.Constructor_Summary")));
+        ul2.addContent(HtmlTree.LI(
+                getResource("doclet.Method_Summary")));
+        liClass.addContent(ul2);
+        HtmlTree ul3 = new HtmlTree(HtmlTag.UL);
+        ul3.addContent(HtmlTree.LI(
+                getResource("doclet.Field_Detail")));
+        ul3.addContent(HtmlTree.LI(
+                getResource("doclet.Constructor_Detail")));
+        ul3.addContent(HtmlTree.LI(
+                getResource("doclet.Method_Detail")));
+        liClass.addContent(ul3);
+        Content line13 = getResource("doclet.Help_line_13");
+        Content para = HtmlTree.P(line13);
+        liClass.addContent(para);
+        ul.addContent(liClass);
         //Annotation Types
-        blockquoteEnd();
-        h3(); printText("doclet.AnnotationType"); h3End();
-        blockquote(); p(); printText("doclet.Help_annotation_type_line_1");
-        ul();
-        li(); printText("doclet.Help_annotation_type_line_2");
-        li(); printText("doclet.Help_annotation_type_line_3");
-        li(); printText("doclet.Annotation_Type_Required_Member_Summary");
-        li(); printText("doclet.Annotation_Type_Optional_Member_Summary");
-        li(); printText("doclet.Annotation_Type_Member_Detail");
-        ulEnd();
-        blockquoteEnd();
-
+        Content aHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
+                getResource("doclet.AnnotationType"));
+        Content liAnnotation = HtmlTree.LI(HtmlStyle.blockList, aHead);
+        Content aline1 = getResource("doclet.Help_annotation_type_line_1");
+        Content aPara = HtmlTree.P(aline1);
+        liAnnotation.addContent(aPara);
+        HtmlTree aul = new HtmlTree(HtmlTag.UL);
+        aul.addContent(HtmlTree.LI(
+                getResource("doclet.Help_annotation_type_line_2")));
+        aul.addContent(HtmlTree.LI(
+                getResource("doclet.Help_annotation_type_line_3")));
+        aul.addContent(HtmlTree.LI(
+                getResource("doclet.Annotation_Type_Required_Member_Summary")));
+        aul.addContent(HtmlTree.LI(
+                getResource("doclet.Annotation_Type_Optional_Member_Summary")));
+        aul.addContent(HtmlTree.LI(
+                getResource("doclet.Annotation_Type_Member_Detail")));
+        liAnnotation.addContent(aul);
+        ul.addContent(liAnnotation);
         //Enums
-        blockquoteEnd();
-        h3(); printText("doclet.Enum"); h3End();
-        blockquote(); p(); printText("doclet.Help_enum_line_1");
-        ul();
-        li(); printText("doclet.Help_enum_line_2");
-        li(); printText("doclet.Help_enum_line_3");
-        li(); printText("doclet.Enum_Constant_Summary");
-        li(); printText("doclet.Enum_Constant_Detail");
-        ulEnd();
-        blockquoteEnd();
-
+        Content enumHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
+                getResource("doclet.Enum"));
+        Content liEnum = HtmlTree.LI(HtmlStyle.blockList, enumHead);
+        Content eline1 = getResource("doclet.Help_enum_line_1");
+        Content enumPara = HtmlTree.P(eline1);
+        liEnum.addContent(enumPara);
+        HtmlTree eul = new HtmlTree(HtmlTag.UL);
+        eul.addContent(HtmlTree.LI(
+                getResource("doclet.Help_enum_line_2")));
+        eul.addContent(HtmlTree.LI(
+                getResource("doclet.Help_enum_line_3")));
+        eul.addContent(HtmlTree.LI(
+                getResource("doclet.Enum_Constant_Summary")));
+        eul.addContent(HtmlTree.LI(
+                getResource("doclet.Enum_Constant_Detail")));
+        liEnum.addContent(eul);
+        ul.addContent(liEnum);
         if (configuration.classuse) {
-            h3(); printText("doclet.Help_line_14"); h3End();
-            blockquote();
-            printText("doclet.Help_line_15");
-            blockquoteEnd();
+            Content useHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
+                    getResource("doclet.Help_line_14"));
+            Content liUse = HtmlTree.LI(HtmlStyle.blockList, useHead);
+            Content line15 = getResource("doclet.Help_line_15");
+            Content usePara = HtmlTree.P(line15);
+            liUse.addContent(usePara);
+            ul.addContent(liUse);
         }
         if (configuration.createtree) {
-            h3(); printText("doclet.Help_line_16"); h3End();
-            blockquote();
-            printText("doclet.Help_line_17_with_tree_link",
-                 getHyperLink("overview-tree.html",
-                 configuration.getText("doclet.Class_Hierarchy")));
-            ul();
-            li(); printText("doclet.Help_line_18");
-            li(); printText("doclet.Help_line_19");
-            ulEnd();
-            blockquoteEnd();
+            Content treeHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
+                    getResource("doclet.Help_line_16"));
+            Content liTree = HtmlTree.LI(HtmlStyle.blockList, treeHead);
+            Content line17 = getResource("doclet.Help_line_17_with_tree_link",
+                    getHyperLinkString("overview-tree.html",
+                    configuration.getText("doclet.Class_Hierarchy")));
+            Content treePara = HtmlTree.P(line17);
+            liTree.addContent(treePara);
+            HtmlTree tul = new HtmlTree(HtmlTag.UL);
+            tul.addContent(HtmlTree.LI(
+                    getResource("doclet.Help_line_18")));
+            tul.addContent(HtmlTree.LI(
+                    getResource("doclet.Help_line_19")));
+            liTree.addContent(tul);
+            ul.addContent(liTree);
         }
         if (!(configuration.nodeprecatedlist ||
                   configuration.nodeprecated)) {
-            h3(); printText("doclet.Deprecated_API"); h3End();
-            blockquote();
-            printText("doclet.Help_line_20_with_deprecated_api_link",
-                getHyperLink("deprecated-list.html",
-                configuration.getText("doclet.Deprecated_API")));
-            blockquoteEnd();
+            Content dHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
+                    getResource("doclet.Deprecated_API"));
+            Content liDeprecated = HtmlTree.LI(HtmlStyle.blockList, dHead);
+            Content line20 = getResource("doclet.Help_line_20_with_deprecated_api_link",
+                    getHyperLinkString("deprecated-list.html",
+                    configuration.getText("doclet.Deprecated_API")));
+            Content dPara = HtmlTree.P(line20);
+            liDeprecated.addContent(dPara);
+            ul.addContent(liDeprecated);
         }
         if (configuration.createindex) {
             String indexlink;
             if (configuration.splitindex) {
-                indexlink = getHyperLink("index-files/index-1.html",
-                    configuration.getText("doclet.Index"));
+                indexlink = getHyperLinkString("index-files/index-1.html",
+                        configuration.getText("doclet.Index"));
             } else {
-                indexlink = getHyperLink("index-all.html",
-                    configuration.getText("doclet.Index"));
+                indexlink = getHyperLinkString("index-all.html",
+                        configuration.getText("doclet.Index"));
             }
-            h3(); printText("doclet.Help_line_21"); h3End();
-            blockquote();
-            printText("doclet.Help_line_22", indexlink);
-            blockquoteEnd();
+            Content indexHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
+                    getResource("doclet.Help_line_21"));
+            Content liIndex = HtmlTree.LI(HtmlStyle.blockList, indexHead);
+            Content line22 = getResource("doclet.Help_line_22", indexlink);
+            Content indexPara = HtmlTree.P(line22);
+            liIndex.addContent(indexPara);
+            ul.addContent(liIndex);
         }
-        h3(); printText("doclet.Help_line_23"); h3End();
-        printText("doclet.Help_line_24");
-        h3(); printText("doclet.Help_line_25"); h3End();
-        printText("doclet.Help_line_26"); p();
-
-        h3(); printText("doclet.Serialized_Form"); h3End();
-        printText("doclet.Help_line_27"); p();
-
-        h3(); printText("doclet.Constants_Summary"); h3End();
-        printText("doclet.Help_line_28"); p();
-
-        font("-1"); em();
-        printText("doclet.Help_line_29");
-        emEnd(); fontEnd(); br();
-        hr();
+        Content prevHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
+                getResource("doclet.Help_line_23"));
+        Content liPrev = HtmlTree.LI(HtmlStyle.blockList, prevHead);
+        Content line24 = getResource("doclet.Help_line_24");
+        Content prevPara = HtmlTree.P(line24);
+        liPrev.addContent(prevPara);
+        ul.addContent(liPrev);
+        Content frameHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
+                getResource("doclet.Help_line_25"));
+        Content liFrame = HtmlTree.LI(HtmlStyle.blockList, frameHead);
+        Content line26 = getResource("doclet.Help_line_26");
+        Content framePara = HtmlTree.P(line26);
+        liFrame.addContent(framePara);
+        ul.addContent(liFrame);
+        Content sHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
+                getResource("doclet.Serialized_Form"));
+        Content liSerial = HtmlTree.LI(HtmlStyle.blockList, sHead);
+        Content line27 = getResource("doclet.Help_line_27");
+        Content serialPara = HtmlTree.P(line27);
+        liSerial.addContent(serialPara);
+        ul.addContent(liSerial);
+        Content constHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
+                getResource("doclet.Constants_Summary"));
+        Content liConst = HtmlTree.LI(HtmlStyle.blockList, constHead);
+        Content line28 = getResource("doclet.Help_line_28");
+        Content constPara = HtmlTree.P(line28);
+        liConst.addContent(constPara);
+        ul.addContent(liConst);
+        Content divContent = HtmlTree.DIV(HtmlStyle.contentContainer, ul);
+        Content line29 = HtmlTree.EM(getResource("doclet.Help_line_29"));
+        divContent.addContent(line29);
+        contentTree.addContent(divContent);
     }
 
     /**
-     * Highlight the word "Help" in the navigation bar as this is the help file.
+     * Get the help label.
+     *
+     * @return a content tree for the help label
      */
-    protected void navLinkHelp() {
-        navCellRevStart();
-        fontStyle("NavBarFont1Rev");
-        strongText("doclet.Help");
-        fontEnd();
-        navCellEnd();
+    protected Content getNavLinkHelp() {
+        Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, helpLabel);
+        return li;
     }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDoclet.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDoclet.java	Wed Dec 01 11:02:38 2010 -0800
@@ -144,8 +144,11 @@
             !configuration.nohelp) {
             HelpWriter.generate(configuration);
         }
+        // If a stylesheet file is not specified, copy the default stylesheet.
         if (configuration.stylesheetfile.length() == 0) {
-            StylesheetWriter.generate(configuration);
+            Util.copyFile(configuration, "stylesheet.css", Util.RESOURCESDIR,
+                    (configdestdir.isEmpty()) ?
+                        System.getProperty("user.dir") : configdestdir, false);
         }
     }
 
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -88,6 +88,11 @@
     public ConfigurationImpl configuration;
 
     /**
+     * To check whether annotation heading is printed or not.
+     */
+    protected boolean printedAnnotationHeading = false;
+
+    /**
      * Constructor to construct the HtmlStandardWriter object.
      *
      * @param filename File to be generated.
@@ -169,7 +174,7 @@
             // Append slash if next character is not a slash
             if (relativepathNoSlash.length() > 0 && previndex < htmlstr.length()
                     && htmlstr.charAt(previndex) != '/') {
-                buf.append(DirectoryManager.URL_FILE_SEPERATOR);
+                buf.append(DirectoryManager.URL_FILE_SEPARATOR);
             }
         }
         return buf.toString();
@@ -192,17 +197,47 @@
         println("  <!--");
         println("  if(window==top) {");
         println("    document.writeln('"
-            + getHyperLink(link, where, label, strong, "", "", target) + "');");
+            + getHyperLinkString(link, where, label, strong, "", "", target) + "');");
         println("  }");
         println("  //-->");
         scriptEnd();
         noScript();
-        println("  " + getHyperLink(link, where, label, strong, "", "", target));
+        println("  " + getHyperLinkString(link, where, label, strong, "", "", target));
         noScriptEnd();
         println(DocletConstants.NL);
     }
 
-    private void printMethodInfo(MethodDoc method) {
+    /**
+     * Get the script to show or hide the All classes link.
+     *
+     * @param id id of the element to show or hide
+     * @return a content tree for the script
+     */
+    public Content getAllClassesLinkScript(String id) {
+        HtmlTree script = new HtmlTree(HtmlTag.SCRIPT);
+        script.addAttr(HtmlAttr.TYPE, "text/javascript");
+        String scriptCode = "<!--\n" +
+                "  allClassesLink = document.getElementById(\"" + id + "\");\n" +
+                "  if(window==top) {\n" +
+                "    allClassesLink.style.display = \"block\";\n" +
+                "  }\n" +
+                "  else {\n" +
+                "    allClassesLink.style.display = \"none\";\n" +
+                "  }\n" +
+                "  //-->\n";
+        Content scriptContent = new RawHtml(scriptCode);
+        script.addContent(scriptContent);
+        Content div = HtmlTree.DIV(script);
+        return div;
+    }
+
+    /**
+     * Add method information.
+     *
+     * @param method the method to be documented
+     * @param dl the content tree to which the method information will be added
+     */
+    private void addMethodInfo(MethodDoc method, Content dl) {
         ClassDoc[] intfacs = method.containingClass().interfaces();
         MethodDoc overriddenMethod = method.overriddenMethod();
         // Check whether there is any implementation or overridden info to be
@@ -211,46 +246,38 @@
         if ((intfacs.length > 0 &&
                 new ImplementedMethods(method, this.configuration).build().length > 0) ||
                 overriddenMethod != null) {
-            printMemberDetailsListStartTag();
-            dd();
-            printTagsInfoHeader();
-            MethodWriterImpl.printImplementsInfo(this, method);
+            MethodWriterImpl.addImplementsInfo(this, method, dl);
             if (overriddenMethod != null) {
-                MethodWriterImpl.printOverridden(this,
-                    method.overriddenType(), overriddenMethod);
+                MethodWriterImpl.addOverridden(this,
+                        method.overriddenType(), overriddenMethod, dl);
             }
-            printTagsInfoFooter();
-            ddEnd();
         }
     }
 
-    protected void printTags(Doc doc) {
-        if(configuration.nocomment){
+    /**
+     * Adds the tags information.
+     *
+     * @param doc the doc for which the tags will be generated
+     * @param htmltree the documentation tree to which the tags will be added
+     */
+    protected void addTagsInfo(Doc doc, Content htmltree) {
+        if (configuration.nocomment) {
             return;
         }
+        Content dl = new HtmlTree(HtmlTag.DL);
         if (doc instanceof MethodDoc) {
-            printMethodInfo((MethodDoc) doc);
+            addMethodInfo((MethodDoc) doc, dl);
         }
         TagletOutputImpl output = new TagletOutputImpl("");
         TagletWriter.genTagOuput(configuration.tagletManager, doc,
             configuration.tagletManager.getCustomTags(doc),
                 getTagletWriterInstance(false), output);
         String outputString = output.toString().trim();
-        // For RootDoc, ClassDoc and PackageDoc, this section is not the
-        // definition description but the start of definition list.
         if (!outputString.isEmpty()) {
-            if (!(doc instanceof RootDoc || doc instanceof ClassDoc ||
-                    doc instanceof PackageDoc)) {
-                printMemberDetailsListStartTag();
-                dd();
-            }
-            printTagsInfoHeader();
-            print(outputString);
-            printTagsInfoFooter();
-            if (!(doc instanceof RootDoc || doc instanceof ClassDoc ||
-                    doc instanceof PackageDoc))
-                ddEnd();
+            Content resultString = new RawHtml(outputString);
+            dl.addContent(resultString);
         }
+        htmltree.addContent(dl);
     }
 
     /**
@@ -286,17 +313,16 @@
     }
 
     /**
-     * Print Package link, with target frame.
+     * Get Package link, with target frame.
      *
-     * @param pd The link will be to the "package-summary.html" page for this
-     * package.
-     * @param target Name of the target frame.
-     * @param label Tag for the link.
+     * @param pd The link will be to the "package-summary.html" page for this package
+     * @param target name of the target frame
+     * @param label tag for the link
+     * @return a content for the target package link
      */
-    public void printTargetPackageLink(PackageDoc pd, String target,
-        String label) {
-        print(getHyperLink(pathString(pd, "package-summary.html"), "", label,
-            false, "", "", target));
+    public Content getTargetPackageLink(PackageDoc pd, String target,
+            Content label) {
+        return getHyperLink(pathString(pd, "package-summary.html"), "", label, "", target);
     }
 
     /**
@@ -360,6 +386,64 @@
     }
 
     /**
+     * Generates the HTML document tree and prints it out.
+     *
+     * @param metakeywords Array of String keywords for META tag. Each element
+     *                     of the array is assigned to a separate META tag.
+     *                     Pass in null for no array
+     * @param includeScript true if printing windowtitle script
+     *                      false for files that appear in the left-hand frames
+     * @param body the body htmltree to be included in the document
+     */
+    public void printHtmlDocument(String[] metakeywords, boolean includeScript,
+            Content body) {
+        Content htmlDocType = DocType.Transitional();
+        Content htmlComment = new Comment(configuration.getText("doclet.New_Page"));
+        Content head = new HtmlTree(HtmlTag.HEAD);
+        if (!configuration.notimestamp) {
+            Content headComment = new Comment("Generated by javadoc (version " +
+                    ConfigurationImpl.BUILD_DATE + ") on " + today());
+            head.addContent(headComment);
+        }
+        if (configuration.charset.length() > 0) {
+            Content meta = HtmlTree.META("Content-Type", "text/html",
+                    configuration.charset);
+            head.addContent(meta);
+        }
+        head.addContent(getTitle());
+        if (!configuration.notimestamp) {
+            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+            Content meta = HtmlTree.META("date", dateFormat.format(new Date()));
+            head.addContent(meta);
+        }
+        if (metakeywords != null) {
+            for (int i=0; i < metakeywords.length; i++) {
+                Content meta = HtmlTree.META("keywords", metakeywords[i]);
+                head.addContent(meta);
+            }
+        }
+        head.addContent(getStyleSheetProperties());
+        Content htmlTree = HtmlTree.HTML(configuration.getLocale().getLanguage(),
+                head, body);
+        Content htmlDocument = new HtmlDocument(htmlDocType,
+                htmlComment, htmlTree);
+        print(htmlDocument.toString());
+    }
+
+    /**
+     * Get the window title.
+     *
+     * @param title the title string to construct the complete window title
+     * @return the window title string
+     */
+    public String getWindowTitle(String title) {
+        if (configuration.windowtitle.length() > 0) {
+            title += " (" + configuration.windowtitle  + ")";
+        }
+        return title;
+    }
+
+    /**
      * Print user specified header and the footer.
      *
      * @param header if true print the user provided header else print the
@@ -380,6 +464,28 @@
     }
 
     /**
+     * Get user specified header and the footer.
+     *
+     * @param header if true print the user provided header else print the
+     * user provided footer.
+     */
+    public Content getUserHeaderFooter(boolean header) {
+        String content;
+        if (header) {
+            content = replaceDocRootDir(configuration.header);
+        } else {
+            if (configuration.footer.length() != 0) {
+                content = replaceDocRootDir(configuration.footer);
+            } else {
+                content = replaceDocRootDir(configuration.header);
+            }
+        }
+        Content rawContent = new RawHtml(content);
+        Content em = HtmlTree.EM(rawContent);
+        return em;
+    }
+
+    /**
      * Print the user specified top.
      */
     public void printTop() {
@@ -388,6 +494,16 @@
     }
 
     /**
+     * Adds the user specified top.
+     *
+     * @param body the content tree to which user specified top will be added
+     */
+    public void addTop(Content body) {
+        Content top = new RawHtml(replaceDocRootDir(configuration.top));
+        body.addContent(top);
+    }
+
+    /**
      * Print the user specified bottom.
      */
     public void printBottom() {
@@ -396,6 +512,18 @@
     }
 
     /**
+     * Adds the user specified bottom.
+     *
+     * @param body the content tree to which user specified bottom will be added
+     */
+    public void addBottom(Content body) {
+        Content bottom = new RawHtml(replaceDocRootDir(configuration.bottom));
+        Content small = HtmlTree.SMALL(bottom);
+        Content p = HtmlTree.P(HtmlStyle.legalCopy, small);
+        body.addContent(p);
+    }
+
+    /**
      * Print the navigation bar for the Html page at the top and and the bottom.
      *
      * @param header If true print navigation bar at the top of the page else
@@ -408,13 +536,13 @@
                 println(DocletConstants.NL + "<!-- ========= START OF TOP NAVBAR ======= -->");
                 anchor("navbar_top");
                 println();
-                print(getHyperLink("", "skip-navbar_top", "", false, "",
+                print(getHyperLinkString("", "skip-navbar_top", "", false, "",
                     configuration.getText("doclet.Skip_navigation_links"), ""));
             } else {
                 println(DocletConstants.NL + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
                 anchor("navbar_bottom");
                 println();
-                print(getHyperLink("", "skip-navbar_bottom", "", false, "",
+                print(getHyperLinkString("", "skip-navbar_bottom", "", false, "",
                     configuration.getText("doclet.Skip_navigation_links"), ""));
             }
             table(0, "100%", 1, 0);
@@ -518,6 +646,97 @@
     }
 
     /**
+     * Adds the navigation bar for the Html page at the top and and the bottom.
+     *
+     * @param header If true print navigation bar at the top of the page else
+     * @param body the HtmlTree to which the nav links will be added
+     */
+    protected void addNavLinks(boolean header, Content body) {
+        if (!configuration.nonavbar) {
+            String allClassesId = "allclasses_";
+            HtmlTree navDiv = new HtmlTree(HtmlTag.DIV);
+            if (header) {
+                body.addContent(HtmlConstants.START_OF_TOP_NAVBAR);
+                navDiv.addStyle(HtmlStyle.topNav);
+                allClassesId += "navbar_top";
+                Content a = getMarkerAnchor("navbar_top");
+                navDiv.addContent(a);
+                Content skipLinkContent = getHyperLink("",
+                        "skip-navbar_top", HtmlTree.EMPTY, configuration.getText(
+                        "doclet.Skip_navigation_links"), "");
+                navDiv.addContent(skipLinkContent);
+            } else {
+                body.addContent(HtmlConstants.START_OF_BOTTOM_NAVBAR);
+                navDiv.addStyle(HtmlStyle.bottomNav);
+                allClassesId += "navbar_bottom";
+                Content a = getMarkerAnchor("navbar_bottom");
+                navDiv.addContent(a);
+                Content skipLinkContent = getHyperLink("",
+                        "skip-navbar_bottom", HtmlTree.EMPTY, configuration.getText(
+                        "doclet.Skip_navigation_links"), "");
+                navDiv.addContent(skipLinkContent);
+            }
+            if (header) {
+                navDiv.addContent(getMarkerAnchor("navbar_top_firstrow"));
+            } else {
+                navDiv.addContent(getMarkerAnchor("navbar_bottom_firstrow"));
+            }
+            HtmlTree navList = new HtmlTree(HtmlTag.UL);
+            navList.addStyle(HtmlStyle.navList);
+            navList.addAttr(HtmlAttr.TITLE, "Navigation");
+            if (configuration.createoverview) {
+                navList.addContent(getNavLinkContents());
+            }
+            if (configuration.packages.length == 1) {
+                navList.addContent(getNavLinkPackage(configuration.packages[0]));
+            } else if (configuration.packages.length > 1) {
+                navList.addContent(getNavLinkPackage());
+            }
+            navList.addContent(getNavLinkClass());
+            if(configuration.classuse) {
+                navList.addContent(getNavLinkClassUse());
+            }
+            if(configuration.createtree) {
+                navList.addContent(getNavLinkTree());
+            }
+            if(!(configuration.nodeprecated ||
+                     configuration.nodeprecatedlist)) {
+                navList.addContent(getNavLinkDeprecated());
+            }
+            if(configuration.createindex) {
+                navList.addContent(getNavLinkIndex());
+            }
+            if (!configuration.nohelp) {
+                navList.addContent(getNavLinkHelp());
+            }
+            navDiv.addContent(navList);
+            Content aboutDiv = HtmlTree.DIV(HtmlStyle.aboutLanguage, getUserHeaderFooter(header));
+            navDiv.addContent(aboutDiv);
+            body.addContent(navDiv);
+            Content ulNav = HtmlTree.UL(HtmlStyle.navList, getNavLinkPrevious());
+            ulNav.addContent(getNavLinkNext());
+            Content subDiv = HtmlTree.DIV(HtmlStyle.subNav, ulNav);
+            Content ulFrames = HtmlTree.UL(HtmlStyle.navList, getNavShowLists());
+            ulFrames.addContent(getNavHideLists(filename));
+            subDiv.addContent(ulFrames);
+            HtmlTree ulAllClasses = HtmlTree.UL(HtmlStyle.navList, getNavLinkClassIndex());
+            ulAllClasses.addAttr(HtmlAttr.ID, allClassesId.toString());
+            subDiv.addContent(ulAllClasses);
+            subDiv.addContent(getAllClassesLinkScript(allClassesId.toString()));
+            addSummaryDetailLinks(subDiv);
+            if (header) {
+                subDiv.addContent(getMarkerAnchor("skip-navbar_top"));
+                body.addContent(subDiv);
+                body.addContent(HtmlConstants.END_OF_TOP_NAVBAR);
+            } else {
+                subDiv.addContent(getMarkerAnchor("skip-navbar_bottom"));
+                body.addContent(subDiv);
+                body.addContent(HtmlConstants.END_OF_BOTTOM_NAVBAR);
+            }
+        }
+    }
+
+    /**
      * Print the word "NEXT" to indicate that no link is available.  Override
      * this method to customize next link.
      */
@@ -526,6 +745,16 @@
     }
 
     /**
+     * Get the word "NEXT" to indicate that no link is available.  Override
+     * this method to customize next link.
+     *
+     * @return a content tree for the link
+     */
+    protected Content getNavLinkNext() {
+        return getNavLinkNext(null);
+    }
+
+    /**
      * Print the word "PREV" to indicate that no link is available.  Override
      * this method to customize prev link.
      */
@@ -534,12 +763,28 @@
     }
 
     /**
+     * Get the word "PREV" to indicate that no link is available.  Override
+     * this method to customize prev link.
+     *
+     * @return a content tree for the link
+     */
+    protected Content getNavLinkPrevious() {
+        return getNavLinkPrevious(null);
+    }
+
+    /**
      * Do nothing. This is the default method.
      */
     protected void printSummaryDetailLinks() {
     }
 
     /**
+     * Do nothing. This is the default method.
+     */
+    protected void addSummaryDetailLinks(Content navDiv) {
+    }
+
+    /**
      * Print link to the "overview-summary.html" page.
      */
     protected void navLinkContents() {
@@ -550,6 +795,18 @@
     }
 
     /**
+     * Get link to the "overview-summary.html" page.
+     *
+     * @return a content tree for the link
+     */
+    protected Content getNavLinkContents() {
+        Content linkContent = getHyperLink(relativePath +
+                "overview-summary.html", "", overviewLabel, "", "");
+        Content li = HtmlTree.LI(linkContent);
+        return li;
+    }
+
+    /**
      * Description for a cell in the navigation bar.
      */
     protected void navCellStart() {
@@ -590,6 +847,19 @@
     }
 
     /**
+     * Get link to the "package-summary.html" page for the package passed.
+     *
+     * @param pkg Package to which link will be generated
+     * @return a content tree for the link
+     */
+    protected Content getNavLinkPackage(PackageDoc pkg) {
+        Content linkContent = getPackageLink(pkg,
+                packageLabel);
+        Content li = HtmlTree.LI(linkContent);
+        return li;
+    }
+
+    /**
      * Print the word "Package" in the navigation bar cell, to indicate that
      * link is not available here.
      */
@@ -602,6 +872,16 @@
     }
 
     /**
+     * Get the word "Package" , to indicate that link is not available here.
+     *
+     * @return a content tree for the link
+     */
+    protected Content getNavLinkPackage() {
+        Content li = HtmlTree.LI(packageLabel);
+        return li;
+    }
+
+    /**
      * Print the word "Use" in the navigation bar cell, to indicate that link
      * is not available.
      */
@@ -614,6 +894,16 @@
     }
 
     /**
+     * Get the word "Use", to indicate that link is not available.
+     *
+     * @return a content tree for the link
+     */
+    protected Content getNavLinkClassUse() {
+        Content li = HtmlTree.LI(useLabel);
+        return li;
+    }
+
+    /**
      * Print link for previous file.
      *
      * @param prev File name for the prev link.
@@ -628,6 +918,22 @@
     }
 
     /**
+     * Get link for previous file.
+     *
+     * @param prev File name for the prev link
+     * @return a content tree for the link
+     */
+    public Content getNavLinkPrevious(String prev) {
+        Content li;
+        if (prev != null) {
+            li = HtmlTree.LI(getHyperLink(prev, "", prevLabel, "", ""));
+        }
+        else
+            li = HtmlTree.LI(prevLabel);
+        return li;
+    }
+
+    /**
      * Print link for next file.  If next is null, just print the label
      * without linking it anywhere.
      *
@@ -643,16 +949,46 @@
     }
 
     /**
+     * Get link for next file.  If next is null, just print the label
+     * without linking it anywhere.
+     *
+     * @param next File name for the next link
+     * @return a content tree for the link
+     */
+    public Content getNavLinkNext(String next) {
+        Content li;
+        if (next != null) {
+            li = HtmlTree.LI(getHyperLink(next, "", nextLabel, "", ""));
+        }
+        else
+            li = HtmlTree.LI(nextLabel);
+        return li;
+    }
+
+    /**
      * Print "FRAMES" link, to switch to the frame version of the output.
      *
      * @param link File to be linked, "index.html".
      */
     protected void navShowLists(String link) {
-        print(getHyperLink(link + "?" + path + filename, "",
+        print(getHyperLinkString(link + "?" + path + filename, "",
             configuration.getText("doclet.FRAMES"), true, "", "", "_top"));
     }
 
     /**
+     * Get "FRAMES" link, to switch to the frame version of the output.
+     *
+     * @param link File to be linked, "index.html"
+     * @return a content tree for the link
+     */
+    protected Content getNavShowLists(String link) {
+        Content framesContent = getHyperLink(link + "?" + path +
+                filename, "", framesLabel, "", "_top");
+        Content li = HtmlTree.LI(framesContent);
+        return li;
+    }
+
+    /**
      * Print "FRAMES" link, to switch to the frame version of the output.
      */
     protected void navShowLists() {
@@ -660,16 +996,37 @@
     }
 
     /**
+     * Get "FRAMES" link, to switch to the frame version of the output.
+     *
+     * @return a content tree for the link
+     */
+    protected Content getNavShowLists() {
+        return getNavShowLists(relativePath + "index.html");
+    }
+
+    /**
      * Print "NO FRAMES" link, to switch to the non-frame version of the output.
      *
      * @param link File to be linked.
      */
     protected void navHideLists(String link) {
-        print(getHyperLink(link, "", configuration.getText("doclet.NO_FRAMES"),
+        print(getHyperLinkString(link, "", configuration.getText("doclet.NO_FRAMES"),
             true, "", "", "_top"));
     }
 
     /**
+     * Get "NO FRAMES" link, to switch to the non-frame version of the output.
+     *
+     * @param link File to be linked
+     * @return a content tree for the link
+     */
+    protected Content getNavHideLists(String link) {
+        Content noFramesContent = getHyperLink(link, "", noframesLabel, "", "_top");
+        Content li = HtmlTree.LI(noFramesContent);
+        return li;
+    }
+
+    /**
      * Print "Tree" link in the navigation bar. If there is only one package
      * specified on the command line, then the "Tree" link will be to the
      * only "package-tree.html" file otherwise it will be to the
@@ -689,10 +1046,39 @@
     }
 
     /**
-     * Print "Tree" link to the "overview-tree.html" file.
+     * Get "Tree" link in the navigation bar. If there is only one package
+     * specified on the command line, then the "Tree" link will be to the
+     * only "package-tree.html" file otherwise it will be to the
+     * "overview-tree.html" file.
+     *
+     * @return a content tree for the link
      */
-    protected void navLinkMainTree(String label) {
-        printHyperLink(relativePath + "overview-tree.html", label);
+    protected Content getNavLinkTree() {
+        Content treeLinkContent;
+        PackageDoc[] packages = configuration.root.specifiedPackages();
+        if (packages.length == 1 && configuration.root.specifiedClasses().length == 0) {
+            treeLinkContent = getHyperLink(pathString(packages[0],
+                    "package-tree.html"), "", treeLabel,
+                    "", "");
+        } else {
+            treeLinkContent = getHyperLink(relativePath + "overview-tree.html",
+                    "", treeLabel, "", "");
+        }
+        Content li = HtmlTree.LI(treeLinkContent);
+        return li;
+    }
+
+    /**
+     * Get the overview tree link for the main tree.
+     *
+     * @param label the label for the link
+     * @return a content tree for the link
+     */
+    protected Content getNavLinkMainTree(String label) {
+        Content mainTreeContent = getHyperLink(relativePath + "overview-tree.html",
+                new StringContent(label));
+        Content li = HtmlTree.LI(mainTreeContent);
+        return li;
     }
 
     /**
@@ -708,6 +1094,16 @@
     }
 
     /**
+     * Get the word "Class", to indicate that class link is not available.
+     *
+     * @return a content tree for the link
+     */
+    protected Content getNavLinkClass() {
+        Content li = HtmlTree.LI(classLabel);
+        return li;
+    }
+
+    /**
      * Print "Deprecated" API link in the navigation bar.
      */
     protected void navLinkDeprecated() {
@@ -718,6 +1114,18 @@
     }
 
     /**
+     * Get "Deprecated" API link in the navigation bar.
+     *
+     * @return a content tree for the link
+     */
+    protected Content getNavLinkDeprecated() {
+        Content linkContent = getHyperLink(relativePath +
+                "deprecated-list.html", "", deprecatedLabel, "", "");
+        Content li = HtmlTree.LI(linkContent);
+        return li;
+    }
+
+    /**
      * Print link for generated index. If the user has used "-splitindex"
      * command line option, then link to file "index-files/index-1.html" is
      * generated otherwise link to file "index-all.html" is generated.
@@ -727,6 +1135,21 @@
                 AllClassesFrameWriter.OUTPUT_FILE_NAME_NOFRAMES,
             "", "", configuration.getText("doclet.All_Classes"), true);
     }
+
+    /**
+     * Get link for generated index. If the user has used "-splitindex"
+     * command line option, then link to file "index-files/index-1.html" is
+     * generated otherwise link to file "index-all.html" is generated.
+     *
+     * @return a content tree for the link
+     */
+    protected Content getNavLinkClassIndex() {
+        Content allClassesContent = getHyperLink(relativePath +
+                AllClassesFrameWriter.OUTPUT_FILE_NAME_NOFRAMES, "",
+                allclassesLabel, "", "");
+        Content li = HtmlTree.LI(allClassesContent);
+        return li;
+    }
     /**
      * Print link for generated class index.
      */
@@ -743,6 +1166,20 @@
     }
 
     /**
+     * Get link for generated class index.
+     *
+     * @return a content tree for the link
+     */
+    protected Content getNavLinkIndex() {
+        Content linkContent = getHyperLink(relativePath +(configuration.splitindex?
+            DirectoryManager.getPath("index-files") + fileseparator: "") +
+            (configuration.splitindex?"index-1.html" : "index-all.html"), "",
+            indexLabel, "", "");
+        Content li = HtmlTree.LI(linkContent);
+        return li;
+    }
+
+    /**
      * Print help file link. If user has provided a help file, then generate a
      * link to the user given file, which is already copied to current or
      * destination directory.
@@ -764,6 +1201,29 @@
     }
 
     /**
+     * Get help file link. If user has provided a help file, then generate a
+     * link to the user given file, which is already copied to current or
+     * destination directory.
+     *
+     * @return a content tree for the link
+     */
+    protected Content getNavLinkHelp() {
+        String helpfilenm = configuration.helpfile;
+        if (helpfilenm.equals("")) {
+            helpfilenm = "help-doc.html";
+        } else {
+            int lastsep;
+            if ((lastsep = helpfilenm.lastIndexOf(File.separatorChar)) != -1) {
+                helpfilenm = helpfilenm.substring(lastsep + 1);
+            }
+        }
+        Content linkContent = getHyperLink(relativePath + helpfilenm, "",
+                helpLabel, "", "");
+        Content li = HtmlTree.LI(linkContent);
+        return li;
+    }
+
+    /**
      * Print the word "Detail" in the navigation bar. No link is available.
      */
     protected void navDetail() {
@@ -845,6 +1305,96 @@
     }
 
     /**
+     * Get summary table header.
+     *
+     * @param header the header for the table
+     * @param scope the scope of the headers
+     * @return a content tree for the header
+     */
+    public Content getSummaryTableHeader(String[] header, String scope) {
+        Content tr = new HtmlTree(HtmlTag.TR);
+        int size = header.length;
+        Content tableHeader;
+        if (size == 1) {
+            tableHeader = new StringContent(header[0]);
+            tr.addContent(HtmlTree.TH(HtmlStyle.colOne, scope, tableHeader));
+            return tr;
+        }
+        for (int i = 0; i < size; i++) {
+            tableHeader = new StringContent(header[i]);
+            if(i == 0)
+                tr.addContent(HtmlTree.TH(HtmlStyle.colFirst, scope, tableHeader));
+            else if(i == (size - 1))
+                tr.addContent(HtmlTree.TH(HtmlStyle.colLast, scope, tableHeader));
+            else
+                tr.addContent(HtmlTree.TH(scope, tableHeader));
+        }
+        return tr;
+    }
+
+    /**
+     * Get table caption.
+     *
+     * @param rawText the caption for the table which could be raw Html
+     * @return a content tree for the caption
+     */
+    public Content getTableCaption(String rawText) {
+        Content title = new RawHtml(rawText);
+        Content captionSpan = HtmlTree.SPAN(title);
+        Content space = getSpace();
+        Content tabSpan = HtmlTree.SPAN(HtmlStyle.tabEnd, space);
+        Content caption = HtmlTree.CAPTION(captionSpan);
+        caption.addContent(tabSpan);
+        return caption;
+    }
+
+    /**
+     * Get the marker anchor which will be added to the documentation tree.
+     *
+     * @param anchorName the anchor name attribute
+     * @return a content tree for the marker anchor
+     */
+    public Content getMarkerAnchor(String anchorName) {
+        return getMarkerAnchor(anchorName, null);
+    }
+
+    /**
+     * Get the marker anchor which will be added to the documentation tree.
+     *
+     * @param anchorName the anchor name attribute
+     * @param anchorContent the content that should be added to the anchor
+     * @return a content tree for the marker anchor
+     */
+    public Content getMarkerAnchor(String anchorName, Content anchorContent) {
+        if (anchorContent == null)
+            anchorContent = new Comment(" ");
+        Content markerAnchor = HtmlTree.A_NAME(anchorName, anchorContent);
+        return markerAnchor;
+    }
+
+    /**
+     * Returns a packagename content.
+     *
+     * @param packageDoc the package to check
+     * @return package name content
+     */
+    public Content getPackageName(PackageDoc packageDoc) {
+        return packageDoc == null || packageDoc.name().length() == 0 ?
+            defaultPackageLabel :
+            getPackageLabel(packageDoc.name());
+    }
+
+    /**
+     * Returns a package name label.
+     *
+     * @param parsedName the package name
+     * @return the package name content
+     */
+    public Content getPackageLabel(String packageName) {
+        return new StringContent(packageName);
+    }
+
+    /**
      * Prine table header information about color, column span and the font.
      *
      * @param color Background color.
@@ -1028,7 +1578,7 @@
      * @param isStrong true if the label should be strong.
      */
     public void printPackageLink(PackageDoc pkg, String label, boolean isStrong) {
-        print(getPackageLink(pkg, label, isStrong));
+        print(getPackageLinkString(pkg, label, isStrong));
     }
 
     /**
@@ -1041,7 +1591,7 @@
      */
     public void printPackageLink(PackageDoc pkg, String label, boolean isStrong,
             String style) {
-        print(getPackageLink(pkg, label, isStrong, style));
+        print(getPackageLinkString(pkg, label, isStrong, style));
     }
 
     /**
@@ -1052,9 +1602,9 @@
      * @param isStrong true if the label should be strong.
      * @return the link to the given package.
      */
-    public String getPackageLink(PackageDoc pkg, String label,
+    public String getPackageLinkString(PackageDoc pkg, String label,
                                  boolean isStrong) {
-        return getPackageLink(pkg, label, isStrong, "");
+        return getPackageLinkString(pkg, label, isStrong, "");
     }
 
     /**
@@ -1066,7 +1616,7 @@
      * @param style  the font of the package link label.
      * @return the link to the given package.
      */
-    public String getPackageLink(PackageDoc pkg, String label, boolean isStrong,
+    public String getPackageLinkString(PackageDoc pkg, String label, boolean isStrong,
             String style) {
         boolean included = pkg != null && pkg.isIncluded();
         if (! included) {
@@ -1079,12 +1629,43 @@
             }
         }
         if (included || pkg == null) {
-            return getHyperLink(pathString(pkg, "package-summary.html"),
+            return getHyperLinkString(pathString(pkg, "package-summary.html"),
                                 "", label, isStrong, style);
         } else {
             String crossPkgLink = getCrossPackageLink(Util.getPackageName(pkg));
             if (crossPkgLink != null) {
-                return getHyperLink(crossPkgLink, "", label, isStrong, style);
+                return getHyperLinkString(crossPkgLink, "", label, isStrong, style);
+            } else {
+                return label;
+            }
+        }
+    }
+
+    /**
+     * Return the link to the given package.
+     *
+     * @param pkg the package to link to.
+     * @param label the label for the link.
+     * @return a content tree for the package link.
+     */
+    public Content getPackageLink(PackageDoc pkg, Content label) {
+        boolean included = pkg != null && pkg.isIncluded();
+        if (! included) {
+            PackageDoc[] packages = configuration.packages;
+            for (int i = 0; i < packages.length; i++) {
+                if (packages[i].equals(pkg)) {
+                    included = true;
+                    break;
+                }
+            }
+        }
+        if (included || pkg == null) {
+            return getHyperLink(pathString(pkg, "package-summary.html"),
+                                "", label);
+        } else {
+            String crossPkgLink = getCrossPackageLink(Util.getPackageName(pkg));
+            if (crossPkgLink != null) {
+                return getHyperLink(crossPkgLink, "", label);
             } else {
                 return label;
             }
@@ -1112,6 +1693,29 @@
     }
 
     /**
+     * Add the link to the content tree.
+     *
+     * @param doc program element doc for which the link will be added
+     * @param label label for the link
+     * @param htmltree the content tree to which the link will be added
+     */
+    public void addSrcLink(ProgramElementDoc doc, Content label, Content htmltree) {
+        if (doc == null) {
+            return;
+        }
+        ClassDoc cd = doc.containingClass();
+        if (cd == null) {
+            //d must be a class doc since in has no containing class.
+            cd = (ClassDoc) doc;
+        }
+        String href = relativePath + DocletConstants.SOURCE_OUTPUT_DIR_NAME
+                + DirectoryManager.getDirectoryPath(cd.containingPackage())
+                + cd.name() + ".html#" + SourceToHTMLConverter.getAnchorName(doc);
+        Content linkContent = getHyperLink(href, "", label, "", "");
+        htmltree.addContent(linkContent);
+    }
+
+    /**
      * Return the link to the given class.
      *
      * @param linkInfo the information about the link.
@@ -1175,7 +1779,7 @@
                 //the -link option.  There are ways to determine if an external package
                 //exists, but no way to determine if the external class exists.  We just
                 //have to assume that it does.
-                return getHyperLink(
+                return getHyperLinkString(
                     configuration.extern.getExternalLink(packageName, relativePath,
                                 className + ".html?is-external=true"),
                     refMemName == null ? "" : refMemName,
@@ -1200,17 +1804,27 @@
             "package-summary.html?is-external=true");
     }
 
-    public void printQualifiedClassLink(int context, ClassDoc cd) {
-        printLink(new LinkInfoImpl(context, cd,
-            configuration.getClassName(cd), ""));
+    /**
+     * Get the class link.
+     *
+     * @param context the id of the context where the link will be added
+     * @param cd the class doc to link to
+     * @return a content tree for the link
+     */
+    public Content getQualifiedClassLink(int context, ClassDoc cd) {
+        return new RawHtml(getLink(new LinkInfoImpl(context, cd,
+                configuration.getClassName(cd), "")));
     }
 
     /**
-     * Print Class link, with only class name as the link and prefixing
-     * plain package name.
+     * Add the class link.
+     *
+     * @param context the id of the context where the link will be added
+     * @param cd the class doc to link to
+     * @param contentTree the content tree to which the link will be added
      */
-    public void printPreQualifiedClassLink(int context, ClassDoc cd) {
-        print(getPreQualifiedClassLink(context, cd, false));
+    public void addPreQualifiedClassLink(int context, ClassDoc cd, Content contentTree) {
+        addPreQualifiedClassLink(context, cd, false, contentTree);
     }
 
     /**
@@ -1233,13 +1847,36 @@
         return classlink;
     }
 
+    /**
+     * Add the class link with the package portion of the label in
+     * plain text. If the qualifier is excluded, it will not be included in the
+     * link label.
+     *
+     * @param context the id of the context where the link will be added
+     * @param cd the class to link to
+     * @param isStrong true if the link should be strong
+     * @param contentTree the content tree to which the link with be added
+     */
+    public void addPreQualifiedClassLink(int context,
+            ClassDoc cd, boolean isStrong, Content contentTree) {
+        PackageDoc pd = cd.containingPackage();
+        if(pd != null && ! configuration.shouldExcludeQualifier(pd.name())) {
+            contentTree.addContent(getPkgName(cd));
+        }
+        contentTree.addContent(new RawHtml(getLink(new LinkInfoImpl(
+                context, cd, cd.name(), isStrong))));
+    }
 
     /**
-     * Print Class link, with only class name as the strong link and prefixing
+     * Add the class link, with only class name as the strong link and prefixing
      * plain package name.
+     *
+     * @param context the id of the context where the link will be added
+     * @param cd the class to link to
+     * @param contentTree the content tree to which the link with be added
      */
-    public void printPreQualifiedStrongClassLink(int context, ClassDoc cd) {
-        print(getPreQualifiedClassLink(context, cd, true));
+    public void addPreQualifiedStrongClassLink(int context, ClassDoc cd, Content contentTree) {
+        addPreQualifiedClassLink(context, cd, true, contentTree);
     }
 
     public void printText(String key) {
@@ -1267,16 +1904,15 @@
     }
 
     /**
-     * Print the link for the given member.
+     * Get the link for the given member.
      *
-     * @param context the id of the context where the link will be printed.
-     * @param doc the member being linked to.
-     * @param label the label for the link.
-     * @param strong true if the link should be strong.
+     * @param context the id of the context where the link will be added
+     * @param doc the member being linked to
+     * @param label the label for the link
+     * @return a content tree for the doc link
      */
-    public void printDocLink(int context, MemberDoc doc, String label,
-            boolean strong) {
-        print(getDocLink(context, doc, label, strong));
+    public Content getDocLink(int context, MemberDoc doc, String label) {
+        return getDocLink(context, doc.containingClass(), doc, label);
     }
 
     /**
@@ -1338,6 +1974,34 @@
         }
     }
 
+    /**
+     * Return the link for the given member.
+     *
+     * @param context the id of the context where the link will be added
+     * @param classDoc the classDoc that we should link to.  This is not
+     *                 necessarily equal to doc.containingClass().  We may be
+     *                 inheriting comments
+     * @param doc the member being linked to
+     * @param label the label for the link
+     * @return the link for the given member
+     */
+    public Content getDocLink(int context, ClassDoc classDoc, MemberDoc doc,
+        String label) {
+        if (! (doc.isIncluded() ||
+            Util.isLinkable(classDoc, configuration()))) {
+            return new StringContent(label);
+        } else if (doc instanceof ExecutableMemberDoc) {
+            ExecutableMemberDoc emd = (ExecutableMemberDoc)doc;
+            return new RawHtml(getLink(new LinkInfoImpl(context, classDoc,
+                getAnchor(emd), label, false)));
+        } else if (doc instanceof MemberDoc) {
+            return new RawHtml(getLink(new LinkInfoImpl(context, classDoc,
+                doc.name(), label, false)));
+        } else {
+            return new StringContent(label);
+        }
+    }
+
     public void anchor(ExecutableMemberDoc emd) {
         anchor(getAnchor(emd));
     }
@@ -1392,14 +2056,14 @@
                 //@see is referencing an included package
                 String packageName = isplaintext ? refPackage.name() :
                     getCode() + refPackage.name() + getCodeEnd();
-                result.append(getPackageLink(refPackage,
+                result.append(getPackageLinkString(refPackage,
                     label.length() == 0 ? packageName : label, false));
             } else {
                 //@see is not referencing an included class or package.  Check for cross links.
                 String classCrossLink, packageCrossLink = getCrossPackageLink(refClassName);
                 if (packageCrossLink != null) {
                     //Package cross link found
-                    result.append(getHyperLink(packageCrossLink, "",
+                    result.append(getHyperLinkString(packageCrossLink, "",
                         (label.length() == 0)? text : label, false));
                 } else if ((classCrossLink = getCrossClassLink(refClassName,
                         refMemName, label, false, "", ! isplaintext)) != null) {
@@ -1468,18 +2132,61 @@
         printCommentTags(doc, tag.inlineTags(), false, false);
     }
 
+    /**
+     * Add the inline comment.
+     *
+     * @param doc the doc for which the inline comment will be added
+     * @param tag the inline tag to be added
+     * @param htmltree the content tree to which the comment will be added
+     */
+    public void addInlineComment(Doc doc, Tag tag, Content htmltree) {
+        addCommentTags(doc, tag.inlineTags(), false, false, htmltree);
+    }
+
     public void printInlineDeprecatedComment(Doc doc, Tag tag) {
         printCommentTags(doc, tag.inlineTags(), true, false);
     }
 
+    /**
+     * Add the inline deprecated comment.
+     *
+     * @param doc the doc for which the inline deprecated comment will be added
+     * @param tag the inline tag to be added
+     * @param htmltree the content tree to which the comment will be added
+     */
+    public void addInlineDeprecatedComment(Doc doc, Tag tag, Content htmltree) {
+        addCommentTags(doc, tag.inlineTags(), true, false, htmltree);
+    }
+
     public void printSummaryComment(Doc doc) {
         printSummaryComment(doc, doc.firstSentenceTags());
     }
 
+    /**
+     * Adds the summary content.
+     *
+     * @param doc the doc for which the summary will be generated
+     * @param htmltree the documentation tree to which the summary will be added
+     */
+    public void addSummaryComment(Doc doc, Content htmltree) {
+        addSummaryComment(doc, doc.firstSentenceTags(), htmltree);
+    }
+
     public void printSummaryComment(Doc doc, Tag[] firstSentenceTags) {
         printCommentTags(doc, firstSentenceTags, false, true);
     }
 
+    /**
+     * Adds the summary content.
+     *
+     * @param doc the doc for which the summary will be generated
+     * @param firstSentenceTags the first sentence tags for the doc
+     * @param htmltree the documentation tree to which the summary will be added
+     */
+    public void addSummaryComment(Doc doc, Tag[] firstSentenceTags, Content htmltree) {
+        addCommentTags(doc, firstSentenceTags, false, true, htmltree);
+    }
+
     public void printSummaryDeprecatedComment(Doc doc) {
         printCommentTags(doc, doc.firstSentenceTags(), true, true);
     }
@@ -1488,11 +2195,25 @@
         printCommentTags(doc, tag.firstSentenceTags(), true, true);
     }
 
+    public void addSummaryDeprecatedComment(Doc doc, Tag tag, Content htmltree) {
+        addCommentTags(doc, tag.firstSentenceTags(), true, true, htmltree);
+    }
+
     public void printInlineComment(Doc doc) {
         printCommentTags(doc, doc.inlineTags(), false, false);
         p();
     }
 
+    /**
+     * Adds the inline comment.
+     *
+     * @param doc the doc for which the inline comments will be generated
+     * @param htmltree the documentation tree to which the inline comments will be added
+     */
+    public void addInlineComment(Doc doc, Content htmltree) {
+        addCommentTags(doc, doc.inlineTags(), false, false, htmltree);
+    }
+
     public void printInlineDeprecatedComment(Doc doc) {
         printCommentTags(doc, doc.inlineTags(), true, false);
     }
@@ -1515,6 +2236,36 @@
     }
 
     /**
+     * Adds the comment tags.
+     *
+     * @param doc the doc for which the comment tags will be generated
+     * @param tags the first sentence tags for the doc
+     * @param depr true if it is deprecated
+     * @param first true if the first sentenge tags should be added
+     * @param htmltree the documentation tree to which the comment tags will be added
+     */
+    private void addCommentTags(Doc doc, Tag[] tags, boolean depr,
+            boolean first, Content htmltree) {
+        if(configuration.nocomment){
+            return;
+        }
+        Content div;
+        Content result = new RawHtml(commentTagsToString(null, doc, tags, first));
+        if (depr) {
+            Content italic = HtmlTree.I(result);
+            div = HtmlTree.DIV(HtmlStyle.block, italic);
+            htmltree.addContent(div);
+        }
+        else {
+            div = HtmlTree.DIV(HtmlStyle.block, result);
+            htmltree.addContent(div);
+        }
+        if (tags.length == 0) {
+            htmltree.addContent(getSpace());
+        }
+    }
+
+    /**
      * Converts inline tags and text to text strings, expanding the
      * inline tags along the way.  Called wherever text can contain
      * an inline tag, such as in comments or in free-form text arguments
@@ -1624,8 +2375,8 @@
             return text;
         }
 
-        if (! redirectPathFromRoot.endsWith(DirectoryManager.URL_FILE_SEPERATOR)) {
-            redirectPathFromRoot += DirectoryManager.URL_FILE_SEPERATOR;
+        if (! redirectPathFromRoot.endsWith(DirectoryManager.URL_FILE_SEPARATOR)) {
+            redirectPathFromRoot += DirectoryManager.URL_FILE_SEPARATOR;
         }
 
         //Redirect all relative links.
@@ -1751,6 +2502,27 @@
     }
 
     /**
+     * Returns a link to the stylesheet file.
+     *
+     * @return an HtmlTree for the lINK tag which provides the stylesheet location
+     */
+    public HtmlTree getStyleSheetProperties() {
+        String filename = configuration.stylesheetfile;
+        if (filename.length() > 0) {
+            File stylefile = new File(filename);
+            String parent = stylefile.getParent();
+            filename = (parent == null)?
+                filename:
+                filename.substring(parent.length() + 1);
+        } else {
+            filename = "stylesheet.css";
+        }
+        filename = relativePath + filename;
+        HtmlTree link = HtmlTree.LINK("stylesheet", "text/css", filename, "Style");
+        return link;
+    }
+
+    /**
      * According to the Java Language Specifications, all the outer classes
      * and static nested classes are core classes.
      */
@@ -1768,6 +2540,17 @@
     }
 
     /**
+     * Adds the annotatation types for the given packageDoc.
+     *
+     * @param packageDoc the package to write annotations for.
+     * @param htmltree the documentation tree to which the annotation info will be
+     *        added
+     */
+    public void addAnnotationInfo(PackageDoc packageDoc, Content htmltree) {
+        addAnnotationInfo(packageDoc, packageDoc.annotations(), htmltree);
+    }
+
+    /**
      * Write the annotatation types for the given doc.
      *
      * @param doc the doc to write annotations for.
@@ -1777,6 +2560,16 @@
     }
 
     /**
+     * Adds the annotatation types for the given doc.
+     *
+     * @param packageDoc the package to write annotations for
+     * @param htmltree the content tree to which the annotation types will be added
+     */
+    public void addAnnotationInfo(ProgramElementDoc doc, Content htmltree) {
+        addAnnotationInfo(doc, doc.annotations(), htmltree);
+    }
+
+    /**
      * Write the annotatation types for the given doc and parameter.
      *
      * @param indent the number of spaced to indent the parameters.
@@ -1788,6 +2581,19 @@
     }
 
     /**
+     * Add the annotatation types for the given doc and parameter.
+     *
+     * @param indent the number of spaces to indent the parameters.
+     * @param doc the doc to write annotations for.
+     * @param param the parameter to write annotations for.
+     * @param tree the content tree to which the annotation types will be added
+     */
+    public boolean addAnnotationInfo(int indent, Doc doc, Parameter param,
+            Content tree) {
+        return addAnnotationInfo(indent, doc, param.annotations(), false, tree);
+    }
+
+    /**
      * Write the annotatation types for the given doc.
      *
      * @param doc the doc to write annotations for.
@@ -1798,6 +2604,19 @@
     }
 
     /**
+     * Adds the annotatation types for the given doc.
+     *
+     * @param doc the doc to write annotations for.
+     * @param descList the array of {@link AnnotationDesc}.
+     * @param htmltree the documentation tree to which the annotation info will be
+     *        added
+     */
+    private void addAnnotationInfo(Doc doc, AnnotationDesc[] descList,
+            Content htmltree) {
+        addAnnotationInfo(0, doc, descList, true, htmltree);
+    }
+
+    /**
      * Write the annotatation types for the given doc.
      *
      * @param indent the number of extra spaces to indent the annotations.
@@ -1818,6 +2637,29 @@
     }
 
     /**
+     * Adds the annotatation types for the given doc.
+     *
+     * @param indent the number of extra spaces to indent the annotations.
+     * @param doc the doc to write annotations for.
+     * @param descList the array of {@link AnnotationDesc}.
+     * @param htmltree the documentation tree to which the annotation info will be
+     *        added
+     */
+    private boolean addAnnotationInfo(int indent, Doc doc,
+            AnnotationDesc[] descList, boolean lineBreak, Content htmltree) {
+        List<String> annotations = getAnnotations(indent, descList, lineBreak);
+        if (annotations.size() == 0) {
+            return false;
+        }
+        Content annotationContent;
+        for (Iterator<String> iter = annotations.iterator(); iter.hasNext();) {
+            annotationContent = new RawHtml(iter.next());
+            htmltree.addContent(annotationContent);
+        }
+        return true;
+    }
+
+   /**
      * Return the string representations of the annotation types for
      * the given doc.
      *
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlSerialFieldWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlSerialFieldWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -31,6 +31,7 @@
 import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.tools.doclets.internal.toolkit.taglets.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
+import com.sun.tools.doclets.formats.html.markup.*;
 
 /**
  * Generate serialized form for serializable fields.
@@ -46,8 +47,6 @@
 
     private boolean printedOverallAnchor = false;
 
-    private boolean printedFirstMember = false;
-
     public HtmlSerialFieldWriter(SubWriterHolderWriter writer,
                                     ClassDoc classdoc) {
         super(writer, classdoc);
@@ -69,109 +68,143 @@
         }
     }
 
-    public void writeHeader(String heading) {
-        if (! printedOverallAnchor) {
-            writer.anchor("serializedForm");
-            printedOverallAnchor = true;
-            writer.printTableHeadingBackground(heading);
-            writer.println();
-            if (heading.equals(
-                   configuration().getText("doclet.Serialized_Form_class"))) {
-                assert !writer.getMemberDetailsListPrinted();
-            }
-        } else {
-            writer.printTableHeadingBackground(heading);
-            writer.println();
-        }
+    /**
+     * Return the header for serializable fields section.
+     *
+     * @return a content tree for the header
+     */
+    public Content getSerializableFieldsHeader() {
+        HtmlTree ul = new HtmlTree(HtmlTag.UL);
+        ul.addStyle(HtmlStyle.blockList);
+        return ul;
     }
 
-    public void writeMemberHeader(ClassDoc fieldType, String fieldTypeStr,
-            String fieldDimensions, String fieldName) {
-        if (printedFirstMember) {
-            writer.printMemberHeader();
-        }
-        printedFirstMember = true;
-        writer.h3();
-        writer.print(fieldName);
-        writer.h3End();
-        writer.pre();
-        if (fieldType == null) {
-            writer.print(fieldTypeStr);
-        } else {
-            writer.printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_SERIAL_MEMBER,
-                fieldType));
-        }
-        print(fieldDimensions + ' ');
-        strong(fieldName);
-        writer.preEnd();
-        assert !writer.getMemberDetailsListPrinted();
+    /**
+     * Return the header for serializable fields content section.
+     *
+     * @param isLastContent true if the cotent being documented is the last content.
+     * @return a content tree for the header
+     */
+    public Content getFieldsContentHeader(boolean isLastContent) {
+        HtmlTree li = new HtmlTree(HtmlTag.LI);
+        if (isLastContent)
+            li.addStyle(HtmlStyle.blockListLast);
+        else
+            li.addStyle(HtmlStyle.blockList);
+        return li;
     }
 
     /**
-     * Write the deprecated information for this member.
+     * Add serializable fields.
      *
-     * @param field the field to document.
+     * @param heading the heading for the section
+     * @param serializableFieldsTree the tree to be added to the serializable fileds
+     *        content tree
+     * @return a content tree for the serializable fields content
      */
-    public void writeMemberDeprecatedInfo(FieldDoc field) {
-        printDeprecated(field);
+    public Content getSerializableFields(String heading, Content serializableFieldsTree) {
+        HtmlTree li = new HtmlTree(HtmlTag.LI);
+        li.addStyle(HtmlStyle.blockList);
+        if (serializableFieldsTree.isValid()) {
+            if (!printedOverallAnchor) {
+                li.addContent(writer.getMarkerAnchor("serializedForm"));
+                printedOverallAnchor = true;
+            }
+            Content headingContent = new StringContent(heading);
+            Content serialHeading = HtmlTree.HEADING(HtmlConstants.SERIALIZED_MEMBER_HEADING,
+                    headingContent);
+            li.addContent(serialHeading);
+            li.addContent(serializableFieldsTree);
+        }
+        return li;
     }
 
     /**
-     * Write the description text for this member.
+     * Add the member header.
+     *
+     * @param fieldsType the class document to be listed
+     * @param fieldTypeStr the string for the filed type to be documented
+     * @param fieldDimensions the dimensions of the field string to be added
+     * @param firldName name of the field to be added
+     * @param contentTree the content tree to which the member header will be added
+     */
+    public void addMemberHeader(ClassDoc fieldType, String fieldTypeStr,
+            String fieldDimensions, String fieldName, Content contentTree) {
+        Content nameContent = new RawHtml(fieldName);
+        Content heading = HtmlTree.HEADING(HtmlConstants.MEMBER_HEADING, nameContent);
+        contentTree.addContent(heading);
+        Content pre = new HtmlTree(HtmlTag.PRE);
+        if (fieldType == null) {
+            pre.addContent(fieldTypeStr);
+        } else {
+            Content fieldContent = new RawHtml(writer.getLink(new LinkInfoImpl(
+                    LinkInfoImpl.CONTEXT_SERIAL_MEMBER, fieldType)));
+            pre.addContent(fieldContent);
+        }
+        pre.addContent(fieldDimensions + " ");
+        pre.addContent(fieldName);
+        contentTree.addContent(pre);
+    }
+
+    /**
+     * Add the deprecated information for this member.
      *
      * @param field the field to document.
+     * @param contentTree the tree to which the deprecated info will be added
      */
-    public void writeMemberDescription(FieldDoc field) {
+    public void addMemberDeprecatedInfo(FieldDoc field, Content contentTree) {
+        addDeprecatedInfo(field, contentTree);
+    }
+
+    /**
+     * Add the description text for this member.
+     *
+     * @param field the field to document.
+     * @param contentTree the tree to which the deprecated info will be added
+     */
+    public void addMemberDescription(FieldDoc field, Content contentTree) {
         if (field.inlineTags().length > 0) {
-            writer.printMemberDetailsListStartTag();
-            writer.dd();
-            writer.printInlineComment(field);
-            writer.ddEnd();
+            writer.addInlineComment(field, contentTree);
         }
         Tag[] tags = field.tags("serial");
         if (tags.length > 0) {
-            writer.printMemberDetailsListStartTag();
-            writer.dd();
-            writer.printInlineComment(field, tags[0]);
-            writer.ddEnd();
+            writer.addInlineComment(field, tags[0], contentTree);
         }
     }
 
     /**
-     * Write the description text for this member represented by the tag.
+     * Add the description text for this member represented by the tag.
      *
-     * @param serialFieldTag the field to document (represented by tag).
+     * @param serialFieldTag the field to document (represented by tag)
+     * @param contentTree the tree to which the deprecated info will be added
      */
-    public void writeMemberDescription(SerialFieldTag serialFieldTag) {
+    public void addMemberDescription(SerialFieldTag serialFieldTag, Content contentTree) {
         String serialFieldTagDesc = serialFieldTag.description().trim();
         if (!serialFieldTagDesc.isEmpty()) {
-            writer.dl();
-            writer.dd();
-            writer.print(serialFieldTagDesc);
-            writer.ddEnd();
-            writer.dlEnd();
+            Content serialFieldContent = new RawHtml(serialFieldTagDesc);
+            Content div = HtmlTree.DIV(HtmlStyle.block, serialFieldContent);
+            contentTree.addContent(div);
         }
     }
 
     /**
-     * Write the tag information for this member.
+     * Add the tag information for this member.
      *
      * @param field the field to document.
+     * @param contentTree the tree to which the member tags info will be added
      */
-    public void writeMemberTags(FieldDoc field) {
+    public void addMemberTags(FieldDoc field, Content contentTree) {
         TagletOutputImpl output = new TagletOutputImpl("");
         TagletWriter.genTagOuput(configuration().tagletManager, field,
-            configuration().tagletManager.getCustomTags(field),
+                configuration().tagletManager.getCustomTags(field),
                 writer.getTagletWriterInstance(false), output);
         String outputString = output.toString().trim();
+        Content dlTags = new HtmlTree(HtmlTag.DL);
         if (!outputString.isEmpty()) {
-            writer.printMemberDetailsListStartTag();
-            writer.dd();
-            writer.dl();
-            print(outputString);
-            writer.dlEnd();
-            writer.ddEnd();
+            Content tagContent = new RawHtml(outputString);
+            dlTags.addContent(tagContent);
         }
+        contentTree.addContent(dlTags);
     }
 
     /**
@@ -192,24 +225,4 @@
             return true;
         return false;
     }
-
-    public void writeMemberFooter() {
-        printMemberFooter();
-    }
-
-    /**
-     * Write the footer information. If the serilization overview section was
-     * printed, check for definition list and close list tag.
-     *
-     * @param heading the heading that was written.
-     */
-    public void writeFooter(String heading) {
-        if (printedOverallAnchor) {
-            if (heading.equals(
-                   configuration().getText("doclet.Serialized_Form_class"))) {
-                writer.printMemberDetailsListEndTag();
-                assert !writer.getMemberDetailsListPrinted();
-            }
-        }
-    }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlSerialMethodWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlSerialMethodWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -28,57 +28,119 @@
 import com.sun.javadoc.*;
 import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.tools.doclets.internal.toolkit.taglets.*;
+import com.sun.tools.doclets.formats.html.markup.*;
 
 /**
  * Generate serialized form for Serializable/Externalizable methods.
  * Documentation denoted by the <code>serialData</code> tag is processed.
  *
  * @author Joe Fialli
+ * @author Bhavesh Patel (Modified)
  */
 public class HtmlSerialMethodWriter extends MethodWriterImpl implements
         SerializedFormWriter.SerialMethodWriter{
 
-    private boolean printedFirstMember = false;
-
     public HtmlSerialMethodWriter(SubWriterHolderWriter writer,
             ClassDoc classdoc) {
         super(writer, classdoc);
     }
 
-    public void writeHeader(String heading) {
-        writer.anchor("serialized_methods");
-        writer.printTableHeadingBackground(heading);
-        writer.p();
+    /**
+     * Return the header for serializable methods section.
+     *
+     * @return a content tree for the header
+     */
+    public Content getSerializableMethodsHeader() {
+        HtmlTree ul = new HtmlTree(HtmlTag.UL);
+        ul.addStyle(HtmlStyle.blockList);
+        return ul;
     }
 
-    public void writeNoCustomizationMsg(String msg) {
-        writer.print(msg);
-        writer.p();
+    /**
+     * Return the header for serializable methods content section.
+     *
+     * @param isLastContent true if the cotent being documented is the last content.
+     * @return a content tree for the header
+     */
+    public Content getMethodsContentHeader(boolean isLastContent) {
+        HtmlTree li = new HtmlTree(HtmlTag.LI);
+        if (isLastContent)
+            li.addStyle(HtmlStyle.blockListLast);
+        else
+            li.addStyle(HtmlStyle.blockList);
+        return li;
+    }
+
+    /**
+     * Add serializable methods.
+     *
+     * @param heading the heading for the section
+     * @param serializableMethodContent the tree to be added to the serializable methods
+     *        content tree
+     * @return a content tree for the serializable methods content
+     */
+    public Content getSerializableMethods(String heading, Content serializableMethodContent) {
+        Content li = HtmlTree.LI(HtmlStyle.blockList, writer.getMarkerAnchor(
+                "serialized_methods"));
+        Content headingContent = new StringContent(heading);
+        Content serialHeading = HtmlTree.HEADING(HtmlConstants.SERIALIZED_MEMBER_HEADING,
+                headingContent);
+        li.addContent(serialHeading);
+        li.addContent(serializableMethodContent);
+        return li;
     }
 
-    public void writeMemberHeader(MethodDoc member) {
-        if (printedFirstMember) {
-            writer.printMemberHeader();
-        }
-        printedFirstMember = true;
-        writer.anchor(member);
-        printHead(member);
-        writeSignature(member);
+    /**
+     * Return the no customization message.
+     *
+     * @param msg the message to be displayed
+     * @return no customization message content
+     */
+    public Content getNoCustomizationMsg(String msg) {
+        Content noCustomizationMsg = new StringContent(msg);
+        return noCustomizationMsg;
+    }
+
+    /**
+     * Add the member header.
+     *
+     * @param member the method document to be listed
+     * @param methodsContentTree the content tree to which the member header will be added
+     */
+    public void addMemberHeader(MethodDoc member, Content methodsContentTree) {
+        methodsContentTree.addContent(writer.getMarkerAnchor(
+                writer.getAnchor(member)));
+        methodsContentTree.addContent(getHead(member));
+        methodsContentTree.addContent(getSignature(member));
     }
 
-    public void writeMemberFooter() {
-        printMemberFooter();
+    /**
+     * Add the deprecated information for this member.
+     *
+     * @param member the method to document.
+     * @param methodsContentTree the tree to which the deprecated info will be added
+     */
+    public void addDeprecatedMemberInfo(MethodDoc member, Content methodsContentTree) {
+        addDeprecatedInfo(member, methodsContentTree);
     }
 
-    public void writeDeprecatedMemberInfo(MethodDoc member) {
-        printDeprecated(member);
+    /**
+     * Add the description text for this member.
+     *
+     * @param member the method to document.
+     * @param methodsContentTree the tree to which the deprecated info will be added
+     */
+    public void addMemberDescription(MethodDoc member, Content methodsContentTree) {
+        addComment(member, methodsContentTree);
     }
 
-    public void writeMemberDescription(MethodDoc member) {
-        printComment(member);
-    }
-
-    public void writeMemberTags(MethodDoc member) {
+    /**
+     * Add the tag information for this member.
+     *
+     * @param member the method to document.
+     * @param methodsContentTree the tree to which the member tags info will be added
+     */
+    public void addMemberTags(MethodDoc member, Content methodsContentTree) {
         TagletOutputImpl output = new TagletOutputImpl("");
         TagletManager tagletManager =
             ConfigurationImpl.getInstance().tagletManager;
@@ -86,14 +148,12 @@
             tagletManager.getSerializedFormTags(),
             writer.getTagletWriterInstance(false), output);
         String outputString = output.toString().trim();
+        Content dlTags = new HtmlTree(HtmlTag.DL);
         if (!outputString.isEmpty()) {
-            writer.printMemberDetailsListStartTag();
-            writer.dd();
-            writer.dl();
-            print(outputString);
-            writer.dlEnd();
-            writer.ddEnd();
+            Content tagContent = new RawHtml(outputString);
+            dlTags.addContent(tagContent);
         }
+        methodsContentTree.addContent(dlTags);
         MethodDoc method = member;
         if (method.name().compareTo("writeExternal") == 0
                 && method.tags("serialData").length == 0) {
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/LinkFactoryImpl.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/LinkFactoryImpl.java	Wed Dec 01 11:02:38 2010 -0800
@@ -79,7 +79,7 @@
                 String filename = pathString(classLinkInfo);
                 if (linkInfo.linkToSelf ||
                                 !(linkInfo.classDoc.name() + ".html").equals(m_writer.filename)) {
-                        linkOutput.append(m_writer.getHyperLink(filename,
+                        linkOutput.append(m_writer.getHyperLinkString(filename,
                             classLinkInfo.where, label.toString(),
                             classLinkInfo.isStrong, classLinkInfo.styleName,
                             title, classLinkInfo.target));
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/MethodWriterImpl.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/MethodWriterImpl.java	Wed Dec 01 11:02:38 2010 -0800
@@ -28,9 +28,9 @@
 import java.io.*;
 
 import com.sun.javadoc.*;
+import com.sun.tools.doclets.formats.html.markup.*;
 import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
-import com.sun.tools.doclets.internal.toolkit.taglets.*;
 
 /**
  * Writes method documentation in HTML format.
@@ -43,8 +43,6 @@
 public class MethodWriterImpl extends AbstractExecutableMemberWriter
         implements MethodWriter, MemberSummaryWriter {
 
-    private boolean printedSummaryHeader = false;
-
     /**
      * Construct a new MethodWriterImpl.
      *
@@ -65,184 +63,127 @@
     }
 
     /**
-     * Write the methods summary header for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
+     * {@inheritDoc}
      */
-    public void writeMemberSummaryHeader(ClassDoc classDoc) {
-        printedSummaryHeader = true;
-        writer.println();
-        writer.println("<!-- ========== METHOD SUMMARY =========== -->");
-        writer.println();
-        writer.printSummaryHeader(this, classDoc);
+    public Content getMemberSummaryHeader(ClassDoc classDoc,
+            Content memberSummaryTree) {
+        memberSummaryTree.addContent(HtmlConstants.START_OF_METHOD_SUMMARY);
+        Content memberTree = writer.getMemberTreeHeader();
+        writer.addSummaryHeader(this, classDoc, memberTree);
+        return memberTree;
     }
 
     /**
-     * Write the methods summary footer for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
+     * {@inheritDoc}
      */
-    public void writeMemberSummaryFooter(ClassDoc classDoc) {
-        writer.printSummaryFooter(this, classDoc);
-    }
-
-    /**
-     * Write the inherited methods summary header for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
-     */
-    public void writeInheritedMemberSummaryHeader(ClassDoc classDoc) {
-        if(! printedSummaryHeader){
-            //We don't want inherited summary to not be under heading.
-            writeMemberSummaryHeader(classDoc);
-            writeMemberSummaryFooter(classDoc);
-            printedSummaryHeader = true;
-        }
-        writer.printInheritedSummaryHeader(this, classDoc);
+    public Content getMethodDetailsTreeHeader(ClassDoc classDoc,
+            Content memberDetailsTree) {
+        memberDetailsTree.addContent(HtmlConstants.START_OF_METHOD_DETAILS);
+        Content methodDetailsTree = writer.getMemberTreeHeader();
+        methodDetailsTree.addContent(writer.getMarkerAnchor("method_detail"));
+        Content heading = HtmlTree.HEADING(HtmlConstants.DETAILS_HEADING,
+                writer.methodDetailsLabel);
+        methodDetailsTree.addContent(heading);
+        return methodDetailsTree;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeInheritedMemberSummary(ClassDoc classDoc,
-        ProgramElementDoc method, boolean isFirst, boolean isLast) {
-        writer.printInheritedSummaryMember(this, classDoc, method, isFirst);
-    }
-
-    /**
-     * Write the inherited methods summary footer for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
-     */
-    public void writeInheritedMemberSummaryFooter(ClassDoc classDoc) {
-        writer.printInheritedSummaryFooter(this, classDoc);        ;
-    }
-
-    /**
-     * Write the header for the method documentation.
-     *
-     * @param classDoc the class that the methods belong to.
-     */
-    public void writeHeader(ClassDoc classDoc, String header) {
-        writer.println();
-        writer.println("<!-- ============ METHOD DETAIL ========== -->");
-        writer.println();
-        writer.anchor("method_detail");
-        writer.printTableHeadingBackground(header);
-    }
-
-    /**
-     * Write the method header for the given method.
-     *
-     * @param method the method being documented.
-     * @param isFirst the flag to indicate whether or not the method is the
-     *        first to be documented.
-     */
-    public void writeMethodHeader(MethodDoc method, boolean isFirst) {
-        if (! isFirst) {
-            writer.printMemberHeader();
-        }
-        writer.println();
+    public Content getMethodDocTreeHeader(MethodDoc method,
+            Content methodDetailsTree) {
         String erasureAnchor;
         if ((erasureAnchor = getErasureAnchor(method)) != null) {
-            writer.anchor(erasureAnchor);
+            methodDetailsTree.addContent(writer.getMarkerAnchor((erasureAnchor)));
         }
-        writer.anchor(method);
-        writer.h3();
-        writer.print(method.name());
-        writer.h3End();
+        methodDetailsTree.addContent(
+                writer.getMarkerAnchor(writer.getAnchor(method)));
+        Content methodDocTree = writer.getMemberTreeHeader();
+        Content heading = new HtmlTree(HtmlConstants.MEMBER_HEADING);
+        heading.addContent(method.name());
+        methodDocTree.addContent(heading);
+        return methodDocTree;
     }
 
     /**
-     * Write the signature for the given method.
+     * Get the signature for the given method.
      *
      * @param method the method being documented.
+     * @return a content object for the signature
      */
-    public void writeSignature(MethodDoc method) {
+    public Content getSignature(MethodDoc method) {
         writer.displayLength = 0;
-        writer.pre();
-        writer.writeAnnotationInfo(method);
-        printModifiers(method);
-        writeTypeParameters(method);
-        printReturnType(method);
+        Content pre = new HtmlTree(HtmlTag.PRE);
+        writer.addAnnotationInfo(method, pre);
+        addModifiers(method, pre);
+        addTypeParameters(method, pre);
+        addReturnType(method, pre);
         if (configuration().linksource) {
-            writer.printSrcLink(method, method.name());
+            Content methodName = new StringContent(method.name());
+            writer.addSrcLink(method, methodName, pre);
         } else {
-            strong(method.name());
+            addName(method.name(), pre);
         }
-        writeParameters(method);
-        writeExceptions(method);
-        writer.preEnd();
-        assert !writer.getMemberDetailsListPrinted();
+        addParameters(method, pre);
+        addExceptions(method, pre);
+        return pre;
     }
 
     /**
-     * Write the deprecated output for the given method.
-     *
-     * @param method the method being documented.
+     * {@inheritDoc}
      */
-    public void writeDeprecated(MethodDoc method) {
-        printDeprecated(method);
+    public void addDeprecated(MethodDoc method, Content methodDocTree) {
+        addDeprecatedInfo(method, methodDocTree);
     }
 
     /**
-     * Write the comments for the given method.
-     *
-     * @param method the method being documented.
+     * {@inheritDoc}
      */
-    public void writeComments(Type holder, MethodDoc method) {
+    public void addComments(Type holder, MethodDoc method, Content methodDocTree) {
         ClassDoc holderClassDoc = holder.asClassDoc();
         if (method.inlineTags().length > 0) {
-            writer.printMemberDetailsListStartTag();
             if (holder.asClassDoc().equals(classdoc) ||
-                (! (holderClassDoc.isPublic() ||
+                    (! (holderClassDoc.isPublic() ||
                     Util.isLinkable(holderClassDoc, configuration())))) {
-                writer.dd();
-                writer.printInlineComment(method);
-                writer.ddEnd();
+                writer.addInlineComment(method, methodDocTree);
             } else {
-                String classlink = writer.codeText(
-                    writer.getDocLink(LinkInfoImpl.CONTEXT_METHOD_DOC_COPY,
+                Content link = new RawHtml(
+                        writer.getDocLink(LinkInfoImpl.CONTEXT_METHOD_DOC_COPY,
                         holder.asClassDoc(), method,
                         holder.asClassDoc().isIncluded() ?
                             holder.typeName() : holder.qualifiedTypeName(),
-                        false));
-                writer.dd();
-                writer.strongText(holder.asClassDoc().isClass()?
-                        "doclet.Description_From_Class":
-                        "doclet.Description_From_Interface",
-                    classlink);
-                writer.ddEnd();
-                writer.dd();
-                writer.printInlineComment(method);
-                writer.ddEnd();
+                            false));
+                Content codelLink = HtmlTree.CODE(link);
+                Content strong = HtmlTree.STRONG(holder.asClassDoc().isClass()?
+                    writer.descfrmClassLabel : writer.descfrmInterfaceLabel);
+                strong.addContent(writer.getSpace());
+                strong.addContent(codelLink);
+                methodDocTree.addContent(HtmlTree.DIV(HtmlStyle.block, strong));
+                writer.addInlineComment(method, methodDocTree);
             }
         }
     }
 
     /**
-     * Write the tag output for the given method.
-     *
-     * @param method the method being documented.
+     * {@inheritDoc}
      */
-    public void writeTags(MethodDoc method) {
-        writer.printTags(method);
+    public void addTags(MethodDoc method, Content methodDocTree) {
+        writer.addTagsInfo(method, methodDocTree);
     }
 
     /**
-     * Write the method footer.
+     * {@inheritDoc}
      */
-    public void writeMethodFooter() {
-        printMemberFooter();
+    public Content getMethodDetails(Content methodDetailsTree) {
+        return getMemberTree(methodDetailsTree);
     }
 
     /**
-     * Write the footer for the method documentation.
-     *
-     * @param classDoc the class that the methods belong to.
+     * {@inheritDoc}
      */
-    public void writeFooter(ClassDoc classDoc) {
-        //No footer to write for method documentation
+    public Content getMethodDoc(Content methodDocTree,
+            boolean isLastContent) {
+        return getMemberTree(methodDocTree, isLastContent);
     }
 
     /**
@@ -256,53 +197,89 @@
         return VisibleMemberMap.METHODS;
     }
 
-    public void printSummaryLabel() {
-        writer.printText("doclet.Method_Summary");
+    /**
+     * {@inheritDoc}
+     */
+    public void addSummaryLabel(Content memberTree) {
+        Content label = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING,
+                writer.getResource("doclet.Method_Summary"));
+        memberTree.addContent(label);
     }
 
-    public void printTableSummary() {
-        writer.tableIndexSummary(configuration().getText("doclet.Member_Table_Summary",
+    /**
+     * {@inheritDoc}
+     */
+    public String getTableSummary() {
+        return configuration().getText("doclet.Member_Table_Summary",
                 configuration().getText("doclet.Method_Summary"),
-                configuration().getText("doclet.methods")));
+                configuration().getText("doclet.methods"));
     }
 
-    public void printSummaryTableHeader(ProgramElementDoc member) {
+    /**
+     * {@inheritDoc}
+     */
+    public String getCaption() {
+        return configuration().getText("doclet.Methods");
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String[] getSummaryTableHeader(ProgramElementDoc member) {
         String[] header = new String[] {
             writer.getModifierTypeHeader(),
             configuration().getText("doclet.0_and_1",
                     configuration().getText("doclet.Method"),
                     configuration().getText("doclet.Description"))
         };
-        writer.summaryTableHeader(header, "col");
+        return header;
     }
 
-    public void printSummaryAnchor(ClassDoc cd) {
-        writer.anchor("method_summary");
+    /**
+     * {@inheritDoc}
+     */
+    public void addSummaryAnchor(ClassDoc cd, Content memberTree) {
+        memberTree.addContent(writer.getMarkerAnchor("method_summary"));
     }
 
-    public void printInheritedSummaryAnchor(ClassDoc cd) {
-        writer.anchor("methods_inherited_from_class_" +
-            ConfigurationImpl.getInstance().getClassName(cd));
+    /**
+     * {@inheritDoc}
+     */
+    public void addInheritedSummaryAnchor(ClassDoc cd, Content inheritedTree) {
+        inheritedTree.addContent(writer.getMarkerAnchor(
+                "methods_inherited_from_class_" +
+                configuration().getClassName(cd)));
     }
 
-    public void printInheritedSummaryLabel(ClassDoc cd) {
-        String classlink = writer.getPreQualifiedClassLink(
-            LinkInfoImpl.CONTEXT_MEMBER, cd, false);
-        writer.strong();
-        String key = cd.isClass()?
-            "doclet.Methods_Inherited_From_Class" :
-            "doclet.Methods_Inherited_From_Interface";
-        writer.printText(key, classlink);
-        writer.strongEnd();
+    /**
+     * {@inheritDoc}
+     */
+    public void addInheritedSummaryLabel(ClassDoc cd, Content inheritedTree) {
+        Content classLink = new RawHtml(writer.getPreQualifiedClassLink(
+                LinkInfoImpl.CONTEXT_MEMBER, cd, false));
+        Content label = new StringContent(cd.isClass() ?
+            configuration().getText("doclet.Methods_Inherited_From_Class") :
+            configuration().getText("doclet.Methods_Inherited_From_Interface"));
+        Content labelHeading = HtmlTree.HEADING(HtmlConstants.INHERITED_SUMMARY_HEADING,
+                label);
+        labelHeading.addContent(writer.getSpace());
+        labelHeading.addContent(classLink);
+        inheritedTree.addContent(labelHeading);
     }
 
-    protected void printSummaryType(ProgramElementDoc member) {
+    /**
+     * {@inheritDoc}
+     */
+    protected void addSummaryType(ProgramElementDoc member, Content tdSummaryType) {
         MethodDoc meth = (MethodDoc)member;
-        printModifierAndType(meth, meth.returnType());
+        addModifierAndType(meth, meth.returnType(), tdSummaryType);
     }
 
-    protected static void printOverridden(HtmlDocletWriter writer,
-            Type overriddenType, MethodDoc method) {
+    /**
+     * {@inheritDoc}
+     */
+    protected static void addOverridden(HtmlDocletWriter writer,
+            Type overriddenType, MethodDoc method, Content dl) {
         if(writer.configuration.nocomment){
             return;
         }
@@ -317,31 +294,33 @@
             //is not visible so don't document this.
             return;
         }
-        String label = "doclet.Overrides";
+        Content label = writer.overridesLabel;
         int context = LinkInfoImpl.CONTEXT_METHOD_OVERRIDES;
 
         if (method != null) {
             if(overriddenType.asClassDoc().isAbstract() && method.isAbstract()){
                 //Abstract method is implemented from abstract class,
                 //not overridden
-                label = "doclet.Specified_By";
+                label = writer.specifiedByLabel;
                 context = LinkInfoImpl.CONTEXT_METHOD_SPECIFIED_BY;
             }
-            String overriddenTypeLink = writer.codeText(
-                writer.getLink(new LinkInfoImpl(context, overriddenType)));
+            Content dt = HtmlTree.DT(HtmlTree.STRONG(label));
+            dl.addContent(dt);
+            Content overriddenTypeLink = new RawHtml(
+                    writer.getLink(new LinkInfoImpl(context, overriddenType)));
+            Content codeOverridenTypeLink = HtmlTree.CODE(overriddenTypeLink);
             String name = method.name();
-            writer.dt();
-            writer.strongText(label);
-            writer.dtEnd();
-            writer.dd();
-            String methLink = writer.codeText(
-                writer.getLink(
+            Content methlink = new RawHtml(writer.getLink(
                     new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER,
-                        overriddenType.asClassDoc(),
-                        writer.getAnchor(method), name, false)
-                ));
-            writer.printText("doclet.in_class", methLink, overriddenTypeLink);
-            writer.ddEnd();
+                    overriddenType.asClassDoc(),
+                    writer.getAnchor(method), name, false)));
+            Content codeMethLink = HtmlTree.CODE(methlink);
+            Content dd = HtmlTree.DD(codeMethLink);
+            dd.addContent(writer.getSpace());
+            dd.addContent(writer.getResource("doclet.in_class"));
+            dd.addContent(writer.getSpace());
+            dd.addContent(codeOverridenTypeLink);
+            dl.addContent(dd);
         }
     }
 
@@ -363,61 +342,78 @@
         }
     }
 
-    protected static void printImplementsInfo(HtmlDocletWriter writer,
-            MethodDoc method) {
+    /**
+     * {@inheritDoc}
+     */
+    protected static void addImplementsInfo(HtmlDocletWriter writer,
+            MethodDoc method, Content dl) {
         if(writer.configuration.nocomment){
             return;
         }
         ImplementedMethods implementedMethodsFinder =
-            new ImplementedMethods(method, writer.configuration);
+                new ImplementedMethods(method, writer.configuration);
         MethodDoc[] implementedMethods = implementedMethodsFinder.build();
         for (int i = 0; i < implementedMethods.length; i++) {
             MethodDoc implementedMeth = implementedMethods[i];
             Type intfac = implementedMethodsFinder.getMethodHolder(implementedMeth);
-            String methlink = "";
-            String intfaclink = writer.codeText(
-                writer.getLink(new LinkInfoImpl(
+            Content intfaclink = new RawHtml(writer.getLink(new LinkInfoImpl(
                     LinkInfoImpl.CONTEXT_METHOD_SPECIFIED_BY, intfac)));
-            writer.dt();
-            writer.strongText("doclet.Specified_By");
-            writer.dtEnd();
-            writer.dd();
-            methlink = writer.codeText(writer.getDocLink(
-                LinkInfoImpl.CONTEXT_MEMBER, implementedMeth,
-                implementedMeth.name(), false));
-            writer.printText("doclet.in_interface", methlink, intfaclink);
-            writer.ddEnd();
-        }
-
-    }
-
-    protected void printReturnType(MethodDoc method) {
-        Type type = method.returnType();
-        if (type != null) {
-            writer.printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_RETURN_TYPE,
-                type));
-            print(' ');
+            Content codeIntfacLink = HtmlTree.CODE(intfaclink);
+            Content dt = HtmlTree.DT(HtmlTree.STRONG(writer.specifiedByLabel));
+            dl.addContent(dt);
+            Content methlink = new RawHtml(writer.getDocLink(
+                    LinkInfoImpl.CONTEXT_MEMBER, implementedMeth,
+                    implementedMeth.name(), false));
+            Content codeMethLink = HtmlTree.CODE(methlink);
+            Content dd = HtmlTree.DD(codeMethLink);
+            dd.addContent(writer.getSpace());
+            dd.addContent(writer.getResource("doclet.in_interface"));
+            dd.addContent(writer.getSpace());
+            dd.addContent(codeIntfacLink);
+            dl.addContent(dd);
         }
     }
 
-    protected void printNavSummaryLink(ClassDoc cd, boolean link) {
-        if (link) {
-            writer.printHyperLink("", (cd == null)?
-                "method_summary":
-                "methods_inherited_from_class_" +
-                ConfigurationImpl.getInstance().getClassName(cd),
-                ConfigurationImpl.getInstance().getText("doclet.navMethod"));
-        } else {
-            writer.printText("doclet.navMethod");
+    /**
+     * Add the return type.
+     *
+     * @param method the method being documented.
+     * @param htmltree the content tree to which the return type will be added
+     */
+    protected void addReturnType(MethodDoc method, Content htmltree) {
+        Type type = method.returnType();
+        if (type != null) {
+            Content linkContent = new RawHtml(writer.getLink(
+                    new LinkInfoImpl(LinkInfoImpl.CONTEXT_RETURN_TYPE, type)));
+            htmltree.addContent(linkContent);
+            htmltree.addContent(writer.getSpace());
         }
     }
 
-    protected void printNavDetailLink(boolean link) {
+    /**
+     * {@inheritDoc}
+     */
+    protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
         if (link) {
-            writer.printHyperLink("", "method_detail",
-                ConfigurationImpl.getInstance().getText("doclet.navMethod"));
+            return writer.getHyperLink("", (cd == null)?
+                "method_summary":
+                "methods_inherited_from_class_" +
+                configuration().getClassName(cd),
+                writer.getResource("doclet.navMethod"));
         } else {
-            writer.printText("doclet.navMethod");
+            return writer.getResource("doclet.navMethod");
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void addNavDetailLink(boolean link, Content liNav) {
+        if (link) {
+            liNav.addContent(writer.getHyperLink("", "method_detail",
+                    writer.getResource("doclet.navMethod")));
+        } else {
+            liNav.addContent(writer.getResource("doclet.navMethod"));
         }
     }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/NestedClassWriterImpl.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/NestedClassWriterImpl.java	Wed Dec 01 11:02:38 2010 -0800
@@ -26,8 +26,10 @@
 package com.sun.tools.doclets.formats.html;
 
 import java.io.*;
+import java.util.*;
 
 import com.sun.javadoc.*;
+import com.sun.tools.doclets.formats.html.markup.*;
 import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
 
@@ -42,8 +44,6 @@
 public class NestedClassWriterImpl extends AbstractMemberWriter
     implements MemberSummaryWriter {
 
-    private boolean printedSummaryHeader = false;
-
     public NestedClassWriterImpl(SubWriterHolderWriter writer,
             ClassDoc classdoc) {
         super(writer, classdoc);
@@ -54,90 +54,17 @@
     }
 
     /**
-     * Write the classes summary header for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
-     */
-    public void writeMemberSummaryHeader(ClassDoc classDoc) {
-        printedSummaryHeader = true;
-        writer.println("<!-- ======== NESTED CLASS SUMMARY ======== -->");
-        writer.println();
-        writer.printSummaryHeader(this, classDoc);
-    }
-
-    /**
-     * Write the classes summary footer for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
-     */
-    public void writeMemberSummaryFooter(ClassDoc classDoc) {
-        writer.printSummaryFooter(this, classDoc);
-    }
-
-    /**
-     * Write the inherited classes summary header for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
-     */
-    public void writeInheritedMemberSummaryHeader(ClassDoc classDoc) {
-        if(! printedSummaryHeader){
-            //We don't want inherited summary to not be under heading.
-            writeMemberSummaryHeader(classDoc);
-            writeMemberSummaryFooter(classDoc);
-            printedSummaryHeader = true;
-        }
-        writer.printInheritedSummaryHeader(this, classDoc);
-    }
-
-    /**
      * {@inheritDoc}
      */
-    public void writeInheritedMemberSummary(ClassDoc classDoc,
-            ProgramElementDoc nestedClass, boolean isFirst, boolean isLast) {
-        writer.printInheritedSummaryMember(this, classDoc, nestedClass, isFirst);
-    }
-
-    /**
-     * Write the inherited classes summary footer for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
-     */
-    public void writeInheritedMemberSummaryFooter(ClassDoc classDoc) {
-        writer.printInheritedSummaryFooter(this, classDoc);
-        writer.println();
+    public Content getMemberSummaryHeader(ClassDoc classDoc,
+            Content memberSummaryTree) {
+        memberSummaryTree.addContent(HtmlConstants.START_OF_NESTED_CLASS_SUMMARY);
+        Content memberTree = writer.getMemberTreeHeader();
+        writer.addSummaryHeader(this, classDoc, memberTree);
+        return memberTree;
     }
 
     /**
-     * Write the header for the nested class documentation.
-     *
-     * @param classDoc the class that the classes belong to.
-     */
-    public void writeHeader(ClassDoc classDoc, String header) {
-        writer.anchor("nested class_detail");
-        writer.printTableHeadingBackground(header);
-    }
-
-    /**
-     * Write the nested class header for the given nested class.
-     *
-     * @param nestedClass the nested class being documented.
-     * @param isFirst the flag to indicate whether or not the nested class is the
-     *        first to be documented.
-     */
-    public void writeClassHeader(ClassDoc nestedClass, boolean isFirst) {
-        if (! isFirst) {
-            writer.printMemberHeader();
-            writer.println("");
-        }
-        writer.anchor(nestedClass.name());
-        writer.h3();
-        writer.print(nestedClass.name());
-        writer.h3End();
-    }
-
-
-
-    /**
      * Close the writer.
      */
     public void close() throws IOException {
@@ -148,17 +75,35 @@
         return VisibleMemberMap.INNERCLASSES;
     }
 
-    public void printSummaryLabel() {
-        writer.printText("doclet.Nested_Class_Summary");
+    /**
+     * {@inheritDoc}
+     */
+    public void addSummaryLabel(Content memberTree) {
+        Content label = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING,
+                writer.getResource("doclet.Nested_Class_Summary"));
+        memberTree.addContent(label);
     }
 
-    public void printTableSummary() {
-        writer.tableIndexSummary(configuration().getText("doclet.Member_Table_Summary",
+    /**
+     * {@inheritDoc}
+     */
+    public String getTableSummary() {
+        return configuration().getText("doclet.Member_Table_Summary",
                 configuration().getText("doclet.Nested_Class_Summary"),
-                configuration().getText("doclet.nested_classes")));
+                configuration().getText("doclet.nested_classes"));
     }
 
-    public void printSummaryTableHeader(ProgramElementDoc member) {
+    /**
+     * {@inheritDoc}
+     */
+    public String getCaption() {
+        return configuration().getText("doclet.Nested_Classes");
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String[] getSummaryTableHeader(ProgramElementDoc member) {
         String[] header;
         if (member.isInterface()) {
             header = new String[] {
@@ -176,92 +121,95 @@
                         configuration().getText("doclet.Description"))
             };
         }
-        writer.summaryTableHeader(header, "col");
+        return header;
     }
 
-    public void printSummaryAnchor(ClassDoc cd) {
-        writer.anchor("nested_class_summary");
-    }
-
-    public void printInheritedSummaryAnchor(ClassDoc cd) {
-        writer.anchor("nested_classes_inherited_from_class_" +
-                       cd.qualifiedName());
+    /**
+     * {@inheritDoc}
+     */
+    public void addSummaryAnchor(ClassDoc cd, Content memberTree) {
+        memberTree.addContent(writer.getMarkerAnchor("nested_class_summary"));
     }
 
-    public void printInheritedSummaryLabel(ClassDoc cd) {
-        String clslink = writer.getPreQualifiedClassLink(
-            LinkInfoImpl.CONTEXT_MEMBER, cd, false);
-        writer.strong();
-        writer.printText(cd.isInterface() ?
-            "doclet.Nested_Classes_Interface_Inherited_From_Interface" :
-            "doclet.Nested_Classes_Interfaces_Inherited_From_Class",
-            clslink);
-        writer.strongEnd();
+    /**
+     * {@inheritDoc}
+     */
+    public void addInheritedSummaryAnchor(ClassDoc cd, Content inheritedTree) {
+        inheritedTree.addContent(writer.getMarkerAnchor(
+                "nested_classes_inherited_from_class_" + cd.qualifiedName()));
     }
 
-    protected void writeSummaryLink(int context, ClassDoc cd, ProgramElementDoc member) {
-        writer.strong();
-        writer.printLink(new LinkInfoImpl(context, (ClassDoc)member, false));
-        writer.strongEnd();
+    /**
+     * {@inheritDoc}
+     */
+    public void addInheritedSummaryLabel(ClassDoc cd, Content inheritedTree) {
+        Content classLink = new RawHtml(writer.getPreQualifiedClassLink(
+                LinkInfoImpl.CONTEXT_MEMBER, cd, false));
+        Content label = new StringContent(cd.isInterface() ?
+            configuration().getText("doclet.Nested_Classes_Interface_Inherited_From_Interface") :
+            configuration().getText("doclet.Nested_Classes_Interfaces_Inherited_From_Class"));
+        Content labelHeading = HtmlTree.HEADING(HtmlConstants.INHERITED_SUMMARY_HEADING,
+                label);
+        labelHeading.addContent(writer.getSpace());
+        labelHeading.addContent(classLink);
+        inheritedTree.addContent(labelHeading);
     }
 
-    protected void writeInheritedSummaryLink(ClassDoc cd,
-            ProgramElementDoc member) {
-        writer.printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER,
-            (ClassDoc)member, false));
+    /**
+     * {@inheritDoc}
+     */
+    protected void addSummaryLink(int context, ClassDoc cd, ProgramElementDoc member,
+            Content tdSummary) {
+        Content strong = HtmlTree.STRONG(new RawHtml(
+                writer.getLink(new LinkInfoImpl(context, (ClassDoc)member, false))));
+        Content code = HtmlTree.CODE(strong);
+        tdSummary.addContent(code);
     }
 
-    protected void printSummaryType(ProgramElementDoc member) {
-        ClassDoc cd = (ClassDoc)member;
-        printModifierAndType(cd, null);
-    }
-
-    protected void printHeader(ClassDoc cd) {
-        // N.A.
+    /**
+     * {@inheritDoc}
+     */
+    protected void addInheritedSummaryLink(ClassDoc cd,
+            ProgramElementDoc member, Content linksTree) {
+        linksTree.addContent(new RawHtml(
+                writer.getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER,
+                (ClassDoc)member, false))));
     }
 
-    protected void printBodyHtmlEnd(ClassDoc cd) {
-        // N.A.
-    }
-
-    protected void printMember(ProgramElementDoc member) {
-        // N.A.
+    /**
+     * {@inheritDoc}
+     */
+    protected void addSummaryType(ProgramElementDoc member,
+            Content tdSummaryType) {
+        ClassDoc cd = (ClassDoc)member;
+        addModifierAndType(cd, null, tdSummaryType);
     }
 
-    protected void writeDeprecatedLink(ProgramElementDoc member) {
-        writer.printQualifiedClassLink(LinkInfoImpl.CONTEXT_MEMBER,
-            (ClassDoc)member);
+    /**
+     * {@inheritDoc}
+     */
+    protected Content getDeprecatedLink(ProgramElementDoc member) {
+        return writer.getQualifiedClassLink(LinkInfoImpl.CONTEXT_MEMBER,
+                (ClassDoc)member);
     }
 
-    protected void printNavSummaryLink(ClassDoc cd, boolean link) {
+    /**
+     * {@inheritDoc}
+     */
+    protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
         if (link) {
-            writer.printHyperLink("", (cd == null) ? "nested_class_summary":
-                    "nested_classes_inherited_from_class_" +
+            return writer.getHyperLink("", (cd == null) ? "nested_class_summary":
+                "nested_classes_inherited_from_class_" +
                 cd.qualifiedName(),
-                ConfigurationImpl.getInstance().getText("doclet.navNested"));
+                writer.getResource("doclet.navNested"));
         } else {
-            writer.printText("doclet.navNested");
+            return writer.getResource("doclet.navNested");
         }
     }
 
-    protected void printNavDetailLink(boolean link) {
-    }
-
-    protected void printMemberLink(ProgramElementDoc member) {
-    }
-
-    protected void printMembersSummaryLink(ClassDoc cd, ClassDoc icd,
-                                           boolean link) {
-        if (link) {
-            writer.printHyperLink(cd.name() + ".html",
-                (cd == icd)?
-                    "nested_class_summary":
-                    "nested_classes_inherited_from_class_" +
-                    icd.qualifiedName(),
-                    ConfigurationImpl.getInstance().getText(
-                        "doclet.Nested_Class_Summary"));
-        } else {
-            writer.printText("doclet.Nested_Class_Summary");
-        }
+    /**
+     * {@inheritDoc}
+     */
+    protected void addNavDetailLink(boolean link, Content liNav) {
     }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageFrameWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageFrameWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,18 +25,20 @@
 
 package com.sun.tools.doclets.formats.html;
 
+import java.io.*;
+import java.util.*;
+import com.sun.javadoc.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
 import com.sun.tools.doclets.internal.toolkit.*;
+import com.sun.tools.doclets.formats.html.markup.*;
 
-import com.sun.javadoc.*;
-import java.io.*;
-import java.util.*;
 /**
  * Class to generate file for each package contents in the left-hand bottom
  * frame. This will list all the Class Kinds in the package. A click on any
  * class-kind will update the right-hand frame with the clicked class-kind page.
  *
  * @author Atul M Dambalkar
+ * @author Bhavesh Patel (Modified)
  */
 public class PackageFrameWriter extends HtmlDocletWriter {
 
@@ -85,132 +87,107 @@
      * @param packageDoc The package for which "pacakge-frame.html" is to be generated.
      */
     public static void generate(ConfigurationImpl configuration,
-                                PackageDoc packageDoc) {
+            PackageDoc packageDoc) {
         PackageFrameWriter packgen;
         try {
             packgen = new PackageFrameWriter(configuration, packageDoc);
             String pkgName = Util.getPackageName(packageDoc);
-            packgen.printHtmlHeader(pkgName, configuration.metakeywords.getMetaKeywords(packageDoc), false);
-            packgen.printPackageHeader(pkgName);
-            packgen.generateClassListing();
-            packgen.printBodyHtmlEnd();
+            Content body = packgen.getBody(false, packgen.getWindowTitle(pkgName));
+            Content pkgNameContent = new StringContent(pkgName);
+            Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, HtmlStyle.bar,
+                    packgen.getTargetPackageLink(packageDoc, "classFrame", pkgNameContent));
+            body.addContent(heading);
+            HtmlTree div = new HtmlTree(HtmlTag.DIV);
+            div.addStyle(HtmlStyle.indexContainer);
+            packgen.addClassListing(div);
+            body.addContent(div);
+            packgen.printHtmlDocument(
+                    configuration.metakeywords.getMetaKeywords(packageDoc), false, body);
             packgen.close();
         } catch (IOException exc) {
             configuration.standardmessage.error(
-                        "doclet.exception_encountered",
-                        exc.toString(), OUTPUT_FILE_NAME);
+                    "doclet.exception_encountered",
+                    exc.toString(), OUTPUT_FILE_NAME);
             throw new DocletAbortException();
         }
     }
 
     /**
-     * Generate class listing for all the classes in this package. Divide class
+     * Add class listing for all the classes in this package. Divide class
      * listing as per the class kind and generate separate listing for
      * Classes, Interfaces, Exceptions and Errors.
+     *
+     * @param contentTree the content tree to which the listing will be added
      */
-    protected void generateClassListing() {
+    protected void addClassListing(Content contentTree) {
         Configuration config = configuration();
         if (packageDoc.isIncluded()) {
-            generateClassKindListing(packageDoc.interfaces(),
-                configuration.getText("doclet.Interfaces"));
-            generateClassKindListing(packageDoc.ordinaryClasses(),
-                configuration.getText("doclet.Classes"));
-            generateClassKindListing(packageDoc.enums(),
-                configuration.getText("doclet.Enums"));
-            generateClassKindListing(packageDoc.exceptions(),
-                configuration.getText("doclet.Exceptions"));
-            generateClassKindListing(packageDoc.errors(),
-                configuration.getText("doclet.Errors"));
-            generateClassKindListing(packageDoc.annotationTypes(),
-                configuration.getText("doclet.AnnotationTypes"));
+            addClassKindListing(packageDoc.interfaces(),
+                getResource("doclet.Interfaces"), contentTree);
+            addClassKindListing(packageDoc.ordinaryClasses(),
+                getResource("doclet.Classes"), contentTree);
+            addClassKindListing(packageDoc.enums(),
+                getResource("doclet.Enums"), contentTree);
+            addClassKindListing(packageDoc.exceptions(),
+                getResource("doclet.Exceptions"), contentTree);
+            addClassKindListing(packageDoc.errors(),
+                getResource("doclet.Errors"), contentTree);
+            addClassKindListing(packageDoc.annotationTypes(),
+                getResource("doclet.AnnotationTypes"), contentTree);
         } else {
             String name = Util.getPackageName(packageDoc);
-            generateClassKindListing(config.classDocCatalog.interfaces(name),
-                configuration.getText("doclet.Interfaces"));
-            generateClassKindListing(config.classDocCatalog.ordinaryClasses(name),
-                configuration.getText("doclet.Classes"));
-            generateClassKindListing(config.classDocCatalog.enums(name),
-                configuration.getText("doclet.Enums"));
-            generateClassKindListing(config.classDocCatalog.exceptions(name),
-                configuration.getText("doclet.Exceptions"));
-            generateClassKindListing(config.classDocCatalog.errors(name),
-                configuration.getText("doclet.Errors"));
-            generateClassKindListing(config.classDocCatalog.annotationTypes(name),
-                configuration.getText("doclet.AnnotationTypes"));
+            addClassKindListing(config.classDocCatalog.interfaces(name),
+                getResource("doclet.Interfaces"), contentTree);
+            addClassKindListing(config.classDocCatalog.ordinaryClasses(name),
+                getResource("doclet.Classes"), contentTree);
+            addClassKindListing(config.classDocCatalog.enums(name),
+                getResource("doclet.Enums"), contentTree);
+            addClassKindListing(config.classDocCatalog.exceptions(name),
+                getResource("doclet.Exceptions"), contentTree);
+            addClassKindListing(config.classDocCatalog.errors(name),
+                getResource("doclet.Errors"), contentTree);
+            addClassKindListing(config.classDocCatalog.annotationTypes(name),
+                getResource("doclet.AnnotationTypes"), contentTree);
         }
     }
 
     /**
-     * Generate specific class kind listing. Also add label to the listing.
+     * Add specific class kind listing. Also add label to the listing.
      *
-     * @param arr Array of specific class kinds, namely Class or Interface or
-     * Exception or Error.
-     * @param label Label for the listing
+     * @param arr Array of specific class kinds, namely Class or Interface or Exception or Error
+     * @param labelContent content tree of the label to be added
+     * @param contentTree the content tree to which the class kind listing will be added
      */
-    protected void generateClassKindListing(ClassDoc[] arr, String label) {
+    protected void addClassKindListing(ClassDoc[] arr, Content labelContent,
+            Content contentTree) {
         if(arr.length > 0) {
             Arrays.sort(arr);
-            printPackageTableHeader();
-            fontSizeStyle("+1", "FrameHeadingFont");
             boolean printedHeader = false;
+            HtmlTree ul = new HtmlTree(HtmlTag.UL);
+            ul.addAttr(HtmlAttr.TITLE, labelContent.toString());
             for (int i = 0; i < arr.length; i++) {
                 if (documentedClasses != null &&
-                    !documentedClasses.contains(arr[i])) {
+                        !documentedClasses.contains(arr[i])) {
                     continue;
                 }
                 if (!Util.isCoreClass(arr[i]) || !
-                    configuration.isGeneratedDoc(arr[i])) {
+                        configuration.isGeneratedDoc(arr[i])) {
                     continue;
                 }
                 if (!printedHeader) {
-                    print(label);
-                    fontEnd();
-                    println("&nbsp;");
-                    fontStyle("FrameItemFont");
+                    Content heading = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
+                            true, labelContent);
+                    contentTree.addContent(heading);
                     printedHeader = true;
                 }
-                br();
-                printLink(new LinkInfoImpl(
-                    LinkInfoImpl.PACKAGE_FRAME,
-                    arr[i],
-                    (arr[i].isInterface() ?
-                        italicsText(arr[i].name()) :
-                        arr[i].name()),"classFrame")
-                );
+                Content link = new RawHtml (getLink(new LinkInfoImpl(
+                        LinkInfoImpl.PACKAGE_FRAME, arr[i],
+                        (arr[i].isInterface() ? italicsText(arr[i].name()) :
+                            arr[i].name()),"classFrame")));
+                Content li = HtmlTree.LI(link);
+                ul.addContent(li);
             }
-            fontEnd();
-            printPackageTableFooter();
-            println();
+            contentTree.addContent(ul);
         }
     }
-
-    /**
-     * Print the package link at the top of the class kind listing. Clicking
-     * this link, package-summary page will appear in the right hand frame.
-     *
-     * @param heading Top Heading to be used for the class kind listing.
-     */
-    protected void printPackageHeader(String heading) {
-        fontSizeStyle("+1", "FrameTitleFont");
-        printTargetPackageLink(packageDoc, "classFrame", heading);
-        fontEnd();
-    }
-
-    /**
-     * The table for the class kind listing.
-     */
-    protected void printPackageTableHeader() {
-        table();
-        tr();
-        tdNowrap();
-    }
-
-    /**
-     * Closing Html tags for table of class kind listing.
-     */
-    protected void printPackageTableFooter() {
-        tdEnd();
-        trEnd();
-        tableEnd();
-    }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexFrameWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexFrameWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,10 +25,11 @@
 
 package com.sun.tools.doclets.formats.html;
 
+import java.io.*;
+import com.sun.javadoc.*;
+import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
-
-import com.sun.javadoc.*;
-import java.io.*;
+import com.sun.tools.doclets.formats.html.markup.*;
 
 /**
  * Generate the package index for the left-hand frame in the generated output.
@@ -58,7 +59,7 @@
         String filename = "overview-frame.html";
         try {
             packgen = new PackageIndexFrameWriter(configuration, filename);
-            packgen.generatePackageIndexFile("doclet.Window_Overview", false);
+            packgen.buildPackageIndexFile("doclet.Window_Overview", false);
             packgen.close();
         } catch (IOException exc) {
             configuration.standardmessage.error(
@@ -69,114 +70,86 @@
     }
 
     /**
-     * Print each package name on separate rows.
-     *
-     * @param pd PackageDoc
+     * {@inheritDoc}
      */
-    protected void printIndexRow(PackageDoc pd) {
-        fontStyle("FrameItemFont");
-        if (pd.name().length() > 0) {
-            print(getHyperLink(pathString(pd, "package-frame.html"), "",
-                pd.name(), false, "", "", "packageFrame"));
-        } else {
-            print(getHyperLink("package-frame.html", "", "&lt;unnamed package>",
-                false, "", "", "packageFrame"));
+    protected void addPackagesList(PackageDoc[] packages, String text,
+            String tableSummary, Content body) {
+        Content heading = HtmlTree.HEADING(HtmlConstants.PACKAGE_HEADING, true,
+                packagesLabel);
+        Content div = HtmlTree.DIV(HtmlStyle.indexContainer, heading);
+        HtmlTree ul = new HtmlTree(HtmlTag.UL);
+        ul.addAttr(HtmlAttr.TITLE, packagesLabel.toString());
+        for(int i = 0; i < packages.length; i++) {
+            if (packages[i] != null) {
+                ul.addContent(getPackage(packages[i]));
+            }
         }
-        fontEnd();
-        br();
+        div.addContent(ul);
+        body.addContent(div);
     }
 
     /**
-     * Print the "-packagesheader" string in strong format, at top of the page,
-     * if it is not the empty string.  Otherwise print the "-header" string.
-     * Despite the name, there is actually no navigation bar for this page.
+     * Gets each package name as a separate link.
+     *
+     * @param pd PackageDoc
+     * @return content for the package link
      */
-    protected void printNavigationBarHeader() {
-        printTableHeader(true);
-        fontSizeStyle("+1", "FrameTitleFont");
+    protected Content getPackage(PackageDoc pd) {
+        Content packageLinkContent;
+        Content packageLabel;
+        if (pd.name().length() > 0) {
+            packageLabel = getPackageLabel(pd.name());
+            packageLinkContent = getHyperLink(pathString(pd,
+                    "package-frame.html"), "", packageLabel, "",
+                    "packageFrame");
+        } else {
+            packageLabel = new RawHtml("&lt;unnamed package&gt;");
+            packageLinkContent = getHyperLink("package-frame.html",
+                    "", packageLabel, "", "packageFrame");
+        }
+        Content li = HtmlTree.LI(packageLinkContent);
+        return li;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void addNavigationBarHeader(Content body) {
+        Content headerContent;
         if (configuration.packagesheader.length() > 0) {
-            strong(replaceDocRootDir(configuration.packagesheader));
+            headerContent = new RawHtml(replaceDocRootDir(configuration.packagesheader));
         } else {
-            strong(replaceDocRootDir(configuration.header));
+            headerContent = new RawHtml(replaceDocRootDir(configuration.header));
         }
-        fontEnd();
-        printTableFooter(true);
+        Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, true,
+                HtmlStyle.bar, headerContent);
+        body.addContent(heading);
     }
 
     /**
      * Do nothing as there is no overview information in this page.
      */
-    protected void printOverviewHeader() {
-    }
-
-    /**
-     * Print Html "table" tag for the package index format.
-     *
-     * @param text Text string will not be used in this method.
-     */
-    protected void printIndexHeader(String text, String tableSummary) {
-        printTableHeader(false);
-    }
-
-    /**
-     * Print Html closing "table" tag at the end of the package index.
-     */
-    protected void printIndexFooter() {
-        printTableFooter(false);
-    }
-
-    /**
-     * Print "All Classes" link at the top of the left-hand frame page.
-     */
-    protected void printAllClassesPackagesLink() {
-        fontStyle("FrameItemFont");
-        print(getHyperLink("allclasses-frame.html", "",
-            configuration.getText("doclet.All_Classes"), false, "", "",
-            "packageFrame"));
-        fontEnd();
-        p();
-        fontSizeStyle("+1", "FrameHeadingFont");
-        printText("doclet.Packages");
-        fontEnd();
-        br();
+    protected void addOverviewHeader(Content body) {
     }
 
     /**
-     * Just print some space, since there is no navigation bar for this page.
+     * Adds "All Classes" link for the top of the left-hand frame page to the
+     * documentation tree.
+     *
+     * @param body the Content object to which the all classes link should be added
      */
-    protected void printNavigationBarFooter() {
-        p();
-        space();
+    protected void addAllClassesLink(Content body) {
+        Content linkContent = getHyperLink("allclasses-frame.html", "",
+                allclassesLabel, "", "packageFrame");
+        Content div = HtmlTree.DIV(HtmlStyle.indexHeader, linkContent);
+        body.addContent(div);
     }
 
     /**
-     * Print Html closing tags for the table for package index.
-     *
-     * @param isHeading true if this is a table for a heading.
+     * {@inheritDoc}
      */
-    private void printTableFooter(boolean isHeading) {
-        if (isHeading) {
-            thEnd();
-        } else {
-            tdEnd();
-        }
-        trEnd();
-        tableEnd();
-    }
-
-    /**
-     * Print Html tags for the table for package index.
-     *
-     * @param isHeading true if this is a table for a heading.
-     */
-    private void printTableHeader(boolean isHeading) {
-        table();
-        tr();
-        if (isHeading) {
-            thAlignNowrap("left");
-        } else {
-            tdNowrap();
-        }
-
+    protected void addNavigationBarFooter(Content body) {
+        Content p = HtmlTree.P(getSpace());
+        body.addContent(p);
     }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,10 +25,12 @@
 
 package com.sun.tools.doclets.formats.html;
 
-import com.sun.tools.doclets.internal.toolkit.util.*;
-import com.sun.javadoc.*;
 import java.io.*;
 import java.util.*;
+import com.sun.javadoc.*;
+import com.sun.tools.doclets.internal.toolkit.*;
+import com.sun.tools.doclets.internal.toolkit.util.*;
+import com.sun.tools.doclets.formats.html.markup.*;
 
 /**
  * Generate the package index page "overview-summary.html" for the right-hand
@@ -83,7 +85,7 @@
         String filename = "overview-summary.html";
         try {
             packgen = new PackageIndexWriter(configuration, filename);
-            packgen.generatePackageIndexFile("doclet.Window_Overview_Summary", true);
+            packgen.buildPackageIndexFile("doclet.Window_Overview_Summary", true);
             packgen.close();
         } catch (IOException exc) {
             configuration.standardmessage.error(
@@ -94,124 +96,140 @@
     }
 
     /**
-     * Print each package in separate rows in the index table. Generate link
-     * to each package.
+     * Depending upon the grouping information and their titles, add
+     * separate table indices for each package group.
      *
-     * @param pkg Package to which link is to be generated.
+     * @param body the documentation tree to which the index will be added
      */
-    protected void printIndexRow(PackageDoc pkg) {
-        if(pkg != null && pkg.name().length() > 0) {
-            trBgcolorStyle("white", "TableRowColor");
-            summaryRow(20);
-            strong();
-            printPackageLink(pkg, Util.getPackageName(pkg), false);
-            strongEnd();
-            summaryRowEnd();
-            summaryRow(0);
-            printSummaryComment(pkg);
-            summaryRowEnd();
-            trEnd();
-       }
-    }
-
-    /**
-     * Depending upon the grouping information and their titles, generate
-     * separate table indices for each package group.
-     */
-    protected void generateIndex() {
+    protected void addIndex(Content body) {
         for (int i = 0; i < groupList.size(); i++) {
         String groupname = groupList.get(i);
         List<PackageDoc> list = groupPackageMap.get(groupname);
             if (list != null && list.size() > 0) {
-                printIndexContents(list.toArray(new PackageDoc[list.size()]),
-                        groupname,
-                        configuration.getText("doclet.Member_Table_Summary",
-                        groupname,
-                        configuration.getText("doclet.packages")));
+                addIndexContents(list.toArray(new PackageDoc[list.size()]),
+                        groupname, configuration.getText("doclet.Member_Table_Summary",
+                        groupname, configuration.getText("doclet.packages")), body);
+            }
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    protected void addPackagesList(PackageDoc[] packages, String text,
+            String tableSummary, Content body) {
+        Content table = HtmlTree.TABLE(HtmlStyle.overviewSummary, 0, 3, 0, tableSummary,
+                getTableCaption(text));
+        table.addContent(getSummaryTableHeader(packageTableHeader, "col"));
+        Content tbody = new HtmlTree(HtmlTag.TBODY);
+        addPackagesList(packages, tbody);
+        table.addContent(tbody);
+        Content div = HtmlTree.DIV(HtmlStyle.contentContainer, table);
+        body.addContent(div);
+    }
+
+    /**
+     * Adds list of packages in the index table. Generate link to each package.
+     *
+     * @param packages Packages to which link is to be generated
+     * @param tbody the documentation tree to which the list will be added
+     */
+    protected void addPackagesList(PackageDoc[] packages, Content tbody) {
+        for (int i = 0; i < packages.length; i++) {
+            if (packages[i] != null && packages[i].name().length() > 0) {
+                Content packageLinkContent = getPackageLink(packages[i],
+                        getPackageName(packages[i]));
+                Content tdPackage = HtmlTree.TD(HtmlStyle.colFirst, packageLinkContent);
+                HtmlTree tdSummary = new HtmlTree(HtmlTag.TD);
+                tdSummary.addStyle(HtmlStyle.colLast);
+                addSummaryComment(packages[i], tdSummary);
+                HtmlTree tr = HtmlTree.TR(tdPackage);
+                tr.addContent(tdSummary);
+                if (i%2 == 0)
+                    tr.addStyle(HtmlStyle.altColor);
+                else
+                    tr.addStyle(HtmlStyle.rowColor);
+                tbody.addContent(tr);
             }
         }
     }
 
     /**
-     * Print the overview summary comment for this documentation. Print one line
+     * Adds the overview summary comment for this documentation. Add one line
      * summary at the top of the page and generate a link to the description,
-     * which is generated at the end of this page.
+     * which is added at the end of this page.
+     *
+     * @param body the documentation tree to which the overview header will be added
      */
-    protected void printOverviewHeader() {
+    protected void addOverviewHeader(Content body) {
         if (root.inlineTags().length > 0) {
-            printSummaryComment(root);
-            p();
-            strong(configuration.getText("doclet.See"));
-            br();
-            printNbsps();
-            printHyperLink("", "overview_description",
-                configuration.getText("doclet.Description"), true);
-            p();
+            HtmlTree p = new HtmlTree(HtmlTag.P);
+            p.addStyle(HtmlStyle.subTitle);
+            addSummaryComment(root, p);
+            Content div = HtmlTree.DIV(HtmlStyle.header, p);
+            Content see = seeLabel;
+            see.addContent(" ");
+            Content descPara = HtmlTree.P(see);
+            Content descLink = getHyperLink("", "overview_description",
+                descriptionLabel, "", "");
+            descPara.addContent(descLink);
+            div.addContent(descPara);
+            body.addContent(div);
         }
     }
 
     /**
-     * Print Html tags for the table for this package index.
-     */
-    protected void printIndexHeader(String text, String tableSummary) {
-        tableIndexSummary(tableSummary);
-        tableCaptionStart();
-        print(text);
-        tableCaptionEnd();
-        summaryTableHeader(packageTableHeader, "col");
-    }
-
-    /**
-     * Print Html closing tags for the table for this package index.
+     * Adds the overview comment as provided in the file specified by the
+     * "-overview" option on the command line.
+     *
+     * @param htmltree the documentation tree to which the overview comment will
+     *                 be added
      */
-    protected void printIndexFooter() {
-        tableEnd();
-        p();
-        space();
-    }
-
-    /**
-     * Print the overview comment as provided in the file specified by the
-     * "-overview" option on the command line.
-     */
-    protected void printOverviewComment() {
+    protected void addOverviewComment(Content htmltree) {
         if (root.inlineTags().length > 0) {
-            anchor("overview_description");
-            p();
-            printInlineComment(root);
-            p();
+            htmltree.addContent(getMarkerAnchor("overview_description"));
+            HtmlTree p = new HtmlTree(HtmlTag.P);
+            p.addStyle(HtmlStyle.subTitle);
+            addInlineComment(root, p);
+            htmltree.addContent(p);
         }
     }
 
     /**
-     * Call {@link #printOverviewComment()} and then genrate the tag information
-     * as provided in the file specified by the "-overview" option on the
-     * command line.
+     * Adds the tag information as provided in the file specified by the
+     * "-overview" option on the command line.
+     *
+     * @param body the documentation tree to which the overview will be added
      */
-    protected void printOverview() throws IOException {
-        printOverviewComment();
-        printTags(root);
+    protected void addOverview(Content body) throws IOException {
+        HtmlTree div = new HtmlTree(HtmlTag.DIV);
+        div.addStyle(HtmlStyle.footer);
+        addOverviewComment(div);
+        addTagsInfo(root, div);
+        body.addContent(div);
     }
 
     /**
-     * Print the top text (from the -top option), the upper
+     * Adds the top text (from the -top option), the upper
      * navigation bar, and then the title (from the"-title"
      * option), at the top of page.
+     *
+     * @body the documentation tree to which the navigation bar header will be added
      */
-    protected void printNavigationBarHeader() {
-        printTop();
-        navLinks(true);
-        hr();
-        printConfigurationTitle();
+    protected void addNavigationBarHeader(Content body) {
+        addTop(body);
+        addNavLinks(true, body);
+        addConfigurationTitle(body);
     }
 
     /**
-     * Print the lower navigation bar and the bottom text
+     * Adds the lower navigation bar and the bottom text
      * (from the -bottom option) at the bottom of page.
+     *
+     * @param the documentation tree to which the navigation bar footer will be added
      */
-    protected void printNavigationBarFooter() {
-        hr();
-        navLinks(false);
-        printBottom();
+    protected void addNavigationBarFooter(Content body) {
+        addNavLinks(false, body);
+        addBottom(body);
     }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageTreeWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageTreeWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -29,12 +29,15 @@
 
 import com.sun.javadoc.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
+import com.sun.tools.doclets.formats.html.markup.*;
+import com.sun.tools.doclets.internal.toolkit.*;
 
 /**
  * Class to generate Tree page for a package. The name of the file generated is
  * "package-tree.html" and it is generated in the respective package directory.
  *
  * @author Atul M Dambalkar
+ * @author Bhavesh Patel (Modified)
  */
 public class PackageTreeWriter extends AbstractTreeWriter {
 
@@ -107,94 +110,96 @@
      * Generate a separate tree file for each package.
      */
     protected void generatePackageTreeFile() throws IOException {
-        printHtmlHeader(packagedoc.name() + " "
-            + configuration.getText("doclet.Window_Class_Hierarchy"), null, true);
-
-        printPackageTreeHeader();
-
+        Content body = getPackageTreeHeader();
+        Content headContent = getResource("doclet.Hierarchy_For_Package",
+                Util.getPackageName(packagedoc));
+        Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, false,
+                HtmlStyle.title, headContent);
+        Content div = HtmlTree.DIV(HtmlStyle.header, heading);
         if (configuration.packages.length > 1) {
-            printLinkToMainTree();
+            addLinkToMainTree(div);
         }
-
-        generateTree(classtree.baseclasses(), "doclet.Class_Hierarchy");
-        generateTree(classtree.baseinterfaces(), "doclet.Interface_Hierarchy");
-        generateTree(classtree.baseAnnotationTypes(), "doclet.Annotation_Type_Hierarchy");
-        generateTree(classtree.baseEnums(), "doclet.Enum_Hierarchy");
-
-        printPackageTreeFooter();
-        printBottom();
-        printBodyHtmlEnd();
-    }
-
-    /**
-     * Print the navigation bar header for the package tree file.
-     */
-    protected void printPackageTreeHeader() {
-        printTop();
-        navLinks(true);
-        hr();
-        center();
-        h2(configuration.getText("doclet.Hierarchy_For_Package",
-            Util.getPackageName(packagedoc)));
-        centerEnd();
+        body.addContent(div);
+        HtmlTree divTree = new HtmlTree(HtmlTag.DIV);
+        divTree.addStyle(HtmlStyle.contentContainer);
+        addTree(classtree.baseclasses(), "doclet.Class_Hierarchy", divTree);
+        addTree(classtree.baseinterfaces(), "doclet.Interface_Hierarchy", divTree);
+        addTree(classtree.baseAnnotationTypes(), "doclet.Annotation_Type_Hierarchy", divTree);
+        addTree(classtree.baseEnums(), "doclet.Enum_Hierarchy", divTree);
+        body.addContent(divTree);
+        addNavLinks(false, body);
+        addBottom(body);
+        printHtmlDocument(null, true, body);
     }
 
     /**
-     * Generate a link to the tree for all the packages.
+     * Get the package tree header.
+     *
+     * @return a content tree for the header
      */
-    protected void printLinkToMainTree() {
-        dl();
-        dt();
-        strongText("doclet.Package_Hierarchies");
-        dtEnd();
-        dd();
-        navLinkMainTree(configuration.getText("doclet.All_Packages"));
-        ddEnd();
-        dlEnd();
-        hr();
+    protected Content getPackageTreeHeader() {
+        String title = packagedoc.name() + " " +
+                configuration.getText("doclet.Window_Class_Hierarchy");
+        Content bodyTree = getBody(true, getWindowTitle(title));
+        addTop(bodyTree);
+        addNavLinks(true, bodyTree);
+        return bodyTree;
     }
 
     /**
-     * Print the navigation bar footer for the package tree file.
+     * Add a link to the tree for all the packages.
+     *
+     * @param div the content tree to which the link will be added
      */
-    protected void printPackageTreeFooter() {
-        hr();
-        navLinks(false);
+    protected void addLinkToMainTree(Content div) {
+        Content span = HtmlTree.SPAN(HtmlStyle.strong,
+                getResource("doclet.Package_Hierarchies"));
+        div.addContent(span);
+        HtmlTree ul = new HtmlTree (HtmlTag.UL);
+        ul.addStyle(HtmlStyle.horizontal);
+        ul.addContent(getNavLinkMainTree(configuration.getText("doclet.All_Packages")));
+        div.addContent(ul);
     }
 
     /**
-     * Link for the previous package tree file.
+     * Get link for the previous package tree file.
+     *
+     * @return a content tree for the link
      */
-    protected void navLinkPrevious() {
+    protected Content getNavLinkPrevious() {
         if (prev == null) {
-            navLinkPrevious(null);
+            return getNavLinkPrevious(null);
         } else {
             String path = DirectoryManager.getRelativePath(packagedoc.name(),
-                                                           prev.name());
-            navLinkPrevious(path + "package-tree.html");
+                    prev.name());
+            return getNavLinkPrevious(path + "package-tree.html");
         }
     }
 
     /**
-     * Link for the next package tree file.
+     * Get link for the next package tree file.
+     *
+     * @return a content tree for the link
      */
-    protected void navLinkNext() {
+    protected Content getNavLinkNext() {
         if (next == null) {
-            navLinkNext(null);
+            return getNavLinkNext(null);
         } else {
             String path = DirectoryManager.getRelativePath(packagedoc.name(),
-                                                           next.name());
-            navLinkNext(path + "package-tree.html");
+                    next.name());
+            return getNavLinkNext(path + "package-tree.html");
         }
     }
 
     /**
-     * Link to the package summary page for the package of this tree.
+     * Get link to the package summary page for the package of this tree.
+     *
+     * @return a content tree for the package link
      */
-    protected void navLinkPackage() {
-        navCellStart();
-        printHyperLink("package-summary.html", "", configuration.getText("doclet.Package"),
-                        true, "NavBarFont1");
-        navCellEnd();
+    protected Content getNavLinkPackage() {
+        Content linkContent = getHyperLink("package-summary.html", "",
+                packageLabel);
+        Content li = HtmlTree.LI(linkContent);
+        return li;
     }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageUseWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageUseWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,10 +25,12 @@
 
 package com.sun.tools.doclets.formats.html;
 
-import com.sun.tools.doclets.internal.toolkit.util.*;
-import com.sun.javadoc.*;
 import java.io.*;
 import java.util.*;
+import com.sun.javadoc.*;
+import com.sun.tools.doclets.internal.toolkit.util.*;
+import com.sun.tools.doclets.formats.html.markup.*;
+import com.sun.tools.doclets.internal.toolkit.*;
 
 /**
  * Generate package usage information.
@@ -106,49 +108,74 @@
 
 
     /**
-     * Print the class use list.
+     * Generate the package use list.
      */
     protected void generatePackageUseFile() throws IOException {
-        printPackageUseHeader();
-
+        Content body = getPackageUseHeader();
+        HtmlTree div = new HtmlTree(HtmlTag.DIV);
+        div.addStyle(HtmlStyle.contentContainer);
         if (usingPackageToUsedClasses.isEmpty()) {
-            printText("doclet.ClassUse_No.usage.of.0", pkgdoc.name());
-            p();
+            div.addContent(getResource(
+                    "doclet.ClassUse_No.usage.of.0", pkgdoc.name()));
         } else {
-            generatePackageUse();
+            addPackageUse(div);
         }
+        body.addContent(div);
+        addNavLinks(false, body);
+        addBottom(body);
+        printHtmlDocument(null, true, body);
+    }
 
-        printPackageUseFooter();
+    /**
+     * Add the package use information.
+     *
+     * @param contentTree the content tree to which the package use information will be added
+     */
+    protected void addPackageUse(Content contentTree) throws IOException {
+        HtmlTree ul = new HtmlTree(HtmlTag.UL);
+        ul.addStyle(HtmlStyle.blockList);
+        if (configuration.packages.length > 1) {
+            addPackageList(ul);
+        }
+        addClassList(ul);
+        contentTree.addContent(ul);
     }
 
     /**
-     * Print the class use list.
+     * Add the list of packages that use the given package.
+     *
+     * @param contentTree the content tree to which the package list will be added
      */
-    protected void generatePackageUse() throws IOException {
-        if (configuration.packages.length > 1) {
-            generatePackageList();
+    protected void addPackageList(Content contentTree) throws IOException {
+        Content table = HtmlTree.TABLE(0, 3, 0, useTableSummary,
+                getTableCaption(configuration().getText(
+                "doclet.ClassUse_Packages.that.use.0",
+                getPackageLinkString(pkgdoc, Util.getPackageName(pkgdoc), false))));
+        table.addContent(getSummaryTableHeader(packageTableHeader, "col"));
+        Content tbody = new HtmlTree(HtmlTag.TBODY);
+        Iterator<String> it = usingPackageToUsedClasses.keySet().iterator();
+        for (int i = 0; it.hasNext(); i++) {
+            PackageDoc pkg = configuration.root.packageNamed(it.next());
+            HtmlTree tr = new HtmlTree(HtmlTag.TR);
+            if (i % 2 == 0) {
+                tr.addStyle(HtmlStyle.altColor);
+            } else {
+                tr.addStyle(HtmlStyle.rowColor);
+            }
+            addPackageUse(pkg, tr);
+            tbody.addContent(tr);
         }
-        generateClassList();
+        table.addContent(tbody);
+        Content li = HtmlTree.LI(HtmlStyle.blockList, table);
+        contentTree.addContent(li);
     }
 
-    protected void generatePackageList() throws IOException {
-        tableIndexSummary(useTableSummary);
-        tableCaptionStart();
-        printText("doclet.ClassUse_Packages.that.use.0",
-            getPackageLink(pkgdoc, Util.getPackageName(pkgdoc), false));
-        tableCaptionEnd();
-        summaryTableHeader(packageTableHeader, "col");
-        Iterator<String> it = usingPackageToUsedClasses.keySet().iterator();
-        while (it.hasNext()) {
-            PackageDoc pkg = configuration.root.packageNamed(it.next());
-            generatePackageUse(pkg);
-        }
-        tableEnd();
-        space();
-        p();
-    }
-
-    protected void generateClassList() throws IOException {
+    /**
+     * Add the list of classes that use the given package.
+     *
+     * @param contentTree the content tree to which the class list will be added
+     */
+    protected void addClassList(Content contentTree) throws IOException {
         String[] classTableHeader = new String[] {
             configuration.getText("doclet.0_and_1",
                     configuration.getText("doclet.Class"),
@@ -158,117 +185,126 @@
         while (itp.hasNext()) {
             String packageName = itp.next();
             PackageDoc usingPackage = configuration.root.packageNamed(packageName);
+            HtmlTree li = new HtmlTree(HtmlTag.LI);
+            li.addStyle(HtmlStyle.blockList);
             if (usingPackage != null) {
-                anchor(usingPackage.name());
+                li.addContent(getMarkerAnchor(usingPackage.name()));
             }
-            tableIndexSummary(configuration.getText("doclet.Use_Table_Summary",
-                    configuration.getText("doclet.classes")));
-            tableCaptionStart();
-            printText("doclet.ClassUse_Classes.in.0.used.by.1",
-                getPackageLink(pkgdoc, Util.getPackageName(pkgdoc), false),
-                getPackageLink(usingPackage,Util.getPackageName(usingPackage), false));
-            tableCaptionEnd();
-            summaryTableHeader(classTableHeader, "col");
+            String tableSummary = configuration.getText("doclet.Use_Table_Summary",
+                    configuration.getText("doclet.classes"));
+            Content table = HtmlTree.TABLE(0, 3, 0, tableSummary,
+                    getTableCaption(configuration().getText(
+                    "doclet.ClassUse_Classes.in.0.used.by.1",
+                    getPackageLinkString(pkgdoc, Util.getPackageName(pkgdoc), false),
+                    getPackageLinkString(usingPackage,Util.getPackageName(usingPackage), false))));
+            table.addContent(getSummaryTableHeader(classTableHeader, "col"));
+            Content tbody = new HtmlTree(HtmlTag.TBODY);
             Iterator<ClassDoc> itc =
                     usingPackageToUsedClasses.get(packageName).iterator();
-            while (itc.hasNext()) {
-                printClassRow(itc.next(), packageName);
+            for (int i = 0; itc.hasNext(); i++) {
+                HtmlTree tr = new HtmlTree(HtmlTag.TR);
+                if (i % 2 == 0) {
+                    tr.addStyle(HtmlStyle.altColor);
+                } else {
+                    tr.addStyle(HtmlStyle.rowColor);
+                }
+                addClassRow(itc.next(), packageName, tr);
+                tbody.addContent(tr);
             }
-            tableEnd();
-            space();
-            p();
+            table.addContent(tbody);
+            li.addContent(table);
+            contentTree.addContent(li);
         }
     }
 
-    protected void printClassRow(ClassDoc usedClass, String packageName) {
+    /**
+     * Add a row for the class that uses the given package.
+     *
+     * @param usedClass the class that uses the given package
+     * @param packageName the name of the package to which the class belongs
+     * @param contentTree the content tree to which the row will be added
+     */
+    protected void addClassRow(ClassDoc usedClass, String packageName,
+            Content contentTree) {
         String path = pathString(usedClass,
-                                 "class-use/" + usedClass.name() + ".html");
-
-        trBgcolorStyle("white", "TableRowColor");
-        summaryRow(0);
-        strong();
-        printHyperLink(path, packageName, usedClass.name(), true);
-        strongEnd();
-        println(); br();
-        printNbsps();
-        printIndexComment(usedClass);
-        summaryRowEnd();
-        trEnd();
-    }
-
-    /**
-     * Print the package use list.
-     */
-    protected void generatePackageUse(PackageDoc pkg) throws IOException {
-        trBgcolorStyle("white", "TableRowColor");
-        summaryRow(0);
-        //Just want an anchor here.
-        printHyperLink("", pkg.name(), Util.getPackageName(pkg), true);
-        summaryRowEnd();
-        summaryRow(0);
-        if (pkg != null) {
-            printSummaryComment(pkg);
-        }
-        space();
-        summaryRowEnd();
-        trEnd();
+                "class-use/" + usedClass.name() + ".html");
+        Content td = HtmlTree.TD(HtmlStyle.colOne,
+                getHyperLink(path, packageName, new StringContent(usedClass.name())));
+        addIndexComment(usedClass, td);
+        contentTree.addContent(td);
     }
 
     /**
-     * Print the header for the class use Listing.
+     * Add the package use information.
+     *
+     * @param pkg the package that used the given package
+     * @param contentTree the content tree to which the information will be added
      */
-    protected void printPackageUseHeader() {
-        String packageLabel = configuration.getText("doclet.Package");
-        String name = pkgdoc.name();
-        printHtmlHeader(configuration.getText("doclet.Window_ClassUse_Header",
-            packageLabel, name), null, true);
-        printTop();
-        navLinks(true);
-        hr();
-        center();
-        h2();
-        strongText("doclet.ClassUse_Title", packageLabel, name);
-        h2End();
-        centerEnd();
+    protected void addPackageUse(PackageDoc pkg, Content contentTree) throws IOException {
+        Content tdFirst = HtmlTree.TD(HtmlStyle.colFirst,
+                getHyperLink("", pkg.name(), new StringContent(Util.getPackageName(pkg))));
+        contentTree.addContent(tdFirst);
+        HtmlTree tdLast = new HtmlTree(HtmlTag.TD);
+        tdLast.addStyle(HtmlStyle.colLast);
+        if (pkg != null)
+            addSummaryComment(pkg, tdLast);
+        else
+            tdLast.addContent(getSpace());
+        contentTree.addContent(tdLast);
     }
 
     /**
-     * Print the footer for the class use Listing.
+     * Get the header for the package use listing.
+     *
+     * @return a content tree representing the package use header
      */
-    protected void printPackageUseFooter() {
-        hr();
-        navLinks(false);
-        printBottom();
-        printBodyHtmlEnd();
-    }
-
-
-    /**
-     * Print this package link
-     */
-    protected void navLinkPackage() {
-        navCellStart();
-        printHyperLink("package-summary.html", "", configuration.getText("doclet.Package"),
-                       true, "NavBarFont1");
-        navCellEnd();
+    protected Content getPackageUseHeader() {
+        String packageText = configuration.getText("doclet.Package");
+        String name = pkgdoc.name();
+        String title = configuration.getText("doclet.Window_ClassUse_Header",
+                packageText, name);
+        Content bodyTree = getBody(true, getWindowTitle(title));
+        addTop(bodyTree);
+        addNavLinks(true, bodyTree);
+        Content headContent = getResource("doclet.ClassUse_Title", packageText, name);
+        Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, true,
+                HtmlStyle.title, headContent);
+        Content div = HtmlTree.DIV(HtmlStyle.header, heading);
+        bodyTree.addContent(div);
+        return bodyTree;
     }
 
     /**
-     * Print class use link
+     * Get this package link.
+     *
+     * @return a content tree for the package link
      */
-    protected void navLinkClassUse() {
-        navCellRevStart();
-        fontStyle("NavBarFont1Rev");
-        strongText("doclet.navClassUse");
-        fontEnd();
-        navCellEnd();
+    protected Content getNavLinkPackage() {
+        Content linkContent = getHyperLink("package-summary.html", "",
+                packageLabel);
+        Content li = HtmlTree.LI(linkContent);
+        return li;
     }
 
-    protected void navLinkTree() {
-        navCellStart();
-        printHyperLink("package-tree.html", "", configuration.getText("doclet.Tree"),
-                       true, "NavBarFont1");
-        navCellEnd();
+    /**
+     * Get the use link.
+     *
+     * @return a content tree for the use link
+     */
+    protected Content getNavLinkClassUse() {
+        Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, useLabel);
+        return li;
     }
 
+    /**
+     * Get the tree link.
+     *
+     * @return a content tree for the tree link
+     */
+    protected Content getNavLinkTree() {
+        Content linkContent = getHyperLink("package-tree.html", "",
+                treeLabel);
+        Content li = HtmlTree.LI(linkContent);
+        return li;
+    }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageWriterImpl.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageWriterImpl.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,12 +25,12 @@
 
 package com.sun.tools.doclets.formats.html;
 
+import java.io.*;
+import java.util.*;
+import com.sun.javadoc.*;
 import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
-
-import com.sun.javadoc.*;
-import java.io.*;
-import java.util.*;
+import com.sun.tools.doclets.formats.html.markup.*;
 
 /**
  * Class to generate file for each package contents in the right-hand
@@ -98,189 +98,206 @@
     /**
      * {@inheritDoc}
      */
-    public void writeSummaryHeader() {}
-
-    /**
-     * {@inheritDoc}
-     */
-    public void writeSummaryFooter() {}
+    public Content getPackageHeader(String heading) {
+        String pkgName = packageDoc.name();
+        Content bodyTree = getBody(true, getWindowTitle(pkgName));
+        addTop(bodyTree);
+        addNavLinks(true, bodyTree);
+        HtmlTree div = new HtmlTree(HtmlTag.DIV);
+        div.addStyle(HtmlStyle.header);
+        Content annotationContent = new HtmlTree(HtmlTag.P);
+        addAnnotationInfo(packageDoc, annotationContent);
+        div.addContent(annotationContent);
+        Content tHeading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, true,
+                HtmlStyle.title, packageLabel);
+        tHeading.addContent(getSpace());
+        Content packageHead = new RawHtml(heading);
+        tHeading.addContent(packageHead);
+        div.addContent(tHeading);
+        if (packageDoc.inlineTags().length > 0 && ! configuration.nocomment) {
+            HtmlTree p = new HtmlTree(HtmlTag.P);
+            p.addStyle(HtmlStyle.subTitle);
+            addSummaryComment(packageDoc, p);
+            div.addContent(p);
+            Content space = getSpace();
+            Content descLink = getHyperLink("", "package_description",
+                    descriptionLabel, "", "");
+            Content descPara = new HtmlTree(HtmlTag.P, seeLabel, space, descLink);
+            div.addContent(descPara);
+        }
+        bodyTree.addContent(div);
+        return bodyTree;
+    }
 
     /**
      * {@inheritDoc}
      */
-    public void writeClassesSummary(ClassDoc[] classes, String label, String tableSummary, String[] tableHeader) {
-        if(classes.length > 0) {
-            Arrays.sort(classes);
-            tableIndexSummary(tableSummary);
-            boolean printedHeading = false;
-            for (int i = 0; i < classes.length; i++) {
-                if (!printedHeading) {
-                    printTableCaption(label);
-                    printFirstRow(tableHeader);
-                    printedHeading = true;
-                }
-                if (!Util.isCoreClass(classes[i]) ||
-                    !configuration.isGeneratedDoc(classes[i])) {
-                    continue;
-                }
-                trBgcolorStyle("white", "TableRowColor");
-                summaryRow(15);
-                strong();
-                printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_PACKAGE,
-                    classes[i], false));
-                strongEnd();
-                summaryRowEnd();
-                summaryRow(0);
-                if (Util.isDeprecated(classes[i])) {
-                    strongText("doclet.Deprecated");
-                    if (classes[i].tags("deprecated").length > 0) {
-                        space();
-                        printSummaryDeprecatedComment(classes[i],
-                            classes[i].tags("deprecated")[0]);
-                    }
-                } else {
-                    printSummaryComment(classes[i]);
-                }
-                summaryRowEnd();
-                trEnd();
-            }
-            tableEnd();
-            println("&nbsp;");
-            p();
-        }
-    }
-
-    /**
-     * Print the table caption for the class-listing.
-     *
-     * @param label label for the Class kind listing.
-     */
-    protected void printTableCaption(String label) {
-        tableCaptionStart();
-        print(label);
-        tableCaptionEnd();
-    }
-
-    /**
-     * Print the table heading for the class-listing.
-     *
-     * @param tableHeader table header string for the Class listing.
-     */
-    protected void printFirstRow(String[] tableHeader) {
-        summaryTableHeader(tableHeader, "col");
+    public Content getContentHeader() {
+        HtmlTree div = new HtmlTree(HtmlTag.DIV);
+        div.addStyle(HtmlStyle.contentContainer);
+        return div;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writePackageDescription() {
-        if (packageDoc.inlineTags().length > 0) {
-            anchor("package_description");
-            h2(configuration.getText("doclet.Package_Description", packageDoc.name()));
-            p();
-            printInlineComment(packageDoc);
-            p();
+    public Content getSummaryHeader() {
+        HtmlTree ul = new HtmlTree(HtmlTag.UL);
+        ul.addStyle(HtmlStyle.blockList);
+        return ul;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addClassesSummary(ClassDoc[] classes, String label,
+            String tableSummary, String[] tableHeader, Content summaryContentTree) {
+        if(classes.length > 0) {
+            Arrays.sort(classes);
+            Content caption = getTableCaption(label);
+            Content table = HtmlTree.TABLE(HtmlStyle.packageSummary, 0, 3, 0,
+                    tableSummary, caption);
+            table.addContent(getSummaryTableHeader(tableHeader, "col"));
+            Content tbody = new HtmlTree(HtmlTag.TBODY);
+            for (int i = 0; i < classes.length; i++) {
+                if (!Util.isCoreClass(classes[i]) ||
+                    !configuration.isGeneratedDoc(classes[i])) {
+                    continue;
+                }
+                Content classContent = new RawHtml(getLink(new LinkInfoImpl(
+                        LinkInfoImpl.CONTEXT_PACKAGE, classes[i], false)));
+                Content tdClass = HtmlTree.TD(HtmlStyle.colFirst, classContent);
+                HtmlTree tr = HtmlTree.TR(tdClass);
+                if (i%2 == 0)
+                    tr.addStyle(HtmlStyle.altColor);
+                else
+                    tr.addStyle(HtmlStyle.rowColor);
+                HtmlTree tdClassDescription = new HtmlTree(HtmlTag.TD);
+                tdClassDescription.addStyle(HtmlStyle.colLast);
+                if (Util.isDeprecated(classes[i])) {
+                    tdClassDescription.addContent(deprecatedLabel);
+                    if (classes[i].tags("deprecated").length > 0) {
+                        addSummaryDeprecatedComment(classes[i],
+                            classes[i].tags("deprecated")[0], tdClassDescription);
+                    }
+                }
+                else
+                    addSummaryComment(classes[i], tdClassDescription);
+                tr.addContent(tdClassDescription);
+                tbody.addContent(tr);
+            }
+            table.addContent(tbody);
+            Content li = HtmlTree.LI(HtmlStyle.blockList, table);
+            summaryContentTree.addContent(li);
         }
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writePackageTags() {
-        printTags(packageDoc);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void writePackageHeader(String heading) {
-        String pkgName = packageDoc.name();
-        printHtmlHeader(pkgName,
-            configuration.metakeywords.getMetaKeywords(packageDoc), true);
-        printTop();
-        navLinks(true);
-        hr();
-        writeAnnotationInfo(packageDoc);
-        h2(configuration.getText("doclet.Package") + " " + heading);
-        if (packageDoc.inlineTags().length > 0 && ! configuration.nocomment) {
-            printSummaryComment(packageDoc);
-            p();
-            strong(configuration.getText("doclet.See"));
-            br();
-            printNbsps();
-            printHyperLink("", "package_description",
-                configuration.getText("doclet.Description"), true);
-            p();
+    public void addPackageDescription(Content packageContentTree) {
+        if (packageDoc.inlineTags().length > 0) {
+            packageContentTree.addContent(getMarkerAnchor("package_description"));
+            Content h2Content = new StringContent(
+                    configuration.getText("doclet.Package_Description",
+                    packageDoc.name()));
+            packageContentTree.addContent(HtmlTree.HEADING(HtmlConstants.PACKAGE_HEADING,
+                    true, h2Content));
+            addInlineComment(packageDoc, packageContentTree);
         }
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writePackageFooter() {
-        hr();
-        navLinks(false);
-        printBottom();
-        printBodyHtmlEnd();
+    public void addPackageTags(Content packageContentTree) {
+        addTagsInfo(packageDoc, packageContentTree);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void addPackageFooter(Content contentTree) {
+        addNavLinks(false, contentTree);
+        addBottom(contentTree);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void printDocument(Content contentTree) {
+        printHtmlDocument(configuration.metakeywords.getMetaKeywords(packageDoc),
+                true, contentTree);
     }
 
     /**
-     * Print "Use" link for this pacakge in the navigation bar.
+     * Get "Use" link for this pacakge in the navigation bar.
+     *
+     * @return a content tree for the class use link
      */
-    protected void navLinkClassUse() {
-        navCellStart();
-        printHyperLink("package-use.html", "", configuration.getText("doclet.navClassUse"),
-                       true, "NavBarFont1");
-        navCellEnd();
+    protected Content getNavLinkClassUse() {
+        Content useLink = getHyperLink("package-use.html", "",
+                useLabel, "", "");
+        Content li = HtmlTree.LI(useLink);
+        return li;
     }
 
     /**
-     * Print "PREV PACKAGE" link in the navigation bar.
+     * Get "PREV PACKAGE" link in the navigation bar.
+     *
+     * @return a content tree for the previous link
      */
-    protected void navLinkPrevious() {
+    public Content getNavLinkPrevious() {
+        Content li;
         if (prev == null) {
-            printText("doclet.Prev_Package");
+            li = HtmlTree.LI(prevpackageLabel);
         } else {
             String path = DirectoryManager.getRelativePath(packageDoc.name(),
                                                            prev.name());
-            printHyperLink(path + "package-summary.html", "",
-                configuration.getText("doclet.Prev_Package"), true);
+            li = HtmlTree.LI(getHyperLink(path + "package-summary.html", "",
+                prevpackageLabel, "", ""));
         }
+        return li;
     }
 
     /**
-     * Print "NEXT PACKAGE" link in the navigation bar.
+     * Get "NEXT PACKAGE" link in the navigation bar.
+     *
+     * @return a content tree for the next link
      */
-    protected void navLinkNext() {
+    public Content getNavLinkNext() {
+        Content li;
         if (next == null) {
-            printText("doclet.Next_Package");
+            li = HtmlTree.LI(nextpackageLabel);
         } else {
             String path = DirectoryManager.getRelativePath(packageDoc.name(),
                                                            next.name());
-            printHyperLink(path + "package-summary.html", "",
-                configuration.getText("doclet.Next_Package"), true);
+            li = HtmlTree.LI(getHyperLink(path + "package-summary.html", "",
+                nextpackageLabel, "", ""));
         }
+        return li;
     }
 
     /**
-     * Print "Tree" link in the navigation bar. This will be link to the package
+     * Get "Tree" link in the navigation bar. This will be link to the package
      * tree file.
+     *
+     * @return a content tree for the tree link
      */
-    protected void navLinkTree() {
-        navCellStart();
-        printHyperLink("package-tree.html", "", configuration.getText("doclet.Tree"),
-                       true, "NavBarFont1");
-        navCellEnd();
+    protected Content getNavLinkTree() {
+        Content useLink = getHyperLink("package-tree.html", "",
+                treeLabel, "", "");
+        Content li = HtmlTree.LI(useLink);
+        return li;
     }
 
     /**
      * Highlight "Package" in the navigation bar, as this is the package page.
+     *
+     * @return a content tree for the package link
      */
-    protected void navLinkPackage() {
-        navCellRevStart();
-        fontStyle("NavBarFont1Rev");
-        strongText("doclet.Package");
-        fontEnd();
-        navCellEnd();
+    protected Content getNavLinkPackage() {
+        Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, packageLabel);
+        return li;
     }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/SerializedFormWriterImpl.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/SerializedFormWriterImpl.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,8 +25,10 @@
 
 package com.sun.tools.doclets.formats.html;
 
+import java.io.*;
 import com.sun.javadoc.*;
-import java.io.*;
+import com.sun.tools.doclets.formats.html.markup.*;
+import com.sun.tools.doclets.internal.toolkit.*;
 
 /**
  * Generate the Serialized Form Information Page.
@@ -64,76 +66,167 @@
     }
 
     /**
-     * Write the given package header.
+     * Get the given header.
      *
-     * @param packageName the package header to write.
+     * @param header the header to write
+     * @return the body content tree
      */
-    public void writePackageHeader(String packageName) {
-        hr(4, "noshade");
-        tableHeader();
-        thAlign("center");
-        font("+2");
-        strongText("doclet.Package");
-        print(' ');
-        strong(packageName);
-        tableFooter();
+    public Content getHeader(String header) {
+        Content bodyTree = getBody(true, getWindowTitle(header));
+        addTop(bodyTree);
+        addNavLinks(true, bodyTree);
+        Content h1Content = new StringContent(header);
+        Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, true,
+                HtmlStyle.title, h1Content);
+        Content div = HtmlTree.DIV(HtmlStyle.header, heading);
+        bodyTree.addContent(div);
+        return bodyTree;
     }
 
     /**
-     * Write the serial UID info.
+     * Get the serialized form summaries header.
      *
-     * @param header the header that will show up before the UID.
-     * @param serialUID the serial UID to print.
+     * @return the serialized form summary header tree
      */
-    public void writeSerialUIDInfo(String header, String serialUID) {
-        strong(header + "&nbsp;");
-        println(serialUID);
-        p();
+    public Content getSerializedSummariesHeader() {
+        HtmlTree ul = new HtmlTree(HtmlTag.UL);
+        ul.addStyle(HtmlStyle.blockList);
+        return ul;
+    }
+
+    /**
+     * Get the package serialized form header.
+     *
+     * @return the package serialized form header tree
+     */
+    public Content getPackageSerializedHeader() {
+        HtmlTree li = new HtmlTree(HtmlTag.LI);
+        li.addStyle(HtmlStyle.blockList);
+        return li;
     }
 
     /**
-     * Write the footer.
+     * Get the given package header.
+     *
+     * @param packageName the package header to write
+     * @return a content tree for the package header
      */
-    public void writeFooter() {
-        p();
-        hr();
-        navLinks(false);
-        printBottom();
-        printBodyHtmlEnd();
+    public Content getPackageHeader(String packageName) {
+        Content heading = HtmlTree.HEADING(HtmlConstants.PACKAGE_HEADING, true,
+                packageLabel);
+        heading.addContent(getSpace());
+        heading.addContent(packageName);
+        return heading;
     }
 
-
     /**
-     * Write the serializable class heading.
+     * Get the serialized class header.
      *
-     * @param classDoc the class being processed.
+     * @return a content tree for the serialized class header
      */
-    public void writeClassHeader(ClassDoc classDoc) {
+    public Content getClassSerializedHeader() {
+        HtmlTree ul = new HtmlTree(HtmlTag.UL);
+        ul.addStyle(HtmlStyle.blockList);
+        return ul;
+    }
+
+    /**
+     * Get the serializable class heading.
+     *
+     * @param classDoc the class being processed
+     * @return a content tree for the class header
+     */
+    public Content getClassHeader(ClassDoc classDoc) {
         String classLink = (classDoc.isPublic() || classDoc.isProtected())?
             getLink(new LinkInfoImpl(classDoc,
-                configuration.getClassName(classDoc))):
+            configuration.getClassName(classDoc))):
             classDoc.qualifiedName();
-        p();
-        anchor(classDoc.qualifiedName());
+        Content li = HtmlTree.LI(HtmlStyle.blockList, getMarkerAnchor(
+                classDoc.qualifiedName()));
         String superClassLink =
             classDoc.superclassType() != null ?
                 getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_SERIALIZED_FORM,
-                    classDoc.superclassType())) :
+                classDoc.superclassType())) :
                 null;
 
         //Print the heading.
         String className = superClassLink == null ?
             configuration.getText(
-                "doclet.Class_0_implements_serializable", classLink) :
+            "doclet.Class_0_implements_serializable", classLink) :
             configuration.getText(
-                "doclet.Class_0_extends_implements_serializable", classLink,
-                    superClassLink);
-        tableHeader();
-        thAlignColspan("left", 2);
-        font("+2");
-        strong(className);
-        tableFooter();
-        p();
+            "doclet.Class_0_extends_implements_serializable", classLink,
+            superClassLink);
+        Content classNameContent = new RawHtml(className);
+        li.addContent(HtmlTree.HEADING(HtmlConstants.SERIALIZED_MEMBER_HEADING,
+                classNameContent));
+        return li;
+    }
+
+    /**
+     * Get the serial UID info header.
+     *
+     * @return a content tree for the serial uid info header
+     */
+    public Content getSerialUIDInfoHeader() {
+        HtmlTree dl = new HtmlTree(HtmlTag.DL);
+        dl.addStyle(HtmlStyle.nameValue);
+        return dl;
+    }
+
+    /**
+     * Adds the serial UID info.
+     *
+     * @param header the header that will show up before the UID.
+     * @param serialUID the serial UID to print.
+     * @param serialUidTree the serial UID content tree to which the serial UID
+     *                      content will be added
+     */
+    public void addSerialUIDInfo(String header, String serialUID,
+            Content serialUidTree) {
+        Content headerContent = new StringContent(header);
+        serialUidTree.addContent(HtmlTree.DT(headerContent));
+        Content serialContent = new StringContent(serialUID);
+        serialUidTree.addContent(HtmlTree.DD(serialContent));
+    }
+
+    /**
+     * Get the class serialize content header.
+     *
+     * @return a content tree for the class serialize content header
+     */
+    public Content getClassContentHeader() {
+        HtmlTree ul = new HtmlTree(HtmlTag.UL);
+        ul.addStyle(HtmlStyle.blockList);
+        return ul;
+    }
+
+    /**
+     * Get the serialized content tree section.
+     *
+     * @param serializedTreeContent the serialized content tree to be added
+     * @return a div content tree
+     */
+    public Content getSerializedContent(Content serializedTreeContent) {
+        Content divContent = HtmlTree.DIV(HtmlStyle.serializedFormContainer,
+                serializedTreeContent);
+        return divContent;
+    }
+
+    /**
+     * Add the footer.
+     *
+     * @param serializedTree the serialized tree to be added
+     */
+    public void addFooter(Content serializedTree) {
+        addNavLinks(false, serializedTree);
+        addBottom(serializedTree);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void printDocument(Content serializedTree) {
+        printHtmlDocument(null, true, serializedTree);
     }
 
     private void tableHeader() {
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/SingleIndexWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/SingleIndexWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,9 +25,10 @@
 
 package com.sun.tools.doclets.formats.html;
 
+import java.io.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
-
-import java.io.*;
+import com.sun.tools.doclets.formats.html.markup.*;
+import com.sun.tools.doclets.internal.toolkit.*;
 
 /**
  * Generate only one index file for all the Member Names with Indexing in
@@ -36,6 +37,7 @@
  *
  * @see java.lang.Character
  * @author Atul M Dambalkar
+ * @author Bhavesh Patel (Modified)
  */
 public class SingleIndexWriter extends AbstractIndexWriter {
 
@@ -82,34 +84,35 @@
      * Member Field, Method and Constructor Description.
      */
     protected void generateIndexFile() throws IOException {
-        printHtmlHeader(configuration.getText("doclet.Window_Single_Index"),
-            null, true);
-        printTop();
-        navLinks(true);
-        printLinksForIndexes();
-
-        hr();
-
+        String title = configuration.getText("doclet.Window_Single_Index");
+        Content body = getBody(true, getWindowTitle(title));
+        addTop(body);
+        addNavLinks(true, body);
+        HtmlTree divTree = new HtmlTree(HtmlTag.DIV);
+        divTree.addStyle(HtmlStyle.contentContainer);
+        addLinksForIndexes(divTree);
         for (int i = 0; i < indexbuilder.elements().length; i++) {
             Character unicode = (Character)((indexbuilder.elements())[i]);
-            generateContents(unicode, indexbuilder.getMemberList(unicode));
+            addContents(unicode, indexbuilder.getMemberList(unicode), divTree);
         }
-
-        printLinksForIndexes();
-        navLinks(false);
-
-        printBottom();
-        printBodyHtmlEnd();
+        addLinksForIndexes(divTree);
+        body.addContent(divTree);
+        addNavLinks(false, body);
+        addBottom(body);
+        printHtmlDocument(null, true, body);
     }
 
     /**
-     * Print Links for all the Index Files per unicode character.
+     * Add links for all the Index Files per unicode character.
+     *
+     * @param contentTree the content tree to which the links for indexes will be added
      */
-    protected void printLinksForIndexes() {
+    protected void addLinksForIndexes(Content contentTree) {
         for (int i = 0; i < indexbuilder.elements().length; i++) {
             String unicode = (indexbuilder.elements())[i].toString();
-            printHyperLink("#_" + unicode + "_", unicode);
-            print(' ');
+            contentTree.addContent(
+                    getHyperLink("#_" + unicode + "_", new StringContent(unicode)));
+            contentTree.addContent(getSpace());
         }
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/SourceToHTMLConverter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -0,0 +1,298 @@
+/*
+ * Copyright (c) 2001, 2009, 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.doclets.formats.html;
+
+import java.io.*;
+import javax.tools.FileObject;
+import com.sun.javadoc.*;
+import com.sun.tools.doclets.internal.toolkit.*;
+import com.sun.tools.doclets.internal.toolkit.util.*;
+import com.sun.tools.doclets.formats.html.markup.*;
+
+/**
+ * Converts Java Source Code to HTML.
+ *
+ * This code is not part of an API.
+ * It is implementation that is subject to change.
+ * Do not use it as an API
+ *
+ * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
+ * @since 1.4
+ */
+public class SourceToHTMLConverter {
+
+    /**
+     * The number of trailing blank lines at the end of the page.
+     * This is inserted so that anchors at the bottom of small pages
+     * can be reached.
+     */
+    private static final int NUM_BLANK_LINES = 60;
+
+    /**
+     * New line to be added to the documentation.
+     */
+    private static final Content NEW_LINE = new RawHtml(DocletConstants.NL);
+
+    /**
+     * Relative path from the documentation root to the file that is being
+     * generated.
+     */
+    private static String relativePath = "";
+
+    /**
+     * Source is converted to HTML using static methods below.
+     */
+    private SourceToHTMLConverter() {}
+
+    /**
+     * Convert the Classes in the given RootDoc to an HTML.
+     *
+     * @param configuration the configuration.
+     * @param rd the RootDoc to convert.
+     * @param outputdir the name of the directory to output to.
+     */
+    public static void convertRoot(ConfigurationImpl configuration, RootDoc rd,
+            String outputdir) {
+        if (rd == null || outputdir == null) {
+            return;
+        }
+        PackageDoc[] pds = rd.specifiedPackages();
+        for (int i = 0; i < pds.length; i++) {
+            convertPackage(configuration, pds[i], outputdir);
+        }
+        ClassDoc[] cds = rd.specifiedClasses();
+        for (int i = 0; i < cds.length; i++) {
+            convertClass(configuration, cds[i],
+                    getPackageOutputDir(outputdir, cds[i].containingPackage()));
+        }
+    }
+
+    /**
+     * Convert the Classes in the given Package to an HTML.
+     *
+     * @param configuration the configuration.
+     * @param pd the Package to convert.
+     * @param outputdir the name of the directory to output to.
+     */
+    public static void convertPackage(ConfigurationImpl configuration, PackageDoc pd,
+            String outputdir) {
+        if (pd == null || outputdir == null) {
+            return;
+        }
+        String classOutputdir = getPackageOutputDir(outputdir, pd);
+        ClassDoc[] cds = pd.allClasses();
+        for (int i = 0; i < cds.length; i++) {
+            convertClass(configuration, cds[i], classOutputdir);
+        }
+    }
+
+    /**
+     * Return the directory write output to for the given package.
+     *
+     * @param outputDir the directory to output to.
+     * @param pd the Package to generate output for.
+     * @return the package output directory as a String.
+     */
+    private static String getPackageOutputDir(String outputDir, PackageDoc pd) {
+        return outputDir + File.separator +
+            DirectoryManager.getDirectoryPath(pd) + File.separator;
+    }
+
+    /**
+     * Convert the given Class to an HTML.
+     *
+     * @param configuration the configuration.
+     * @param cd the class to convert.
+     * @param outputdir the name of the directory to output to.
+     */
+    public static void convertClass(ConfigurationImpl configuration, ClassDoc cd,
+            String outputdir) {
+        if (cd == null || outputdir == null) {
+            return;
+        }
+        try {
+            SourcePosition sp = cd.position();
+            if (sp == null)
+                return;
+            Reader r;
+            // temp hack until we can update SourcePosition API.
+            if (sp instanceof com.sun.tools.javadoc.SourcePositionImpl) {
+                FileObject fo = ((com.sun.tools.javadoc.SourcePositionImpl) sp).fileObject();
+                if (fo == null)
+                    return;
+                r = fo.openReader(true);
+            } else {
+                File file = sp.file();
+                if (file == null)
+                    return;
+                r = new FileReader(file);
+            }
+            LineNumberReader reader = new LineNumberReader(r);
+            int lineno = 1;
+            String line;
+            relativePath = DirectoryManager.getRelativePath(DocletConstants.SOURCE_OUTPUT_DIR_NAME) +
+                    DirectoryManager.getRelativePath(cd.containingPackage());
+            Content body = getHeader();
+            Content pre = new HtmlTree(HtmlTag.PRE);
+            try {
+                while ((line = reader.readLine()) != null) {
+                    addLineNo(pre, lineno);
+                    addLine(pre, line, configuration.sourcetab, lineno);
+                    lineno++;
+                }
+            } finally {
+                reader.close();
+            }
+            addBlankLines(pre);
+            Content div = HtmlTree.DIV(HtmlStyle.sourceContainer, pre);
+            body.addContent(div);
+            writeToFile(body, outputdir, cd.name(), configuration);
+        } catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Write the output to the file.
+     *
+     * @param body the documentation content to be written to the file.
+     * @param outputDir the directory to output to.
+     * @param className the name of the class that I am converting to HTML.
+     * @param configuration the Doclet configuration to pass notices to.
+     */
+    private static void writeToFile(Content body, String outputDir,
+            String className, ConfigurationImpl configuration) throws IOException {
+        Content htmlDocType = DocType.Transitional();
+        Content head = new HtmlTree(HtmlTag.HEAD);
+        head.addContent(HtmlTree.TITLE(new StringContent(
+                configuration.getText("doclet.Window_Source_title"))));
+        head.addContent(getStyleSheetProperties(configuration));
+        Content htmlTree = HtmlTree.HTML(configuration.getLocale().getLanguage(),
+                head, body);
+        Content htmlDocument = new HtmlDocument(htmlDocType, htmlTree);
+        File dir = new File(outputDir);
+        dir.mkdirs();
+        File newFile = new File(dir, className + ".html");
+        configuration.message.notice("doclet.Generating_0", newFile.getPath());
+        FileOutputStream fout = new FileOutputStream(newFile);
+        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fout));
+        bw.write(htmlDocument.toString());
+        bw.close();
+        fout.close();
+    }
+
+    /**
+     * Returns a link to the stylesheet file.
+     *
+     * @param configuration the doclet configuration for the current run of javadoc
+     * @return an HtmlTree for the lINK tag which provides the stylesheet location
+     */
+    public static HtmlTree getStyleSheetProperties(ConfigurationImpl configuration) {
+        String filename = configuration.stylesheetfile;
+        if (filename.length() > 0) {
+            File stylefile = new File(filename);
+            String parent = stylefile.getParent();
+            filename = (parent == null)?
+                filename:
+                filename.substring(parent.length() + 1);
+        } else {
+            filename = "stylesheet.css";
+        }
+        filename = relativePath + filename;
+        HtmlTree link = HtmlTree.LINK("stylesheet", "text/css", filename, "Style");
+        return link;
+    }
+
+    /**
+     * Get the header.
+     *
+     * @return the header content for the HTML file
+     */
+    private static Content getHeader() {
+        return new HtmlTree(HtmlTag.BODY);
+    }
+
+    /**
+     * Add the line numbers for the source code.
+     *
+     * @param pre the content tree to which the line number will be added
+     * @param lineno The line number
+     */
+    private static void addLineNo(Content pre, int lineno) {
+        HtmlTree span = new HtmlTree(HtmlTag.SPAN);
+        span.addStyle(HtmlStyle.sourceLineNo);
+        if (lineno < 10) {
+            span.addContent("00" + Integer.toString(lineno));
+        } else if (lineno < 100) {
+            span.addContent("0" + Integer.toString(lineno));
+        } else {
+            span.addContent(Integer.toString(lineno));
+        }
+        pre.addContent(span);
+    }
+
+    /**
+     * Add a line from source to the HTML file that is generated.
+     *
+     * @param pre the content tree to which the line will be added.
+     * @param line the string to format.
+     * @param tabLength the number of spaces for each tab.
+     * @param currentLineNo the current number.
+     */
+    private static void addLine(Content pre, String line, int tabLength,
+            int currentLineNo) {
+        if (line != null) {
+            StringBuffer lineBuffer = new StringBuffer(Util.escapeHtmlChars(line));
+            Util.replaceTabs(tabLength, lineBuffer);
+            pre.addContent(new RawHtml(lineBuffer.toString()));
+            Content anchor = HtmlTree.A_NAME("line." + Integer.toString(currentLineNo));
+            pre.addContent(anchor);
+            pre.addContent(NEW_LINE);
+        }
+    }
+
+    /**
+     * Add trailing blank lines at the end of the page.
+     *
+     * @param pre the content tree to which the blank lines will be added.
+     */
+    private static void addBlankLines(Content pre) {
+        for (int i = 0; i < NUM_BLANK_LINES; i++) {
+            pre.addContent(NEW_LINE);
+        }
+    }
+
+    /**
+     * Given a <code>Doc</code>, return an anchor name for it.
+     *
+     * @param d the <code>Doc</code> to check.
+     * @return the name of the anchor.
+     */
+    public static String getAnchorName(Doc d) {
+        return "line." + d.position().line();
+    }
+}
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/SplitIndexWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/SplitIndexWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,9 +25,10 @@
 
 package com.sun.tools.doclets.formats.html;
 
+import java.io.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
-
-import java.io.*;
+import com.sun.tools.doclets.formats.html.markup.*;
+import com.sun.tools.doclets.internal.toolkit.*;
 
 /**
  * Generate Separate Index Files for all the member names with Indexing in
@@ -36,6 +37,7 @@
  *
  * @see java.lang.Character
  * @author Atul M Dambalkar
+ * @author Bhavesh Patel (Modified)
  */
 public class SplitIndexWriter extends AbstractIndexWriter {
 
@@ -109,56 +111,68 @@
      * index.
      */
     protected void generateIndexFile(Character unicode) throws IOException {
-        printHtmlHeader(configuration.getText("doclet.Window_Split_Index",
-            unicode.toString()), null, true);
-        printTop();
-        navLinks(true);
-        printLinksForIndexes();
-
-        hr();
-
-        generateContents(unicode, indexbuilder.getMemberList(unicode));
-
-        navLinks(false);
-        printLinksForIndexes();
-
-        printBottom();
-        printBodyHtmlEnd();
+        String title = configuration.getText("doclet.Window_Split_Index",
+                unicode.toString());
+        Content body = getBody(true, getWindowTitle(title));
+        addTop(body);
+        addNavLinks(true, body);
+        HtmlTree divTree = new HtmlTree(HtmlTag.DIV);
+        divTree.addStyle(HtmlStyle.contentContainer);
+        addLinksForIndexes(divTree);
+        addContents(unicode, indexbuilder.getMemberList(unicode), divTree);
+        addLinksForIndexes(divTree);
+        body.addContent(divTree);
+        addNavLinks(false, body);
+        addBottom(body);
+        printHtmlDocument(null, true, body);
     }
 
     /**
-     * Print Links for all the Index Files per unicode character.
+     * Add links for all the Index Files per unicode character.
+     *
+     * @param contentTree the content tree to which the links for indexes will be added
      */
-    protected void printLinksForIndexes() {
-        for (int i = 0; i < indexbuilder.elements().length; i++) {
+    protected void addLinksForIndexes(Content contentTree) {
+        Object[] unicodeChars = indexbuilder.elements();
+        for (int i = 0; i < unicodeChars.length; i++) {
             int j = i + 1;
-            printHyperLink("index-" + j + ".html",
-                           indexbuilder.elements()[i].toString());
-            print(' ');
+            contentTree.addContent(getHyperLink("index-" + j + ".html",
+                    new StringContent(unicodeChars[i].toString())));
+            contentTree.addContent(getSpace());
         }
     }
 
     /**
-     * Print the previous unicode character index link.
+     * Get link to the previous unicode character.
+     *
+     * @return a content tree for the link
      */
-    protected void navLinkPrevious() {
+    public Content getNavLinkPrevious() {
+        Content prevletterLabel = getResource("doclet.Prev_Letter");
         if (prev == -1) {
-            printText("doclet.Prev_Letter");
-        } else {
-            printHyperLink("index-" + prev + ".html", "",
-                configuration.getText("doclet.Prev_Letter"), true);
+            return HtmlTree.LI(prevletterLabel);
+        }
+        else {
+            Content prevLink = getHyperLink("index-" + prev + ".html", "",
+                    prevletterLabel);
+            return HtmlTree.LI(prevLink);
         }
     }
 
     /**
-     * Print the next unicode character index link.
+     * Get link to the next unicode character.
+     *
+     * @return a content tree for the link
      */
-    protected void navLinkNext() {
+    public Content getNavLinkNext() {
+        Content nextletterLabel = getResource("doclet.Next_Letter");
         if (next == -1) {
-            printText("doclet.Next_Letter");
-        } else {
-            printHyperLink("index-" + next + ".html","",
-                configuration.getText("doclet.Next_Letter"), true);
+            return HtmlTree.LI(nextletterLabel);
+        }
+        else {
+            Content nextLink = getHyperLink("index-" + next + ".html","",
+                    nextletterLabel);
+            return HtmlTree.LI(nextLink);
         }
     }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/StylesheetWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,130 +0,0 @@
-/*
- * Copyright (c) 1998, 2005, 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.doclets.formats.html;
-
-import com.sun.tools.doclets.internal.toolkit.util.*;
-
-import java.io.*;
-
-/**
- * Writes the style sheet for the doclet output.
- *
- * @author Atul M Dambalkar
- * @author Bhavesh Patel (Modified)
- */
-public class StylesheetWriter extends HtmlDocletWriter {
-
-    /**
-     * Constructor.
-     */
-    public StylesheetWriter(ConfigurationImpl configuration,
-                            String filename) throws IOException {
-        super(configuration, filename);
-    }
-
-    /**
-     * Generate the style file contents.
-     * @throws DocletAbortException
-     */
-    public static void generate(ConfigurationImpl configuration) {
-        StylesheetWriter stylegen;
-        String filename = "";
-        try {
-            filename = "stylesheet.css";
-            stylegen = new StylesheetWriter(configuration, filename);
-            stylegen.generateStyleFile();
-            stylegen.close();
-        } catch (IOException exc) {
-            configuration.standardmessage.error(
-                        "doclet.exception_encountered",
-                        exc.toString(), filename);
-            throw new DocletAbortException();
-        }
-    }
-
-    /**
-     * Generate the style file contents.
-     */
-    protected void generateStyleFile() {
-        print("/* "); printText("doclet.Style_line_1"); println(" */");
-        println("");
-
-        print("/* "); printText("doclet.Style_line_2"); println(" */");
-        println("");
-
-        print("/* "); printText("doclet.Style_line_3"); println(" */");
-        println("body { background-color: #FFFFFF; color:#000000 }");
-        println("");
-
-        print("/* "); printText("doclet.Style_Headings"); println(" */");
-        println("h1 { font-size: 145% }");
-        println("");
-
-        print("/* "); printText("doclet.Style_line_4"); println(" */");
-        print(".TableHeadingColor     { background: #CCCCFF; color:#000000 }");
-        print(" /* "); printText("doclet.Style_line_5"); println(" */");
-        print(".TableSubHeadingColor  { background: #EEEEFF; color:#000000 }");
-        print(" /* "); printText("doclet.Style_line_6"); println(" */");
-        print(".TableRowColor         { background: #FFFFFF; color:#000000 }");
-        print(" /* "); printText("doclet.Style_line_7"); println(" */");
-        println("");
-
-        print("/* "); printText("doclet.Style_line_8"); println(" */");
-        println(".FrameTitleFont   { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 }");
-        println(".FrameHeadingFont { font-size:  90%; font-family: Helvetica, Arial, sans-serif; color:#000000 }");
-        println(".FrameItemFont    { font-size:  90%; font-family: Helvetica, Arial, sans-serif; color:#000000 }");
-        println("");
-
-       // Removed doclet.Style_line_9 as no longer needed
-
-        print("/* "); printText("doclet.Style_line_10"); println(" */");
-        print(".NavBarCell1    { background-color:#EEEEFF; color:#000000}");
-        print(" /* "); printText("doclet.Style_line_6"); println(" */");
-        print(".NavBarCell1Rev { background-color:#00008B; color:#FFFFFF}");
-        print(" /* "); printText("doclet.Style_line_11"); println(" */");
-
-        print(".NavBarFont1    { font-family: Arial, Helvetica, sans-serif; color:#000000;");
-        println("color:#000000;}");
-        print(".NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;");
-        println("color:#FFFFFF;}");
-        println("");
-
-        print(".NavBarCell2    { font-family: Arial, Helvetica, sans-serif; ");
-        println("background-color:#FFFFFF; color:#000000}");
-        print(".NavBarCell3    { font-family: Arial, Helvetica, sans-serif; ");
-        println("background-color:#FFFFFF; color:#000000}");
-
-        print("/* "); printText("doclet.Style_line_12"); println(" */");
-        print(".TableCaption     { background: #CCCCFF; color:#000000; text-align: left; font-size: 150%; font-weight: bold; border-left: 2px ridge; border-right: 2px ridge; border-top: 2px ridge; padding-left: 5px; }");
-        print(" /* "); printText("doclet.Style_line_5"); println(" */");
-        print(".TableSubCaption  { background: #EEEEFF; color:#000000; text-align: left; font-weight: bold; border-left: 2px ridge; border-right: 2px ridge; border-top: 2px ridge; padding-left: 5px; }");
-        print(" /* "); printText("doclet.Style_line_6"); println(" */");
-        print(".TableHeader     { text-align: center; font-size: 80%; font-weight: bold; }");
-        println("");
-
-    }
-
-}
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/SubWriterHolderWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/SubWriterHolderWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,10 +25,11 @@
 
 package com.sun.tools.doclets.formats.html;
 
+import java.io.*;
 import com.sun.javadoc.*;
+import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
-
-import java.io.*;
+import com.sun.tools.doclets.formats.html.markup.*;
 
 /**
  * This abstract class exists to provide functionality needed in the
@@ -71,13 +72,31 @@
         tdEnd();
     }
 
-    public void printSummaryHeader(AbstractMemberWriter mw, ClassDoc cd) {
-        mw.printSummaryAnchor(cd);
-        mw.printTableSummary();
-        tableCaptionStart();
-        mw.printSummaryLabel();
-        tableCaptionEnd();
-        mw.printSummaryTableHeader(cd);
+    /**
+     * Add the summary header.
+     *
+     * @param mw the writer for the member being documented
+     * @param cd the classdoc to be documented
+     * @param memberTree the content tree to which the summary header will be added
+     */
+    public void addSummaryHeader(AbstractMemberWriter mw, ClassDoc cd,
+            Content memberTree) {
+        mw.addSummaryAnchor(cd, memberTree);
+        mw.addSummaryLabel(memberTree);
+    }
+
+    /**
+     * Get the summary table.
+     *
+     * @param mw the writer for the member being documented
+     * @param cd the classdoc to be documented
+     * @return the content tree for the summary table
+     */
+    public Content getSummaryTableTree(AbstractMemberWriter mw, ClassDoc cd) {
+        Content table = HtmlTree.TABLE(HtmlStyle.overviewSummary, 0, 3, 0,
+                mw.getTableSummary(), getTableCaption(mw.getCaption()));
+        table.addContent(getSummaryTableHeader(mw.getSummaryTableHeader(cd), "col"));
+        return table;
     }
 
     public void printTableHeadingBackground(String str) {
@@ -88,15 +107,17 @@
         tableEnd();
     }
 
-    public void printInheritedSummaryHeader(AbstractMemberWriter mw, ClassDoc cd) {
-        mw.printInheritedSummaryAnchor(cd);
-        tableIndexSummary();
-        tableInheritedHeaderStart("#EEEEFF");
-        mw.printInheritedSummaryLabel(cd);
-        tableInheritedHeaderEnd();
-        trBgcolorStyle("white", "TableRowColor");
-        summaryRow(0);
-        code();
+    /**
+     * Add the inherited summary header.
+     *
+     * @param mw the writer for the member being documented
+     * @param cd the classdoc to be documented
+     * @param inheritedTree the content tree to which the inherited summary header will be added
+     */
+    public void addInheritedSummaryHeader(AbstractMemberWriter mw, ClassDoc cd,
+            Content inheritedTree) {
+        mw.addInheritedSummaryAnchor(cd, inheritedTree);
+        mw.addInheritedSummaryLabel(cd, inheritedTree);
     }
 
     public void printSummaryFooter(AbstractMemberWriter mw, ClassDoc cd) {
@@ -112,8 +133,14 @@
         space();
     }
 
-    protected void printIndexComment(Doc member) {
-        printIndexComment(member, member.firstSentenceTags());
+    /**
+     * Add the index comment.
+     *
+     * @param member the member being documented
+     * @param contentTree the content tree to which the comment will be added
+     */
+    protected void addIndexComment(Doc member, Content contentTree) {
+        addIndexComment(member, member.firstSentenceTags(), contentTree);
     }
 
     protected void printIndexComment(Doc member, Tag[] firstSentenceTags) {
@@ -134,17 +161,60 @@
         printSummaryComment(member, firstSentenceTags);
     }
 
-    public void printSummaryLinkType(AbstractMemberWriter mw,
-                                     ProgramElementDoc member) {
-        trBgcolorStyle("white", "TableRowColor");
-        mw.printSummaryType(member);
-        summaryRow(0);
-        code();
+    /**
+     * Add the index comment.
+     *
+     * @param member the member being documented
+     * @param firstSentenceTags the first sentence tags for the member to be documented
+     * @param tdSummary the content tree to which the comment will be added
+     */
+    protected void addIndexComment(Doc member, Tag[] firstSentenceTags,
+            Content tdSummary) {
+        Tag[] deprs = member.tags("deprecated");
+        Content div;
+        if (Util.isDeprecated((ProgramElementDoc) member)) {
+            Content strong = HtmlTree.STRONG(deprecatedPhrase);
+            div = HtmlTree.DIV(HtmlStyle.block, strong);
+            div.addContent(getSpace());
+            if (deprs.length > 0) {
+                addInlineDeprecatedComment(member, deprs[0], div);
+            }
+            tdSummary.addContent(div);
+            return;
+        } else {
+            ClassDoc cd = ((ProgramElementDoc)member).containingClass();
+            if (cd != null && Util.isDeprecated(cd)) {
+                Content strong = HtmlTree.STRONG(deprecatedPhrase);
+                div = HtmlTree.DIV(HtmlStyle.block, strong);
+                div.addContent(getSpace());
+                tdSummary.addContent(div);
+            }
+        }
+        addSummaryComment(member, firstSentenceTags, tdSummary);
     }
 
-    public void printSummaryLinkComment(AbstractMemberWriter mw,
-                                        ProgramElementDoc member) {
-        printSummaryLinkComment(mw, member, member.firstSentenceTags());
+    /**
+     * Add the summary type for the member.
+     *
+     * @param mw the writer for the member being documented
+     * @param member the member to be documented
+     * @param tdSummaryType the content tree to which the type will be added
+     */
+    public void addSummaryType(AbstractMemberWriter mw, ProgramElementDoc member,
+            Content tdSummaryType) {
+        mw.addSummaryType(member, tdSummaryType);
+    }
+
+    /**
+     * Add the summary link for the member.
+     *
+     * @param mw the writer for the member being documented
+     * @param member the member to be documented
+     * @param contentTree the content tree to which the link will be added
+     */
+    public void addSummaryLinkComment(AbstractMemberWriter mw,
+            ProgramElementDoc member, Content contentTree) {
+        addSummaryLinkComment(mw, member, member.firstSentenceTags(), contentTree);
     }
 
     public void printSummaryLinkComment(AbstractMemberWriter mw,
@@ -159,12 +229,34 @@
         trEnd();
     }
 
-    public void printInheritedSummaryMember(AbstractMemberWriter mw, ClassDoc cd,
-            ProgramElementDoc member, boolean isFirst) {
+    /**
+     * Add the summary link comment.
+     *
+     * @param mw the writer for the member being documented
+     * @param member the member being documented
+     * @param firstSentenceTags the first sentence tags for the member to be documented
+     * @param tdSummary the content tree to which the comment will be added
+     */
+    public void addSummaryLinkComment(AbstractMemberWriter mw,
+            ProgramElementDoc member, Tag[] firstSentenceTags, Content tdSummary) {
+        addIndexComment(member, firstSentenceTags, tdSummary);
+    }
+
+    /**
+     * Add the inherited member summary.
+     *
+     * @param mw the writer for the member being documented
+     * @param cd the class being documented
+     * @param member the member being documented
+     * @param isFirst true if its the first link being documented
+     * @param linksTree the content tree to which the summary will be added
+     */
+    public void addInheritedMemberSummary(AbstractMemberWriter mw, ClassDoc cd,
+            ProgramElementDoc member, boolean isFirst, Content linksTree) {
         if (! isFirst) {
-            mw.print(", ");
+            linksTree.addContent(", ");
         }
-        mw.writeInheritedSummaryLink(cd, member);
+        mw.addInheritedSummaryLink(cd, member, linksTree);
     }
 
     public void printMemberHeader() {
@@ -174,4 +266,67 @@
     public void printMemberFooter() {
     }
 
+    /**
+     * Get the document content header tree
+     *
+     * @return a content tree the document content header
+     */
+    public Content getContentHeader() {
+        HtmlTree div = new HtmlTree(HtmlTag.DIV);
+        div.addStyle(HtmlStyle.contentContainer);
+        return div;
+    }
+
+    /**
+     * Get the member header tree
+     *
+     * @return a content tree the member header
+     */
+    public Content getMemberTreeHeader() {
+        HtmlTree li = new HtmlTree(HtmlTag.LI);
+        li.addStyle(HtmlStyle.blockList);
+        return li;
+    }
+
+    /**
+     * Get the member tree
+     *
+     * @param contentTree the tree used to generate the complete member tree
+     * @return a content tree for the member
+     */
+    public Content getMemberTree(Content contentTree) {
+        Content ul = HtmlTree.UL(HtmlStyle.blockList, contentTree);
+        return ul;
+    }
+
+    /**
+     * Get the member summary tree
+     *
+     * @param contentTree the tree used to generate the member summary tree
+     * @return a content tree for the member summary
+     */
+    public Content getMemberSummaryTree(Content contentTree) {
+        return getMemberTree(HtmlStyle.summary, contentTree);
+    }
+
+    /**
+     * Get the member details tree
+     *
+     * @param contentTree the tree used to generate the member details tree
+     * @return a content tree for the member details
+     */
+    public Content getMemberDetailsTree(Content contentTree) {
+        return getMemberTree(HtmlStyle.details, contentTree);
+    }
+
+    /**
+     * Get the member tree
+     *
+     * @param style the style class to be added to the content tree
+     * @param contentTree the tree used to generate the complete member tree
+     */
+    public Content getMemberTree(HtmlStyle style, Content contentTree) {
+        Content div = HtmlTree.DIV(style, getMemberTree(contentTree));
+        return div;
+    }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/TagletWriterImpl.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/TagletWriterImpl.java	Wed Dec 01 11:02:38 2010 -0800
@@ -70,9 +70,9 @@
         Tag[] deprs = doc.tags("deprecated");
         if (doc instanceof ClassDoc) {
             if (Util.isDeprecated((ProgramElementDoc) doc)) {
-                output.append("<STRONG>" +
+                output.append("<span class=\"strong\">" +
                     ConfigurationImpl.getInstance().
-                        getText("doclet.Deprecated") + "</STRONG>&nbsp;");
+                        getText("doclet.Deprecated") + "</span>&nbsp;");
                 if (deprs.length > 0) {
                     Tag[] commentTags = deprs[0].inlineTags();
                     if (commentTags.length > 0) {
@@ -82,30 +82,24 @@
                         );
                     }
                 }
-                output.append("<p>");
             }
         } else {
             MemberDoc member = (MemberDoc) doc;
             if (Util.isDeprecated((ProgramElementDoc) doc)) {
-                output.append("<DD><STRONG>" +
+                output.append("<span class=\"strong\">" +
                     ConfigurationImpl.getInstance().
-                            getText("doclet.Deprecated") + "</STRONG>&nbsp;");
+                            getText("doclet.Deprecated") + "</span>&nbsp;");
                 if (deprs.length > 0) {
-                    output.append("<I>");
+                    output.append("<i>");
                     output.append(commentTagsToOutput(null, doc,
                         deprs[0].inlineTags(), false).toString());
-                    output.append("</I>");
+                    output.append("</i>");
                 }
-                if (member instanceof ExecutableMemberDoc) {
-                    output.append(DocletConstants.NL + "<P>" +
-                        DocletConstants.NL);
-                }
-                output.append("</DD>");
             } else {
                 if (Util.isDeprecated(member.containingClass())) {
-                    output.append("<DD><STRONG>" +
+                    output.append("<span class=\"strong\">" +
                     ConfigurationImpl.getInstance().
-                            getText("doclet.Deprecated") + "</STRONG>&nbsp;</DD>");
+                            getText("doclet.Deprecated") + "</span>&nbsp;");
                 }
             }
         }
@@ -124,8 +118,8 @@
      */
     public TagletOutput getParamHeader(String header) {
         StringBuffer result = new StringBuffer();
-        result.append("<DT>");
-        result.append("<STRONG>" +  header + "</STRONG></DT>");
+        result.append("<dt>");
+        result.append("<span class=\"strong\">" +  header + "</span></dt>");
         return new TagletOutputImpl(result.toString());
     }
 
@@ -133,8 +127,8 @@
      * {@inheritDoc}
      */
     public TagletOutput paramTagOutput(ParamTag paramTag, String paramName) {
-        TagletOutput result = new TagletOutputImpl("<DD><CODE>" + paramName + "</CODE>"
-         + " - " + htmlWriter.commentTagsToString(paramTag, null, paramTag.inlineTags(), false) + "</DD>");
+        TagletOutput result = new TagletOutputImpl("<dd><code>" + paramName + "</code>"
+         + " - " + htmlWriter.commentTagsToString(paramTag, null, paramTag.inlineTags(), false) + "</dd>");
         return result;
     }
 
@@ -142,11 +136,11 @@
      * {@inheritDoc}
      */
     public TagletOutput returnTagOutput(Tag returnTag) {
-        TagletOutput result = new TagletOutputImpl(DocletConstants.NL + "<DT>" +
-            "<STRONG>" + htmlWriter.configuration.getText("doclet.Returns") +
-            "</STRONG>" + "</DT>" + "<DD>" +
+        TagletOutput result = new TagletOutputImpl(DocletConstants.NL + "<dt>" +
+            "<span class=\"strong\">" + htmlWriter.configuration.getText("doclet.Returns") +
+            "</span>" + "</dt>" + "<dd>" +
             htmlWriter.commentTagsToString(returnTag, null, returnTag.inlineTags(),
-            false) + "</DD>");
+            false) + "</dd>");
         return result;
     }
 
@@ -168,7 +162,7 @@
                 htmlWriter instanceof ClassWriterImpl) {
             //Automatically add link to constant values page for constant fields.
             result = addSeeHeader(result);
-            result += htmlWriter.getHyperLink(htmlWriter.relativePath +
+            result += htmlWriter.getHyperLinkString(htmlWriter.relativePath +
                 ConfigurationImpl.CONSTANTS_FILE_NAME
                 + "#" + ((ClassWriterImpl) htmlWriter).getClassDoc().qualifiedName()
                 + "." + ((FieldDoc) holder).name(),
@@ -179,18 +173,19 @@
             if ((SerializedFormBuilder.serialInclude(holder) &&
                       SerializedFormBuilder.serialInclude(((ClassDoc)holder).containingPackage()))) {
                 result = addSeeHeader(result);
-                result += htmlWriter.getHyperLink(htmlWriter.relativePath + "serialized-form.html",
+                result += htmlWriter.getHyperLinkString(htmlWriter.relativePath + "serialized-form.html",
                         ((ClassDoc)holder).qualifiedName(), htmlWriter.configuration.getText("doclet.Serialized_Form"), false);
             }
         }
-        return result.equals("") ? null : new TagletOutputImpl(result + "</DD>");
+        return result.equals("") ? null : new TagletOutputImpl(result + "</dd>");
     }
 
     private String addSeeHeader(String result) {
         if (result != null && result.length() > 0) {
             return result + ", " + DocletConstants.NL;
         } else {
-            return "<DT><STRONG>" + htmlWriter.configuration().getText("doclet.See_Also") + "</STRONG></DT><DD>";
+            return "<dt><span class=\"strong\">" +
+                    htmlWriter.configuration().getText("doclet.See_Also") + "</span></dt><dd>";
         }
      }
 
@@ -198,15 +193,15 @@
      * {@inheritDoc}
      */
     public TagletOutput simpleTagOutput(Tag[] simpleTags, String header) {
-        String result = "<DT><STRONG>" + header + "</STRONG></DT>" + DocletConstants.NL +
-            "  <DD>";
+        String result = "<dt><span class=\"strong\">" + header + "</span></dt>" + DocletConstants.NL +
+            "  <dd>";
         for (int i = 0; i < simpleTags.length; i++) {
             if (i > 0) {
                 result += ", ";
             }
             result += htmlWriter.commentTagsToString(simpleTags[i], null, simpleTags[i].inlineTags(), false);
         }
-        result += "</DD>" + DocletConstants.NL;
+        result += "</dd>" + DocletConstants.NL;
         return new TagletOutputImpl(result);
     }
 
@@ -214,24 +209,24 @@
      * {@inheritDoc}
      */
     public TagletOutput simpleTagOutput(Tag simpleTag, String header) {
-        return new TagletOutputImpl("<DT><STRONG>" + header + "</STRONG></DT>" + "  <DD>"
+        return new TagletOutputImpl("<dt><span class=\"strong\">" + header + "</span></dt>" + "  <dd>"
             + htmlWriter.commentTagsToString(simpleTag, null, simpleTag.inlineTags(), false)
-            + "</DD>" + DocletConstants.NL);
+            + "</dd>" + DocletConstants.NL);
     }
 
     /**
      * {@inheritDoc}
      */
     public TagletOutput getThrowsHeader() {
-        return new TagletOutputImpl(DocletConstants.NL + "<DT>" + "<STRONG>" +
-            htmlWriter.configuration().getText("doclet.Throws") + "</STRONG></DT>");
+        return new TagletOutputImpl(DocletConstants.NL + "<dt>" + "<span class=\"strong\">" +
+            htmlWriter.configuration().getText("doclet.Throws") + "</span></dt>");
     }
 
     /**
      * {@inheritDoc}
      */
     public TagletOutput throwsTagOutput(ThrowsTag throwsTag) {
-        String result = DocletConstants.NL + "<DD>";
+        String result = DocletConstants.NL + "<dd>";
         result += throwsTag.exceptionType() == null ?
             htmlWriter.codeText(throwsTag.exceptionName()) :
             htmlWriter.codeText(
@@ -243,7 +238,7 @@
         if (text != null && text.toString().length() > 0) {
             result += " - " + text;
         }
-        result += "</DD>";
+        result += "</dd>";
         return new TagletOutputImpl(result);
     }
 
@@ -251,9 +246,9 @@
      * {@inheritDoc}
      */
     public TagletOutput throwsTagOutput(Type throwsType) {
-        return new TagletOutputImpl(DocletConstants.NL + "<DD>" +
+        return new TagletOutputImpl(DocletConstants.NL + "<dd>" +
             htmlWriter.codeText(htmlWriter.getLink(
-                new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER, throwsType))) + "</DD>");
+                new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER, throwsType))) + "</dd>");
     }
 
     /**
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/TreeWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/TreeWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -29,6 +29,8 @@
 
 import com.sun.javadoc.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
+import com.sun.tools.doclets.formats.html.markup.*;
+import com.sun.tools.doclets.internal.toolkit.*;
 
 /**
  * Generate Class Hierarchy page for all the Classes in this run.  Use
@@ -37,6 +39,7 @@
  * current or the destination directory.
  *
  * @author Atul M Dambalkar
+ * @author Bhavesh Patel (Modified)
  */
 public class TreeWriter extends AbstractTreeWriter {
 
@@ -90,86 +93,70 @@
     }
 
     /**
-     * Print the interface hierarchy and class hierarchy in the file.
+     * Generate the interface hierarchy and class hierarchy.
      */
     public void generateTreeFile() throws IOException {
-        printHtmlHeader(configuration.getText("doclet.Window_Class_Hierarchy"),
-            null, true);
-
-        printTreeHeader();
-
-        printPageHeading();
-
-        printPackageTreeLinks();
-
-        generateTree(classtree.baseclasses(), "doclet.Class_Hierarchy");
-        generateTree(classtree.baseinterfaces(), "doclet.Interface_Hierarchy");
-        generateTree(classtree.baseAnnotationTypes(), "doclet.Annotation_Type_Hierarchy");
-        generateTree(classtree.baseEnums(), "doclet.Enum_Hierarchy");
-
-        printTreeFooter();
+        Content body = getTreeHeader();
+        Content headContent = getResource("doclet.Hierarchy_For_All_Packages");
+        Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, false,
+                HtmlStyle.title, headContent);
+        Content div = HtmlTree.DIV(HtmlStyle.header, heading);
+        addPackageTreeLinks(div);
+        body.addContent(div);
+        HtmlTree divTree = new HtmlTree(HtmlTag.DIV);
+        divTree.addStyle(HtmlStyle.contentContainer);
+        addTree(classtree.baseclasses(), "doclet.Class_Hierarchy", divTree);
+        addTree(classtree.baseinterfaces(), "doclet.Interface_Hierarchy", divTree);
+        addTree(classtree.baseAnnotationTypes(), "doclet.Annotation_Type_Hierarchy", divTree);
+        addTree(classtree.baseEnums(), "doclet.Enum_Hierarchy", divTree);
+        body.addContent(divTree);
+        addNavLinks(false, body);
+        addBottom(body);
+        printHtmlDocument(null, true, body);
     }
 
     /**
-     * Generate the links to all the package tree files.
+     * Add the links to all the package tree files.
+     *
+     * @param contentTree the content tree to which the links will be added
      */
-    protected void printPackageTreeLinks() {
+    protected void addPackageTreeLinks(Content contentTree) {
         //Do nothing if only unnamed package is used
         if (packages.length == 1 && packages[0].name().length() == 0) {
             return;
         }
         if (!classesonly) {
-            dl();
-            dt();
-            strongText("doclet.Package_Hierarchies");
-            dtEnd();
-            dd();
+            Content span = HtmlTree.SPAN(HtmlStyle.strong,
+                    getResource("doclet.Package_Hierarchies"));
+            contentTree.addContent(span);
+            HtmlTree ul = new HtmlTree(HtmlTag.UL);
+            ul.addStyle(HtmlStyle.horizontal);
             for (int i = 0; i < packages.length; i++) {
                 if (packages[i].name().length() == 0) {
                     continue;
                 }
-                String filename = pathString(packages[i], "package-tree.html");
-                printHyperLink(filename, "", packages[i].name());
+                String link = pathString(packages[i], "package-tree.html");
+                Content li = HtmlTree.LI(getHyperLink(
+                        link, "", new StringContent(packages[i].name())));
                 if (i < packages.length - 1) {
-                    print(", ");
+                    li.addContent(", ");
                 }
+                ul.addContent(li);
             }
-            ddEnd();
-            dlEnd();
-            hr();
+            contentTree.addContent(ul);
         }
     }
 
     /**
-     * Print the top text (from the -top option) and
-     * navigation bar at the top of page.
-     */
-    protected void printTreeHeader() {
-        printTop();
-        navLinks(true);
-        hr();
-    }
-
-    /**
-     * Print the navigation bar and bottom text (from the -bottom option)
-     * at the bottom of page.
+     * Get the tree header.
+     *
+     * @return a content tree for the tree header
      */
-    protected void printTreeFooter() {
-        hr();
-        navLinks(false);
-        printBottom();
-        printBodyHtmlEnd();
-    }
-
-    /**
-     * Print the page title "Hierarchy For All Packages" at the top of the tree
-     * page.
-     */
-    protected void printPageHeading() {
-        center();
-        h2();
-        printText("doclet.Hierarchy_For_All_Packages");
-        h2End();
-        centerEnd();
+    protected Content getTreeHeader() {
+        String title = configuration.getText("doclet.Window_Class_Hierarchy");
+        Content bodyTree = getBody(true, getWindowTitle(title));
+        addTop(bodyTree);
+        addNavLinks(true, bodyTree);
+        return bodyTree;
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/Comment.java	Wed Dec 01 11:02:38 2010 -0800
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2010, 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.doclets.formats.html.markup;
+
+import com.sun.tools.doclets.internal.toolkit.Content;
+import com.sun.tools.doclets.internal.toolkit.util.*;
+
+/**
+ * Class for generating a comment for HTML pages of javadoc output.
+ *
+ * @author Bhavesh Patel
+ */
+public class Comment extends Content{
+
+    private String commentText;
+
+    /**
+     * Constructor to construct a Comment object.
+     *
+     * @param comment comment text for the comment
+     */
+    public Comment(String comment) {
+        commentText = nullCheck(comment);
+    }
+
+    /**
+     * This method is not supported by the class.
+     *
+     * @param content content that needs to be added
+     * @throws DocletAbortException this method will always throw a
+     *                              DocletAbortException because it
+     *                              is not supported.
+     */
+    public void addContent(Content content) {
+        throw new DocletAbortException();
+    }
+
+    /**
+     * This method is not supported by the class.
+     *
+     * @param stringContent string content that needs to be added
+     * @throws DocletAbortException this method will always throw a
+     *                              DocletAbortException because it
+     *                              is not supported.
+     */
+    public void addContent(String stringContent) {
+        throw new DocletAbortException();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isEmpty() {
+        return commentText.isEmpty();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void write(StringBuilder contentBuilder) {
+        if (!endsWithNewLine(contentBuilder))
+            contentBuilder.append("\n");
+        contentBuilder.append("<!-- ");
+        contentBuilder.append(commentText);
+        contentBuilder.append(" -->\n");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/DocType.java	Wed Dec 01 11:02:38 2010 -0800
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2010, 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.doclets.formats.html.markup;
+
+import com.sun.tools.doclets.internal.toolkit.Content;
+import com.sun.tools.doclets.internal.toolkit.util.*;
+
+/**
+ * Class for generating document type for HTML pages of javadoc output.
+ *
+ * @author Bhavesh Patel
+ */
+public class DocType extends Content{
+
+    private String docType;
+
+    private static DocType transitional;
+
+    private static DocType frameset;
+
+    /**
+     * Constructor to construct a DocType object.
+     *
+     * @param type the doctype to be added
+     */
+    private DocType(String type, String dtd) {
+        docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 " + type +
+                "//EN\" \"" + dtd + "\">\n";
+    }
+
+     /**
+     * Construct and return a HTML 4.01 transitional DocType content
+     *
+     * @return a content tree for transitional DocType
+     */
+    public static DocType Transitional() {
+        if (transitional == null)
+            transitional = new DocType("Transitional", "http://www.w3.org/TR/html4/loose.dtd");
+        return transitional;
+    }
+
+    /**
+     * Construct and return a HTML 4.01 frameset DocType content
+     *
+     * @return a content tree for frameset DocType
+     */
+    public static DocType Frameset() {
+        if (frameset == null)
+            frameset = new DocType("Frameset", "http://www.w3.org/TR/html4/frameset.dtd");
+        return frameset;
+    }
+
+    /**
+     * This method is not supported by the class.
+     *
+     * @param content content that needs to be added
+     * @throws DocletAbortException this method will always throw a
+     *                              DocletAbortException because it
+     *                              is not supported.
+     */
+    public void addContent(Content content) {
+        throw new DocletAbortException();
+    }
+
+    /**
+     * This method is not supported by the class.
+     *
+     * @param stringContent string content that needs to be added
+     * @throws DocletAbortException this method will always throw a
+     *                              DocletAbortException because it
+     *                              is not supported.
+     */
+    public void addContent(String stringContent) {
+        throw new DocletAbortException();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isEmpty() {
+        return (docType.length() == 0);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void write(StringBuilder contentBuilder) {
+        contentBuilder.append(docType);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlAttr.java	Wed Dec 01 11:02:38 2010 -0800
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2010, 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.doclets.formats.html.markup;
+
+/**
+ * Enum representing HTML tag attributes.
+ *
+ * @author Bhavesh Patel
+ */
+public enum HtmlAttr {
+    ALT,
+    BORDER,
+    CELLPADDING,
+    CELLSPACING,
+    CHARSET,
+    CLASS,
+    CLEAR,
+    COLS,
+    CONTENT,
+    HREF,
+    HTTP_EQUIV("http-equiv"),
+    ID,
+    LANG,
+    NAME,
+    ONLOAD,
+    REL,
+    ROWS,
+    SCOPE,
+    SCROLLING,
+    SRC,
+    SUMMARY,
+    TARGET,
+    TITLE,
+    TYPE,
+    WIDTH;
+
+    private final String value;
+
+    HtmlAttr() {
+        this.value = name().toLowerCase();
+    }
+
+    HtmlAttr(String name) {
+        this.value = name;
+    }
+
+    public String toString() {
+        return value;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlConstants.java	Wed Dec 01 11:02:38 2010 -0800
@@ -0,0 +1,189 @@
+/*
+ * Copyright (c) 2010, 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.doclets.formats.html.markup;
+
+import com.sun.tools.doclets.internal.toolkit.Content;
+
+/**
+ * Stores constants for Html Doclet.
+ *
+ * @author Bhavesh Patel
+ */
+public class HtmlConstants {
+
+    /**
+     * Marker to identify start of top navigation bar.
+     */
+    public static final Content START_OF_TOP_NAVBAR =
+            new Comment("========= START OF TOP NAVBAR =======");
+
+    /**
+     * Marker to identify start of bottom navigation bar.
+     */
+    public static final Content START_OF_BOTTOM_NAVBAR =
+            new Comment("======= START OF BOTTOM NAVBAR ======");
+
+    /**
+     * Marker to identify end of top navigation bar.
+     */
+    public static final Content END_OF_TOP_NAVBAR =
+            new Comment("========= END OF TOP NAVBAR =========");
+
+    /**
+     * Marker to identify end of bottom navigation bar.
+     */
+    public static final Content END_OF_BOTTOM_NAVBAR =
+            new Comment("======== END OF BOTTOM NAVBAR =======");
+
+    /**
+     * Marker to identify start of class data.
+     */
+    public static final Content START_OF_CLASS_DATA =
+            new Comment("======== START OF CLASS DATA ========");
+
+    /**
+     * Marker to identify end of class data.
+     */
+    public static final Content END_OF_CLASS_DATA =
+            new Comment("========= END OF CLASS DATA =========");
+
+    /**
+     * Marker to identify start of nested class summary.
+     */
+    public static final Content START_OF_NESTED_CLASS_SUMMARY =
+            new Comment("======== NESTED CLASS SUMMARY ========");
+
+    /**
+     * Marker to identify start of annotation type optional member summary.
+     */
+    public static final Content START_OF_ANNOTATION_TYPE_OPTIONAL_MEMBER_SUMMARY =
+            new Comment("=========== ANNOTATION TYPE OPTIONAL MEMBER SUMMARY ===========");
+
+    /**
+     * Marker to identify start of annotation type required member summary.
+     */
+    public static final Content START_OF_ANNOTATION_TYPE_REQUIRED_MEMBER_SUMMARY =
+            new Comment("=========== ANNOTATION TYPE REQUIRED MEMBER SUMMARY ===========");
+
+    /**
+     * Marker to identify start of constructor summary.
+     */
+    public static final Content START_OF_CONSTRUCTOR_SUMMARY =
+            new Comment("======== CONSTRUCTOR SUMMARY ========");
+
+    /**
+     * Marker to identify start of enum constants summary.
+     */
+    public static final Content START_OF_ENUM_CONSTANT_SUMMARY =
+            new Comment("=========== ENUM CONSTANT SUMMARY ===========");
+
+    /**
+     * Marker to identify start of field summary.
+     */
+    public static final Content START_OF_FIELD_SUMMARY =
+            new Comment("=========== FIELD SUMMARY ===========");
+
+    /**
+     * Marker to identify start of method summary.
+     */
+    public static final Content START_OF_METHOD_SUMMARY =
+            new Comment("========== METHOD SUMMARY ===========");
+
+    /**
+     * Marker to identify start of annotation type details.
+     */
+    public static final Content START_OF_ANNOTATION_TYPE_DETAILS =
+            new Comment("============ ANNOTATION TYPE MEMBER DETAIL ===========");
+
+    /**
+     * Marker to identify start of method details.
+     */
+    public static final Content START_OF_METHOD_DETAILS =
+            new Comment("============ METHOD DETAIL ==========");
+
+    /**
+     * Marker to identify start of field details.
+     */
+    public static final Content START_OF_FIELD_DETAILS =
+            new Comment("============ FIELD DETAIL ===========");
+
+    /**
+     * Marker to identify start of constructor details.
+     */
+    public static final Content START_OF_CONSTRUCTOR_DETAILS =
+            new Comment("========= CONSTRUCTOR DETAIL ========");
+
+    /**
+     * Marker to identify start of enum constants details.
+     */
+    public static final Content START_OF_ENUM_CONSTANT_DETAILS =
+            new Comment("============ ENUM CONSTANT DETAIL ===========");
+
+    /**
+     * Html tag for the page title heading.
+     */
+    public static final HtmlTag TITLE_HEADING = HtmlTag.H1;
+
+    /**
+     * Html tag for the class page title heading.
+     */
+    public static final HtmlTag CLASS_PAGE_HEADING = HtmlTag.H2;
+
+    /**
+     * Html tag for the content heading.
+     */
+    public static final HtmlTag CONTENT_HEADING = HtmlTag.H2;
+
+    /**
+     * Html tag for the package name heading.
+     */
+    public static final HtmlTag PACKAGE_HEADING = HtmlTag.H2;
+
+    /**
+     * Html tag for the member summary heading.
+     */
+    public static final HtmlTag SUMMARY_HEADING = HtmlTag.H3;
+
+    /**
+     * Html tag for the inherited member summary heading.
+     */
+    public static final HtmlTag INHERITED_SUMMARY_HEADING = HtmlTag.H3;
+
+    /**
+     * Html tag for the member details heading.
+     */
+    public static final HtmlTag DETAILS_HEADING = HtmlTag.H3;
+
+    /**
+     * Html tag for the serialized member heading.
+     */
+    public static final HtmlTag SERIALIZED_MEMBER_HEADING = HtmlTag.H3;
+
+    /**
+     * Html tag for the member heading.
+     */
+    public static final HtmlTag MEMBER_HEADING = HtmlTag.H4;
+}
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlDocWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlDocWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -87,7 +87,7 @@
      */
     public void printHyperLink(String link, String where,
                                String label, boolean strong) {
-        print(getHyperLink(link, where, label, strong, "", "", ""));
+        print(getHyperLinkString(link, where, label, strong, "", "", ""));
     }
 
     /**
@@ -115,7 +115,7 @@
     public void printHyperLink(String link, String where,
                                String label, boolean strong,
                                String stylename) {
-        print(getHyperLink(link, where, label, strong, stylename, "", ""));
+        print(getHyperLinkString(link, where, label, strong, stylename, "", ""));
     }
 
     /**
@@ -128,9 +128,9 @@
      * @param strong       Boolean that sets label to strong.
      * @return String    Hyper Link.
      */
-    public String getHyperLink(String link, String where,
+    public String getHyperLinkString(String link, String where,
                                String label, boolean strong) {
-        return getHyperLink(link, where, label, strong, "", "", "");
+        return getHyperLinkString(link, where, label, strong, "", "", "");
     }
 
     /**
@@ -144,10 +144,24 @@
      * @param stylename  String style of text defined in style sheet.
      * @return String    Hyper Link.
      */
-    public String getHyperLink(String link, String where,
+    public String getHyperLinkString(String link, String where,
                                String label, boolean strong,
                                String stylename) {
-        return getHyperLink(link, where, label, strong, stylename, "", "");
+        return getHyperLinkString(link, where, label, strong, stylename, "", "");
+    }
+
+    /**
+     * Get Html Hyper Link string.
+     *
+     * @param link       String name of the file.
+     * @param where      Position of the link in the file. Character '#' is not
+     *                   needed.
+     * @param label      Tag for the link.
+     * @return a content tree for the hyper link
+     */
+    public Content getHyperLink(String link, String where,
+                               Content label) {
+        return getHyperLink(link, where, label, "", "");
     }
 
     /**
@@ -163,11 +177,11 @@
      * @param target     Target frame.
      * @return String    Hyper Link.
      */
-    public String getHyperLink(String link, String where,
+    public String getHyperLinkString(String link, String where,
                                String label, boolean strong,
                                String stylename, String title, String target) {
         StringBuffer retlink = new StringBuffer();
-        retlink.append("<A HREF=\"");
+        retlink.append("<a href=\"");
         retlink.append(link);
         if (where != null && where.length() != 0) {
             retlink.append("#");
@@ -187,27 +201,54 @@
             retlink.append("\">");
         }
         if (strong) {
-            retlink.append("<STRONG>");
+            retlink.append("<span class=\"strong\">");
         }
         retlink.append(label);
         if (strong) {
-            retlink.append("</STRONG>");
+            retlink.append("</span>");
         }
         if (stylename != null && stylename.length() != 0) {
             retlink.append("</FONT>");
         }
-        retlink.append("</A>");
+        retlink.append("</a>");
         return retlink.toString();
     }
 
     /**
-     * Print link without positioning in the file.
+     * Get Html Hyper Link.
      *
      * @param link       String name of the file.
+     * @param where      Position of the link in the file. Character '#' is not
+     *                   needed.
      * @param label      Tag for the link.
+     * @param title      String that describes the link's content for accessibility.
+     * @param target     Target frame.
+     * @return a content tree for the hyper link.
      */
-    public void printHyperLink(String link, String label) {
-        print(getHyperLink(link, "", label, false));
+    public Content getHyperLink(String link, String where,
+            Content label, String title, String target) {
+        if (where != null && where.length() != 0) {
+            link += "#" + where;
+        }
+        HtmlTree anchor = HtmlTree.A(link, label);
+        if (title != null && title.length() != 0) {
+            anchor.addAttr(HtmlAttr.TITLE, title);
+        }
+        if (target != null && target.length() != 0) {
+            anchor.addAttr(HtmlAttr.TARGET, target);
+        }
+        return anchor;
+    }
+
+    /**
+     * Get a hyperlink to a file.
+     *
+     * @param link String name of the file
+     * @param label Label for the link
+     * @return a content for the hyperlink to the file
+     */
+    public Content getHyperLink(String link, Content label) {
+        return getHyperLink(link, "", label);
     }
 
     /**
@@ -217,8 +258,8 @@
      * @param label      Tag for the link.
      * @return Strign    Hyper link.
      */
-    public String getHyperLink(String link, String label) {
-        return getHyperLink(link, "", label, false);
+    public String getHyperLinkString(String link, String label) {
+        return getHyperLinkString(link, "", label, false);
     }
 
     /**
@@ -273,54 +314,32 @@
      * Print the frameset version of the Html file header.
      * Called only when generating an HTML frameset file.
      *
-     * @param title    Title of this HTML document.
+     * @param title Title of this HTML document
+     * @param noTimeStamp If true, don't print time stamp in header
+     * @param frameset the frameset to be added to the HTML document
      */
-    public void printFramesetHeader(String title) {
-        printFramesetHeader(title, false);
-    }
-
-    /**
-     * Print the frameset version of the Html file header.
-     * Called only when generating an HTML frameset file.
-     *
-     * @param title        Title of this HTML document.
-     * @param noTimeStamp  If true, don't print time stamp in header.
-     */
-    public void printFramesetHeader(String title, boolean noTimeStamp) {
-        println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 " +
-                    "Frameset//EN\" " +
-                    "\"http://www.w3.org/TR/html4/frameset.dtd\">");
-        println("<!--NewPage-->");
-        html();
-        head();
+    public void printFramesetDocument(String title, boolean noTimeStamp,
+            Content frameset) {
+        Content htmlDocType = DocType.Frameset();
+        Content htmlComment = new Comment(configuration.getText("doclet.New_Page"));
+        Content head = new HtmlTree(HtmlTag.HEAD);
         if (! noTimeStamp) {
-            print("<!-- Generated by javadoc on ");
-            print(today());
-            println("-->");
+            Content headComment = new Comment("Generated by javadoc on " + today());
+            head.addContent(headComment);
         }
         if (configuration.charset.length() > 0) {
-            println("<META http-equiv=\"Content-Type\" content=\"text/html; "
-                        + "charset=" + configuration.charset + "\">");
+            Content meta = HtmlTree.META("Content-Type", "text/html",
+                    configuration.charset);
+            head.addContent(meta);
         }
-        title();
-        println(title);
-        titleEnd();
-        //Script to set the classFrame if necessary.
-        script();
-        println("    targetPage = \"\" + window.location.search;");
-        println("    if (targetPage != \"\" && targetPage != \"undefined\")");
-        println("        targetPage = targetPage.substring(1);");
-        println("    if (targetPage.indexOf(\":\") != -1)");
-        println("        targetPage = \"undefined\";");
-
-        println("    function loadFrames() {");
-        println("        if (targetPage != \"\" && targetPage != \"undefined\")");
-        println("             top.classFrame.location = top.targetPage;");
-        println("    }");
-        scriptEnd();
-        noScript();
-        noScriptEnd();
-        headEnd();
+        Content windowTitle = HtmlTree.TITLE(new StringContent(title));
+        head.addContent(windowTitle);
+        head.addContent(getFramesetJavaScript());
+        Content htmlTree = HtmlTree.HTML(configuration.getLocale().getLanguage(),
+                head, frameset);
+        Content htmlDocument = new HtmlDocument(htmlDocType,
+                htmlComment, htmlTree);
+        print(htmlDocument.toString());
     }
 
     /**
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlDocument.java	Wed Dec 01 11:02:38 2010 -0800
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2010, 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.doclets.formats.html.markup;
+
+import java.util.*;
+import com.sun.tools.doclets.internal.toolkit.Content;
+import com.sun.tools.doclets.internal.toolkit.util.*;
+
+/**
+ * Class for generating an HTML document for javadoc output.
+ *
+ * @author Bhavesh Patel
+ */
+public class HtmlDocument extends Content {
+
+    private List<Content> docContent = Collections.<Content>emptyList();
+
+    /**
+     * Constructor to construct an HTML document.
+     *
+     * @param docType document type for the HTML document
+     * @param docComment comment for the document
+     * @param htmlTree HTML tree of the document
+     */
+    public HtmlDocument(Content docType, Content docComment, Content htmlTree) {
+        docContent = new ArrayList<Content>();
+        addContent(nullCheck(docType));
+        addContent(nullCheck(docComment));
+        addContent(nullCheck(htmlTree));
+    }
+
+    /**
+     * Constructor to construct an HTML document.
+     *
+     * @param docType document type for the HTML document
+     * @param htmlTree HTML tree of the document
+     */
+    public HtmlDocument(Content docType, Content htmlTree) {
+        docContent = new ArrayList<Content>();
+        addContent(nullCheck(docType));
+        addContent(nullCheck(htmlTree));
+    }
+
+    /**
+     * Adds content for the HTML document.
+     *
+     * @param htmlContent html content to be added
+     */
+    public void addContent(Content htmlContent) {
+        if (htmlContent.isValid())
+            docContent.add(htmlContent);
+    }
+
+    /**
+     * This method is not supported by the class.
+     *
+     * @param stringContent string content that needs to be added
+     * @throws DocletAbortException this method will always throw a
+     *                              DocletAbortException because it
+     *                              is not supported.
+     */
+    public void addContent(String stringContent) {
+        throw new DocletAbortException();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isEmpty() {
+        return (docContent.isEmpty());
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void write(StringBuilder contentBuilder) {
+        for (Content c : docContent)
+            c.write(contentBuilder);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlStyle.java	Wed Dec 01 11:02:38 2010 -0800
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2010, 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.doclets.formats.html.markup;
+
+/**
+ * Enum representing HTML styles. The name map to values in the CSS file.
+ *
+ * @author Bhavesh Patel
+ */
+public enum HtmlStyle {
+    aboutLanguage,
+    altColor,
+    bar,
+    block,
+    blockList,
+    blockListLast,
+    bottomNav,
+    classUseContainer,
+    colFirst,
+    colLast,
+    colOne,
+    constantValuesContainer,
+    contentContainer,
+    description,
+    details,
+    header,
+    horizontal,
+    footer,
+    indexContainer,
+    indexHeader,
+    inheritance,
+    legalCopy,
+    nameValue,
+    navBarCell1Rev,
+    navList,
+    overviewSummary,
+    packageSummary,
+    rowColor,
+    serializedFormContainer,
+    sourceContainer,
+    sourceLineNo,
+    strong,
+    subNav,
+    subNavList,
+    subTitle,
+    summary,
+    tabEnd,
+    title,
+    topNav;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlTag.java	Wed Dec 01 11:02:38 2010 -0800
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) 2010, 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.doclets.formats.html.markup;
+
+/**
+ * Enum representing HTML tags.
+ *
+ * @author Bhavesh Patel
+ */
+public enum HtmlTag {
+    A(BlockType.INLINE, EndTag.END),
+    BLOCKQUOTE,
+    BODY(BlockType.OTHER, EndTag.END),
+    BR(BlockType.INLINE, EndTag.NOEND),
+    CAPTION,
+    CENTER,
+    CODE(BlockType.INLINE, EndTag.END),
+    DD,
+    DIV,
+    DL,
+    DT,
+    EM(BlockType.INLINE, EndTag.END),
+    FONT(BlockType.INLINE, EndTag.END),
+    FRAME(BlockType.OTHER, EndTag.NOEND),
+    FRAMESET(BlockType.OTHER, EndTag.END),
+    H1,
+    H2,
+    H3,
+    H4,
+    H5,
+    H6,
+    HEAD(BlockType.OTHER, EndTag.END),
+    HR(BlockType.BLOCK, EndTag.NOEND),
+    HTML(BlockType.OTHER, EndTag.END),
+    I(BlockType.INLINE, EndTag.END),
+    IMG(BlockType.INLINE, EndTag.NOEND),
+    LI,
+    LINK(BlockType.OTHER, EndTag.NOEND),
+    MENU,
+    META(BlockType.OTHER, EndTag.NOEND),
+    NOFRAMES(BlockType.OTHER, EndTag.END),
+    NOSCRIPT(BlockType.OTHER, EndTag.END),
+    OL,
+    P,
+    PRE,
+    SCRIPT(BlockType.OTHER, EndTag.END),
+    SMALL(BlockType.INLINE, EndTag.END),
+    SPAN(BlockType.INLINE, EndTag.END),
+    STRONG(BlockType.INLINE, EndTag.END),
+    TABLE,
+    TBODY,
+    TD,
+    TH,
+    TITLE(BlockType.OTHER, EndTag.END),
+    TR,
+    TT(BlockType.INLINE, EndTag.END),
+    UL;
+
+    protected final BlockType blockType;
+    protected final EndTag endTag;
+    private final String value;
+
+    /**
+     * Enum representing the type of HTML element.
+     */
+    protected static enum BlockType {
+        BLOCK,
+        INLINE,
+        OTHER;
+    }
+
+    /**
+     * Enum representing HTML end tag requirement.
+     */
+    protected static enum EndTag {
+        END,
+        NOEND;
+    }
+
+    HtmlTag() {
+        this(BlockType.BLOCK, EndTag.END);
+    }
+
+    HtmlTag(BlockType blockType, EndTag endTag ) {
+        this.blockType = blockType;
+        this.endTag = endTag;
+        this.value = name().toLowerCase();
+    }
+
+    /**
+     * Returns true if the end tag is required. This is specific to the standard
+     * doclet and does not exactly resemble the W3C specifications.
+     *
+     * @return true if end tag needs to be displayed else return false
+     */
+    public boolean endTagRequired() {
+        return (endTag == EndTag.END);
+    }
+
+    public String toString() {
+        return value;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlTree.java	Wed Dec 01 11:02:38 2010 -0800
@@ -0,0 +1,777 @@
+/*
+ * Copyright (c) 2010, 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.doclets.formats.html.markup;
+
+import java.util.*;
+import com.sun.tools.doclets.internal.toolkit.Content;
+import com.sun.tools.doclets.internal.toolkit.util.*;
+
+/**
+ * Class for generating HTML tree for javadoc output.
+ *
+ * @author Bhavesh Patel
+ */
+public class HtmlTree extends Content {
+
+    private HtmlTag htmlTag;
+    private Map<HtmlAttr,String> attrs = Collections.<HtmlAttr,String>emptyMap();
+    private List<Content> content = Collections.<Content>emptyList();
+    public static final Content EMPTY = new StringContent("");
+
+    /**
+     * Constructor to construct HtmlTree object.
+     *
+     * @param tag HTML tag for the HtmlTree object
+     */
+    public HtmlTree(HtmlTag tag) {
+        htmlTag = nullCheck(tag);
+    }
+
+    /**
+     * Constructor to construct HtmlTree object.
+     *
+     * @param tag HTML tag for the HtmlTree object
+     * @param contents contents to be added to the tree
+     */
+    public HtmlTree(HtmlTag tag, Content... contents) {
+        this(tag);
+        for (Content content: contents)
+            addContent(content);
+    }
+
+    /**
+     * Adds an attribute for the HTML tag.
+     *
+     * @param attrName name of the attribute
+     * @param attrValue value of the attribute
+     */
+    public void addAttr(HtmlAttr attrName, String attrValue) {
+        if (attrs.isEmpty())
+            attrs = new LinkedHashMap<HtmlAttr,String>();
+        attrs.put(nullCheck(attrName), nullCheck(attrValue));
+    }
+
+    /**
+     * Adds a style for the HTML tag.
+     *
+     * @param style style to be added
+     */
+    public void addStyle(HtmlStyle style) {
+        addAttr(HtmlAttr.CLASS, style.toString());
+    }
+
+    /**
+     * Adds content for the HTML tag.
+     *
+     * @param tagContent tag content to be added
+     */
+    public void addContent(Content tagContent) {
+        if (tagContent == HtmlTree.EMPTY || tagContent.isValid()) {
+            if (content.isEmpty())
+                content = new ArrayList<Content>();
+            content.add(tagContent);
+        }
+    }
+
+    /**
+     * This method adds a string content to the htmltree. If the last content member
+     * added is a StringContent, append the string to that StringContent or else
+     * create a new StringContent and add it to the html tree.
+     *
+     * @param stringContent string content that needs to be added
+     */
+    public void addContent(String stringContent) {
+        if (!content.isEmpty()) {
+            Content lastContent = content.get(content.size() - 1);
+            if (lastContent instanceof StringContent)
+                lastContent.addContent(stringContent);
+            else
+                addContent(new StringContent(stringContent));
+        }
+        else
+            addContent(new StringContent(stringContent));
+    }
+
+    /**
+     * Generates an HTML anchor tag.
+     *
+     * @param ref reference url for the anchor tag
+     * @param body content for the anchor tag
+     * @return an HtmlTree object
+     */
+    public static HtmlTree A(String ref, Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.A, nullCheck(body));
+        htmltree.addAttr(HtmlAttr.HREF, nullCheck(ref));
+        return htmltree;
+    }
+
+    /**
+     * Generates an HTML anchor tag with name attribute and content.
+     *
+     * @param name name for the anchor tag
+     * @param body content for the anchor tag
+     * @return an HtmlTree object
+     */
+    public static HtmlTree A_NAME(String name, Content body) {
+        HtmlTree htmltree = HtmlTree.A_NAME(name);
+        htmltree.addContent(nullCheck(body));
+        return htmltree;
+    }
+
+    /**
+     * Generates an HTML anchor tag with name attribute.
+     *
+     * @param name name for the anchor tag
+     * @return an HtmlTree object
+     */
+    public static HtmlTree A_NAME(String name) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.A);
+        htmltree.addAttr(HtmlAttr.NAME, nullCheck(name));
+        return htmltree;
+    }
+
+    /**
+     * Generates a CAPTION tag with some content.
+     *
+     * @param body content for the tag
+     * @return an HtmlTree object for the CAPTION tag
+     */
+    public static HtmlTree CAPTION(Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.CAPTION, nullCheck(body));
+        return htmltree;
+    }
+
+    /**
+     * Generates a CODE tag with some content.
+     *
+     * @param body content for the tag
+     * @return an HtmlTree object for the CODE tag
+     */
+    public static HtmlTree CODE(Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.CODE, nullCheck(body));
+        return htmltree;
+    }
+
+    /**
+     * Generates a DD tag with some content.
+     *
+     * @param body content for the tag
+     * @return an HtmlTree object for the DD tag
+     */
+    public static HtmlTree DD(Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.DD, nullCheck(body));
+        return htmltree;
+    }
+
+    /**
+     * Generates a DL tag with some content.
+     *
+     * @param body content for the tag
+     * @return an HtmlTree object for the DL tag
+     */
+    public static HtmlTree DL(Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.DL, nullCheck(body));
+        return htmltree;
+    }
+
+    /**
+     * Generates a DIV tag with the style class attributes. It also encloses
+     * a content.
+     *
+     * @param styleClass stylesheet class for the tag
+     * @param body content for the tag
+     * @return an HtmlTree object for the DIV tag
+     */
+    public static HtmlTree DIV(HtmlStyle styleClass, Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.DIV, nullCheck(body));
+        if (styleClass != null)
+            htmltree.addStyle(styleClass);
+        return htmltree;
+    }
+
+    /**
+     * Generates a DIV tag with some content.
+     *
+     * @param body content for the tag
+     * @return an HtmlTree object for the DIV tag
+     */
+    public static HtmlTree DIV(Content body) {
+        return DIV(null, body);
+    }
+
+    /**
+     * Generates a DT tag with some content.
+     *
+     * @param body content for the tag
+     * @return an HtmlTree object for the DT tag
+     */
+    public static HtmlTree DT(Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.DT, nullCheck(body));
+        return htmltree;
+    }
+
+    /**
+     * Generates a EM tag with some content.
+     *
+     * @param body content to be added to the tag
+     * @return an HtmlTree object for the EM tag
+     */
+    public static HtmlTree EM(Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.EM, nullCheck(body));
+        return htmltree;
+    }
+
+    /**
+     * Generates a FRAME tag.
+     *
+     * @param src the url of the document to be shown in the frame
+     * @param name specifies the name of the frame
+     * @param title the title for the frame
+     * @param scrolling specifies whether to display scrollbars in the frame
+     * @return an HtmlTree object for the FRAME tag
+     */
+    public static HtmlTree FRAME(String src, String name, String title, String scrolling) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.FRAME);
+        htmltree.addAttr(HtmlAttr.SRC, nullCheck(src));
+        htmltree.addAttr(HtmlAttr.NAME, nullCheck(name));
+        htmltree.addAttr(HtmlAttr.TITLE, nullCheck(title));
+        if (scrolling != null)
+            htmltree.addAttr(HtmlAttr.SCROLLING, scrolling);
+        return htmltree;
+    }
+
+    /**
+     * Generates a Frame tag.
+     *
+     * @param src the url of the document to be shown in the frame
+     * @param name specifies the name of the frame
+     * @param title the title for the frame
+     * @return an HtmlTree object for the SPAN tag
+     */
+    public static HtmlTree FRAME(String src, String name, String title) {
+        return FRAME(src, name, title, null);
+    }
+
+    /**
+     * Generates a FRAMESET tag.
+     *
+     * @param cols the size of columns in the frameset
+     * @param rows the size of rows in the frameset
+     * @param title the title for the frameset
+     * @param onload the script to run when the document loads
+     * @return an HtmlTree object for the FRAMESET tag
+     */
+    public static HtmlTree FRAMESET(String cols, String rows, String title, String onload) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.FRAMESET);
+        if (cols != null)
+            htmltree.addAttr(HtmlAttr.COLS, cols);
+        if (rows != null)
+            htmltree.addAttr(HtmlAttr.ROWS, rows);
+        htmltree.addAttr(HtmlAttr.TITLE, nullCheck(title));
+        htmltree.addAttr(HtmlAttr.ONLOAD, nullCheck(onload));
+        return htmltree;
+    }
+
+    /**
+     * Generates a heading tag (h1 to h6) with the title and style class attributes. It also encloses
+     * a content.
+     *
+     * @param headingTag the heading tag to be generated
+     * @param printTitle true if title for the tag needs to be printed else false
+     * @param styleClass stylesheet class for the tag
+     * @param body content for the tag
+     * @return an HtmlTree object for the tag
+     */
+    public static HtmlTree HEADING(HtmlTag headingTag, boolean printTitle,
+            HtmlStyle styleClass, Content body) {
+        HtmlTree htmltree = new HtmlTree(headingTag, nullCheck(body));
+        if (printTitle)
+            htmltree.addAttr(HtmlAttr.TITLE, Util.stripHtml(body.toString()));
+        if (styleClass != null)
+            htmltree.addStyle(styleClass);
+        return htmltree;
+    }
+
+    /**
+     * Generates a heading tag (h1 to h6) with style class attribute. It also encloses
+     * a content.
+     *
+     * @param headingTag the heading tag to be generated
+     * @param styleClass stylesheet class for the tag
+     * @param body content for the tag
+     * @return an HtmlTree object for the tag
+     */
+    public static HtmlTree HEADING(HtmlTag headingTag, HtmlStyle styleClass, Content body) {
+        return HEADING(headingTag, false, styleClass, body);
+    }
+
+    /**
+     * Generates a heading tag (h1 to h6) with the title attribute. It also encloses
+     * a content.
+     *
+     * @param headingTag the heading tag to be generated
+     * @param printTitle true if the title for the tag needs to be printed else false
+     * @param body content for the tag
+     * @return an HtmlTree object for the tag
+     */
+    public static HtmlTree HEADING(HtmlTag headingTag, boolean printTitle, Content body) {
+        return HEADING(headingTag, printTitle, null, body);
+    }
+
+    /**
+     * Generates a heading tag (h1 to h6)  with some content.
+     *
+     * @param headingTag the heading tag to be generated
+     * @param body content for the tag
+     * @return an HtmlTree object for the tag
+     */
+    public static HtmlTree HEADING(HtmlTag headingTag, Content body) {
+        return HEADING(headingTag, false, null, body);
+    }
+
+    /**
+     * Generates an HTML tag with lang attribute. It also adds head and body
+     * content to the HTML tree.
+     *
+     * @param lang language for the HTML document
+     * @param head head for the HTML tag
+     * @param body body for the HTML tag
+     * @return an HtmlTree object for the HTML tag
+     */
+    public static HtmlTree HTML(String lang, Content head, Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.HTML, nullCheck(head), nullCheck(body));
+        htmltree.addAttr(HtmlAttr.LANG, nullCheck(lang));
+        return htmltree;
+    }
+
+    /**
+     * Generates a I tag with some content.
+     *
+     * @param body content for the tag
+     * @return an HtmlTree object for the I tag
+     */
+    public static HtmlTree I(Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.I, nullCheck(body));
+        return htmltree;
+    }
+
+    /**
+     * Generates a LI tag with some content.
+     *
+     * @param body content for the tag
+     * @return an HtmlTree object for the LI tag
+     */
+    public static HtmlTree LI(Content body) {
+        return LI(null, body);
+    }
+
+    /**
+     * Generates a LI tag with some content.
+     *
+     * @param styleClass style for the tag
+     * @param body content for the tag
+     * @return an HtmlTree object for the LI tag
+     */
+    public static HtmlTree LI(HtmlStyle styleClass, Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.LI, nullCheck(body));
+        if (styleClass != null)
+            htmltree.addStyle(styleClass);
+        return htmltree;
+    }
+
+    /**
+     * Generates a LINK tag with the rel, type, href and title attributes.
+     *
+     * @param rel relevance of the link
+     * @param type type of link
+     * @param href the path for the link
+     * @param title title for the link
+     * @return an HtmlTree object for the LINK tag
+     */
+    public static HtmlTree LINK(String rel, String type, String href, String title) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.LINK);
+        htmltree.addAttr(HtmlAttr.REL, nullCheck(rel));
+        htmltree.addAttr(HtmlAttr.TYPE, nullCheck(type));
+        htmltree.addAttr(HtmlAttr.HREF, nullCheck(href));
+        htmltree.addAttr(HtmlAttr.TITLE, nullCheck(title));
+        return htmltree;
+    }
+
+    /**
+     * Generates a META tag with the http-equiv, content and charset attributes.
+     *
+     * @param http-equiv http equiv attribute for the META tag
+     * @param content type of content
+     * @param charset character set used
+     * @return an HtmlTree object for the META tag
+     */
+    public static HtmlTree META(String httpEquiv, String content, String charSet) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.META);
+        htmltree.addAttr(HtmlAttr.HTTP_EQUIV, nullCheck(httpEquiv));
+        htmltree.addAttr(HtmlAttr.CONTENT, nullCheck(content));
+        htmltree.addAttr(HtmlAttr.CHARSET, nullCheck(charSet));
+        return htmltree;
+    }
+
+    /**
+     * Generates a META tag with the name and content attributes.
+     *
+     * @param name name attribute
+     * @param content type of content
+     * @return an HtmlTree object for the META tag
+     */
+    public static HtmlTree META(String name, String content) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.META);
+        htmltree.addAttr(HtmlAttr.NAME, nullCheck(name));
+        htmltree.addAttr(HtmlAttr.CONTENT, nullCheck(content));
+        return htmltree;
+    }
+
+    /**
+     * Generates a NOSCRIPT tag with some content.
+     *
+     * @param body content of the noscript tag
+     * @return an HtmlTree object for the NOSCRIPT tag
+     */
+    public static HtmlTree NOSCRIPT(Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.NOSCRIPT, nullCheck(body));
+        return htmltree;
+    }
+
+    /**
+     * Generates a P tag with some content.
+     *
+     * @param body content of the Paragraph tag
+     * @return an HtmlTree object for the P tag
+     */
+    public static HtmlTree P(Content body) {
+        return P(null, body);
+    }
+
+    /**
+     * Generates a P tag with some content.
+     *
+     * @param styleClass style of the Paragraph tag
+     * @param body content of the Paragraph tag
+     * @return an HtmlTree object for the P tag
+     */
+    public static HtmlTree P(HtmlStyle styleClass, Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.P, nullCheck(body));
+        if (styleClass != null)
+            htmltree.addStyle(styleClass);
+        return htmltree;
+    }
+
+    /**
+     * Generates a SMALL tag with some content.
+     *
+     * @param body content for the tag
+     * @return an HtmlTree object for the SMALL tag
+     */
+    public static HtmlTree SMALL(Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.SMALL, nullCheck(body));
+        return htmltree;
+    }
+
+    /**
+     * Generates a STRONG tag with some content.
+     *
+     * @param body content for the tag
+     * @return an HtmlTree object for the STRONG tag
+     */
+    public static HtmlTree STRONG(Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.STRONG, nullCheck(body));
+        return htmltree;
+    }
+
+    /**
+     * Generates a SPAN tag with some content.
+     *
+     * @param body content for the tag
+     * @return an HtmlTree object for the SPAN tag
+     */
+    public static HtmlTree SPAN(Content body) {
+        return SPAN(null, body);
+    }
+
+    /**
+     * Generates a SPAN tag with style class attribute and some content.
+     *
+     * @param styleClass style class for the tag
+     * @param body content for the tag
+     * @return an HtmlTree object for the SPAN tag
+     */
+    public static HtmlTree SPAN(HtmlStyle styleClass, Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.SPAN, nullCheck(body));
+        if (styleClass != null)
+            htmltree.addStyle(styleClass);
+        return htmltree;
+    }
+
+    /**
+     * Generates a Table tag with border, width and summary attributes and
+     * some content.
+     *
+     * @param border border for the table
+     * @param width width of the table
+     * @param summary summary for the table
+     * @param body content for the table
+     * @return an HtmlTree object for the TABLE tag
+     */
+    public static HtmlTree TABLE(int border, int width, String summary,
+            Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.TABLE, nullCheck(body));
+        htmltree.addAttr(HtmlAttr.BORDER, Integer.toString(border));
+        htmltree.addAttr(HtmlAttr.WIDTH, Integer.toString(width));
+        htmltree.addAttr(HtmlAttr.SUMMARY, nullCheck(summary));
+        return htmltree;
+    }
+
+    /**
+     * Generates a Table tag with style class, border, cell padding,
+     * cellspacing and summary attributes and some content.
+     *
+     * @param styleClass style of the table
+     * @param border border for the table
+     * @param cellPadding cell padding for the table
+     * @param cellSpacing cell spacing for the table
+     * @param summary summary for the table
+     * @param body content for the table
+     * @return an HtmlTree object for the TABLE tag
+     */
+    public static HtmlTree TABLE(HtmlStyle styleClass, int border, int cellPadding,
+            int cellSpacing, String summary, Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.TABLE, nullCheck(body));
+        if (styleClass != null)
+            htmltree.addStyle(styleClass);
+        htmltree.addAttr(HtmlAttr.BORDER, Integer.toString(border));
+        htmltree.addAttr(HtmlAttr.CELLPADDING, Integer.toString(cellPadding));
+        htmltree.addAttr(HtmlAttr.CELLSPACING, Integer.toString(cellSpacing));
+        htmltree.addAttr(HtmlAttr.SUMMARY, nullCheck(summary));
+        return htmltree;
+    }
+
+    /**
+     * Generates a Table tag with border, cell padding,
+     * cellspacing and summary attributes and some content.
+     *
+     * @param border border for the table
+     * @param cellPadding cell padding for the table
+     * @param cellSpacing cell spacing for the table
+     * @param summary summary for the table
+     * @param body content for the table
+     * @return an HtmlTree object for the TABLE tag
+     */
+    public static HtmlTree TABLE(int border, int cellPadding,
+            int cellSpacing, String summary, Content body) {
+        return TABLE(null, border, cellPadding, cellSpacing, summary, body);
+    }
+
+    /**
+     * Generates a TD tag with style class attribute and some content.
+     *
+     * @param styleClass style for the tag
+     * @param body content for the tag
+     * @return an HtmlTree object for the TD tag
+     */
+    public static HtmlTree TD(HtmlStyle styleClass, Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.TD, nullCheck(body));
+        if (styleClass != null)
+            htmltree.addStyle(styleClass);
+        return htmltree;
+    }
+
+    /**
+     * Generates a TD tag for an HTML table with some content.
+     *
+     * @param body content for the tag
+     * @return an HtmlTree object for the TD tag
+     */
+    public static HtmlTree TD(Content body) {
+        return TD(null, body);
+    }
+
+    /**
+     * Generates a TH tag with style class and scope attributes and some content.
+     *
+     * @param styleClass style for the tag
+     * @param scope scope of the tag
+     * @param body content for the tag
+     * @return an HtmlTree object for the TH tag
+     */
+    public static HtmlTree TH(HtmlStyle styleClass, String scope, Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.TH, nullCheck(body));
+        if (styleClass != null)
+            htmltree.addStyle(styleClass);
+        htmltree.addAttr(HtmlAttr.SCOPE, nullCheck(scope));
+        return htmltree;
+    }
+
+    /**
+     * Generates a TH tag with scope attribute and some content.
+     *
+     * @param scope scope of the tag
+     * @param body content for the tag
+     * @return an HtmlTree object for the TH tag
+     */
+    public static HtmlTree TH(String scope, Content body) {
+        return TH(null, scope, body);
+    }
+
+    /**
+     * Generates a TITLE tag with some content.
+     *
+     * @param body content for the tag
+     * @return an HtmlTree object for the TITLE tag
+     */
+    public static HtmlTree TITLE(Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.TITLE, nullCheck(body));
+        return htmltree;
+    }
+
+    /**
+     * Generates a TR tag for an HTML table with some content.
+     *
+     * @param body content for the tag
+     * @return an HtmlTree object for the TR tag
+     */
+    public static HtmlTree TR(Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.TR, nullCheck(body));
+        return htmltree;
+    }
+
+    /**
+     * Generates a UL tag with the style class attribute and some content.
+     *
+     * @param styleClass style for the tag
+     * @param body content for the tag
+     * @return an HtmlTree object for the UL tag
+     */
+    public static HtmlTree UL(HtmlStyle styleClass, Content body) {
+        HtmlTree htmltree = new HtmlTree(HtmlTag.UL, nullCheck(body));
+        htmltree.addStyle(nullCheck(styleClass));
+        return htmltree;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isEmpty() {
+        return (!hasContent() && !hasAttrs());
+    }
+
+    /**
+     * Returns true if the HTML tree has content.
+     *
+     * @return true if the HTML tree has content else return false
+     */
+    public boolean hasContent() {
+        return (!content.isEmpty());
+    }
+
+    /**
+     * Returns true if the HTML tree has attributes.
+     *
+     * @return true if the HTML tree has attributes else return false
+     */
+    public boolean hasAttrs() {
+        return (!attrs.isEmpty());
+    }
+
+    /**
+     * Returns true if the HTML tree has a specific attribute.
+     *
+     * @param attrName name of the attribute to check within the HTML tree
+     * @return true if the HTML tree has the specified attribute else return false
+     */
+    public boolean hasAttr(HtmlAttr attrName) {
+        return (attrs.containsKey(attrName));
+    }
+
+    /**
+     * Returns true if the HTML tree is valid. This check is more specific to
+     * standard doclet and not exactly similar to W3C specifications. But it
+     * ensures HTML validation.
+     *
+     * @return true if the HTML tree is valid
+     */
+    public boolean isValid() {
+        switch (htmlTag) {
+            case A :
+                return (hasAttr(HtmlAttr.NAME) || (hasAttr(HtmlAttr.HREF) && hasContent()));
+            case BR :
+                return (!hasContent() && (!hasAttrs() || hasAttr(HtmlAttr.CLEAR)));
+            case FRAME :
+                return (hasAttr(HtmlAttr.SRC) && !hasContent());
+            case HR :
+                return (!hasContent());
+            case IMG :
+                return (hasAttr(HtmlAttr.SRC) && hasAttr(HtmlAttr.ALT) && !hasContent());
+            case LINK :
+                return (hasAttr(HtmlAttr.HREF) && !hasContent());
+            case META :
+                return (hasAttr(HtmlAttr.CONTENT) && !hasContent());
+            default :
+                return hasContent();
+        }
+    }
+
+    /**
+     * Returns true if the element is an inline element.
+     *
+     * @return true if the HTML tag is an inline element
+     */
+    public boolean isInline() {
+        return (htmlTag.blockType == HtmlTag.BlockType.INLINE);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void write(StringBuilder contentBuilder) {
+        if (!isInline() && !endsWithNewLine(contentBuilder))
+            contentBuilder.append("\n");
+        String tagString = htmlTag.toString();
+        contentBuilder.append("<" + tagString);
+        Iterator<HtmlAttr> iterator = attrs.keySet().iterator();
+        HtmlAttr key;
+        String value = "";
+        while (iterator.hasNext()) {
+            key = iterator.next();
+            value = attrs.get(key);
+            contentBuilder.append(" " + key.toString());
+            if (!value.isEmpty())
+                contentBuilder.append("=\"" + value + "\"");
+        }
+        contentBuilder.append(">");
+        for (Content c : content)
+            c.write(contentBuilder);
+        if (htmlTag.endTagRequired())
+            contentBuilder.append("</" + tagString + ">");
+        if (!isInline())
+            contentBuilder.append("\n");
+    }
+}
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -55,7 +55,7 @@
      * URL file separator string("/").
      */
     public static final String fileseparator =
-         DirectoryManager.URL_FILE_SEPERATOR;
+         DirectoryManager.URL_FILE_SEPARATOR;
 
     /**
      * The configuration
@@ -82,6 +82,72 @@
      */
     protected final String modifierTypeHeader;
 
+    public final Content overviewLabel;
+
+    public final Content defaultPackageLabel;
+
+    public final Content packageLabel;
+
+    public final Content useLabel;
+
+    public final Content prevLabel;
+
+    public final Content nextLabel;
+
+    public final Content prevclassLabel;
+
+    public final Content nextclassLabel;
+
+    public final Content summaryLabel;
+
+    public final Content detailLabel;
+
+    public final Content framesLabel;
+
+    public final Content noframesLabel;
+
+    public final Content treeLabel;
+
+    public final Content classLabel;
+
+    public final Content deprecatedLabel;
+
+    public final Content deprecatedPhrase;
+
+    public final Content allclassesLabel;
+
+    public final Content indexLabel;
+
+    public final Content helpLabel;
+
+    public final Content seeLabel;
+
+    public final Content descriptionLabel;
+
+    public final Content prevpackageLabel;
+
+    public final Content nextpackageLabel;
+
+    public final Content packagesLabel;
+
+    public final Content methodDetailsLabel;
+
+    public final Content annotationTypeDetailsLabel;
+
+    public final Content fieldDetailsLabel;
+
+    public final Content constructorDetailsLabel;
+
+    public final Content enumConstantsDetailsLabel;
+
+    public final Content specifiedByLabel;
+
+    public final Content overridesLabel;
+
+    public final Content descfrmClassLabel;
+
+    public final Content descfrmInterfaceLabel;
+
     /**
      * Constructor.
      *
@@ -111,6 +177,73 @@
         modifierTypeHeader = configuration.getText("doclet.0_and_1",
                 configuration.getText("doclet.Modifier"),
                 configuration.getText("doclet.Type"));
+        overviewLabel = getResource("doclet.Overview");
+        defaultPackageLabel = new RawHtml(
+                DocletConstants.DEFAULT_PACKAGE_NAME);
+        packageLabel = getResource("doclet.Package");
+        useLabel = getResource("doclet.navClassUse");
+        prevLabel = getResource("doclet.Prev");
+        nextLabel = getResource("doclet.Next");
+        prevclassLabel = getResource("doclet.Prev_Class");
+        nextclassLabel = getResource("doclet.Next_Class");
+        summaryLabel = getResource("doclet.Summary");
+        detailLabel = getResource("doclet.Detail");
+        framesLabel = getResource("doclet.FRAMES");
+        noframesLabel = getResource("doclet.NO_FRAMES");
+        treeLabel = getResource("doclet.Tree");
+        classLabel = getResource("doclet.Class");
+        deprecatedLabel = getResource("doclet.navDeprecated");
+        deprecatedPhrase = getResource("doclet.Deprecated");
+        allclassesLabel = getResource("doclet.All_Classes");
+        indexLabel = getResource("doclet.Index");
+        helpLabel = getResource("doclet.Help");
+        seeLabel = getResource("doclet.See");
+        descriptionLabel = getResource("doclet.Description");
+        prevpackageLabel = getResource("doclet.Prev_Package");
+        nextpackageLabel = getResource("doclet.Next_Package");
+        packagesLabel = getResource("doclet.Packages");
+        methodDetailsLabel = getResource("doclet.Method_Detail");
+        annotationTypeDetailsLabel = getResource("doclet.Annotation_Type_Member_Detail");
+        fieldDetailsLabel = getResource("doclet.Field_Detail");
+        constructorDetailsLabel = getResource("doclet.Constructor_Detail");
+        enumConstantsDetailsLabel = getResource("doclet.Enum_Constant_Detail");
+        specifiedByLabel = getResource("doclet.Specified_By");
+        overridesLabel = getResource("doclet.Overrides");
+        descfrmClassLabel = getResource("doclet.Description_From_Class");
+        descfrmInterfaceLabel = getResource("doclet.Description_From_Interface");
+    }
+
+    /**
+     * Get the configuration string as a content.
+     *
+     * @param key the key to look for in the configuration file
+     * @return a content tree for the text
+     */
+    public Content getResource(String key) {
+        return new StringContent(configuration.getText(key));
+    }
+
+    /**
+     * Get the configuration string as a content.
+     *
+     * @param key the key to look for in the configuration file
+     * @param a1 string argument added to configuration text
+     * @return a content tree for the text
+     */
+    public Content getResource(String key, String a1) {
+        return new RawHtml(configuration.getText(key, a1));
+    }
+
+    /**
+     * Get the configuration string as a content.
+     *
+     * @param key the key to look for in the configuration file
+     * @param a1 string argument added to configuration text
+     * @param a2 string argument added to configuration text
+     * @return a content tree for the text
+     */
+    public Content getResource(String key, String a1, String a2) {
+        return new RawHtml(configuration.getText(key, a1, a2));
     }
 
     /**
@@ -146,6 +279,48 @@
     }
 
     /**
+     * Returns an HtmlTree for the SCRIPT tag.
+     *
+     * @return an HtmlTree for the SCRIPT tag
+     */
+    protected HtmlTree getWinTitleScript(){
+        HtmlTree script = new HtmlTree(HtmlTag.SCRIPT);
+        if(winTitle != null && winTitle.length() > 0) {
+            script.addAttr(HtmlAttr.TYPE, "text/javascript");
+            String scriptCode = "<!--\n" +
+                    "    if (location.href.indexOf('is-external=true') == -1) {\n" +
+                    "        parent.document.title=\"" + winTitle + "\";\n" +
+                    "    }\n" +
+                    "//-->\n";
+            RawHtml scriptContent = new RawHtml(scriptCode);
+            script.addContent(scriptContent);
+        }
+        return script;
+    }
+
+    /**
+     * Returns a content tree for the SCRIPT tag for the main page(index.html).
+     *
+     * @return a content for the SCRIPT tag
+     */
+    protected Content getFramesetJavaScript(){
+        HtmlTree script = new HtmlTree(HtmlTag.SCRIPT);
+        script.addAttr(HtmlAttr.TYPE, "text/javascript");
+        String scriptCode = "\n    targetPage = \"\" + window.location.search;\n" +
+                "    if (targetPage != \"\" && targetPage != \"undefined\")\n" +
+                "        targetPage = targetPage.substring(1);\n" +
+                "    if (targetPage.indexOf(\":\") != -1)\n" +
+                "        targetPage = \"undefined\";\n" +
+                "    function loadFrames() {\n" +
+                "        if (targetPage != \"\" && targetPage != \"undefined\")\n" +
+                "             top.classFrame.location = top.targetPage;\n" +
+                "    }\n";
+        RawHtml scriptContent = new RawHtml(scriptCode);
+        script.addContent(scriptContent);
+        return script;
+    }
+
+    /**
      * Print the Javascript &lt;SCRIPT&gt; start tag with its type
      * attribute.
      */
@@ -204,6 +379,28 @@
     }
 
     /**
+     * Returns an HtmlTree for the BODY tag.
+     *
+     * @param includeScript  set true if printing windowtitle script
+     * @param title title for the window
+     * @return an HtmlTree for the BODY tag
+     */
+    public HtmlTree getBody(boolean includeScript, String title) {
+        HtmlTree body = new HtmlTree(HtmlTag.BODY);
+        // Set window title string which is later printed
+        this.winTitle = title;
+        // Don't print windowtitle script for overview-frame, allclasses-frame
+        // and package-frame
+        if (includeScript) {
+            body.addContent(getWinTitleScript());
+            Content noScript = HtmlTree.NOSCRIPT(
+                    HtmlTree.DIV(getResource("doclet.No_Script_Message")));
+            body.addContent(noScript);
+        }
+        return body;
+    }
+
+    /**
      * Print &lt;/BODY&gt; tag. Add a newline character at the end.
      */
     public void bodyEnd() {
@@ -228,6 +425,15 @@
         title();
     }
 
+    /**
+     * Returns an HtmlTree for the TITLE tag.
+     *
+     * @return an HtmlTree for the TITLE tag
+     */
+    public HtmlTree getTitle() {
+        HtmlTree title = HtmlTree.TITLE(new StringContent(winTitle));
+        return title;
+    }
 
     /**
      * Print &lt;/TITLE&gt; tag. Add a newline character at the end.
@@ -519,17 +725,17 @@
     }
 
     /**
-     * Return, text passed, with Italics &lt;I&gt; and &lt;/I&gt; tags, surrounding it.
-     * So if the text passed is "Hi", then string returned will be "&lt;I&gt;Hi&lt;/I&gt;".
+     * Return, text passed, with Italics &lt;i&gt; and &lt;/i&gt; tags, surrounding it.
+     * So if the text passed is "Hi", then string returned will be "&lt;i&gt;Hi&lt;/i&gt;".
      *
      * @param text String to be printed in between &lt;I&gt; and &lt;/I&gt; tags.
      */
     public String italicsText(String text) {
-        return "<I>" + text + "</I>";
+        return "<i>" + text + "</i>";
     }
 
     public String codeText(String text) {
-        return "<CODE>" + text + "</CODE>";
+        return "<code>" + text + "</code>";
     }
 
     /**
@@ -540,6 +746,13 @@
     }
 
     /**
+     * Return "&#38;nbsp;", non-breaking space.
+     */
+    public Content getSpace() {
+        return RawHtml.nbsp;
+    }
+
+    /**
      * Print &lt;DL&gt; tag. Add a newline character at the end.
      */
     public void dl() {
@@ -1182,21 +1395,21 @@
     }
 
     /**
-     * Get the "&lt;CODE&gt;" string.
+     * Get the "&lt;code&gt;" string.
      *
-     * @return String Return String "&lt;CODE>";
+     * @return String Return String "&lt;code&gt;";
      */
     public String getCode() {
-        return "<CODE>";
+        return "<code>";
     }
 
     /**
-     * Get the "&lt;/CODE&gt;" string.
+     * Get the "&lt;/code&gt;" string.
      *
-     * @return String Return String "&lt;/CODE&gt;";
+     * @return String Return String "&lt;/code&gt;";
      */
     public String getCodeEnd() {
-        return "</CODE>";
+        return "</code>";
     }
 
     /**
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/RawHtml.java	Wed Dec 01 11:02:38 2010 -0800
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2010, 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.doclets.formats.html.markup;
+
+import com.sun.tools.doclets.internal.toolkit.Content;
+import com.sun.tools.doclets.internal.toolkit.util.*;
+
+/**
+ * Class for generating raw HTML content to be added to HTML pages of javadoc output.
+ *
+ * @author Bhavesh Patel
+ */
+public class RawHtml extends Content{
+
+    private String rawHtmlContent;
+
+    public static final Content nbsp = new RawHtml("&nbsp;");
+
+    /**
+     * Constructor to construct a RawHtml object.
+     *
+     * @param rawHtml raw HTML text to be added
+     */
+    public RawHtml(String rawHtml) {
+        rawHtmlContent = nullCheck(rawHtml);
+    }
+
+    /**
+     * This method is not supported by the class.
+     *
+     * @param content content that needs to be added
+     * @throws DocletAbortException this method will always throw a
+     *                              DocletAbortException because it
+     *                              is not supported.
+     */
+    public void addContent(Content content) {
+        throw new DocletAbortException();
+    }
+
+    /**
+     * This method is not supported by the class.
+     *
+     * @param stringContent string content that needs to be added
+     * @throws DocletAbortException this method will always throw a
+     *                              DocletAbortException because it
+     *                              is not supported.
+     */
+    public void addContent(String stringContent) {
+        throw new DocletAbortException();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isEmpty() {
+        return rawHtmlContent.isEmpty();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void write(StringBuilder contentBuilder) {
+        contentBuilder.append(rawHtmlContent);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/StringContent.java	Wed Dec 01 11:02:38 2010 -0800
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2010, 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.doclets.formats.html.markup;
+
+import com.sun.tools.doclets.internal.toolkit.Content;
+import com.sun.tools.doclets.internal.toolkit.util.*;
+
+/**
+ * Class for generating string content for HTML tags of javadoc output.
+ *
+ * @author Bhavesh Patel
+ */
+public class StringContent extends Content{
+
+    private StringBuilder stringContent;
+
+    /**
+     * Constructor to construct StringContent object.
+     */
+    public StringContent() {
+        stringContent = new StringBuilder();
+    }
+
+    /**
+     * Constructor to construct StringContent object with some initial content.
+     *
+     * @param initialContent initial content for the object
+     */
+    public StringContent(String initialContent) {
+        stringContent = new StringBuilder(
+                Util.escapeHtmlChars(nullCheck(initialContent)));
+    }
+
+    /**
+     * This method is not supported by the class.
+     *
+     * @param content content that needs to be added
+     * @throws DocletAbortException this method will always throw a
+     *                              DocletAbortException because it
+     *                              is not supported.
+     */
+    public void addContent(Content content) {
+        throw new DocletAbortException();
+    }
+
+    /**
+     * Adds content for the StringContent object.  The method escapes
+     * HTML characters for the string content that is added.
+     *
+     * @param strContent string content to be added
+     */
+    public void addContent(String strContent) {
+        stringContent.append(Util.escapeHtmlChars(nullCheck(strContent)));
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean isEmpty() {
+        return (stringContent.length() == 0);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String toString() {
+        return stringContent.toString();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void write(StringBuilder contentBuilder) {
+        contentBuilder.append(stringContent);
+    }
+}
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard.properties	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard.properties	Wed Dec 01 11:02:38 2010 -0800
@@ -43,6 +43,7 @@
 doclet.Window_Split_Index={0}-Index
 doclet.Help=Help
 doclet.Skip_navigation_links=Skip navigation links
+doclet.New_Page=NewPage
 doclet.None=None
 doclet.CLASSES=CLASSES
 doclet.MEMBERS=MEMBERS
@@ -53,7 +54,7 @@
 doclet.Window_Deprecated_List=Deprecated List
 doclet.Note_0_is_deprecated=Note: {0} is deprecated.
 doclet.Overrides=Overrides:
-doclet.in_class={0} in class {1}
+doclet.in_class=in class
 doclet.0_Fields_and_Methods=&quot;{0}&quot; Fields and Methods
 doclet.Index_of_Fields_and_Methods=Index of Fields and Methods
 doclet.Static_variable_in=Static variable in {0}
@@ -103,7 +104,7 @@
 doclet.Package_Description=Package {0} Description
 doclet.Description=Description
 doclet.Specified_By=Specified by:
-doclet.in_interface={0} in interface {1}
+doclet.in_interface=in interface
 doclet.Subclasses=Direct Known Subclasses:
 doclet.Subinterfaces=All Known Subinterfaces:
 doclet.Implementing_Classes=All Known Implementing Classes:
@@ -121,18 +122,20 @@
 doclet.Frame_Alert=Frame Alert
 doclet.Overview-Member-Frame=Overview Member Frame
 doclet.Frame_Warning_Message=This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
+doclet.No_Script_Message=JavaScript is disabled on your browser.
 doclet.Non_Frame_Version=Non-frame version.
 doclet.Frame_Version=Frame version
 doclet.Link_To=Link to
 doclet.Following_From_Class=Following copied from class: {0}
 doclet.Following_From_Interface=Following copied from interface: {0}
-doclet.Description_From_Interface=Description copied from interface: {0}
-doclet.Description_From_Class=Description copied from class: {0}
+doclet.Description_From_Interface=Description copied from interface:
+doclet.Description_From_Class=Description copied from class:
 doclet.Standard_doclet_invoked=Standard doclet invoked...
 doclet.No_Non_Deprecated_Classes_To_Document=No non-deprecated classes found to document.
 doclet.Interfaces_Italic=Interfaces (italic)
 doclet.Enclosing_Class=Enclosing class:
 doclet.Enclosing_Interface=Enclosing interface:
+doclet.Window_Source_title=Source code
 doclet.Help_title=API Help
 doclet.Window_Help_title=API Help
 doclet.Help_line_1=How This API Document Is Organized
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/AnnotationTypeOptionalMemberWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/AnnotationTypeOptionalMemberWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -35,14 +35,18 @@
  * Do not use it as an API
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 
 public interface AnnotationTypeOptionalMemberWriter extends
-    AnnotationTypeRequiredMemberWriter {
+        AnnotationTypeRequiredMemberWriter {
 
     /**
-     * Write the default value documentation.
+     * Add the the default value documentation.
+     *
+     * @param member the member being documented
+     * @param annotationDocTree content tree to which the default value will be added
      */
-    public void writeDefaultValueInfo(MemberDoc member);
+    public void addDefaultValueInfo(MemberDoc member, Content annotationDocTree);
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/AnnotationTypeRequiredMemberWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/AnnotationTypeRequiredMemberWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -36,67 +36,79 @@
  * Do not use it as an API
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 
 public interface AnnotationTypeRequiredMemberWriter {
 
     /**
-     * Write the header for the member documentation.
+     * Add the annotation type details tree header.
      *
-     * @param classDoc the annotation type that the members belong to.
-     * @param header the header to write.
+     * @param classDoc the annotation type being documented
+     * @param memberDetailsTree the content tree representing member details
      */
-    public void writeHeader(ClassDoc classDoc, String header);
+    public void addAnnotationDetailsTreeHeader(ClassDoc classDoc,
+            Content memberDetailsTree);
 
     /**
-     * Write the member header for the given member.
+     * Get the annotation type documentation tree header.
      *
-     * @param member the member being documented.
-     * @param isFirst the flag to indicate whether or not the member is
-     *                the first to be documented.
+     * @param member the annotation type being documented
+     * @param annotationDetailsTree the content tree representing annotation type details
+     * @return content tree for the annotation type documentation header
      */
-    public void writeMemberHeader(MemberDoc member, boolean isFirst);
+    public Content getAnnotationDocTreeHeader(MemberDoc member,
+            Content annotationDetailsTree);
 
     /**
-     * Write the signature for the given member.
+     * Get the annotation type details tree.
      *
-     * @param member the member being documented.
+     * @param annotationDetailsTree the content tree representing annotation type details
+     * @return content tree for the annotation type details
      */
-    public void writeSignature(MemberDoc member);
+    public Content getAnnotationDetails(Content annotationDetailsTree);
 
     /**
-     * Write the deprecated output for the given member.
+     * Get the annotation type documentation.
      *
-     * @param member the member being documented.
+     * @param annotationDocTree the content tree representing annotation type documentation
+     * @param isLastContent true if the content to be added is the last content
+     * @return content tree for the annotation type documentation
      */
-    public void writeDeprecated(MemberDoc member);
+    public Content getAnnotationDoc(Content annotationDocTree, boolean isLastContent);
 
     /**
-     * Write the comments for the given member.
+     * Get the signature for the given member.
      *
-     * @param member the member being documented.
+     * @param member the member being documented
+     * @return content tree for the annotation type signature
      */
-    public void writeComments(MemberDoc member);
+    public Content getSignature(MemberDoc member);
 
     /**
-     * Write the tag output for the given member.
+     * Add the deprecated output for the given member.
      *
-     * @param member the member being documented.
+     * @param member the member being documented
+     * @param annotationDocTree content tree to which the deprecated information will be added
      */
-    public void writeTags(MemberDoc member);
+    public void addDeprecated(MemberDoc member, Content annotationDocTree);
 
     /**
-     * Write the member footer.
+     * Add the comments for the given member.
+     *
+     * @param member the member being documented
+     * @param annotationDocTree the content tree to which the comments will be added
      */
-    public void writeMemberFooter();
+    public void addComments(MemberDoc member, Content annotationDocTree);
 
     /**
-     * Write the footer for the member documentation.
+     * Add the tags for the given member.
      *
-     * @param classDoc the class that the member belong to.
+     * @param member the member being documented
+     * @param annotationDocTree the content tree to which the tags will be added
      */
-    public void writeFooter(ClassDoc classDoc);
+    public void addTags(MemberDoc member, Content annotationDocTree);
 
     /**
      * Close the writer.
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/AnnotationTypeWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/AnnotationTypeWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -37,43 +37,122 @@
  * Do not use it as an API.
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 
 public interface AnnotationTypeWriter {
 
     /**
-     * Write the header of the page.
-     * @param header the header to write.
+     * Get the header of the page.
+     *
+     * @param header the header string to write
+     * @return a content tree for the header documentation
      */
-    public void writeHeader(String header);
+    public Content getHeader(String header);
+
+    /**
+     * Get the annotation content header.
+     *
+     * @return annotation content header that needs to be added to the documentation
+     */
+    public Content getAnnotationContentHeader();
 
     /**
-     * Write the signature of the current annotation type.
+     * Get the annotation information tree header.
+     *
+     * @return annotation information tree header that needs to be added to the documentation
+     */
+    public Content getAnnotationInfoTreeHeader();
+
+    /**
+     * Get the annotation information.
      *
-     * @param modifiers the modifiers for the signature.
+     * @param annotationInfoTree content tree containing the annotation information
+     * @return a content tree for the annotation
      */
-    public void writeAnnotationTypeSignature(String modifiers);
+    public Content getAnnotationInfo(Content annotationInfoTree);
+
+    /**
+     * Add the signature of the current annotation type.
+     *
+     * @param modifiers the modifiers for the signature
+     * @param annotationInfoTree the annotation content tree to which the signature will be added
+     */
+    public void addAnnotationTypeSignature(String modifiers, Content annotationInfoTree);
 
     /**
      * Build the annotation type description.
+     *
+     * @param annotationInfoTree content tree to which the description will be added
      */
-    public void writeAnnotationTypeDescription();
+    public void addAnnotationTypeDescription(Content annotationInfoTree);
+
+    /**
+     * Add the tag information for the current annotation type.
+     *
+     * @param annotationInfoTree content tree to which the tag information will be added
+     */
+    public void addAnnotationTypeTagInfo(Content annotationInfoTree);
 
     /**
-     * Write the tag information for the current annotation type.
+     * If this annotation is deprecated, add the appropriate information.
+     *
+     * @param annotationInfoTree content tree to which the deprecated information will be added
      */
-    public void writeAnnotationTypeTagInfo();
+    public void addAnnotationTypeDeprecationInfo (Content annotationInfoTree);
+
+    /**
+     * Add the annotation type details marker.
+     *
+     * @param memberDetails the content tree representing member details marker
+     */
+    public void addAnnotationDetailsMarker(Content memberDetails);
+
+    /**
+     * Get the member tree header for the annotation type.
+     *
+     * @return a content tree for the member tree header
+     */
+    public Content getMemberTreeHeader();
 
     /**
-     * If this annotation type is deprecated, write the appropriate information.
+     * Get the member tree.
+     *
+     * @param memberTree the content tree that will be modified and returned
+     * @return a content tree for the member
      */
-    public void writeAnnotationTypeDeprecationInfo();
+    public Content getMemberTree(Content memberTree);
+
+    /**
+     * Get the member summary tree.
+     *
+     * @param memberTree the content tree that will be used to build the summary tree
+     * @return a content tree for the member summary
+     */
+    public Content getMemberSummaryTree(Content memberTree);
 
     /**
-     * Write the footer of the page.
+     * Get the member details tree.
+     *
+     * @param memberTree the content tree that will be used to build the details tree
+     * @return a content tree for the member details
      */
-    public void writeFooter();
+    public Content getMemberDetailsTree(Content memberTree);
+
+    /**
+     * Add the footer of the page.
+     *
+     * @param contentTree content tree to which the footer will be added
+     */
+    public void addFooter(Content contentTree);
+
+    /**
+     * Print the document.
+     *
+     * @param contentTree content tree that will be printed as a document
+     */
+    public void printDocument(Content contentTree);
 
     /**
      * Close the writer.
@@ -86,10 +165,4 @@
      * @return the AnnotationTypeDoc being documented.
      */
     public AnnotationTypeDoc getAnnotationTypeDoc();
-
-    /**
-     * Perform any operations that are necessary when the member summary
-     * finished building.
-     */
-    public void completeMemberSummaryBuild();
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/ClassWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/ClassWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -37,85 +37,149 @@
  * Do not use it as an API
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 
 public interface ClassWriter {
 
     /**
-     * Write the header of the page.
-     * @param header the header to write.
+     * Get the header of the page.
+     *
+     * @param header the header string to write
+     * @return header content that needs to be added to the documentation
      */
-    public void writeHeader(String header);
+    public Content getHeader(String header);
 
     /**
-     * Write the class tree documentation.
+     * Get the class content header.
+     *
+     * @return class content header that needs to be added to the documentation
      */
-    public void writeClassTree();
+    public Content getClassContentHeader();
+
+    /**
+     * Add the class tree documentation.
+     *
+     * @param classContentTree class content tree to which the documentation will be added
+     */
+    public void addClassTree(Content classContentTree);
 
     /**
-     * Write all implemented interfaces if this is a class.
+     * Get the class information tree header.
+     *
+     * @return class informaion tree header that needs to be added to the documentation
      */
-    public void writeImplementedInterfacesInfo();
+    public Content getClassInfoTreeHeader();
 
     /**
-     * Write all super interfaces if this is an interface.
+     * Add the type parameter information.
+     *
+     * @param classInfoTree content tree to which the documentation will be added
      */
-    public void writeSuperInterfacesInfo();
+    public void addTypeParamInfo(Content classInfoTree);
 
     /**
-     * Write the type parameter information.
+     * Add all super interfaces if this is an interface.
+     *
+     * @param classInfoTree content tree to which the documentation will be added
      */
-    public void writeTypeParamInfo();
+    public void addSuperInterfacesInfo(Content classInfoTree);
+
+    /**
+     * Add all implemented interfaces if this is a class.
+     *
+     * @param classInfoTree content tree to which the documentation will be added
+     */
+    public void addImplementedInterfacesInfo(Content classInfoTree);
 
     /**
-     * Write all the classes that extend this one.
+     * Add all the classes that extend this one.
+     *
+     * @param classInfoTree content tree to which the documentation will be added
      */
-    public void writeSubClassInfo();
+    public void addSubClassInfo(Content classInfoTree);
 
     /**
-     * Write all the interfaces that extend this one.
+     * Add all the interfaces that extend this one.
+     *
+     * @param classInfoTree content tree to which the documentation will be added
      */
-    public void writeSubInterfacesInfo();
+    public void addSubInterfacesInfo(Content classInfoTree);
 
     /**
-     * If this is an interface, write all classes that implement this
+     * If this is an interface, add all classes that implement this
      * interface.
+     *
+     * @param classInfoTree content tree to which the documentation will be added
      */
-    public void writeInterfaceUsageInfo ();
+    public void addInterfaceUsageInfo(Content classInfoTree);
 
     /**
-     * If this is an inner class or interface, write the enclosing class or
+     * If this is an inner class or interface, add the enclosing class or
      * interface.
+     *
+     * @param classInfoTree content tree to which the documentation will be added
      */
-    public void writeNestedClassInfo ();
+    public void addNestedClassInfo (Content classInfoTree);
 
     /**
-     * If this class is deprecated, write the appropriate information.
+     * Get the class information.
+     *
+     * @param classInfoTree content tree conatining the class information
+     * @return a content tree for the class
      */
-    public void writeClassDeprecationInfo ();
+    public Content getClassInfo(Content classInfoTree);
 
     /**
-     * Write the signature of the current class.
+     * If this class is deprecated, add the appropriate information.
      *
-     * @param modifiers the modifiers for the signature.
+     * @param classInfoTree content tree to which the documentation will be added
      */
-    public void writeClassSignature(String modifiers);
+    public void addClassDeprecationInfo (Content classInfoTree);
+
+    /**
+     * Add the signature of the current class content tree.
+     *
+     * @param modifiers the modifiers for the signature
+     * @param classInfoTree the class content tree to which the signature will be added
+     */
+    public void addClassSignature(String modifiers, Content classInfoTree);
 
     /**
      * Build the class description.
+     *
+     * @param classInfoTree content tree to which the documentation will be added
      */
-    public void writeClassDescription();
+    public void addClassDescription(Content classInfoTree);
+
+    /**
+     * Add the tag information for the current class.
+     *
+     * @param classInfoTree content tree to which the tag information will be added
+     */
+    public void addClassTagInfo(Content classInfoTree);
 
     /**
-     * Write the tag information for the current class.
+     * Get the member tree header for the class.
+     *
+     * @return a content tree for the member tree header
      */
-    public void writeClassTagInfo();
+    public Content getMemberTreeHeader();
 
     /**
-     * Write the footer of the page.
+     * Add the footer of the page.
+     *
+     * @param contentTree content tree to which the footer will be added
      */
-    public void writeFooter();
+    public void addFooter(Content contentTree);
+
+    /**
+     * Print the document.
+     *
+     * @param contentTree content tree that will be printed as a document
+     */
+    public void printDocument(Content contentTree);
 
     /**
      * Close the writer.
@@ -130,8 +194,18 @@
     public ClassDoc getClassDoc();
 
     /**
-     * Perform any operations that are necessary when the member summary
-     * finished building.
+     * Get the member summary tree.
+     *
+     * @param memberTree the content tree used to build the summary tree
+     * @return a content tree for the member summary
      */
-    public void completeMemberSummaryBuild();
+    public Content getMemberSummaryTree(Content memberTree);
+
+    /**
+     * Get the member details tree.
+     *
+     * @param memberTree the content tree used to build the details tree
+     * @return a content tree for the member details
+     */
+    public Content getMemberDetailsTree(Content memberTree);
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/ConstantsSummaryWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/ConstantsSummaryWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,9 +25,9 @@
 
 package com.sun.tools.doclets.internal.toolkit;
 
-import com.sun.javadoc.*;
 import java.util.*;
 import java.io.*;
+import com.sun.javadoc.*;
 
 /**
  * The interface for writing constants summary output.
@@ -37,38 +37,34 @@
  * Do not use it as an API
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 
 public interface ConstantsSummaryWriter {
 
     /**
-     * Write the header for the summary.
-     */
-    public abstract void writeHeader();
-
-    /**
-     * Write the footer for the summary.
-     */
-    public abstract void writeFooter();
-
-    /**
      * Close the writer.
      */
     public abstract void close() throws IOException;
 
     /**
-     * Write the header for the index.
+     * Get the header for the constant summary documentation.
+     *
+     * @return header that needs to be added to the documentation
      */
-    public abstract void writeContentsHeader();
+    public abstract Content getHeader();
 
     /**
-     * Write the footer for the index.
+     * Get the header for the constant content list.
+     *
+     * @return content header that needs to be added to the documentation
      */
-    public abstract void writeContentsFooter();
+    public abstract Content getContentsHeader();
 
     /**
-     * Add the given package name to the index.
+     * Adds the given package name link to the constant content list tree.
+     *
      * @param pkg                    the {@link PackageDoc} to index.
      * @param parsedPackageName      the parsed package name.  We only Write the
      *                               first 2 directory levels of the package
@@ -77,38 +73,70 @@
      * @param WriteedPackageHeaders the set of package headers that have already
      *                              been indexed.  We don't want to index
      *                              something more than once.
+     * @param contentListTree the content tree to which the link will be added
      */
-    public abstract void writeLinkToPackageContent(PackageDoc pkg, String parsedPackageName,
-        Set<String> WriteedPackageHeaders);
+    public abstract void addLinkToPackageContent(PackageDoc pkg, String parsedPackageName,
+        Set<String> WriteedPackageHeaders, Content contentListTree);
 
     /**
-     * Write the given package name.
-     * @param pkg                    the {@link PackageDoc} to index.
-     * @param parsedPackageName      the parsed package name.  We only Write the
-     *                               first 2 directory levels of the package
-     *                               name. For example, java.lang.ref would be
-     *                               indexed as java.lang.*.
+     * Get the content list to be added to the documentation tree.
+     *
+     * @param contentListTree the content that will be added to the list
+     * @return content list that will be added to the documentation tree
      */
-    public abstract void writePackageName(PackageDoc pkg,
-        String parsedPackageName);
+    public abstract Content getContentsList(Content contentListTree);
+
+    /**
+     * Get the constant summaries for the document.
+     *
+     * @return constant summaries header to be added to the documentation tree
+     */
+    public abstract Content getConstantSummaries();
 
     /**
-     * Write the heading for the current table of constants for a given class.
-     * @param cd the class whose constants are being documented.
+     * Adds the given package name.
+     *
+     * @param pkg the {@link PackageDoc} to index.
+     * @param parsedPackageName the parsed package name.  We only Write the
+     *                          first 2 directory levels of the package
+     *                          name. For example, java.lang.ref would be
+     *                          indexed as java.lang.*.
+     * @param summariesTree the documentation tree to which the package name will
+     *                    be written
      */
-    public abstract void writeConstantMembersHeader(ClassDoc cd);
+    public abstract void addPackageName(PackageDoc pkg,
+        String parsedPackageName, Content summariesTree);
 
     /**
-     * Document the given constants.
+     * Get the class summary header for the constants summary.
+     *
+     * @return the header content for the class constants summary
+     */
+    public abstract Content getClassConstantHeader();
+
+    /**
+     * Adds the constant member table to the documentation tree.
+     *
      * @param cd the class whose constants are being documented.
      * @param fields the constants being documented.
+     * @param classConstantTree the documentation tree to which theconstant member
+     *                    table content will be added
      */
-    public abstract void writeConstantMembers(ClassDoc cd, List<FieldDoc> fields);
+    public abstract void addConstantMembers(ClassDoc cd, List<FieldDoc> fields,
+            Content classConstantTree);
 
     /**
-     * Document the given constants.
-     * @param cd the class whose constants are being documented.
+     * Adds the footer for the summary documentation.
+     *
+     * @param contentTree content tree to which the footer will be added
      */
-    public abstract void writeConstantMembersFooter(ClassDoc cd);
+    public abstract void addFooter(Content contentTree);
+
+    /**
+     * Print the constants summary document.
+     *
+     * @param contentTree content tree which should be printed
+     */
+    public abstract void printDocument(Content contentTree);
 
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/ConstructorWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/ConstructorWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -36,67 +36,80 @@
  * Do not use it as an API
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 
 public interface ConstructorWriter {
 
     /**
-     * Write the header for the constructor documentation.
+     * Get the constructor details tree header.
      *
-     * @param classDoc the class that the constructors belong to.
-     * @param header the header to write.
+     * @param classDoc the class being documented
+     * @param memberDetailsTree the content tree representing member details
+     * @return content tree for the constructor details header
      */
-    public void writeHeader(ClassDoc classDoc, String header);
+    public Content getConstructorDetailsTreeHeader(ClassDoc classDoc,
+            Content memberDetailsTree);
 
     /**
-     * Write the constructor header for the given constructor.
+     * Get the constructor documentation tree header.
      *
-     * @param constructor the constructor being documented.
-     * @param isFirst the flag to indicate whether or not the constructor is the
-     *        first to be documented.
+     * @param constructor the constructor being documented
+     * @param constructorDetailsTree the content tree representing constructor details
+     * @return content tree for the constructor documentation header
      */
-    public void writeConstructorHeader(ConstructorDoc constructor, boolean isFirst);
+    public Content getConstructorDocTreeHeader(ConstructorDoc constructor,
+            Content constructorDetailsTree);
 
     /**
-     * Write the signature for the given constructor.
+     * Get the signature for the given constructor.
      *
-     * @param constructor the constructor being documented.
+     * @param constructor the constructor being documented
+     * @return content tree for the constructor signature
      */
-    public void writeSignature(ConstructorDoc constructor);
+    public Content getSignature(ConstructorDoc constructor);
 
     /**
-     * Write the deprecated output for the given constructor.
+     * Add the deprecated output for the given constructor.
      *
-     * @param constructor the constructor being documented.
+     * @param constructor the constructor being documented
+     * @param constructorDocTree content tree to which the deprecated information will be added
      */
-    public void writeDeprecated(ConstructorDoc constructor);
+    public void addDeprecated(ConstructorDoc constructor, Content constructorDocTree);
 
     /**
-     * Write the comments for the given constructor.
+     * Add the comments for the given constructor.
      *
-     * @param constructor the constructor being documented.
+     * @param constructor the constructor being documented
+     * @param constructorDocTree the content tree to which the comments will be added
      */
-    public void writeComments(ConstructorDoc constructor);
+    public void addComments(ConstructorDoc constructor, Content constructorDocTree);
 
     /**
-     * Write the tag output for the given constructor.
+     * Add the tags for the given constructor.
      *
-     * @param constructor the constructor being documented.
+     * @param constructor the constructor being documented
+     * @param constructorDocTree the content tree to which the tags will be added
      */
-    public void writeTags(ConstructorDoc constructor);
+    public void addTags(ConstructorDoc constructor, Content constructorDocTree);
 
     /**
-     * Write the constructor footer.
+     * Get the constructor details tree.
+     *
+     * @param memberDetailsTree the content tree representing member details
+     * @return content tree for the constructor details
      */
-    public void writeConstructorFooter();
+    public Content getConstructorDetails(Content memberDetailsTree);
 
     /**
-     * Write the footer for the constructor documentation.
+     * Get the constructor documentation.
      *
-     * @param classDoc the class that the constructors belong to.
+     * @param constructorDocTree the content tree representing constructor documentation
+     * @param isLastContent true if the content to be added is the last content
+     * @return content tree for the constructor documentation
      */
-    public void writeFooter(ClassDoc classDoc);
+    public Content getConstructorDoc(Content constructorDocTree, boolean isLastContent);
 
     /**
      * Let the writer know whether a non public constructor was found.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/Content.java	Wed Dec 01 11:02:38 2010 -0800
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2010, 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.doclets.internal.toolkit;
+
+import com.sun.tools.doclets.internal.toolkit.util.*;
+
+/**
+ * A class to create content for javadoc output pages.
+ *
+ * @author Bhavesh Patel
+ */
+public abstract class Content {
+
+    /**
+     * Returns a string representation of the content.
+     *
+     * @return string representation of the content
+     */
+    public String toString() {
+        StringBuilder contentBuilder = new StringBuilder();
+        write(contentBuilder);
+        return contentBuilder.toString();
+    }
+
+    /**
+     * Adds content to the existing content.
+     *
+     * @param content content that needs to be added
+     */
+    public abstract void addContent(Content content);
+
+    /**
+     * Adds a string content to the existing content.
+     *
+     * @param stringContent the string content to be added
+     */
+    public abstract void addContent(String stringContent);
+
+    /**
+     * Writes content to a StringBuilder.
+     *
+     */
+    public abstract void write(StringBuilder contentBuilder);
+
+    /**
+     * Returns true if the content is empty.
+     *
+     * @return true if no content to be displayed else return false
+     */
+    public abstract boolean isEmpty();
+
+    /**
+     * Returns true if the content is valid.
+     *
+     * @return true if the content is valid else return false
+     */
+    public boolean isValid() {
+        return !isEmpty();
+    }
+
+    /**
+     * Checks for null values.
+     *
+     * @param t reference type to check for null values
+     * @return the reference type if not null or else throws a null pointer exception
+     */
+    protected static <T> T nullCheck(T t) {
+        t.getClass();
+        return t;
+    }
+
+    /**
+     * Returns true if the content ends with a newline character. Empty content
+     * is considered as ending with new line.
+     *
+     * @param contentBuilder content to test for newline character at the end
+     * @return true if the content ends with newline.
+     */
+    public boolean endsWithNewLine(StringBuilder contentBuilder) {
+        return ((contentBuilder.length() == 0) ||
+                (contentBuilder.substring(contentBuilder.length() - 1).equals("\n")));
+    }
+}
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/EnumConstantWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/EnumConstantWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -36,67 +36,80 @@
  * Do not use it as an API
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 
 public interface EnumConstantWriter {
 
     /**
-     * Write the header for the enum constant documentation.
+     * Get the enum constants details tree header.
      *
-     * @param classDoc the class that the enum constants belong to.
-     * @param header the header to write.
+     * @param classDoc the class being documented
+     * @param memberDetailsTree the content tree representing member details
+     * @return content tree for the enum constants details header
      */
-    public void writeHeader(ClassDoc classDoc, String header);
+    public Content getEnumConstantsDetailsTreeHeader(ClassDoc classDoc,
+            Content memberDetailsTree);
 
     /**
-     * Write the enum constant header for the given enum constant.
+     * Get the enum constants documentation tree header.
      *
-     * @param enumConstant the enum constant being documented.
-     * @param isFirst the flag to indicate whether or not the enum constant is
-     *                the first to be documented.
+     * @param enumConstant the enum constant being documented
+     * @param enumConstantDetailsTree the content tree representing enum constant details
+     * @return content tree for the enum constant documentation header
      */
-    public void writeEnumConstantHeader(FieldDoc enumConstant, boolean isFirst);
+    public Content getEnumConstantsTreeHeader(FieldDoc enumConstant,
+            Content enumConstantsDetailsTree);
 
     /**
-     * Write the signature for the given enum constant.
+     * Get the signature for the given enum constant.
      *
-     * @param enumConstant the enum constant being documented.
+     * @param enumConstant the enum constant being documented
+     * @return content tree for the enum constant signature
      */
-    public void writeSignature(FieldDoc enumConstant);
+    public Content getSignature(FieldDoc enumConstant);
 
     /**
-     * Write the deprecated output for the given enum constant.
+     * Add the deprecated output for the given enum constant.
      *
-     * @param enumConstant the enum constant being documented.
+     * @param enumConstant the enum constant being documented
+     * @param enumConstantsTree content tree to which the deprecated information will be added
      */
-    public void writeDeprecated(FieldDoc enumConstant);
+    public void addDeprecated(FieldDoc enumConstant, Content enumConstantsTree);
 
     /**
-     * Write the comments for the given enum constant.
+     * Add the comments for the given enum constant.
      *
-     * @param enumConstant the enum constant being documented.
+     * @param enumConstant the enum constant being documented
+     * @param enumConstantsTree the content tree to which the comments will be added
      */
-    public void writeComments(FieldDoc enumConstant);
+    public void addComments(FieldDoc enumConstant, Content enumConstantsTree);
 
     /**
-     * Write the tag output for the given enum constant.
+     * Add the tags for the given enum constant.
      *
-     * @param enumConstant the enum constant being documented.
+     * @param enumConstant the enum constant being documented
+     * @param enumConstantsTree the content tree to which the tags will be added
      */
-    public void writeTags(FieldDoc enumConstant);
+    public void addTags(FieldDoc enumConstant, Content enumConstantsTree);
 
     /**
-     * Write the enum constant footer.
+     * Get the enum constants details tree.
+     *
+     * @param memberDetailsTree the content tree representing member details
+     * @return content tree for the enum constant details
      */
-    public void writeEnumConstantFooter();
+    public Content getEnumConstantsDetails(Content memberDetailsTree);
 
     /**
-     * Write the footer for the enum constant documentation.
+     * Get the enum constants documentation.
      *
-     * @param classDoc the class that the enum constant belong to.
+     * @param enumConstantsTree the content tree representing enum constants documentation
+     * @param isLastContent true if the content to be added is the last content
+     * @return content tree for the enum constants documentation
      */
-    public void writeFooter(ClassDoc classDoc);
+    public Content getEnumConstants(Content enumConstantsTree, boolean isLastContent);
 
     /**
      * Close the writer.
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/FieldWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/FieldWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -36,67 +36,80 @@
  * Do not use it as an API
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 
 public interface FieldWriter {
 
     /**
-     * Write the header for the field documentation.
+     * Get the field details tree header.
      *
-     * @param classDoc the class that the fields belong to.
-     * @param header the header to write.
+     * @param classDoc the class being documented
+     * @param memberDetailsTree the content tree representing member details
+     * @return content tree for the field details header
      */
-    public void writeHeader(ClassDoc classDoc, String header);
+    public Content getFieldDetailsTreeHeader(ClassDoc classDoc,
+            Content memberDetailsTree);
 
     /**
-     * Write the field header for the given field.
+     * Get the field documentation tree header.
      *
-     * @param field the field being documented.
-     * @param isFirst the flag to indicate whether or not the field is the
-     *        first to be documented.
+     * @param field the constructor being documented
+     * @param fieldDetailsTree the content tree representing field details
+     * @return content tree for the field documentation header
      */
-    public void writeFieldHeader(FieldDoc field, boolean isFirst);
+    public Content getFieldDocTreeHeader(FieldDoc field,
+            Content fieldDetailsTree);
 
     /**
-     * Write the signature for the given field.
+     * Get the signature for the given field.
      *
-     * @param field the field being documented.
+     * @param field the field being documented
+     * @return content tree for the field signature
      */
-    public void writeSignature(FieldDoc field);
+    public Content getSignature(FieldDoc field);
 
     /**
-     * Write the deprecated output for the given field.
+     * Add the deprecated output for the given field.
      *
-     * @param field the field being documented.
+     * @param field the field being documented
+     * @param fieldDocTree content tree to which the deprecated information will be added
      */
-    public void writeDeprecated(FieldDoc field);
+    public void addDeprecated(FieldDoc field, Content fieldDocTree);
 
     /**
-     * Write the comments for the given field.
+     * Add the comments for the given field.
      *
-     * @param field the field being documented.
+     * @param field the field being documented
+     * @param fieldDocTree the content tree to which the comments will be added
      */
-    public void writeComments(FieldDoc field);
+    public void addComments(FieldDoc field, Content fieldDocTree);
 
     /**
-     * Write the tag output for the given field.
+     * Add the tags for the given field.
      *
-     * @param field the field being documented.
+     * @param field the field being documented
+     * @param fieldDocTree the content tree to which the tags will be added
      */
-    public void writeTags(FieldDoc field);
+    public void addTags(FieldDoc field, Content fieldDocTree);
 
     /**
-     * Write the field footer.
+     * Get the field details tree.
+     *
+     * @param memberDetailsTree the content tree representing member details
+     * @return content tree for the field details
      */
-    public void writeFieldFooter();
+    public Content getFieldDetails(Content memberDetailsTree);
 
     /**
-     * Write the footer for the field documentation.
+     * Get the field documentation.
      *
-     * @param classDoc the class that the fields belong to.
+     * @param fieldDocTree the content tree representing field documentation
+     * @param isLastContent true if the content to be added is the last content
+     * @return content tree for the field documentation
      */
-    public void writeFooter(ClassDoc classDoc);
+    public Content getFieldDoc(Content fieldDocTree, boolean isLastContent);
 
     /**
      * Close the writer.
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/MemberSummaryWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/MemberSummaryWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -26,6 +26,7 @@
 package com.sun.tools.doclets.internal.toolkit;
 
 import java.io.*;
+import java.util.*;
 import com.sun.javadoc.*;
 
 /**
@@ -36,61 +37,77 @@
  * Do not use it as an API
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 
 public interface MemberSummaryWriter {
 
     /**
-     * Write the member summary header for the given class.
+     * Get the member summary header for the given class.
      *
-     * @param classDoc the class the summary belongs to.
+     * @param classDoc the class the summary belongs to
+     * @param memberSummaryTree the content tree to which the member summary will be added
+     * @return a content tree for the member summary header
      */
-    public void writeMemberSummaryHeader(ClassDoc classDoc);
+    public Content getMemberSummaryHeader(ClassDoc classDoc,
+            Content memberSummaryTree);
 
     /**
-     * Write the member summary for the given class and member.
+     * Get the summary table for the given class.
      *
-     * @param classDoc the class the summary belongs to.
-     * @param member the member that I am summarizing.
-     * @param firstSentenceTags the tags for the sentence being documented.
-     * @param isFirst true if this is the first member in the list.
-     * @param isLast true if this the last member being documented.
+     * @param classDoc the class the summary table belongs to
+     * @return a content tree for the member summary table
      */
-    public void writeMemberSummary(ClassDoc classDoc, ProgramElementDoc member,
-        Tag[] firstSentenceTags, boolean isFirst, boolean isLast);
+    public Content getSummaryTableTree(ClassDoc classDoc);
+
+    /**
+     * Add the member summary for the given class and member.
+     *
+     * @param classDoc the class the summary belongs to
+     * @param member the member that is documented
+     * @param firstSentenceTags the tags for the sentence being documented
+     * @param tableTree the content treeto which the information will be added
+     * @param counter the counter for determing style for the table row
+     */
+    public void addMemberSummary(ClassDoc classDoc, ProgramElementDoc member,
+        Tag[] firstSentenceTags, Content tableTree, int counter);
 
     /**
-     * Write the member summary footer for the given class.
+     * Get the inherited member summary header for the given class.
      *
-     * @param classDoc the class the summary belongs to.
+     * @param classDoc the class the summary belongs to
+     * @return a content tree containing the inherited summary header
      */
-    public void writeMemberSummaryFooter(ClassDoc classDoc);
-
-    /**
-     * Write the inherited member summary header for the given class.
-     *
-     * @param classDoc the class the summary belongs to.
-     */
-    public void writeInheritedMemberSummaryHeader(ClassDoc classDoc);
+    public Content getInheritedSummaryHeader(ClassDoc classDoc);
 
     /**
-     * Write the inherited member summary for the given class and member.
+     * Add the inherited member summary for the given class and member.
      *
-     * @param classDoc the class the inherited member belongs to.
-     * @param member   the inherited member that I am summarizing.
-     * @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 classDoc the class the inherited member belongs to
+     * @param member the inherited member that is being documented
+     * @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 links will be added
      */
-    public void writeInheritedMemberSummary(ClassDoc classDoc,
-        ProgramElementDoc member, boolean isFirst, boolean isLast);
+    public void addInheritedMemberSummary(ClassDoc classDoc,
+        ProgramElementDoc member, boolean isFirst, boolean isLast,
+        Content linksTree);
 
     /**
-     * Write the inherited member summary footer for the given class.
+     * Get inherited summary links.
      *
-     * @param classDoc the class the summary belongs to.
+     * @return a content tree conatining the inherited summary links
      */
-    public void writeInheritedMemberSummaryFooter(ClassDoc classDoc);
+    public Content getInheritedSummaryLinksTree();
+
+    /**
+     * Get the member tree.
+     *
+     * @param memberTree the content tree representating the member
+     * @return a content tree for the member
+     */
+    public Content getMemberTree(Content memberTree);
 
     /**
      * Close the writer.
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/MethodWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/MethodWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -36,68 +36,81 @@
  * Do not use it as an API
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 
 public interface MethodWriter {
 
     /**
-     * Write the header for the method documentation.
+     * Get the method details tree header.
      *
-     * @param classDoc the class that the methods belong to.
-     * @param header the header to write.
+     * @param classDoc the class being documented
+     * @param memberDetailsTree the content tree representing member details
+     * @return content tree for the method details header
      */
-    public void writeHeader(ClassDoc classDoc, String header);
+    public Content getMethodDetailsTreeHeader(ClassDoc classDoc,
+            Content memberDetailsTree);
 
     /**
-     * Write the method header for the given method.
+     * Get the method documentation tree header.
      *
-     * @param method the method being documented.
-     * @param isFirst the flag to indicate whether or not the method is the
-     *        first to be documented.
+     * @param method the method being documented
+     * @param methodDetailsTree the content tree representing method details
+     * @return content tree for the method documentation header
      */
-    public void writeMethodHeader(MethodDoc method, boolean isFirst);
+    public Content getMethodDocTreeHeader(MethodDoc method,
+            Content methodDetailsTree);
 
     /**
-     * Write the signature for the given method.
+     * Get the signature for the given method.
      *
-     * @param method the method being documented.
+     * @param method the method being documented
+     * @return content tree for the method signature
      */
-    public void writeSignature(MethodDoc method);
+    public Content getSignature(MethodDoc method);
 
     /**
-     * Write the deprecated output for the given method.
+     * Add the deprecated output for the given method.
      *
-     * @param method the method being documented.
+     * @param method the method being documented
+     * @param methodDocTree content tree to which the deprecated information will be added
      */
-    public void writeDeprecated(MethodDoc method);
+    public void addDeprecated(MethodDoc method, Content methodDocTree);
 
     /**
-     * Write the comments for the given method.
+     * Add the comments for the given method.
      *
-     * @param holder the holder type (not erasure) of the method.
-     * @param method the method being documented.
+     * @param holder the holder type (not erasure) of the method
+     * @param method the method being documented
+     * @param methodDocTree the content tree to which the comments will be added
      */
-    public void writeComments(Type holder, MethodDoc method);
+    public void addComments(Type holder, MethodDoc method, Content methodDocTree);
 
     /**
-     * Write the tag output for the given method.
+     * Add the tags for the given method.
      *
-     * @param method the method being documented.
+     * @param method the method being documented
+     * @param methodDocTree the content tree to which the tags will be added
      */
-    public void writeTags(MethodDoc method);
+    public void addTags(MethodDoc method, Content methodDocTree);
 
     /**
-     * Write the method footer.
+     * Get the method details tree.
+     *
+     * @param methodDetailsTree the content tree representing method details
+     * @return content tree for the method details
      */
-    public void writeMethodFooter();
+    public Content getMethodDetails(Content methodDetailsTree);
 
     /**
-     * Write the footer for the method documentation.
+     * Get the method documentation.
      *
-     * @param classDoc the class that the methods belong to.
+     * @param methodDocTree the content tree representing method documentation
+     * @param isLastContent true if the content to be added is the last content
+     * @return content tree for the method documentation
      */
-    public void writeFooter(ClassDoc classDoc);
+    public Content getMethodDoc(Content methodDocTree, boolean isLastContent);
 
     /**
      * Close the writer.
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/NestedClassWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/NestedClassWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -26,7 +26,6 @@
 package com.sun.tools.doclets.internal.toolkit;
 
 import java.io.*;
-import com.sun.javadoc.*;
 
 /**
  * The interface for writing class output.
@@ -36,59 +35,13 @@
  * Do not use it as an API
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 
 public interface NestedClassWriter {
 
     /**
-     * Write the classes summary header for the given class.
-     *
-     * @param nestedClass the class the summary belongs to.
-     */
-    public void writeNestedClassSummaryHeader(ClassDoc nestedClass);
-
-    /**
-     * Write the class summary for the given class and class.
-     *
-     * @param classDoc the class the summary belongs to.
-     * @param nestedClass the nested class that I am summarizing.
-     */
-    public void writeNestedClassSummary(ClassDoc classDoc, ClassDoc nestedClass);
-
-    /**
-     * Write the classes summary footer for the given class.
-     *
-     * @param nestedClass the class the summary belongs to.
-     */
-    public void writeNestedClassSummaryFooter(ClassDoc nestedClass);
-
-    /**
-     * Write the inherited classes summary header for the given class.
-     *
-     * @param nestedClass the class the summary belongs to.
-     */
-    public void writeInheritedNestedClassSummaryHeader(ClassDoc nestedClass);
-
-    /**
-     * Write the inherited nested class summary for the given class and nested
-     * class.
-     *
-     * @param classDoc the class the inherited nested class belongs to.
-     * @param nestedClass the inherited nested class that I am summarizing.
-     * @param isFirst true if this is the first member in the list.
-     */
-    public void writeInheritedNestedClassSummary(ClassDoc classDoc,
-            ClassDoc nestedClass, boolean isFirst);
-
-    /**
-     * Write the inherited classes summary footer for the given class.
-     *
-     * @param nestedClass the class the summary belongs to.
-     */
-    public void writeInheritedNestedClassSummaryFooter(ClassDoc nestedClass);
-
-    /**
      * Close the writer.
      */
     public void close() throws IOException;
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/PackageSummaryWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/PackageSummaryWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -36,6 +36,7 @@
  * Do not use it as an API
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 
@@ -49,45 +50,70 @@
     public abstract String getOutputFileName();
 
     /**
-     * Write the header for the package summary.
+     * Get the header for the summary.
+     *
+     * @param heading Package name.
+     * @return the header to be added to the content tree
      */
-    public abstract void writeSummaryHeader();
+    public abstract Content getPackageHeader(String heading);
 
     /**
-     * Write the footer for the package summary.
+     * Get the header for the package content.
+     *
+     * @return a content tree for the package content header
      */
-    public abstract void writeSummaryFooter();
+    public abstract Content getContentHeader();
 
     /**
-     * Write the table of classes in this package.
+     * Get the header for the package summary.
+     *
+     * @return a content tree with the package summary header
+     */
+    public abstract Content getSummaryHeader();
+
+    /**
+     * Adds the table of classes to the documentation tree.
      *
      * @param classes the array of classes to document.
      * @param label the label for this table.
+     * @param tableSummary the summary string for the table
+     * @param tableHeader array of table headers
+     * @param summaryContentTree the content tree to which the summaries will be added
      */
-    public abstract void writeClassesSummary(ClassDoc[] classes, String label, String tableSummary, String[] tableHeader);
+    public abstract void addClassesSummary(ClassDoc[] classes, String label,
+            String tableSummary, String[] tableHeader, Content summaryContentTree);
 
     /**
-     * Write the header for the summary.
+     * Adds the package description from the "packages.html" file to the documentation
+     * tree.
      *
-     * @param heading Package name.
+     * @param packageContentTree the content tree to which the package description
+     *                           will be added
      */
-    public abstract void writePackageHeader(String heading);
+    public abstract void addPackageDescription(Content packageContentTree);
 
     /**
-     * Print the package description from the "packages.html" file.
+     * Adds the tag information from the "packages.html" file to the documentation
+     * tree.
+     *
+     * @param packageContentTree the content tree to which the package tags will
+     *                           be added
      */
-    public abstract void writePackageDescription();
+    public abstract void addPackageTags(Content packageContentTree);
 
     /**
-     * Print the tag information from the "packages.html" file.
+     * Adds the footer to the documentation tree.
+     *
+     * @param contentTree the tree to which the footer will be added
      */
-    public abstract void writePackageTags();
+    public abstract void addPackageFooter(Content contentTree);
 
     /**
-     * Write the footer for the summary.
+     * Print the package summary document.
      *
+     * @param contentTree the content tree that will be printed
      */
-    public abstract void writePackageFooter();
+    public abstract void printDocument(Content contentTree);
 
     /**
      * Close the writer.
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/SerializedFormWriter.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/SerializedFormWriter.java	Wed Dec 01 11:02:38 2010 -0800
@@ -43,33 +43,73 @@
 public interface SerializedFormWriter {
 
     /**
-     * Write the given header.
+     * Get the header.
      *
      * @param header the header to write.
+     * @return the header content tree
      */
-    public void writeHeader(String header);
+    public Content getHeader(String header);
+
+    /**
+     * Get the serialized form summaries header.
+     *
+     * @return the serialized form summary header tree
+     */
+    public Content getSerializedSummariesHeader();
+
+    /**
+     * Get the package serialized form header.
+     *
+     * @return the package serialized form header tree
+     */
+    public Content getPackageSerializedHeader();
 
     /**
-     * Write the given package header.
+     * Get the given package header.
      *
-     * @param packageName the package header to write.
+     * @param packageName the package header to write
+     * @return a content tree for the package header
      */
-    public void writePackageHeader(String packageName);
+    public Content getPackageHeader(String packageName);
+
+    /**
+     * Get the serialized class header.
+     *
+     * @return a content tree for the serialized class header
+     */
+    public Content getClassSerializedHeader();
 
     /**
-     * Write the heading for the serializable class.
+     * Get the heading for the serializable class.
      *
-     * @param classDoc the class being processed.
+     * @param classDoc the class being processed
+     * @return a content tree for the class heading
      */
-    public void writeClassHeader(ClassDoc classDoc);
+    public Content getClassHeader(ClassDoc classDoc);
 
     /**
-     * Write the serial UID info.
+     * Get the serial UID info header.
+     *
+     * @return a content tree for the serial uid info header
+     */
+    public Content getSerialUIDInfoHeader();
+
+    /**
+     * Adds the serial UID info.
      *
      * @param header the header that will show up before the UID.
      * @param serialUID the serial UID to print.
+     * @param serialUidTree the serial UID tree to which the content will be added.
      */
-    public void writeSerialUIDInfo(String header, String serialUID);
+    public void addSerialUIDInfo(String header, String serialUID,
+            Content serialUidTree);
+
+    /**
+     * Get the class serialize content header.
+     *
+     * @return a content tree for the class serialize content header
+     */
+    public Content getClassContentHeader();
 
     /**
      * Return an instance of a SerialFieldWriter.
@@ -91,9 +131,26 @@
     public abstract void close() throws IOException;
 
     /**
-     * Write the footer.
+     * Get the serialized content.
+     *
+     * @param serializedTreeContent content for serialized data
+     * @return a content tree for serialized information
      */
-    public void writeFooter();
+    public Content getSerializedContent(Content serializedTreeContent);
+
+    /**
+     * Add the footer.
+     *
+     * @param serializedTree the serialized tree to be added
+     */
+    public void addFooter(Content serializedTree);
+
+    /**
+     * Print the serialized form document.
+     *
+     * @param serializedTree the content tree that will be printed
+     */
+    public abstract void printDocument(Content serializedTree);
 
     /**
      * Write the serialized form for a given field.
@@ -101,56 +158,73 @@
     public interface SerialFieldWriter {
 
         /**
-         * Write the given heading.
+         * Get the serializable field header.
          *
-         * @param heading the heading to write.
+         * @return serialized fields header content tree
          */
-        public void writeHeader(String heading);
+        public Content getSerializableFieldsHeader();
 
         /**
-         * Write the deprecated information for this member.
+         * Get the field content header.
          *
-         * @param field the field to document.
+         * @param isLastContent true if this is the last content to be documented
+         * @return fields header content tree
          */
-        public void writeMemberDeprecatedInfo(FieldDoc field);
+        public Content getFieldsContentHeader(boolean isLastContent);
 
         /**
-         * Write the description text for this member.
+         * Get the fields content.
+         *
+         * @param heading the heading to write.
+         * @param contentTree content tree to which the heading will be added
+         * @return serializable fields content tree
+         */
+        public Content getSerializableFields(String heading, Content contentTree);
+
+        /**
+         * Adds the deprecated information for this member.
          *
          * @param field the field to document.
+         * @param contentTree content tree to which the deprecated information will be added
          */
-        public void writeMemberDescription(FieldDoc field);
+        public void addMemberDeprecatedInfo(FieldDoc field, Content contentTree);
 
         /**
-         * Write the description text for this member represented by the tag.
+         * Adds the description text for this member.
+         *
+         * @param field the field to document.
+         * @param contentTree content tree to which the member description will be added
+         */
+        public void addMemberDescription(FieldDoc field, Content contentTree);
+
+        /**
+         * Adds the description text for this member represented by the tag.
          *
          * @param serialFieldTag the field to document (represented by tag).
+         * @param contentTree content tree to which the member description will be added
          */
-        public void writeMemberDescription(SerialFieldTag serialFieldTag);
+        public void addMemberDescription(SerialFieldTag serialFieldTag, Content contentTree);
 
         /**
-         * Write the tag information for this member.
+         * Adds the tag information for this member.
          *
          * @param field the field to document.
+         * @param contentTree content tree to which the member tags will be added
          */
-        public void writeMemberTags(FieldDoc field);
+        public void addMemberTags(FieldDoc field, Content contentTree);
 
         /**
-         * Write the member header.
+         * Adds the member header.
          *
          * @param fieldType the type of the field.
          * @param fieldTypeStr the type of the field in string format.  We will
          * print this out if we can't link to the type.
          * @param fieldDimensions the dimensions of the field.
          * @param fieldName the name of the field.
+         * @param contentTree content tree to which the member header will be added
          */
-        public void writeMemberHeader(ClassDoc fieldType, String fieldTypeStr,
-            String fieldDimensions, String fieldName);
-
-        /**
-         * Write the member footer.
-         */
-        public void writeMemberFooter();
+        public void addMemberHeader(ClassDoc fieldType, String fieldTypeStr,
+            String fieldDimensions, String fieldName, Content contentTree);
 
         /**
          * Check to see if overview details should be printed. If
@@ -162,13 +236,6 @@
          * @return true if overview details need to be printed
          */
         public boolean shouldPrintOverview(FieldDoc field);
-
-        /**
-         * Write the footer.
-         *
-         * @param heading the heading that was written.
-         */
-        public void writeFooter (String heading);
     }
 
     /**
@@ -177,44 +244,70 @@
     public interface SerialMethodWriter {
 
         /**
+         * Get the serializable method header.
+         *
+         * @return serializable methods content tree
+         */
+        public Content getSerializableMethodsHeader();
+
+        /**
+         * Get the method content header.
+         *
+         * @param isLastContent true if this is the last content to be documented
+         * @return methods content tree
+         */
+        public Content getMethodsContentHeader(boolean isLastContent);
+
+        /**
          * Write the given heading.
          *
-         * @param heading the heading to write.
+         * @param heading the heading to write
+         * @param serializableMethodTree content tree which will be added
+         * @return serializable methods content tree
          */
-        public void writeHeader(String heading);
+        public Content getSerializableMethods(String heading, Content serializableMethodTree);
 
         /**
          * Write a warning that no serializable methods exist.
          *
-         * @param msg the warning to print.
+         * @param msg the warning to print
+         * @return no customization message tree
          */
-        public void writeNoCustomizationMsg(String msg);
+        public Content getNoCustomizationMsg(String msg);
 
         /**
-         * Write the header.
+         * Adds the header.
          *
-         * @param member the member to write the header for.
+         * @param member the member to write the header for
+         * @param methodsContentTree content tree to which the header will be added
          */
-        public void writeMemberHeader(MethodDoc member);
+        public void addMemberHeader(MethodDoc member, Content methodsContentTree);
 
         /**
-         * Write the footer.
+         * Adds the deprecated information for this member.
+         *
+         * @param member the member to write the deprecated information for
+         * @param methodsContentTree content tree to which the deprecated
+         * information will be added
          */
-        public void writeMemberFooter();
-
-        /**
-         * Write the deprecated information for this member.
-         */
-        public void writeDeprecatedMemberInfo(MethodDoc member);
+        public void addDeprecatedMemberInfo(MethodDoc member, Content methodsContentTree);
 
         /**
-         * Write the description for this member.
+         * Adds the description for this member.
+         *
+         * @param member the member to write the information for
+         * @param methodsContentTree content tree to which the member
+         * information will be added
          */
-        public void writeMemberDescription(MethodDoc member);
+        public void addMemberDescription(MethodDoc member, Content methodsContentTree);
 
         /**
-         * Write the tag information for this member.
+         * Adds the tag information for this member.
+         *
+         * @param member the member to write the tags information for
+         * @param methodsContentTree content tree to which the tags
+         * information will be added
          */
-        public void writeMemberTags(MethodDoc member);
+        public void addMemberTags(MethodDoc member, Content methodsContentTree);
     }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AbstractBuilder.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AbstractBuilder.java	Wed Dec 01 11:02:38 2010 -0800
@@ -95,13 +95,14 @@
      * Build the documentation, as specified by the given XML element.
      *
      * @param node the XML element that specifies which component to document.
+     * @param contentTree content tree to which the documentation will be added
      */
-    protected void build(XMLNode node) {
+    protected void build(XMLNode node, Content contentTree) {
         String component = node.name;
         try {
             invokeMethod("build" + component,
-                    new Class<?>[] { XMLNode.class },
-                    new Object[] { node });
+                    new Class<?>[]{XMLNode.class, Content.class},
+                    new Object[]{node, contentTree});
         } catch (NoSuchMethodException e) {
             e.printStackTrace();
             configuration.root.printError("Unknown element: " + component);
@@ -111,8 +112,8 @@
         } catch (Exception e) {
             e.printStackTrace();
             configuration.root.printError("Exception " +
-                e.getClass().getName() +
-                " thrown while processing element: " + component);
+                    e.getClass().getName() +
+                    " thrown while processing element: " + component);
             throw new DocletAbortException();
         }
     }
@@ -121,10 +122,11 @@
      * Build the documentation, as specified by the children of the given XML element.
      *
      * @param node the XML element that specifies which components to document.
+     * @param contentTree content tree to which the documentation will be added
      */
-    protected void buildChildren(XMLNode node) {
-        for (XMLNode child: node.children)
-            build(child);
+    protected void buildChildren(XMLNode node, Content contentTree) {
+        for (XMLNode child : node.children)
+            build(child, contentTree);
     }
 
     /**
@@ -140,8 +142,7 @@
             Object[] params)
     throws Exception {
         if (DEBUG) {
-            configuration.root.printError("DEBUG: " + this.getClass().getName()
-                + "." + methodName);
+            configuration.root.printError("DEBUG: " + this.getClass().getName() + "." + methodName);
         }
         Method method = this.getClass().getMethod(methodName, paramClasses);
         method.invoke(this, params);
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AbstractMemberBuilder.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AbstractMemberBuilder.java	Wed Dec 01 11:02:38 2010 -0800
@@ -27,6 +27,7 @@
 
 import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
+import java.util.*;
 
 /**
  * The superclass for all member builders.  Member builders are only executed
@@ -66,12 +67,13 @@
     /**
      * Build the sub component if there is anything to document.
      *
-     * @param elements {@inheritDoc}
+     * @param node the XML element that specifies which components to document.
+     * @param contentTree content tree to which the documentation will be added
      */
     @Override
-    public void build(XMLNode node) {
+    public void build(XMLNode node, Content contentTree) {
         if (hasMembersToDocument()) {
-            super.build(node);
+            super.build(node, contentTree);
         }
     }
 
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeBuilder.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeBuilder.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,11 +25,11 @@
 
 package com.sun.tools.doclets.internal.toolkit.builders;
 
+import java.io.*;
+import java.util.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
 import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.javadoc.*;
-import java.io.*;
-import java.util.*;
 
 /**
  * Builds the summary for a given annotation type.
@@ -39,6 +39,7 @@
  * Do not use it as an API
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 public class AnnotationTypeBuilder extends AbstractBuilder {
@@ -59,6 +60,11 @@
     private AnnotationTypeWriter writer;
 
     /**
+     * The content tree for the annotation documentation.
+     */
+    private Content contentTree;
+
+    /**
      * Construct a new ClassBuilder.
      *
      * @param configuration the current configuration of the
@@ -92,7 +98,7 @@
      * {@inheritDoc}
      */
     public void build() throws IOException {
-        build(LayoutParser.getInstance(configuration).parseXML(ROOT));
+        build(LayoutParser.getInstance(configuration).parseXML(ROOT), contentTree);
     }
 
     /**
@@ -102,18 +108,24 @@
         return ROOT;
     }
 
-     /**
-      * Handles the &lt;AnnotationTypeDoc> tag.
+    /**
+      * Build the annotation type documentation.
       *
-      * @param elements the XML elements that specify how to document a class.
+      * @param node the XML element that specifies which components to document
+      * @param contentTree the content tree to which the documentation will be added
       */
-     public void buildAnnotationTypeDoc(XMLNode node) throws Exception {
-        buildChildren(node);
-        writer.close();
-        copyDocFiles();
+     public void buildAnnotationTypeDoc(XMLNode node, Content contentTree) throws Exception {
+        contentTree = writer.getHeader(configuration.getText("doclet.AnnotationType") +
+                " " + annotationTypeDoc.name());
+        Content annotationContentTree = writer.getAnnotationContentHeader();
+         buildChildren(node, annotationContentTree);
+         contentTree.addContent(annotationContentTree);
+         writer.addFooter(contentTree);
+         writer.printDocument(contentTree);
+         writer.close();
+         copyDocFiles();
      }
 
-
      /**
       * Copy the doc files for the current ClassDoc if necessary.
       */
@@ -137,86 +149,112 @@
      }
 
     /**
-     * Build the header of the page.
+     * Build the annotation information tree documentation.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param annotationContentTree the content tree to which the documentation will be added
      */
-    public void buildAnnotationTypeHeader(XMLNode node) {
-        writer.writeHeader(configuration.getText("doclet.AnnotationType") +
-            " " + annotationTypeDoc.name());
+    public void buildAnnotationTypeInfo(XMLNode node, Content annotationContentTree) {
+        Content annotationInfoTree = writer.getAnnotationInfoTreeHeader();
+        buildChildren(node, annotationInfoTree);
+        annotationContentTree.addContent(writer.getAnnotationInfo(annotationInfoTree));
     }
 
     /**
-     * If this class is deprecated, print the appropriate information.
+     * If this annotation is deprecated, build the appropriate information.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param annotationInfoTree the content tree to which the documentation will be added
      */
-    public void buildDeprecationInfo (XMLNode node) {
-        writer.writeAnnotationTypeDeprecationInfo();
+    public void buildDeprecationInfo (XMLNode node, Content annotationInfoTree) {
+        writer.addAnnotationTypeDeprecationInfo(annotationInfoTree);
     }
 
     /**
      * Build the signature of the current annotation type.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param annotationInfoTree the content tree to which the documentation will be added
      */
-    public void buildAnnotationTypeSignature(XMLNode node) {
+    public void buildAnnotationTypeSignature(XMLNode node, Content annotationInfoTree) {
         StringBuffer modifiers = new StringBuffer(
-            annotationTypeDoc.modifiers() + " ");
-        writer.writeAnnotationTypeSignature(
-            Util.replaceText(
-                modifiers.toString(), "interface", "@interface"));
+                annotationTypeDoc.modifiers() + " ");
+        writer.addAnnotationTypeSignature(Util.replaceText(
+                modifiers.toString(), "interface", "@interface"), annotationInfoTree);
     }
 
     /**
-     * Build the class description.
+     * Build the annotation type description.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param annotationInfoTree the content tree to which the documentation will be added
      */
-    public void buildAnnotationTypeDescription(XMLNode node) {
-       writer.writeAnnotationTypeDescription();
+    public void buildAnnotationTypeDescription(XMLNode node, Content annotationInfoTree) {
+        writer.addAnnotationTypeDescription(annotationInfoTree);
     }
 
     /**
-     * Build the tag information for the current class.
+     * Build the tag information for the current annotation type.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param annotationInfoTree the content tree to which the documentation will be added
      */
-    public void buildAnnotationTypeTagInfo(XMLNode node) {
-       writer.writeAnnotationTypeTagInfo();
+    public void buildAnnotationTypeTagInfo(XMLNode node, Content annotationInfoTree) {
+        writer.addAnnotationTypeTagInfo(annotationInfoTree);
     }
 
     /**
-     * Build the contents of the page.
+     * Build the member summary contents of the page.
      *
-     * @param elements the XML elements that specify how a member summary is
-     *                 documented.
+     * @param node the XML element that specifies which components to document
+     * @param annotationContentTree the content tree to which the documentation will be added
      */
-    public void buildMemberSummary(XMLNode node) throws Exception {
+    public void buildMemberSummary(XMLNode node, Content annotationContentTree)
+            throws Exception {
+        Content memberSummaryTree = writer.getMemberTreeHeader();
         configuration.getBuilderFactory().
-            getMemberSummaryBuilder(writer).buildChildren(node);
-        writer.completeMemberSummaryBuild();
+                getMemberSummaryBuilder(writer).buildChildren(node, memberSummaryTree);
+        annotationContentTree.addContent(writer.getMemberSummaryTree(memberSummaryTree));
+    }
+
+    /**
+     * Build the member details contents of the page.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param annotationContentTree the content tree to which the documentation will be added
+     */
+    public void buildAnnotationTypeMemberDetails(XMLNode node, Content annotationContentTree) {
+        Content memberDetailsTree = writer.getMemberTreeHeader();
+        buildChildren(node, memberDetailsTree);
+        if (memberDetailsTree.isValid()) {
+            Content memberDetails = writer.getMemberTreeHeader();
+            writer.addAnnotationDetailsMarker(memberDetails);
+            memberDetails.addContent(writer.getMemberTree(memberDetailsTree));
+            annotationContentTree.addContent(writer.getMemberDetailsTree(memberDetails));
+        }
     }
 
     /**
      * Build the annotation type optional member documentation.
      *
-     * @param elements the XML elements that specify how a annotation type
-     *                 members are documented.
+     * @param node the XML element that specifies which components to document
+     * @param memberDetailsTree the content tree to which the documentation will be added
      */
-    public void buildAnnotationTypeOptionalMemberDetails(XMLNode node)
-    throws Exception {
+    public void buildAnnotationTypeOptionalMemberDetails(XMLNode node, Content memberDetailsTree)
+            throws Exception {
         configuration.getBuilderFactory().
-            getAnnotationTypeOptionalMemberBuilder(writer).buildChildren(node);
+                getAnnotationTypeOptionalMemberBuilder(writer).buildChildren(node, memberDetailsTree);
     }
 
     /**
      * Build the annotation type required member documentation.
      *
-     * @param elements the XML elements that specify how a annotation type
-     *                 members are documented.
+     * @param node the XML element that specifies which components to document
+     * @param memberDetailsTree the content tree to which the documentation will be added
      */
-    public void buildAnnotationTypeRequiredMemberDetails(XMLNode node)
-    throws Exception {
+    public void buildAnnotationTypeRequiredMemberDetails(XMLNode node, Content memberDetailsTree)
+            throws Exception {
         configuration.getBuilderFactory().
-            getAnnotationTypeRequiredMemberBuilder(writer).buildChildren(node);
-    }
-
-
-    /**
-     * Build the footer of the page.
-     */
-    public void buildAnnotationTypeFooter(XMLNode node) {
-        writer.writeFooter();
+                getAnnotationTypeRequiredMemberBuilder(writer).buildChildren(node, memberDetailsTree);
     }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeOptionalMemberBuilder.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeOptionalMemberBuilder.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,11 +25,10 @@
 
 package com.sun.tools.doclets.internal.toolkit.builders;
 
-
+import java.util.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
 import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.javadoc.*;
-import java.util.*;
 
 /**
  * Builds documentation for optional annotation type members.
@@ -39,6 +38,7 @@
  * Do not use it as an API
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 public class AnnotationTypeOptionalMemberBuilder extends
@@ -90,27 +90,25 @@
     }
 
     /**
-     * Build the member documentation.
+     * Build the annotation type optional member documentation.
      *
-     * @param elements the XML elements that specify how to construct this
-     *                documentation.
+     * @param node the XML element that specifies which components to document
+     * @param memberDetailsTree the content tree to which the documentation will be added
      */
-    public void buildAnnotationTypeOptionalMember(XMLNode node) {
-        if (writer == null) {
-            return;
-        }
-        for (currentMemberIndex = 0; currentMemberIndex < members.size();
-            currentMemberIndex++) {
-            buildChildren(node);
-        }
+    public void buildAnnotationTypeOptionalMember(XMLNode node, Content memberDetailsTree) {
+        buildAnnotationTypeMember(node, memberDetailsTree);
     }
 
     /**
-     * Document the default value for this optional member.
+     * Build the default value for this optional member.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param annotationDocTree the content tree to which the documentation will be added
      */
-    public void buildDefaultValueInfo(XMLNode node) {
-        ((AnnotationTypeOptionalMemberWriter) writer).writeDefaultValueInfo(
-            (MemberDoc) members.get(currentMemberIndex));
+    public void buildDefaultValueInfo(XMLNode node, Content annotationDocTree) {
+        ((AnnotationTypeOptionalMemberWriter) writer).addDefaultValueInfo(
+                (MemberDoc) members.get(currentMemberIndex),
+                annotationDocTree);
     }
 
     /**
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeRequiredMemberBuilder.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeRequiredMemberBuilder.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,11 +25,10 @@
 
 package com.sun.tools.doclets.internal.toolkit.builders;
 
-
+import java.util.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
 import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.javadoc.*;
-import java.util.*;
 
 /**
  * Builds documentation for required annotation type members.
@@ -39,6 +38,7 @@
  * Do not use it as an API
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 public class AnnotationTypeRequiredMemberBuilder extends AbstractMemberBuilder {
@@ -141,81 +141,86 @@
     }
 
     /**
+     * Build the annotation type required member documentation.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param memberDetailsTree the content tree to which the documentation will be added
+     */
+    public void buildAnnotationTypeRequiredMember(XMLNode node, Content memberDetailsTree) {
+        buildAnnotationTypeMember(node, memberDetailsTree);
+    }
+
+    /**
      * Build the member documentation.
      *
-     * @param elements the XML elements that specify how to construct this
-     *                documentation.
+     * @param node the XML element that specifies which components to document
+     * @param memberDetailsTree the content tree to which the documentation will be added
      */
-    public void buildAnnotationTypeRequiredMember(XMLNode node) {
+    public void buildAnnotationTypeMember(XMLNode node, Content memberDetailsTree) {
         if (writer == null) {
             return;
         }
-        for (currentMemberIndex = 0; currentMemberIndex < members.size();
+        int size = members.size();
+        if (size > 0) {
+            writer.addAnnotationDetailsTreeHeader(
+                    classDoc, memberDetailsTree);
+            for (currentMemberIndex = 0; currentMemberIndex < size;
             currentMemberIndex++) {
-            buildChildren(node);
+                Content annotationDocTree = writer.getAnnotationDocTreeHeader(
+                        (MemberDoc) members.get(currentMemberIndex),
+                        memberDetailsTree);
+                buildChildren(node, annotationDocTree);
+                memberDetailsTree.addContent(writer.getAnnotationDoc(
+                        annotationDocTree, (currentMemberIndex == size - 1)));
+            }
         }
     }
 
     /**
-     * Build the overall header.
-     */
-    public void buildHeader(XMLNode node) {
-        writer.writeHeader(classDoc,
-            configuration.getText("doclet.Annotation_Type_Member_Detail"));
-    }
-
-    /**
-     * Build the header for the individual members.
+     * Build the signature.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param annotationDocTree the content tree to which the documentation will be added
      */
-    public void buildMemberHeader(XMLNode node) {
-        writer.writeMemberHeader((MemberDoc) members.get(
-                currentMemberIndex),
-            currentMemberIndex == 0);
-    }
-
-    /**
-     * Build the signature.
-     */
-    public void buildSignature(XMLNode node) {
-        writer.writeSignature((MemberDoc) members.get(currentMemberIndex));
+    public void buildSignature(XMLNode node, Content annotationDocTree) {
+        annotationDocTree.addContent(
+                writer.getSignature((MemberDoc) members.get(currentMemberIndex)));
     }
 
     /**
      * Build the deprecation information.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param annotationDocTree the content tree to which the documentation will be added
      */
-    public void buildDeprecationInfo(XMLNode node) {
-        writer.writeDeprecated((MemberDoc) members.get(currentMemberIndex));
+    public void buildDeprecationInfo(XMLNode node, Content annotationDocTree) {
+        writer.addDeprecated((MemberDoc) members.get(currentMemberIndex),
+                annotationDocTree);
     }
 
     /**
      * Build the comments for the member.  Do nothing if
      * {@link Configuration#nocomment} is set to true.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param annotationDocTree the content tree to which the documentation will be added
      */
-    public void buildMemberComments(XMLNode node) {
+    public void buildMemberComments(XMLNode node, Content annotationDocTree) {
         if(! configuration.nocomment){
-            writer.writeComments((MemberDoc) members.get(currentMemberIndex));
+            writer.addComments((MemberDoc) members.get(currentMemberIndex),
+                    annotationDocTree);
         }
     }
 
     /**
      * Build the tag information.
-     */
-    public void buildTagInfo(XMLNode node) {
-        writer.writeTags((MemberDoc) members.get(currentMemberIndex));
-    }
-
-    /**
-     * Build the footer for the individual member.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param annotationDocTree the content tree to which the documentation will be added
      */
-    public void buildMemberFooter(XMLNode node) {
-        writer.writeMemberFooter();
-    }
-
-    /**
-     * Build the overall footer.
-     */
-    public void buildFooter(XMLNode node) {
-        writer.writeFooter(classDoc);
+    public void buildTagInfo(XMLNode node, Content annotationDocTree) {
+        writer.addTags((MemberDoc) members.get(currentMemberIndex),
+                annotationDocTree);
     }
 
     /**
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ClassBuilder.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ClassBuilder.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,11 +25,11 @@
 
 package com.sun.tools.doclets.internal.toolkit.builders;
 
+import java.io.*;
+import java.util.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
 import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.javadoc.*;
-import java.io.*;
-import java.util.*;
 
 /**
  * Builds the summary for a given class.
@@ -39,6 +39,7 @@
  * Do not use it as an API
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 public class ClassBuilder extends AbstractBuilder {
@@ -69,6 +70,11 @@
     private boolean isEnum = false;
 
     /**
+     * The content tree for the class documentation.
+     */
+    private Content contentTree;
+
+    /**
      * Construct a new ClassBuilder.
      *
      * @param configuration the current configuration of the
@@ -108,7 +114,7 @@
      * {@inheritDoc}
      */
     public void build() throws IOException {
-        build(LayoutParser.getInstance(configuration).parseXML(ROOT));
+        build(LayoutParser.getInstance(configuration).parseXML(ROOT), contentTree);
     }
 
     /**
@@ -121,121 +127,159 @@
      /**
       * Handles the &lt;ClassDoc> tag.
       *
-      * @param elements the XML elements that specify how to document a class.
+      * @param node the XML element that specifies which components to document
+      * @param contentTree the content tree to which the documentation will be added
       */
-     public void buildClassDoc(XMLNode node) throws Exception {
-        buildChildren(node);
-        writer.close();
-        copyDocFiles();
+     public void buildClassDoc(XMLNode node, Content contentTree) throws Exception {
+         String key;
+         if (isInterface) {
+             key =  "doclet.Interface";
+         } else if (isEnum) {
+             key = "doclet.Enum";
+         } else {
+             key =  "doclet.Class";
+         }
+         contentTree = writer.getHeader(configuration.getText(key) + " " +
+                 classDoc.name());
+         Content classContentTree = writer.getClassContentHeader();
+         buildChildren(node, classContentTree);
+         contentTree.addContent(classContentTree);
+         writer.addFooter(contentTree);
+         writer.printDocument(contentTree);
+         writer.close();
+         copyDocFiles();
      }
 
+     /**
+      * Build the class tree documentation.
+      *
+      * @param node the XML element that specifies which components to document
+      * @param classContentTree the content tree to which the documentation will be added
+      */
+    public void buildClassTree(XMLNode node, Content classContentTree) {
+        writer.addClassTree(classContentTree);
+    }
 
-     /**
-      * Copy the doc files for the current ClassDoc if necessary.
-      */
+    /**
+     * Build the class information tree documentation.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param classContentTree the content tree to which the documentation will be added
+     */
+    public void buildClassInfo(XMLNode node, Content classContentTree) {
+        Content classInfoTree = writer.getClassInfoTreeHeader();
+        buildChildren(node, classInfoTree);
+        classContentTree.addContent(writer.getClassInfo(classInfoTree));
+    }
+
+    /**
+     * Build the typeparameters of this class.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param classInfoTree the content tree to which the documentation will be added
+     */
+    public void buildTypeParamInfo(XMLNode node, Content classInfoTree) {
+        writer.addTypeParamInfo(classInfoTree);
+    }
+
+    /**
+     * If this is an interface, list all super interfaces.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param classInfoTree the content tree to which the documentation will be added
+     */
+    public void buildSuperInterfacesInfo(XMLNode node, Content classInfoTree) {
+        writer.addSuperInterfacesInfo(classInfoTree);
+    }
+
+    /**
+     * If this is a class, list all interfaces implemented by this class.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param classInfoTree the content tree to which the documentation will be added
+     */
+    public void buildImplementedInterfacesInfo(XMLNode node, Content classInfoTree) {
+        writer.addImplementedInterfacesInfo(classInfoTree);
+    }
+
+    /**
+     * List all the classes extend this one.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param classInfoTree the content tree to which the documentation will be added
+     */
+    public void buildSubClassInfo(XMLNode node, Content classInfoTree) {
+        writer.addSubClassInfo(classInfoTree);
+    }
+
+    /**
+     * List all the interfaces that extend this one.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param classInfoTree the content tree to which the documentation will be added
+     */
+    public void buildSubInterfacesInfo(XMLNode node, Content classInfoTree) {
+        writer.addSubInterfacesInfo(classInfoTree);
+    }
+
+    /**
+     * If this is an interface, list all classes that implement this interface.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param classInfoTree the content tree to which the documentation will be added
+     */
+    public void buildInterfaceUsageInfo(XMLNode node, Content classInfoTree) {
+        writer.addInterfaceUsageInfo(classInfoTree);
+    }
+
+    /**
+     * If this class is deprecated, build the appropriate information.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param classInfoTree the content tree to which the documentation will be added
+     */
+    public void buildDeprecationInfo (XMLNode node, Content classInfoTree) {
+        writer.addClassDeprecationInfo(classInfoTree);
+    }
+
+    /**
+     * If this is an inner class or interface, list the enclosing class or interface.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param classInfoTree the content tree to which the documentation will be added
+     */
+    public void buildNestedClassInfo (XMLNode node, Content classInfoTree) {
+        writer.addNestedClassInfo(classInfoTree);
+    }
+
+    /**
+     * Copy the doc files for the current ClassDoc if necessary.
+     */
      private void copyDocFiles() {
         PackageDoc containingPackage = classDoc.containingPackage();
         if((configuration.packages == null ||
                 Arrays.binarySearch(configuration.packages,
-                                    containingPackage) < 0) &&
-           ! containingPackagesSeen.contains(containingPackage.name())){
+                containingPackage) < 0) &&
+                ! containingPackagesSeen.contains(containingPackage.name())){
             //Only copy doc files dir if the containing package is not
             //documented AND if we have not documented a class from the same
             //package already. Otherwise, we are making duplicate copies.
             Util.copyDocFiles(configuration,
-                Util.getPackageSourcePath(configuration,
+                    Util.getPackageSourcePath(configuration,
                     classDoc.containingPackage()) +
-                DirectoryManager.getDirectoryPath(classDoc.containingPackage())
+                    DirectoryManager.getDirectoryPath(classDoc.containingPackage())
                     + File.separator, DocletConstants.DOC_FILES_DIR_NAME, true);
             containingPackagesSeen.add(containingPackage.name());
         }
      }
 
     /**
-     * Build the header of the page.
-     */
-    public void buildClassHeader(XMLNode node) {
-        String key;
-        if (isInterface) {
-            key =  "doclet.Interface";
-        } else if (isEnum) {
-            key = "doclet.Enum";
-        } else {
-            key =  "doclet.Class";
-        }
-
-        writer.writeHeader(configuration.getText(key) + " " + classDoc.name());
-    }
-
-    /**
-     * Build the class tree documentation.
-     */
-    public void buildClassTree(XMLNode node) {
-        writer.writeClassTree();
-    }
-
-    /**
-     * If this is a class, list all interfaces
-     * implemented by this class.
-     */
-    public void buildImplementedInterfacesInfo(XMLNode node) {
-        writer.writeImplementedInterfacesInfo();
-    }
-
-    /**
-     * If this is an interface, list all super interfaces.
-     */
-    public void buildSuperInterfacesInfo(XMLNode node) {
-        writer.writeSuperInterfacesInfo();
-    }
-
-    /**
-     * List the parameters of this class.
+     * Build the signature of the current class.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param classInfoTree the content tree to which the documentation will be added
      */
-    public void buildTypeParamInfo(XMLNode node) {
-        writer.writeTypeParamInfo();
-    }
-
-    /**
-     * List all the classes extend this one.
-     */
-    public void buildSubClassInfo(XMLNode node) {
-        writer.writeSubClassInfo();
-    }
-
-    /**
-     * List all the interfaces that extend this one.
-     */
-    public void buildSubInterfacesInfo(XMLNode node) {
-        writer.writeSubInterfacesInfo();
-    }
-
-    /**
-     * If this is an interface, list all classes that implement this interface.
-     */
-    public void buildInterfaceUsageInfo (XMLNode node) {
-        writer.writeInterfaceUsageInfo();
-    }
-
-    /**
-     * If this is an inner class or interface, list the enclosing class or
-     * interface.
-     */
-    public void buildNestedClassInfo (XMLNode node) {
-        writer.writeNestedClassInfo();
-    }
-
-    /**
-     * If this class is deprecated, print the appropriate information.
-     */
-    public void buildDeprecationInfo (XMLNode node) {
-        writer.writeClassDeprecationInfo();
-    }
-
-    /**
-     * Build the signature of the current class.
-     */
-    public void buildClassSignature(XMLNode node) {
+    public void buildClassSignature(XMLNode node, Content classInfoTree) {
         StringBuffer modifiers = new StringBuffer(classDoc.modifiers() + " ");
         if (isEnum) {
             modifiers.append("enum ");
@@ -243,93 +287,111 @@
             if ((index = modifiers.indexOf("abstract")) >= 0) {
                 modifiers.delete(index, index + (new String("abstract")).length());
                 modifiers = new StringBuffer(
-                    Util.replaceText(modifiers.toString(), "  ", " "));
+                        Util.replaceText(modifiers.toString(), "  ", " "));
             }
             if ((index = modifiers.indexOf("final")) >= 0) {
                 modifiers.delete(index, index + (new String("final")).length());
                 modifiers = new StringBuffer(
-                    Util.replaceText(modifiers.toString(), "  ", " "));
+                        Util.replaceText(modifiers.toString(), "  ", " "));
             }
         //} else if (classDoc.isAnnotationType()) {
             //modifiers.append("@interface ");
         } else if (! isInterface) {
             modifiers.append("class ");
         }
-        writer.writeClassSignature(modifiers.toString());
+        writer.addClassSignature(modifiers.toString(), classInfoTree);
     }
 
     /**
      * Build the class description.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param classInfoTree the content tree to which the documentation will be added
      */
-    public void buildClassDescription(XMLNode node) {
-       writer.writeClassDescription();
+    public void buildClassDescription(XMLNode node, Content classInfoTree) {
+       writer.addClassDescription(classInfoTree);
     }
 
     /**
      * Build the tag information for the current class.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param classInfoTree the content tree to which the documentation will be added
      */
-    public void buildClassTagInfo(XMLNode node) {
-       writer.writeClassTagInfo();
+    public void buildClassTagInfo(XMLNode node, Content classInfoTree) {
+       writer.addClassTagInfo(classInfoTree);
     }
 
     /**
-     * Build the contents of the page.
+     * Build the member summary contents of the page.
      *
-     * @param elements the XML elements that specify how a member summary is
-     *                 documented.
+     * @param node the XML element that specifies which components to document
+     * @param classContentTree the content tree to which the documentation will be added
      */
-    public void buildMemberSummary(XMLNode node) throws Exception {
+    public void buildMemberSummary(XMLNode node, Content classContentTree) throws Exception {
+        Content memberSummaryTree = writer.getMemberTreeHeader();
         configuration.getBuilderFactory().
-            getMemberSummaryBuilder(writer).buildChildren(node);
-        writer.completeMemberSummaryBuild();
+                getMemberSummaryBuilder(writer).buildChildren(node, memberSummaryTree);
+        classContentTree.addContent(writer.getMemberSummaryTree(memberSummaryTree));
+    }
+
+    /**
+     * Build the member details contents of the page.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param classContentTree the content tree to which the documentation will be added
+     */
+    public void buildMemberDetails(XMLNode node, Content classContentTree) {
+        Content memberDetailsTree = writer.getMemberTreeHeader();
+        buildChildren(node, memberDetailsTree);
+        classContentTree.addContent(writer.getMemberDetailsTree(memberDetailsTree));
     }
 
     /**
      * Build the enum constants documentation.
      *
-     * @param elements the XML elements that specify how a enum constants are
-     *                 documented.
+     * @param node the XML element that specifies which components to document
+     * @param memberDetailsTree the content tree to which the documentation will be added
      */
-    public void buildEnumConstantsDetails(XMLNode node) throws Exception {
+    public void buildEnumConstantsDetails(XMLNode node,
+            Content memberDetailsTree) throws Exception {
         configuration.getBuilderFactory().
-            getEnumConstantsBuilder(writer).buildChildren(node);
+                getEnumConstantsBuilder(writer).buildChildren(node, memberDetailsTree);
     }
 
     /**
      * Build the field documentation.
      *
-     * @param elements the XML elements that specify how a field is documented.
+     * @param node the XML element that specifies which components to document
+     * @param memberDetailsTree the content tree to which the documentation will be added
      */
-    public void buildFieldDetails(XMLNode node) throws Exception {
+    public void buildFieldDetails(XMLNode node,
+            Content memberDetailsTree) throws Exception {
         configuration.getBuilderFactory().
-            getFieldBuilder(writer).buildChildren(node);
+                getFieldBuilder(writer).buildChildren(node, memberDetailsTree);
     }
 
     /**
      * Build the constructor documentation.
      *
-     * @param elements the XML elements that specify how to document a
-     * constructor.
+     * @param node the XML element that specifies which components to document
+     * @param memberDetailsTree the content tree to which the documentation will be added
      */
-    public void buildConstructorDetails(XMLNode node) throws Exception {
+    public void buildConstructorDetails(XMLNode node,
+            Content memberDetailsTree) throws Exception {
         configuration.getBuilderFactory().
-            getConstructorBuilder(writer).buildChildren(node);
+                getConstructorBuilder(writer).buildChildren(node, memberDetailsTree);
     }
 
     /**
      * Build the method documentation.
      *
-     * @param elements the XML elements that specify how a method is documented.
+     * @param node the XML element that specifies which components to document
+     * @param memberDetailsTree the content tree to which the documentation will be added
      */
-    public void buildMethodDetails(XMLNode node) throws Exception {
+    public void buildMethodDetails(XMLNode node,
+            Content memberDetailsTree) throws Exception {
         configuration.getBuilderFactory().
-                getMethodBuilder(writer).buildChildren(node);
-    }
-
-    /**
-     * Build the footer of the page.
-     */
-    public void buildClassFooter(XMLNode node) {
-        writer.writeFooter();
+                getMethodBuilder(writer).buildChildren(node, memberDetailsTree);
     }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ConstantsSummaryBuilder.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ConstantsSummaryBuilder.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,11 +25,11 @@
 
 package com.sun.tools.doclets.internal.toolkit.builders;
 
+import java.io.*;
+import java.util.*;
+import com.sun.javadoc.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
 import com.sun.tools.doclets.internal.toolkit.*;
-import com.sun.javadoc.*;
-import java.io.*;
-import java.util.*;
 
 /**
  * Builds the Constants Summary Page.
@@ -39,6 +39,7 @@
  * Do not use it as an API
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 public class ConstantsSummaryBuilder extends AbstractBuilder {
@@ -80,6 +81,11 @@
     private ClassDoc currentClass;
 
     /**
+     * The content tree for the constant summary documentation.
+     */
+    private Content contentTree;
+
+    /**
      * Construct a new ConstantsSummaryBuilder.
      *
      * @param configuration the current configuration of the
@@ -113,7 +119,7 @@
             //Doclet does not support this output.
             return;
         }
-        build(LayoutParser.getInstance(configuration).parseXML(ROOT));
+        build(LayoutParser.getInstance(configuration).parseXML(ROOT), contentTree);
     }
 
     /**
@@ -126,85 +132,85 @@
     /**
      * Build the constant summary.
      *
-     * @param elements the list of elements describing constant summary
-     *                 documentation.
+     * @param node the XML element that specifies which components to document
+     * @param contentTree the content tree to which the documentation will be added
      */
-    public void buildConstantSummary(XMLNode node) throws Exception {
-        buildChildren(node);
+    public void buildConstantSummary(XMLNode node, Content contentTree) throws Exception {
+        contentTree = writer.getHeader();
+        buildChildren(node, contentTree);
+        writer.addFooter(contentTree);
+        writer.printDocument(contentTree);
         writer.close();
     }
 
     /**
-     * Build the header.
-     */
-    public void buildHeader(XMLNode node) {
-        writer.writeHeader();
-    }
-
-    /**
-     * Build the footer.
+     * Build the list of packages.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param contentTree the content tree to which the content list will be added
      */
-    public void buildFooter(XMLNode node) {
-        writer.writeFooter();
-    }
-
-    /**
-     * Build the table of contents.
-     */
-    public void buildContents(XMLNode node) {
-        writer.writeContentsHeader();
+    public void buildContents(XMLNode node, Content contentTree) {
+        Content contentListTree = writer.getContentsHeader();
         PackageDoc[] packages = configuration.packages;
         printedPackageHeaders = new HashSet<String>();
         for (int i = 0; i < packages.length; i++) {
             if (hasConstantField(packages[i]) && ! hasPrintedPackageIndex(packages[i].name())) {
-                writer.writeLinkToPackageContent(packages[i],
+                writer.addLinkToPackageContent(packages[i],
                     parsePackageName(packages[i].name()),
-                    printedPackageHeaders);
+                    printedPackageHeaders, contentListTree);
             }
         }
-        writer.writeContentsFooter();
+        contentTree.addContent(writer.getContentsList(contentListTree));
     }
 
     /**
      * Build the summary for each documented package.
      *
-     * @param elements the XML elements that represent the components
-     *                 of documentation for each package.
+     * @param node the XML element that specifies which components to document
+     * @param contentTree the tree to which the summaries will be added
      */
-    public void buildConstantSummaries(XMLNode node) {
+    public void buildConstantSummaries(XMLNode node, Content contentTree) {
         PackageDoc[] packages = configuration.packages;
         printedPackageHeaders = new HashSet<String>();
+        Content summariesTree = writer.getConstantSummaries();
         for (int i = 0; i < packages.length; i++) {
             if (hasConstantField(packages[i])) {
                 currentPackage = packages[i];
                 //Build the documentation for the current package.
-                buildChildren(node);
+                buildChildren(node, summariesTree);
             }
         }
+        contentTree.addContent(summariesTree);
     }
 
     /**
-     * Build the summary for the current package.
+     * Build the header for the given package.
      *
-     * @param elements the list of XML elements that make up package
-     *                 documentation.
+     * @param node the XML element that specifies which components to document
+     * @param summariesTree the tree to which the package header will be added
      */
-    public void buildPackageConstantSummary(XMLNode node) {
-        buildChildren(node);
+    public void buildPackageHeader(XMLNode node, Content summariesTree) {
+        String parsedPackageName = parsePackageName(currentPackage.name());
+        if (! printedPackageHeaders.contains(parsedPackageName)) {
+            writer.addPackageName(currentPackage,
+                parsePackageName(currentPackage.name()), summariesTree);
+            printedPackageHeaders.add(parsedPackageName);
+        }
     }
 
     /**
      * Build the summary for the current class.
      *
-     * @param elements the list of XML elements that make up the class
-     *                 constant summary.
+     * @param node the XML element that specifies which components to document
+     * @param summariesTree the tree to which the class constant summary will be added
      */
-    public void buildClassConstantSummary(XMLNode node) {
+    public void buildClassConstantSummary(XMLNode node, Content summariesTree) {
         ClassDoc[] classes = currentPackage.name().length() > 0 ?
             currentPackage.allClasses() :
             configuration.classDocCatalog.allClasses(
                 DocletConstants.DEFAULT_PACKAGE_NAME);
         Arrays.sort(classes);
+        Content classConstantTree = writer.getClassConstantHeader();
         for (int i = 0; i < classes.length; i++) {
             if (! classDocsWithConstFields.contains(classes[i]) ||
                 ! classes[i].isIncluded()) {
@@ -212,42 +218,20 @@
             }
             currentClass = classes[i];
             //Build the documentation for the current class.
-            buildChildren(node);
+            buildChildren(node, classConstantTree);
         }
-    }
-
-    /**
-     * Build the header for the given class.
-     */
-    public void buildPackageHeader(XMLNode node) {
-        String parsedPackageName = parsePackageName(currentPackage.name());
-        if (! printedPackageHeaders.contains(parsedPackageName)) {
-            writer.writePackageName(currentPackage,
-                parsePackageName(currentPackage.name()));
-            printedPackageHeaders.add(parsedPackageName);
-        }
+        summariesTree.addContent(classConstantTree);
     }
 
     /**
-     * Build the header for the given class.
-     */
-    public void buildClassHeader(XMLNode node) {
-        writer.writeConstantMembersHeader(currentClass);
-    }
-
-    /**
-     * Print summary of constant members in the
-     * class.
+     * Build the summary of constant members in the class.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param classConstantTree the tree to which the constant members table
+     *                          will be added
      */
-    public void buildConstantMembers(XMLNode node) {
-        new ConstantFieldBuilder(currentClass).buildMembersSummary(node);
-    }
-
-    /**
-     * Build the footer for the given class.
-     */
-    public void buildClassFooter(XMLNode node) {
-        writer.writeConstantMembersFooter(currentClass);
+    public void buildConstantMembers(XMLNode node, Content classConstantTree) {
+        new ConstantFieldBuilder(currentClass).buildMembersSummary(node, classConstantTree);
     }
 
     /**
@@ -346,12 +330,16 @@
 
         /**
          * Builds the table of constants for a given class.
+         *
+         * @param node the XML element that specifies which components to document
+         * @param classConstantTree the tree to which the class constants table
+         *                          will be added
          */
-        protected void buildMembersSummary(XMLNode node) {
+        protected void buildMembersSummary(XMLNode node, Content classConstantTree) {
             List<FieldDoc> members = new ArrayList<FieldDoc>(members());
             if (members.size() > 0) {
                 Collections.sort(members);
-                writer.writeConstantMembers(classdoc, members);
+                writer.addConstantMembers(classdoc, members, classConstantTree);
             }
         }
 
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ConstructorBuilder.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ConstructorBuilder.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,10 +25,10 @@
 
 package com.sun.tools.doclets.internal.toolkit.builders;
 
+import java.util.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
 import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.javadoc.*;
-import java.util.*;
 
 /**
  * Builds documentation for a constructor.
@@ -38,200 +38,195 @@
  * Do not use it as an API
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 public class ConstructorBuilder extends AbstractMemberBuilder {
 
-        /**
-         * The name of this builder.
-         */
-        public static final String NAME = "ConstructorDetails";
+    /**
+     * The name of this builder.
+     */
+    public static final String NAME = "ConstructorDetails";
 
-        /**
-         * The index of the current field that is being documented at this point
-         * in time.
-         */
-        private int currentMethodIndex;
+    /**
+     * The index of the current field that is being documented at this point
+     * in time.
+     */
+    private int currentConstructorIndex;
 
-        /**
-         * The class whose constructors are being documented.
-         */
-        private ClassDoc classDoc;
+    /**
+     * The class whose constructors are being documented.
+     */
+    private ClassDoc classDoc;
 
-        /**
-         * The visible constructors for the given class.
-         */
-        private VisibleMemberMap visibleMemberMap;
+    /**
+     * The visible constructors for the given class.
+     */
+    private VisibleMemberMap visibleMemberMap;
 
-        /**
-         * The writer to output the constructor documentation.
-         */
-        private ConstructorWriter writer;
+    /**
+     * The writer to output the constructor documentation.
+     */
+    private ConstructorWriter writer;
 
-        /**
-         * The constructors being documented.
-         */
-        private List<ProgramElementDoc> constructors;
+    /**
+     * The constructors being documented.
+     */
+    private List<ProgramElementDoc> constructors;
 
-        /**
-         * Construct a new ConstructorBuilder.
-         *
-         * @param configuration the current configuration of the
-         *                      doclet.
-         */
-        private ConstructorBuilder(Configuration configuration) {
-                super(configuration);
-        }
+    /**
+     * Construct a new ConstructorBuilder.
+     *
+     * @param configuration the current configuration of the
+     *                      doclet.
+     */
+    private ConstructorBuilder(Configuration configuration) {
+        super(configuration);
+    }
 
-        /**
-         * Construct a new ConstructorBuilder.
-         *
-         * @param configuration the current configuration of the doclet.
-         * @param classDoc the class whoses members are being documented.
-         * @param writer the doclet specific writer.
-         */
-        public static ConstructorBuilder getInstance(
-                Configuration configuration,
-                ClassDoc classDoc,
-                ConstructorWriter writer) {
-                ConstructorBuilder builder = new ConstructorBuilder(configuration);
-                builder.classDoc = classDoc;
-                builder.writer = writer;
-                builder.visibleMemberMap =
-                        new VisibleMemberMap(
-                                classDoc,
-                                VisibleMemberMap.CONSTRUCTORS,
-                                configuration.nodeprecated);
-                builder.constructors =
-                        new ArrayList<ProgramElementDoc>(builder.visibleMemberMap.getMembersFor(classDoc));
-                for (int i = 0; i < builder.constructors.size(); i++) {
-                        if (builder.constructors.get(i).isProtected()
-                                || builder.constructors.get(i).isPrivate()) {
-                                writer.setFoundNonPubConstructor(true);
-                        }
-                }
-                if (configuration.getMemberComparator() != null) {
-                        Collections.sort(
-                                builder.constructors,
-                                configuration.getMemberComparator());
-                }
-                return builder;
+    /**
+     * Construct a new ConstructorBuilder.
+     *
+     * @param configuration the current configuration of the doclet.
+     * @param classDoc the class whoses members are being documented.
+     * @param writer the doclet specific writer.
+     */
+    public static ConstructorBuilder getInstance(
+            Configuration configuration,
+            ClassDoc classDoc,
+            ConstructorWriter writer) {
+        ConstructorBuilder builder = new ConstructorBuilder(configuration);
+        builder.classDoc = classDoc;
+        builder.writer = writer;
+        builder.visibleMemberMap =
+                new VisibleMemberMap(
+                classDoc,
+                VisibleMemberMap.CONSTRUCTORS,
+                configuration.nodeprecated);
+        builder.constructors =
+                new ArrayList<ProgramElementDoc>(builder.visibleMemberMap.getMembersFor(classDoc));
+        for (int i = 0; i < builder.constructors.size(); i++) {
+            if (builder.constructors.get(i).isProtected()
+                    || builder.constructors.get(i).isPrivate()) {
+                writer.setFoundNonPubConstructor(true);
+            }
         }
-
-        /**
-         * {@inheritDoc}
-         */
-        public String getName() {
-                return NAME;
+        if (configuration.getMemberComparator() != null) {
+            Collections.sort(
+                    builder.constructors,
+                    configuration.getMemberComparator());
         }
+        return builder;
+    }
 
-        /**
-         * {@inheritDoc}
-         */
-        public boolean hasMembersToDocument() {
-                return constructors.size() > 0;
-        }
+    /**
+     * {@inheritDoc}
+     */
+    public String getName() {
+        return NAME;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public boolean hasMembersToDocument() {
+        return constructors.size() > 0;
+    }
 
-        /**
-         * Returns a list of constructors that will be documented for the given class.
-         * This information can be used for doclet specific documentation
-         * generation.
-         *
-         * @return a list of constructors that will be documented.
-         */
-        public List<ProgramElementDoc> members(ClassDoc classDoc) {
-                return visibleMemberMap.getMembersFor(classDoc);
-        }
+    /**
+     * Returns a list of constructors that will be documented for the given class.
+     * This information can be used for doclet specific documentation
+     * generation.
+     *
+     * @return a list of constructors that will be documented.
+     */
+    public List<ProgramElementDoc> members(ClassDoc classDoc) {
+        return visibleMemberMap.getMembersFor(classDoc);
+    }
 
-        /**
-         * Return the constructor writer for this builder.
-         *
-         * @return the constructor writer for this builder.
-         */
-        public ConstructorWriter getWriter() {
-                return writer;
-        }
+    /**
+     * Return the constructor writer for this builder.
+     *
+     * @return the constructor writer for this builder.
+     */
+    public ConstructorWriter getWriter() {
+        return writer;
+    }
 
-        /**
-         * Build the constructor documentation.
-         *
-         * @param elements the XML elements that specify how to construct this
-         *                documentation.
-         */
-        public void buildConstructorDoc(XMLNode node) {
-                if (writer == null) {
-                        return;
-                }
-                for (currentMethodIndex = 0;
-                        currentMethodIndex < constructors.size();
-                        currentMethodIndex++) {
-                        buildChildren(node);
-                }
+    /**
+     * Build the constructor documentation.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param memberDetailsTree the content tree to which the documentation will be added
+     */
+    public void buildConstructorDoc(XMLNode node, Content memberDetailsTree) {
+        if (writer == null) {
+            return;
         }
-
-        /**
-         * Build the overall header.
-         */
-        public void buildHeader(XMLNode node) {
-                writer.writeHeader(
-                        classDoc,
-                        configuration.getText("doclet.Constructor_Detail"));
+        int size = constructors.size();
+        if (size > 0) {
+            Content constructorDetailsTree = writer.getConstructorDetailsTreeHeader(
+                    classDoc, memberDetailsTree);
+            for (currentConstructorIndex = 0; currentConstructorIndex < size;
+                    currentConstructorIndex++) {
+                Content constructorDocTree = writer.getConstructorDocTreeHeader(
+                        (ConstructorDoc) constructors.get(currentConstructorIndex),
+                        constructorDetailsTree);
+                buildChildren(node, constructorDocTree);
+                constructorDetailsTree.addContent(writer.getConstructorDoc(
+                        constructorDocTree, (currentConstructorIndex == size - 1)));
+            }
+            memberDetailsTree.addContent(
+                    writer.getConstructorDetails(constructorDetailsTree));
         }
+    }
 
-        /**
-         * Build the header for the individual constructor.
-         */
-        public void buildConstructorHeader(XMLNode node) {
-                writer.writeConstructorHeader(
-                        (ConstructorDoc) constructors.get(currentMethodIndex),
-                        currentMethodIndex == 0);
-        }
+    /**
+     * Build the signature.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param constructorDocTree the content tree to which the documentation will be added
+     */
+    public void buildSignature(XMLNode node, Content constructorDocTree) {
+        constructorDocTree.addContent(
+                writer.getSignature(
+                (ConstructorDoc) constructors.get(currentConstructorIndex)));
+    }
 
-        /**
-         * Build the signature.
-         */
-        public void buildSignature(XMLNode node) {
-                writer.writeSignature(
-                        (ConstructorDoc) constructors.get(currentMethodIndex));
-        }
-
-        /**
-         * Build the deprecation information.
-         */
-        public void buildDeprecationInfo(XMLNode node) {
-                writer.writeDeprecated(
-                        (ConstructorDoc) constructors.get(currentMethodIndex));
-        }
+    /**
+     * Build the deprecation information.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param constructorDocTree the content tree to which the documentation will be added
+     */
+    public void buildDeprecationInfo(XMLNode node, Content constructorDocTree) {
+        writer.addDeprecated(
+                (ConstructorDoc) constructors.get(currentConstructorIndex), constructorDocTree);
+    }
 
-        /**
-         * Build the comments for the constructor.  Do nothing if
-         * {@link Configuration#nocomment} is set to true.
-         */
-        public void buildConstructorComments(XMLNode node) {
-                if (!configuration.nocomment) {
-                        writer.writeComments(
-                                (ConstructorDoc) constructors.get(currentMethodIndex));
-                }
+    /**
+     * Build the comments for the constructor.  Do nothing if
+     * {@link Configuration#nocomment} is set to true.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param constructorDocTree the content tree to which the documentation will be added
+     */
+    public void buildConstructorComments(XMLNode node, Content constructorDocTree) {
+        if (!configuration.nocomment) {
+            writer.addComments(
+                    (ConstructorDoc) constructors.get(currentConstructorIndex),
+                    constructorDocTree);
         }
+    }
 
-        /**
-         * Build the tag information.
-         */
-        public void buildTagInfo(XMLNode node) {
-                writer.writeTags((ConstructorDoc) constructors.get(currentMethodIndex));
-        }
-
-        /**
-         * Build the footer for the individual constructor.
-         */
-        public void buildConstructorFooter(XMLNode node) {
-                writer.writeConstructorFooter();
-        }
-
-        /**
-         * Build the overall footer.
-         */
-        public void buildFooter(XMLNode node) {
-                writer.writeFooter(classDoc);
-        }
+    /**
+     * Build the tag information.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param constructorDocTree the content tree to which the documentation will be added
+     */
+    public void buildTagInfo(XMLNode node, Content constructorDocTree) {
+        writer.addTags((ConstructorDoc) constructors.get(currentConstructorIndex),
+                constructorDocTree);
+    }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/EnumConstantBuilder.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/EnumConstantBuilder.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,10 +25,10 @@
 
 package com.sun.tools.doclets.internal.toolkit.builders;
 
+import java.util.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
 import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.javadoc.*;
-import java.util.*;
 
 /**
  * Builds documentation for a enum constants.
@@ -38,200 +38,195 @@
  * Do not use it as an API
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 public class EnumConstantBuilder extends AbstractMemberBuilder {
 
-        /**
-         * The class whose enum constants are being documented.
-         */
-        private ClassDoc classDoc;
+    /**
+     * The class whose enum constants are being documented.
+     */
+    private ClassDoc classDoc;
 
-        /**
-         * The visible enum constantss for the given class.
-         */
-        private VisibleMemberMap visibleMemberMap;
+    /**
+     * The visible enum constantss for the given class.
+     */
+    private VisibleMemberMap visibleMemberMap;
 
-        /**
-         * The writer to output the enum constants documentation.
-         */
-        private EnumConstantWriter writer;
+    /**
+     * The writer to output the enum constants documentation.
+     */
+    private EnumConstantWriter writer;
 
-        /**
-         * The list of enum constants being documented.
-         */
-        private List<ProgramElementDoc> enumConstants;
+    /**
+     * The list of enum constants being documented.
+     */
+    private List<ProgramElementDoc> enumConstants;
 
-        /**
-         * The index of the current enum constant that is being documented at this point
-         * in time.
-         */
-        private int currentEnumConstantsIndex;
+    /**
+     * The index of the current enum constant that is being documented at this point
+     * in time.
+     */
+    private int currentEnumConstantsIndex;
 
-        /**
-         * Construct a new EnumConstantsBuilder.
-         *
-         * @param configuration the current configuration of the
-         *                      doclet.
-         */
-        private EnumConstantBuilder(Configuration configuration) {
-                super(configuration);
-        }
+    /**
+     * Construct a new EnumConstantsBuilder.
+     *
+     * @param configuration the current configuration of the
+     *                      doclet.
+     */
+    private EnumConstantBuilder(Configuration configuration) {
+        super(configuration);
+    }
 
-        /**
-         * Construct a new EnumConstantsBuilder.
-         *
-         * @param configuration the current configuration of the doclet.
-         * @param classDoc the class whoses members are being documented.
-         * @param writer the doclet specific writer.
-         */
-        public static EnumConstantBuilder getInstance(
-                Configuration configuration,
-                ClassDoc classDoc,
-                EnumConstantWriter writer) {
-                EnumConstantBuilder builder = new EnumConstantBuilder(configuration);
-                builder.classDoc = classDoc;
-                builder.writer = writer;
-                builder.visibleMemberMap =
-                        new VisibleMemberMap(
-                                classDoc,
-                                VisibleMemberMap.ENUM_CONSTANTS,
-                                configuration.nodeprecated);
-                builder.enumConstants =
-                        new ArrayList<ProgramElementDoc>(builder.visibleMemberMap.getMembersFor(classDoc));
-                if (configuration.getMemberComparator() != null) {
-                        Collections.sort(
-                                builder.enumConstants,
-                                configuration.getMemberComparator());
-                }
-                return builder;
+    /**
+     * Construct a new EnumConstantsBuilder.
+     *
+     * @param configuration the current configuration of the doclet.
+     * @param classDoc the class whoses members are being documented.
+     * @param writer the doclet specific writer.
+     */
+    public static EnumConstantBuilder getInstance(
+            Configuration configuration,
+            ClassDoc classDoc,
+            EnumConstantWriter writer) {
+        EnumConstantBuilder builder = new EnumConstantBuilder(configuration);
+        builder.classDoc = classDoc;
+        builder.writer = writer;
+        builder.visibleMemberMap =
+                new VisibleMemberMap(
+                classDoc,
+                VisibleMemberMap.ENUM_CONSTANTS,
+                configuration.nodeprecated);
+        builder.enumConstants =
+                new ArrayList<ProgramElementDoc>(builder.visibleMemberMap.getMembersFor(classDoc));
+        if (configuration.getMemberComparator() != null) {
+            Collections.sort(
+                    builder.enumConstants,
+                    configuration.getMemberComparator());
         }
+        return builder;
+    }
 
-        /**
-         * {@inheritDoc}
-         */
-        public String getName() {
-                return "EnumConstantDetails";
-        }
+    /**
+     * {@inheritDoc}
+     */
+    public String getName() {
+        return "EnumConstantDetails";
+    }
 
-        /**
-         * Returns a list of enum constants that will be documented for the given class.
-         * This information can be used for doclet specific documentation
-         * generation.
-         *
-         * @param classDoc the {@link ClassDoc} we want to check.
-         * @return a list of enum constants that will be documented.
-         */
-        public List<ProgramElementDoc> members(ClassDoc classDoc) {
-                return visibleMemberMap.getMembersFor(classDoc);
-        }
+    /**
+     * Returns a list of enum constants that will be documented for the given class.
+     * This information can be used for doclet specific documentation
+     * generation.
+     *
+     * @param classDoc the {@link ClassDoc} we want to check.
+     * @return a list of enum constants that will be documented.
+     */
+    public List<ProgramElementDoc> members(ClassDoc classDoc) {
+        return visibleMemberMap.getMembersFor(classDoc);
+    }
 
-        /**
-         * Returns the visible member map for the enum constants of this class.
-         *
-         * @return the visible member map for the enum constants of this class.
-         */
-        public VisibleMemberMap getVisibleMemberMap() {
-                return visibleMemberMap;
-        }
+    /**
+     * Returns the visible member map for the enum constants of this class.
+     *
+     * @return the visible member map for the enum constants of this class.
+     */
+    public VisibleMemberMap getVisibleMemberMap() {
+        return visibleMemberMap;
+    }
 
-        /**
-         * summaryOrder.size()
-         */
-        public boolean hasMembersToDocument() {
-                return enumConstants.size() > 0;
-        }
-
-        /**
-         * Build the enum constant documentation.
-         *
-         * @param elements the XML elements that specify how to construct this
-         *                documentation.
-         */
-        public void buildEnumConstant(XMLNode node) {
-                if (writer == null) {
-                        return;
-                }
-                for (currentEnumConstantsIndex = 0;
-                        currentEnumConstantsIndex < enumConstants.size();
-                        currentEnumConstantsIndex++) {
-                        buildChildren(node);
-                }
-        }
+    /**
+     * summaryOrder.size()
+     */
+    public boolean hasMembersToDocument() {
+        return enumConstants.size() > 0;
+    }
 
-        /**
-         * Build the overall header.
-         */
-        public void buildHeader(XMLNode node) {
-                writer.writeHeader(
-                        classDoc,
-                        configuration.getText("doclet.Enum_Constant_Detail"));
+    /**
+     * Build the enum constant documentation.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param memberDetailsTree the content tree to which the documentation will be added
+     */
+    public void buildEnumConstant(XMLNode node, Content memberDetailsTree) {
+        if (writer == null) {
+            return;
         }
+        int size = enumConstants.size();
+        if (size > 0) {
+            Content enumConstantsDetailsTree = writer.getEnumConstantsDetailsTreeHeader(
+                    classDoc, memberDetailsTree);
+            for (currentEnumConstantsIndex = 0; currentEnumConstantsIndex < size;
+                    currentEnumConstantsIndex++) {
+                Content enumConstantsTree = writer.getEnumConstantsTreeHeader(
+                        (FieldDoc) enumConstants.get(currentEnumConstantsIndex),
+                        enumConstantsDetailsTree);
+                buildChildren(node, enumConstantsTree);
+                enumConstantsDetailsTree.addContent(writer.getEnumConstants(
+                        enumConstantsTree, (currentEnumConstantsIndex == size - 1)));
+            }
+            memberDetailsTree.addContent(
+                    writer.getEnumConstantsDetails(enumConstantsDetailsTree));
+        }
+    }
 
-        /**
-         * Build the header for the individual enum constants.
-         */
-        public void buildEnumConstantHeader(XMLNode node) {
-                writer.writeEnumConstantHeader(
-                        (FieldDoc) enumConstants.get(currentEnumConstantsIndex),
-                        currentEnumConstantsIndex == 0);
-        }
-
-        /**
-         * Build the signature.
-         */
-        public void buildSignature(XMLNode node) {
-                writer.writeSignature(
-                        (FieldDoc) enumConstants.get(currentEnumConstantsIndex));
-        }
+    /**
+     * Build the signature.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param enumConstantsTree the content tree to which the documentation will be added
+     */
+    public void buildSignature(XMLNode node, Content enumConstantsTree) {
+        enumConstantsTree.addContent(writer.getSignature(
+                (FieldDoc) enumConstants.get(currentEnumConstantsIndex)));
+    }
 
-        /**
-         * Build the deprecation information.
-         */
-        public void buildDeprecationInfo(XMLNode node) {
-                writer.writeDeprecated(
-                        (FieldDoc) enumConstants.get(currentEnumConstantsIndex));
-        }
-
-        /**
-         * Build the comments for the enum constant.  Do nothing if
-         * {@link Configuration#nocomment} is set to true.
-         */
-        public void buildEnumConstantComments(XMLNode node) {
-                if (!configuration.nocomment) {
-                        writer.writeComments(
-                                (FieldDoc) enumConstants.get(currentEnumConstantsIndex));
-                }
-        }
+    /**
+     * Build the deprecation information.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param enumConstantsTree the content tree to which the documentation will be added
+     */
+    public void buildDeprecationInfo(XMLNode node, Content enumConstantsTree) {
+        writer.addDeprecated(
+                (FieldDoc) enumConstants.get(currentEnumConstantsIndex),
+                enumConstantsTree);
+    }
 
-        /**
-         * Build the tag information.
-         */
-        public void buildTagInfo(XMLNode node) {
-                writer.writeTags(
-                        (FieldDoc) enumConstants.get(currentEnumConstantsIndex));
+    /**
+     * Build the comments for the enum constant.  Do nothing if
+     * {@link Configuration#nocomment} is set to true.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param enumConstantsTree the content tree to which the documentation will be added
+     */
+    public void buildEnumConstantComments(XMLNode node, Content enumConstantsTree) {
+        if (!configuration.nocomment) {
+            writer.addComments(
+                    (FieldDoc) enumConstants.get(currentEnumConstantsIndex),
+                    enumConstantsTree);
         }
-
-        /**
-         * Build the footer for the individual enum constants.
-         */
-        public void buildEnumConstantFooter(XMLNode node) {
-                writer.writeEnumConstantFooter();
-        }
+    }
 
-        /**
-         * Build the overall footer.
-         */
-        public void buildFooter(XMLNode node) {
-                writer.writeFooter(classDoc);
-        }
+    /**
+     * Build the tag information.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param enumConstantsTree the content tree to which the documentation will be added
+     */
+    public void buildTagInfo(XMLNode node, Content enumConstantsTree) {
+        writer.addTags(
+                (FieldDoc) enumConstants.get(currentEnumConstantsIndex),
+                enumConstantsTree);
+    }
 
-        /**
-         * Return the enum constant writer for this builder.
-         *
-         * @return the enum constant writer for this builder.
-         */
-        public EnumConstantWriter getWriter() {
-                return writer;
-        }
+    /**
+     * Return the enum constant writer for this builder.
+     *
+     * @return the enum constant writer for this builder.
+     */
+    public EnumConstantWriter getWriter() {
+        return writer;
+    }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/FieldBuilder.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/FieldBuilder.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,10 +25,10 @@
 
 package com.sun.tools.doclets.internal.toolkit.builders;
 
+import java.util.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
 import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.javadoc.*;
-import java.util.*;
 
 /**
  * Builds documentation for a field.
@@ -38,197 +38,191 @@
  * Do not use it as an API
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 public class FieldBuilder extends AbstractMemberBuilder {
 
-        /**
-         * The class whose fields are being documented.
-         */
-        private ClassDoc classDoc;
+    /**
+     * The class whose fields are being documented.
+     */
+    private ClassDoc classDoc;
 
-        /**
-         * The visible fields for the given class.
-         */
-        private VisibleMemberMap visibleMemberMap;
+    /**
+     * The visible fields for the given class.
+     */
+    private VisibleMemberMap visibleMemberMap;
 
-        /**
-         * The writer to output the field documentation.
-         */
-        private FieldWriter writer;
+    /**
+     * The writer to output the field documentation.
+     */
+    private FieldWriter writer;
 
-        /**
-         * The list of fields being documented.
-         */
-        private List<ProgramElementDoc> fields;
+    /**
+     * The list of fields being documented.
+     */
+    private List<ProgramElementDoc> fields;
 
-        /**
-         * The index of the current field that is being documented at this point
-         * in time.
-         */
-        private int currentFieldIndex;
+    /**
+     * The index of the current field that is being documented at this point
+     * in time.
+     */
+    private int currentFieldIndex;
 
-        /**
-         * Construct a new FieldBuilder.
-         *
-         * @param configuration the current configuration of the
-         *                      doclet.
-         */
-        private FieldBuilder(Configuration configuration) {
-                super(configuration);
-        }
+    /**
+     * Construct a new FieldBuilder.
+     *
+     * @param configuration the current configuration of the
+     *                      doclet.
+     */
+    private FieldBuilder(Configuration configuration) {
+        super(configuration);
+    }
 
-        /**
-         * Construct a new FieldBuilder.
-         *
-         * @param configuration the current configuration of the doclet.
-         * @param classDoc the class whoses members are being documented.
-         * @param writer the doclet specific writer.
-         */
-        public static FieldBuilder getInstance(
-                Configuration configuration,
-                ClassDoc classDoc,
-                FieldWriter writer) {
-                FieldBuilder builder = new FieldBuilder(configuration);
-                builder.classDoc = classDoc;
-                builder.writer = writer;
-                builder.visibleMemberMap =
-                        new VisibleMemberMap(
-                                classDoc,
-                                VisibleMemberMap.FIELDS,
-                                configuration.nodeprecated);
-                builder.fields =
-                        new ArrayList<ProgramElementDoc>(builder.visibleMemberMap.getLeafClassMembers(
-                            configuration));
-                if (configuration.getMemberComparator() != null) {
-                        Collections.sort(
-                                builder.fields,
-                                configuration.getMemberComparator());
-                }
-                return builder;
+    /**
+     * Construct a new FieldBuilder.
+     *
+     * @param configuration the current configuration of the doclet.
+     * @param classDoc the class whoses members are being documented.
+     * @param writer the doclet specific writer.
+     */
+    public static FieldBuilder getInstance(
+            Configuration configuration,
+            ClassDoc classDoc,
+            FieldWriter writer) {
+        FieldBuilder builder = new FieldBuilder(configuration);
+        builder.classDoc = classDoc;
+        builder.writer = writer;
+        builder.visibleMemberMap =
+                new VisibleMemberMap(
+                classDoc,
+                VisibleMemberMap.FIELDS,
+                configuration.nodeprecated);
+        builder.fields =
+                new ArrayList<ProgramElementDoc>(builder.visibleMemberMap.getLeafClassMembers(
+                configuration));
+        if (configuration.getMemberComparator() != null) {
+            Collections.sort(
+                    builder.fields,
+                    configuration.getMemberComparator());
         }
+        return builder;
+    }
 
-        /**
-         * {@inheritDoc}
-         */
-        public String getName() {
-                return "FieldDetails";
-        }
+    /**
+     * {@inheritDoc}
+     */
+    public String getName() {
+        return "FieldDetails";
+    }
 
-        /**
-         * Returns a list of fields that will be documented for the given class.
-         * This information can be used for doclet specific documentation
-         * generation.
-         *
-         * @param classDoc the {@link ClassDoc} we want to check.
-         * @return a list of fields that will be documented.
-         */
-        public List<ProgramElementDoc> members(ClassDoc classDoc) {
-                return visibleMemberMap.getMembersFor(classDoc);
-        }
-
-        /**
-         * Returns the visible member map for the fields of this class.
-         *
-         * @return the visible member map for the fields of this class.
-         */
-        public VisibleMemberMap getVisibleMemberMap() {
-                return visibleMemberMap;
-        }
+    /**
+     * Returns a list of fields that will be documented for the given class.
+     * This information can be used for doclet specific documentation
+     * generation.
+     *
+     * @param classDoc the {@link ClassDoc} we want to check.
+     * @return a list of fields that will be documented.
+     */
+    public List<ProgramElementDoc> members(ClassDoc classDoc) {
+        return visibleMemberMap.getMembersFor(classDoc);
+    }
 
-        /**
-         * summaryOrder.size()
-         */
-        public boolean hasMembersToDocument() {
-                return fields.size() > 0;
-        }
+    /**
+     * Returns the visible member map for the fields of this class.
+     *
+     * @return the visible member map for the fields of this class.
+     */
+    public VisibleMemberMap getVisibleMemberMap() {
+        return visibleMemberMap;
+    }
 
-        /**
-         * Build the field documentation.
-         *
-         * @param elements the XML elements that specify how to construct this
-         *                documentation.
-         */
-        public void buildFieldDoc(XMLNode node) {
-                if (writer == null) {
-                        return;
-                }
-                for (currentFieldIndex = 0;
-                        currentFieldIndex < fields.size();
-                        currentFieldIndex++) {
-                        buildChildren(node);
-                }
-        }
+    /**
+     * summaryOrder.size()
+     */
+    public boolean hasMembersToDocument() {
+        return fields.size() > 0;
+    }
 
-        /**
-         * Build the overall header.
-         */
-        public void buildHeader(XMLNode node) {
-                writer.writeHeader(
-                        classDoc,
-                        configuration.getText("doclet.Field_Detail"));
+    /**
+     * Build the field documentation.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param memberDetailsTree the content tree to which the documentation will be added
+     */
+    public void buildFieldDoc(XMLNode node, Content memberDetailsTree) {
+        if (writer == null) {
+            return;
         }
-
-        /**
-         * Build the header for the individual field.
-         */
-        public void buildFieldHeader(XMLNode node) {
-                writer.writeFieldHeader(
+        int size = fields.size();
+        if (size > 0) {
+            Content fieldDetailsTree = writer.getFieldDetailsTreeHeader(
+                    classDoc, memberDetailsTree);
+            for (currentFieldIndex = 0; currentFieldIndex < size;
+                    currentFieldIndex++) {
+                Content fieldDocTree = writer.getFieldDocTreeHeader(
                         (FieldDoc) fields.get(currentFieldIndex),
-                        currentFieldIndex == 0);
-        }
-
-        /**
-         * Build the signature.
-         */
-        public void buildSignature(XMLNode node) {
-                writer.writeSignature((FieldDoc) fields.get(currentFieldIndex));
+                        fieldDetailsTree);
+                buildChildren(node, fieldDocTree);
+                fieldDetailsTree.addContent(writer.getFieldDoc(
+                        fieldDocTree, (currentFieldIndex == size - 1)));
+            }
+            memberDetailsTree.addContent(
+                    writer.getFieldDetails(fieldDetailsTree));
         }
+    }
 
-        /**
-         * Build the deprecation information.
-         */
-        public void buildDeprecationInfo(XMLNode node) {
-                writer.writeDeprecated((FieldDoc) fields.get(currentFieldIndex));
-        }
+    /**
+     * Build the signature.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param fieldDocTree the content tree to which the documentation will be added
+     */
+    public void buildSignature(XMLNode node, Content fieldDocTree) {
+        fieldDocTree.addContent(
+                writer.getSignature((FieldDoc) fields.get(currentFieldIndex)));
+    }
 
-        /**
-         * Build the comments for the field.  Do nothing if
-         * {@link Configuration#nocomment} is set to true.
-         */
-        public void buildFieldComments(XMLNode node) {
-                if (!configuration.nocomment) {
-                        writer.writeComments((FieldDoc) fields.get(currentFieldIndex));
-                }
-        }
+    /**
+     * Build the deprecation information.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param fieldDocTree the content tree to which the documentation will be added
+     */
+    public void buildDeprecationInfo(XMLNode node, Content fieldDocTree) {
+        writer.addDeprecated(
+                (FieldDoc) fields.get(currentFieldIndex), fieldDocTree);
+    }
 
-        /**
-         * Build the tag information.
-         */
-        public void buildTagInfo(XMLNode node) {
-                writer.writeTags((FieldDoc) fields.get(currentFieldIndex));
+    /**
+     * Build the comments for the field.  Do nothing if
+     * {@link Configuration#nocomment} is set to true.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param fieldDocTree the content tree to which the documentation will be added
+     */
+    public void buildFieldComments(XMLNode node, Content fieldDocTree) {
+        if (!configuration.nocomment) {
+            writer.addComments((FieldDoc) fields.get(currentFieldIndex), fieldDocTree);
         }
-
-        /**
-         * Build the footer for the individual field.
-         */
-        public void buildFieldFooter(XMLNode node) {
-                writer.writeFieldFooter();
-        }
+    }
 
-        /**
-         * Build the overall footer.
-         */
-        public void buildFooter(XMLNode node) {
-                writer.writeFooter(classDoc);
-        }
+    /**
+     * Build the tag information.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param fieldDocTree the content tree to which the documentation will be added
+     */
+    public void buildTagInfo(XMLNode node, Content fieldDocTree) {
+        writer.addTags((FieldDoc) fields.get(currentFieldIndex), fieldDocTree);
+    }
 
-        /**
-         * Return the field writer for this builder.
-         *
-         * @return the field writer for this builder.
-         */
-        public FieldWriter getWriter() {
-                return writer;
-        }
+    /**
+     * Return the field writer for this builder.
+     *
+     * @return the field writer for this builder.
+     */
+    public FieldWriter getWriter() {
+        return writer;
+    }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/LayoutParser.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/LayoutParser.java	Wed Dec 01 11:02:38 2010 -0800
@@ -76,7 +76,7 @@
     /**
      * Parse the XML specifying the layout of the documentation.
      *
-     * @return List the list of XML elements parsed.
+     * @return the list of XML elements parsed.
      */
     public XMLNode parseXML(String root) {
         if (xmlElementsMap.containsKey(root)) {
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/MemberSummaryBuilder.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/MemberSummaryBuilder.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,10 +25,10 @@
 
 package com.sun.tools.doclets.internal.toolkit.builders;
 
+import java.util.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
 import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.javadoc.*;
-import java.util.*;
 
 /**
  * Builds the member summary.
@@ -38,49 +38,50 @@
  * Do not use it as an API
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 public class MemberSummaryBuilder extends AbstractMemberBuilder {
 
-        /**
-         * The XML root for this builder.
-         */
-        public static final String NAME = "MemberSummary";
+    /**
+     * The XML root for this builder.
+     */
+    public static final String NAME = "MemberSummary";
 
-        /**
-         * The visible members for the given class.
-         */
-        private VisibleMemberMap[] visibleMemberMaps;
+    /**
+     * The visible members for the given class.
+     */
+    private VisibleMemberMap[] visibleMemberMaps;
 
-        /**
-         * The member summary writers for the given class.
-         */
-        private MemberSummaryWriter[] memberSummaryWriters;
+    /**
+     * The member summary writers for the given class.
+     */
+    private MemberSummaryWriter[] memberSummaryWriters;
 
-        /**
-         * The type being documented.
-         */
-        private ClassDoc classDoc;
+    /**
+     * The type being documented.
+     */
+    private ClassDoc classDoc;
 
-        private MemberSummaryBuilder(Configuration configuration) {
-                super(configuration);
-        }
+    private MemberSummaryBuilder(Configuration configuration) {
+        super(configuration);
+    }
 
-        /**
-         * Construct a new MemberSummaryBuilder.
-         *
-         * @param classWriter   the writer for the class whose members are being
-         *                      summarized.
-         * @param configuration the current configuration of the doclet.
-         */
-        public static MemberSummaryBuilder getInstance(
-                ClassWriter classWriter, Configuration configuration)
-        throws Exception {
-                MemberSummaryBuilder builder = new MemberSummaryBuilder(configuration);
-                builder.classDoc = classWriter.getClassDoc();
-                builder.init(classWriter);
-                return builder;
-        }
+    /**
+     * Construct a new MemberSummaryBuilder.
+     *
+     * @param classWriter   the writer for the class whose members are being
+     *                      summarized.
+     * @param configuration the current configuration of the doclet.
+     */
+    public static MemberSummaryBuilder getInstance(
+            ClassWriter classWriter, Configuration configuration)
+            throws Exception {
+        MemberSummaryBuilder builder = new MemberSummaryBuilder(configuration);
+        builder.classDoc = classWriter.getClassDoc();
+        builder.init(classWriter);
+        return builder;
+    }
 
     /**
      * Construct a new MemberSummaryBuilder.
@@ -90,8 +91,8 @@
      * @param configuration the current configuration of the doclet.
      */
     public static MemberSummaryBuilder getInstance(
-        AnnotationTypeWriter annotationTypeWriter, Configuration configuration)
-    throws Exception {
+            AnnotationTypeWriter annotationTypeWriter, Configuration configuration)
+            throws Exception {
         MemberSummaryBuilder builder = new MemberSummaryBuilder(configuration);
         builder.classDoc = annotationTypeWriter.getAnnotationTypeDoc();
         builder.init(annotationTypeWriter);
@@ -100,200 +101,209 @@
 
     private void init(Object writer) throws Exception {
         visibleMemberMaps =
-            new VisibleMemberMap[VisibleMemberMap.NUM_MEMBER_TYPES];
+                new VisibleMemberMap[VisibleMemberMap.NUM_MEMBER_TYPES];
         for (int i = 0; i < VisibleMemberMap.NUM_MEMBER_TYPES; i++) {
             visibleMemberMaps[i] =
-                new VisibleMemberMap(
+                    new VisibleMemberMap(
                     classDoc,
                     i,
                     configuration.nodeprecated);
         }
         memberSummaryWriters =
-            new MemberSummaryWriter[VisibleMemberMap.NUM_MEMBER_TYPES];
+                new MemberSummaryWriter[VisibleMemberMap.NUM_MEMBER_TYPES];
         for (int i = 0; i < VisibleMemberMap.NUM_MEMBER_TYPES; i++) {
             if (classDoc.isAnnotationType()) {
                 memberSummaryWriters[i] =
                     visibleMemberMaps[i].noVisibleMembers()?
                         null :
                         configuration.getWriterFactory().getMemberSummaryWriter(
-                            (AnnotationTypeWriter) writer, i);
+                        (AnnotationTypeWriter) writer, i);
             } else {
                 memberSummaryWriters[i] =
                     visibleMemberMaps[i].noVisibleMembers()?
                         null :
                         configuration.getWriterFactory().getMemberSummaryWriter(
-                            (ClassWriter) writer, i);
+                        (ClassWriter) writer, i);
             }
         }
 
     }
 
-        /**
-         * {@inheritDoc}
-         */
-        public String getName() {
-                return NAME;
-        }
+    /**
+     * {@inheritDoc}
+     */
+    public String getName() {
+        return NAME;
+    }
 
-        /**
-         * Return the specified visible member map.
-         *
-         * @param type the type of visible member map to return.
-         * @return the specified visible member map.
-         * @throws ArrayIndexOutOfBoundsException when the type is invalid.
-         * @see VisibleMemberMap
-         */
-        public VisibleMemberMap getVisibleMemberMap(int type) {
-                return visibleMemberMaps[type];
-        }
+    /**
+     * Return the specified visible member map.
+     *
+     * @param type the type of visible member map to return.
+     * @return the specified visible member map.
+     * @throws ArrayIndexOutOfBoundsException when the type is invalid.
+     * @see VisibleMemberMap
+     */
+    public VisibleMemberMap getVisibleMemberMap(int type) {
+        return visibleMemberMaps[type];
+    }
 
-        /**
-         * Return the specified member summary writer.
-         *
-         * @param type the type of member summary writer to return.
-         * @return the specified member summary writer.
-         * @throws ArrayIndexOutOfBoundsException when the type is invalid.
-         * @see VisibleMemberMap
-         */
-        public MemberSummaryWriter getMemberSummaryWriter(int type) {
-                return memberSummaryWriters[type];
-        }
+    /**
+     * Return the specified member summary writer.
+     *
+     * @param type the type of member summary writer to return.
+     * @return the specified member summary writer.
+     * @throws ArrayIndexOutOfBoundsException when the type is invalid.
+     * @see VisibleMemberMap
+     */
+    public MemberSummaryWriter getMemberSummaryWriter(int type) {
+        return memberSummaryWriters[type];
+    }
 
-        /**
-         * Returns a list of methods that will be documented for the given class.
-         * This information can be used for doclet specific documentation
-         * generation.
-         *
-         * @param classDoc the {@link ClassDoc} we want to check.
-         * @param type the type of members to return.
-         * @return a list of methods that will be documented.
-         * @see VisibleMemberMap
-         */
-        public List<ProgramElementDoc> members(int type) {
-                return visibleMemberMaps[type].getLeafClassMembers(configuration);
-        }
+    /**
+     * Returns a list of methods that will be documented for the given class.
+     * This information can be used for doclet specific documentation
+     * generation.
+     *
+     * @param classDoc the {@link ClassDoc} we want to check.
+     * @param type the type of members to return.
+     * @return a list of methods that will be documented.
+     * @see VisibleMemberMap
+     */
+    public List<ProgramElementDoc> members(int type) {
+        return visibleMemberMaps[type].getLeafClassMembers(configuration);
+    }
 
-        /**
-         * Return true it there are any members to summarize.
-         *
-         * @return true if there are any members to summarize.
-         */
-        public boolean hasMembersToDocument() {
+    /**
+     * Return true it there are any members to summarize.
+     *
+     * @return true if there are any members to summarize.
+     */
+    public boolean hasMembersToDocument() {
         if (classDoc instanceof AnnotationTypeDoc) {
             return ((AnnotationTypeDoc) classDoc).elements().length > 0;
         }
-                for (int i = 0; i < VisibleMemberMap.NUM_MEMBER_TYPES; i++) {
-                        VisibleMemberMap members = visibleMemberMaps[i];
-                        if (!members.noVisibleMembers()) {
-                                return true;
-                        }
-                }
-                return false;
+        for (int i = 0; i < VisibleMemberMap.NUM_MEMBER_TYPES; i++) {
+            VisibleMemberMap members = visibleMemberMaps[i];
+            if (!members.noVisibleMembers()) {
+                return true;
+            }
         }
-
-        /**
-         * Build the summary for the enum constants.
-         */
-        public void buildEnumConstantsSummary(XMLNode node) {
-                buildSummary(
-                        memberSummaryWriters[VisibleMemberMap.ENUM_CONSTANTS],
-                        visibleMemberMaps[VisibleMemberMap.ENUM_CONSTANTS]);
-        }
+        return false;
+    }
 
     /**
-     * Build the summary for the optional members.
+     * Build the summary for the enum constants.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param memberSummaryTree the content tree to which the documentation will be added
      */
-    public void buildAnnotationTypeOptionalMemberSummary(XMLNode node) {
-        buildSummary(
-            memberSummaryWriters[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL],
-                visibleMemberMaps[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL]);
+    public void buildEnumConstantsSummary(XMLNode node, Content memberSummaryTree) {
+        MemberSummaryWriter writer =
+                memberSummaryWriters[VisibleMemberMap.ENUM_CONSTANTS];
+        VisibleMemberMap visibleMemberMap =
+                visibleMemberMaps[VisibleMemberMap.ENUM_CONSTANTS];
+        addSummary(writer, visibleMemberMap, false, memberSummaryTree);
     }
 
     /**
      * Build the summary for the optional members.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param memberSummaryTree the content tree to which the documentation will be added
      */
-    public void buildAnnotationTypeRequiredMemberSummary(XMLNode node) {
-        buildSummary(
-            memberSummaryWriters[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED],
-                visibleMemberMaps[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED]);
+    public void buildAnnotationTypeOptionalMemberSummary(XMLNode node, Content memberSummaryTree) {
+        MemberSummaryWriter writer =
+                memberSummaryWriters[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL];
+        VisibleMemberMap visibleMemberMap =
+                visibleMemberMaps[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL];
+        addSummary(writer, visibleMemberMap, false, memberSummaryTree);
+    }
+
+    /**
+     * Build the summary for the optional members.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param memberSummaryTree the content tree to which the documentation will be added
+     */
+    public void buildAnnotationTypeRequiredMemberSummary(XMLNode node, Content memberSummaryTree) {
+        MemberSummaryWriter writer =
+                memberSummaryWriters[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED];
+        VisibleMemberMap visibleMemberMap =
+                visibleMemberMaps[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED];
+        addSummary(writer, visibleMemberMap, false, memberSummaryTree);
+    }
+
+    /**
+     * Build the summary for the fields.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param memberSummaryTree the content tree to which the documentation will be added
+     */
+    public void buildFieldsSummary(XMLNode node, Content memberSummaryTree) {
+        MemberSummaryWriter writer =
+                memberSummaryWriters[VisibleMemberMap.FIELDS];
+        VisibleMemberMap visibleMemberMap =
+                visibleMemberMaps[VisibleMemberMap.FIELDS];
+        addSummary(writer, visibleMemberMap, true, memberSummaryTree);
     }
 
-        /**
-         * Build the summary for the fields.
-         */
-        public void buildFieldsSummary(XMLNode node) {
-                buildSummary(
-                        memberSummaryWriters[VisibleMemberMap.FIELDS],
-                        visibleMemberMaps[VisibleMemberMap.FIELDS]);
-        }
-
-        /**
-         * Build the inherited summary for the fields.
-         */
-        public void buildFieldsInheritedSummary(XMLNode node) {
-                buildInheritedSummary(
-                        memberSummaryWriters[VisibleMemberMap.FIELDS],
-                        visibleMemberMaps[VisibleMemberMap.FIELDS]);
-        }
-
-        /**
-         * Build the summary for the nested classes.
-         */
-        public void buildNestedClassesSummary(XMLNode node) {
-                buildSummary(
-                        memberSummaryWriters[VisibleMemberMap.INNERCLASSES],
-                        visibleMemberMaps[VisibleMemberMap.INNERCLASSES]);
-        }
-
-        /**
-         * Build the inherited summary for the nested classes.
-         */
-        public void buildNestedClassesInheritedSummary(XMLNode node) {
-                buildInheritedSummary(
-                        memberSummaryWriters[VisibleMemberMap.INNERCLASSES],
-                        visibleMemberMaps[VisibleMemberMap.INNERCLASSES]);
-        }
+    /**
+     * Build the summary for the nested classes.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param memberSummaryTree the content tree to which the documentation will be added
+     */
+    public void buildNestedClassesSummary(XMLNode node, Content memberSummaryTree) {
+        MemberSummaryWriter writer =
+                memberSummaryWriters[VisibleMemberMap.INNERCLASSES];
+        VisibleMemberMap visibleMemberMap =
+                visibleMemberMaps[VisibleMemberMap.INNERCLASSES];
+        addSummary(writer, visibleMemberMap, true, memberSummaryTree);
+    }
 
-        /**
-         * Build the method summary.
-         */
-        public void buildMethodsSummary(XMLNode node) {
-                buildSummary(
-                        memberSummaryWriters[VisibleMemberMap.METHODS],
-                        visibleMemberMaps[VisibleMemberMap.METHODS]);
-        }
-
-        /**
-         * Build the inherited method summary.
-         */
-        public void buildMethodsInheritedSummary(XMLNode node) {
-                buildInheritedSummary(
-                        memberSummaryWriters[VisibleMemberMap.METHODS],
-                        visibleMemberMaps[VisibleMemberMap.METHODS]);
-        }
+    /**
+     * Build the method summary.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param memberSummaryTree the content tree to which the documentation will be added
+     */
+    public void buildMethodsSummary(XMLNode node, Content memberSummaryTree) {
+        MemberSummaryWriter writer =
+                memberSummaryWriters[VisibleMemberMap.METHODS];
+        VisibleMemberMap visibleMemberMap =
+                visibleMemberMaps[VisibleMemberMap.METHODS];
+        addSummary(writer, visibleMemberMap, true, memberSummaryTree);
+    }
 
-        /**
-         * Build the constructor summary.
-         */
-        public void buildConstructorsSummary(XMLNode node) {
-                buildSummary(
-                        memberSummaryWriters[VisibleMemberMap.CONSTRUCTORS],
-                        visibleMemberMaps[VisibleMemberMap.CONSTRUCTORS]);
-        }
+    /**
+     * Build the constructor summary.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param memberSummaryTree the content tree to which the documentation will be added
+     */
+    public void buildConstructorsSummary(XMLNode node, Content memberSummaryTree) {
+        MemberSummaryWriter writer =
+                memberSummaryWriters[VisibleMemberMap.CONSTRUCTORS];
+        VisibleMemberMap visibleMemberMap =
+                visibleMemberMaps[VisibleMemberMap.CONSTRUCTORS];
+        addSummary(writer, visibleMemberMap, false, memberSummaryTree);
+    }
 
-        /**
-         * Build the member summary for the given members.
-         *
-         * @param writer           the summary writer to write the output.
-         * @param visibleMemberMap the given members to summarize.
-         */
-        private void buildSummary(MemberSummaryWriter writer,
-            VisibleMemberMap visibleMemberMap) {
+    /**
+     * Build the member summary for the given members.
+     *
+     * @param writer the summary writer to write the output.
+     * @param visibleMemberMap the given members to summarize.
+     * @param summaryTreeList list of content trees to which the documentation will be added
+     */
+    private void buildSummary(MemberSummaryWriter writer,
+            VisibleMemberMap visibleMemberMap, LinkedList<Content> summaryTreeList) {
         List<ProgramElementDoc> members = new ArrayList<ProgramElementDoc>(visibleMemberMap.getLeafClassMembers(
-            configuration));
+                configuration));
         if (members.size() > 0) {
             Collections.sort(members);
-            writer.writeMemberSummaryHeader(classDoc);
+            Content tableTree = writer.getSummaryTableTree(classDoc);
             for (int i = 0; i < members.size(); i++) {
                 ProgramElementDoc member = members.get(i);
                 Tag[] firstSentenceTags = member.firstSentenceTags();
@@ -301,32 +311,32 @@
                     //Inherit comments from overriden or implemented method if
                     //necessary.
                     DocFinder.Output inheritedDoc =
-                        DocFinder.search(new DocFinder.Input((MethodDoc) member));
+                            DocFinder.search(new DocFinder.Input((MethodDoc) member));
                     if (inheritedDoc.holder != null &&
                             inheritedDoc.holder.firstSentenceTags().length > 0) {
                         firstSentenceTags = inheritedDoc.holder.firstSentenceTags();
                     }
                 }
-                writer.writeMemberSummary(classDoc, member, firstSentenceTags,
-                    i == 0, i == members.size() - 1);
+                writer.addMemberSummary(classDoc, member, firstSentenceTags, tableTree, i);
             }
-            writer.writeMemberSummaryFooter(classDoc);
+            summaryTreeList.add(tableTree);
         }
-        }
+    }
 
     /**
      * Build the inherited member summary for the given methods.
      *
-     * @param writer           the writer for this member summary.
+     * @param writer the writer for this member summary.
      * @param visibleMemberMap the map for the members to document.
+     * @param summaryTreeList list of content trees to which the documentation will be added
      */
-        private void buildInheritedSummary(MemberSummaryWriter writer,
-            VisibleMemberMap visibleMemberMap) {
+    private void buildInheritedSummary(MemberSummaryWriter writer,
+            VisibleMemberMap visibleMemberMap, LinkedList<Content> summaryTreeList) {
         for (Iterator<ClassDoc> iter = visibleMemberMap.getVisibleClassesList().iterator();
                 iter.hasNext();) {
             ClassDoc inhclass = iter.next();
             if (! (inhclass.isPublic() ||
-                Util.isLinkable(inhclass, configuration))) {
+                    Util.isLinkable(inhclass, configuration))) {
                 continue;
             }
             if (inhclass == classDoc) {
@@ -335,18 +345,45 @@
             List<ProgramElementDoc> inhmembers = visibleMemberMap.getMembersFor(inhclass);
             if (inhmembers.size() > 0) {
                 Collections.sort(inhmembers);
-                writer.writeInheritedMemberSummaryHeader(inhclass);
+                Content inheritedTree = writer.getInheritedSummaryHeader(inhclass);
+                Content linksTree = writer.getInheritedSummaryLinksTree();
                 for (int j = 0; j < inhmembers.size(); ++j) {
-                    writer.writeInheritedMemberSummary(
-                        inhclass.isPackagePrivate() &&
+                    writer.addInheritedMemberSummary(
+                            inhclass.isPackagePrivate() &&
                             ! Util.isLinkable(inhclass, configuration) ?
                             classDoc : inhclass,
-                        inhmembers.get(j),
-                        j == 0,
-                        j == inhmembers.size() - 1);
+                            inhmembers.get(j),
+                            j == 0,
+                            j == inhmembers.size() - 1, linksTree);
                 }
-                writer.writeInheritedMemberSummaryFooter(inhclass);
+                inheritedTree.addContent(linksTree);
+                summaryTreeList.add(writer.getMemberTree(inheritedTree));
             }
         }
     }
+
+    /**
+     * Add the summary for the documentation.
+     *
+     * @param writer the writer for this member summary.
+     * @param visibleMemberMap the map for the members to document.
+     * @param showInheritedSummary true if inherited summary should be documented
+     * @param memberSummaryTree the content tree to which the documentation will be added
+     */
+    private void addSummary(MemberSummaryWriter writer,
+            VisibleMemberMap visibleMemberMap, boolean showInheritedSummary,
+            Content memberSummaryTree) {
+        LinkedList<Content> summaryTreeList = new LinkedList<Content>();
+        buildSummary(writer, visibleMemberMap, summaryTreeList);
+        if (showInheritedSummary)
+            buildInheritedSummary(writer, visibleMemberMap, summaryTreeList);
+        if (!summaryTreeList.isEmpty()) {
+            Content memberTree = writer.getMemberSummaryHeader(
+                    classDoc, memberSummaryTree);
+            for (int i = 0; i < summaryTreeList.size(); i++) {
+                memberTree.addContent(summaryTreeList.get(i));
+            }
+            memberSummaryTree.addContent(writer.getMemberTree(memberTree));
+        }
+    }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/MethodBuilder.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/MethodBuilder.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,10 +25,10 @@
 
 package com.sun.tools.doclets.internal.toolkit.builders;
 
+import java.util.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
 import com.sun.tools.doclets.internal.toolkit.*;
 import com.sun.javadoc.*;
-import java.util.*;
 
 /**
  * Builds documentation for a method.
@@ -38,204 +38,199 @@
  * Do not use it as an API
  *
  * @author Jamie Ho
+ * @author Bhavesh Patel (Modified)
  * @since 1.5
  */
 public class MethodBuilder extends AbstractMemberBuilder {
 
-        /**
-         * The index of the current field that is being documented at this point
-         * in time.
-         */
-        private int currentMethodIndex;
+    /**
+     * The index of the current field that is being documented at this point
+     * in time.
+     */
+    private int currentMethodIndex;
 
-        /**
-         * The class whose methods are being documented.
-         */
-        private ClassDoc classDoc;
+    /**
+     * The class whose methods are being documented.
+     */
+    private ClassDoc classDoc;
 
-        /**
-         * The visible methods for the given class.
-         */
-        private VisibleMemberMap visibleMemberMap;
+    /**
+     * The visible methods for the given class.
+     */
+    private VisibleMemberMap visibleMemberMap;
 
-        /**
-         * The writer to output the method documentation.
-         */
-        private MethodWriter writer;
+    /**
+     * The writer to output the method documentation.
+     */
+    private MethodWriter writer;
 
-        /**
-         * The methods being documented.
-         */
-        private List<ProgramElementDoc> methods;
+    /**
+     * The methods being documented.
+     */
+    private List<ProgramElementDoc> methods;
 
-        private MethodBuilder(Configuration configuration) {
-                super(configuration);
-        }
+    private MethodBuilder(Configuration configuration) {
+        super(configuration);
+    }
 
-        /**
-         * Construct a new MethodBuilder.
-         *
-         * @param configuration the current configuration of the doclet.
-         * @param classDoc the class whoses members are being documented.
-         * @param writer the doclet specific writer.
-         *
-         * @return an instance of a MethodBuilder.
-         */
-        public static MethodBuilder getInstance(
-                Configuration configuration,
-                ClassDoc classDoc,
-                MethodWriter writer) {
-                MethodBuilder builder = new MethodBuilder(configuration);
-                builder.classDoc = classDoc;
-                builder.writer = writer;
-                builder.visibleMemberMap =
-                        new VisibleMemberMap(
-                                classDoc,
-                                VisibleMemberMap.METHODS,
-                                configuration.nodeprecated);
-                builder.methods =
-                        new ArrayList<ProgramElementDoc>(builder.visibleMemberMap.getLeafClassMembers(
+    /**
+     * Construct a new MethodBuilder.
+     *
+     * @param configuration the current configuration of the doclet.
+     * @param classDoc the class whoses members are being documented.
+     * @param writer the doclet specific writer.
+     *
+     * @return an instance of a MethodBuilder.
+     */
+    public static MethodBuilder getInstance(
+            Configuration configuration,
+            ClassDoc classDoc,
+            MethodWriter writer) {
+        MethodBuilder builder = new MethodBuilder(configuration);
+        builder.classDoc = classDoc;
+        builder.writer = writer;
+        builder.visibleMemberMap =
+                new VisibleMemberMap(
+                classDoc,
+                VisibleMemberMap.METHODS,
+                configuration.nodeprecated);
+        builder.methods =
+                new ArrayList<ProgramElementDoc>(builder.visibleMemberMap.getLeafClassMembers(
                 configuration));
-                if (configuration.getMemberComparator() != null) {
-                        Collections.sort(
-                                builder.methods,
-                                configuration.getMemberComparator());
-                }
-                return builder;
+        if (configuration.getMemberComparator() != null) {
+            Collections.sort(
+                    builder.methods,
+                    configuration.getMemberComparator());
         }
+        return builder;
+    }
 
-        /**
-         * {@inheritDoc}
-         */
-        public String getName() {
-                return "MethodDetails";
-        }
+    /**
+     * {@inheritDoc}
+     */
+    public String getName() {
+        return "MethodDetails";
+    }
 
-        /**
-         * Returns a list of methods that will be documented for the given class.
-         * This information can be used for doclet specific documentation
-         * generation.
-         *
-         * @param classDoc the {@link ClassDoc} we want to check.
-         * @return a list of methods that will be documented.
-         */
-        public List<ProgramElementDoc> members(ClassDoc classDoc) {
-                return visibleMemberMap.getMembersFor(classDoc);
-        }
+    /**
+     * Returns a list of methods that will be documented for the given class.
+     * This information can be used for doclet specific documentation
+     * generation.
+     *
+     * @param classDoc the {@link ClassDoc} we want to check.
+     * @return a list of methods that will be documented.
+     */
+    public List<ProgramElementDoc> members(ClassDoc classDoc) {
+        return visibleMemberMap.getMembersFor(classDoc);
+    }
 
-        /**
-         * Returns the visible member map for the methods of this class.
-         *
-         * @return the visible member map for the methods of this class.
-         */
-        public VisibleMemberMap getVisibleMemberMap() {
-                return visibleMemberMap;
-        }
+    /**
+     * Returns the visible member map for the methods of this class.
+     *
+     * @return the visible member map for the methods of this class.
+     */
+    public VisibleMemberMap getVisibleMemberMap() {
+        return visibleMemberMap;
+    }
 
-        /**
-         * {@inheritDoc}
-         */
-        public boolean hasMembersToDocument() {
-                return methods.size() > 0;
-        }
+    /**
+     * {@inheritDoc}
+     */
+    public boolean hasMembersToDocument() {
+        return methods.size() > 0;
+    }
 
-        /**
-         * Build the method documentation.
-         */
-        public void buildMethodDoc(XMLNode node) {
-                if (writer == null) {
-                        return;
-                }
-                for (currentMethodIndex = 0;
-                        currentMethodIndex < methods.size();
-                        currentMethodIndex++) {
-                        buildChildren(node);
-                }
+    /**
+     * Build the method documentation.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param memberDetailsTree the content tree to which the documentation will be added
+     */
+    public void buildMethodDoc(XMLNode node, Content memberDetailsTree) {
+        if (writer == null) {
+            return;
         }
-
-        /**
-         * Build the overall header.
-         */
-        public void buildHeader(XMLNode node) {
-                writer.writeHeader(
-                        classDoc,
-                        configuration.getText("doclet.Method_Detail"));
+        int size = methods.size();
+        if (size > 0) {
+            Content methodDetailsTree = writer.getMethodDetailsTreeHeader(
+                    classDoc, memberDetailsTree);
+            for (currentMethodIndex = 0; currentMethodIndex < size;
+                    currentMethodIndex++) {
+                Content methodDocTree = writer.getMethodDocTreeHeader(
+                        (MethodDoc) methods.get(currentMethodIndex),
+                        methodDetailsTree);
+                buildChildren(node, methodDocTree);
+                methodDetailsTree.addContent(writer.getMethodDoc(
+                        methodDocTree, (currentMethodIndex == size - 1)));
+            }
+            memberDetailsTree.addContent(
+                    writer.getMethodDetails(methodDetailsTree));
         }
+    }
 
-        /**
-         * Build the header for the individual method.
-         */
-        public void buildMethodHeader(XMLNode node) {
-                writer.writeMethodHeader(
-                        (MethodDoc) methods.get(currentMethodIndex),
-                        currentMethodIndex == 0);
-        }
+    /**
+     * Build the signature.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param methodDocTree the content tree to which the documentation will be added
+     */
+    public void buildSignature(XMLNode node, Content methodDocTree) {
+        methodDocTree.addContent(
+                writer.getSignature((MethodDoc) methods.get(currentMethodIndex)));
+    }
 
-        /**
-         * Build the signature.
-         */
-        public void buildSignature(XMLNode node) {
-                writer.writeSignature((MethodDoc) methods.get(currentMethodIndex));
-        }
+    /**
+     * Build the deprecation information.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param methodDocTree the content tree to which the documentation will be added
+     */
+    public void buildDeprecationInfo(XMLNode node, Content methodDocTree) {
+        writer.addDeprecated(
+                (MethodDoc) methods.get(currentMethodIndex), methodDocTree);
+    }
 
-        /**
-         * Build the deprecation information.
-         */
-        public void buildDeprecationInfo(XMLNode node) {
-                writer.writeDeprecated((MethodDoc) methods.get(currentMethodIndex));
-        }
-
-        /**
-         * Build the comments for the method.  Do nothing if
-         * {@link Configuration#nocomment} is set to true.  If this method
-         */
-        public void buildMethodComments(XMLNode node) {
-                if (!configuration.nocomment) {
+    /**
+     * Build the comments for the method.  Do nothing if
+     * {@link Configuration#nocomment} is set to true.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param methodDocTree the content tree to which the documentation will be added
+     */
+    public void buildMethodComments(XMLNode node, Content methodDocTree) {
+        if (!configuration.nocomment) {
             MethodDoc method = (MethodDoc) methods.get(currentMethodIndex);
 
             if (method.inlineTags().length == 0) {
                 DocFinder.Output docs = DocFinder.search(
-                    new DocFinder.Input(method));
+                        new DocFinder.Input(method));
                 method = docs.inlineTags != null && docs.inlineTags.length > 0 ?
                     (MethodDoc) docs.holder : method;
-
             }
             //NOTE:  When we fix the bug where ClassDoc.interfaceTypes() does
             //       not pass all implemented interfaces, holder will be the
             //       interface type.  For now, it is really the erasure.
-            writer.writeComments(method.containingClass(), method);
-                }
+            writer.addComments(method.containingClass(), method, methodDocTree);
         }
-
-
-
-        /**
-         * Build the tag information.
-         */
-        public void buildTagInfo(XMLNode node) {
-                writer.writeTags((MethodDoc) methods.get(currentMethodIndex));
-        }
+    }
 
-        /**
-         * Build the footer of the method.
-         */
-        public void buildMethodFooter(XMLNode node) {
-                writer.writeMethodFooter();
-        }
+    /**
+     * Build the tag information.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param methodDocTree the content tree to which the documentation will be added
+     */
+    public void buildTagInfo(XMLNode node, Content methodDocTree) {
+        writer.addTags((MethodDoc) methods.get(currentMethodIndex),
+                methodDocTree);
+    }
 
-        /**
-         * Build the overall footer.
-         */
-        public void buildFooter(XMLNode node) {
-                writer.writeFooter(classDoc);
-        }
-
-        /**
-         * Return the method writer for this builder.
-         *
-         * @return the method writer for this builder.
-         */
-        public MethodWriter getWriter() {
-                return writer;
-        }
+    /**
+     * Return the method writer for this builder.
+     *
+     * @return the method writer for this builder.
+     */
+    public MethodWriter getWriter() {
+        return writer;
+    }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/PackageSummaryBuilder.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/PackageSummaryBuilder.java	Wed Dec 01 11:02:38 2010 -0800
@@ -25,10 +25,10 @@
 
 package com.sun.tools.doclets.internal.toolkit.builders;
 
+import java.io.*;
+import com.sun.javadoc.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
 import com.sun.tools.doclets.internal.toolkit.*;
-import com.sun.javadoc.*;
-import java.io.*;
 
 /**
  * Builds the summary for a given package.
@@ -42,281 +42,315 @@
  * @since 1.5
  */
 public class PackageSummaryBuilder extends AbstractBuilder {
+    /**
+     * The root element of the package summary XML is {@value}.
+     */
+    public static final String ROOT = "PackageDoc";
 
-        /**
-         * The root element of the package summary XML is {@value}.
-         */
-        public static final String ROOT = "PackageDoc";
+    /**
+     * The package being documented.
+     */
+    private PackageDoc packageDoc;
 
-        /**
-         * The package being documented.
-         */
-        private PackageDoc packageDoc;
+    /**
+     * The doclet specific writer that will output the result.
+     */
+    private PackageSummaryWriter packageWriter;
 
-        /**
-         * The doclet specific writer that will output the result.
-         */
-        private PackageSummaryWriter packageWriter;
+    /**
+     * The content that will be added to the package summary documentation tree.
+     */
+    private Content contentTree;
 
-        private PackageSummaryBuilder(Configuration configuration) {
-                super(configuration);
-        }
+    private PackageSummaryBuilder(Configuration configuration) {
+        super(configuration);
+    }
 
-        /**
-         * Construct a new PackageSummaryBuilder.
-         * @param configuration the current configuration of the doclet.
-         * @param pkg the package being documented.
-         * @param packageWriter the doclet specific writer that will output the
-         *        result.
-         *
-         * @return an instance of a PackageSummaryBuilder.
-         */
-        public static PackageSummaryBuilder getInstance(
-                Configuration configuration,
-                PackageDoc pkg,
-                PackageSummaryWriter packageWriter) {
-                PackageSummaryBuilder builder =
-                        new PackageSummaryBuilder(configuration);
-                builder.packageDoc = pkg;
-                builder.packageWriter = packageWriter;
-                return builder;
+    /**
+     * Construct a new PackageSummaryBuilder.
+     * @param configuration the current configuration of the doclet.
+     * @param pkg the package being documented.
+     * @param packageWriter the doclet specific writer that will output the
+     *        result.
+     *
+     * @return an instance of a PackageSummaryBuilder.
+     */
+    public static PackageSummaryBuilder getInstance(
+        Configuration configuration,
+        PackageDoc pkg,
+        PackageSummaryWriter packageWriter) {
+        PackageSummaryBuilder builder =
+                new PackageSummaryBuilder(configuration);
+        builder.packageDoc = pkg;
+        builder.packageWriter = packageWriter;
+        return builder;
+    }
+
+    /**
+     * Build the package summary.
+     */
+    public void build() throws IOException {
+        if (packageWriter == null) {
+            //Doclet does not support this output.
+            return;
         }
+        build(LayoutParser.getInstance(configuration).parseXML(ROOT), contentTree);
+    }
 
-        /**
-         * Build the package summary.
-         */
-        public void build() throws IOException {
-                if (packageWriter == null) {
-                        //Doclet does not support this output.
-                        return;
-                }
-                build(LayoutParser.getInstance(configuration).parseXML(ROOT));
-        }
-
-        /**
-         * {@inheritDoc}
-         */
-        public String getName() {
-                return ROOT;
-        }
+    /**
+     * {@inheritDoc}
+     */
+    public String getName() {
+        return ROOT;
+    }
 
-        /**
-         * Build the package documentation.
-         */
-        public void buildPackageDoc(XMLNode node) throws Exception {
-                buildChildren(node);
-                packageWriter.close();
-                Util.copyDocFiles(
-                        configuration,
-                        Util.getPackageSourcePath(configuration, packageDoc),
-                        DirectoryManager.getDirectoryPath(packageDoc)
-                                + File.separator
-                                + DocletConstants.DOC_FILES_DIR_NAME,
-                        true);
-        }
+    /**
+     * Build the package documentation.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param contentTree the content tree to which the documentation will be added
+     */
+    public void buildPackageDoc(XMLNode node, Content contentTree) throws Exception {
+        contentTree = packageWriter.getPackageHeader(
+                Util.getPackageName(packageDoc));
+        buildChildren(node, contentTree);
+        packageWriter.addPackageFooter(contentTree);
+        packageWriter.printDocument(contentTree);
+        packageWriter.close();
+        Util.copyDocFiles(
+                configuration,
+                Util.getPackageSourcePath(configuration, packageDoc),
+                DirectoryManager.getDirectoryPath(packageDoc)
+                        + File.separator
+                        + DocletConstants.DOC_FILES_DIR_NAME,
+                true);
+    }
 
-        /**
-         * Build the header of the summary.
-         */
-        public void buildPackageHeader(XMLNode node) {
-                packageWriter.writePackageHeader(Util.getPackageName(packageDoc));
-        }
+    /**
+     * Build the content for the package doc.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param contentTree the content tree to which the package contents
+     *                    will be added
+     */
+    public void buildContent(XMLNode node, Content contentTree) {
+        Content packageContentTree = packageWriter.getContentHeader();
+        buildChildren(node, packageContentTree);
+        contentTree.addContent(packageContentTree);
+    }
 
-        /**
-         * Build the description of the summary.
-         */
-        public void buildPackageDescription(XMLNode node) {
-                if (configuration.nocomment) {
-                        return;
-                }
-                packageWriter.writePackageDescription();
-        }
+    /**
+     * Build the package summary.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param packageContentTree the package content tree to which the summaries will
+     *                           be added
+     */
+    public void buildSummary(XMLNode node, Content packageContentTree) {
+        Content summaryContentTree = packageWriter.getSummaryHeader();
+        buildChildren(node, summaryContentTree);
+        packageContentTree.addContent(summaryContentTree);
+    }
 
-        /**
-         * Build the tags of the summary.
-         */
-        public void buildPackageTags(XMLNode node) {
-                if (configuration.nocomment) {
-                        return;
-                }
-                packageWriter.writePackageTags();
+    /**
+     * Build the summary for the interfaces in this package.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param summaryContentTree the summary tree to which the interface summary
+     *                           will be added
+     */
+    public void buildInterfaceSummary(XMLNode node, Content summaryContentTree) {
+        String interfaceTableSummary =
+                configuration.getText("doclet.Member_Table_Summary",
+                configuration.getText("doclet.Interface_Summary"),
+                configuration.getText("doclet.interfaces"));
+        String[] interfaceTableHeader = new String[] {
+            configuration.getText("doclet.Interface"),
+            configuration.getText("doclet.Description")
+        };
+        ClassDoc[] interfaces =
+                packageDoc.isIncluded()
+                        ? packageDoc.interfaces()
+                        : configuration.classDocCatalog.interfaces(
+                                Util.getPackageName(packageDoc));
+        if (interfaces.length > 0) {
+            packageWriter.addClassesSummary(
+                    interfaces,
+                    configuration.getText("doclet.Interface_Summary"),
+                    interfaceTableSummary, interfaceTableHeader, summaryContentTree);
         }
-
-        /**
-         * Build the package summary.
-         */
-        public void buildSummary(XMLNode node) {
-                buildChildren(node);
-        }
+    }
 
-        /**
-         * Build the overall header.
-         */
-        public void buildSummaryHeader(XMLNode node) {
-                packageWriter.writeSummaryHeader();
-        }
-
-        /**
-         * Build the overall footer.
-         */
-        public void buildSummaryFooter(XMLNode node) {
-                packageWriter.writeSummaryFooter();
-        }
-
-        /**
-         * Build the summary for the classes in this package.
-         */
-        public void buildClassSummary(XMLNode node) {
-            String classTableSummary =
-                    configuration.getText("doclet.Member_Table_Summary",
+    /**
+     * Build the summary for the classes in this package.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param summaryContentTree the summary tree to which the class summary will
+     *                           be added
+     */
+    public void buildClassSummary(XMLNode node, Content summaryContentTree) {
+        String classTableSummary =
+                configuration.getText("doclet.Member_Table_Summary",
+                configuration.getText("doclet.Class_Summary"),
+                configuration.getText("doclet.classes"));
+        String[] classTableHeader = new String[] {
+            configuration.getText("doclet.Class"),
+            configuration.getText("doclet.Description")
+        };
+        ClassDoc[] classes =
+                packageDoc.isIncluded()
+                        ? packageDoc.ordinaryClasses()
+                        : configuration.classDocCatalog.ordinaryClasses(
+                                Util.getPackageName(packageDoc));
+        if (classes.length > 0) {
+            packageWriter.addClassesSummary(
+                    classes,
                     configuration.getText("doclet.Class_Summary"),
-                    configuration.getText("doclet.classes"));
-            String[] classTableHeader = new String[] {
-                configuration.getText("doclet.Class"),
-                configuration.getText("doclet.Description")
-            };
-            ClassDoc[] classes =
-                        packageDoc.isIncluded()
-                                ? packageDoc.ordinaryClasses()
-                                : configuration.classDocCatalog.ordinaryClasses(
-                                        Util.getPackageName(packageDoc));
-                if (classes.length > 0) {
-                        packageWriter.writeClassesSummary(
-                                classes,
-                                configuration.getText("doclet.Class_Summary"),
-                                classTableSummary, classTableHeader);
-                }
+                    classTableSummary, classTableHeader, summaryContentTree);
         }
+    }
 
-        /**
-         * Build the summary for the interfaces in this package.
-         */
-        public void buildInterfaceSummary(XMLNode node) {
-            String interfaceTableSummary =
-                    configuration.getText("doclet.Member_Table_Summary",
-                    configuration.getText("doclet.Interface_Summary"),
-                    configuration.getText("doclet.interfaces"));
-            String[] interfaceTableHeader = new String[] {
-                configuration.getText("doclet.Interface"),
-                configuration.getText("doclet.Description")
-            };
-            ClassDoc[] interfaces =
-                        packageDoc.isIncluded()
-                                ? packageDoc.interfaces()
-                                : configuration.classDocCatalog.interfaces(
-                                        Util.getPackageName(packageDoc));
-                if (interfaces.length > 0) {
-                        packageWriter.writeClassesSummary(
-                                interfaces,
-                                configuration.getText("doclet.Interface_Summary"),
-                                interfaceTableSummary, interfaceTableHeader);
-                }
-        }
-
-        /**
-         * Build the summary for the enums in this package.
-         */
-        public void buildAnnotationTypeSummary(XMLNode node) {
-            String annotationtypeTableSummary =
-                    configuration.getText("doclet.Member_Table_Summary",
-                    configuration.getText("doclet.Annotation_Types_Summary"),
-                    configuration.getText("doclet.annotationtypes"));
-            String[] annotationtypeTableHeader = new String[] {
-                configuration.getText("doclet.AnnotationType"),
-                configuration.getText("doclet.Description")
-            };
-            ClassDoc[] annotationTypes =
-                        packageDoc.isIncluded()
-                                ? packageDoc.annotationTypes()
-                                : configuration.classDocCatalog.annotationTypes(
-                                        Util.getPackageName(packageDoc));
-                if (annotationTypes.length > 0) {
-                        packageWriter.writeClassesSummary(
-                                annotationTypes,
-                                configuration.getText("doclet.Annotation_Types_Summary"),
-                                annotationtypeTableSummary, annotationtypeTableHeader);
-                }
-        }
-
-        /**
-         * Build the summary for the enums in this package.
-         */
-        public void buildEnumSummary(XMLNode node) {
-            String enumTableSummary =
-                    configuration.getText("doclet.Member_Table_Summary",
+    /**
+     * Build the summary for the enums in this package.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param summaryContentTree the summary tree to which the enum summary will
+     *                           be added
+     */
+    public void buildEnumSummary(XMLNode node, Content summaryContentTree) {
+        String enumTableSummary =
+                configuration.getText("doclet.Member_Table_Summary",
+                configuration.getText("doclet.Enum_Summary"),
+                configuration.getText("doclet.enums"));
+        String[] enumTableHeader = new String[] {
+            configuration.getText("doclet.Enum"),
+            configuration.getText("doclet.Description")
+        };
+        ClassDoc[] enums =
+                packageDoc.isIncluded()
+                        ? packageDoc.enums()
+                        : configuration.classDocCatalog.enums(
+                                Util.getPackageName(packageDoc));
+        if (enums.length > 0) {
+            packageWriter.addClassesSummary(
+                    enums,
                     configuration.getText("doclet.Enum_Summary"),
-                    configuration.getText("doclet.enums"));
-            String[] enumTableHeader = new String[] {
-                configuration.getText("doclet.Enum"),
-                configuration.getText("doclet.Description")
-            };
-            ClassDoc[] enums =
-                        packageDoc.isIncluded()
-                                ? packageDoc.enums()
-                                : configuration.classDocCatalog.enums(
-                                        Util.getPackageName(packageDoc));
-                if (enums.length > 0) {
-                        packageWriter.writeClassesSummary(
-                                enums,
-                                configuration.getText("doclet.Enum_Summary"),
-                                enumTableSummary, enumTableHeader);
-                }
+                    enumTableSummary, enumTableHeader, summaryContentTree);
         }
+    }
 
-        /**
-         * Build the summary for the exceptions in this package.
-         */
-        public void buildExceptionSummary(XMLNode node) {
-            String exceptionTableSummary =
-                    configuration.getText("doclet.Member_Table_Summary",
+    /**
+     * Build the summary for the exceptions in this package.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param summaryContentTree the summary tree to which the exception summary will
+     *                           be added
+     */
+    public void buildExceptionSummary(XMLNode node, Content summaryContentTree) {
+        String exceptionTableSummary =
+                configuration.getText("doclet.Member_Table_Summary",
+                configuration.getText("doclet.Exception_Summary"),
+                configuration.getText("doclet.exceptions"));
+        String[] exceptionTableHeader = new String[] {
+            configuration.getText("doclet.Exception"),
+            configuration.getText("doclet.Description")
+        };
+        ClassDoc[] exceptions =
+                packageDoc.isIncluded()
+                        ? packageDoc.exceptions()
+                        : configuration.classDocCatalog.exceptions(
+                                Util.getPackageName(packageDoc));
+        if (exceptions.length > 0) {
+            packageWriter.addClassesSummary(
+                    exceptions,
                     configuration.getText("doclet.Exception_Summary"),
-                    configuration.getText("doclet.exceptions"));
-            String[] exceptionTableHeader = new String[] {
-                configuration.getText("doclet.Exception"),
-                configuration.getText("doclet.Description")
-            };
-            ClassDoc[] exceptions =
-                        packageDoc.isIncluded()
-                                ? packageDoc.exceptions()
-                                : configuration.classDocCatalog.exceptions(
-                                        Util.getPackageName(packageDoc));
-                if (exceptions.length > 0) {
-                        packageWriter.writeClassesSummary(
-                                exceptions,
-                                configuration.getText("doclet.Exception_Summary"),
-                                exceptionTableSummary, exceptionTableHeader);
-                }
+                    exceptionTableSummary, exceptionTableHeader, summaryContentTree);
         }
+    }
 
-        /**
-         * Build the summary for the errors in this package.
-         */
-        public void buildErrorSummary(XMLNode node) {
-            String errorTableSummary =
-                    configuration.getText("doclet.Member_Table_Summary",
+    /**
+     * Build the summary for the errors in this package.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param summaryContentTree the summary tree to which the error summary will
+     *                           be added
+     */
+    public void buildErrorSummary(XMLNode node, Content summaryContentTree) {
+        String errorTableSummary =
+                configuration.getText("doclet.Member_Table_Summary",
+                configuration.getText("doclet.Error_Summary"),
+                configuration.getText("doclet.errors"));
+        String[] errorTableHeader = new String[] {
+            configuration.getText("doclet.Error"),
+            configuration.getText("doclet.Description")
+        };
+        ClassDoc[] errors =
+                packageDoc.isIncluded()
+                        ? packageDoc.errors()
+                        : configuration.classDocCatalog.errors(
+                                Util.getPackageName(packageDoc));
+        if (errors.length > 0) {
+            packageWriter.addClassesSummary(
+                    errors,
                     configuration.getText("doclet.Error_Summary"),
-                    configuration.getText("doclet.errors"));
-            String[] errorTableHeader = new String[] {
-                configuration.getText("doclet.Error"),
-                configuration.getText("doclet.Description")
-            };
-            ClassDoc[] errors =
-                        packageDoc.isIncluded()
-                                ? packageDoc.errors()
-                                : configuration.classDocCatalog.errors(
-                                        Util.getPackageName(packageDoc));
-                if (errors.length > 0) {
-                        packageWriter.writeClassesSummary(
-                                errors,
-                                configuration.getText("doclet.Error_Summary"),
-                                errorTableSummary, errorTableHeader);
-                }
+                    errorTableSummary, errorTableHeader, summaryContentTree);
         }
+    }
 
-        /**
-         * Build the footer of the summary.
-         */
-        public void buildPackageFooter(XMLNode node) {
-                packageWriter.writePackageFooter();
+    /**
+     * Build the summary for the annotation type in this package.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param summaryContentTree the summary tree to which the annotation type
+     *                           summary will be added
+     */
+    public void buildAnnotationTypeSummary(XMLNode node, Content summaryContentTree) {
+        String annotationtypeTableSummary =
+                configuration.getText("doclet.Member_Table_Summary",
+                configuration.getText("doclet.Annotation_Types_Summary"),
+                configuration.getText("doclet.annotationtypes"));
+        String[] annotationtypeTableHeader = new String[] {
+            configuration.getText("doclet.AnnotationType"),
+            configuration.getText("doclet.Description")
+        };
+        ClassDoc[] annotationTypes =
+                packageDoc.isIncluded()
+                        ? packageDoc.annotationTypes()
+                        : configuration.classDocCatalog.annotationTypes(
+                                Util.getPackageName(packageDoc));
+        if (annotationTypes.length > 0) {
+            packageWriter.addClassesSummary(
+                    annotationTypes,
+                    configuration.getText("doclet.Annotation_Types_Summary"),
+                    annotationtypeTableSummary, annotationtypeTableHeader,
+                    summaryContentTree);
         }
+    }
+
+    /**
+     * Build the description of the summary.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param packageContentTree the tree to which the package description will
+     *                           be added
+     */
+    public void buildPackageDescription(XMLNode node, Content packageContentTree) {
+        if (configuration.nocomment) {
+            return;
+        }
+        packageWriter.addPackageDescription(packageContentTree);
+    }
+
+    /**
+     * Build the tags of the summary.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param packageContentTree the tree to which the package tags will be added
+     */
+    public void buildPackageTags(XMLNode node, Content packageContentTree) {
+        if (configuration.nocomment) {
+            return;
+        }
+        packageWriter.addPackageTags(packageContentTree);
+    }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/SerializedFormBuilder.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/SerializedFormBuilder.java	Wed Dec 01 11:02:38 2010 -0800
@@ -27,7 +27,6 @@
 
 import java.io.*;
 import java.util.*;
-
 import com.sun.javadoc.*;
 import com.sun.tools.doclets.internal.toolkit.util.*;
 import com.sun.tools.doclets.internal.toolkit.*;
@@ -87,6 +86,11 @@
      */
     protected MemberDoc currentMember;
 
+    /**
+     * The content that will be added to the serialized form documentation tree.
+     */
+    private Content contentTree;
+
     private SerializedFormBuilder(Configuration configuration) {
         super(configuration);
     }
@@ -117,7 +121,7 @@
         } catch (Exception e) {
             throw new DocletAbortException();
         }
-        build(LayoutParser.getInstance(configuration).parseXML(NAME));
+        build(LayoutParser.getInstance(configuration).parseXML(NAME), contentTree);
         writer.close();
     }
 
@@ -130,34 +134,44 @@
 
     /**
      * Build the serialized form.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param serializedTree content tree to which the documentation will be added
      */
-    public void buildSerializedForm(XMLNode node) throws Exception {
-        buildChildren(node);
+    public void buildSerializedForm(XMLNode node, Content serializedTree) throws Exception {
+        serializedTree = writer.getHeader(configuration.getText(
+                "doclet.Serialized_Form"));
+        buildChildren(node, serializedTree);
+        writer.addFooter(serializedTree);
+        writer.printDocument(serializedTree);
         writer.close();
     }
 
     /**
-     * Build the header.
+     * Build the serialized form summaries.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param serializedTree content tree to which the documentation will be added
      */
-    public void buildHeader(XMLNode node) {
-        writer.writeHeader(configuration.getText("doclet.Serialized_Form"));
+    public void buildSerializedFormSummaries(XMLNode node, Content serializedTree) {
+        Content serializedSummariesTree = writer.getSerializedSummariesHeader();
+        PackageDoc[] packages = configuration.packages;
+        for (int i = 0; i < packages.length; i++) {
+            currentPackage = packages[i];
+            buildChildren(node, serializedSummariesTree);
+        }
+        serializedTree.addContent(writer.getSerializedContent(
+                serializedSummariesTree));
     }
 
     /**
-     * Build the contents.
+     * Build the package serialized form for the current package being processed.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param serializedSummariesTree content tree to which the documentation will be added
      */
-    public void buildSerializedFormSummaries(XMLNode node) {
-        PackageDoc[] packages = configuration.packages;
-        for (int i = 0; i < packages.length; i++) {
-            currentPackage = packages[i];
-            buildChildren(node);
-        }
-    }
-
-    /**
-     * Build the package serialized for for the current package being processed.
-     */
-    public void buildPackageSerializedForm(XMLNode node) {
+    public void buildPackageSerializedForm(XMLNode node, Content serializedSummariesTree) {
+        Content packageSerializedTree = writer.getPackageSerializedHeader();
         String foo = currentPackage.name();
         ClassDoc[] classes = currentPackage.allClasses(false);
         if (classes == null || classes.length == 0) {
@@ -169,14 +183,29 @@
         if (!serialClassFoundToDocument(classes)) {
             return;
         }
-        buildChildren(node);
+        buildChildren(node, packageSerializedTree);
+        serializedSummariesTree.addContent(packageSerializedTree);
     }
 
-    public void buildPackageHeader(XMLNode node) {
-        writer.writePackageHeader(Util.getPackageName(currentPackage));
+    /**
+     * Build the package header.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param packageSerializedTree content tree to which the documentation will be added
+     */
+    public void buildPackageHeader(XMLNode node, Content packageSerializedTree) {
+        packageSerializedTree.addContent(writer.getPackageHeader(
+                Util.getPackageName(currentPackage)));
     }
 
-    public void buildClassSerializedForm(XMLNode node) {
+    /**
+     * Build the class serialized form.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param packageSerializedTree content tree to which the documentation will be added
+     */
+    public void buildClassSerializedForm(XMLNode node, Content packageSerializedTree) {
+        Content classSerializedTree = writer.getClassSerializedHeader();
         ClassDoc[] classes = currentPackage.allClasses(false);
         Arrays.sort(classes);
         for (int j = 0; j < classes.length; j++) {
@@ -187,35 +216,293 @@
                 if(!serialClassInclude(currentClass)) {
                     continue;
                 }
-                buildChildren(node);
+                Content classTree = writer.getClassHeader(currentClass);
+                buildChildren(node, classTree);
+                classSerializedTree.addContent(classTree);
+            }
+        }
+        packageSerializedTree.addContent(classSerializedTree);
+    }
+
+    /**
+     * Build the serial UID information for the given class.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param classTree content tree to which the serial UID information will be added
+     */
+    public void buildSerialUIDInfo(XMLNode node, Content classTree) {
+        Content serialUidTree = writer.getSerialUIDInfoHeader();
+        FieldDoc[] fields = currentClass.fields(false);
+        for (int i = 0; i < fields.length; i++) {
+            if (fields[i].name().equals("serialVersionUID") &&
+                fields[i].constantValueExpression() != null) {
+                writer.addSerialUIDInfo(SERIAL_VERSION_UID_HEADER,
+                        fields[i].constantValueExpression(), serialUidTree);
+                break;
+            }
+        }
+        classTree.addContent(serialUidTree);
+    }
+
+    /**
+     * Build the summaries for the methods and fields.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param classTree content tree to which the documentation will be added
+     */
+    public void buildClassContent(XMLNode node, Content classTree) {
+        Content classContentTree = writer.getClassContentHeader();
+        buildChildren(node, classContentTree);
+        classTree.addContent(classContentTree);
+    }
+
+    /**
+     * Build the summaries for the methods that belong to the given
+     * class.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param classContentTree content tree to which the documentation will be added
+     */
+    public void buildSerializableMethods(XMLNode node, Content classContentTree) {
+        Content serializableMethodTree = methodWriter.getSerializableMethodsHeader();
+        MemberDoc[] members = currentClass.serializationMethods();
+        int membersLength = members.length;
+        if (membersLength > 0) {
+            for (int i = 0; i < membersLength; i++) {
+                currentMember = members[i];
+                Content methodsContentTree = methodWriter.getMethodsContentHeader(
+                        (i == membersLength - 1));
+                buildChildren(node, methodsContentTree);
+                serializableMethodTree.addContent(methodsContentTree);
+            }
+        }
+        if (currentClass.serializationMethods().length > 0) {
+            classContentTree.addContent(methodWriter.getSerializableMethods(
+                    configuration.getText("doclet.Serialized_Form_methods"),
+                    serializableMethodTree));
+            if (currentClass.isSerializable() && !currentClass.isExternalizable()) {
+                if (currentClass.serializationMethods().length == 0) {
+                    Content noCustomizationMsg = methodWriter.getNoCustomizationMsg(
+                            configuration.getText(
+                            "doclet.Serializable_no_customization"));
+                    classContentTree.addContent(methodWriter.getSerializableMethods(
+                    configuration.getText("doclet.Serialized_Form_methods"),
+                    noCustomizationMsg));
+                }
             }
         }
     }
 
-    public void buildClassHeader(XMLNode node) {
-        writer.writeClassHeader(currentClass);
+    /**
+     * Build the method sub header.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param methodsContentTree content tree to which the documentation will be added
+     */
+    public void buildMethodSubHeader(XMLNode node, Content methodsContentTree)  {
+        methodWriter.addMemberHeader((MethodDoc)currentMember, methodsContentTree);
+    }
+
+    /**
+     * Build the deprecated method description.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param methodsContentTree content tree to which the documentation will be added
+     */
+    public void buildDeprecatedMethodInfo(XMLNode node, Content methodsContentTree) {
+        methodWriter.addDeprecatedMemberInfo((MethodDoc) currentMember, methodsContentTree);
     }
 
     /**
-     * Build the serial UID information for the given class.
+     * Build the information for the method.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param methodsContentTree content tree to which the documentation will be added
+     */
+    public void buildMethodInfo(XMLNode node, Content methodsContentTree)  {
+        if(configuration.nocomment){
+            return;
+        }
+        buildChildren(node, methodsContentTree);
+    }
+
+    /**
+     * Build method description.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param methodsContentTree content tree to which the documentation will be added
      */
-    public void buildSerialUIDInfo(XMLNode node) {
-        FieldDoc[] fields = currentClass.fields(false);
-        for (int i = 0; i < fields.length; i++) {
-            if (fields[i].name().equals("serialVersionUID") &&
-                fields[i].constantValueExpression() != null) {
-                writer.writeSerialUIDInfo(SERIAL_VERSION_UID_HEADER,
-                    fields[i].constantValueExpression());
-                return;
+    public void buildMethodDescription(XMLNode node, Content methodsContentTree) {
+        methodWriter.addMemberDescription((MethodDoc) currentMember, methodsContentTree);
+    }
+
+    /**
+     * Build the method tags.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param methodsContentTree content tree to which the documentation will be added
+     */
+    public void buildMethodTags(XMLNode node, Content methodsContentTree) {
+        methodWriter.addMemberTags((MethodDoc) currentMember, methodsContentTree);
+        MethodDoc method = (MethodDoc)currentMember;
+        if (method.name().compareTo("writeExternal") == 0
+                && method.tags("serialData").length == 0) {
+            if (configuration.serialwarn) {
+                configuration.getDocletSpecificMsg().warning(
+                        currentMember.position(), "doclet.MissingSerialDataTag",
+                        method.containingClass().qualifiedName(), method.name());
             }
         }
     }
 
     /**
-     * Build the footer.
+     * Build the field header.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param classContentTree content tree to which the documentation will be added
+     */
+    public void buildFieldHeader(XMLNode node, Content classContentTree) {
+        if (currentClass.serializableFields().length > 0) {
+            buildFieldSerializationOverview(currentClass, classContentTree);
+        }
+    }
+
+    /**
+     * Build the serialization overview for the given class.
+     *
+     * @param classDoc the class to print the overview for.
+     * @param classContentTree content tree to which the documentation will be added
+     */
+    public void buildFieldSerializationOverview(ClassDoc classDoc, Content classContentTree) {
+        if (classDoc.definesSerializableFields()) {
+            FieldDoc serialPersistentField =
+                Util.asList(classDoc.serializableFields()).get(0);
+            // Check to see if there are inline comments, tags or deprecation
+            // information to be printed.
+            if (fieldWriter.shouldPrintOverview(serialPersistentField)) {
+                Content serializableFieldsTree = fieldWriter.getSerializableFieldsHeader();
+                Content fieldsOverviewContentTree = fieldWriter.getFieldsContentHeader(true);
+                fieldWriter.addMemberDeprecatedInfo(serialPersistentField,
+                        fieldsOverviewContentTree);
+                if (!configuration.nocomment) {
+                    fieldWriter.addMemberDescription(serialPersistentField,
+                            fieldsOverviewContentTree);
+                    fieldWriter.addMemberTags(serialPersistentField,
+                            fieldsOverviewContentTree);
+                }
+                serializableFieldsTree.addContent(fieldsOverviewContentTree);
+                classContentTree.addContent(fieldWriter.getSerializableFields(
+                        configuration.getText("doclet.Serialized_Form_class"),
+                        serializableFieldsTree));
+            }
+        }
+    }
+
+    /**
+     * Build the summaries for the fields that belong to the given class.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param classContentTree content tree to which the documentation will be added
      */
-    public void buildFooter(XMLNode node) {
-        writer.writeFooter();
+    public void buildSerializableFields(XMLNode node, Content classContentTree) {
+        MemberDoc[] members = currentClass.serializableFields();
+        int membersLength = members.length;
+        if (membersLength > 0) {
+            Content serializableFieldsTree = fieldWriter.getSerializableFieldsHeader();
+            for (int i = 0; i < membersLength; i++) {
+                currentMember = members[i];
+                if (!currentClass.definesSerializableFields()) {
+                    Content fieldsContentTree = fieldWriter.getFieldsContentHeader(
+                            (i == membersLength - 1));
+                    buildChildren(node, fieldsContentTree);
+                    serializableFieldsTree.addContent(fieldsContentTree);
+                }
+                else {
+                    buildSerialFieldTagsInfo(serializableFieldsTree);
+                }
+            }
+            classContentTree.addContent(fieldWriter.getSerializableFields(
+                    configuration.getText("doclet.Serialized_Form_fields"),
+                    serializableFieldsTree));
+        }
+    }
+
+    /**
+     * Build the field sub header.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param fieldsContentTree content tree to which the documentation will be added
+     */
+    public void buildFieldSubHeader(XMLNode node, Content fieldsContentTree) {
+        if (!currentClass.definesSerializableFields()) {
+            FieldDoc field = (FieldDoc) currentMember;
+            fieldWriter.addMemberHeader(field.type().asClassDoc(),
+                    field.type().typeName(), field.type().dimension(), field.name(),
+                    fieldsContentTree);
+        }
+    }
+
+    /**
+     * Build the field deprecation information.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param fieldsContentTree content tree to which the documentation will be added
+     */
+    public void buildFieldDeprecationInfo(XMLNode node, Content fieldsContentTree) {
+        if (!currentClass.definesSerializableFields()) {
+            FieldDoc field = (FieldDoc)currentMember;
+            fieldWriter.addMemberDeprecatedInfo(field, fieldsContentTree);
+        }
+    }
+
+    /**
+     * Build the serial field tags information.
+     *
+     * @param serializableFieldsTree content tree to which the documentation will be added
+     */
+    public void buildSerialFieldTagsInfo(Content serializableFieldsTree) {
+        if(configuration.nocomment){
+            return;
+        }
+        FieldDoc field = (FieldDoc)currentMember;
+        // Process Serializable Fields specified as array of
+        // ObjectStreamFields. Print a member for each serialField tag.
+        // (There should be one serialField tag per ObjectStreamField
+        // element.)
+        SerialFieldTag[] tags = field.serialFieldTags();
+        Arrays.sort(tags);
+        int tagsLength = tags.length;
+        for (int i = 0; i < tagsLength; i++) {
+            Content fieldsContentTree = fieldWriter.getFieldsContentHeader(
+                    (i == tagsLength - 1));
+            fieldWriter.addMemberHeader(tags[i].fieldTypeDoc(),
+                    tags[i].fieldType(), "", tags[i].fieldName(), fieldsContentTree);
+            fieldWriter.addMemberDescription(tags[i], fieldsContentTree);
+            serializableFieldsTree.addContent(fieldsContentTree);
+        }
+    }
+
+    /**
+     * Build the field information.
+     *
+     * @param node the XML element that specifies which components to document
+     * @param fieldsContentTree content tree to which the documentation will be added
+     */
+    public void buildFieldInfo(XMLNode node, Content fieldsContentTree) {
+        if(configuration.nocomment){
+            return;
+        }
+        FieldDoc field = (FieldDoc)currentMember;
+        ClassDoc cd = field.containingClass();
+        // Process default Serializable field.
+        if ((field.tags("serial").length == 0) && ! field.isSynthetic()
+                && configuration.serialwarn) {
+            configuration.message.warning(field.position(),
+                    "doclet.MissingSerialTag", cd.qualifiedName(),
+                    field.name());
+        }
+        fieldWriter.addMemberDescription(field, fieldsContentTree);
+        fieldWriter.addMemberTags(field, fieldsContentTree);
     }
 
     /**
@@ -297,208 +584,4 @@
         }
         return false;
     }
-
-    /**
-     * Build the method header.
-     */
-    public void buildMethodHeader(XMLNode node) {
-        if (currentClass.serializationMethods().length > 0) {
-            methodWriter.writeHeader(
-                configuration.getText("doclet.Serialized_Form_methods"));
-            if (currentClass.isSerializable() && !currentClass.isExternalizable()) {
-                if (currentClass.serializationMethods().length == 0) {
-                    methodWriter.writeNoCustomizationMsg(
-                        configuration.getText(
-                            "doclet.Serializable_no_customization"));
-                }
-            }
-        }
-    }
-
-    /**
-     * Build the method sub header.
-     */
-    public void buildMethodSubHeader(XMLNode node)  {
-        methodWriter.writeMemberHeader((MethodDoc) currentMember);
-    }
-
-    /**
-     * Build the deprecated method description.
-     */
-    public void buildDeprecatedMethodInfo(XMLNode node) {
-        methodWriter.writeDeprecatedMemberInfo((MethodDoc) currentMember);
-    }
-
-    /**
-     * Build method tags.
-     */
-    public void buildMethodDescription(XMLNode node) {
-        methodWriter.writeMemberDescription((MethodDoc) currentMember);
-    }
-
-    /**
-     * Build the method tags.
-     */
-    public void buildMethodTags(XMLNode node) {
-        methodWriter.writeMemberTags((MethodDoc) currentMember);
-        MethodDoc method = (MethodDoc)currentMember;
-        if (method.name().compareTo("writeExternal") == 0
-            && method.tags("serialData").length == 0) {
-            if (configuration.serialwarn) {
-                configuration.getDocletSpecificMsg().warning(
-                    currentMember.position(), "doclet.MissingSerialDataTag",
-                    method.containingClass().qualifiedName(), method.name());
-            }
-        }
-    }
-
-    /**
-     * build the information for the method.
-     */
-    public void buildMethodInfo(XMLNode node)  {
-        if(configuration.nocomment){
-            return;
-        }
-        buildChildren(node);
-    }
-
-    /**
-     * Build the method footer.
-     */
-    public void buildMethodFooter(XMLNode node) {
-        methodWriter.writeMemberFooter();
-    }
-
-    /**
-     * Build the field header.
-     */
-    public void buildFieldHeader(XMLNode node) {
-        if (currentClass.serializableFields().length > 0) {
-            buildFieldSerializationOverview(currentClass);
-            fieldWriter.writeHeader(configuration.getText(
-                "doclet.Serialized_Form_fields"));
-        }
-    }
-
-    /**
-     * If possible, build the serialization overview for the given
-     * class.
-     *
-     * @param classDoc the class to print the overview for.
-     */
-    public void buildFieldSerializationOverview(ClassDoc classDoc) {
-        if (classDoc.definesSerializableFields()) {
-            FieldDoc serialPersistentField =
-                Util.asList(classDoc.serializableFields()).get(0);
-            // Check to see if there are inline comments, tags or deprecation
-            // information to be printed.
-            if (fieldWriter.shouldPrintOverview(serialPersistentField)) {
-                fieldWriter.writeHeader(
-                        configuration.getText("doclet.Serialized_Form_class"));
-                fieldWriter.writeMemberDeprecatedInfo(serialPersistentField);
-                if (!configuration.nocomment) {
-                    fieldWriter.writeMemberDescription(serialPersistentField);
-                    fieldWriter.writeMemberTags(serialPersistentField);
-                }
-                // Footer required to close the definition list tag
-                // for serialization overview.
-                fieldWriter.writeFooter(
-                        configuration.getText("doclet.Serialized_Form_class"));
-            }
-        }
-    }
-
-    /**
-     * Build the field sub header.
-     */
-    public void buildFieldSubHeader(XMLNode node) {
-        if (! currentClass.definesSerializableFields() ){
-            FieldDoc field = (FieldDoc) currentMember;
-            fieldWriter.writeMemberHeader(field.type().asClassDoc(),
-                field.type().typeName(), field.type().dimension(), field.name());
-        }
-    }
-
-    /**
-     * Build the field deprecation information.
-     */
-    public void buildFieldDeprecationInfo(XMLNode node) {
-        if (!currentClass.definesSerializableFields()) {
-            FieldDoc field = (FieldDoc)currentMember;
-            fieldWriter.writeMemberDeprecatedInfo(field);
-        }
-    }
-
-    /**
-     * Build the field information.
-     */
-    public void buildFieldInfo(XMLNode node) {
-        if(configuration.nocomment){
-            return;
-        }
-        FieldDoc field = (FieldDoc)currentMember;
-        ClassDoc cd = field.containingClass();
-        if (cd.definesSerializableFields()) {
-            // Process Serializable Fields specified as array of
-            // ObjectStreamFields. Print a member for each serialField tag.
-            // (There should be one serialField tag per ObjectStreamField
-            // element.)
-            SerialFieldTag[] tags = field.serialFieldTags();
-            Arrays.sort(tags);
-            for (int i = 0; i < tags.length; i++) {
-                fieldWriter.writeMemberHeader(tags[i].fieldTypeDoc(),
-                        tags[i].fieldType(), "", tags[i].fieldName());
-                fieldWriter.writeMemberDescription(tags[i]);
-
-            }
-        } else {
-
-            // Process default Serializable field.
-            if ((field.tags("serial").length == 0) && ! field.isSynthetic()
-                && configuration.serialwarn) {
-                configuration.message.warning(field.position(),
-                        "doclet.MissingSerialTag", cd.qualifiedName(),
-                        field.name());
-            }
-            fieldWriter.writeMemberDescription(field);
-            fieldWriter.writeMemberTags(field);
-        }
-    }
-
-    /**
-     * Build the field sub footer.
-     */
-    public void buildFieldSubFooter(XMLNode node) {
-        if (! currentClass.definesSerializableFields()) {
-            fieldWriter.writeMemberFooter();
-        }
-    }
-
-    /**
-     * Build the summaries for the methods that belong to the given
-     * class.
-     */
-    public void buildSerializableMethods(XMLNode node) {
-        MemberDoc[] members = currentClass.serializationMethods();
-        if (members.length > 0) {
-            for (int i = 0; i < members.length; i++) {
-                currentMember = members[i];
-                buildChildren(node);
-            }
-        }
-    }
-
-    /**
-     * Build the summaries for the fields that belong to the given
-     * class.
-     */
-    public void buildSerializableFields(XMLNode node) {
-        MemberDoc[] members = currentClass.serializableFields();
-        if (members.length > 0) {
-            for (int i = 0; i < members.length; i++) {
-                currentMember = members[i];
-                buildChildren(node);
-            }
-        }
-    }
 }
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclet.xml	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclet.xml	Wed Dec 01 11:02:38 2010 -0800
@@ -29,177 +29,144 @@
 <Doclet>
 
     <PackageDoc>
-        <PackageHeader/>
-        <Summary>
-            <SummaryHeader/>
-            <InterfaceSummary/>
-            <ClassSummary/>
-            <EnumSummary/>
-            <ExceptionSummary/>
-            <ErrorSummary/>
-            <AnnotationTypeSummary/>
-            <SummaryFooter/>
-        </Summary>
-        <PackageDescription/>
-        <PackageTags/>
-        <PackageFooter/>
+        <Content>
+            <Summary>
+                <InterfaceSummary/>
+                <ClassSummary/>
+                <EnumSummary/>
+                <ExceptionSummary/>
+                <ErrorSummary/>
+                <AnnotationTypeSummary/>
+            </Summary>
+            <PackageDescription/>
+            <PackageTags/>
+        </Content>
     </PackageDoc>
 
     <AnnotationTypeDoc>
-        <AnnotationTypeHeader/>
-        <DeprecationInfo/>
-        <AnnotationTypeSignature/>
-        <AnnotationTypeDescription/>
-        <AnnotationTypeTagInfo/>
+        <AnnotationTypeInfo>
+            <DeprecationInfo/>
+            <AnnotationTypeSignature/>
+            <AnnotationTypeDescription/>
+            <AnnotationTypeTagInfo/>
+        </AnnotationTypeInfo>
         <MemberSummary>
-                <AnnotationTypeRequiredMemberSummary/>
+            <AnnotationTypeRequiredMemberSummary/>
             <AnnotationTypeOptionalMemberSummary/>
         </MemberSummary>
-        <AnnotationTypeRequiredMemberDetails>
-            <Header/>
-            <AnnotationTypeRequiredMember>
-                <MemberHeader/>
-                <Signature/>
-                <DeprecationInfo/>
-                <MemberComments/>
-                <TagInfo/>
-                <MemberFooter/>
-            </AnnotationTypeRequiredMember>
-        </AnnotationTypeRequiredMemberDetails>
-        <AnnotationTypeOptionalMemberDetails>
-            <AnnotationTypeOptionalMember>
-                <MemberHeader/>
-                <Signature/>
-                <DeprecationInfo/>
-                <MemberComments/>
-                <TagInfo/>
-                <DefaultValueInfo/>
-                <MemberFooter/>
-            </AnnotationTypeOptionalMember>
-            <Footer/>
-        </AnnotationTypeOptionalMemberDetails>
-        <AnnotationTypeFooter/>
+        <AnnotationTypeMemberDetails>
+            <AnnotationTypeRequiredMemberDetails>
+                <AnnotationTypeRequiredMember>
+                    <Signature/>
+                    <DeprecationInfo/>
+                    <MemberComments/>
+                    <TagInfo/>
+                </AnnotationTypeRequiredMember>
+            </AnnotationTypeRequiredMemberDetails>
+            <AnnotationTypeOptionalMemberDetails>
+                <AnnotationTypeOptionalMember>
+                    <Signature/>
+                    <DeprecationInfo/>
+                    <MemberComments/>
+                    <TagInfo/>
+                    <DefaultValueInfo/>
+                </AnnotationTypeOptionalMember>
+            </AnnotationTypeOptionalMemberDetails>
+        </AnnotationTypeMemberDetails>
     </AnnotationTypeDoc>
 
     <ClassDoc>
-        <ClassHeader/>
         <ClassTree/>
-        <TypeParamInfo/>
-        <SuperInterfacesInfo/>
-        <ImplementedInterfacesInfo/>
-        <SubClassInfo/>
-        <SubInterfacesInfo/>
-        <InterfaceUsageInfo/>
-        <NestedClassInfo/>
-        <DeprecationInfo/>
-        <ClassSignature/>
-        <ClassDescription/>
-        <ClassTagInfo/>
+        <ClassInfo>
+            <TypeParamInfo/>
+            <SuperInterfacesInfo/>
+            <ImplementedInterfacesInfo/>
+            <SubClassInfo/>
+            <SubInterfacesInfo/>
+            <InterfaceUsageInfo/>
+            <NestedClassInfo/>
+            <DeprecationInfo/>
+            <ClassSignature/>
+            <ClassDescription/>
+            <ClassTagInfo/>
+        </ClassInfo>
         <MemberSummary>
             <NestedClassesSummary/>
-            <NestedClassesInheritedSummary/>
             <EnumConstantsSummary/>
             <FieldsSummary/>
-            <FieldsInheritedSummary/>
             <ConstructorsSummary/>
             <MethodsSummary/>
-            <MethodsInheritedSummary/>
         </MemberSummary>
-        <EnumConstantsDetails>
-            <Header/>
-            <EnumConstant>
-                <EnumConstantHeader/>
-                <Signature/>
-                <DeprecationInfo/>
-                <EnumConstantComments/>
-                <TagInfo/>
-                <EnumConstantFooter/>
-            </EnumConstant>
-            <Footer/>
-        </EnumConstantsDetails>
-        <FieldDetails>
-            <Header/>
-            <FieldDoc>
-                <FieldHeader/>
-                <Signature/>
-                <DeprecationInfo/>
-                <FieldComments/>
-                <TagInfo/>
-                <FieldFooter/>
-            </FieldDoc>
-            <Footer/>
-        </FieldDetails>
-        <ConstructorDetails>
-            <Header/>
-            <ConstructorDoc>
-                <ConstructorHeader/>
-                <Signature/>
-                <DeprecationInfo/>
-                <ConstructorComments/>
-                <TagInfo/>
-                <ConstructorFooter/>
-            </ConstructorDoc>
-            <Footer/>
-        </ConstructorDetails>
-        <MethodDetails>
-            <Header/>
-            <MethodDoc>
-                <MethodHeader/>
-                <Signature/>
-                <DeprecationInfo/>
-                <MethodComments/>
-                <TagInfo/>
-                <MethodFooter/>
-            </MethodDoc>
-            <Footer/>
-        </MethodDetails>
-        <ClassFooter/>
+        <MemberDetails>
+            <EnumConstantsDetails>
+                <EnumConstant>
+                    <Signature/>
+                    <DeprecationInfo/>
+                    <EnumConstantComments/>
+                    <TagInfo/>
+                </EnumConstant>
+            </EnumConstantsDetails>
+            <FieldDetails>
+                <FieldDoc>
+                    <Signature/>
+                    <DeprecationInfo/>
+                    <FieldComments/>
+                    <TagInfo/>
+                </FieldDoc>
+            </FieldDetails>
+            <ConstructorDetails>
+                <ConstructorDoc>
+                    <Signature/>
+                    <DeprecationInfo/>
+                    <ConstructorComments/>
+                    <TagInfo/>
+                </ConstructorDoc>
+            </ConstructorDetails>
+            <MethodDetails>
+                <MethodDoc>
+                    <Signature/>
+                    <DeprecationInfo/>
+                    <MethodComments/>
+                    <TagInfo/>
+                </MethodDoc>
+            </MethodDetails>
+        </MemberDetails>
     </ClassDoc>
 
     <ConstantSummary>
-        <Header/>
         <Contents/>
         <ConstantSummaries>
-            <PackageConstantSummary>
-                <PackageHeader/>
-                <ClassConstantSummary>
-                    <ClassHeader/>
-                    <ConstantMembers/>
-                    <ClassFooter/>
-                </ClassConstantSummary>
-            </PackageConstantSummary>
+            <PackageHeader/>
+            <ClassConstantSummary>
+                <ConstantMembers/>
+            </ClassConstantSummary>
         </ConstantSummaries>
-        <Footer/>
     </ConstantSummary>
 
     <SerializedForm>
-        <Header/>
         <SerializedFormSummaries>
             <PackageSerializedForm>
                 <PackageHeader/>
                 <ClassSerializedForm>
-                    <ClassHeader/>
                     <SerialUIDInfo/>
-                    <MethodHeader/>
-                    <SerializableMethods>
-                        <MethodSubHeader/>
-                        <DeprecatedMethodInfo/>
-                        <MethodInfo>
-                            <MethodDescription/>
-                            <MethodTags/>
-                        </MethodInfo>
-                        <MethodFooter/>
-                    </SerializableMethods>
-                    <FieldHeader/>
-                    <SerializableFields>
-                        <FieldSubHeader/>
-                        <FieldDeprecationInfo/>
-                        <FieldInfo/>
-                        <FieldSubFooter/>
-                    </SerializableFields>
+                    <ClassContent>
+                        <SerializableMethods>
+                            <MethodSubHeader/>
+                            <DeprecatedMethodInfo/>
+                            <MethodInfo>
+                                <MethodDescription/>
+                                <MethodTags/>
+                            </MethodInfo>
+                        </SerializableMethods>
+                        <FieldHeader/>
+                        <SerializableFields>
+                            <FieldSubHeader/>
+                            <FieldDeprecationInfo/>
+                            <FieldInfo/>
+                        </SerializableFields>
+                    </ClassContent>
                 </ClassSerializedForm>
             </PackageSerializedForm>
         </SerializedFormSummaries>
-        <Footer/>
     </SerializedForm>
 </Doclet>
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets.properties	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets.properties	Wed Dec 01 11:02:38 2010 -0800
@@ -111,12 +111,12 @@
 doclet.extends=extends
 doclet.Package_private=(package private)
 doclet.implements=implementsdoclet.Same_package_name_used=Package name format used twice: {0}
-doclet.Nested_Classes_Interfaces_Inherited_From_Class=Nested classes/interfaces inherited from class {0}
-doclet.Nested_Classes_Interface_Inherited_From_Interface=Nested classes/interfaces inherited from interface {0}
-doclet.Methods_Inherited_From_Class=Methods inherited from class {0}
-doclet.Methods_Inherited_From_Interface=Methods inherited from interface {0}
-doclet.Fields_Inherited_From_Class=Fields inherited from class {0}
-doclet.Fields_Inherited_From_Interface=Fields inherited from interface {0}
+doclet.Nested_Classes_Interfaces_Inherited_From_Class=Nested classes/interfaces inherited from class
+doclet.Nested_Classes_Interface_Inherited_From_Interface=Nested classes/interfaces inherited from interface
+doclet.Methods_Inherited_From_Class=Methods inherited from class
+doclet.Methods_Inherited_From_Interface=Methods inherited from interface
+doclet.Fields_Inherited_From_Class=Fields inherited from class
+doclet.Fields_Inherited_From_Interface=Fields inherited from interface
 doclet.Serializable=Serializable
 doclet.Externalizable=Externalizable
 doclet.Annotation_Type_Member_Detail=Element Detail
@@ -136,12 +136,19 @@
 doclet.Constants_Table_Summary={0} table, listing constant fields, and values
 doclet.Member_Table_Summary={0} table, listing {1}, and an explanation
 doclet.fields=fields
+doclet.Fields=Fields
 doclet.constructors=constructors
+doclet.Constructors=Constructors
 doclet.methods=methods
+doclet.Methods=Methods
 doclet.annotation_type_optional_members=optional elements
+doclet.Annotation_Type_Optional_Members=Optional Elements
 doclet.annotation_type_required_members=required elements
+doclet.Annotation_Type_Required_Members=Required Elements
 doclet.enum_constants=enum constants
+doclet.Enum_Constants=Enum Constants
 doclet.nested_classes=nested classes
+doclet.Nested_Classes=Nested Classes
 doclet.subclasses=subclasses
 doclet.subinterfaces=subinterfaces
 doclet.Modifier=Modifier
@@ -173,7 +180,7 @@
 
 doclet.enum_valueof_doc=\n\
  Returns the enum constant of this type with the specified name.\n\
- The string must match <I>exactly</I> an identifier used to declare an\n\
+ The string must match <i>exactly</i> an identifier used to declare an\n\
  enum constant in this type.  (Extraneous whitespace characters are \n\
  not permitted.)\n\
  \n\
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/stylesheet.css	Wed Dec 01 11:02:38 2010 -0800
@@ -0,0 +1,439 @@
+/* Javadoc style sheet */
+/*
+Overall document style
+*/
+* {
+    margin:0;
+    padding:0;
+}
+body {
+    font-family:Helvetica, Arial, sans-serif;
+    color:#000000;
+}
+p {
+    margin:20px 0;
+}
+pre {
+    font-size:1.0em;
+}
+h1 {
+    font-size:1.4em;
+}
+h2 {
+    font-size:1.35em;
+}
+h3 {
+    font-size:1.3em;
+}
+h4 {
+    font-size:1.25em;
+}
+ul {
+    margin:10px 0 10px 20px;
+}
+li {
+    list-style:disc;
+}
+dl dt {
+    font-size:0.95em;
+    font-weight:bold;
+    margin:10px 0 0 0;
+}
+dl dd {
+    margin:10px 0 10px 20px;
+}
+dl dd ul {
+    margin-left:0;
+}
+dl dd ul li {
+    list-style:none;
+    margin:10px 0 10px 0;
+}
+caption {
+    background: #CCCCFF;
+    color:#000000;
+    text-align: left;
+    font-size: 150%;
+    font-weight: bold;
+    border-left: 2px ridge;
+    border-right: 2px ridge;
+    border-top: 2px ridge;
+    padding-left: 5px;
+    width:auto;
+}
+/*
+Document title and Copyright styles
+*/
+.aboutLanguage {
+    float:right;
+    font-size:0.9em;
+    color:#000000;
+}
+.legalCopy {
+    margin:7px;
+}
+.bar {
+    font-size:1em;
+    margin:10px 0 0 10px;
+}
+.bar a {
+    font-weight:normal;
+}
+/*
+Navigation bar styles
+*/
+.topNav {
+    border-top:2px solid #C0C0C0;
+    margin:7px;
+    padding:7px 0;
+    height:2.8em;
+    width:99%;
+    min-width:600px;
+}
+.bottomNav {
+    border-top:2px solid #C0C0C0;
+    margin:7px;
+    padding:7px 0;
+    height:2.8em;
+    width:99%;
+}
+.subNav {
+    border-bottom:2px solid #C0C0C0;
+    float:left;
+    width:99%;
+    margin:7px;
+    min-width:600px;
+}
+.subNav div {
+    clear:left;
+    float:left;
+    padding:0 0 5px 2px;
+    width:100%;
+}
+.topNav a:link,.topNav a:active, .topNav a:visited, .topNav a:hover,
+.bottomNav a:link,.bottomNav a:active, .bottomNav a:visited, .bottomNav a:hover {
+    color:#000000;
+    font-weight:bold;
+    text-decoration:underline;
+    font-size:1em;
+}
+/* Navigation bar list styles */
+.topNav ul.navList, .bottomNav ul.navList {
+    background-color:#EEEEFF;
+    padding:7px 5px;
+    margin:0;
+    float:left;
+    width:80%;
+}
+ul.navList li{
+    list-style:none;
+    float:left;
+    padding:3px 4px;
+    color:#000000;
+    font-size:0.98em;
+}
+ul.navList li.navBarCell1Rev {
+    background-color:#00008B;
+    color:#FFFFFF;
+    font-weight:bold;
+    font-size:0.97em;
+}
+/* Sub-navigation bar list styles */
+.subNav ul.navList {
+    float:left;
+    margin:0;
+    font-size:0.7em;
+    width:350px;
+}
+ul.subNavList {
+    float:left;
+    margin:0;
+    font-size:0.7em;
+    width:350px;
+}
+ul.subNavList li{
+    list-style:none;
+    float:left;
+    font-size:90%;
+}
+/*
+Page header and footer styles
+*/
+.header, .footer {
+    clear:both;
+    margin:0 7px;
+}
+.indexHeader {
+    font-size:0.9em;
+    margin:10px 0 7px 10px;
+}
+.header ul {
+    padding-left:20px;
+}
+/* Header and footer title styles */ 
+.header h1.title {
+    font-size:1.4em;
+    text-align:center;
+    margin:0;
+}
+.header h2.title {
+    font-size:1.35em;
+    margin:0;
+}
+.subTitle {
+    margin:0;
+    padding-top:10px;
+    font-size:0.75em;
+    font-weight:bold;
+}
+/*
+Page layout container styles
+*/
+.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer,
+.constantValuesContainer {
+    clear:both;
+    padding:10px 10px;
+    position:relative;
+}
+.indexContainer {
+    padding:0 0 10px 10px;
+    font-size:0.9em;
+}
+/*
+Class inheritance information styles
+*/
+ul.inheritance {
+    margin:0;
+    padding:0;
+}
+ul.inheritance li {
+    display:inline;
+    list-style:none;
+}
+ul.inheritance li ul.inheritance {
+    margin-left:15px;
+    background-image:url(resources/inherit.gif);
+    background-repeat:no-repeat;
+    padding-left:15px;
+    padding-top:1px;
+}
+/*
+Heading styles
+*/
+.indexContainer h2 {
+    font-weight:normal;
+    font-size:1.0em;
+    padding:10px 0 0 0;
+}
+.contentContainer h2 {
+    margin:10px 0;
+}
+.constantValuesContainer h2 {
+    background:#CCCCFF;
+    border:2px ridge;
+    padding:3px;
+    margin:0 0 10px 0;
+}
+.serializedFormContainer ul.blockList li.blockList h2 {
+    background:#EEEEFF;
+    border:2px ridge;
+    padding:3px;
+    margin:0 0 15px 0;
+    text-align:center;
+}
+.classUseContainer ul li ul li h3 {
+    margin-bottom:30px;
+    padding:3px;
+}
+.serializedFormContainer ul.blockList li.blockList ul.blockList li.blockList h3 {
+    background:#EEEEFF;
+    margin:0 0 15px 0;
+    padding:3px;
+}
+.serializedFormContainer ul.blockList li.blockList ul.blockList li.blockList ul.blockList li.blockList h3 {
+    background:#CCCCFF;
+    margin:0 0 15px 0;
+    padding:3px;
+    border:2px ridge;
+}
+ul.blockList ul.blockList li.blockList h3, ul.blockList ul.blockList li.blockList h3 {
+    background:#CCCCFF;
+    border:2px ridge;
+    padding-left:5px;
+}
+div.summary ul.blockList ul.blockList li.blockList h3 {
+    background:#CCCCFF;
+    border:0;
+    border:2px ridge;
+    padding-left:5px;
+}
+div.summary ul.blockList ul.blockList ul.blockList li.blockList h3 {
+    background:#EEEEFF;
+    border:0;
+    border-bottom:2px ridge;
+}
+div.details ul.blockList ul.blockList ul.blockList li.blockList h4,
+div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
+    font-size:1.15em;
+    font-weight:bold;
+    padding:0 0 10px 0;
+}
+/*
+Table styles
+*/
+.contentContainer table {
+    border-collapse: collapse ;
+    width:100%;
+}
+.contentContainer table td, .contentContainer table th {
+    border:2px ridge;
+    padding:3px;
+}
+/* Constant values page table styles */
+.constantValuesContainer table {
+    border-collapse: collapse ;
+    margin:0 0 10px 0;
+}
+.constantValuesContainer table caption{
+    font-size:0.95em;
+    padding:3px;
+    background:#EEEEFF;
+}
+.constantValuesContainer table td, .constantValuesContainer table th {
+    border:2px ridge;
+    padding:3px;
+}
+/* Class-use/Package-use page table styles */
+.classUseContainer table {
+    border-collapse: collapse ;
+    width:100%;
+    margin:0 0 15px 0;
+}
+.classUseContainer ul li ul li table {
+    margin-bottom:30px;
+}
+.classUseContainer ul li ul li table caption{
+    font-size:0.95em;
+    padding:3px;
+    background:#EEEEFF;
+}
+.classUseContainer table td, .classUseContainer table th {
+    border:2px ridge;
+    padding:3px;
+}
+/* Summary table styles */
+ul.blockList li.blockList table.overviewSummary {
+    margin:0;
+    margin-bottom:15px;
+}
+ul.blockList li.blockList table caption {
+    padding:3px;
+}
+ul.blockList li.blockList table.overviewSummary td.colFirst{
+    text-align:right;
+}
+table.packageSummary td.colFirst, table.overviewSummary th.colFirst {
+    width:15%;
+}
+div.summary ul.blockList ul.blockList li.blockList caption {
+    display:none;
+}
+div.summary ul.blockList li.blockList ul.blockList li.blockList table.overviewSummary th {
+    border-top:0;
+}
+/* Table column block styles */
+ul.blockList li.blockList table.overviewSummary td.colLast div.block{
+    padding:0;
+    padding-left:40px;
+}
+ul.blockList li.blockList table.overviewSummary td.colOne div.block{
+    padding:0;
+    padding-left:40px;
+}
+.contentContainer ul.blockList li.blockList table .colOne div.block{
+    padding-left:40px;
+}
+.classUseContainer ul li ul li table .colLast div.block,
+.classUseContainer ul li ul li table .colOne div.block{
+    padding-left:40px;
+}
+/*
+List styles
+*/
+ul.horizontal li {
+    display:inline;
+    font-size:0.9em;   
+}
+/* Container specific list styles */
+.indexContainer ul {
+    margin:0;
+}
+.indexContainer ul li {
+    list-style:none;
+}
+.serializedFormContainer ul.blockList li.blockList ul.blockList li.blockList ul.blockList li.blockList {
+    border:0;
+}
+.serializedFormContainer ul.blockList li.blockList ul.blockList li.blockList ul.blockList li.blockList ul.blockList li.blockList {
+    list-style:none;
+    border:0;
+    border-bottom:2px ridge;
+}
+.serializedFormContainer ul.blockList li.blockList ul.blockList li.blockList ul.blockList li.blockList ul.blockList li.blockListLast {
+    list-style:none;
+}
+/* General list styles */
+ul.blockList, ul.blockListLast {
+    margin-left:0;
+    padding-left:0;
+}
+ul.blockList li.blockList, ul.blockListLast li.blockList {
+    list-style:none;
+    margin-bottom:25px;
+}
+ul.blockList ul.blockList ul.blockList li.blockList {
+    border:2px ridge;
+}
+div.details ul.blockList ul.blockList ul.blockList li.blockList {
+    border:0;
+    border-bottom:2px ridge;
+}
+/* Definition list styles */
+ul.blockList li.blockList dl{
+    margin-bottom:15px;
+}
+ul.blockList li.blockList dl dd{
+    margin:0 0 0 30px;
+}
+ul.blockList li.blockList ul.blockList li.blockList ul.blockList li.blockList dl,
+ul.blockList li.blockList ul.blockList li.blockList ul.blockListLast li.blockList dl{
+    padding:0 0 10px 35px;
+}
+dl.nameValue dt, dl.nameValue dd{
+    display:inline;
+}
+ul.blockList li.blockList pre{
+    margin:0 0 15px 0;
+}
+/* List content styles */
+ul.blockList li.blockList ul.blockList li.blockList pre{
+    margin:10px 0 15px 0;
+}
+ul.blockList li.blockList ul.blockList li.blockList ul.blockList li.blockList pre,
+ul.blockList li.blockList ul.blockList li.blockList ul.blockListLast li.blockList pre{
+    padding:0 0 10px 0;
+}
+ul.blockList li.blockList ul.blockList li.blockList ul.blockList li.blockList div.block,
+ul.blockList li.blockList ul.blockList li.blockList ul.blockListLast li.blockList div.block{
+    padding:0 0 10px 35px;
+}
+/*
+Formatting effect styles
+*/
+.strong {
+    font-weight:bold;
+}
+.sourceLineNo {
+    color:green;
+    padding:0 30px 0 0;
+}
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/DirectoryManager.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/DirectoryManager.java	Wed Dec 01 11:02:38 2010 -0800
@@ -46,7 +46,7 @@
     /**
      * The file separator string, "/", used in the formation of the URL path.
      */
-    public static final String URL_FILE_SEPERATOR = "/";
+    public static final String URL_FILE_SEPARATOR = "/";
 
     /**
      * Never instaniated.
@@ -123,13 +123,13 @@
         for (int i = 0; i < packageName.length(); i++) {
             char ch = packageName.charAt(i);
             if (ch == '.') {
-                pathstr.append(URL_FILE_SEPERATOR);
+                pathstr.append(URL_FILE_SEPARATOR);
             } else {
                 pathstr.append(ch);
             }
         }
-        if (pathstr.length() > 0 && ! pathstr.toString().endsWith(URL_FILE_SEPERATOR)) {
-            pathstr.append(URL_FILE_SEPERATOR);
+        if (pathstr.length() > 0 && ! pathstr.toString().endsWith(URL_FILE_SEPARATOR)) {
+            pathstr.append(URL_FILE_SEPARATOR);
         }
         return pathstr.toString();
     }
@@ -155,7 +155,7 @@
         for (int i = 0; i < name.length(); i++) {
             char ch = name.charAt(i);
             if (ch == '.') {
-                pathstr.append(URL_FILE_SEPERATOR);
+                pathstr.append(URL_FILE_SEPARATOR);
             } else {
                 pathstr.append(ch);
             }
@@ -184,7 +184,7 @@
         StringBuffer pathstr = new StringBuffer();
         pathstr.append(getRelativePath(from));
         pathstr.append(getPath(to));
-        pathstr.append(URL_FILE_SEPERATOR);
+        pathstr.append(URL_FILE_SEPARATOR);
         return pathstr.toString();
     }
 
@@ -226,10 +226,10 @@
         for (int i = 0; i < from.length(); i++) {
             char ch = from.charAt(i);
             if (ch == '.') {
-                pathstr.append(".." + URL_FILE_SEPERATOR);
+                pathstr.append(".." + URL_FILE_SEPARATOR);
             }
         }
-        pathstr.append(".." + URL_FILE_SEPERATOR);
+        pathstr.append(".." + URL_FILE_SEPARATOR);
         return pathstr.toString();
     }
 
@@ -297,7 +297,7 @@
         String pathstr = createPathString(pd);
         if (pathstr.length() > 0) {
             buf.append(pathstr);
-            buf.append(URL_FILE_SEPERATOR);
+            buf.append(URL_FILE_SEPARATOR);
         }
         buf.append(filename);
         return buf.toString();
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/SourceToHTMLConverter.java	Tue Nov 30 09:38:48 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,303 +0,0 @@
-/*
- * Copyright (c) 2001, 2009, 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.doclets.internal.toolkit.util;
-
-import java.io.*;
-import java.util.*;
-import javax.tools.FileObject;
-
-import com.sun.javadoc.*;
-import com.sun.tools.doclets.internal.toolkit.*;
-
-/**
- * Converts Java Source Code to HTML.
- *
- * This code is not part of an API.
- * It is implementation that is subject to change.
- * Do not use it as an API
- *
- * @author Jamie Ho
- * @since 1.4
- */
-public class SourceToHTMLConverter {
-
-    /**
-     * The background color.
-     */
-    protected static final String BGCOLOR = "white";
-
-    /**
-     * The line number color.
-     */
-    protected static final String LINE_NO_COLOR = "green";
-
-    /**
-     * The number of trailing blank lines at the end of the page.
-     * This is inserted so that anchors at the bottom of small pages
-     * can be reached.
-     */
-    protected static final int NUM_BLANK_LINES = 60;
-
-
-    /**
-     * Source is converted to HTML using static methods below.
-     */
-    private SourceToHTMLConverter() {}
-
-    /**
-     * Convert the Classes in the given RootDoc to an HTML.
-     * @param configuration the configuration.
-     * @param rd the RootDoc to convert.
-     * @param outputdir the name of the directory to output to.
-     */
-    public static void convertRoot(Configuration configuration, RootDoc rd, String outputdir) {
-        if (rd == null || outputdir == null) {
-            return;
-        }
-        PackageDoc[] pds = rd.specifiedPackages();
-        for (int i = 0; i < pds.length; i++) {
-            convertPackage(configuration, pds[i], outputdir);
-        }
-        ClassDoc[] cds = rd.specifiedClasses();
-        for (int i = 0; i < cds.length; i++) {
-            convertClass(configuration, cds[i],
-                getPackageOutputDir(outputdir, cds[i].containingPackage()));
-        }
-    }
-
-    /**
-     * Convert the Classes in the given Package to an HTML.
-     * @param configuration the configuration.
-     * @param pd the Package to convert.
-     * @param outputdir the name of the directory to output to.
-     */
-    public static void convertPackage(Configuration configuration, PackageDoc pd, String outputdir) {
-        if (pd == null || outputdir == null) {
-            return;
-        }
-        String classOutputdir = getPackageOutputDir(outputdir, pd);
-        ClassDoc[] cds = pd.allClasses();
-        for (int i = 0; i < cds.length; i++) {
-            convertClass(configuration, cds[i], classOutputdir);
-        }
-    }
-
-    /**
-     * Return the directory write output to for the given package.
-     * @param outputDir the directory to output to.
-     * @param pd the Package to generate output for.
-     */
-    private static String getPackageOutputDir(String outputDir, PackageDoc pd) {
-        return outputDir + File.separator +
-            DirectoryManager.getDirectoryPath(pd) + File.separator;
-    }
-
-    /**
-     * Convert the given Class to an HTML.
-     * @param configuration the configuration.
-     * @param cd the class to convert.
-     * @param outputdir the name of the directory to output to.
-     */
-    public static void convertClass(Configuration configuration, ClassDoc cd, String outputdir) {
-        if (cd == null || outputdir == null) {
-            return;
-        }
-        try {
-            SourcePosition sp = cd.position();
-            if (sp == null)
-                return;
-            Reader r;
-            // temp hack until we can update SourcePosition API.
-            if (sp instanceof com.sun.tools.javadoc.SourcePositionImpl) {
-                FileObject fo = ((com.sun.tools.javadoc.SourcePositionImpl) sp).fileObject();
-                if (fo == null)
-                    return;
-                r = fo.openReader(true);
-            } else {
-                File file = sp.file();
-                if (file == null)
-                    return;
-                r = new FileReader(file);
-            }
-            LineNumberReader reader = new LineNumberReader(r);
-            int lineno = 1;
-            String line;
-            StringBuffer output = new StringBuffer();
-            try {
-                while ((line = reader.readLine()) != null) {
-                    output.append(formatLine(line, configuration.sourcetab, lineno));
-                    lineno++;
-                }
-            } finally {
-                reader.close();
-            }
-            output = addLineNumbers(output.toString());
-            output.insert(0, getHeader(configuration));
-            output.append(getFooter());
-            writeToFile(output.toString(), outputdir, cd.name(), configuration);
-        } catch (Exception e){
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * Write the output to the file.
-     * @param output the string to output.
-     * @param outputDir the directory to output to.
-     * @param className the name of the class that I am converting to HTML.
-     * @param configuration the Doclet configuration to pass notices to.
-     */
-    private static void writeToFile(String output, String outputDir, String className, Configuration configuration) throws IOException {
-        File dir = new File(outputDir);
-        dir.mkdirs();
-        File newFile = new File(dir, className + ".html");
-        configuration.message.notice("doclet.Generating_0", newFile.getPath());
-        FileOutputStream fout = new FileOutputStream(newFile);
-        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fout));
-        bw.write(output);
-        bw.close();
-        fout.close();
-    }
-
-    /**
-     * Given a <code>String</code>, add line numbers.
-     * @param s the text to add line numbers to.
-     *
-     * @return the string buffer with the line numbering for each line.
-     */
-    private static StringBuffer addLineNumbers(String s) {
-        StringBuffer sb = new StringBuffer();
-        StringTokenizer st = new StringTokenizer(s, "\n", true);
-        int lineno = 1;
-        String current;
-        while(st.hasMoreTokens()){
-            current = st.nextToken();
-            sb.append(current.equals("\n") ?
-                    getHTMLLineNo(lineno) + current :
-                    getHTMLLineNo(lineno) + current + st.nextToken());
-            lineno++;
-        }
-        return sb;
-    }
-
-    /**
-     * Get the header.
-     * @param configuration the Doclet configuration
-     * @return the header to the output file
-     */
-    protected static String getHeader(Configuration configuration) {
-        StringBuffer result = new StringBuffer("<HTML lang=\"" + configuration.getLocale().getLanguage() + "\">" + DocletConstants.NL);
-        result.append("<BODY BGCOLOR=\""+ BGCOLOR + "\">" + DocletConstants.NL);
-        result.append("<PRE>" + DocletConstants.NL);
-        return result.toString();
-    }
-
-    /**
-     * Get the footer
-     * @return the footer to the output file
-     */
-    protected static String getFooter() {
-        StringBuffer footer = new StringBuffer();
-        for (int i = 0; i < NUM_BLANK_LINES; i++) {
-            footer.append(DocletConstants.NL);
-        }
-        footer.append("</PRE>" + DocletConstants.NL + "</BODY>" +
-            DocletConstants.NL + "</HTML>" + DocletConstants.NL);
-        return footer.toString();
-    }
-
-    /**
-     * Get the HTML for the lines.
-     * @param lineno The line number
-     * @return the HTML code for the line
-     */
-    protected static String getHTMLLineNo(int lineno) {
-        StringBuffer result = new StringBuffer("<FONT color=\"" + LINE_NO_COLOR
-            + "\">");
-        if (lineno < 10) {
-            result.append("00" + ((new Integer(lineno)).toString()));
-        } else if (lineno < 100) {
-            result.append("0" + ((new Integer(lineno)).toString()));
-        } else {
-            result.append((new Integer(lineno)).toString());
-        }
-        result.append("</FONT>    ");
-        return result.toString();
-    }
-
-    /**
-     * Format a given line of source. <br>
-     * Note:  In the future, we will add special colors for constructs in the
-     * language.
-     * @param line the string to format.
-     * @param tabLength the number of spaces for each tab.
-     * @param currentLineNo the current number.
-     */
-    protected static String formatLine(String line, int tabLength, int currentLineNo) {
-        if (line == null) {
-            return null;
-        }
-        StringBuffer lineBuffer = new StringBuffer(Util.escapeHtmlChars(line));
-        //Insert an anchor for the line
-        lineBuffer.append("<a name=\"line." + Integer.toString(currentLineNo) + "\"></a>");
-        lineBuffer.append(DocletConstants.NL);
-        Util.replaceTabs(tabLength, lineBuffer);
-        return lineBuffer.toString();
-    }
-
-    /**
-     * Given an array of <code>Doc</code>s, add to the given <code>HashMap</code> the
-     * line numbers and anchors that should be inserted in the output at those lines.
-     * @param docs the array of <code>Doc</code>s to add anchors for.
-     * @param hash the <code>HashMap</code> to add to.
-     */
-    protected static void addToHash(Doc[] docs, HashMap<Integer,String> hash) {
-        if(docs == null) {
-            return;
-        }
-        for(int i = 0; i < docs.length; i++) {
-            hash.put(docs[i].position().line(), getAnchor(docs[i]));
-        }
-    }
-
-    /**
-     * Given a <code>Doc</code>, return an anchor for it.
-     * @param d the <code>Doc</code> to check.
-     * @return an anchor of the form &lt;a name="my_name">&lt;/a>
-     */
-    protected static String getAnchor(Doc d) {
-        return "    <a name=\"" + getAnchorName(d) + "\"></a>";
-    }
-
-    /**
-     * Given a <code>Doc</code>, return an anchor name for it.
-     * @param d the <code>Doc</code> to check.
-     * @return the name of the anchor.
-     */
-    public static String getAnchorName(Doc d) {
-        return "line." + d.position().line();
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/Util.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/Util.java	Wed Dec 01 11:02:38 2010 -0800
@@ -51,6 +51,11 @@
     {{"&", "&amp;"}, {"<", "&lt;"}, {">", "&gt;"}};
 
     /**
+     * Name of the resource directory.
+     */
+    public static final String RESOURCESDIR = "resources";
+
+    /**
      * Return array of class members whose documentation is to be generated.
      * If the member is deprecated do not include such a member in the
      * returned array.
@@ -236,8 +241,8 @@
         String destname = configuration.docFileDestDirName;
         File srcdir = new File(path + dir);
         if (destname.length() > 0 && !destname.endsWith(
-               DirectoryManager.URL_FILE_SEPERATOR)) {
-            destname += DirectoryManager.URL_FILE_SEPERATOR;
+               DirectoryManager.URL_FILE_SEPARATOR)) {
+            destname += DirectoryManager.URL_FILE_SEPARATOR;
         }
         String dest = destname + dir;
         try {
@@ -263,7 +268,7 @@
                         && ! configuration.shouldExcludeDocFileDir(
                           srcfile.getName())){
                         copyDocFiles(configuration, path, dir +
-                                    DirectoryManager.URL_FILE_SEPERATOR + srcfile.getName(),
+                                    DirectoryManager.URL_FILE_SEPARATOR + srcfile.getName(),
                                 overwrite);
                     }
                 }
@@ -322,25 +327,38 @@
      *                       it already exists.
      */
     public static void copyResourceFile(Configuration configuration,
-            String resourcefile,
-            boolean overwrite) {
-        String destdir = configuration.destDirName;
-        String destresourcesdir = destdir + "resources";
-        DirectoryManager.createDirectory(configuration, destresourcesdir);
-        File destfile = new File(destresourcesdir, resourcefile);
+            String resourcefile, boolean overwrite) {
+        String destresourcesdir = configuration.destDirName + RESOURCESDIR;
+        copyFile(configuration, resourcefile, RESOURCESDIR, destresourcesdir,
+                overwrite);
+    }
+
+    /**
+     * Copy a file from a source directory to a destination directory
+     * (if it is not there already). If <code>overwrite</code> is true and
+     * the destination file already exists, overwrite it.
+     *
+     * @param configuration Holds the error message
+     * @param file The name of the file to copy
+     * @param source The source directory
+     * @param destination The destination directory where the file needs to be copied
+     * @param overwrite A flag to indicate whether the file in the
+     *                  destination directory will be overwritten if
+     *                  it already exists.
+     */
+    public static void copyFile(Configuration configuration, String file, String source,
+            String destination, boolean overwrite) {
+        DirectoryManager.createDirectory(configuration, destination);
+        File destfile = new File(destination, file);
         if(destfile.exists() && (! overwrite)) return;
         try {
-
             InputStream in = Configuration.class.getResourceAsStream(
-                "resources/" + resourcefile);
-
+                source + DirectoryManager.URL_FILE_SEPARATOR + file);
             if(in==null) return;
-
             OutputStream out = new FileOutputStream(destfile);
             byte[] buf = new byte[2048];
             int n;
             while((n = in.read(buf))>0) out.write(buf,0,n);
-
             in.close();
             out.close();
         } catch(Throwable t) {}
@@ -357,12 +375,12 @@
         try{
             String pkgPath = DirectoryManager.getDirectoryPath(pkgDoc);
             String completePath = new SourcePath(configuration.sourcepath).
-                getDirectory(pkgPath) + DirectoryManager.URL_FILE_SEPERATOR;
+                getDirectory(pkgPath) + DirectoryManager.URL_FILE_SEPARATOR;
             //Make sure that both paths are using the same seperators.
             completePath = Util.replaceText(completePath, File.separator,
-                    DirectoryManager.URL_FILE_SEPERATOR);
+                    DirectoryManager.URL_FILE_SEPARATOR);
             pkgPath = Util.replaceText(pkgPath, File.separator,
-                    DirectoryManager.URL_FILE_SEPERATOR);
+                    DirectoryManager.URL_FILE_SEPARATOR);
             return completePath.substring(0, completePath.indexOf(pkgPath));
         } catch (Exception e){
             return "";
@@ -572,6 +590,24 @@
     }
 
     /**
+     * Given a string, strips all html characters and
+     * return the result.
+     *
+     * @param rawString The string to check.
+     * @return the original string with all of the HTML characters
+     * stripped.
+     *
+     */
+    public static String stripHtml(String rawString) {
+        // remove HTML tags
+        rawString = rawString.replaceAll("\\<.*?>", " ");
+        // consolidate multiple spaces between a word to a single space
+        rawString = rawString.replaceAll("\\b\\s{2,}\\b", " ");
+        // remove extra whitespaces
+        return rawString.trim();
+    }
+
+    /**
      * Create the directory path for the file to be generated, construct
      * FileOutputStream and OutputStreamWriter depending upon docencoding.
      *
--- a/langtools/test/com/sun/javadoc/AccessAsciiArt/AccessAsciiArt.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/AccessAsciiArt/AccessAsciiArt.java	Wed Dec 01 11:02:38 2010 -0800
@@ -84,17 +84,17 @@
 
             // Test the top line of the class tree
             {
-"  <IMG SRC=\"../../resources/inherit.gif\" ALT=\"extended by \"><A HREF=\"../../p1/C.html\" title=\"class in p1\">p1.C</A>",
+"<li><a href=\"../../p1/C.html\" title=\"class in p1\">p1.C</a></li>",
                      TMPDEST_DIR1 + "p1" + FS + "subpkg" + FS + "SSC.html" },
 
             // Test the second line of the class tree
             {
-"      <IMG SRC=\"../../resources/inherit.gif\" ALT=\"extended by \"><A HREF=\"../../p1/SC.html\" title=\"class in p1\">p1.SC</A>",
+"<li><a href=\"../../p1/SC.html\" title=\"class in p1\">p1.SC</a></li>",
                      TMPDEST_DIR1 + "p1" + FS + "subpkg" + FS + "SSC.html" },
 
             // Test the third line of the class tree
             {
-"          <IMG SRC=\"../../resources/inherit.gif\" ALT=\"extended by \"><STRONG>p1.subpkg.SSC</STRONG>",
+"<li>p1.subpkg.SSC</li>",
                      TMPDEST_DIR1 + "p1" + FS + "subpkg" + FS +"SSC.html" },
 
         };
--- a/langtools/test/com/sun/javadoc/AccessH1/AccessH1.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/AccessH1/AccessH1.java	Wed Dec 01 11:02:38 2010 -0800
@@ -83,18 +83,19 @@
      * NOTE: The standard doclet uses the same separator "\n" for all OS's
      */
     private static final String[][] testArray = {
-
-            // Test the style sheet
-            {
-               "h1 { font-size: 145% }",
-                     TMPDEST_DIR1 + "stylesheet.css"              },
-
-            // Test the doc title in the overview page
-            {
-               "<H1>" + LS + "Document Title" + LS + "</H1>",
-                          TMPDEST_DIR1 + "overview-summary.html"  }
-
-        };
+        // Test the style sheet
+        {
+            ".header h1.title {" + LS + "    font-size:1.4em;" + LS +
+            "    text-align:center;" + LS + "    margin:0;" + LS +
+            "}",
+            TMPDEST_DIR1 + "stylesheet.css"
+        },
+        // Test the doc title in the overview page
+        {
+            "<h1 class=\"title\">Document Title</h1>",
+            TMPDEST_DIR1 + "overview-summary.html"
+        }
+    };
 
     public static void runTestsOnHTML(String[][] testArray) {
 
--- a/langtools/test/com/sun/javadoc/AccessSkipNav/AccessSkipNav.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/AccessSkipNav/AccessSkipNav.java	Wed Dec 01 11:02:38 2010 -0800
@@ -46,6 +46,7 @@
     private static final String BUGNAME = "AccessSkipNav";
     private static final String FS = System.getProperty("file.separator");
     private static final String PS = System.getProperty("path.separator");
+    private static final String LS = System.getProperty("line.separator");
     private static final String TMPDEST_DIR1 = "." + FS + "docs1" + FS;
     private static final String TMPDEST_DIR2 = "." + FS + "docs2" + FS;
 
@@ -84,20 +85,22 @@
 
             // Testing only for the presence of the <a href> and <a name>
 
-            // Top navbar <A HREF>
-            { "<A HREF=\"#skip-navbar_top\" title=\"Skip navigation links\"></A>",
+            // Top navbar <a href>
+            { "<a href=\"#skip-navbar_top\" title=\"Skip navigation links\"></a>",
                      TMPDEST_DIR1 + "p1" + FS + "C1.html" },
 
-            // Top navbar <A NAME>
-            { "<A NAME=\"skip-navbar_top\"></A>",
+            // Top navbar <a name>
+            { "<a name=\"skip-navbar_top\">" + LS +
+                      "<!--   -->" + LS + "</a>",
                      TMPDEST_DIR1 + "p1" + FS + "C1.html" },
 
-            // Bottom navbar <A HREF>
-            { "<A HREF=\"#skip-navbar_bottom\" title=\"Skip navigation links\"></A>",
+            // Bottom navbar <a href>
+            { "<a href=\"#skip-navbar_bottom\" title=\"Skip navigation links\"></a>",
                      TMPDEST_DIR1 + "p1" + FS + "C1.html" },
 
-            // Bottom navbar <A NAME>
-            { "<A NAME=\"skip-navbar_bottom\"></A>",
+            // Bottom navbar <a name>
+            { "<a name=\"skip-navbar_bottom\">" + LS +
+                      "<!--   -->" + LS + "</a>",
                      TMPDEST_DIR1 + "p1" + FS + "C1.html" }
         };
 
--- a/langtools/test/com/sun/javadoc/AccessSummary/AccessSummary.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/AccessSummary/AccessSummary.java	Wed Dec 01 11:02:38 2010 -0800
@@ -24,7 +24,7 @@
 /*
  * @test
  * @bug      4637604 4775148
- * @summary  Test the tables for summary=""
+ * @summary  Test the tables for summary attribute
  * @author   dkramer
  * @library  ../lib/
  * @build    JavadocTester
@@ -44,15 +44,15 @@
 
         // Test that the summary attribute appears
         { OUTPUT_DIR1 + "overview-summary.html",
-                 "SUMMARY=\"\"" },
+                 "summary=\"Packages table, listing packages, and an explanation\"" },
 
         // Test that the summary attribute appears
         { OUTPUT_DIR1 + "p1" + FS + "C1.html",
-                 "SUMMARY=\"\"" },
+                 "summary=\"Constructor Summary table, listing constructors, and an explanation\"" },
 
         // Test that the summary attribute appears
         { OUTPUT_DIR1 + "constant-values.html",
-                 "SUMMARY=\"\"" }
+                 "summary=\"Constant Field Values table, listing constant fields, and values\"" }
     };
 
     // First test with -header only
--- a/langtools/test/com/sun/javadoc/AuthorDD/AuthorDD.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/AuthorDD/AuthorDD.java	Wed Dec 01 11:02:38 2010 -0800
@@ -86,12 +86,12 @@
 
              // Test single @since tag:
 
-            { "<DT><STRONG>Since:</STRONG></DT>"+NL+"  <DD>JDK 1.0</DD>",
+            { "<dt><span class=\"strong\">Since:</span></dt>"+NL+"  <dd>JDK 1.0</dd>",
                                   BUGID + FS + "p1" + FS + "C1.html" },
 
             // Test multiple @author tags:
 
-            { "<DT><STRONG>Author:</STRONG></DT>"+NL+"  <DD>Doug Kramer, Jamie, Neal</DD>",
+            { "<dt><span class=\"strong\">Author:</span></dt>"+NL+"  <dd>Doug Kramer, Jamie, Neal</dd>",
                                   BUGID + FS + "p1" + FS + "C1.html" },
 
         };
--- a/langtools/test/com/sun/javadoc/JavascriptWinTitle/JavascriptWinTitle.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/JavascriptWinTitle/JavascriptWinTitle.java	Wed Dec 01 11:02:38 2010 -0800
@@ -90,44 +90,34 @@
     private static final String[][] testArray = {
 
             // Test the javascript "type" attribute is present:
-            {  "<SCRIPT type=\"text/javascript\">",
+            {  "<script type=\"text/javascript\">",
                      TMPDEST_DIR1 + "overview-summary.html"  },
 
-            // Test onload is present:
-            {  "onload=\"windowTitle();\"",
+            // Test onload is absent:
+            {  "<body>",
                      TMPDEST_DIR1 + "overview-summary.html"  },
 
             // Test onload is present:
-            {  "onload=\"windowTitle();\"",
+            {  "<body>",
                      TMPDEST_DIR1 + FS + "p1" + FS + "package-summary.html"  },
 
-            // Test onload is present:
-            {  "onload=\"windowTitle();\"",
-                     TMPDEST_DIR1 + FS + "p1" + FS + "C.html"  },
-
             // Test that "onload" is not present in BODY tag:
-            {   "<BODY BGCOLOR=\"white\">",
+            {   "<body>",
                      TMPDEST_DIR1 + "overview-frame.html"  },
 
             // Test that "onload" is not present in BODY tag:
-            {   "<BODY BGCOLOR=\"white\">",
+            {   "<body>",
                      TMPDEST_DIR1 + "allclasses-frame.html"  },
 
             // Test that "onload" is not present in BODY tag:
-            {   "<BODY BGCOLOR=\"white\">",
+            {   "<body>",
                      TMPDEST_DIR1 + FS + "p1" + FS + "package-frame.html"  },
 
             // Test that win title javascript is followed by NOSCRIPT code.
-            {"<SCRIPT type=\"text/javascript\">" + LS +
-                    "function windowTitle()" + LS +
-                    "{" + LS +
-                    "    if (location.href.indexOf('is-external=true') == -1) {" + LS +
-                    "        parent.document.title=\"C (Window Title)\";" + LS +
-                    "    }" + LS +
-                    "}" + LS +
-             "</SCRIPT>" + LS +
-             "<NOSCRIPT>" + LS +
-             "</NOSCRIPT>",
+            {"<script type=\"text/javascript\"><!--" + LS +
+                     "    if (location.href.indexOf('is-external=true') == -1) {" + LS +
+                     "        parent.document.title=\"C (Window Title)\";" + LS +
+                     "    }" + LS + "//-->" + LS + "</script>",
              TMPDEST_DIR1 + FS + "p1" + FS + "C.html"
             }
 
--- a/langtools/test/com/sun/javadoc/MetaTag/MetaTag.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/MetaTag/MetaTag.java	Wed Dec 01 11:02:38 2010 -0800
@@ -67,31 +67,31 @@
     private static final String[][] TEST = {
 
         { OUTPUT_DIR + FS + "p1" + FS + "C1.html",
-           "<META NAME=\"keywords\" CONTENT=\"p1.C1 class\">" },
+           "<meta name=\"keywords\" content=\"p1.C1 class\">" },
 
         { OUTPUT_DIR + FS + "p1" + FS + "C1.html",
-           "<META NAME=\"keywords\" CONTENT=\"field1\">" },
+           "<meta name=\"keywords\" content=\"field1\">" },
 
         { OUTPUT_DIR + FS + "p1" + FS + "C1.html",
-           "<META NAME=\"keywords\" CONTENT=\"field2\">" },
+           "<meta name=\"keywords\" content=\"field2\">" },
 
         { OUTPUT_DIR + FS + "p1" + FS + "C1.html",
-           "<META NAME=\"keywords\" CONTENT=\"method1()\">" },
+           "<meta name=\"keywords\" content=\"method1()\">" },
 
         { OUTPUT_DIR + FS + "p1" + FS + "C1.html",
-           "<META NAME=\"keywords\" CONTENT=\"method2()\">" },
+           "<meta name=\"keywords\" content=\"method2()\">" },
 
         { OUTPUT_DIR + FS + "p1" + FS + "package-summary.html",
-           "<META NAME=\"keywords\" CONTENT=\"p1 package\">" },
+           "<meta name=\"keywords\" content=\"p1 package\">" },
 
         { OUTPUT_DIR + FS + "overview-summary.html",
-           "<META NAME=\"keywords\" CONTENT=\"Overview, Sample Packages\">" },
+           "<meta name=\"keywords\" content=\"Overview, Sample Packages\">" },
 
         //NOTE: Hopefully, this regression test is not run at midnight.  If the output
         //was generated yesterday and this test is run today, the test will fail.
         {OUTPUT_DIR + FS + "overview-summary.html",
-           "<META NAME=\"date\" "
-                            + "CONTENT=\"" + m_dateFormat.format(new Date()) + "\">"},
+           "<meta name=\"date\" "
+                            + "content=\"" + m_dateFormat.format(new Date()) + "\">"},
     };
 
     private static final String[][] NEGATED_TEST = NO_TEST;
--- a/langtools/test/com/sun/javadoc/ValidHtml/ValidHtml.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/ValidHtml/ValidHtml.java	Wed Dec 01 11:02:38 2010 -0800
@@ -33,12 +33,10 @@
  * @run main ValidHtml
  */
 
-
 import com.sun.javadoc.*;
 import java.util.*;
 import java.io.*;
 
-
 /**
  * Runs javadoc and runs regression tests on the resulting HTML.
  * It reads each file, complete with newlines, into a string to easily
@@ -66,13 +64,14 @@
         String srcdir = System.getProperty("test.src", ".");
 
         // Test for all cases except the split index page
-        runJavadoc(new String[] {"-d", TMPDEST_DIR1,
-                                 "-doctitle", "Document Title",
-                                 "-windowtitle", "Window Title",
-                                 "-use",
-                                 "-overview", (srcdir + FS + "overview.html"),
-                                 "-sourcepath", srcdir,
-                                 "p1", "p2"});
+        runJavadoc(new String[]{"-d", TMPDEST_DIR1,
+                    "-doctitle", "Document Title",
+                    "-windowtitle", "Window Title",
+                    "-use",
+                    "-overview", (srcdir + FS + "overview.html"),
+                    "-sourcepath", srcdir,
+                    "p1", "p2"
+                });
         runTestsOnHTML(testArray);
 
         printSummary();
@@ -90,53 +89,52 @@
      * NOTE: The standard doclet uses the same separator "\n" for all OS's
      */
     private static final String[][] testArray = {
-
-            // Test the proper DOCTYPE element is present:
-            {
-"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\" \"http://www.w3.org/TR/html4/frameset.dtd\">",
-                     TMPDEST_DIR1 + "index.html"  },
-
-            // Test the proper DOCTYPE element is present:
-            {
-"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
-                     TMPDEST_DIR1 + "overview-summary.html"  },
-
-            // Test the proper DOCTYPE element is present:
-            {
-"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
-                     TMPDEST_DIR1 + "p1" + FS + "package-summary.html"  },
-
-            // Test the proper DOCTYPE element is present:
-            {
-"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
-                     TMPDEST_DIR1 + "p1" + FS + "C.html"  },
-
-            // Test the proper DOCTYPE element is present:
-            {
-"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
-                     TMPDEST_DIR1 + "overview-frame.html"  },
-
-            // Test the proper DOCTYPE element is present:
-            {
-"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
-                     TMPDEST_DIR1 + "allclasses-frame.html"  },
-
-            // Test the proper DOCTYPE element is present:
-            {
-"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
-                     TMPDEST_DIR1 + "p1" + FS + "package-frame.html"  },
-
-            // Test that <NOFRAMES> is inside <FRAMESET> element:
-            {
-"</NOFRAMES>" + LS + "</FRAMESET>",
-                     TMPDEST_DIR1 + "index.html"  },
-
-            // Test the table elements are in the correct order:
-            {
-"</FONT></TD>" + LS + "</TR>",
-                     TMPDEST_DIR1 + FS + "p1" + FS + "package-use.html"  }
-
-        };
+        // Test the proper DOCTYPE element is present:
+        {
+            "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\" \"http://www.w3.org/TR/html4/frameset.dtd\">",
+            TMPDEST_DIR1 + "index.html"
+        },
+        // Test the proper DOCTYPE element is present:
+        {
+            "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
+            TMPDEST_DIR1 + "overview-summary.html"
+        },
+        // Test the proper DOCTYPE element is present:
+        {
+            "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
+            TMPDEST_DIR1 + "p1" + FS + "package-summary.html"
+        },
+        // Test the proper DOCTYPE element is present:
+        {
+            "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
+            TMPDEST_DIR1 + "p1" + FS + "C.html"
+        },
+        // Test the proper DOCTYPE element is present:
+        {
+            "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
+            TMPDEST_DIR1 + "overview-frame.html"
+        },
+        // Test the proper DOCTYPE element is present:
+        {
+            "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
+            TMPDEST_DIR1 + "allclasses-frame.html"
+        },
+        // Test the proper DOCTYPE element is present:
+        {
+            "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
+            TMPDEST_DIR1 + "p1" + FS + "package-frame.html"
+        },
+        // Test that <NOFRAMES> is inside <FRAMESET> element:
+        {
+            "</noframes>" + LS + "</frameset>",
+            TMPDEST_DIR1 + "index.html"
+        },
+        // Test the table elements are in the correct order:
+        {
+            "</td>" + LS + "</tr>",
+            TMPDEST_DIR1 + FS + "p1" + FS + "package-use.html"
+        }
+    };
 
     public static void runTestsOnHTML(String[][] testArray) {
 
@@ -152,10 +150,7 @@
 
             // Find string in file's contents
             if (findString(fileString, stringToFind) == -1) {
-                System.out.println("\nSub-test " + (subtestNum)
-                    + " for bug " + BUGID + " (" + BUGNAME + ") FAILED\n"
-                    + "when searching for:\n"
-                    + stringToFind);
+                System.out.println("\nSub-test " + (subtestNum) + " for bug " + BUGID + " (" + BUGNAME + ") FAILED\n" + "when searching for:\n" + stringToFind);
             } else {
                 numSubtestsPassed += 1;
                 System.out.println("\nSub-test " + (subtestNum) + " passed:\n" + stringToFind);
@@ -164,11 +159,10 @@
     }
 
     public static void printSummary() {
-        if ( numSubtestsPassed == subtestNum ) {
+        if (numSubtestsPassed == subtestNum) {
             System.out.println("\nAll " + numSubtestsPassed + " subtests passed");
         } else {
-            throw new Error("\n" + (subtestNum - numSubtestsPassed) + " of " + (subtestNum)
-                             + " subtests failed for bug " + BUGID + " (" + BUGNAME + ")\n");
+            throw new Error("\n" + (subtestNum - numSubtestsPassed) + " of " + (subtestNum) + " subtests failed for bug " + BUGID + " (" + BUGNAME + ")\n");
         }
     }
 
@@ -176,16 +170,16 @@
     public static String readFileToString(String filename) {
         try {
             File file = new File(filename);
-            if ( !file.exists() ) {
+            if (!file.exists()) {
                 System.out.println("\nFILE DOES NOT EXIST: " + filename);
             }
             BufferedReader in = new BufferedReader(new FileReader(file));
 
             // Create an array of characters the size of the file
-            char[] allChars = new char[(int)file.length()];
+            char[] allChars = new char[(int) file.length()];
 
             // Read the characters into the allChars array
-            in.read(allChars, 0, (int)file.length());
+            in.read(allChars, 0, (int) file.length());
             in.close();
 
             // Convert to a string
--- a/langtools/test/com/sun/javadoc/VersionNumber/VersionNumber.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/VersionNumber/VersionNumber.java	Wed Dec 01 11:02:38 2010 -0800
@@ -84,7 +84,7 @@
 
             // Test the proper DOCTYPE element is present:
             {
-                 "<!-- Generated by javadoc (build",
+                 "<!-- Generated by javadoc (version",
                      TMPDEST_DIR1 + "p1" + FS + "C.html"  },
 
         };
--- a/langtools/test/com/sun/javadoc/WindowTitles/WindowTitles.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/WindowTitles/WindowTitles.java	Wed Dec 01 11:02:38 2010 -0800
@@ -94,52 +94,52 @@
      */
     private static final String[][] testArray = {
 
-            { "<TITLE>" + LS + "Overview" + LS + "</TITLE>",
+            { "<title>Overview</title>",
                     TMPDIR_STRING1 + "overview-summary.html"                  },
 
-            { "<TITLE>" + LS + "Class Hierarchy" + LS + "</TITLE>",
+            { "<title>Class Hierarchy</title>",
                     TMPDIR_STRING1 + "overview-tree.html"                     },
 
-            { "<TITLE>" + LS + "Overview List" + LS + "</TITLE>",
+            { "<title>Overview List</title>",
                     TMPDIR_STRING1 + "overview-frame.html"                    },
 
-            { "<TITLE>" + LS + "p1" + LS + "</TITLE>",
+            { "<title>p1</title>",
                     TMPDIR_STRING1 + "p1" + FS + "package-summary.html"       },
 
-            { "<TITLE>" + LS + "p1" + LS + "</TITLE>",
+            { "<title>p1</title>",
                     TMPDIR_STRING1 + "p1" + FS + "package-frame.html"         },
 
-            { "<TITLE>" + LS + "p1 Class Hierarchy" + LS + "</TITLE>",
+            { "<title>p1 Class Hierarchy</title>",
                     TMPDIR_STRING1 + "p1" + FS + "package-tree.html"          },
 
-            { "<TITLE>" + LS + "Uses of Package p1" + LS + "</TITLE>",
+            { "<title>Uses of Package p1</title>",
                     TMPDIR_STRING1 + "p1" + FS + "package-use.html"           },
 
-            { "<TITLE>" + LS + "C1" + LS + "</TITLE>",
+            { "<title>C1</title>",
                     TMPDIR_STRING1 + "p1" + FS + "C1.html"                    },
 
-            { "<TITLE>" + LS + "All Classes" + LS + "</TITLE>",
+            { "<title>All Classes</title>",
                     TMPDIR_STRING1 + "allclasses-frame.html"                  },
 
-            { "<TITLE>" + LS + "All Classes" + LS + "</TITLE>",
+            { "<title>All Classes</title>",
                     TMPDIR_STRING1 + "allclasses-noframe.html"                },
 
-            { "<TITLE>" + LS + "Constant Field Values" + LS + "</TITLE>",
+            { "<title>Constant Field Values</title>",
                     TMPDIR_STRING1 + "constant-values.html"                   },
 
-            { "<TITLE>" + LS + "Deprecated List" + LS + "</TITLE>",
+            { "<title>Deprecated List</title>",
                     TMPDIR_STRING1 + "deprecated-list.html"                   },
 
-            { "<TITLE>" + LS + "Serialized Form" + LS + "</TITLE>",
+            { "<title>Serialized Form</title>",
                     TMPDIR_STRING1 + "serialized-form.html"                   },
 
-            { "<TITLE>" + LS + "API Help" + LS + "</TITLE>",
+            { "<title>API Help</title>",
                     TMPDIR_STRING1 + "help-doc.html"                          },
 
-            { "<TITLE>" + LS + "Index" + LS + "</TITLE>",
+            { "<title>Index</title>",
                     TMPDIR_STRING1 + "index-all.html"                         },
 
-            { "<TITLE>" + LS + "Uses of Class p1.C1" + LS + "</TITLE>",
+            { "<title>Uses of Class p1.C1</title>",
                     TMPDIR_STRING1 + "p1" + FS + "class-use" + FS + "C1.html" },
         };
 
@@ -147,7 +147,7 @@
      * Assign value for [ stringToFind, filename ] for split index page
      */
     private static final String[][] testSplitIndexArray = {
-            { "<TITLE>" + LS + "C-Index" + LS + "</TITLE>",
+            { "<title>C-Index</title>",
                     TMPDIR_STRING2 + "index-files" + FS + "index-1.html"       },
         };
 
--- a/langtools/test/com/sun/javadoc/constantValues/TestConstantValuesDriver.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/constantValues/TestConstantValuesDriver.java	Wed Dec 01 11:02:38 2010 -0800
@@ -51,7 +51,7 @@
             tests[i][1] = "TEST"+(i+1)+"PASSES";
         }
         tests[tests.length-1][0] = BUG_ID + FS + "constant-values.html";
-        tests[tests.length-1][1] = "<CODE>\"&lt;Hello World&gt;\"</CODE>";
+        tests[tests.length-1][1] = "<code>\"&lt;Hello World&gt;\"</code>";
         TestConstantValuesDriver tester = new TestConstantValuesDriver();
         run(tester, ARGS, tests, NO_TEST);
         tester.printSummary();
--- a/langtools/test/com/sun/javadoc/testClassCrossReferences/TestClassCrossReferences.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testClassCrossReferences/TestClassCrossReferences.java	Wed Dec 01 11:02:38 2010 -0800
@@ -37,18 +37,20 @@
     private static final String BUG_ID = "4652655-4857717";
     private static final String[][] TEST = {
         {BUG_ID + FS + "C.html",
-            "<A HREF=\"http://java.sun.com/j2se/1.4/docs/api/java/math/package-summary.html?is-external=true\"><CODE>Link to math package</CODE></A>"},
+            "<a href=\"http://java.sun.com/j2se/1.4/docs/api/java/math/package-summary.html?is-external=true\"><code>Link to math package</code></a>"},
         {BUG_ID + FS + "C.html",
-            "<A HREF=\"http://java.sun.com/j2se/1.4/docs/api/javax/swing/text/AbstractDocument.AttributeContext.html?is-external=true\" " +
-            "title=\"class or interface in javax.swing.text\"><CODE>Link to AttributeContext innerclass</CODE></A>"},
+            "<a href=\"http://java.sun.com/j2se/1.4/docs/api/javax/swing/text/AbstractDocument.AttributeContext.html?is-external=true\" " +
+            "title=\"class or interface in javax.swing.text\"><code>Link to AttributeContext innerclass</code></a>"},
         {BUG_ID + FS + "C.html",
-            "<A HREF=\"http://java.sun.com/j2se/1.4/docs/api/java/math/BigDecimal.html?is-external=true\" " +
-                "title=\"class or interface in java.math\"><CODE>Link to external class BigDecimal</CODE></A>"},
+            "<a href=\"http://java.sun.com/j2se/1.4/docs/api/java/math/BigDecimal.html?is-external=true\" " +
+                "title=\"class or interface in java.math\"><code>Link to external class BigDecimal</code></a>"},
         {BUG_ID + FS + "C.html",
-            "<A HREF=\"http://java.sun.com/j2se/1.4/docs/api/java/math/BigInteger.html?is-external=true#gcd(java.math.BigInteger)\" " +
-                "title=\"class or interface in java.math\"><CODE>Link to external member gcd</CODE></A>"},
+            "<a href=\"http://java.sun.com/j2se/1.4/docs/api/java/math/BigInteger.html?is-external=true#gcd(java.math.BigInteger)\" " +
+                "title=\"class or interface in java.math\"><code>Link to external member gcd</code></a>"},
         {BUG_ID + FS + "C.html",
-            "<STRONG>Overrides:</STRONG></DT><DD><CODE>toString</CODE> in class <CODE>java.lang.Object</CODE>"}
+            "<dl>" + NL + "<dt><strong>Overrides:</strong></dt>" + NL +
+            "<dd><code>toString</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>" + NL +
+            "</dl>"}
     };
     private static final String[][] NEGATED_TEST = NO_TEST;
     private static final String[] ARGS =
--- a/langtools/test/com/sun/javadoc/testClassTree/TestClassTree.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testClassTree/TestClassTree.java	Wed Dec 01 11:02:38 2010 -0800
@@ -48,32 +48,29 @@
     //Input for string search tests.
     private static final String[][] TEST = {
         {BUG_ID + FS + "pkg" + FS + "package-tree.html",
-            "<LI TYPE=\"circle\">pkg.<A HREF=\"../pkg/ParentClass.html\" " +
-            "title=\"class in pkg\"><STRONG>ParentClass</STRONG></A><UL>"},
-
-        {BUG_ID + FS + "pkg" + FS + "package-tree.html",
-            "Annotation Type Hierarchy" + NL + "</H2>" + NL + "<UL>" + NL +
-            "<LI TYPE=\"circle\">pkg.<A HREF=\"../pkg/AnnotationType.html\" " +
-            "title=\"annotation in pkg\"><STRONG>AnnotationType</STRONG></A> " +
-            "(implements java.lang.annotation.Annotation)" + NL + "</UL>"},
+            "<ul>" + NL + "<li type=\"circle\">pkg.<a href=\"../pkg/ParentClass.html\" " +
+            "title=\"class in pkg\"><span class=\"strong\">ParentClass</span></a>"},
 
         {BUG_ID + FS + "pkg" + FS + "package-tree.html",
-            "<H2>" + NL +
-            "Enum Hierarchy" + NL +
-            "</H2>" + NL +
-            "<UL>" + NL +
-            "<LI TYPE=\"circle\">java.lang.Object<UL>" + NL +
-            "<LI TYPE=\"circle\">java.lang.Enum&lt;E&gt; (implements java.lang.Comparable&lt;T&gt;, java.io.Serializable)" + NL +
-            "<UL>" + NL +
-            "<LI TYPE=\"circle\">pkg.<A HREF=\"../pkg/Coin.html\" title=\"enum in pkg\"><STRONG>Coin</STRONG></A></UL>" + NL +
-            "</UL>" + NL +
-            "</UL>"
+            "<h2 title=\"Annotation Type Hierarchy\">Annotation Type Hierarchy</h2>" + NL +
+            "<ul>" + NL + "<li type=\"circle\">pkg.<a href=\"../pkg/AnnotationType.html\" " +
+            "title=\"annotation in pkg\"><span class=\"strong\">AnnotationType</span></a> " +
+            "(implements java.lang.annotation.Annotation)</li>" + NL + "</ul>"},
+
+        {BUG_ID + FS + "pkg" + FS + "package-tree.html",
+            "<h2 title=\"Enum Hierarchy\">Enum Hierarchy</h2>" + NL + "<ul>" + NL +
+            "<li type=\"circle\">java.lang.Object" + NL + "<ul>" + NL +
+            "<li type=\"circle\">java.lang.Enum&lt;E&gt; (implements java.lang." +
+            "Comparable&lt;T&gt;, java.io.Serializable)" + NL + "<ul>" + NL +
+            "<li type=\"circle\">pkg.<a href=\"../pkg/Coin.html\" " +
+            "title=\"enum in pkg\"><span class=\"strong\">Coin</span></a></li>" + NL +
+            "</ul>" + NL + "</li>" + NL + "</ul>" + NL + "</li>" + NL + "</ul>"
         },
     };
     private static final String[][] NEGATED_TEST = {
         {BUG_ID + FS + "pkg" + FS + "package-tree.html",
-            "<LI TYPE=\"circle\">class pkg.<A HREF=\"../pkg/ParentClass.html\" " +
-            "title=\"class in pkg\"><STRONG>ParentClass</STRONG></A><UL>"}
+            "<li type=\"circle\">class pkg.<a href=\"../pkg/ParentClass.html\" " +
+            "title=\"class in pkg\"><span class=\"strong\">ParentClass</span></a></li>"}
         };
 
     /**
--- a/langtools/test/com/sun/javadoc/testConstructorIndent/TestConstructorIndent.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testConstructorIndent/TestConstructorIndent.java	Wed Dec 01 11:02:38 2010 -0800
@@ -45,10 +45,10 @@
 
     //Input for string search tests.
     private static final String[][] TEST = {
-        {BUG_ID + FS + "C.html", "<DL>" + NL + "<DD>This is just a simple constructor." + NL +
-            "<P>" + NL + "</DD>" + NL + "<DD><DL>" + NL + "<DT><STRONG>Parameters:</STRONG>" +
-            "</DT><DD><CODE>i</CODE> - a param.</DD></DL>" + NL +
-            "</DD>" + NL + "</DL>"
+        {BUG_ID + FS + "C.html", "<div class=\"block\">" +
+                 "This is just a simple constructor.</div>" + NL +
+                 "<dl><dt><span class=\"strong\">Parameters:</span></dt><dd>" +
+                 "<code>i</code> - a param.</dd></dl>"
         }
     };
     private static final String[][] NEGATED_TEST = NO_TEST;
--- a/langtools/test/com/sun/javadoc/testDeprecatedDocs/TestDeprecatedDocs.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testDeprecatedDocs/TestDeprecatedDocs.java	Wed Dec 01 11:02:38 2010 -0800
@@ -76,24 +76,21 @@
         {TARGET_FILE, "pkg.DeprecatedClassByAnnotation.method()"},
         {TARGET_FILE, "pkg.DeprecatedClassByAnnotation.field"},
 
-        {TARGET_FILE2, "<STRONG>Deprecated.</STRONG>" + NL +
-                "<P>" + NL +
-            "<PRE><FONT SIZE=\"-1\">@Deprecated" + NL +
-            "</FONT>public class <STRONG>DeprecatedClassByAnnotation</STRONG>"},
+        {TARGET_FILE2, "<pre>@Deprecated" + NL +
+                 "public class <strong>DeprecatedClassByAnnotation</strong>" + NL +
+                 "extends java.lang.Object</pre>"},
 
-        {TARGET_FILE2, "public int <STRONG>field</STRONG></PRE>" + NL +
-            "<DL>" + NL +
-            "<DD><STRONG>Deprecated.</STRONG>&nbsp;</DD></DL>"},
+        {TARGET_FILE2, "<pre>@Deprecated" + NL +
+                 "public&nbsp;int field</pre>" + NL +
+                 "<div class=\"block\"><span class=\"strong\">Deprecated.</span>&nbsp;</div>"},
 
-        {TARGET_FILE2, "<FONT SIZE=\"-1\">@Deprecated" + NL +
-            "</FONT>public <STRONG>DeprecatedClassByAnnotation</STRONG>()</PRE>" + NL +
-            "<DL>" + NL +
-            "<DD><STRONG>Deprecated.</STRONG>"},
+        {TARGET_FILE2, "<pre>@Deprecated" + NL +
+                 "public&nbsp;DeprecatedClassByAnnotation()</pre>" + NL +
+                 "<div class=\"block\"><span class=\"strong\">Deprecated.</span>&nbsp;</div>"},
 
-        {TARGET_FILE2, "<FONT SIZE=\"-1\">@Deprecated" + NL +
-            "</FONT>public void <STRONG>method</STRONG>()</PRE>" + NL +
-            "<DL>" + NL +
-            "<DD><STRONG>Deprecated.</STRONG>"},
+        {TARGET_FILE2, "<pre>@Deprecated" + NL +
+                 "public&nbsp;void&nbsp;method()</pre>" + NL +
+                 "<div class=\"block\"><span class=\"strong\">Deprecated.</span>&nbsp;</div>"},
     };
 
     private static final String[][] NEGATED_TEST = NO_TEST;
--- a/langtools/test/com/sun/javadoc/testDocRootInlineTag/TestDocRootInlineTag.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testDocRootInlineTag/TestDocRootInlineTag.java	Wed Dec 01 11:02:38 2010 -0800
@@ -39,13 +39,13 @@
     private static final String BUG_ID = "4369014-4851991";
     private static final String[][] TEST = {
         {BUG_ID + FS + "TestDocRootTag.html",
-            "<A HREF=\"http://www.java.sun.com/j2se/1.4/docs/api/java/io/File.html?is-external=true\" " +
-            "title=\"class or interface in java.io\"><CODE>File</CODE></A>"},
+            "<a href=\"http://www.java.sun.com/j2se/1.4/docs/api/java/io/File.html?is-external=true\" " +
+            "title=\"class or interface in java.io\"><code>File</code></a>"},
         {BUG_ID + FS + "TestDocRootTag.html",
             "<a href=\"./glossary.html\">glossary</a>"},
         {BUG_ID + FS + "TestDocRootTag.html",
-            "<A HREF=\"http://www.java.sun.com/j2se/1.4/docs/api/java/io/File.html?is-external=true\" " +
-            "title=\"class or interface in java.io\"><CODE>Second File Link</CODE></A>"},
+            "<a href=\"http://www.java.sun.com/j2se/1.4/docs/api/java/io/File.html?is-external=true\" " +
+            "title=\"class or interface in java.io\"><code>Second File Link</code></a>"},
         {BUG_ID + FS + "TestDocRootTag.html", "The value of @docRoot is \"./\""},
         {BUG_ID + FS + "index-all.html", "My package page is " +
             "<a href=\"./pkg/package-summary.html\">here</a>"}
--- a/langtools/test/com/sun/javadoc/testExternalOverridenMethod/TestExternalOverridenMethod.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testExternalOverridenMethod/TestExternalOverridenMethod.java	Wed Dec 01 11:02:38 2010 -0800
@@ -39,17 +39,17 @@
     private static final String BUG_ID = "4857717";
     private static final String[][] TEST = {
         {BUG_ID + FS + "pkg" + FS + "XReader.html",
-            "<STRONG>Overrides:</STRONG></DT><DD><CODE><A HREF=\"" +
-            "http://java.sun.com/j2se/1.4.1/docs/api/java/io/FilterReader.html?is-external=true#read()\"" +
-                " title=\"class or interface in java.io\">read</A></CODE> in class " +
-                "<CODE><A HREF=\"http://java.sun.com/j2se/1.4.1/docs/api/java/io/FilterReader.html?is-external=true\"" +
-                " title=\"class or interface in java.io\">FilterReader</A>"},
+            "<dt><strong>Overrides:</strong></dt>" + NL +
+            "<dd><code><a href=\"http://java.sun.com/j2se/1.4.1/docs/api/java/io/FilterReader.html?is-external=true#read()\" " +
+            "title=\"class or interface in java.io\">read</a></code>&nbsp;in class&nbsp;<code>" +
+            "<a href=\"http://java.sun.com/j2se/1.4.1/docs/api/java/io/FilterReader.html?is-external=true\" " +
+            "title=\"class or interface in java.io\">FilterReader</a></code></dd>"},
         {BUG_ID + FS + "pkg" + FS + "XReader.html",
-            "<STRONG>Specified by:</STRONG></DT><DD><CODE><A HREF=\"" +
-            "http://java.sun.com/j2se/1.4.1/docs/api/java/io/DataInput.html?is-external=true#readInt()\"" +
-            " title=\"class or interface in java.io\">readInt</A></CODE> in interface " +
-            "<CODE><A HREF=\"http://java.sun.com/j2se/1.4.1/docs/api/java/io/DataInput.html?is-external=true\"" +
-            " title=\"class or interface in java.io\">DataInput</A>"}};
+            "<dt><strong>Specified by:</strong></dt>" + NL +
+            "<dd><code><a href=\"http://java.sun.com/j2se/1.4.1/docs/api/java/io/DataInput.html?is-external=true#readInt()\" " +
+            "title=\"class or interface in java.io\">readInt</a></code>&nbsp;in interface&nbsp;<code>" +
+            "<a href=\"http://java.sun.com/j2se/1.4.1/docs/api/java/io/DataInput.html?is-external=true\" " +
+            "title=\"class or interface in java.io\">DataInput</a></code></dd>"}};
 
 
 
--- a/langtools/test/com/sun/javadoc/testHeadings/TestHeadings.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testHeadings/TestHeadings.java	Wed Dec 01 11:02:38 2010 -0800
@@ -47,80 +47,65 @@
     private static final String[][] TEST = {
         //Package summary
         {BUG_ID + FS + "pkg1" + FS + "package-summary.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Class</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-            " NOWRAP>Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">" +
+            "Class</th>" + NL + "<th class=\"colLast\" scope=\"col\"" +
+            ">Description</th>"
         },
 
         // Class documentation
         {BUG_ID + FS + "pkg1" + FS + "C1.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-            " SCOPE=\"col\" NOWRAP>Field and Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
+            "<th class=\"colLast\" scope=\"col\">Field and Description</th>"
         },
         {BUG_ID + FS + "pkg1" + FS + "C1.html",
-            "<TH ALIGN=\"left\"><STRONG>Methods inherited from class " +            "java.lang.Object</STRONG></TH>"
+            "<h3>Methods inherited from class&nbsp;java.lang.Object</h3>"
         },
 
         // Class use documentation
         {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "C1.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Package</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-            " SCOPE=\"col\" NOWRAP>Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">Package</th>" + NL +
+            "<th class=\"colLast\" scope=\"col\">Description</th>"
         },
         {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "C1.html",
-            "<TH ALIGN=\"left\" COLSPAN=\"2\"><FONT SIZE=\"+2\">" + NL +
-            "Uses of <A HREF=\"../../pkg1/C1.html\" " +            "title=\"class in pkg1\">C1</A> in " +            "<A HREF=\"../../pkg2/package-summary.html\">pkg2</A></FONT></TH>"
-        },
-        {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "C1.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-            " SCOPE=\"col\" NOWRAP>Field and Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
+            "<th class=\"colLast\" scope=\"col\">Field and Description</th>"
         },
 
         // Deprecated
         {BUG_ID + FS + "deprecated-list.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Method and Description</TH>"
+            "<th class=\"colOne\" scope=\"col\">Method and Description</th>"
         },
 
         // Constant values
         {BUG_ID + FS + "constant-values.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-            " SCOPE=\"col\" NOWRAP>Constant Field</TH>" + NL +
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>Value</TH>"
+            "<th class=\"colFirst\" scope=\"col\">" +
+            "Modifier and Type</th>" + NL + "<th scope=\"col\">Constant Field</th>" + NL +
+            "<th class=\"colLast\" scope=\"col\">Value</th>"
         },
 
         // Serialized Form
         {BUG_ID + FS + "serialized-form.html",
-            "<TH ALIGN=\"center\"><FONT SIZE=\"+2\">" + NL +
-            "<STRONG>Package</STRONG> <STRONG>pkg1</STRONG></FONT></TH>"
+            "<h2 title=\"Package\">Package&nbsp;pkg1</h2>"
         },
         {BUG_ID + FS + "serialized-form.html",
-            "<TH ALIGN=\"left\" COLSPAN=\"2\"><FONT SIZE=\"+2\">" + NL +
-            "<STRONG>Class <A HREF=\"pkg1/C1.html\" " +            "title=\"class in pkg1\">pkg1.C1</A> extends java.lang.Object " +            "implements Serializable</STRONG></FONT></TH>"
+            "<h3>Class <a href=\"pkg1/C1.html\" title=\"class in pkg1\">" +
+            "pkg1.C1</a> extends java.lang.Object implements Serializable</h3>"
         },
         {BUG_ID + FS + "serialized-form.html",
-            "<TH ALIGN=\"left\" COLSPAN=\"1\"><FONT SIZE=\"+2\">" + NL +
-            "<STRONG>Serialized Fields</STRONG></FONT></TH>"
+            "<h3>Serialized Fields</h3>"
         },
 
         // Overview Frame
         {BUG_ID + FS + "overview-frame.html",
-            "<TH ALIGN=\"left\" NOWRAP><FONT size=\"+1\" " +            "CLASS=\"FrameTitleFont\">" + NL + "<STRONG>Test Files</STRONG></FONT></TH>"
+            "<h1 title=\"Test Files\" class=\"bar\">Test Files</h1>"
         },
         {BUG_ID + FS + "overview-frame.html",
-            "<TITLE>" + NL +
-            "Overview List" + NL +
-            "</TITLE>"
+            "<title>Overview List</title>"
         },
 
         // Overview Summary
         {BUG_ID + FS + "overview-summary.html",
-            "<TITLE>" + NL +
-            "Overview" + NL +
-            "</TITLE>"
+            "<title>Overview</title>"
         },
 
     };
--- a/langtools/test/com/sun/javadoc/testHelpOption/TestHelpOption.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testHelpOption/TestHelpOption.java	Wed Dec 01 11:02:38 2010 -0800
@@ -91,8 +91,7 @@
 
     private static final String[][] TEST2 = {
         {BUG_ID + FS + "TestHelpOption.html",
-            "<A HREF=\"help-doc.html\"><FONT CLASS=\"NavBarFont1\">" +
-            "<STRONG>Help</STRONG></FONT></A>"
+            "<li><a href=\"help-doc.html\">Help</a></li>"
         },
     };
     private static final String[][] NEGATED_TEST2 = NO_TEST;
--- a/langtools/test/com/sun/javadoc/testHref/TestHref.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testHref/TestHref.java	Wed Dec 01 11:02:38 2010 -0800
@@ -47,37 +47,41 @@
     private static final String[][] TEST = {
         //External link.
         {BUG_ID + FS + "pkg" + FS + "C1.html",
-            "HREF=\"http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html?is-external=true#wait(long, int)\""
+            "href=\"http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html?is-external=true#wait(long, int)\""
         },
         //Member summary table link.
         {BUG_ID + FS + "pkg" + FS + "C1.html",
-            "HREF=\"../pkg/C1.html#method(int, int, java.util.ArrayList)\""
+            "href=\"../pkg/C1.html#method(int, int, java.util.ArrayList)\""
         },
         //Anchor test.
         {BUG_ID + FS + "pkg" + FS + "C1.html",
-            "<A NAME=\"method(int, int, java.util.ArrayList)\"><!-- --></A>"
+            "<a name=\"method(int, int, java.util.ArrayList)\">" + NL +
+            "<!--   -->" + NL +
+            "</a>"
         },
         //Backward compatibility anchor test.
         {BUG_ID + FS + "pkg" + FS + "C1.html",
-            "<A NAME=\"method(int, int, java.util.ArrayList)\"><!-- --></A>"
+            "<a name=\"method(int, int, java.util.ArrayList)\">" + NL +
+            "<!--   -->" + NL +
+            "</a>"
         },
         //{@link} test.
         {BUG_ID + FS + "pkg" + FS + "C2.html",
-            "Link: <A HREF=\"../pkg/C1.html#method(int, int, java.util.ArrayList)\">"
+            "Link: <a href=\"../pkg/C1.html#method(int, int, java.util.ArrayList)\">"
         },
         //@see test.
         {BUG_ID + FS + "pkg" + FS + "C2.html",
-            "See Also:</STRONG></DT><DD><A HREF=\"../pkg/C1.html#method(int, int, java.util.ArrayList)\">"
+            "See Also:</span></dt><dd><a href=\"../pkg/C1.html#method(int, int, java.util.ArrayList)\">"
         },
 
         //Header does not link to the page itself.
         {BUG_ID + FS + "pkg" + FS + "C4.html",
-            "Class C4&lt;E extends C4&lt;E&gt;&gt;</H2>"
+            "Class C4&lt;E extends C4&lt;E&gt;&gt;</h2>"
         },
 
         //Signature does not link to the page itself.
         {BUG_ID + FS + "pkg" + FS + "C4.html",
-            "public abstract class <STRONG>C4&lt;E extends C4&lt;E&gt;&gt;</STRONG>"
+            "public abstract class <strong>C4&lt;E extends C4&lt;E&gt;&gt;</strong>"
         },
     };
     private static final String[][] NEGATED_TEST =
--- a/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java	Wed Dec 01 11:02:38 2010 -0800
@@ -43,152 +43,77 @@
     // Optional Element should print properly nested definition list tags
     // for default value.
     private static final String[][] TEST_ALL = {
-        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<PRE>public class " +
-                 "<STRONG>C1</STRONG>" + NL + "extends " +
-                 "java.lang.Object" + NL + "implements " +
-                 "java.io.Serializable</PRE>"},
-        {BUG_ID + FS + "pkg1" + FS + "C4.html", "<DL>" + NL + "<DD><DL>" + NL +
-                 "<DT><STRONG>Default:</STRONG></DT><DD>true</DD>" + NL +
-                 "</DL>" + NL + "</DD>" + NL + "</DL>"}};
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<pre>public class <strong>C1</strong>" + NL +
+                 "extends java.lang.Object" + NL + "implements java.io.Serializable</pre>"},
+        {BUG_ID + FS + "pkg1" + FS + "C4.html", "<dl>" + NL +
+                 "<dt>Default:</dt>" + NL + "<dd>true</dd>" + NL +
+                 "</dl>"}};
 
     // Test for normal run of javadoc in which various ClassDocs and
     // serialized form should have properly nested definition list tags
     // enclosing comments, tags and deprecated information.
     private static final String[][] TEST_CMNT_DEPR = {
-        {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<DL>" + NL +
-                 "<DT><STRONG>Since:</STRONG></DT>" + NL +
-                 "  <DD>JDK1.0</DD></DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL +
-                 "<DT><STRONG>Since:</STRONG></DT>" + NL +
-                 "  <DD>JDK1.0</DD>" + NL + "<DT><STRONG>See Also:</STRONG></DT><DD>" +
-                 "<A HREF=\"../pkg1/C2.html\" title=\"class in pkg1\">" +
-                 "<CODE>C2</CODE></A>, " + NL +
-                 "<A HREF=\"../serialized-form.html#pkg1.C1\">" +
-                 "Serialized Form</A></DD></DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL +
-                 "<DD><STRONG>Deprecated.</STRONG>&nbsp;<I>As of JDK version" +
-                 " 1.5, replaced by" + NL +
-                 " <A HREF=\"../pkg1/C1.html#setUndecorated(boolean)\">" +
-                 "<CODE>setUndecorated(boolean)</CODE></A>.</I></DD>" +
-                 "<DD>This field indicates whether the C1 is undecorated." + NL +
-                 "<P>" + NL + "</DD>" + NL + "<DD><DL>" + NL + "<DT><STRONG>" +
-                 "Since:</STRONG></DT>" + NL + "  <DD>1.4</DD>" + NL + "<DT>" +
-                 "<STRONG>See Also:</STRONG></DT><DD>" +
-                 "<A HREF=\"../pkg1/C1.html#setUndecorated(boolean)\"><CODE>" +
-                 "setUndecorated(boolean)</CODE></A></DD></DL>" + NL +"</DD>" + NL +
-                 "</DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL +
-                 "<DD>Constructor." + NL + "<P>" + NL + "</DD>" + NL +
-                 "<DD><DL>" + NL + "<DT><STRONG>Parameters:</STRONG></DT><DD>" +
-                 "<CODE>title</CODE> - the title</DD><DD><CODE>test</CODE>" +
-                 " - boolean value</DD>" + NL + "<DT><STRONG>Throws:</STRONG></DT>" + NL +
-                 "<DD><CODE>java.lang.IllegalArgumentException</CODE>" +
-                 " - if the <code>owner</code>'s" + NL + "     <code>GraphicsConfiguration" +
-                 "</code> is not from a screen device</DD>" + NL +"<DD><CODE>" +
-                 "HeadlessException</CODE></DD></DL>" + NL + "</DD>" + NL +
-                 "</DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL +
-                 "<DD>Method comments." + NL + "<P>" + NL +
-                 "</DD>" + NL + "<DD><DL>" + NL + "<DT><STRONG>Parameters:" +
-                 "</STRONG></DT><DD><CODE>undecorated</CODE> - <code>true</code>" +
-                 " if no decorations are" + NL + "         to be enabled;" + NL +
-                 "         <code>false</code> if decorations are to be enabled." +
-                 "</DD><DT><STRONG>Since:</STRONG></DT>" + NL +
-                 "  <DD>1.4</DD>" + NL + "<DT><STRONG>See Also:</STRONG></DT>" +
-                 "<DD><A HREF=\"../pkg1/C1.html#readObject()\"><CODE>" +
-                 "readObject()</CODE></A></DD></DL>" + NL + "</DD>" + NL +
-                 "</DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL + "<DD><DL>" + NL +
-                 "<DT><STRONG>Throws:</STRONG></DT>" + NL + "<DD><CODE>" +
-                 "java.io.IOException</CODE></DD><DT><STRONG>See Also:" +
-                 "</STRONG></DT><DD>" +
-                 "<A HREF=\"../pkg1/C1.html#setUndecorated(boolean)\">" +
-                 "<CODE>setUndecorated(boolean)</CODE></A></DD></DL>" + NL +
-                 "</DD>" + NL + "</DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C1.ModalExclusionType.html", "<DL>" + NL +
-                 "<DD>No modal exclusion." + NL + "<P>" + NL +"</DD>" + NL +
-                 "</DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C2.html", "<DL>" + NL + "<DD>Constructor." + NL +
-                 "<P>" + NL +"</DD>" + NL + "</DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C2.html", "<DL>" + NL + "<DD><STRONG>" +
-                 "Deprecated.</STRONG>&nbsp;<I>As of JDK version 1.5, replaced " +
-                 "by" + NL + " <A HREF=\"../pkg1/C1.html#setUndecorated(boolean)\">" +
-                 "<CODE>setUndecorated(boolean)</CODE></A>.</I>" + NL + "<P>" + NL +
-                 "</DD><DD>Set visible." + NL + "<P>" + NL + "</DD>" +NL +
-                 "<DD><DL>" + NL + "<DT><STRONG>Parameters:</STRONG></DT><DD>" +
-                 "<CODE>set</CODE> - boolean</DD><DT><STRONG>Since:</STRONG></DT>" + NL +
-                 "  <DD>1.4</DD></DL>" + NL + "</DD>" + NL + "</DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C3.html", "<DL>" + NL + "<DD>Comment." + NL +
-                 "<P>" + NL + "</DD>" + NL + "</DL>"},
-        {BUG_ID + FS + "serialized-form.html", "<DL>" + NL + "<DD><DL>" + NL +
-                 "<DT><STRONG>Throws:</STRONG></DT>" + NL + "<DD><CODE>" +
-                 "java.io.IOException</CODE></DD><DT><STRONG>See Also:</STRONG>" +
-                 "</DT><DD><A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-                 "<CODE>C1.setUndecorated(boolean)</CODE></A></DD></DL>" + NL +
-                 "</DD>" + NL + "</DL>"},
-        {BUG_ID + FS + "serialized-form.html", "<DL>" + NL +
-                 "<DD><STRONG>Deprecated.</STRONG>&nbsp;<I>As of JDK version " +
-                 "1.5, replaced by" + NL +
-                 " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-                 "<CODE>setUndecorated(boolean)</CODE></A>.</I></DD>" +
-                 "<DD>This field indicates whether the C1 is undecorated." + NL +
-                 "<P>" + NL + "</DD>" + NL + "<DD>&nbsp;</DD>" + NL +
-                 "<DD><DL>" + NL + "<DT><STRONG>Since:</STRONG></DT>" + NL +
-                 "  <DD>1.4</DD>" + NL + "<DT><STRONG>See Also:</STRONG>" +
-                 "</DT><DD><A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-                 "<CODE>C1.setUndecorated(boolean)</CODE></A></DD></DL>" + NL +
-                 "</DD>" + NL + "</DL>"},
-        {BUG_ID + FS + "serialized-form.html", "<DL>" + NL +
-                 "<DD><STRONG>Deprecated.</STRONG>&nbsp;<I>As of JDK version" +
-                 " 1.5, replaced by" + NL +
-                 " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-                 "<CODE>setUndecorated(boolean)</CODE></A>.</I>" + NL + "<P>" + NL +
-                 "</DD><DD>Reads the object stream." + NL + "<P>" + NL +
-                 "</DD>" + NL + "<DD><DL>" + NL + "<DT><STRONG>Throws:" +
-                 "</STRONG></DT>" + NL + "<DD><CODE><code>" +
-                 "IOException</code></CODE></DD>" + NL +
-                 "<DD><CODE>java.io.IOException</CODE></DD></DL>" + NL +
-                 "</DD>" + NL + "</DL>"},
-        {BUG_ID + FS + "serialized-form.html", "<DL>" + NL +
-                 "<DD><STRONG>Deprecated.</STRONG>&nbsp;</DD><DD>" +
-                 "The name for this class." + NL + "<P>" + NL + "</DD>" + NL +
-                 "<DD>&nbsp;</DD>" + NL + "</DL>"}};
-
-    // Test with -nocomment option. The ClassDocs and serialized form should
-    // have properly nested definition list tags enclosing deprecated
-    // information and should not display definition lists for comments
-    // and tags.
-    private static final String[][] TEST_NOCMNT = {
-        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL + "<DD><STRONG>" +
-                 "Deprecated.</STRONG>&nbsp;<I>As of JDK version 1.5, replaced by" + NL +
-                 " <A HREF=\"../pkg1/C1.html#setUndecorated(boolean)\"><CODE>" +
-                 "setUndecorated(boolean)</CODE></A>.</I></DD></DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C2.html", "<DL>" + NL +
-                 "<DD><STRONG>Deprecated.</STRONG>&nbsp;<I>As of JDK version" +
-                 " 1.5, replaced by" + NL +
-                 " <A HREF=\"../pkg1/C1.html#setUndecorated(boolean)\">" +
-                 "<CODE>setUndecorated(boolean)</CODE></A>.</I>" + NL + "<P>" + NL +
-                 "</DD></DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C5.html", "<PRE>" + NL +
-                 "protected <STRONG>C5</STRONG>()</PRE>" + NL + "<DL>" + NL +
-                 "<DD><STRONG>Deprecated.</STRONG>&nbsp;</DD></DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C5.html", "<PRE>" + NL +
-                 "public void <STRONG>printInfo</STRONG>()</PRE>" + NL + "<DL>" + NL +
-                 "<DD><STRONG>Deprecated.</STRONG>&nbsp;</DD></DL>"},
-        {BUG_ID + FS + "serialized-form.html", "<PRE>" + NL + "boolean <STRONG>" +
-                 "undecorated</STRONG></PRE>" + NL + "<DL>" + NL + "<DD><STRONG>" +
-                 "Deprecated.</STRONG>&nbsp;<I>As of JDK version 1.5, replaced by" + NL +
-                 " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\"><CODE>" +
-                 "setUndecorated(boolean)</CODE></A>.</I></DD></DL>"},
-        {BUG_ID + FS + "serialized-form.html", "<DL>" + NL + "<DD><STRONG>" +
-                 "Deprecated.</STRONG>&nbsp;<I>As of JDK version" +
-                 " 1.5, replaced by" + NL +
-                 " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-                 "<CODE>setUndecorated(boolean)</CODE></A>.</I>" + NL + "<P>" + NL +
-                 "</DD></DL>"},
-        {BUG_ID + FS + "serialized-form.html", "<PRE>" + NL + "int <STRONG>" +
-                 "publicKey</STRONG></PRE>" + NL + "<DL>" + NL + "<DD><STRONG>" +
-                 "Deprecated.</STRONG>&nbsp;</DD></DL>"}};
+        {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<dl>" +
+                 "<dt><span class=\"strong\">Since:</span></dt>" + NL +
+                 "  <dd>JDK1.0</dd></dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl><dt><span class=\"strong\">Since:</span></dt>" + NL +
+                 "  <dd>JDK1.0</dd>" + NL + "<dt><span class=\"strong\">See Also:</span></dt>" +
+                 "<dd><a href=\"../pkg1/C2.html\" title=\"class in pkg1\"><code>" +
+                 "C2</code></a>, " + NL + "<a href=\"../serialized-form.html#pkg1.C1\">" +
+                 "Serialized Form</a></dd></dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl><dt><span class=\"strong\">Since:</span></dt>" + NL +
+                 "  <dd>1.4</dd>" + NL +
+                 "<dt><span class=\"strong\">See Also:</span></dt><dd>" +
+                 "<a href=\"../pkg1/C1.html#setUndecorated(boolean)\">" +
+                 "<code>setUndecorated(boolean)</code></a></dd></dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl><dt><span class=\"strong\">Parameters:</span></dt><dd><code>title" +
+                 "</code> - the title</dd><dd><code>test</code> - boolean value" +
+                 "</dd>" + NL + "<dt><span class=\"strong\">Throws:</span></dt>" + NL +
+                 "<dd><code>java.lang.IllegalArgumentException</code> - if the " +
+                 "<code>owner</code>'s" + NL +
+                 "     <code>GraphicsConfiguration</code> is not from a screen " +
+                 "device</dd>" + NL + "<dd><code>HeadlessException</code></dd></dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl><dt><span class=\"strong\">Parameters:</span></dt><dd><code>undecorated" +
+                 "</code> - <code>true</code> if no decorations are" + NL +
+                 "         to be enabled;" + NL + "         <code>false</code> " +
+                 "if decorations are to be enabled.</dd><dt><span class=\"strong\">Since:" +
+                 "</span></dt>" + NL + "  <dd>1.4</dd>" + NL +
+                 "<dt><span class=\"strong\">See Also:</span></dt><dd>" +
+                 "<a href=\"../pkg1/C1.html#readObject()\"><code>readObject()" +
+                 "</code></a></dd></dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl><dt><span class=\"strong\">Throws:</span></dt>" + NL +
+                 "<dd><code>java.io.IOException</code></dd><dt><span class=\"strong\">See Also:" +
+                 "</span></dt><dd><a href=\"../pkg1/C1.html#setUndecorated(boolean)\">" +
+                 "<code>setUndecorated(boolean)</code></a></dd></dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C2.html", "<dl><dt><span class=\"strong\">Parameters:" +
+                 "</span></dt><dd><code>set</code> - boolean</dd><dt><span class=\"strong\">" +
+                 "Since:</span></dt>" + NL + "  <dd>1.4</dd></dl>"},
+        {BUG_ID + FS + "serialized-form.html", "<dl><dt><span class=\"strong\">Throws:</span>" +
+                 "</dt>" + NL + "<dd><code>" +
+                 "java.io.IOException</code></dd><dt><span class=\"strong\">See Also:</span>" +
+                 "</dt><dd><a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
+                 "<code>C1.setUndecorated(boolean)</code></a></dd></dl>"},
+        {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" +
+                 "&nbsp;<i>As of JDK version 1.5, replaced by" + NL +
+                 " <a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
+                 "<code>setUndecorated(boolean)</code></a>.</i></div>" + NL +
+                 "<div class=\"block\">This field indicates whether the C1 is " +
+                 "undecorated.</div>" + NL + "&nbsp;" + NL + "<dl><dt><span class=\"strong\">Since:</span></dt>" + NL +
+                 "  <dd>1.4</dd>" + NL + "<dt><span class=\"strong\">See Also:</span>" +
+                 "</dt><dd><a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
+                 "<code>C1.setUndecorated(boolean)</code></a></dd></dl>"},
+        {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" +
+                 "&nbsp;<i>As of JDK version 1.5, replaced by" + NL +
+                 " <a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
+                 "<code>setUndecorated(boolean)</code></a>.</i></div>" + NL +
+                 "<div class=\"block\">Reads the object stream.</div>" + NL +
+                 "<dl><dt><span class=\"strong\">Throws:" +
+                 "</span></dt>" + NL + "<dd><code><code>" +
+                 "IOException</code></code></dd>" + NL +
+                 "<dd><code>java.io.IOException</code></dd></dl>"},
+        {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" +
+                 "&nbsp;</div>" + NL +
+                 "<div class=\"block\">The name for this class.</div>"}};
 
     // Test with -nodeprecated option. The ClassDocs should have properly nested
     // definition list tags enclosing comments and tags. The ClassDocs should not
@@ -196,138 +121,104 @@
     // should display properly nested definition list tags for comments, tags
     // and deprecated information.
     private static final String[][] TEST_NODEPR = {
-        {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<DL>" + NL +
-                 "<DT><STRONG>Since:</STRONG></DT>" + NL +
-                 "  <DD>JDK1.0</DD></DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL +
-                 "<DT><STRONG>Since:</STRONG></DT>" + NL +
-                 "  <DD>JDK1.0</DD>" + NL + "<DT><STRONG>See Also:</STRONG></DT><DD>" +
-                 "<A HREF=\"../pkg1/C2.html\" title=\"class in pkg1\">" +
-                 "<CODE>C2</CODE></A>, " + NL +
-                 "<A HREF=\"../serialized-form.html#pkg1.C1\">" +
-                 "Serialized Form</A></DD></DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL +
-                 "<DD>Constructor." + NL + "<P>" + NL + "</DD>" + NL +
-                 "<DD><DL>" + NL + "<DT><STRONG>Parameters:</STRONG></DT><DD>" +
-                 "<CODE>title</CODE> - the title</DD><DD><CODE>test</CODE>" +
-                 " - boolean value</DD>" + NL + "<DT><STRONG>Throws:</STRONG></DT>" + NL +
-                 "<DD><CODE>java.lang.IllegalArgumentException</CODE>" +
-                 " - if the <code>owner</code>'s" + NL + "     <code>GraphicsConfiguration" +
-                 "</code> is not from a screen device</DD>" + NL +"<DD><CODE>" +
-                 "HeadlessException</CODE></DD></DL>" + NL + "</DD>" + NL +
-                 "</DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL +
-                 "<DD>Method comments." + NL + "<P>" + NL +
-                 "</DD>" + NL + "<DD><DL>" + NL + "<DT><STRONG>Parameters:" +
-                 "</STRONG></DT><DD><CODE>undecorated</CODE> - <code>true</code>" +
+        {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<dl>" +
+                 "<dt><span class=\"strong\">Since:</span></dt>" + NL +
+                 "  <dd>JDK1.0</dd></dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl><dt><span class=\"strong\">Since:</span>" +
+                 "</dt>" + NL + "  <dd>JDK1.0</dd>" + NL + "<dt><span class=\"strong\">See Also:" +
+                 "</span></dt><dd><a href=\"../pkg1/C2.html\" title=\"class in pkg1\">" +
+                 "<code>C2</code></a>, " + NL + "<a href=\"../serialized-form.html#pkg1.C1\">" +
+                 "Serialized Form</a></dd></dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl><dt><span class=\"strong\">Parameters:" +
+                 "</span></dt><dd><code>title</code> - the title</dd><dd><code>" +
+                 "test</code> - boolean value</dd>" + NL + "<dt><span class=\"strong\">Throws:" +
+                 "</span></dt>" + NL + "<dd><code>java.lang.IllegalArgumentException" +
+                 "</code> - if the <code>owner</code>'s" + NL + "     <code>GraphicsConfiguration" +
+                 "</code> is not from a screen device</dd>" + NL + "<dd><code>" +
+                 "HeadlessException</code></dd></dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl><dt><span class=\"strong\">Parameters:" +
+                 "</span></dt><dd><code>undecorated</code> - <code>true</code>" +
                  " if no decorations are" + NL + "         to be enabled;" + NL +
                  "         <code>false</code> if decorations are to be enabled." +
-                 "</DD><DT><STRONG>Since:</STRONG></DT>" + NL +
-                 "  <DD>1.4</DD>" + NL + "<DT><STRONG>See Also:</STRONG></DT>" +
-                 "<DD><A HREF=\"../pkg1/C1.html#readObject()\"><CODE>" +
-                 "readObject()</CODE></A></DD></DL>" + NL + "</DD>" + NL +
-                 "</DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL + "<DD><DL>" + NL +
-                 "<DT><STRONG>Throws:</STRONG></DT>" + NL + "<DD><CODE>" +
-                 "java.io.IOException</CODE></DD><DT><STRONG>See Also:" +
-                 "</STRONG></DT><DD>" +
-                 "<A HREF=\"../pkg1/C1.html#setUndecorated(boolean)\">" +
-                 "<CODE>setUndecorated(boolean)</CODE></A></DD></DL>" + NL +
-                 "</DD>" + NL + "</DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C1.ModalExclusionType.html", "<DL>" + NL +
-                 "<DD>No modal exclusion." + NL + "<P>" + NL +"</DD>" + NL +
-                 "</DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C2.html", "<DL>" + NL + "<DD>Constructor." + NL +
-                 "<P>" + NL +"</DD>" + NL + "</DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C3.html", "<DL>" + NL + "<DD>Comment." + NL +
-                 "<P>" + NL + "</DD>" + NL + "</DL>"},
-        {BUG_ID + FS + "serialized-form.html", "<DL>" + NL + "<DD><DL>" + NL +
-                 "<DT><STRONG>Throws:</STRONG></DT>" + NL + "<DD><CODE>" +
-                 "java.io.IOException</CODE></DD><DT><STRONG>See Also:</STRONG>" +
-                 "</DT><DD><A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-                 "<CODE>C1.setUndecorated(boolean)</CODE></A></DD></DL>" + NL +
-                 "</DD>" + NL + "</DL>"},
-        {BUG_ID + FS + "serialized-form.html", "<DL>" + NL +
-                 "<DD><STRONG>Deprecated.</STRONG>&nbsp;<I>As of JDK version " +
-                 "1.5, replaced by" + NL +
-                 " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-                 "<CODE>setUndecorated(boolean)</CODE></A>.</I></DD>" +
-                 "<DD>This field indicates whether the C1 is undecorated." + NL +
-                 "<P>" + NL + "</DD>" + NL + "<DD>&nbsp;</DD>" + NL +
-                 "<DD><DL>" + NL + "<DT><STRONG>Since:</STRONG></DT>" + NL +
-                 "  <DD>1.4</DD>" + NL + "<DT><STRONG>See Also:</STRONG>" +
-                 "</DT><DD><A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-                 "<CODE>C1.setUndecorated(boolean)</CODE></A></DD></DL>" + NL +
-                 "</DD>" + NL + "</DL>"},
-        {BUG_ID + FS + "serialized-form.html", "<DL>" + NL +
-                 "<DD><STRONG>Deprecated.</STRONG>&nbsp;<I>As of JDK version" +
-                 " 1.5, replaced by" + NL +
-                 " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-                 "<CODE>setUndecorated(boolean)</CODE></A>.</I>" + NL + "<P>" + NL +
-                 "</DD><DD>Reads the object stream." + NL + "<P>" + NL +
-                 "</DD>" + NL + "<DD><DL>" + NL + "<DT><STRONG>Throws:" +
-                 "</STRONG></DT>" + NL + "<DD><CODE><code>" +
-                 "IOException</code></CODE></DD>" + NL +
-                 "<DD><CODE>java.io.IOException</CODE></DD></DL>" + NL +
-                 "</DD>" + NL + "</DL>"},
-        {BUG_ID + FS + "serialized-form.html", "<DL>" + NL +
-                 "<DD><STRONG>Deprecated.</STRONG>&nbsp;</DD><DD>" +
-                 "The name for this class." + NL + "<P>" + NL + "</DD>" + NL +
-                 "<DD>&nbsp;</DD>" + NL + "</DL>"}};
+                 "</dd><dt><span class=\"strong\">Since:</span></dt>" + NL + "  <dd>1.4</dd>" + NL +
+                 "<dt><span class=\"strong\">See Also:</span></dt><dd><a href=\"../pkg1/C1.html#readObject()\">" +
+                 "<code>readObject()</code></a></dd></dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl><dt><span class=\"strong\">Throws:</span>" +
+                 "</dt>" + NL + "<dd><code>java.io.IOException</code></dd><dt>" +
+                 "<span class=\"strong\">See Also:</span></dt><dd><a href=\"../pkg1/C1.html#setUndecorated(boolean)\">" +
+                 "<code>setUndecorated(boolean)</code></a></dd></dl>"},
+        {BUG_ID + FS + "serialized-form.html", "<dl><dt><span class=\"strong\">Throws:</span>" +
+                 "</dt>" + NL + "<dd><code>" +
+                 "java.io.IOException</code></dd><dt><span class=\"strong\">See Also:</span>" +
+                 "</dt><dd><a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
+                 "<code>C1.setUndecorated(boolean)</code></a></dd></dl>"},
+        {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" +
+                 "&nbsp;<i>As of JDK version 1.5, replaced by" + NL +
+                 " <a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
+                 "<code>setUndecorated(boolean)</code></a>.</i></div>" + NL +
+                 "<div class=\"block\">This field indicates whether the C1 is " +
+                 "undecorated.</div>" + NL + "&nbsp;" + NL + "<dl><dt><span class=\"strong\">Since:</span></dt>" + NL +
+                 "  <dd>1.4</dd>" + NL + "<dt><span class=\"strong\">See Also:</span>" +
+                 "</dt><dd><a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
+                 "<code>C1.setUndecorated(boolean)</code></a></dd></dl>"},
+        {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" +
+                 "&nbsp;<i>As of JDK version 1.5, replaced by" + NL +
+                 " <a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
+                 "<code>setUndecorated(boolean)</code></a>.</i></div>" + NL +
+                 "<div class=\"block\">Reads the object stream.</div>" + NL +
+                 "<dl><dt><span class=\"strong\">Throws:" +
+                 "</span></dt>" + NL + "<dd><code><code>" +
+                 "IOException</code></code></dd>" + NL +
+                 "<dd><code>java.io.IOException</code></dd></dl>"},
+        {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" +
+                 "&nbsp;</div>" + NL + "<div class=\"block\">" +
+                 "The name for this class.</div>"}};
 
     // Test with -nocomment and -nodeprecated options. The ClassDocs whould
-    // not display definition lists for any member details. The serialized
-    // form should display properly nested definition list tags for
-    // deprecated information only.
+    // not display definition lists for any member details.
     private static final String[][] TEST_NOCMNT_NODEPR = {
-        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<PRE>" + NL + "public void " +
-                 "<STRONG>readObject</STRONG>()" + NL + "                throws" +
-                 " java.io.IOException</PRE>" + NL + "<HR>"},
-        {BUG_ID + FS + "pkg1" + FS + "C2.html", "<PRE>" +NL + "public <STRONG>" +
-                 "C2</STRONG>()</PRE>" + NL + "<HR>"},
-        {BUG_ID + FS + "pkg1" + FS + "C1.ModalExclusionType.html", "<PRE>" + NL +
-                 "public static final " +
-                 "<A HREF=\"../pkg1/C1.ModalExclusionType.html\" " +
-                 "title=\"enum in pkg1\">C1.ModalExclusionType</A> <STRONG>" +
-                 "APPLICATION_EXCLUDE</STRONG></PRE>" + NL + "<HR>"},
-        {BUG_ID + FS + "serialized-form.html", "<PRE>" + NL + "boolean <STRONG>" +
-                 "undecorated</STRONG></PRE>" + NL + "<DL>" + NL + "<DD><STRONG>" +
-                 "Deprecated.</STRONG>&nbsp;<I>As of JDK version 1.5, replaced by" + NL +
-                 " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\"><CODE>" +
-                 "setUndecorated(boolean)</CODE></A>.</I></DD></DL>"},
-        {BUG_ID + FS + "serialized-form.html", "<DL>" + NL + "<DD><STRONG>" +
-                 "Deprecated.</STRONG>&nbsp;<I>As of JDK version" +
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<pre>public&nbsp;void&nbsp;readObject()" + NL +
+                 "                throws java.io.IOException</pre>" + NL + "</li>"},
+        {BUG_ID + FS + "pkg1" + FS + "C2.html", "<pre>public&nbsp;C2()</pre>" + NL +
+                 "</li>"},
+        {BUG_ID + FS + "pkg1" + FS + "C1.ModalExclusionType.html", "<pre>public " +
+                 "static final&nbsp;<a href=\"../pkg1/C1.ModalExclusionType.html\" " +
+                 "title=\"enum in pkg1\">C1.ModalExclusionType</a> " +
+                 "APPLICATION_EXCLUDE</pre>" + NL + "</li>"},
+        {BUG_ID + FS + "serialized-form.html", "<pre>boolean " +
+                 "undecorated</pre>" + NL + "<div class=\"block\"><span class=\"strong\">" +
+                 "Deprecated.</span>&nbsp;<i>As of JDK version 1.5, replaced by" + NL +
+                 " <a href=\"pkg1/C1.html#setUndecorated(boolean)\"><code>" +
+                 "setUndecorated(boolean)</code></a>.</i></div>" + NL + "</li>"},
+        {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">" +
+                 "Deprecated.</span>&nbsp;<i>As of JDK version" +
                  " 1.5, replaced by" + NL +
-                 " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-                 "<CODE>setUndecorated(boolean)</CODE></A>.</I>" + NL + "<P>" + NL +
-                 "</DD></DL>"},
-        {BUG_ID + FS + "serialized-form.html", "<PRE>" + NL + "int <STRONG>" +
-                 "publicKey</STRONG></PRE>" + NL + "<DL>" + NL + "<DD><STRONG>" +
-                 "Deprecated.</STRONG>&nbsp;</DD></DL>"}};
+                 " <a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
+                 "<code>setUndecorated(boolean)</code></a>.</i></div>" + NL + "</li>"}};
 
     // Test for valid HTML generation which should not comprise of empty
     // definition list tags.
     private static final String[][] NEGATED_TEST = {
-        {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<DL></DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<DL>" + NL + "</DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL></DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL + "</DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C1.ModalExclusionType.html", "<DL></DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C1.ModalExclusionType.html", "<DL>" + NL + "</DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C2.html", "<DL></DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C2.html", "<DL>" + NL + "</DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C2.ModalType.html", "<DL></DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C2.ModalType.html", "<DL>" + NL + "</DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C3.html", "<DL></DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C3.html", "<DL>" + NL + "</DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C4.html", "<DL></DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C4.html", "<DL>" + NL + "</DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C5.html", "<DL></DL>"},
-        {BUG_ID + FS + "pkg1" + FS + "C5.html", "<DL>" + NL + "</DL>"},
-        {BUG_ID + FS + "overview-tree.html", "<DL></DL>"},
-        {BUG_ID + FS + "overview-tree.html", "<DL>" + NL + "</DL>"},
-        {BUG_ID + FS + "serialized-form.html", "<DL></DL>"},
-        {BUG_ID + FS + "serialized-form.html", "<DL>" + NL + "</DL>"}};
+        {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<dl></dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<dl>" + NL + "</dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl></dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl>" + NL + "</dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C1.ModalExclusionType.html", "<dl></dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C1.ModalExclusionType.html", "<dl>" + NL + "</dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C2.html", "<dl></dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C2.html", "<dl>" + NL + "</dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C2.ModalType.html", "<dl></dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C2.ModalType.html", "<dl>" + NL + "</dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C3.html", "<dl></dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C3.html", "<dl>" + NL + "</dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C4.html", "<dl></dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C4.html", "<dl>" + NL + "</dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C5.html", "<dl></dl>"},
+        {BUG_ID + FS + "pkg1" + FS + "C5.html", "<dl>" + NL + "</dl>"},
+        {BUG_ID + FS + "overview-tree.html", "<dl></dl>"},
+        {BUG_ID + FS + "overview-tree.html", "<dl>" + NL + "</dl>"},
+        {BUG_ID + FS + "serialized-form.html", "<dl></dl>"},
+        {BUG_ID + FS + "serialized-form.html", "<dl>" + NL + "</dl>"}};
 
     private static final String[] ARGS1 =
         new String[] {
@@ -355,7 +246,7 @@
         run(tester, ARGS1, TEST_ALL, NEGATED_TEST);
         run(tester, ARGS1, TEST_CMNT_DEPR, NEGATED_TEST);
         run(tester, ARGS2, TEST_ALL, NEGATED_TEST);
-        run(tester, ARGS2, TEST_NOCMNT, TEST_CMNT_DEPR);
+        run(tester, ARGS2, NO_TEST, TEST_CMNT_DEPR);
         run(tester, ARGS3, TEST_ALL, NEGATED_TEST);
         run(tester, ARGS3, TEST_NODEPR, TEST_NOCMNT_NODEPR);
         run(tester, ARGS4, TEST_ALL, NEGATED_TEST);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/com/sun/javadoc/testHtmlDocument/TestHtmlDocument.java	Wed Dec 01 11:02:38 2010 -0800
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2010, 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.
+ */
+
+/*
+ * @test
+ * @bug 6851834
+ * @summary This test verifies the HTML document generation for javadoc output.
+ * @author Bhavesh Patel
+ * @build TestHtmlDocument
+ * @run main TestHtmlDocument
+ */
+
+import java.io.*;
+import com.sun.tools.doclets.formats.html.markup.*;
+
+/**
+ * The class reads each file, complete with newlines, into a string to easily
+ * compare the existing markup with the generated markup.
+ */
+public class TestHtmlDocument {
+
+    private static final String BUGID = "6851834";
+    private static final String BUGNAME = "TestHtmlDocument";
+    private static final String FS = System.getProperty("file.separator");
+    private static String srcdir = System.getProperty("test.src", ".");
+
+    // Entry point
+    public static void main(String[] args) throws IOException {
+        // Check whether the generated markup is same as the existing markup.
+        if (generateHtmlTree().equals(readFileToString(srcdir + FS + "testMarkup.html"))) {
+            System.out.println("\nTest passed for bug " + BUGID + " (" + BUGNAME + ")\n");
+        } else {
+            throw new Error("\nTest failed for bug " + BUGID + " (" + BUGNAME + ")\n");
+        }
+    }
+
+    // Generate the HTML output using the HTML document generation within doclet.
+    public static String generateHtmlTree() {
+        // Document type for the HTML document
+        DocType htmlDocType = DocType.Transitional();
+        HtmlTree html = new HtmlTree(HtmlTag.HTML);
+        HtmlTree head = new HtmlTree(HtmlTag.HEAD);
+        HtmlTree title = new HtmlTree(HtmlTag.TITLE);
+        // String content within the document
+        StringContent titleContent = new StringContent("Markup test");
+        title.addContent(titleContent);
+        head.addContent(title);
+        // Test META tag
+        HtmlTree meta = new HtmlTree(HtmlTag.META);
+        meta.addAttr(HtmlAttr.NAME, "keywords");
+        meta.addAttr(HtmlAttr.CONTENT, "testContent");
+        head.addContent(meta);
+        // Test invalid META tag
+        HtmlTree invmeta = new HtmlTree(HtmlTag.META);
+        head.addContent(invmeta);
+        // Test LINK tag
+        HtmlTree link = new HtmlTree(HtmlTag.LINK);
+        link.addAttr(HtmlAttr.REL, "testRel");
+        link.addAttr(HtmlAttr.HREF, "testLink.html");
+        head.addContent(link);
+        // Test invalid LINK tag
+        HtmlTree invlink = new HtmlTree(HtmlTag.LINK);
+        head.addContent(invlink);
+        html.addContent(head);
+        // Comment within the document
+        Comment bodyMarker = new Comment("======== START OF BODY ========");
+        html.addContent(bodyMarker);
+        HtmlTree body = new HtmlTree(HtmlTag.BODY);
+        Comment pMarker = new Comment("======== START OF PARAGRAPH ========");
+        body.addContent(pMarker);
+        HtmlTree p = new HtmlTree(HtmlTag.P);
+        StringContent bodyContent = new StringContent(
+                "This document is generated from sample source code and HTML " +
+                "files with examples of a wide variety of Java language constructs: packages, " +
+                "subclasses, subinterfaces, nested classes, nested interfaces," +
+                "inheriting from other packages, constructors, fields," +
+                "methods, and so forth. ");
+        p.addContent(bodyContent);
+        StringContent anchorContent = new StringContent("Click Here");
+        p.addContent(HtmlTree.A("testLink.html", anchorContent));
+        StringContent pContent = new StringContent(" to <test> out a link.");
+        p.addContent(pContent);
+        body.addContent(p);
+        HtmlTree p1 = new HtmlTree(HtmlTag.P);
+        // Test another version of A tag.
+        HtmlTree anchor = new HtmlTree(HtmlTag.A);
+        anchor.addAttr(HtmlAttr.HREF, "testLink.html");
+        anchor.addAttr(HtmlAttr.NAME, "Another version of a tag");
+        p1.addContent(anchor);
+        body.addContent(p1);
+        // Test for empty tags.
+        HtmlTree dl = new HtmlTree(HtmlTag.DL);
+        html.addContent(dl);
+        // Test for empty nested tags.
+        HtmlTree dlTree = new HtmlTree(HtmlTag.DL);
+        dlTree.addContent(new HtmlTree(HtmlTag.DT));
+        dlTree.addContent(new HtmlTree (HtmlTag.DD));
+        html.addContent(dlTree);
+        HtmlTree dlDisplay = new HtmlTree(HtmlTag.DL);
+        dlDisplay.addContent(new HtmlTree(HtmlTag.DT));
+        HtmlTree dd = new HtmlTree (HtmlTag.DD);
+        StringContent ddContent = new StringContent("Test DD");
+        dd.addContent(ddContent);
+        dlDisplay.addContent(dd);
+        body.addContent(dlDisplay);
+        StringContent emptyString = new StringContent("");
+        body.addContent(emptyString);
+        Comment emptyComment = new Comment("");
+        body.addContent(emptyComment);
+        HtmlTree hr = new HtmlTree(HtmlTag.HR);
+        body.addContent(hr);
+        html.addContent(body);
+        HtmlDocument htmlDoc = new HtmlDocument(htmlDocType, html);
+        return htmlDoc.toString();
+    }
+
+    // Read the file into a String
+    public static String readFileToString(String filename) throws IOException {
+        File file = new File(filename);
+        if ( !file.exists() ) {
+            System.out.println("\nFILE DOES NOT EXIST: " + filename);
+        }
+        BufferedReader in = new BufferedReader(new FileReader(file));
+        // Create an array of characters the size of the file
+        char[] allChars = new char[(int)file.length()];
+        // Read the characters into the allChars array
+        in.read(allChars, 0, (int)file.length());
+        in.close();
+        // Convert to a string
+        String allCharsString = new String(allChars);
+        return allCharsString;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/com/sun/javadoc/testHtmlDocument/testLink.html	Wed Dec 01 11:02:38 2010 -0800
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Markup test</title>
+</head>
+<body>
+This is a test for link.
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/com/sun/javadoc/testHtmlDocument/testMarkup.html	Wed Dec 01 11:02:38 2010 -0800
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Markup test</title>
+<meta name="keywords" content="testContent">
+<link rel="testRel" href="testLink.html">
+</head>
+<!-- ======== START OF BODY ======== -->
+<body>
+<!-- ======== START OF PARAGRAPH ======== -->
+<p>This document is generated from sample source code and HTML files with examples of a wide variety of Java language constructs: packages, subclasses, subinterfaces, nested classes, nested interfaces,inheriting from other packages, constructors, fields,methods, and so forth. <a href="testLink.html">Click Here</a> to &lt;test&gt; out a link.</p>
+<p><a href="testLink.html" name="Another version of a tag"></a></p>
+<dl>
+<dd>Test DD</dd>
+</dl>
+<hr>
+</body>
+</html>
--- a/langtools/test/com/sun/javadoc/testHtmlStrongTag/TestHtmlStrongTag.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testHtmlStrongTag/TestHtmlStrongTag.java	Wed Dec 01 11:02:38 2010 -0800
@@ -38,7 +38,7 @@
 
     private static final String BUG_ID = "6786028";
     private static final String[][] TEST1 = {
-        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<STRONG>See Also:</STRONG>"}};
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<span class=\"strong\">See Also:</span>"}};
     private static final String[][] NEGATED_TEST1 = {
         {BUG_ID + FS + "pkg1" + FS + "C1.html", "<STRONG>Method Summary</STRONG>"},
         {BUG_ID + FS + "pkg1" + FS + "C1.html", "<B>"},
--- a/langtools/test/com/sun/javadoc/testHtmlTableTags/TestHtmlTableTags.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testHtmlTableTags/TestHtmlTableTags.java	Wed Dec 01 11:02:38 2010 -0800
@@ -50,139 +50,128 @@
 
         //Package summary
         {BUG_ID + FS + "pkg1" + FS + "package-summary.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Class Summary table, " +
+            "<table class=\"packageSummary\" border=\"0\" cellpadding=\"3\"" +
+            " cellspacing=\"0\" summary=\"Class Summary table, " +
             "listing classes, and an explanation\">"
         },
         {BUG_ID + FS + "pkg1" + FS + "package-summary.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Interface Summary table, " +
+            "<table class=\"packageSummary\" border=\"0\" cellpadding=\"3\"" +
+            " cellspacing=\"0\" summary=\"Interface Summary table, " +
             "listing interfaces, and an explanation\">"
         },
         {BUG_ID + FS + "pkg2" + FS + "package-summary.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Enum Summary table, " +
+            "<table class=\"packageSummary\" border=\"0\" cellpadding=\"3\"" +
+            " cellspacing=\"0\" summary=\"Enum Summary table, " +
             "listing enums, and an explanation\">"
         },
         {BUG_ID + FS + "pkg2" + FS + "package-summary.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Annotation Types Summary table, " +
+            "<table class=\"packageSummary\" border=\"0\" cellpadding=\"3\"" +
+            " cellspacing=\"0\" summary=\"Annotation Types Summary table, " +
             "listing annotation types, and an explanation\">"
         },
         // Class documentation
         {BUG_ID + FS + "pkg1" + FS + "C1.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Field Summary table, " +
-            "listing fields, and an explanation\">"
+            "<table class=\"overviewSummary\" border=\"0\" cellpadding=\"3\" " +
+            "cellspacing=\"0\" summary=\"Field Summary table, listing fields, " +
+            "and an explanation\">"
         },
         {BUG_ID + FS + "pkg1" + FS + "C1.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Method Summary table, " +
-            "listing methods, and an explanation\">"
+            "<table class=\"overviewSummary\" border=\"0\" cellpadding=\"3\" " +
+            "cellspacing=\"0\" summary=\"Method Summary table, listing methods, " +
+            "and an explanation\">"
         },
         {BUG_ID + FS + "pkg2" + FS + "C2.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Nested Class Summary table, " +
-            "listing nested classes, and an explanation\">"
+            "<table class=\"overviewSummary\" border=\"0\" cellpadding=\"3\" " +
+            "cellspacing=\"0\" summary=\"Nested Class Summary table, listing " +
+            "nested classes, and an explanation\">"
         },
         {BUG_ID + FS + "pkg2" + FS + "C2.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Constructor Summary table, " +
-            "listing constructors, and an explanation\">"
+            "<table class=\"overviewSummary\" border=\"0\" cellpadding=\"3\" " +
+            "cellspacing=\"0\" summary=\"Constructor Summary table, listing " +
+            "constructors, and an explanation\">"
         },
         {BUG_ID + FS + "pkg2" + FS + "C2.ModalExclusionType.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Enum Constant Summary table, " +
-            "listing enum constants, and an explanation\">"
+            "<table class=\"overviewSummary\" border=\"0\" cellpadding=\"3\" " +
+            "cellspacing=\"0\" summary=\"Enum Constant Summary table, listing " +
+            "enum constants, and an explanation\">"
         },
         {BUG_ID + FS + "pkg2" + FS + "C3.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Required Element Summary table, " +
+            "<table class=\"overviewSummary\" border=\"0\" cellpadding=\"3\" " +
+            "cellspacing=\"0\" summary=\"Required Element Summary table, " +
             "listing required elements, and an explanation\">"
         },
         {BUG_ID + FS + "pkg2" + FS + "C4.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Optional Element Summary table, " +
+            "<table class=\"overviewSummary\" border=\"0\" cellpadding=\"3\" " +
+            "cellspacing=\"0\" summary=\"Optional Element Summary table, " +
             "listing optional elements, and an explanation\">"
         },
         // Class use documentation
         {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "I1.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-            "listing packages, and an explanation\">"
+            "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
+            "table, listing packages, and an explanation\">"
         },
         {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "C1.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-            "listing fields, and an explanation\">"
+            "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
+            "table, listing fields, and an explanation\">"
         },
         {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "C1.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-            "listing methods, and an explanation\">"
+            "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
+            "table, listing methods, and an explanation\">"
         },
         {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-            "listing fields, and an explanation\">"
+            "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
+            "table, listing fields, and an explanation\">"
         },
         {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-            "listing methods, and an explanation\">"
+            "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
+            "table, listing methods, and an explanation\">"
         },
         {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.ModalExclusionType.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-            "listing packages, and an explanation\">"
+            "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
+            "table, listing packages, and an explanation\">"
         },
         {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.ModalExclusionType.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-            "listing methods, and an explanation\">"
+            "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
+            "table, listing methods, and an explanation\">"
         },
         // Package use documentation
         {BUG_ID + FS + "pkg1" + FS + "package-use.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-            "listing packages, and an explanation\">"
+            "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
+            "table, listing packages, and an explanation\">"
         },
         {BUG_ID + FS + "pkg1" + FS + "package-use.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-            "listing classes, and an explanation\">"
+            "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
+            "table, listing classes, and an explanation\">"
         },
         {BUG_ID + FS + "pkg2" + FS + "package-use.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-            "listing packages, and an explanation\">"
+            "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
+            "table, listing packages, and an explanation\">"
         },
         {BUG_ID + FS + "pkg2" + FS + "package-use.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-            "listing classes, and an explanation\">"
+            "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
+            "table, listing classes, and an explanation\">"
         },
         // Deprecated
         {BUG_ID + FS + "deprecated-list.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Deprecated Fields table, " +
-            "listing deprecated fields, and an explanation\">"
+            "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" " +
+            "summary=\"Deprecated Fields table, listing deprecated fields, " +
+            "and an explanation\">"
         },
         {BUG_ID + FS + "deprecated-list.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Deprecated Methods table, " +
-            "listing deprecated methods, and an explanation\">"
+            "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" " +
+            "summary=\"Deprecated Methods table, listing deprecated methods, " +
+            "and an explanation\">"
         },
         // Constant values
         {BUG_ID + FS + "constant-values.html",
-            "<TABLE BORDER=\"1\" CELLPADDING=\"3\" CELLSPACING=\"0\" " +
-            "SUMMARY=\"Constant Field Values table, listing " +
+            "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" " +
+            "summary=\"Constant Field Values table, listing " +
             "constant fields, and values\">"
         },
         // Overview Summary
         {BUG_ID + FS + "overview-summary.html",
-            "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-            "CELLSPACING=\"0\" SUMMARY=\"Packages table, " +
+            "<table class=\"overviewSummary\" border=\"0\" cellpadding=\"3\" " +
+            "cellspacing=\"0\" summary=\"Packages table, " +
             "listing packages, and an explanation\">"
         },
 
@@ -192,125 +181,117 @@
 
         //Package summary
         {BUG_ID + FS + "pkg1" + FS + "package-summary.html",
-            "<CAPTION CLASS=\"TableCaption\">" + NL +
-            "Class Summary</CAPTION>"
+            "<caption><span>Class Summary</span><span class=\"tabEnd\">" +
+            "&nbsp;</span></caption>"
         },
         {BUG_ID + FS + "pkg1" + FS + "package-summary.html",
-            "<CAPTION CLASS=\"TableCaption\">" + NL +
-            "Interface Summary</CAPTION>"
+            "<caption><span>Interface Summary</span><span class=\"tabEnd\">" +
+            "&nbsp;</span></caption>"
         },
         {BUG_ID + FS + "pkg2" + FS + "package-summary.html",
-            "<CAPTION CLASS=\"TableCaption\">" + NL +
-            "Enum Summary</CAPTION>"
+            "<caption><span>Enum Summary</span><span class=\"tabEnd\">" +
+            "&nbsp;</span></caption>"
         },
         {BUG_ID + FS + "pkg2" + FS + "package-summary.html",
-            "<CAPTION CLASS=\"TableCaption\">" + NL +
-            "Annotation Types Summary</CAPTION>"
+            "<caption><span>Annotation Types Summary</span><span class=\"tabEnd\">" +
+            "&nbsp;</span></caption>"
         },
         // Class documentation
         {BUG_ID + FS + "pkg1" + FS + "C1.html",
-            "<CAPTION CLASS=\"TableCaption\">" + NL +
-            "Field Summary</CAPTION>"
+            "<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>"
         },
         {BUG_ID + FS + "pkg1" + FS + "C1.html",
-            "<CAPTION CLASS=\"TableCaption\">" + NL +
-            "Method Summary</CAPTION>"
+            "<caption><span>Methods</span><span class=\"tabEnd\">&nbsp;</span></caption>"
         },
         {BUG_ID + FS + "pkg2" + FS + "C2.html",
-            "<CAPTION CLASS=\"TableCaption\">" + NL +
-            "Nested Class Summary</CAPTION>"
+            "<caption><span>Nested Classes</span><span class=\"tabEnd\">&nbsp;</span></caption>"
         },
         {BUG_ID + FS + "pkg2" + FS + "C2.html",
-            "<CAPTION CLASS=\"TableCaption\">" + NL +
-            "Constructor Summary</CAPTION>"
+            "<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>"
         },
         {BUG_ID + FS + "pkg2" + FS + "C2.ModalExclusionType.html",
-            "<CAPTION CLASS=\"TableCaption\">" + NL +
-            "Enum Constant Summary</CAPTION>"
+            "<caption><span>Enum Constants</span><span class=\"tabEnd\">&nbsp;</span></caption>"
         },
         {BUG_ID + FS + "pkg2" + FS + "C3.html",
-            "<CAPTION CLASS=\"TableCaption\">" + NL +
-            "Required Element Summary</CAPTION>"
+            "<caption><span>Required Elements</span><span class=\"tabEnd\">&nbsp;" +
+            "</span></caption>"
         },
         {BUG_ID + FS + "pkg2" + FS + "C4.html",
-            "<CAPTION CLASS=\"TableCaption\">" + NL +
-            "Optional Element Summary</CAPTION>"
+            "<caption><span>Optional Elements</span><span class=\"tabEnd\">&nbsp;" +
+            "</span></caption>"
         },
         // Class use documentation
         {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "I1.html",
-            "<CAPTION CLASS=\"TableCaption\">" + NL +
-            "Packages that use <A HREF=\"../../pkg1/I1.html\" " +
-            "title=\"interface in pkg1\">I1</A></CAPTION>"
+            "<caption><span>Packages that use <a href=\"../../pkg1/I1.html\" " +
+            "title=\"interface in pkg1\">I1</a></span><span class=\"tabEnd\">" +
+            "&nbsp;</span></caption>"
         },
         {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "C1.html",
-            "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-            "Fields in <A HREF=\"../../pkg2/package-summary.html\">pkg2</A> " +
-            "declared as <A HREF=\"../../pkg1/C1.html\" title=\"class in pkg1\">" +
-            "C1</A></CAPTION>"
+            "<caption><span>Fields in <a href=\"../../pkg2/package-summary.html\">" +
+            "pkg2</a> declared as <a href=\"../../pkg1/C1.html\" " +
+            "title=\"class in pkg1\">C1</a></span><span class=\"tabEnd\">&nbsp;" +
+            "</span></caption>"
         },
         {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "C1.html",
-            "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-            "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2</A> " +
-            "with parameters of type <A HREF=\"../../pkg1/C1.html\" " +
-            "title=\"class in pkg1\">C1</A></CAPTION>"
+            "<caption><span>Methods in <a href=\"../../pkg2/package-summary.html\">" +
+            "pkg2</a> that return <a href=\"../../pkg1/C1.html\" " +
+            "title=\"class in pkg1\">C1</a></span><span class=\"tabEnd\">" +
+            "&nbsp;</span></caption>"
         },
         {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.html",
-            "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-            "Fields in <A HREF=\"../../pkg1/package-summary.html\">pkg1</A> " +
-            "declared as <A HREF=\"../../pkg2/C2.html\" title=\"class in pkg2\">" +
-            "C2</A></CAPTION>"
+            "<caption><span>Fields in <a href=\"../../pkg1/package-summary.html\">" +
+            "pkg1</a> declared as <a href=\"../../pkg2/C2.html\" " +
+            "title=\"class in pkg2\">C2</a></span><span class=\"tabEnd\">" +
+            "&nbsp;</span></caption>"
         },
         {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.html",
-            "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-            "Methods in <A HREF=\"../../pkg1/package-summary.html\">pkg1</A> " +
-            "with parameters of type <A HREF=\"../../pkg2/C2.html\" " +
-            "title=\"class in pkg2\">C2</A></CAPTION>"
+            "<caption><span>Methods in <a href=\"../../pkg1/package-summary.html\">" +
+            "pkg1</a> that return <a href=\"../../pkg2/C2.html\" " +
+            "title=\"class in pkg2\">C2</a></span><span class=\"tabEnd\">" +
+            "&nbsp;</span></caption>"
         },
         {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.ModalExclusionType.html",
-            "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-            "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2</A> " +
-            "that return <A HREF=\"../../pkg2/C2.ModalExclusionType.html\" " +
-            "title=\"enum in pkg2\">C2.ModalExclusionType</A></CAPTION>"
+            "<caption><span>Methods in <a href=\"../../pkg2/package-summary.html\">" +
+            "pkg2</a> that return <a href=\"../../pkg2/C2.ModalExclusionType.html\" " +
+            "title=\"enum in pkg2\">C2.ModalExclusionType</a></span>" +
+            "<span class=\"tabEnd\">&nbsp;</span></caption>"
         },
         // Package use documentation
         {BUG_ID + FS + "pkg1" + FS + "package-use.html",
-            "<CAPTION CLASS=\"TableCaption\">" + NL +
-            "Packages that use <A HREF=\"../pkg1/package-summary.html\">" +
-            "pkg1</A></CAPTION>"
+            "<caption><span>Packages that use <a href=\"../pkg1/package-summary.html\">" +
+            "pkg1</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
         },
         {BUG_ID + FS + "pkg1" + FS + "package-use.html",
-            "<CAPTION CLASS=\"TableCaption\">" + NL +
-            "Classes in <A HREF=\"../pkg1/package-summary.html\">pkg1</A> " +
-            "used by <A HREF=\"../pkg1/package-summary.html\">pkg1</A></CAPTION>"
+            "<caption><span>Classes in <a href=\"../pkg1/package-summary.html\">" +
+            "pkg1</a> used by <a href=\"../pkg1/package-summary.html\">pkg1</a>" +
+            "</span><span class=\"tabEnd\">&nbsp;</span></caption>"
         },
         {BUG_ID + FS + "pkg2" + FS + "package-use.html",
-            "<CAPTION CLASS=\"TableCaption\">" + NL +
-            "Packages that use <A HREF=\"../pkg2/package-summary.html\">" +
-            "pkg2</A></CAPTION>"
+            "<caption><span>Packages that use <a href=\"../pkg2/package-summary.html\">" +
+            "pkg2</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
         },
         {BUG_ID + FS + "pkg2" + FS + "package-use.html",
-            "<CAPTION CLASS=\"TableCaption\">" + NL +
-            "Classes in <A HREF=\"../pkg2/package-summary.html\">pkg2</A> " +
-            "used by <A HREF=\"../pkg1/package-summary.html\">pkg1</A></CAPTION>"
+            "<caption><span>Classes in <a href=\"../pkg2/package-summary.html\">" +
+            "pkg2</a> used by <a href=\"../pkg1/package-summary.html\">pkg1</a>" +
+            "</span><span class=\"tabEnd\">&nbsp;</span></caption>"
         },
         // Deprecated
         {BUG_ID + FS + "deprecated-list.html",
-            "<CAPTION CLASS=\"TableCaption\">" + NL +
-            "Deprecated Fields</CAPTION>"
+            "<caption><span>Deprecated Fields</span><span class=\"tabEnd\">" +
+            "&nbsp;</span></caption>"
         },
         {BUG_ID + FS + "deprecated-list.html",
-            "<CAPTION CLASS=\"TableCaption\">" + NL +
-            "Deprecated Methods</CAPTION>"
+            "<caption><span>Deprecated Methods</span><span class=\"tabEnd\">" +
+            "&nbsp;</span></caption>"
         },
         // Constant values
         {BUG_ID + FS + "constant-values.html",
-            "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-            "pkg1.<A HREF=\"pkg1/C1.html\" title=\"class in pkg1\">C1</A></CAPTION>"
+            "<caption><span>pkg1.<a href=\"pkg1/C1.html\" title=\"class in pkg1\">" +
+            "C1</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
         },
         // Overview Summary
         {BUG_ID + FS + "overview-summary.html",
-            "<CAPTION CLASS=\"TableCaption\">" + NL +
-            "Packages</CAPTION>"
+            "<caption><span>Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>"
         },
 
         /*
@@ -319,135 +300,115 @@
 
         //Package summary
         {BUG_ID + FS + "pkg1" + FS + "package-summary.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Class</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-            " NOWRAP>Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">" +
+            "Class</th>" + NL + "<th class=\"colLast\" scope=\"col\"" +
+            ">Description</th>"
         },
         {BUG_ID + FS + "pkg1" + FS + "package-summary.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Interface</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-            " NOWRAP>Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">" +
+            "Interface</th>" + NL + "<th class=\"colLast\" scope=\"col\"" +
+            ">Description</th>"
         },
         {BUG_ID + FS + "pkg2" + FS + "package-summary.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Enum</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-            " NOWRAP>Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">" +
+            "Enum</th>" + NL + "<th class=\"colLast\" scope=\"col\"" +
+            ">Description</th>"
         },
         {BUG_ID + FS + "pkg2" + FS + "package-summary.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Annotation Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-            " SCOPE=\"col\" NOWRAP>Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">" +
+            "Annotation Type</th>" + NL + "<th class=\"colLast\"" +
+            " scope=\"col\">Description</th>"
         },
         // Class documentation
         {BUG_ID + FS + "pkg1" + FS + "C1.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-            " SCOPE=\"col\" NOWRAP>Field and Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
+            "<th class=\"colLast\" scope=\"col\">Field and Description</th>"
         },
         {BUG_ID + FS + "pkg1" + FS + "C1.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-            " SCOPE=\"col\" NOWRAP>Method and Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
+            "<th class=\"colLast\" scope=\"col\">Method and Description</th>"
         },
         {BUG_ID + FS + "pkg2" + FS + "C2.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-            " SCOPE=\"col\" NOWRAP>Class and Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
+            "<th class=\"colLast\" scope=\"col\">Class and Description</th>"
         },
         {BUG_ID + FS + "pkg2" + FS + "C2.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Constructor and Description</TH>"
+            "<th class=\"colOne\" scope=\"col\">Constructor and Description</th>"
         },
         {BUG_ID + FS + "pkg2" + FS + "C2.ModalExclusionType.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Enum Constant and Description</TH>"
+            "<th class=\"colOne\" scope=\"col\">Enum Constant and Description</th>"
         },
         {BUG_ID + FS + "pkg2" + FS + "C3.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-            " SCOPE=\"col\" NOWRAP>Required Element and Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
+            "<th class=\"colLast\" scope=\"col\">Required Element and Description</th>"
         },
         {BUG_ID + FS + "pkg2" + FS + "C4.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-            " SCOPE=\"col\" NOWRAP>Optional Element and Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
+            "<th class=\"colLast\" scope=\"col\">Optional Element and Description</th>"
         },
         // Class use documentation
         {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "I1.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Package</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-            " NOWRAP>Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">Package</th>" + NL +
+            "<th class=\"colLast\" scope=\"col\">Description</th>"
         },
         {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "C1.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-            " SCOPE=\"col\" NOWRAP>Field and Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
+            "<th class=\"colLast\" scope=\"col\">Field and Description</th>"
         },
         {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "C1.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-            " SCOPE=\"col\" NOWRAP>Method and Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
+            "<th class=\"colLast\" scope=\"col\">Method and Description</th>"
         },
         {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-            " SCOPE=\"col\" NOWRAP>Field and Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
+            "<th class=\"colLast\" scope=\"col\">Field and Description</th>"
         },
         {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-            " SCOPE=\"col\" NOWRAP>Method and Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
+            "<th class=\"colLast\" scope=\"col\">Method and Description</th>"
         },
         {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.ModalExclusionType.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Package</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-            " NOWRAP>Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">Package</th>" + NL +
+            "<th class=\"colLast\" scope=\"col\">Description</th>"
         },
         {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.ModalExclusionType.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-            " SCOPE=\"col\" NOWRAP>Method and Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
+            "<th class=\"colLast\" scope=\"col\">Method and Description</th>"
         },
         // Package use documentation
         {BUG_ID + FS + "pkg1" + FS + "package-use.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Package</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-            " NOWRAP>Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">Package</th>" + NL +
+            "<th class=\"colLast\" scope=\"col\">Description</th>"
         },
         {BUG_ID + FS + "pkg1" + FS + "package-use.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Class and Description</TH>"
+            "<th class=\"colOne\" scope=\"col\">Class and Description</th>"
         },
         {BUG_ID + FS + "pkg2" + FS + "package-use.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Package</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-            " NOWRAP>Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">Package</th>" + NL +
+            "<th class=\"colLast\" scope=\"col\">Description</th>"
         },
         {BUG_ID + FS + "pkg2" + FS + "package-use.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Class and Description</TH>"
+            "<th class=\"colOne\" scope=\"col\">Class and Description</th>"
         },
         // Deprecated
         {BUG_ID + FS + "deprecated-list.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Field and Description</TH>"
+            "<th class=\"colOne\" scope=\"col\">Field and Description</th>"
         },
         {BUG_ID + FS + "deprecated-list.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Method and Description</TH>"
+            "<th class=\"colOne\" scope=\"col\">Method and Description</th>"
         },
         // Constant values
         {BUG_ID + FS + "constant-values.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-            " SCOPE=\"col\" NOWRAP>Constant Field</TH>" + NL +
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>Value</TH>"
+            "<th class=\"colFirst\" scope=\"col\">" +
+            "Modifier and Type</th>" + NL + "<th" +
+            " scope=\"col\">Constant Field</th>" + NL +
+            "<th class=\"colLast\" scope=\"col\">Value</th>"
         },
         // Overview Summary
         {BUG_ID + FS + "overview-summary.html",
-            "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-            "Package</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-            " NOWRAP>Description</TH>"
+            "<th class=\"colFirst\" scope=\"col\">" +
+            "Package</th>" + NL + "<th class=\"colLast\" scope=\"col\"" +
+            ">Description</th>"
         }
     };
     private static final String[][] NEGATED_TEST = NO_TEST;
--- a/langtools/test/com/sun/javadoc/testHtmlTag/TestHtmlTag.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testHtmlTag/TestHtmlTag.java	Wed Dec 01 11:02:38 2010 -0800
@@ -40,20 +40,20 @@
 
     private static final String BUG_ID = "6786682";
     private static final String[][] TEST1 = {
-        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<HTML lang=\"" + Locale.getDefault().getLanguage() + "\">"},
-        {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<HTML lang=\"" + Locale.getDefault().getLanguage() + "\">"}};
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<html lang=\"" + Locale.getDefault().getLanguage() + "\">"},
+        {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<html lang=\"" + Locale.getDefault().getLanguage() + "\">"}};
     private static final String[][] NEGATED_TEST1 = {
-        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<HTML>"}};
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<html>"}};
     private static final String[][] TEST2 = {
-        {BUG_ID + FS + "pkg2" + FS + "C2.html", "<HTML lang=\"ja\">"},
-        {BUG_ID + FS + "pkg2" + FS + "package-summary.html", "<HTML lang=\"ja\">"}};
+        {BUG_ID + FS + "pkg2" + FS + "C2.html", "<html lang=\"ja\">"},
+        {BUG_ID + FS + "pkg2" + FS + "package-summary.html", "<html lang=\"ja\">"}};
     private static final String[][] NEGATED_TEST2 = {
-        {BUG_ID + FS + "pkg2" + FS + "C2.html", "<HTML>"}};
+        {BUG_ID + FS + "pkg2" + FS + "C2.html", "<html>"}};
     private static final String[][] TEST3 = {
-        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<HTML lang=\"en\">"},
-        {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<HTML lang=\"en\">"}};
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<html lang=\"en\">"},
+        {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<html lang=\"en\">"}};
     private static final String[][] NEGATED_TEST3 = {
-        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<HTML>"}};
+        {BUG_ID + FS + "pkg1" + FS + "C1.html", "<html>"}};
 
     private static final String[] ARGS1 =
         new String[] {
--- a/langtools/test/com/sun/javadoc/testIndex/TestIndex.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testIndex/TestIndex.java	Wed Dec 01 11:02:38 2010 -0800
@@ -48,35 +48,34 @@
     private static final String[][] TEST = {
         //Make sure the horizontal scroll bar does not appear in class frame.
         {BUG_ID + FS + "index.html",
-            "<FRAME src=\"overview-summary.html\" name=\"classFrame\" " +
-            "title=\"Package, class and interface descriptions\" " +
-            "scrolling=\"yes\">"},
+            "<frame src=\"overview-summary.html\" name=\"classFrame\" title=\"" +
+            "Package, class and interface descriptions\" scrolling=\"yes\">"},
 
         //Test index-all.html
         {BUG_ID + FS + "index-all.html",
-            "<A HREF=\"./pkg/C.html\" title=\"class in pkg\"><STRONG>C</STRONG></A>" +
-            " - Class in <A HREF=\"./pkg/package-summary.html\">pkg</A>"},
+            "<a href=\"./pkg/C.html\" title=\"class in pkg\"><span class=\"strong\">C</span></a>" +
+            " - Class in <a href=\"./pkg/package-summary.html\">pkg</a>"},
         {BUG_ID + FS + "index-all.html",
-            "<A HREF=\"./pkg/Interface.html\" title=\"interface in pkg\">" +
-            "<STRONG>Interface</STRONG></A> - Interface in " +
-            "<A HREF=\"./pkg/package-summary.html\">pkg</A>"},
+            "<a href=\"./pkg/Interface.html\" title=\"interface in pkg\">" +
+            "<span class=\"strong\">Interface</span></a> - Interface in " +
+            "<a href=\"./pkg/package-summary.html\">pkg</a>"},
         {BUG_ID + FS + "index-all.html",
-            "<A HREF=\"./pkg/AnnotationType.html\" title=\"annotation in pkg\">" +
-            "<STRONG>AnnotationType</STRONG></A> - Annotation Type in " +
-            "<A HREF=\"./pkg/package-summary.html\">pkg</A>"},
+            "<a href=\"./pkg/AnnotationType.html\" title=\"annotation in pkg\">" +
+            "<span class=\"strong\">AnnotationType</span></a> - Annotation Type in " +
+            "<a href=\"./pkg/package-summary.html\">pkg</a>"},
         {BUG_ID + FS + "index-all.html",
-            "<A HREF=\"./pkg/Coin.html\" title=\"enum in pkg\">" +
-            "<STRONG>Coin</STRONG></A> - Enum in " +
-            "<A HREF=\"./pkg/package-summary.html\">pkg</A>"},
+            "<a href=\"./pkg/Coin.html\" title=\"enum in pkg\">" +
+            "<span class=\"strong\">Coin</span></a> - Enum in " +
+            "<a href=\"./pkg/package-summary.html\">pkg</a>"},
         {BUG_ID + FS + "index-all.html",
-            "Class in <A HREF=\"./package-summary.html\">&lt;Unnamed&gt;</A>"},
+            "Class in <a href=\"./package-summary.html\">&lt;Unnamed&gt;</a>"},
         {BUG_ID + FS + "index-all.html",
-            "<DT><A HREF=\"./pkg/C.html#Java\"><STRONG>Java</STRONG></A> - " + NL +
-            "Static variable in class pkg.<A HREF=\"./pkg/C.html\" title=\"class in pkg\">C</A>" + NL +
-            "</DT><DD>&nbsp;</DD>" + NL + NL +
-            "<DT><A HREF=\"./pkg/C.html#JDK\"><STRONG>JDK</STRONG></A> - " + NL +
-            "Static variable in class pkg.<A HREF=\"./pkg/C.html\" title=\"class in pkg\">C</A>" + NL +
-            "</DT><DD>&nbsp;</DD>"},
+            "<dl>" + NL + "<dt><span class=\"strong\"><a href=\"./pkg/C.html#Java\">" +
+            "Java</a></span> - Static variable in class pkg.<a href=\"./pkg/C.html\" " +
+            "title=\"class in pkg\">C</a></dt>" + NL + "<dd>&nbsp;</dd>" + NL +
+            "<dt><span class=\"strong\"><a href=\"./pkg/C.html#JDK\">JDK</a></span> " +
+            "- Static variable in class pkg.<a href=\"./pkg/C.html\" title=\"class in pkg\">" +
+            "C</a></dt>" + NL + "<dd>&nbsp;</dd>" + NL + "</dl>"},
     };
     private static final String[][] NEGATED_TEST = NO_TEST;
 
--- a/langtools/test/com/sun/javadoc/testInlineLinkLabel/TestInlineLinkLabel.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testInlineLinkLabel/TestInlineLinkLabel.java	Wed Dec 01 11:02:38 2010 -0800
@@ -37,10 +37,10 @@
     private static final String BUG_ID = "4524136";
     private static final String[][] TEST = {
         //Search for the label to the package link.
-        {BUG_ID + FS + "pkg" + FS + "C1.html" , "<A HREF=\"../pkg/package-summary.html\"><CODE>Here is a link to a package</CODE></A>"},
+        {BUG_ID + FS + "pkg" + FS + "C1.html" , "<a href=\"../pkg/package-summary.html\"><code>Here is a link to a package</code></a>"},
 
         //Search for the label to the class link
-        {BUG_ID + FS + "pkg" + FS + "C1.html" , "<A HREF=\"../pkg/C2.html\" title=\"class in pkg\"><CODE>Here is a link to a class</CODE></A>"}
+        {BUG_ID + FS + "pkg" + FS + "C1.html" , "<a href=\"../pkg/C2.html\" title=\"class in pkg\"><code>Here is a link to a class</code></a>"}
     };
     private static final String[][] NEGATED_TEST = NO_TEST;
     private static final String[] ARGS =
--- a/langtools/test/com/sun/javadoc/testInterface/TestInterface.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testInterface/TestInterface.java	Wed Dec 01 11:02:38 2010 -0800
@@ -48,51 +48,62 @@
     //Input for string search tests.
     private static final String[][] TEST = {
         {BUG_ID + FS + "pkg" + FS + "Interface.html",
-            "int <STRONG>method</STRONG>()"},
+            "<pre>int&nbsp;method()</pre>"},
         {BUG_ID + FS + "pkg" + FS + "Interface.html",
-            "static final int <STRONG>field</STRONG>"},
+            "<pre>static final&nbsp;int field</pre>"},
 
 
         // Make sure known implementing class list is correct and omits type parameters.
         {BUG_ID + FS + "pkg" + FS + "Interface.html",
-            "<DT><STRONG>All Known Implementing Classes:</STRONG></DT> " +
-            "<DD><A HREF=\"../pkg/Child.html\" " +
-            "title=\"class in pkg\">Child</A>, " +
-            "<A HREF=\"../pkg/Parent.html\" title=\"class in pkg\">" +
-            "Parent</A></DD>"},
+            "<dl>" + NL + "<dt>All Known Implementing Classes:</dt>" + NL +
+            "<dd><a href=\"../pkg/Child.html\" title=\"class in pkg\">Child" +
+            "</a>, <a href=\"../pkg/Parent.html\" title=\"class in pkg\">Parent" +
+            "</a></dd>" + NL + "</dl>"},
 
          // Make sure "All Implemented Interfaces": has substituted type parameters
          {BUG_ID + FS + "pkg" + FS + "Child.html",
-            "<STRONG>All Implemented Interfaces:</STRONG></DT> <DD>" +
-            "<A HREF=\"../pkg/Interface.html\" title=\"interface in pkg\">" +
-            "Interface</A>&lt;T&gt;"
+            "<dl>" + NL + "<dt>All Implemented Interfaces:</dt>" + NL +
+            "<dd><a href=\"../pkg/Interface.html\" title=\"interface in pkg\">" +
+            "Interface</a>&lt;T&gt;</dd>" + NL + "</dl>"
          },
          //Make sure Class Tree has substituted type parameters.
          {BUG_ID + FS + "pkg" + FS + "Child.html",
-            "<PRE>" + NL +
-            "java.lang.Object" + NL +
-            "  <IMG SRC=\"../resources/inherit.gif\" ALT=\"extended by \"><A HREF=\"../pkg/Parent.html\" title=\"class in pkg\">pkg.Parent</A>&lt;T&gt;" + NL +
-            "      <IMG SRC=\"../resources/inherit.gif\" ALT=\"extended by \"><STRONG>pkg.Child&lt;T&gt;</STRONG>" + NL +
-            "</PRE>"
+            "<ul class=\"inheritance\">" + NL + "<li>java.lang.Object</li>" + NL +
+            "<li>" + NL + "<ul class=\"inheritance\">" + NL +
+            "<li><a href=\"../pkg/Parent.html\" title=\"class in pkg\">" +
+            "pkg.Parent</a>&lt;T&gt;</li>" + NL + "<li>" + NL +
+            "<ul class=\"inheritance\">" + NL + "<li>pkg.Child&lt;T&gt;</li>" + NL +
+            "</ul>" + NL + "</li>" + NL + "</ul>" + NL + "</li>" + NL + "</ul>"
          },
          //Make sure "Direct Know Subclasses" omits type parameters
         {BUG_ID + FS + "pkg" + FS + "Parent.html",
-            "<STRONG>Direct Known Subclasses:</STRONG></DT> <DD><A HREF=\"../pkg/Child.html\" title=\"class in pkg\">Child</A>"
+            "<dl>" + NL + "<dt>Direct Known Subclasses:</dt>" + NL +
+            "<dd><a href=\"../pkg/Child.html\" title=\"class in pkg\">Child" +
+            "</a></dd>" + NL + "</dl>"
         },
         //Make sure "Specified By" has substituted type parameters.
         {BUG_ID + FS + "pkg" + FS + "Child.html",
-            "<STRONG>Specified by:</STRONG></DT><DD><CODE><A HREF=\"../pkg/Interface.html#method()\">method</A></CODE> in interface <CODE><A HREF=\"../pkg/Interface.html\" title=\"interface in pkg\">Interface</A>&lt;<A HREF=\"../pkg/Child.html\" title=\"type parameter in Child\">T</A>&gt;</CODE>"
+            "<dt><strong>Specified by:</strong></dt>" + NL +
+            "<dd><code><a href=\"../pkg/Interface.html#method()\">method</a>" +
+            "</code>&nbsp;in interface&nbsp;<code>" +
+            "<a href=\"../pkg/Interface.html\" title=\"interface in pkg\">" +
+            "Interface</a>&lt;<a href=\"../pkg/Child.html\" title=\"type parameter in Child\">" +
+            "T</a>&gt;</code></dd>"
          },
         //Make sure "Overrides" has substituted type parameters.
         {BUG_ID + FS + "pkg" + FS + "Child.html",
-            "<STRONG>Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg/Parent.html#method()\">method</A></CODE> in class <CODE><A HREF=\"../pkg/Parent.html\" title=\"class in pkg\">Parent</A>&lt;<A HREF=\"../pkg/Child.html\" title=\"type parameter in Child\">T</A>&gt;</CODE>"
+            "<dt><strong>Overrides:</strong></dt>" + NL +
+            "<dd><code><a href=\"../pkg/Parent.html#method()\">method</a>" +
+            "</code>&nbsp;in class&nbsp;<code><a href=\"../pkg/Parent.html\" " +
+            "title=\"class in pkg\">Parent</a>&lt;<a href=\"../pkg/Child.html\" " +
+            "title=\"type parameter in Child\">T</a>&gt;</code></dd>"
          },
     };
     private static final String[][] NEGATED_TEST = {
         {BUG_ID + FS + "pkg" + FS + "Interface.html",
-            "public int <STRONG>method</STRONG>()"},
+            "public int&nbsp;method()"},
         {BUG_ID + FS + "pkg" + FS + "Interface.html",
-            "public static final int <STRONG>field</STRONG>"},
+            "public static final&nbsp;int field"},
     };
 
     /**
--- a/langtools/test/com/sun/javadoc/testJavascript/TestJavascript.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testJavascript/TestJavascript.java	Wed Dec 01 11:02:38 2010 -0800
@@ -45,11 +45,11 @@
     //Input for string search tests.
     private static final String[][] TEST = {
         {BUG_ID + FS + "pkg" + FS + "C.html",
-            "<A HREF=\"../index.html?pkg/C.html\" target=\"_top\"><STRONG>FRAMES</STRONG></A>"},
+            "<a href=\"../index.html?pkg/C.html\" target=\"_top\">FRAMES</a>"},
         {BUG_ID + FS + "TestJavascript.html",
-            "<A HREF=\"index.html?TestJavascript.html\" target=\"_top\"><STRONG>FRAMES</STRONG></A>"},
+            "<a href=\"index.html?TestJavascript.html\" target=\"_top\">FRAMES</a>"},
         {BUG_ID + FS + "index.html",
-            "<SCRIPT type=\"text/javascript\">" + NL +
+            "<script type=\"text/javascript\">" + NL +
                         "    targetPage = \"\" + window.location.search;" + NL +
             "    if (targetPage != \"\" && targetPage != \"undefined\")" + NL +
             "        targetPage = targetPage.substring(1);" + NL +
@@ -59,7 +59,7 @@
             "        if (targetPage != \"\" && targetPage != \"undefined\")" + NL +
             "             top.classFrame.location = top.targetPage;" + NL +
             "    }" + NL +
-            "</SCRIPT>"},
+            "</script>"},
 
         //Make sure title javascript only runs if is-external is not true
         {BUG_ID + FS + "pkg" + FS + "C.html",
--- a/langtools/test/com/sun/javadoc/testLinkOption/TestLinkOption.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testLinkOption/TestLinkOption.java	Wed Dec 01 11:02:38 2010 -0800
@@ -46,25 +46,25 @@
 
     private static final String[][] TEST1 = {
         {BUG_ID + "-1" + FS + "pkg" + FS + "C.html",
-            "<A HREF=\"http://java.sun.com/j2se/1.4/docs/api/java/lang/String.html?is-external=true\" " +
-            "title=\"class or interface in java.lang\"><CODE>Link to String Class</CODE></A>"
+            "<a href=\"http://java.sun.com/j2se/1.4/docs/api/java/lang/String.html?is-external=true\" " +
+            "title=\"class or interface in java.lang\"><code>Link to String Class</code></a>"
         },
         //Make sure the parameters are indented properly when the -link option is used.
         {BUG_ID + "-1" + FS + "pkg" + FS + "C.html",
                                 "(int&nbsp;p1," + NL +
-            "                     int&nbsp;p2," + NL +
-            "                     int&nbsp;p3)"
+                                "      int&nbsp;p2," + NL +
+                                "      int&nbsp;p3)"
         },
         {BUG_ID + "-1" + FS + "pkg" + FS + "C.html",
                                 "(int&nbsp;p1," + NL +
-            "                     int&nbsp;p2," + NL +
-            "                     " +
-            "<A HREF=\"http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html?is-external=true\" " +
-            "title=\"class or interface in java.lang\">Object</A>&nbsp;p3)"
+                                "      int&nbsp;p2," + NL +
+                                "      <a href=\"http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">" +
+                                "Object</a>&nbsp;p3)"
         },
         {BUG_ID + "-1" + FS + "java" + FS + "lang" + FS + "StringBuilderChild.html",
-                "public abstract class <STRONG>StringBuilderChild</STRONG>" + NL +
-                "extends <A HREF=\"http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</A>"
+                "<pre>public abstract class <strong>StringBuilderChild</strong>" + NL +
+                "extends <a href=\"http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html?is-external=true\" " +
+                "title=\"class or interface in java.lang\">Object</a></pre>"
         },
 
     };
@@ -79,8 +79,8 @@
 
     private static final String[][] TEST2 = {
         {BUG_ID + "-2" + FS + "pkg2" + FS + "C2.html",
-            "This is a link to <A HREF=\"../../" + BUG_ID + "-1/pkg/C.html?is-external=true\" " +
-            "title=\"class or interface in pkg\"><CODE>Class C</CODE></A>."
+            "This is a link to <a href=\"../../" + BUG_ID + "-1/pkg/C.html?is-external=true\" " +
+            "title=\"class or interface in pkg\"><code>Class C</code></a>."
         }
     };
     private static final String[][] NEGATED_TEST2 = NO_TEST;
--- a/langtools/test/com/sun/javadoc/testLinkTaglet/TestLinkTaglet.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testLinkTaglet/TestLinkTaglet.java	Wed Dec 01 11:02:38 2010 -0800
@@ -46,20 +46,22 @@
     //Input for string search tests.
     private static final String[][] TEST = {
         {BUG_ID + FS + "pkg" + FS + "C.html",
-            "Qualified Link: <A HREF=\"../pkg/C.InnerC.html\" title=\"class in pkg\"><CODE>C.InnerC</CODE></A>.<br/>\n" +
-            " Unqualified Link1: <A HREF=\"../pkg/C.InnerC.html\" title=\"class in pkg\"><CODE>C.InnerC</CODE></A>.<br/>\n" +
-            " Unqualified Link2: <A HREF=\"../pkg/C.InnerC.html\" title=\"class in pkg\"><CODE>C.InnerC</CODE></A>.<br/>\n" +
-            " Qualified Link: <A HREF=\"../pkg/C.html#method(pkg.C.InnerC, pkg.C.InnerC2)\"><CODE>method(pkg.C.InnerC, pkg.C.InnerC2)</CODE></A>.<br/>\n" +
-            " Unqualified Link: <A HREF=\"../pkg/C.html#method(pkg.C.InnerC, pkg.C.InnerC2)\"><CODE>method(C.InnerC, C.InnerC2)</CODE></A>.<br/>\n" +
-            " Unqualified Link: <A HREF=\"../pkg/C.html#method(pkg.C.InnerC, pkg.C.InnerC2)\"><CODE>method(InnerC, InnerC2)</CODE></A>.<br/>"
+            "Qualified Link: <a href=\"../pkg/C.InnerC.html\" title=\"class in pkg\"><code>C.InnerC</code></a>.<br/>\n" +
+            " Unqualified Link1: <a href=\"../pkg/C.InnerC.html\" title=\"class in pkg\"><code>C.InnerC</code></a>.<br/>\n" +
+            " Unqualified Link2: <a href=\"../pkg/C.InnerC.html\" title=\"class in pkg\"><code>C.InnerC</code></a>.<br/>\n" +
+            " Qualified Link: <a href=\"../pkg/C.html#method(pkg.C.InnerC, pkg.C.InnerC2)\"><code>method(pkg.C.InnerC, pkg.C.InnerC2)</code></a>.<br/>\n" +
+            " Unqualified Link: <a href=\"../pkg/C.html#method(pkg.C.InnerC, pkg.C.InnerC2)\"><code>method(C.InnerC, C.InnerC2)</code></a>.<br/>\n" +
+            " Unqualified Link: <a href=\"../pkg/C.html#method(pkg.C.InnerC, pkg.C.InnerC2)\"><code>method(InnerC, InnerC2)</code></a>.<br/>"
         },
         {BUG_ID + FS + "pkg" + FS + "C.InnerC.html",
-            "Link to member in outer class: <A HREF=\"../pkg/C.html#MEMBER\"><CODE>C.MEMBER</CODE></A> <br/>\n" +
-            " Link to member in inner class: <A HREF=\"../pkg/C.InnerC2.html#MEMBER2\"><CODE>C.InnerC2.MEMBER2</CODE></A> <br/>\n" +
-            " Link to another inner class: <A HREF=\"../pkg/C.InnerC2.html\" title=\"class in pkg\"><CODE>C.InnerC2</CODE></A>"
+            "Link to member in outer class: <a href=\"../pkg/C.html#MEMBER\"><code>C.MEMBER</code></a> <br/>\n" +
+            " Link to member in inner class: <a href=\"../pkg/C.InnerC2.html#MEMBER2\"><code>C.InnerC2.MEMBER2</code></a> <br/>\n" +
+            " Link to another inner class: <a href=\"../pkg/C.InnerC2.html\" title=\"class in pkg\"><code>C.InnerC2</code></a>"
         },
         {BUG_ID + FS + "pkg" + FS + "C.InnerC2.html",
-            "Enclosing class:</STRONG></DT><DD><A HREF=\"../pkg/C.html\" title=\"class in pkg\">C</A>"
+            "<dl>" + NL + "<dt>Enclosing class:</dt>" + NL +
+            "<dd><a href=\"../pkg/C.html\" title=\"class in pkg\">C</a></dd>" + NL +
+            "</dl>"
         },
     };
     private static final String[][] NEGATED_TEST = {
--- a/langtools/test/com/sun/javadoc/testLinkToSerialForm/TestLinkToSerialForm.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testLinkToSerialForm/TestLinkToSerialForm.java	Wed Dec 01 11:02:38 2010 -0800
@@ -37,8 +37,8 @@
 
     private static final String BUG_ID = "4521661";
     private static final String[][] TEST = {
-        {BUG_ID + FS + "serialized-form.html", "<A NAME=\"pkg.C\">"},
-        {BUG_ID + FS + "pkg" + FS + "C.html", "<A HREF=\"../serialized-form.html#pkg.C\">"}
+        {BUG_ID + FS + "serialized-form.html", "<a name=\"pkg.C\">"},
+        {BUG_ID + FS + "pkg" + FS + "C.html", "<a href=\"../serialized-form.html#pkg.C\">"}
     };
     private static final String[][] NEGATED_TEST = NO_TEST;
     private static final String[] ARGS =
--- a/langtools/test/com/sun/javadoc/testMemberInheritence/TestMemberInheritence.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testMemberInheritence/TestMemberInheritence.java	Wed Dec 01 11:02:38 2010 -0800
@@ -40,55 +40,57 @@
     private static final String[][] TEST = {
         //Public field should be inherited
         {BUG_ID + FS + "pkg" + FS + "SubClass.html",
-         "<A HREF=\"../pkg/BaseClass.html#pubField\">"},
+         "<a href=\"../pkg/BaseClass.html#pubField\">"},
 
         //Public method should be inherited
         {BUG_ID + FS + "pkg" + FS + "SubClass.html",
-         "<A HREF=\"../pkg/BaseClass.html#pubMethod()\">"},
+         "<a href=\"../pkg/BaseClass.html#pubMethod()\">"},
 
         //Public inner class should be inherited.
         {BUG_ID + FS + "pkg" + FS + "SubClass.html",
-         "<A HREF=\"../pkg/BaseClass.pubInnerClass.html\" title=\"class in pkg\">"},
+         "<a href=\"../pkg/BaseClass.pubInnerClass.html\" title=\"class in pkg\">"},
 
         //Protected field should be inherited
         {BUG_ID + FS + "pkg" + FS + "SubClass.html",
-         "<A HREF=\"../pkg/BaseClass.html#proField\">"},
+         "<a href=\"../pkg/BaseClass.html#proField\">"},
 
         //Protected method should be inherited
         {BUG_ID + FS + "pkg" + FS + "SubClass.html",
-         "<A HREF=\"../pkg/BaseClass.html#proMethod()\">"},
+         "<a href=\"../pkg/BaseClass.html#proMethod()\">"},
 
         //Protected inner class should be inherited.
         {BUG_ID + FS + "pkg" + FS + "SubClass.html",
-         "<A HREF=\"../pkg/BaseClass.proInnerClass.html\" title=\"class in pkg\">"},
+         "<a href=\"../pkg/BaseClass.proInnerClass.html\" title=\"class in pkg\">"},
 
         // New labels as of 1.5.0
         {BUG_ID + FS + "pkg" + FS + "SubClass.html",
-         "<STRONG>Nested classes/interfaces inherited from class pkg." +
-         "<A HREF=\"../pkg/BaseClass.html\" title=\"class in pkg\">" +
-         "BaseClass</A></STRONG>"},
+         "Nested classes/interfaces inherited from class&nbsp;pkg." +
+                 "<a href=\"../pkg/BaseClass.html\" title=\"class in pkg\">BaseClass</a>"},
         {BUG_ID + FS + "pkg" + FS + "SubClass.html",
-         "<STRONG>Nested classes/interfaces inherited from interface pkg." +
-         "<A HREF=\"../pkg/BaseInterface.html\" title=\"interface in pkg\">" +
-         "BaseInterface</A></STRONG>"},
+         "Nested classes/interfaces inherited from interface&nbsp;pkg." +
+                 "<a href=\"../pkg/BaseInterface.html\" title=\"interface in pkg\">BaseInterface</a>"},
 
          // Test overriding/implementing methods with generic parameters.
                  {BUG_ID + FS + "pkg" + FS + "BaseClass.html",
-         "<DT><STRONG>Specified by:</STRONG></DT><DD><CODE><A HREF=\"../pkg/BaseInterface.html#getAnnotation(java.lang.Class)\">getAnnotation</A></CODE> in interface <CODE><A HREF=\"../pkg/BaseInterface.html\" title=\"interface in pkg\">BaseInterface</A></CODE></DD>"+NL+"</DL>"},
+         "<dl>" + NL + "<dt><strong>Specified by:</strong></dt>" + NL +
+                          "<dd><code><a href=\"../pkg/BaseInterface.html#getAnnotation(java.lang.Class)\">" +
+                          "getAnnotation</a></code>&nbsp;in interface&nbsp;<code>" +
+                          "<a href=\"../pkg/BaseInterface.html\" title=\"interface in pkg\">" +
+                          "BaseInterface</a></code></dd>" + NL + "</dl>"},
 
          // Test diamond inheritence member summary (6256068)
                  {BUG_ID + FS + "diamond" + FS + "Z.html",
-                 "<TD><CODE><A HREF=\"../diamond/A.html#aMethod()\">aMethod</A></CODE></TD>"},
+                 "<code><a href=\"../diamond/A.html#aMethod()\">aMethod</a></code>"},
 
          // Test that doc is inherited from closed parent (6270645)
                  {BUG_ID + FS + "inheritDist" + FS + "C.html",
-                 "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m1-B</TD>"},
+                 "<div class=\"block\">m1-B</div>"},
 
     };
 
     private static final String[][] NEGATED_TEST = {
         {BUG_ID + FS + "pkg" + FS + "SubClass.html",
-        "<A HREF=\"../pkg/BaseClass.html#staticMethod()\">staticMethod</A></CODE>"},
+        "<a href=\"../pkg/BaseClass.html#staticMethod()\">staticMethod</a></code>"},
     };
     private static final String[] ARGS =
         new String[] {
--- a/langtools/test/com/sun/javadoc/testMemberSummary/TestMemberSummary.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testMemberSummary/TestMemberSummary.java	Wed Dec 01 11:02:38 2010 -0800
@@ -48,21 +48,23 @@
     private static final String[][] TEST = {
         // Check return type in member summary.
         {BUG_ID + FS + "pkg" + FS + "PublicChild.html",
-            "<CODE>&nbsp;<A HREF=\"../pkg/PublicChild.html\" " +
-            "title=\"class in pkg\">PublicChild</A></CODE></FONT></TD>" + NL +
-            "<TD><CODE><STRONG><A HREF=\"../pkg/PublicChild.html#" +
-            "returnTypeTest()\">returnTypeTest</A></STRONG>()</CODE>"
+            "<code><a href=\"../pkg/PublicChild.html\" title=\"class in pkg\">PublicChild</a></code></td>" + NL +
+            "<td class=\"colLast\"><code><strong><a href=\"../pkg/PublicChild.html#returnTypeTest()\">" +
+            "returnTypeTest</a></strong>()</code>"
         },
         // Check return type in member detail.
         {BUG_ID + FS + "pkg" + FS + "PublicChild.html",
-            "public <A HREF=\"../pkg/PublicChild.html\" " +
-            "title=\"class in pkg\">PublicChild</A> " +
-            "<STRONG>returnTypeTest</STRONG>()"
+            "<pre>public&nbsp;<a href=\"../pkg/PublicChild.html\" title=\"class in pkg\">" +
+            "PublicChild</a>&nbsp;returnTypeTest()</pre>"
         },
 
          // Legacy anchor dimensions (6290760)
         {BUG_ID + FS + "pkg2" + FS + "A.html",
-            "<A NAME=\"f(java.lang.Object[])\"><!-- --></A><A NAME=\"f(T[])\"><!-- --></A>"
+            "<a name=\"f(java.lang.Object[])\">" + NL +
+            "<!--   -->" + NL +
+            "</a><a name=\"f(T[])\">" + NL +
+            "<!--   -->" + NL +
+            "</a>"
         },
     };
     private static final String[][] NEGATED_TEST = NO_TEST;
--- a/langtools/test/com/sun/javadoc/testNavagation/TestNavagation.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testNavagation/TestNavagation.java	Wed Dec 01 11:02:38 2010 -0800
@@ -45,24 +45,24 @@
 
     //Input for string search tests.
     private static final String[][] TEST = {
-        {BUG_ID + FS + "pkg" + FS + "A.html", "&nbsp;PREV CLASS&nbsp;"},
+        {BUG_ID + FS + "pkg" + FS + "A.html", "<li>PREV CLASS</li>"},
         {BUG_ID + FS + "pkg" + FS + "A.html",
-            "<A HREF=\"../pkg/C.html\" title=\"class in pkg\"><STRONG>NEXT CLASS</STRONG></A>"},
+            "<a href=\"../pkg/C.html\" title=\"class in pkg\"><span class=\"strong\">NEXT CLASS</span></a>"},
         {BUG_ID + FS + "pkg" + FS + "C.html",
-            "<A HREF=\"../pkg/A.html\" title=\"annotation in pkg\"><STRONG>PREV CLASS</STRONG></A>"},
+            "<a href=\"../pkg/A.html\" title=\"annotation in pkg\"><span class=\"strong\">PREV CLASS</span></a>"},
         {BUG_ID + FS + "pkg" + FS + "C.html",
-            "<A HREF=\"../pkg/E.html\" title=\"enum in pkg\"><STRONG>NEXT CLASS</STRONG></A>"},
+            "<a href=\"../pkg/E.html\" title=\"enum in pkg\"><span class=\"strong\">NEXT CLASS</span></a>"},
         {BUG_ID + FS + "pkg" + FS + "E.html",
-            "<A HREF=\"../pkg/C.html\" title=\"class in pkg\"><STRONG>PREV CLASS</STRONG></A>"},
+            "<a href=\"../pkg/C.html\" title=\"class in pkg\"><span class=\"strong\">PREV CLASS</span></a>"},
         {BUG_ID + FS + "pkg" + FS + "E.html",
-            "<A HREF=\"../pkg/I.html\" title=\"interface in pkg\"><STRONG>NEXT CLASS</STRONG></A>"},
+            "<a href=\"../pkg/I.html\" title=\"interface in pkg\"><span class=\"strong\">NEXT CLASS</span></a>"},
         {BUG_ID + FS + "pkg" + FS + "I.html",
-            "<A HREF=\"../pkg/E.html\" title=\"enum in pkg\"><STRONG>PREV CLASS</STRONG></A>"},
-        {BUG_ID + FS + "pkg" + FS + "I.html", "&nbsp;NEXT CLASS"},
+            "<a href=\"../pkg/E.html\" title=\"enum in pkg\"><span class=\"strong\">PREV CLASS</span></a>"},
+        {BUG_ID + FS + "pkg" + FS + "I.html", "<li>NEXT CLASS</li>"},
         // Test for 4664607
         {BUG_ID + FS + "pkg" + FS + "I.html",
-            "<TD COLSPAN=2 BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\">" + NL +
-            "<A NAME=\"navbar_top_firstrow\"><!-- --></A>"}
+            "<a href=\"#skip-navbar_top\" title=\"Skip navigation links\"></a><a name=\"navbar_top_firstrow\">" + NL +
+            "<!--   -->" + NL + "</a>"}
     };
     private static final String[][] NEGATED_TEST = NO_TEST;
 
--- a/langtools/test/com/sun/javadoc/testNewLanguageFeatures/TestNewLanguageFeatures.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testNewLanguageFeatures/TestNewLanguageFeatures.java	Wed Dec 01 11:02:38 2010 -0800
@@ -51,18 +51,18 @@
             // ENUM TESTING
             //=================================
             //Make sure enum header is correct.
-            {BUG_ID + FS + "pkg" + FS + "Coin.html", "Enum Coin</H2>"},
+            {BUG_ID + FS + "pkg" + FS + "Coin.html", "Enum Coin</h2>"},
             //Make sure enum signature is correct.
-            {BUG_ID + FS + "pkg" + FS + "Coin.html", "public enum "+
-                "<STRONG>Coin</STRONG>" + NL + "extends java.lang.Enum&lt;" +
-                "<A HREF=\"../pkg/Coin.html\" title=\"enum in pkg\">Coin</A>&gt;"
+            {BUG_ID + FS + "pkg" + FS + "Coin.html", "<pre>public enum <strong>Coin</strong>" + NL +
+                "extends java.lang.Enum&lt;<a href=\"../pkg/Coin.html\" " +
+                "title=\"enum in pkg\">Coin</a>&gt;</pre>"
             },
             //Check for enum constant section
-            {BUG_ID + FS + "pkg" + FS + "Coin.html", "<CAPTION CLASS=\"TableCaption\">" + NL +
-                     "Enum Constant Summary</CAPTION>"},
+            {BUG_ID + FS + "pkg" + FS + "Coin.html", "<caption><span>Enum Constants" +
+                     "</span><span class=\"tabEnd\">&nbsp;</span></caption>"},
             //Detail for enum constant
             {BUG_ID + FS + "pkg" + FS + "Coin.html",
-                "<STRONG><A HREF=\"../pkg/Coin.html#Dime\">Dime</A></STRONG>"},
+                "<strong><a href=\"../pkg/Coin.html#Dime\">Dime</a></strong>"},
             //Automatically insert documentation for values() and valueOf().
             {BUG_ID + FS + "pkg" + FS + "Coin.html",
                 "Returns an array containing the constants of this enum type,"},
@@ -77,38 +77,39 @@
             //=================================
             //Make sure the header is correct.
             {BUG_ID + FS + "pkg" + FS + "TypeParameters.html",
-                "Class TypeParameters&lt;E&gt;</H2>"},
+                "Class TypeParameters&lt;E&gt;</h2>"},
             //Check class type parameters section.
             {BUG_ID + FS + "pkg" + FS + "TypeParameters.html",
-                "<DT><STRONG>Type Parameters:</STRONG></DT><DD><CODE>E</CODE> - " +
+                "<dt><span class=\"strong\">Type Parameters:</span></dt><dd><code>E</code> - " +
                 "the type parameter for this class."},
             //Type parameters in @see/@link
             {BUG_ID + FS + "pkg" + FS + "TypeParameters.html",
-                "<DT><STRONG>See Also:</STRONG></DT><DD><A HREF=\"../pkg/TypeParameters.html\" " +
-                    "title=\"class in pkg\"><CODE>TypeParameters</CODE></A></DD></DL>"},
+                "<dl><dt><span class=\"strong\">See Also:</span></dt><dd>" +
+                "<a href=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
+                "<code>TypeParameters</code></a></dd></dl>"},
             //Method that uses class type parameter.
             {BUG_ID + FS + "pkg" + FS + "TypeParameters.html",
-                "(<A HREF=\"../pkg/TypeParameters.html\" title=\"type " +
-                    "parameter in TypeParameters\">E</A>&nbsp;param)"},
+                "(<a href=\"../pkg/TypeParameters.html\" title=\"type " +
+                    "parameter in TypeParameters\">E</a>&nbsp;param)"},
             //Method type parameter section.
             {BUG_ID + FS + "pkg" + FS + "TypeParameters.html",
-                "<STRONG>Type Parameters:</STRONG></DT><DD><CODE>T</CODE> - This is the first " +
-                    "type parameter.</DD><DD><CODE>V</CODE> - This is the second type " +
+                "<span class=\"strong\">Type Parameters:</span></dt><dd><code>T</code> - This is the first " +
+                    "type parameter.</dd><dd><code>V</code> - This is the second type " +
                     "parameter."},
             //Signature of method with type parameters
             {BUG_ID + FS + "pkg" + FS + "TypeParameters.html",
-                "public &lt;T extends java.util.List,V&gt; " +
-                    "java.lang.String[] <STRONG>methodThatHasTypeParameters</STRONG>"},
+                "public&nbsp;&lt;T extends java.util.List,V&gt;&nbsp;" +
+                "java.lang.String[]&nbsp;methodThatHasTypeParameters"},
             //Wildcard testing.
             {BUG_ID + FS + "pkg" + FS + "Wildcards.html",
-                "<A HREF=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
-                "TypeParameters</A>&lt;? super java.lang.String&gt;&nbsp;a"},
+                "<a href=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
+                "TypeParameters</a>&lt;? super java.lang.String&gt;&nbsp;a"},
             {BUG_ID + FS + "pkg" + FS + "Wildcards.html",
-                "<A HREF=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
-                "TypeParameters</A>&lt;? extends java.lang.StringBuffer&gt;&nbsp;b"},
+                "<a href=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
+                "TypeParameters</a>&lt;? extends java.lang.StringBuffer&gt;&nbsp;b"},
             {BUG_ID + FS + "pkg" + FS + "Wildcards.html",
-                "<A HREF=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
-                    "TypeParameters</A>&nbsp;c"},
+                "<a href=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
+                    "TypeParameters</a>&nbsp;c"},
             //Bad type parameter warnings.
             {WARNING_OUTPUT, "warning - @param argument " +
                 "\"<BadClassTypeParam>\" is not a type parameter name."},
@@ -117,18 +118,27 @@
 
             //Signature of subclass that has type parameters.
             {BUG_ID + FS + "pkg" + FS + "TypeParameterSubClass.html",
-                "public class <STRONG>TypeParameterSubClass&lt;T extends java.lang.String&gt;" +
-                "</STRONG>" + NL + "extends <A HREF=\"../pkg/TypeParameterSuperClass.html\" " +
-                "title=\"class in pkg\">TypeParameterSuperClass</A>&lt;T&gt;"},
+                "<pre>public class <strong>TypeParameterSubClass&lt;T extends " +
+                "java.lang.String&gt;</strong>" + NL + "extends " +
+                "<a href=\"../pkg/TypeParameterSuperClass.html\" title=\"class in pkg\">" +
+                "TypeParameterSuperClass</a>&lt;T&gt;</pre>"},
 
             //Interface generic parameter substitution
             //Signature of subclass that has type parameters.
             {BUG_ID + FS + "pkg" + FS + "TypeParameters.html",
-                "<STRONG>All Implemented Interfaces:</STRONG></DT> <DD><A HREF=\"../pkg/SubInterface.html\" title=\"interface in pkg\">SubInterface</A>&lt;E&gt;, <A HREF=\"../pkg/SuperInterface.html\" title=\"interface in pkg\">SuperInterface</A>&lt;E&gt;</DD>"},
+                "<dl>" + NL + "<dt>All Implemented Interfaces:</dt>" + NL +
+                "<dd><a href=\"../pkg/SubInterface.html\" title=\"interface in pkg\">" +
+                "SubInterface</a>&lt;E&gt;, <a href=\"../pkg/SuperInterface.html\" " +
+                "title=\"interface in pkg\">SuperInterface</a>&lt;E&gt;</dd>" + NL +
+                "</dl>"},
             {BUG_ID + FS + "pkg" + FS + "SuperInterface.html",
-                "<STRONG>All Known Subinterfaces:</STRONG></DT> <DD><A HREF=\"../pkg/SubInterface.html\" title=\"interface in pkg\">SubInterface</A>&lt;V&gt;</DD>"},
+                "<dl>" + NL + "<dt>All Known Subinterfaces:</dt>" + NL +
+                "<dd><a href=\"../pkg/SubInterface.html\" title=\"interface in pkg\">" +
+                "SubInterface</a>&lt;V&gt;</dd>" + NL + "</dl>"},
             {BUG_ID + FS + "pkg" + FS + "SubInterface.html",
-                "<STRONG>All Superinterfaces:</STRONG></DT> <DD><A HREF=\"../pkg/SuperInterface.html\" title=\"interface in pkg\">SuperInterface</A>&lt;V&gt;</DD>"},
+                "<dl>" + NL + "<dt>All Superinterfaces:</dt>" + NL +
+                "<dd><a href=\"../pkg/SuperInterface.html\" title=\"interface in pkg\">" +
+                "SuperInterface</a>&lt;V&gt;</dd>" + NL + "</dl>"},
 
             //=================================
             // VAR ARG TESTING
@@ -137,39 +147,40 @@
             {BUG_ID + FS + "pkg" + FS + "VarArgs.html", "(int[][]...&nbsp;i)"},
             {BUG_ID + FS + "pkg" + FS + "VarArgs.html", "(int[]...)"},
             {BUG_ID + FS + "pkg" + FS + "VarArgs.html",
-                "<A HREF=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
-                "TypeParameters</A>...&nbsp;t"},
+                "<a href=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
+                "TypeParameters</a>...&nbsp;t"},
 
             //=================================
             // ANNOTATION TYPE TESTING
             //=================================
             //Make sure the summary links are correct.
             {BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
-                "SUMMARY:&nbsp;<A HREF=\"#annotation_type_required_element_summary\">" +
-                "REQUIRED</A>&nbsp;|&nbsp;<A HREF=\"#annotation_type_optional_element_summary\">" +
-                "OPTIONAL</A>"},
+                "<li>SUMMARY:&nbsp;</li>" + NL +
+                "<li><a href=\"#annotation_type_required_element_summary\">" +
+                "REQUIRED</a>&nbsp;|&nbsp;</li>" + NL + "<li>" +
+                "<a href=\"#annotation_type_optional_element_summary\">OPTIONAL</a></li>"},
             //Make sure the detail links are correct.
             {BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
-                "DETAIL:&nbsp;<A HREF=\"#annotation_type_element_detail\">ELEMENT</A>"},
+                "<li>DETAIL:&nbsp;</li>" + NL +
+                "<li><a href=\"#annotation_type_element_detail\">ELEMENT</a></li>"},
             //Make sure the heading is correct.
             {BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
-                "Annotation Type AnnotationType</H2>"},
+                "Annotation Type AnnotationType</h2>"},
             //Make sure the signature is correct.
             {BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
-                "public @interface <STRONG>AnnotationType</STRONG>"},
+                "public @interface <strong>AnnotationType</strong>"},
             //Make sure member summary headings are correct.
             {BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
-                "<CAPTION CLASS=\"TableCaption\">" + NL +
-                "Required Element Summary</CAPTION>"},
+                "<h3>Required Element Summary</h3>"},
             {BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
-                "<CAPTION CLASS=\"TableCaption\">" + NL +
-                "Optional Element Summary</CAPTION>"},
+                "<h3>Optional Element Summary</h3>"},
             //Make sure element detail heading is correct
             {BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
                 "Element Detail"},
             //Make sure default annotation type value is printed when necessary.
             {BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
-                "<STRONG>Default:</STRONG></DT><DD>\"unknown\"</DD>"},
+                "<dl>" + NL + "<dt>Default:</dt>" + NL + "<dd>\"unknown\"</dd>" + NL +
+                "</dl>"},
 
             //=================================
             // ANNOTATION TYPE USAGE TESTING
@@ -177,51 +188,65 @@
 
             //PACKAGE
             {BUG_ID + FS + "pkg" + FS + "package-summary.html",
-                "<A HREF=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</A>(<A HREF=\"../pkg/AnnotationType.html#optional()\">optional</A>=\"Package Annotation\"," + NL +
-                "                <A HREF=\"../pkg/AnnotationType.html#required()\">required</A>=1994)"},
+                "<a href=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</a>(<a href=\"../pkg/AnnotationType.html#optional()\">optional</a>=\"Package Annotation\"," + NL +
+                "                <a href=\"../pkg/AnnotationType.html#required()\">required</a>=1994)"},
 
             //CLASS
             {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
-                "<FONT SIZE=\"-1\">" +
-                "<A HREF=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</A>(<A HREF=\"../pkg/AnnotationType.html#optional()\">optional</A>=\"Class Annotation\","+NL +
-                "                <A HREF=\"../pkg/AnnotationType.html#required()\">required</A>=1994)"+NL +
-                "</FONT>public class <STRONG>AnnotationTypeUsage</STRONG>" + NL +
-                "extends java.lang.Object"},
+                "<pre><a href=\"../pkg/AnnotationType.html\" " +
+                "title=\"annotation in pkg\">@AnnotationType</a>(" +
+                "<a href=\"../pkg/AnnotationType.html#optional()\">optional</a>" +
+                "=\"Class Annotation\"," + NL +
+                "                <a href=\"../pkg/AnnotationType.html#required()\">" +
+                "required</a>=1994)" + NL + "public class <strong>" +
+                "AnnotationTypeUsage</strong>" + NL + "extends java.lang.Object</pre>"},
 
             //FIELD
             {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
-                "<FONT SIZE=\"-1\">" +
-                "<A HREF=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</A>(<A HREF=\"../pkg/AnnotationType.html#optional()\">optional</A>=\"Field Annotation\","+NL +
-                "                <A HREF=\"../pkg/AnnotationType.html#required()\">required</A>=1994)"+NL +
-                "</FONT>public int <STRONG>field</STRONG>"},
+                "<pre><a href=\"../pkg/AnnotationType.html\" " +
+                "title=\"annotation in pkg\">@AnnotationType</a>(" +
+                "<a href=\"../pkg/AnnotationType.html#optional()\">optional</a>" +
+                "=\"Field Annotation\"," + NL +
+                "                <a href=\"../pkg/AnnotationType.html#required()\">" +
+                "required</a>=1994)" + NL + "public&nbsp;int field</pre>"},
 
             //CONSTRUCTOR
             {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
-                "<FONT SIZE=\"-1\">" +
-                "<A HREF=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</A>(<A HREF=\"../pkg/AnnotationType.html#optional()\">optional</A>=\"Constructor Annotation\","+NL +
-                "                <A HREF=\"../pkg/AnnotationType.html#required()\">required</A>=1994)"+NL +
-                "</FONT>public <STRONG>AnnotationTypeUsage</STRONG>()"},
+                "<pre><a href=\"../pkg/AnnotationType.html\" " +
+                "title=\"annotation in pkg\">@AnnotationType</a>(" +
+                "<a href=\"../pkg/AnnotationType.html#optional()\">optional</a>" +
+                "=\"Constructor Annotation\"," + NL +
+                "                <a href=\"../pkg/AnnotationType.html#required()\">" +
+                "required</a>=1994)" + NL + "public&nbsp;AnnotationTypeUsage()</pre>"},
 
             //METHOD
             {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
-                "<FONT SIZE=\"-1\">" +
-                "<A HREF=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</A>(<A HREF=\"../pkg/AnnotationType.html#optional()\">optional</A>=\"Method Annotation\","+NL +
-                "                <A HREF=\"../pkg/AnnotationType.html#required()\">required</A>=1994)"+NL +
-                "</FONT>public void <STRONG>method</STRONG>()"},
+                "<pre><a href=\"../pkg/AnnotationType.html\" " +
+                "title=\"annotation in pkg\">@AnnotationType</a>(" +
+                "<a href=\"../pkg/AnnotationType.html#optional()\">optional</a>" +
+                "=\"Method Annotation\"," + NL +
+                "                <a href=\"../pkg/AnnotationType.html#required()\">" +
+                "required</a>=1994)" + NL + "public&nbsp;void&nbsp;method()</pre>"},
 
             //METHOD PARAMS
             {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
-                "<PRE>" + NL +
-                "public void <STRONG>methodWithParams</STRONG>(<FONT SIZE=\"-1\"><A HREF=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</A>(<A HREF=\"../pkg/AnnotationType.html#optional()\">optional</A>=\"Parameter Annotation\",<A HREF=\"../pkg/AnnotationType.html#required()\">required</A>=1994)</FONT>" + NL +
-                "                             int&nbsp;documented," + NL +
-                "                             int&nbsp;undocmented)</PRE>"},
+                "<pre>public&nbsp;void&nbsp;methodWithParams(" +
+                "<a href=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">" +
+                "@AnnotationType</a>(<a href=\"../pkg/AnnotationType.html#optional()\">" +
+                "optional</a>=\"Parameter Annotation\",<a " +
+                "href=\"../pkg/AnnotationType.html#required()\">required</a>=1994)" + NL +
+                "                    int&nbsp;documented," + NL +
+                "                    int&nbsp;undocmented)</pre>"},
 
             //CONSTRUCTOR PARAMS
             {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
-                "<PRE>" + NL +
-                                "public <STRONG>AnnotationTypeUsage</STRONG>(<FONT SIZE=\"-1\"><A HREF=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</A>(<A HREF=\"../pkg/AnnotationType.html#optional()\">optional</A>=\"Constructor Param Annotation\",<A HREF=\"../pkg/AnnotationType.html#required()\">required</A>=1994)</FONT>" + NL +
-                                "                           int&nbsp;documented," + NL +
-                "                           int&nbsp;undocmented)</PRE>"},
+                "<pre>public&nbsp;AnnotationTypeUsage(<a " +
+                "href=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">" +
+                "@AnnotationType</a>(<a href=\"../pkg/AnnotationType.html#optional()\">" +
+                "optional</a>=\"Constructor Param Annotation\",<a " +
+                "href=\"../pkg/AnnotationType.html#required()\">required</a>=1994)" + NL +
+                "                   int&nbsp;documented," + NL +
+                "                   int&nbsp;undocmented)</pre>"},
 
             //=================================
             // ANNOTATION TYPE USAGE TESTING (All Different Types).
@@ -229,59 +254,59 @@
 
             //Integer
             {BUG_ID + FS + "pkg1" + FS + "B.html",
-                "<A HREF=\"../pkg1/A.html#d()\">d</A>=3.14,"},
+                "<a href=\"../pkg1/A.html#d()\">d</a>=3.14,"},
 
             //Double
             {BUG_ID + FS + "pkg1" + FS + "B.html",
-                "<A HREF=\"../pkg1/A.html#d()\">d</A>=3.14,"},
+                "<a href=\"../pkg1/A.html#d()\">d</a>=3.14,"},
 
             //Boolean
             {BUG_ID + FS + "pkg1" + FS + "B.html",
-                "<A HREF=\"../pkg1/A.html#b()\">b</A>=true,"},
+                "<a href=\"../pkg1/A.html#b()\">b</a>=true,"},
 
             //String
             {BUG_ID + FS + "pkg1" + FS + "B.html",
-                "<A HREF=\"../pkg1/A.html#s()\">s</A>=\"sigh\","},
+                "<a href=\"../pkg1/A.html#s()\">s</a>=\"sigh\","},
 
             //Class
             {BUG_ID + FS + "pkg1" + FS + "B.html",
-                "<A HREF=\"../pkg1/A.html#c()\">c</A>=<A HREF=\"../pkg2/Foo.html\" title=\"class in pkg2\">Foo.class</A>,"},
+                "<a href=\"../pkg1/A.html#c()\">c</a>=<a href=\"../pkg2/Foo.html\" title=\"class in pkg2\">Foo.class</a>,"},
 
             //Bounded Class
             {BUG_ID + FS + "pkg1" + FS + "B.html",
-                "<A HREF=\"../pkg1/A.html#w()\">w</A>=<A HREF=\"../pkg/TypeParameterSubClass.html\" title=\"class in pkg\">TypeParameterSubClass.class</A>,"},
+                "<a href=\"../pkg1/A.html#w()\">w</a>=<a href=\"../pkg/TypeParameterSubClass.html\" title=\"class in pkg\">TypeParameterSubClass.class</a>,"},
 
             //Enum
             {BUG_ID + FS + "pkg1" + FS + "B.html",
-                "<A HREF=\"../pkg1/A.html#e()\">e</A>=<A HREF=\"../pkg/Coin.html#Penny\">Penny</A>,"},
+                "<a href=\"../pkg1/A.html#e()\">e</a>=<a href=\"../pkg/Coin.html#Penny\">Penny</a>,"},
 
             //Annotation Type
             {BUG_ID + FS + "pkg1" + FS + "B.html",
-                "<A HREF=\"../pkg1/A.html#a()\">a</A>=<A HREF=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</A>(<A HREF=\"../pkg/AnnotationType.html#optional()\">optional</A>=\"foo\",<A HREF=\"../pkg/AnnotationType.html#required()\">required</A>=1994),"},
+                "<a href=\"../pkg1/A.html#a()\">a</a>=<a href=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</a>(<a href=\"../pkg/AnnotationType.html#optional()\">optional</a>=\"foo\",<a href=\"../pkg/AnnotationType.html#required()\">required</a>=1994),"},
 
             //String Array
             {BUG_ID + FS + "pkg1" + FS + "B.html",
-                "<A HREF=\"../pkg1/A.html#sa()\">sa</A>={\"up\",\"down\"},"},
+                "<a href=\"../pkg1/A.html#sa()\">sa</a>={\"up\",\"down\"},"},
 
             //Primitive
             {BUG_ID + FS + "pkg1" + FS + "B.html",
-                "<A HREF=\"../pkg1/A.html#primitiveClassTest()\">primitiveClassTest</A>=boolean.class,"},
+                "<a href=\"../pkg1/A.html#primitiveClassTest()\">primitiveClassTest</a>=boolean.class,"},
 
             //XXX:  Add array test case after this if fixed:
             //5020899: Incorrect internal representation of class-valued annotation elements
 
             //Make sure that annotations are surrounded by <pre> and </pre>
             {BUG_ID + FS + "pkg1" + FS + "B.html",
-                "<PRE><FONT SIZE=\"-1\"><A HREF=\"../pkg1/A.html\" title=\"annotation in pkg1\">@A</A>"},
+                "<pre><a href=\"../pkg1/A.html\" title=\"annotation in pkg1\">@A</a>"},
             {BUG_ID + FS + "pkg1" + FS + "B.html",
-                "</FONT>public interface <STRONG>B</STRONG></PRE>"},
+                "public interface <strong>B</strong></pre>"},
 
 
             //==============================================================
             // Handle multiple bounds.
             //==============================================================
             {BUG_ID + FS + "pkg" + FS + "MultiTypeParameters.html",
-                "public &lt;T extends java.lang.Number & java.lang.Runnable&gt; T <STRONG>foo</STRONG>(T&nbsp;t)"},
+                "public&nbsp;&lt;T extends java.lang.Number & java.lang.Runnable&gt;&nbsp;T&nbsp;foo(T&nbsp;t)"},
 
             //==============================================================
             // Test Class-Use Documenation for Type Parameters.
@@ -289,347 +314,356 @@
 
             //ClassUseTest1: <T extends Foo & Foo2>
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo.html",
-                     "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-                     "Classes in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-                     "</A> with type parameters of type <A HREF=\"../../pkg2/Foo.html\" " +
-                     "title=\"class in pkg2\">Foo</A></CAPTION>"
+                     "<caption><span>Classes in <a href=\"../../pkg2/" +
+                     "package-summary.html\">pkg2</a> with type parameters of " +
+                     "type <a href=\"../../pkg2/Foo.html\" title=\"class in pkg2\">" +
+                     "Foo</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo.html",
-                "<TD><CODE><STRONG><A HREF=\"../../pkg2/ClassUseTest1.html\" title=\"class in pkg2\">ClassUseTest1&lt;T extends Foo & Foo2&gt;</A></STRONG></CODE>"
+                     "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/" +
+                     "ClassUseTest1.html\" title=\"class in pkg2\">ClassUseTest1" +
+                     "&lt;T extends Foo & Foo2&gt;</a></strong></code>&nbsp;</td>"
+            },
+            {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo.html",
+                     "<caption><span>Methods in <a href=\"../../pkg2/" +
+                     "package-summary.html\">pkg2</a> with type parameters of " +
+                     "type <a href=\"../../pkg2/Foo.html\" title=\"class in " +
+                     "pkg2\">Foo</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo.html",
-                     "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-                     "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-                     "</A> with type parameters of type <A HREF=\"../../pkg2/Foo.html\" " +
-                     "title=\"class in pkg2\">Foo</A></CAPTION>"
+                     "<td class=\"colLast\"><span class=\"strong\">ClassUseTest1." +
+                     "</span><code><strong><a href=\"../../pkg2/" +
+                     "ClassUseTest1.html#method(T)\">method</a></strong>" +
+                     "(T&nbsp;t)</code>&nbsp;</td>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo.html",
-                "<TD><CODE><STRONG>ClassUseTest1.</STRONG><STRONG><A HREF=\"../../pkg2/ClassUseTest1.html#method(T)\">method</A></STRONG>(T&nbsp;t)</CODE>"
+                     "<caption><span>Fields in <a href=\"../../pkg2/" +
+                     "package-summary.html\">pkg2</a> with type parameters of " +
+                     "type <a href=\"../../pkg2/Foo.html\" title=\"class in pkg2\">" +
+                     "Foo</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo.html",
-                     "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-                     "Fields in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-                     "</A> with type parameters of type <A HREF=\"../../pkg2/Foo.html\" " +
-                     "title=\"class in pkg2\">Foo</A></CAPTION>"
-            },
-            {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo.html",
-                "<A HREF=\"../../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest</A>&lt;<A HREF=\"../../pkg2/Foo.html\" title=\"class in pkg2\">Foo</A>&gt;</CODE></FONT></TD>"
+                     "td class=\"colFirst\"><code><a href=\"../../pkg2/" +
+                     "ParamTest.html\" title=\"class in pkg2\">ParamTest</a>" +
+                     "&lt;<a href=\"../../pkg2/Foo.html\" title=\"class in pkg2\"" +
+                     ">Foo</a>&gt;</code></td>"
             },
 
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
-                     "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-                     "Fields in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-                     "</A> declared as <A HREF=\"../../pkg2/ParamTest.html\" " +
-                     "title=\"class in pkg2\">ParamTest</A></CAPTION>"
+                     "<caption><span>Fields in <a href=\"../../pkg2/" +
+                     "package-summary.html\">pkg2</a> declared as <a href=\"../" +
+                     "../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest" +
+                     "</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
-                "<A HREF=\"../../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest</A>&lt;<A HREF=\"../../pkg2/Foo.html\" title=\"class in pkg2\">Foo</A>&gt;</CODE></FONT></TD>"
+                     "<td class=\"colFirst\"><code><a href=\"../../pkg2/" +
+                     "ParamTest.html\" title=\"class in pkg2\">ParamTest</a>&lt;<a " +
+                     "href=\"../../pkg2/Foo.html\" title=\"class in pkg2\">Foo</a" +
+                     ">&gt;</code></td>"
             },
 
            {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo2.html",
-                    "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-                    "Classes in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-                    "</A> with type parameters of type <A HREF=\"../../pkg2/Foo2.html\" " +
-                    "title=\"interface in pkg2\">Foo2</A></CAPTION>"
+                    "<caption><span>Classes in <a href=\"../../pkg2/" +
+                    "package-summary.html\">pkg2</a> with type parameters of " +
+                    "type <a href=\"../../pkg2/Foo2.html\" title=\"interface " +
+                    "in pkg2\">Foo2</a></span><span class=\"tabEnd\">&nbsp;" +
+                    "</span></caption>"
            },
            {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo2.html",
-            "<TD><CODE><STRONG><A HREF=\"../../pkg2/ClassUseTest1.html\" title=\"class in pkg2\">ClassUseTest1&lt;T extends Foo & Foo2&gt;</A></STRONG></CODE>"
+                    "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/" +
+                    "ClassUseTest1.html\" title=\"class in pkg2\">" +
+                    "ClassUseTest1&lt;T extends Foo & Foo2&gt;</a></strong>" +
+                    "</code>&nbsp;</td>"
            },
            {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo2.html",
-                    "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-                    "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-                    "</A> with type parameters of type <A HREF=\"../../pkg2/Foo2.html\" " +
-                    "title=\"interface in pkg2\">Foo2</A></CAPTION>"
+                    "<caption><span>Methods in <a href=\"../../pkg2/" +
+                    "package-summary.html\">pkg2</a> with type parameters of " +
+                    "type <a href=\"../../pkg2/Foo2.html\" title=\"interface " +
+                    "in pkg2\">Foo2</a></span><span class=\"tabEnd\">&nbsp;" +
+                    "</span></caption>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo2.html",
-               "<TD><CODE><STRONG>ClassUseTest1.</STRONG><STRONG><A HREF=\"../../pkg2/ClassUseTest1.html#method(T)\">method</A></STRONG>(T&nbsp;t)</CODE>"
+                     "<td class=\"colLast\"><span class=\"strong\">" +
+                     "ClassUseTest1.</span><code><strong><a href=\"../../" +
+                     "pkg2/ClassUseTest1.html#method(T)\">method</a></strong>" +
+                     "(T&nbsp;t)</code>&nbsp;</td>"
             },
 
             //ClassUseTest2: <T extends ParamTest<Foo3>>
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
-                     "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-                     "Classes in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-                     "</A> with type parameters of type <A HREF=\"../../pkg2/ParamTest.html\" " +
-                     "title=\"class in pkg2\">ParamTest</A></CAPTION>"
+                     "<caption><span>Classes in <a href=\"../../pkg2/" +
+                     "package-summary.html\">pkg2</a> with type parameters of " +
+                     "type <a href=\"../../pkg2/ParamTest.html\" title=\"class " +
+                     "in pkg2\">ParamTest</a></span><span class=\"tabEnd\">" +
+                     "&nbsp;</span></caption>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
-              "<TD><CODE><STRONG><A HREF=\"../../pkg2/ClassUseTest2.html\" title=\"class in pkg2\">ClassUseTest2&lt;T extends ParamTest&lt;<A HREF=\"../../pkg2/Foo3.html\" title=\"class in pkg2\">Foo3</A>&gt;&gt;</A></STRONG></CODE>"
+                     "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/" +
+                     "ClassUseTest2.html\" title=\"class in pkg2\">ClassUseTest2&lt;T " +
+                     "extends ParamTest&lt;<a href=\"../../pkg2/Foo3.html\" title=\"class " +
+                     "in pkg2\">Foo3</a>&gt;&gt;</a></strong></code>&nbsp;</td>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
-                     "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-                     "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-                     "</A> with type parameters of type <A HREF=\"../../pkg2/ParamTest.html\" " +
-                     "title=\"class in pkg2\">ParamTest</A></CAPTION>"
+                     "<caption><span>Methods in <a href=\"../../pkg2/" +
+                     "package-summary.html\">pkg2</a> with type parameters of " +
+                     "type <a href=\"../../pkg2/ParamTest.html\" title=\"class " +
+                     "in pkg2\">ParamTest</a></span><span class=\"tabEnd\">" +
+                     "&nbsp;</span></caption>"
+            },
+            {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
+                     "<td class=\"colLast\"><span class=\"strong\">ClassUseTest2." +
+                     "</span><code><strong><a href=\"../../pkg2/" +
+                     "ClassUseTest2.html#method(T)\">method</a></strong>" +
+                     "(T&nbsp;t)</code>&nbsp;</td>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
-              "<TD><CODE><STRONG>ClassUseTest2.</STRONG><STRONG><A HREF=\"../../pkg2/ClassUseTest2.html#method(T)\">method</A></STRONG>(T&nbsp;t)</CODE>"
+                     "<caption><span>Fields in <a href=\"../../pkg2/" +
+                     "package-summary.html\">pkg2</a> declared as <a href=\"../" +
+                     "../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest" +
+                     "</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
-                     "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-                     "Fields in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-                     "</A> declared as <A HREF=\"../../pkg2/ParamTest.html\" " +
-                     "title=\"class in pkg2\">ParamTest</A></CAPTION>"
+                     "<td class=\"colFirst\"><code><a href=\"../../pkg2/" +
+                     "ParamTest.html\" title=\"class in pkg2\">ParamTest</a>" +
+                     "&lt;<a href=\"../../pkg2/Foo.html\" title=\"class in pkg2\">" +
+                     "Foo</a>&gt;</code></td>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
-              "<A HREF=\"../../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest</A>&lt;<A HREF=\"../../pkg2/Foo.html\" title=\"class in pkg2\">Foo</A>&gt;</CODE></FONT></TD>"
+                     "<caption><span>Methods in <a href=\"../../pkg2/" +
+                     "package-summary.html\">pkg2</a> with type parameters of " +
+                     "type <a href=\"../../pkg2/ParamTest.html\" title=\"class " +
+                     "in pkg2\">ParamTest</a></span><span class=\"tabEnd\">" +
+                     "&nbsp;</span></caption>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
-                     "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-                     "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-                     "</A> with type parameters of type <A HREF=\"../../pkg2/ParamTest.html\" " +
-                     "title=\"class in pkg2\">ParamTest</A></CAPTION>"
-            },
-            {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
-              "&lt;T extends <A HREF=\"../../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest</A>&lt;<A HREF=\"../../pkg2/Foo3.html\" title=\"class in pkg2\">Foo3</A>&gt;&gt;"
+                     "<td class=\"colFirst\"><code>&lt;T extends <a href=\"../" +
+                     "../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest" +
+                     "</a>&lt;<a href=\"../../pkg2/Foo3.html\" title=\"class in " +
+                     "pkg2\">Foo3</a>&gt;&gt;&nbsp;<br><a href=\"../../pkg2/" +
+                     "ParamTest.html\" title=\"class in pkg2\">ParamTest</a>" +
+                     "&lt;<a href=\"../../pkg2/Foo3.html\" title=\"class in " +
+                     "pkg2\">Foo3</a>&gt;</code></td>"
             },
 
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo3.html",
-                     "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-                     "Classes in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-                     "</A> with type parameters of type <A HREF=\"../../pkg2/Foo3.html\" " +
-                     "title=\"class in pkg2\">Foo3</A></CAPTION>"
+                     "<caption><span>Classes in <a href=\"../../pkg2/" +
+                     "package-summary.html\">pkg2</a> with type parameters of " +
+                     "type <a href=\"../../pkg2/Foo3.html\" title=\"class in pkg2\">" +
+                     "Foo3</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo3.html",
-                "<TD><CODE><STRONG><A HREF=\"../../pkg2/ClassUseTest2.html\" title=\"class in pkg2\">ClassUseTest2&lt;T extends ParamTest&lt;<A HREF=\"../../pkg2/Foo3.html\" title=\"class in pkg2\">Foo3</A>&gt;&gt;</A></STRONG></CODE>"
+                     "<td class=\"colLast\"><code><strong><a href=\"../../" +
+                     "pkg2/ClassUseTest2.html\" title=\"class in pkg2\">" +
+                     "ClassUseTest2&lt;T extends ParamTest&lt;<a href=\"../../" +
+                     "pkg2/Foo3.html\" title=\"class in pkg2\">Foo3</a>&gt;&gt;" +
+                     "</a></strong></code>&nbsp;</td>"
+            },
+            {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo3.html",
+                     "<caption><span>Methods in <a href=\"../../pkg2/" +
+                     "package-summary.html\">pkg2</a> with type parameters of " +
+                     "type <a href=\"../../pkg2/Foo3.html\" title=\"class in " +
+                     "pkg2\">Foo3</a></span><span class=\"tabEnd\">&nbsp;" +
+                     "</span></caption>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo3.html",
-                     "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-                     "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-                     "</A> with type parameters of type <A HREF=\"../../pkg2/Foo3.html\" " +
-                     "title=\"class in pkg2\">Foo3</A></CAPTION>"
-            },
-            {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo3.html",
-                "<TD><CODE><STRONG>ClassUseTest2.</STRONG><STRONG><A HREF=\"../../pkg2/ClassUseTest2.html#method(T)\">method</A></STRONG>(T&nbsp;t)</CODE>"
+                     "<td class=\"colLast\"><span class=\"strong\">ClassUseTest2." +
+                     "</span><code><strong><a href=\"../../pkg2/" +
+                     "ClassUseTest2.html#method(T)\">method</a></strong>" +
+                     "(T&nbsp;t)</code>&nbsp;</td>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo3.html",
-                     "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-                     "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-                     "</A> that return types with arguments of type " +
-                     "<A HREF=\"../../pkg2/Foo3.html\" title=\"class in pkg2\">" +
-                     "Foo3</A></CAPTION>"
+                     "<caption><span>Methods in <a href=\"../../pkg2/" +
+                     "package-summary.html\">pkg2</a> that return types with " +
+                     "arguments of type <a href=\"../../pkg2/Foo3.html\" title" +
+                     "=\"class in pkg2\">Foo3</a></span><span class=\"tabEnd\">" +
+                     "&nbsp;</span></caption>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo3.html",
-                "&lt;T extends <A HREF=\"../../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest</A>&lt;<A HREF=\"../../pkg2/Foo3.html\" title=\"class in pkg2\">Foo3</A>&gt;&gt;"
+                     "<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../" +
+                     "pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest</a>&lt;" +
+                     "<a href=\"../../pkg2/Foo3.html\" title=\"class in pkg2\">Foo3" +
+                     "</a>&gt;&gt;&nbsp;<br><a href=\"../../pkg2/ParamTest.html\" " +
+                     "title=\"class in pkg2\">ParamTest</a>&lt;<a href=\"../../pkg2/" +
+                     "Foo3.html\" title=\"class in pkg2\">Foo3</a>&gt;</code></td>"
             },
 
             //ClassUseTest3: <T extends ParamTest2<List<? extends Foo4>>>
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest2.html",
-                     "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-                     "Classes in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-                     "</A> with type parameters of type " +
-                     "<A HREF=\"../../pkg2/ParamTest2.html\" title=\"class in pkg2\">" +
-                     "ParamTest2</A></CAPTION>"
+                     "<caption><span>Classes in <a href=\"../../pkg2/" +
+                     "package-summary.html\">pkg2</a> with type parameters of " +
+                     "type <a href=\"../../pkg2/ParamTest2.html\" title=\"class " +
+                     "in pkg2\">ParamTest2</a></span><span class=\"tabEnd\">" +
+                     "&nbsp;</span></caption>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest2.html",
-                "<TD><CODE><STRONG><A HREF=\"../../pkg2/ClassUseTest3.html\" title=\"class in pkg2\">ClassUseTest3&lt;T extends ParamTest2&lt;java.util.List&lt;? extends Foo4&gt;&gt;&gt;</A></STRONG></CODE>"
+                     "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/" +
+                     "ClassUseTest3.html\" title=\"class in pkg2\">" +
+                     "ClassUseTest3&lt;T extends ParamTest2&lt;java.util.List" +
+                     "&lt;? extends Foo4&gt;&gt;&gt;</a></strong></code>&nbsp;</td>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest2.html",
-                     "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-                     "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-                     "</A> with type parameters of type " +
-                     "<A HREF=\"../../pkg2/ParamTest2.html\" title=\"class in pkg2\">" +
-                     "ParamTest2</A></CAPTION>"
+                     "<caption><span>Methods in <a href=\"../../pkg2/" +
+                     "package-summary.html\">pkg2</a> with type parameters of " +
+                     "type <a href=\"../../pkg2/ParamTest2.html\" title=\"class " +
+                     "in pkg2\">ParamTest2</a></span><span class=\"tabEnd\">" +
+                     "&nbsp;</span></caption>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest2.html",
-                "<TD><CODE><STRONG>ClassUseTest3.</STRONG><STRONG><A HREF=\"../../pkg2/ClassUseTest3.html#method(T)\">method</A></STRONG>(T&nbsp;t)</CODE>"
+                     "<td class=\"colLast\"><span class=\"strong\">ClassUseTest3" +
+                     ".</span><code><strong><a href=\"../../pkg2/ClassUseTest3." +
+                     "html#method(T)\">method</a></strong>(T&nbsp;t)</code>&nbsp;</td>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest2.html",
-                     "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-                     "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-                     "</A> with type parameters of type " +
-                     "<A HREF=\"../../pkg2/ParamTest2.html\" title=\"class in pkg2\">" +
-                     "ParamTest2</A></CAPTION>"
-            },
-            {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest2.html",
-                "&lt;T extends <A HREF=\"../../pkg2/ParamTest2.html\" title=\"class in pkg2\">ParamTest2</A>&lt;java.util.List&lt;? extends <A HREF=\"../../pkg2/Foo4.html\" title=\"class in pkg2\">Foo4</A>&gt;&gt;&gt;"
+                     "<td class=\"colFirst\"><code>&lt;T extends <a href=\"../" +
+                     "../pkg2/ParamTest2.html\" title=\"class in pkg2\">" +
+                     "ParamTest2</a>&lt;java.util.List&lt;? extends <a href=\".." +
+                     "/../pkg2/Foo4.html\" title=\"class in pkg2\">Foo4</a>&gt;" +
+                     "&gt;&gt;&nbsp;<br><a href=\"../../pkg2/ParamTest2.html\" " +
+                     "title=\"class in pkg2\">ParamTest2</a>&lt;java.util.List" +
+                     "&lt;? extends <a href=\"../../pkg2/Foo4.html\" title=\"" +
+                     "class in pkg2\">Foo4</a>&gt;&gt;</code></td>"
             },
 
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo4.html",
-                     "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-                     "Classes in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-                     "</A> with type parameters of type " +
-                     "<A HREF=\"../../pkg2/Foo4.html\" title=\"class in pkg2\">" +
-                     "Foo4</A></CAPTION>"
+                     "<caption><span>Classes in <a href=\"../../pkg2/" +
+                     "package-summary.html\">pkg2</a> with type parameters of " +
+                     "type <a href=\"../../pkg2/Foo4.html\" title=\"class in " +
+                     "pkg2\">Foo4</a></span><span class=\"tabEnd\">&nbsp;" +
+                     "</span></caption>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo4.html",
-                "<TD><CODE><STRONG><A HREF=\"../../pkg2/ClassUseTest3.html\" title=\"class in pkg2\">ClassUseTest3&lt;T extends ParamTest2&lt;java.util.List&lt;? extends Foo4&gt;&gt;&gt;</A></STRONG></CODE>"
+                     "<td class=\"colLast\"><code><strong><a href=\"../../" +
+                     "pkg2/ClassUseTest3.html\" title=\"class in pkg2\">" +
+                     "ClassUseTest3&lt;T extends ParamTest2&lt;java.util.List" +
+                     "&lt;? extends Foo4&gt;&gt;&gt;</a></strong></code>&nbsp;</td>"
+            },
+            {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo4.html",
+                     "<caption><span>Methods in <a href=\"../../pkg2/" +
+                     "package-summary.html\">pkg2</a> with type parameters of " +
+                     "type <a href=\"../../pkg2/Foo4.html\" title=\"class in " +
+                     "pkg2\">Foo4</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo4.html",
-                     "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-                     "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-                     "</A> with type parameters of type <A HREF=\"../../pkg2/Foo4.html\" " +
-                     "title=\"class in pkg2\">Foo4</A></CAPTION>"
-            },
-            {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo4.html",
-                "<TD><CODE><STRONG>ClassUseTest3.</STRONG><STRONG><A HREF=\"../../pkg2/ClassUseTest3.html#method(T)\">method</A></STRONG>(T&nbsp;t)</CODE>"
+                     "<td class=\"colLast\"><span class=\"strong\">ClassUseTest3." +
+                     "</span><code><strong><a href=\"../../pkg2/ClassUseTest3." +
+                     "html#method(T)\">method</a></strong>(T&nbsp;t)</code>" +
+                     "&nbsp;</td>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo4.html",
-                     "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-                     "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-                     "</A> that return types with arguments of type " +
-                     "<A HREF=\"../../pkg2/Foo4.html\" title=\"class in pkg2\">" +
-                     "Foo4</A></CAPTION>"
+                     "<caption><span>Methods in <a href=\"../../pkg2/" +
+                     "package-summary.html\">pkg2</a> that return types with " +
+                     "arguments of type <a href=\"../../pkg2/Foo4.html\" " +
+                     "title=\"class in pkg2\">Foo4</a></span><span class=\"" +
+                     "tabEnd\">&nbsp;</span></caption>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo4.html",
-                "&lt;T extends <A HREF=\"../../pkg2/ParamTest2.html\" title=\"class in pkg2\">ParamTest2</A>&lt;java.util.List&lt;? extends <A HREF=\"../../pkg2/Foo4.html\" title=\"class in pkg2\">Foo4</A>&gt;&gt;&gt;"
+                     "<td class=\"colFirst\"><code>&lt;T extends <a href=\"../" +
+                     "../pkg2/ParamTest2.html\" title=\"class in pkg2\">" +
+                     "ParamTest2</a>&lt;java.util.List&lt;? extends <a href=\".." +
+                     "/../pkg2/Foo4.html\" title=\"class in pkg2\">Foo4</a>&gt;" +
+                     "&gt;&gt;&nbsp;<br><a href=\"../../pkg2/ParamTest2.html\" " +
+                     "title=\"class in pkg2\">ParamTest2</a>&lt;java.util.List" +
+                     "&lt;? extends <a href=\"../../pkg2/Foo4.html\" title=\"" +
+                     "class in pkg2\">Foo4</a>&gt;&gt;</code></td>"
             },
 
             //Type parameters in constructor and method args
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo4.html",
-                     "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-                     "Method parameters in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-                     "</A> with type arguments of type <A HREF=\"../../pkg2/Foo4.html\" " +
-                     "title=\"class in pkg2\">Foo4</A></CAPTION>" + NL +
-                     "<TR>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-                     " NOWRAP>Modifier and Type" +
-                     "</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-                     " NOWRAP>Method and Description</TH>" + NL +
-                     "</TR>" + NL +
-                     "<TR BGCOLOR=\"white\" CLASS=\"TableRowColor\">" + NL +
-                     "<TD ALIGN=\"right\" VALIGN=\"top\" WIDTH=\"1%\"><FONT SIZE=\"-1\">" + NL +
-                     "<CODE>&nbsp;void</CODE></FONT></TD>" + NL +
-                     "<TD><CODE><STRONG>ClassUseTest3.</STRONG><STRONG>" +
-                     "<A HREF=\"../../pkg2/ClassUseTest3.html#method(java.util.Set)\">" +
-                     "method</A></STRONG>(java.util.Set&lt;<A HREF=\"../../pkg2/Foo4.html\" " +
-                     "title=\"class in pkg2\">Foo4</A>&gt;&nbsp;p)</CODE>"
+                     "<caption><span>Method parameters in <a href=\"../../pkg2/" +
+                     "package-summary.html\">pkg2</a> with type arguments of " +
+                     "type <a href=\"../../pkg2/Foo4.html\" title=\"class in " +
+                     "pkg2\">Foo4</a></span><span class=\"tabEnd\">&nbsp;" +
+                     "</span></caption>" + NL + "<tr>" + NL +
+                     "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
+                     "<th class=\"colLast\" scope=\"col\">Method and Description</th>" + NL +
+                     "</tr>" + NL + "<tbody>" + NL + "<tr class=\"altColor\">" + NL +
+                     "<td class=\"colFirst\"><code>void</code></td>" + NL +
+                     "<td class=\"colLast\"><span class=\"strong\">ClassUseTest3." +
+                     "</span><code><strong><a href=\"../../pkg2/ClassUseTest3." +
+                     "html#method(java.util.Set)\">method</a></strong>(java." +
+                     "util.Set&lt;<a href=\"../../pkg2/Foo4.html\" title=\"" +
+                     "class in pkg2\">Foo4</a>&gt;&nbsp;p)</code>&nbsp;</td>" + NL +
+                     "</tr>" + NL + "</tbody>"
             },
             {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo4.html",
-                     "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-                     "Constructor parameters in <A HREF=\"../../pkg2/package-summary.html\">" +
-                     "pkg2</A> with type arguments of type <A HREF=\"../../pkg2/Foo4.html\" " +
-                     "title=\"class in pkg2\">Foo4</A></CAPTION>" + NL +
-                     "<TR>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-                     " NOWRAP>Constructor and Description" +
-                     "</TH>" + NL + "</TR>" + NL +
-                     "<TR BGCOLOR=\"white\" CLASS=\"TableRowColor\">" + NL +
-                     "<TD><CODE><STRONG><A HREF=\"../../pkg2/ClassUseTest3.html#ClassUseTest3" +
-                     "(java.util.Set)\">ClassUseTest3</A></STRONG>(java.util.Set&lt;" +
-                     "<A HREF=\"../../pkg2/Foo4.html\" title=\"class in pkg2\">" +
-                     "Foo4</A>&gt;&nbsp;p)</CODE>"
+                     "<caption><span>Constructor parameters in <a href=\"../../" +
+                     "pkg2/package-summary.html\">pkg2</a> with type arguments " +
+                     "of type <a href=\"../../pkg2/Foo4.html\" title=\"class in " +
+                     "pkg2\">Foo4</a></span><span class=\"tabEnd\">&nbsp;" +
+                     "</span></caption>"
             },
 
             //=================================
             // Annotatation Type Usage
             //=================================
             {BUG_ID + FS + "pkg" + FS + "class-use" + FS + "AnnotationType.html",
-                     "Packages with annotations of type " +
-                     "<A HREF=\"../../pkg/AnnotationType.html\" " +
-                     "title=\"annotation in pkg\">AnnotationType</A></CAPTION>" + NL +
-                     "<TR>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-                     " NOWRAP>Package" +
-                     "</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-                     " NOWRAP>Description</TH>" + NL + "</TR>" + NL +
-                     "<TR BGCOLOR=\"white\" CLASS=\"TableRowColor\">" + NL +
-                     "<TD><A HREF=\"../../pkg/package-summary.html\"><STRONG>pkg" +
-                     "</STRONG></A></TD>"
+                     "<caption><span>Packages with annotations of type <a href=\"" +
+                     "../../pkg/AnnotationType.html\" title=\"annotation in pkg\">" +
+                     "AnnotationType</a></span><span class=\"tabEnd\">&nbsp;" +
+                     "</span></caption>"
             },
 
             {BUG_ID + FS + "pkg" + FS + "class-use" + FS + "AnnotationType.html",
-                     "Classes in <A HREF=\"../../pkg/package-summary.html\">pkg" +
-                     "</A> with annotations of type <A HREF=\"../../pkg/AnnotationType.html\" " +
-                     "title=\"annotation in pkg\">AnnotationType</A></CAPTION>" + NL +
-                     "<TR>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-                     " NOWRAP>Modifier and Type" +
-                     "</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-                     " NOWRAP>Class and Description</TH>" + NL +
-                     "</TR>" + NL +
-                     "<TR BGCOLOR=\"white\" CLASS=\"TableRowColor\">" + NL +
-                     "<TD ALIGN=\"right\" VALIGN=\"top\" WIDTH=\"1%\"><FONT SIZE=\"-1\">" + NL +
-                     "<CODE>&nbsp;class</CODE></FONT></TD>" + NL +
-                     "<TD><CODE><STRONG><A HREF=\"../../pkg/AnnotationTypeUsage.html\" " +
-                     "title=\"class in pkg\">AnnotationTypeUsage</A></STRONG></CODE>"
+                     "<caption><span>Classes in <a href=\"../../pkg/" +
+                     "package-summary.html\">pkg</a> with annotations of type " +
+                     "<a href=\"../../pkg/AnnotationType.html\" title=\"" +
+                     "annotation in pkg\">AnnotationType</a></span><span class" +
+                     "=\"tabEnd\">&nbsp;</span></caption>"
             },
 
             {BUG_ID + FS + "pkg" + FS + "class-use" + FS + "AnnotationType.html",
-                     "Fields in <A HREF=\"../../pkg/package-summary.html\">pkg" +
-                     "</A> with annotations of type <A HREF=\"../../pkg/AnnotationType.html\" " +
-                     "title=\"annotation in pkg\">AnnotationType</A></CAPTION>" + NL +
-                     "<TR>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-                     " NOWRAP>Modifier and Type" +
-                     "</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-                     " NOWRAP>Field and Description</TH>" + NL +
-                     "</TR>" + NL +
-                     "<TR BGCOLOR=\"white\" CLASS=\"TableRowColor\">" + NL +
-                     "<TD ALIGN=\"right\" VALIGN=\"top\" WIDTH=\"1%\"><FONT SIZE=\"-1\">" + NL +
-                     "<CODE>&nbsp;int</CODE></FONT></TD>" + NL +
-                     "<TD><CODE><STRONG>AnnotationTypeUsage.</STRONG><STRONG>" +
-                     "<A HREF=\"../../pkg/AnnotationTypeUsage.html#field\">field" +
-                     "</A></STRONG></CODE>"
+                     "<caption><span>Fields in <a href=\"../../pkg/" +
+                     "package-summary.html\">pkg</a> with annotations of type " +
+                     "<a href=\"../../pkg/AnnotationType.html\" title=\"annotation " +
+                     "in pkg\">AnnotationType</a></span><span class=\"tabEnd\">" +
+                     "&nbsp;</span></caption>"
             },
 
             {BUG_ID + FS + "pkg" + FS + "class-use" + FS + "AnnotationType.html",
-                     "Methods in <A HREF=\"../../pkg/package-summary.html\">pkg" +
-                     "</A> with annotations of type <A HREF=\"../../pkg/AnnotationType.html\" " +
-                     "title=\"annotation in pkg\">AnnotationType</A></CAPTION>" + NL +
-                     "<TR>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-                     " NOWRAP>Modifier and Type" +
-                     "</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-                     " NOWRAP>Method and Description</TH>" + NL +
-                     "</TR>" + NL +
-                     "<TR BGCOLOR=\"white\" CLASS=\"TableRowColor\">" + NL +
-                     "<TD ALIGN=\"right\" VALIGN=\"top\" WIDTH=\"1%\"><FONT SIZE=\"-1\">" + NL +
-                     "<CODE>&nbsp;void</CODE></FONT></TD>" + NL +
-                     "<TD><CODE><STRONG>AnnotationTypeUsage.</STRONG><STRONG>" +
-                     "<A HREF=\"../../pkg/AnnotationTypeUsage.html#method()\">" +
-                     "method</A></STRONG>()</CODE>"
+                     "<caption><span>Methods in <a href=\"../../pkg/" +
+                     "package-summary.html\">pkg</a> with annotations of type " +
+                     "<a href=\"../../pkg/AnnotationType.html\" title=\"annotation " +
+                     "in pkg\">AnnotationType</a></span><span class=\"tabEnd\">" +
+                     "&nbsp;</span></caption>"
             },
 
             {BUG_ID + FS + "pkg" + FS + "class-use" + FS + "AnnotationType.html",
-                     "Method parameters in <A HREF=\"../../pkg/package-summary.html\">pkg" +
-                     "</A> with annotations of type <A HREF=\"../../pkg/AnnotationType.html\" " +
-                     "title=\"annotation in pkg\">AnnotationType</A></CAPTION>" + NL +
-                     "<TR>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-                     " NOWRAP>Modifier and Type" +
-                     "</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-                     " NOWRAP>Method and Description</TH>" + NL +
-                     "</TR>" + NL +
-                     "<TR BGCOLOR=\"white\" CLASS=\"TableRowColor\">" + NL +
-                     "<TD ALIGN=\"right\" VALIGN=\"top\" WIDTH=\"1%\"><FONT SIZE=\"-1\">" + NL +
-                     "<CODE>&nbsp;void</CODE></FONT></TD>" + NL +
-                     "<TD><CODE><STRONG>AnnotationTypeUsage.</STRONG><STRONG>" +
-                     "<A HREF=\"../../pkg/AnnotationTypeUsage.html#methodWithParams" +
-                     "(int, int)\">methodWithParams</A></STRONG>(int&nbsp;documented," + NL +
-                     "                 int&nbsp;undocmented)</CODE>"
+                     "<caption><span>Method parameters in <a href=\"../../pkg/" +
+                     "package-summary.html\">pkg</a> with annotations of type " +
+                     "<a href=\"../../pkg/AnnotationType.html\" title=\"annotation " +
+                     "in pkg\">AnnotationType</a></span><span class=\"tabEnd\">" +
+                     "&nbsp;</span></caption>"
             },
 
             {BUG_ID + FS + "pkg" + FS + "class-use" + FS + "AnnotationType.html",
-                     "Constructors in <A HREF=\"../../pkg/package-summary.html\">pkg" +
-                     "</A> with annotations of type <A HREF=\"../../pkg/AnnotationType.html\" " +
-                     "title=\"annotation in pkg\">AnnotationType</A></CAPTION>" + NL +
-                     "<TR>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-                     " NOWRAP>Constructor and Description" +
-                     "</TH>" + NL + "</TR>" + NL +
-                     "<TR BGCOLOR=\"white\" CLASS=\"TableRowColor\">" + NL +
-                     "<TD><CODE><STRONG><A HREF=\"../../pkg/" +
-                     "AnnotationTypeUsage.html#AnnotationTypeUsage()\">" +
-                     "AnnotationTypeUsage</A></STRONG>()</CODE>"
+                     "<caption><span>Constructors in <a href=\"../../pkg/" +
+                     "package-summary.html\">pkg</a> with annotations of type " +
+                     "<a href=\"../../pkg/AnnotationType.html\" title=\"annotation " +
+                     "in pkg\">AnnotationType</a></span><span class=\"tabEnd\">" +
+                     "&nbsp;</span></caption>"
             },
 
             {BUG_ID + FS + "pkg" + FS + "class-use" + FS + "AnnotationType.html",
-                     "Constructor parameters in <A HREF=\"../../pkg/package-summary.html\">pkg" +
-                     "</A> with annotations of type <A HREF=\"../../pkg/AnnotationType.html\" " +
-                     "title=\"annotation in pkg\">AnnotationType</A></CAPTION>" + NL +
-                     "<TR>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-                     " NOWRAP>Constructor and Description" +
-                     "</TH>" + NL + "</TR>" + NL +
-                     "<TR BGCOLOR=\"white\" CLASS=\"TableRowColor\">" + NL +
-                     "<TD><CODE><STRONG><A HREF=\"../../pkg/" +
-                     "AnnotationTypeUsage.html#AnnotationTypeUsage(int, int)\">" +
-                     "AnnotationTypeUsage</A></STRONG>(int&nbsp;documented," + NL +
-                     "                    int&nbsp;undocmented)</CODE>"
+                     "<caption><span>Constructor parameters in <a href=\"../../" +
+                     "pkg/package-summary.html\">pkg</a> with annotations of " +
+                     "type <a href=\"../../pkg/AnnotationType.html\" title=\"" +
+                     "annotation in pkg\">AnnotationType</a></span><span class=\"" +
+                     "tabEnd\">&nbsp;</span></caption>"
             },
 
             //=================================
             // TYPE PARAMETER IN INDEX
             //=================================
             {BUG_ID + FS + "index-all.html",
-                "<A HREF=\"./pkg2/Foo.html#method(java.util.Vector)\"><STRONG>method(Vector&lt;Object&gt;)</STRONG></A>"
+                "<span class=\"strong\"><a href=\"./pkg2/Foo.html#method(java.util.Vector)\">" +
+                "method(Vector&lt;Object&gt;)</a></span>"
             },
             //=================================
             // TYPE PARAMETER IN INDEX
             //=================================
             {BUG_ID + FS + "index-all.html",
-                "<A HREF=\"./pkg2/Foo.html#method(java.util.Vector)\"><STRONG>method(Vector&lt;Object&gt;)</STRONG></A>"
+                "<span class=\"strong\"><a href=\"./pkg2/Foo.html#method(java.util.Vector)\">" +
+                "method(Vector&lt;Object&gt;)</a></span>"
             },
         };
     private static final String[][] NEGATED_TEST = {
@@ -637,15 +671,15 @@
         // ENUM TESTING
         //=================================
         //NO constructor section
-        {BUG_ID + FS + "pkg" + FS + "Coin.html", "<STRONG>Constructor Summary</STRONG>"},
+        {BUG_ID + FS + "pkg" + FS + "Coin.html", "<span class=\"strong\">Constructor Summary</span>"},
         //=================================
         // TYPE PARAMETER TESTING
         //=================================
         //No type parameters in class frame.
         {BUG_ID + FS + "allclasses-frame.html",
-            "<A HREF=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
-                    "TypeParameters</A>&lt;<A HREF=\"../pkg/TypeParameters.html\" " +
-                    "title=\"type parameter in TypeParameters\">E</A>&gt;"
+            "<a href=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
+                    "TypeParameters</a>&lt;<a href=\"../pkg/TypeParameters.html\" " +
+                    "title=\"type parameter in TypeParameters\">E</a>&gt;"
         },
 
         //==============================================================
@@ -654,31 +688,27 @@
 
         //CLASS
         {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
-            "<FONT SIZE=\"-1\">" + NL +
-            "<A HREF=\"../pkg/AnnotationTypeUndocumented.html\" title=\"annotation in pkg\">@AnnotationTypeUndocumented</A>(<A HREF=\"../pkg/AnnotationType.html#optional\">optional</A>=\"Class Annotation\"," + NL +
-            "                <A HREF=\"../pkg/AnnotationType.html#required\">required</A>=1994)" + NL +
-            "</FONT>public class <STRONG>AnnotationTypeUsage</STRONG></DT><DT>extends java.lang.Object</DT></DL>"},
+            "<a href=\"../pkg/AnnotationTypeUndocumented.html\" title=\"annotation in pkg\">@AnnotationTypeUndocumented</a>(<a href=\"../pkg/AnnotationType.html#optional\">optional</a>=\"Class Annotation\"," + NL +
+            "                <a href=\"../pkg/AnnotationType.html#required\">required</a>=1994)" + NL +
+            "public class <strong>AnnotationTypeUsage</strong></dt><dt>extends java.lang.Object</dt>"},
 
         //FIELD
         {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
-            "<FONT SIZE=\"-1\">" + NL +
-            "<A HREF=\"../pkg/AnnotationTypeUndocumented.html\" title=\"annotation in pkg\">@AnnotationTypeUndocumented</A>(<A HREF=\"../pkg/AnnotationType.html#optional\">optional</A>=\"Field Annotation\"," + NL +
-            "                <A HREF=\"../pkg/AnnotationType.html#required\">required</A>=1994)" + NL +
-            "</FONT>public int <STRONG>field</STRONG>"},
+            "<a href=\"../pkg/AnnotationTypeUndocumented.html\" title=\"annotation in pkg\">@AnnotationTypeUndocumented</a>(<a href=\"../pkg/AnnotationType.html#optional\">optional</a>=\"Field Annotation\"," + NL +
+            "                <a href=\"../pkg/AnnotationType.html#required\">required</a>=1994)" + NL +
+            "public int <strong>field</strong>"},
 
         //CONSTRUCTOR
         {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
-            "<FONT SIZE=\"-1\">" + NL +
-            "<A HREF=\"../pkg/AnnotationTypeUndocumented.html\" title=\"annotation in pkg\">@AnnotationTypeUndocumented</A>(<A HREF=\"../pkg/AnnotationType.html#optional\">optional</A>=\"Constructor Annotation\"," + NL +
-            "                <A HREF=\"../pkg/AnnotationType.html#required\">required</A>=1994)" + NL +
-            "</FONT>public <STRONG>AnnotationTypeUsage</STRONG>()"},
+            "<a href=\"../pkg/AnnotationTypeUndocumented.html\" title=\"annotation in pkg\">@AnnotationTypeUndocumented</a>(<a href=\"../pkg/AnnotationType.html#optional\">optional</a>=\"Constructor Annotation\"," + NL +
+            "                <a href=\"../pkg/AnnotationType.html#required\">required</a>=1994)" + NL +
+            "public <strong>AnnotationTypeUsage</strong>()"},
 
         //METHOD
         {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
-            "<FONT SIZE=\"-1\">" + NL +
-            "<A HREF=\"../pkg/AnnotationTypeUndocumented.html\" title=\"annotation in pkg\">@AnnotationTypeUndocumented</A>(<A HREF=\"../pkg/AnnotationType.html#optional\">optional</A>=\"Method Annotation\"," + NL +
-            "                <A HREF=\"../pkg/AnnotationType.html#required\">required</A>=1994)" + NL +
-            "</FONT>public void <STRONG>method</STRONG>()"},
+            "<a href=\"../pkg/AnnotationTypeUndocumented.html\" title=\"annotation in pkg\">@AnnotationTypeUndocumented</a>(<a href=\"../pkg/AnnotationType.html#optional\">optional</a>=\"Method Annotation\"," + NL +
+            "                <a href=\"../pkg/AnnotationType.html#required\">required</a>=1994)" + NL +
+            "public void <strong>method</strong>()"},
 
         //=================================
         // Make sure annotation types do not
--- a/langtools/test/com/sun/javadoc/testOverridenMethods/TestMultiInheritence.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testOverridenMethods/TestMultiInheritence.java	Wed Dec 01 11:02:38 2010 -0800
@@ -46,27 +46,34 @@
     //Method foo() is inherited from BOTH I2 and I3
     private static final String[][] TEST = {
        {BUG_ID + FS + "pkg3" + FS + "I1.html",
-        "Methods inherited from interface pkg3." +        "<A HREF=\"../pkg3/I2.html\" title=\"interface in pkg3\">I2</A>"},
+        "Methods inherited from interface&nbsp;pkg3." +
+                "<a href=\"../pkg3/I2.html\" title=\"interface in pkg3\">" +
+                "I2</a>"},
         {BUG_ID + FS + "pkg3" + FS +"I1.html",
-        "Methods inherited from interface pkg3." +
-        "<A HREF=\"../pkg3/I3.html\" title=\"interface in pkg3\">I3</A>"},
+        "Methods inherited from interface&nbsp;pkg3." +
+                 "<a href=\"../pkg3/I3.html\" title=\"interface in pkg3\">" +
+                 "I3</a>"},
         {BUG_ID + FS + "pkg3" + FS + "I0.html",
-        "Methods inherited from interface pkg3." +
-        "<A HREF=\"../pkg3/I2.html\" title=\"interface in pkg3\">I2</A>"},
+        "Methods inherited from interface&nbsp;pkg3." +
+                 "<a href=\"../pkg3/I2.html\" title=\"interface in pkg3\">" +
+                 "I2</a>"},
         {BUG_ID + FS + "pkg3" + FS +"I0.html",
-        "Methods inherited from interface pkg3." +
-        "<A HREF=\"../pkg3/I3.html\" title=\"interface in pkg3\">I3</A>"},
+        "Methods inherited from interface&nbsp;pkg3." +
+                 "<a href=\"../pkg3/I3.html\" title=\"interface in pkg3\">" +
+                 "I3</a>"},
     };
 
     //Method foo() is NOT inherited from I4 because it is overriden by
     //I3.
     private static final String[][] NEGATED_TEST = {
         {BUG_ID + FS + "pkg3" + FS + "I1.html",
-        "Methods inherited from interface pkg3." +
-        "<A HREF=\"../pkg3/I4.html\" title=\"interface in pkg3\">I4</A>"},
+        "Methods inherited from interface&nbsp;pkg3." +
+                 "<a href=\"../pkg3/I4.html\" title=\"interface in pkg3\">" +
+                 "I4</a>"},
         {BUG_ID + FS + "pkg3" + FS + "I0.html",
-        "Methods inherited from interface pkg3." +
-        "<A HREF=\"../pkg3/I4.html\" title=\"interface in pkg3\">I4</A>"},
+        "Methods inherited from interface&nbsp;pkg3." +
+                 "<a href=\"../pkg3/I4.html\" title=\"interface in pkg3\">" +
+                 "I4</a>"},
     };
 
     /**
--- a/langtools/test/com/sun/javadoc/testOverridenMethods/TestOverridenMethodDocCopy.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testOverridenMethods/TestOverridenMethodDocCopy.java	Wed Dec 01 11:02:38 2010 -0800
@@ -46,9 +46,9 @@
     //Input for string search tests.
     private static final String[][] TEST = {
         {BUG_ID + FS + "pkg1" + FS + "SubClass.html",
-            "<STRONG>Description copied from class: <CODE>" +
-            "<A HREF=\"../pkg1/BaseClass.html#overridenMethodWithDocsToCopy()\">" +
-            "BaseClass</A></CODE></STRONG>"
+            "<strong>Description copied from class:&nbsp;<code>" +
+            "<a href=\"../pkg1/BaseClass.html#overridenMethodWithDocsToCopy()\">" +
+            "BaseClass</a></code></strong>"
         }
     };
     private static final String[][] NEGATED_TEST = NO_TEST;
--- a/langtools/test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethods.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethods.java	Wed Dec 01 11:02:38 2010 -0800
@@ -40,11 +40,13 @@
     private static final String[][] TEST = {
         //The public method should be overriden
         {BUG_ID + FS + "pkg1" + FS + "SubClass.html",
-         "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"},
+         "<dt><strong>Overrides:</strong></dt>" + NL +
+                 "<dd><code><a href=\"../pkg1/BaseClass.html#publicMethod"},
 
         //The public method in different package should be overriden
         {BUG_ID + FS + "pkg2" + FS + "SubClass.html",
-         "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"}
+         "<dt><strong>Overrides:</strong></dt>" + NL +
+                 "<dd><code><a href=\"../pkg1/BaseClass.html#publicMethod"}
     };
 
     private static final String[][] NEGATED_TEST = {
@@ -52,20 +54,23 @@
         //The package private method should be overriden since the base and sub class are in the same
         //package.  However, the link should not show up because the package private methods are not documented.
         {BUG_ID + FS + "pkg1" + FS + "SubClass.html",
-         "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"},
+         "<dt><strong>Overrides:</strong></dt>" + NL +
+                 "<dd><code><a href=\"../pkg1/BaseClass.html#packagePrivateMethod"},
 
         //The private method in should not be overriden
         {BUG_ID + FS + "pkg1" + FS + "SubClass.html",
-         "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
+         "<dt><strong>Overrides:</strong></dt>" + NL +
+                 "<dd><code><a href=\"../pkg1/BaseClass.html#privateMethod"},
 
         //The private method in different package should not be overriden
         {BUG_ID + FS + "pkg2" + FS + "SubClass.html",
-         "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
+         "<dt><strong>Overrides:</strong></dt>" + NL +
+                 "<dd><code><a href=\"../pkg1/BaseClass.html#privateMethod"},
 
         //The package private method should not be overriden since the base and sub class are in
         //different packages.
         {BUG_ID + FS + "pkg2" + FS + "SubClass.html",
-         "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"}
+         "Overrides:</strong></dt><dd><code><a href=\"../pkg1/BaseClass.html#packagePrivateMethod"}
     };
 
     private static final String[] ARGS =
--- a/langtools/test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethodsWithPackageFlag.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethodsWithPackageFlag.java	Wed Dec 01 11:02:38 2010 -0800
@@ -40,32 +40,44 @@
     private static final String[][] TEST = {
         //The public method should be overriden
         {BUG_ID + FS + "pkg1" + FS + "SubClass.html",
-         "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"},
+         "<dt><strong>Overrides:</strong></dt>" + NL +
+                 "<dd><code><a href=\"../pkg1/BaseClass.html#publicMethod()\">" +
+                 "publicMethod</a></code>&nbsp;in class&nbsp;<code>" +
+                 "<a href=\"../pkg1/BaseClass.html\" title=\"class in pkg1\">BaseClass</a></code></dd>"},
 
         //The public method in different package should be overriden
         {BUG_ID + FS + "pkg2" + FS + "SubClass.html",
-         "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"},
+         "<dt><strong>Overrides:</strong></dt>" + NL +
+                 "<dd><code><a href=\"../pkg1/BaseClass.html#publicMethod()\">" +
+                 "publicMethod</a></code>&nbsp;in class&nbsp;<code>" +
+                 "<a href=\"../pkg1/BaseClass.html\" title=\"class in pkg1\">BaseClass</a></code></dd>"},
 
         //The package private method should be overriden since the base and sub class are in the same
         //package.
         {BUG_ID + FS + "pkg1" + FS + "SubClass.html",
-         "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"}
+         "<dt><strong>Overrides:</strong></dt>" + NL +
+                 "<dd><code><a href=\"../pkg1/BaseClass.html#packagePrivateMethod()\">" +
+                 "packagePrivateMethod</a></code>&nbsp;in class&nbsp;<code>" +
+                 "<a href=\"../pkg1/BaseClass.html\" title=\"class in pkg1\">BaseClass</a></code></dd>"}
     };
 
     private static final String[][] NEGATED_TEST = {
 
         //The private method in should not be overriden
         {BUG_ID + FS + "pkg1" + FS + "SubClass.html",
-         "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
+         "<dt><strong>Overrides:</strong></dt>" + NL +
+                 "<dd><code><a href=\"../pkg1/BaseClass.html#privateMethod()\">"},
 
         //The private method in different package should not be overriden
         {BUG_ID + FS + "pkg2" + FS + "SubClass.html",
-         "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
+         "<dt><strong>Overrides:</strong></dt>" + NL +
+                 "<dd><code><a href=\"../pkg1/BaseClass.html#privateMethod()\">"},
 
         //The package private method should not be overriden since the base and sub class are in
         //different packages.
         {BUG_ID + FS + "pkg2" + FS + "SubClass.html",
-         "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"},
+         "<dt><strong>Overrides:</strong></dt>" + NL +
+                 "<dd><code><a href=\"../pkg1/BaseClass.html#packagePrivateMethod()\">"},
     };
 
     private static final String[] ARGS =
--- a/langtools/test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethodsWithPrivateFlag.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethodsWithPrivateFlag.java	Wed Dec 01 11:02:38 2010 -0800
@@ -40,32 +40,38 @@
     private static final String[][] TEST = {
         //The public method should be overriden
         {BUG_ID + FS + "pkg1" + FS + "SubClass.html",
-         "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"},
+         "<dt><strong>Overrides:</strong></dt>" + NL +
+                 "<dd><code><a href=\"../pkg1/BaseClass.html#publicMethod"},
 
         //The package private method should be overriden since the base and sub class are in the same
         //package.
         {BUG_ID + FS + "pkg1" + FS + "SubClass.html",
-         "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"},
+         "<dt><strong>Overrides:</strong></dt>" + NL +
+                 "<dd><code><a href=\"../pkg1/BaseClass.html#packagePrivateMethod"},
 
         //The public method in different package should be overriden
         {BUG_ID + FS + "pkg2" + FS + "SubClass.html",
-         "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"},
+         "<dt><strong>Overrides:</strong></dt>" + NL +
+                 "<dd><code><a href=\"../pkg1/BaseClass.html#publicMethod"},
     };
 
     private static final String[][] NEGATED_TEST = {
 
         //The private method in should not be overriden
         {BUG_ID + FS + "pkg1" + FS + "SubClass.html",
-         "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
+         "<dt><strong>Overrides:</strong></dt>" + NL +
+                 "<dd><code><a href=\"../pkg1/BaseClass.html#privateMethod"},
 
         //The private method in different package should not be overriden
         {BUG_ID + FS + "pkg2" + FS + "SubClass.html",
-         "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
+         "<dt><strong>Overrides:</strong></dt>" + NL +
+                 "<dd><code><a href=\"../pkg1/BaseClass.html#privateMethod"},
 
         //The package private method should not be overriden since the base and sub class are in
         //different packages.
         {BUG_ID + FS + "pkg2" + FS + "SubClass.html",
-         "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"}
+         "<dt><strong>Overrides:</strong></dt>" + NL +
+                 "<dd><code><a href=\"../pkg1/BaseClass.html#packagePrivateMethod"}
 
 
     };
--- a/langtools/test/com/sun/javadoc/testPackagePage/TestPackagePage.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testPackagePage/TestPackagePage.java	Wed Dec 01 11:02:38 2010 -0800
@@ -43,37 +43,32 @@
         },
         //With just one package, all general pages link to the single package page.
         {BUG_ID + "-1" + FS + "com" + FS + "pkg" + FS + "C.html",
-            "<A HREF=\"../../com/pkg/package-summary.html\">" +
-            "<FONT CLASS=\"NavBarFont1\"><STRONG>Package</STRONG></FONT></A>"
+            "<a href=\"../../com/pkg/package-summary.html\">Package</a>"
         },
         {BUG_ID + "-1" + FS + "com" + FS + "pkg" + FS + "package-tree.html",
-            "<A HREF=\"../../com/pkg/package-summary.html\">" +
-            "<FONT CLASS=\"NavBarFont1\"><STRONG>Package</STRONG></FONT></A>"
+            "<li><a href=\"../../com/pkg/package-summary.html\">Package</a></li>"
         },
         {BUG_ID + "-1" + FS + "deprecated-list.html",
-            "<A HREF=\"com/pkg/package-summary.html\">" +
-            "<FONT CLASS=\"NavBarFont1\"><STRONG>Package</STRONG></FONT></A>"
+            "<li><a href=\"com/pkg/package-summary.html\">Package</a></li>"
         },
         {BUG_ID + "-1" + FS + "index-all.html",
-            "<A HREF=\"./com/pkg/package-summary.html\">" +
-            "<FONT CLASS=\"NavBarFont1\"><STRONG>Package</STRONG></FONT></A>"
+            "<li><a href=\"./com/pkg/package-summary.html\">Package</a></li>"
         },
         {BUG_ID + "-1" + FS + "help-doc.html",
-            "<A HREF=\"com/pkg/package-summary.html\">" +
-            "<FONT CLASS=\"NavBarFont1\"><STRONG>Package</STRONG></FONT></A>"
+            "<li><a href=\"com/pkg/package-summary.html\">Package</a></li>"
         },
     };
 
     private static final String[][] TEST2 = {
         //With multiple packages, there is no package link in general pages.
         {BUG_ID + "-2" + FS + "deprecated-list.html",
-            " <FONT CLASS=\"NavBarFont1\">Package</FONT>&nbsp;"
+            "<li>Package</li>"
         },
         {BUG_ID + "-2" + FS + "index-all.html",
-            " <FONT CLASS=\"NavBarFont1\">Package</FONT>&nbsp;"
+            "<li>Package</li>"
         },
         {BUG_ID + "-2" + FS + "help-doc.html",
-            " <FONT CLASS=\"NavBarFont1\">Package</FONT>&nbsp;"
+            "<li>Package</li>"
         },
     };
 
--- a/langtools/test/com/sun/javadoc/testParamTaglet/TestParamTaglet.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testParamTaglet/TestParamTaglet.java	Wed Dec 01 11:02:38 2010 -0800
@@ -48,20 +48,20 @@
     private static final String[][] TEST = {
         //Regular param tags.
         {BUG_ID + FS + "pkg" + FS + "C.html",
-            "<STRONG>Parameters:</STRONG></DT><DD><CODE>param1</CODE> - testing 1 2 3.</DD>" +
-                "<DD><CODE>param2</CODE> - testing 1 2 3."
+            "<span class=\"strong\">Parameters:</span></dt><dd><code>param1</code> - testing 1 2 3.</dd>" +
+                "<dd><code>param2</code> - testing 1 2 3."
         },
         //Param tags that don't match with any real parameters.
         {BUG_ID + FS + "pkg" + FS + "C.html",
-            "<STRONG>Parameters:</STRONG></DT><DD><CODE><I>p1</I></CODE> - testing 1 2 3.</DD>" +
-                "<DD><CODE><I>p2</I></CODE> - testing 1 2 3."
+            "<span class=\"strong\">Parameters:</span></dt><dd><code><I>p1</I></code> - testing 1 2 3.</dd>" +
+                "<dd><code><I>p2</I></code> - testing 1 2 3."
         },
         //{@inherit} doc misuse does not cause doclet to throw exception.
         // Param is printed with nothing inherited.
         //XXX: in the future when Configuration is available during doc inheritence,
         //print a warning for this mistake.
         {BUG_ID + FS + "pkg" + FS + "C.html",
-            "<CODE><I>inheritBug</I></CODE> -"
+            "<code><I>inheritBug</I></code> -"
         },
 
     };
--- a/langtools/test/com/sun/javadoc/testPrivateClasses/TestPrivateClasses.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testPrivateClasses/TestPrivateClasses.java	Wed Dec 01 11:02:38 2010 -0800
@@ -58,50 +58,50 @@
     private static final String[][] TEST1 = {
         // Field inheritence from non-public superclass.
         {BUG_ID + "-1" + FS + "pkg" + FS + "PublicChild.html",
-            "<A HREF=\"../pkg/PublicChild.html#fieldInheritedFromParent\">" +
-                "fieldInheritedFromParent</A>"
+            "<a href=\"../pkg/PublicChild.html#fieldInheritedFromParent\">" +
+                "fieldInheritedFromParent</a>"
         },
 
         // Method inheritence from non-public superclass.
         {BUG_ID + "-1" + FS + "pkg" + FS + "PublicChild.html",
-            "<A HREF=\"../pkg/PublicChild.html#methodInheritedFromParent(int)\">" +
-                "methodInheritedFromParent</A>"
+            "<a href=\"../pkg/PublicChild.html#methodInheritedFromParent(int)\">" +
+                "methodInheritedFromParent</a>"
         },
 
         // Field inheritence from non-public superinterface.
         {BUG_ID + "-1" + FS + "pkg" + FS + "PublicInterface.html",
-            "<A HREF=\"../pkg/PublicInterface.html#fieldInheritedFromInterface\">" +
-                "fieldInheritedFromInterface</A>"
+            "<a href=\"../pkg/PublicInterface.html#fieldInheritedFromInterface\">" +
+                "fieldInheritedFromInterface</a>"
         },
 
         // Method inheritence from non-public superinterface.
         {BUG_ID + "-1" + FS + "pkg" + FS + "PublicInterface.html",
-            "<A HREF=\"../pkg/PublicInterface.html#methodInterface(int)\">" +
-                "methodInterface</A>"
+            "<a href=\"../pkg/PublicInterface.html#methodInterface(int)\">" +
+                "methodInterface</a>"
         },
 
         // private class does not show up in tree
         {BUG_ID + "-1" + FS + "pkg" + FS + "PublicChild.html",
-            "<PRE>" + NL +
-                "java.lang.Object" + NL +
-                "  <IMG SRC=\"../resources/inherit.gif\" " +
-                "ALT=\"extended by \"><STRONG>pkg.PublicChild</STRONG>" + NL +
-            "</PRE>"
+            "<ul class=\"inheritance\">" + NL + "<li>java.lang.Object</li>" + NL +
+            "<li>" + NL + "<ul class=\"inheritance\">" + NL + "<li>pkg.PublicChild</li>" + NL +
+            "</ul>" + NL + "</li>" + NL + "</ul>"
         },
 
         // Method is documented as though it is declared in the inheriting method.
         {BUG_ID + "-1" + FS + "pkg" + FS + "PublicChild.html",
-            "public void <STRONG>methodInheritedFromParent</STRONG>(int&nbsp;p1)"
+            "<pre>public&nbsp;void&nbsp;methodInheritedFromParent(int&nbsp;p1)"
         },
 
         //Make sure implemented interfaces from private superclass are inherited
         {BUG_ID + "-1" + FS + "pkg" + FS + "PublicInterface.html",
-            "<STRONG>All Known Implementing Classes:</STRONG></DT> <DD><A HREF=\"../pkg/PublicChild.html\" " +
-            "title=\"class in pkg\">PublicChild</A>"},
+            "<dl>" + NL + "<dt>All Known Implementing Classes:</dt>" + NL +
+            "<dd><a href=\"../pkg/PublicChild.html\" title=\"class in pkg\">" +
+            "PublicChild</a></dd>" + NL + "</dl>"},
 
         {BUG_ID + "-1" + FS + "pkg" + FS + "PublicChild.html",
-            "<STRONG>All Implemented Interfaces:</STRONG></DT> <DD><A HREF=\"../pkg/PublicInterface.html\" " +
-            "title=\"interface in pkg\">PublicInterface</A>"},
+            "<dl>" + NL + "<dt>All Implemented Interfaces:</dt>" + NL +
+            "<dd><a href=\"../pkg/PublicInterface.html\" title=\"interface in pkg\">" +
+            "PublicInterface</a></dd>" + NL + "</dl>"},
 
         //Generic interface method test.
         {BUG_ID + "-1" + FS + "pkg2" + FS + "C.html",
@@ -110,12 +110,12 @@
     private static final String[][] NEGATED_TEST1 = {
        // Should not document that a method overrides method from private class.
       {BUG_ID + "-1" + FS + "pkg" + FS + "PublicChild.html",
-        "<STRONG>Overrides:</STRONG>"},
+        "<strong>Overrides:</strong>"},
       // Should not document that a method specified by private interface.
       {BUG_ID + "-1" + FS + "pkg" + FS + "PublicChild.html",
-        "<STRONG>Specified by:</STRONG>"},
+        "<strong>Specified by:</strong>"},
       {BUG_ID + "-1" + FS + "pkg" + FS + "PublicInterface.html",
-        "<STRONG>Specified by:</STRONG>"},
+        "<strong>Specified by:</strong>"},
       // Should not mention that any documentation was copied.
       {BUG_ID + "-1" + FS + "pkg" + FS + "PublicChild.html",
         "Description copied from"},
@@ -137,64 +137,64 @@
         //Do not inherit private interface method with generic parameters.
         //This method has been implemented.
         {BUG_ID + "-1" + FS + "pkg2" + FS + "C.html",
-            "<STRONG><A HREF=\"../pkg2/I.html#hello(T)\">hello</A></STRONG>"},
+            "<strong><a href=\"../pkg2/I.html#hello(T)\">hello</a></strong>"},
     };
 
     // Test output when -private flag is used.
     private static final String[][] TEST2 = {
         // Field inheritence from non-public superclass.
         {BUG_ID + "-2" + FS + "pkg" + FS + "PublicChild.html",
-            "Fields inherited from class " +
-            "pkg.<A HREF=\"../pkg/PrivateParent.html\" " +
-            "title=\"class in pkg\">PrivateParent</A>"
+            "Fields inherited from class&nbsp;pkg." +
+            "<a href=\"../pkg/PrivateParent.html\" title=\"class in pkg\">" +
+            "PrivateParent</a>"
         },
         {BUG_ID + "-2" + FS + "pkg" + FS + "PublicChild.html",
-            "<A HREF=\"../pkg/PrivateParent.html#fieldInheritedFromParent\">" +
-                "fieldInheritedFromParent</A>"
+            "<a href=\"../pkg/PrivateParent.html#fieldInheritedFromParent\">" +
+                "fieldInheritedFromParent</a>"
         },
         // Field inheritence from non-public superinterface.
         {BUG_ID + "-2" + FS + "pkg" + FS + "PublicInterface.html",
-            "Fields inherited from interface " +
-            "pkg.<A HREF=\"../pkg/PrivateInterface.html\" " +
-            "title=\"interface in pkg\">PrivateInterface</A>"
+            "Fields inherited from interface&nbsp;pkg." +
+            "<a href=\"../pkg/PrivateInterface.html\" title=\"interface in pkg\">" +
+            "PrivateInterface</a>"
         },
         {BUG_ID + "-2" + FS + "pkg" + FS + "PublicInterface.html",
-            "<A HREF=\"../pkg/PrivateInterface.html#fieldInheritedFromInterface\">" +
-                "fieldInheritedFromInterface</A>"
+            "<a href=\"../pkg/PrivateInterface.html#fieldInheritedFromInterface\">" +
+                "fieldInheritedFromInterface</a>"
         },
         // Method inheritence from non-public superclass.
         {BUG_ID + "-2" + FS + "pkg" + FS + "PublicChild.html",
-            "Methods inherited from class " +
-            "pkg.<A HREF=\"../pkg/PrivateParent.html\" " +
-            "title=\"class in pkg\">PrivateParent</A>"
+            "Methods inherited from class&nbsp;pkg." +
+            "<a href=\"../pkg/PrivateParent.html\" title=\"class in pkg\">" +
+            "PrivateParent</a>"
         },
         {BUG_ID + "-2" + FS + "pkg" + FS + "PublicChild.html",
-            "<A HREF=\"../pkg/PrivateParent.html#methodInheritedFromParent(int)\">" +
-                "methodInheritedFromParent</A>"
+            "<a href=\"../pkg/PrivateParent.html#methodInheritedFromParent(int)\">" +
+                "methodInheritedFromParent</a>"
         },
         // Should document that a method overrides method from private class.
        {BUG_ID + "-2" + FS + "pkg" + FS + "PublicChild.html",
-            "<STRONG>Overrides:</STRONG></DT><DD><CODE>" +
-            "<A HREF=\"../pkg/PrivateParent.html#methodOverridenFromParent(char[], int, T, V, java.util.List)\">" +
-            "methodOverridenFromParent</A></CODE> in class <CODE>" +
-            "<A HREF=\"../pkg/PrivateParent.html\" title=\"class in pkg\">" +
-            "PrivateParent</A></CODE></DD>" + NL + "</DL>"},
+            "<dt><strong>Overrides:</strong></dt>" + NL +
+            "<dd><code><a href=\"../pkg/PrivateParent.html#methodOverridenFromParent(char[], int, T, V, java.util.List)\">" +
+            "methodOverridenFromParent</a></code>&nbsp;in class&nbsp;<code>" +
+            "<a href=\"../pkg/PrivateParent.html\" title=\"class in pkg\">" +
+            "PrivateParent</a></code></dd>"},
        // Should document that a method is specified by private interface.
        {BUG_ID + "-2" + FS + "pkg" + FS + "PublicChild.html",
-            "<STRONG>Specified by:</STRONG></DT><DD><CODE>" +
-            "<A HREF=\"../pkg/PrivateInterface.html#methodInterface(int)\">" +
-            "methodInterface</A></CODE> in interface <CODE>" +
-            "<A HREF=\"../pkg/PrivateInterface.html\" title=\"interface in pkg\">" +
-            "PrivateInterface</A></CODE></DD>" + NL + "</DL>" + NL + "</DD>"},
+            "<dt><strong>Specified by:</strong></dt>" + NL +
+            "<dd><code><a href=\"../pkg/PrivateInterface.html#methodInterface(int)\">" +
+            "methodInterface</a></code>&nbsp;in interface&nbsp;<code>" +
+            "<a href=\"../pkg/PrivateInterface.html\" title=\"interface in pkg\">" +
+            "PrivateInterface</a></code></dd>"},
        // Method inheritence from non-public superinterface.
        {BUG_ID + "-2" + FS + "pkg" + FS + "PublicInterface.html",
-            "Methods inherited from interface " +
-            "pkg.<A HREF=\"../pkg/PrivateInterface.html\" " +
-            "title=\"interface in pkg\">PrivateInterface</A>"
+            "Methods inherited from interface&nbsp;pkg." +
+            "<a href=\"../pkg/PrivateInterface.html\" title=\"interface in pkg\">" +
+            "PrivateInterface</a>"
         },
         {BUG_ID + "-2" + FS + "pkg" + FS + "PrivateInterface.html",
-            "<A HREF=\"../pkg/PrivateInterface.html#methodInterface(int)\">" +
-                "methodInterface</A>"
+            "<a href=\"../pkg/PrivateInterface.html#methodInterface(int)\">" +
+                "methodInterface</a>"
         },
       // Should mention that any documentation was copied.
       {BUG_ID + "-2" + FS + "pkg" + FS + "PublicChild.html",
@@ -209,26 +209,31 @@
 
       //Make sure implemented interfaces from private superclass are inherited
       {BUG_ID + "-2" + FS + "pkg" + FS + "PublicInterface.html",
-        "<STRONG>All Known Implementing Classes:</STRONG></DT> <DD><A HREF=\"../pkg/PrivateParent.html\" " +
-        "title=\"class in pkg\">PrivateParent</A>, " +
-        "<A HREF=\"../pkg/PublicChild.html\" title=\"class in pkg\">PublicChild</A>"},
+        "<dl>" + NL + "<dt>All Known Implementing Classes:</dt>" + NL +
+        "<dd><a href=\"../pkg/PrivateParent.html\" title=\"class in pkg\">" +
+        "PrivateParent</a>, " +
+        "<a href=\"../pkg/PublicChild.html\" title=\"class in pkg\">PublicChild" +
+        "</a></dd>" + NL + "</dl>"},
 
       {BUG_ID + "-2" + FS + "pkg" + FS + "PublicChild.html",
-        "<STRONG>All Implemented Interfaces:</STRONG></DT> <DD><A HREF=\"../pkg/PrivateInterface.html\" " +
-        "title=\"interface in pkg\">PrivateInterface</A>, " +
-        "<A HREF=\"../pkg/PublicInterface.html\" title=\"interface in pkg\">" +
-        "PublicInterface</A>"},
+        "<dl>" + NL + "<dt>All Implemented Interfaces:</dt>" + NL +
+        "<dd><a href=\"../pkg/PrivateInterface.html\" title=\"interface in pkg\">" +
+        "PrivateInterface</a>, " +
+        "<a href=\"../pkg/PublicInterface.html\" title=\"interface in pkg\">" +
+        "PublicInterface</a></dd>" + NL + "</dl>"},
 
       //Since private flag is used, we can document that private interface method
       //with generic parameters has been implemented.
       {BUG_ID + "-2" + FS + "pkg2" + FS + "C.html",
-            "<STRONG>Description copied from interface: " +
-            "<CODE><A HREF=\"../pkg2/I.html#hello(T)\">I</A></CODE></STRONG>"},
+            "<strong>Description copied from interface:&nbsp;<code>" +
+            "<a href=\"../pkg2/I.html#hello(T)\">I</a></code></strong>"},
 
       {BUG_ID + "-2" + FS + "pkg2" + FS + "C.html",
-            "<STRONG>Specified by:</STRONG></DT><DD><CODE><A HREF=\"../pkg2/I.html#hello(T)\">" +
-            "hello</A></CODE> in interface <CODE><A HREF=\"../pkg2/I.html\" " +
-            "title=\"interface in pkg2\">I</A>"},
+            "<dt><strong>Specified by:</strong></dt>" + NL +
+            "<dd><code><a href=\"../pkg2/I.html#hello(T)\">hello</a></code>" +
+            "&nbsp;in interface&nbsp;<code>" +
+            "<a href=\"../pkg2/I.html\" title=\"interface in pkg2\">I</a>" +
+            "&lt;java.lang.String&gt;</code></dd>"},
     };
     private static final String[][] NEGATED_TEST2 = NO_TEST;
 
--- a/langtools/test/com/sun/javadoc/testSerializedForm/TestSerializedForm.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testSerializedForm/TestSerializedForm.java	Wed Dec 01 11:02:38 2010 -0800
@@ -47,11 +47,11 @@
 
     private static final String[][] TEST = {
         {BUG_ID + FS + "serialized-form.html",
-            "protected java.lang.Object <STRONG>readResolve</STRONG>()"},
+            "protected&nbsp;java.lang.Object&nbsp;readResolve()"},
         {BUG_ID + FS + "serialized-form.html",
-            "protected java.lang.Object <STRONG>writeReplace</STRONG>()"},
+            "protected&nbsp;java.lang.Object&nbsp;writeReplace()"},
         {BUG_ID + FS + "serialized-form.html",
-            "protected java.lang.Object <STRONG>readObjectNoData</STRONG>()"},
+            "protected&nbsp;java.lang.Object&nbsp;readObjectNoData()"},
         {BUG_ID + FS + "serialized-form.html",
             "See Also"},
     };
--- a/langtools/test/com/sun/javadoc/testSerializedFormDeprecationInfo/TestSerializedFormDeprecationInfo.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testSerializedFormDeprecationInfo/TestSerializedFormDeprecationInfo.java	Wed Dec 01 11:02:38 2010 -0800
@@ -41,58 +41,47 @@
     // Test for normal run of javadoc. The serialized-form.html should
     // display the inline comments, tags and deprecation information if any.
     private static final String[][] TEST_CMNT_DEPR = {
-        {BUG_ID + FS + "serialized-form.html", "<DL>" + NL + "<DD><DL>" + NL +
-                 "<DT><STRONG>Throws:</STRONG></DT>" + NL + "<DD><CODE>" +
-                 "java.io.IOException</CODE></DD><DT><STRONG>See Also:</STRONG>" +
-                 "</DT><DD><A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-                 "<CODE>C1.setUndecorated(boolean)</CODE></A></DD></DL>" + NL +
-                 "</DD>" + NL + "</DL>"},
-        {BUG_ID + FS + "serialized-form.html", "<DL>" + NL +
-                 "<DD><STRONG>Deprecated.</STRONG>&nbsp;<I>As of JDK version " +
-                 "1.5, replaced by" + NL +
-                 " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-                 "<CODE>setUndecorated(boolean)</CODE></A>.</I></DD>" +
-                 "<DD>This field indicates whether the C1 is undecorated." + NL +
-                 "<P>" + NL + "</DD>" + NL + "<DD>&nbsp;</DD>" + NL +
-                 "<DD><DL>" + NL + "<DT><STRONG>Since:</STRONG></DT>" + NL +
-                 "  <DD>1.4</DD>" + NL + "<DT><STRONG>See Also:</STRONG>" +
-                 "</DT><DD><A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-                 "<CODE>C1.setUndecorated(boolean)</CODE></A></DD></DL>" + NL +
-                 "</DD>" + NL + "</DL>"},
-        {BUG_ID + FS + "serialized-form.html", "<DL>" + NL +
-                 "<DD><STRONG>Deprecated.</STRONG>&nbsp;<I>As of JDK version" +
-                 " 1.5, replaced by" + NL +
-                 " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-                 "<CODE>setUndecorated(boolean)</CODE></A>.</I>" + NL + "<P>" + NL +
-                 "</DD><DD>Reads the object stream." + NL + "<P>" + NL +
-                 "</DD>" + NL + "<DD><DL>" + NL + "<DT><STRONG>Throws:" +
-                 "</STRONG></DT>" + NL + "<DD><CODE><code>" +
-                 "IOException</code></CODE></DD>" + NL +
-                 "<DD><CODE>java.io.IOException</CODE></DD></DL>" + NL +
-                 "</DD>" + NL + "</DL>"},
-        {BUG_ID + FS + "serialized-form.html", "<DL>" + NL +
-                 "<DD><STRONG>Deprecated.</STRONG>&nbsp;</DD><DD>" +
-                 "The name for this class." + NL + "<P>" + NL + "</DD>" + NL +
-                 "<DD>&nbsp;</DD>" + NL + "</DL>"}};
+        {BUG_ID + FS + "serialized-form.html", "<dl>" +
+                 "<dt><span class=\"strong\">Throws:</span></dt>" + NL + "<dd><code>" +
+                 "java.io.IOException</code></dd><dt><span class=\"strong\">See Also:</span>" +
+                 "</dt><dd><a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
+                 "<code>C1.setUndecorated(boolean)</code></a></dd></dl>"},
+        {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" +
+                 "&nbsp;<i>As of JDK version 1.5, replaced by" + NL +
+                 " <a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
+                 "<code>setUndecorated(boolean)</code></a>.</i></div>" + NL +
+                 "<div class=\"block\">This field indicates whether the C1 " +
+                 "is undecorated.</div>" + NL + "&nbsp;" + NL +
+                 "<dl><dt><span class=\"strong\">Since:</span></dt>" + NL +
+                 "  <dd>1.4</dd>" + NL + "<dt><span class=\"strong\">See Also:</span>" +
+                 "</dt><dd><a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
+                 "<code>C1.setUndecorated(boolean)</code></a></dd></dl>"},
+        {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" +
+                 "&nbsp;<i>As of JDK version 1.5, replaced by" + NL +
+                 " <a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
+                 "<code>setUndecorated(boolean)</code></a>.</i></div>" + NL +
+                 "<div class=\"block\">Reads the object stream.</div>" + NL +
+                 "<dl><dt><span class=\"strong\">Throws:</span></dt>" + NL + "<dd><code><code>" +
+                 "IOException</code></code></dd>" + NL +
+                 "<dd><code>java.io.IOException</code></dd></dl>"},
+        {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" +
+                 "&nbsp;</div>" + NL + "<div class=\"block\">" +
+                 "The name for this class.</div>"}};
 
     // Test with -nocomment option. The serialized-form.html should
     // not display the inline comments and tags but should display deprecation
     // information if any.
     private static final String[][] TEST_NOCMNT = {
-        {BUG_ID + FS + "serialized-form.html", "<PRE>" + NL + "boolean <STRONG>" +
-                 "undecorated</STRONG></PRE>" + NL + "<DL>" + NL + "<DD><STRONG>" +
-                 "Deprecated.</STRONG>&nbsp;<I>As of JDK version 1.5, replaced by" + NL +
-                 " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\"><CODE>" +
-                 "setUndecorated(boolean)</CODE></A>.</I></DD></DL>"},
-        {BUG_ID + FS + "serialized-form.html", "<DL>" + NL + "<DD><STRONG>" +
-                 "Deprecated.</STRONG>&nbsp;<I>As of JDK version" +
+        {BUG_ID + FS + "serialized-form.html", "<pre>boolean undecorated</pre>" + NL +
+                 "<div class=\"block\"><span class=\"strong\">Deprecated.</span>&nbsp;<i>" +
+                 "As of JDK version 1.5, replaced by" + NL +
+                 " <a href=\"pkg1/C1.html#setUndecorated(boolean)\"><code>" +
+                 "setUndecorated(boolean)</code></a>.</i></div>" + NL + "</li>"},
+        {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">" +
+                 "Deprecated.</span>&nbsp;<i>As of JDK version" +
                  " 1.5, replaced by" + NL +
-                 " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-                 "<CODE>setUndecorated(boolean)</CODE></A>.</I>" + NL + "<P>" + NL +
-                 "</DD></DL>"},
-        {BUG_ID + FS + "serialized-form.html", "<PRE>" + NL + "int <STRONG>" +
-                 "publicKey</STRONG></PRE>" + NL + "<DL>" + NL + "<DD><STRONG>" +
-                 "Deprecated.</STRONG>&nbsp;</DD></DL>"}};
+                 " <a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
+                 "<code>setUndecorated(boolean)</code></a>.</i></div>" + NL + "</li>"}};
 
     // Test with -nodeprecated option. The serialized-form.html should
     // ignore the -nodeprecated tag and display the deprecation info. This
--- a/langtools/test/com/sun/javadoc/testSimpleTag/TestSimpleTag.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testSimpleTag/TestSimpleTag.java	Wed Dec 01 11:02:38 2010 -0800
@@ -42,13 +42,13 @@
     private static final String[][] TEST =
         new String[][] {
             {"./" + BUG_ID + "/C.html",
-                "<STRONG>Todo:</STRONG>"},
+                "<span class=\"strong\">Todo:</span>"},
             {"./" + BUG_ID + "/C.html",
-                "<STRONG>EJB Beans:</STRONG>"},
+                "<span class=\"strong\">EJB Beans:</span>"},
             {"./" + BUG_ID + "/C.html",
-                "<STRONG>Regular Tag:</STRONG>"},
+                "<span class=\"strong\">Regular Tag:</span>"},
             {"./" + BUG_ID + "/C.html",
-                "<STRONG>Back-Slash-Tag:</STRONG>"},
+                "<span class=\"strong\">Back-Slash-Tag:</span>"},
         };
 
     private static final String[] ARGS = new String[] {
--- a/langtools/test/com/sun/javadoc/testStylesheet/TestStylesheet.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testStylesheet/TestStylesheet.java	Wed Dec 01 11:02:38 2010 -0800
@@ -45,32 +45,24 @@
     //Input for string search tests.
     private static final String[][] TEST = {
         {BUG_ID + FS + "stylesheet.css",
-                "body { background-color: #FFFFFF; color:#000000 }"},
+                "/* Javadoc style sheet */"},
         {BUG_ID + FS + "stylesheet.css",
-                ".TableHeadingColor     { background: #CCCCFF; color:#000000 }"},
-        {BUG_ID + FS + "stylesheet.css",
-                ".TableSubHeadingColor  { background: #EEEEFF; color:#000000 }"},
+                "/*" + NL + "Overall document style" + NL + "*/"},
         {BUG_ID + FS + "stylesheet.css",
-                ".TableRowColor         { background: #FFFFFF; color:#000000 }"},
+                "/*" + NL + "Heading styles" + NL + "*/"},
         {BUG_ID + FS + "stylesheet.css",
-                ".FrameTitleFont   { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 }"},
-        {BUG_ID + FS + "stylesheet.css",
-                ".FrameHeadingFont { font-size:  90%; font-family: Helvetica, Arial, sans-serif; color:#000000 }"},
+                "/*" + NL + "Navigation bar styles" + NL + "*/"},
         {BUG_ID + FS + "stylesheet.css",
-                ".FrameItemFont    { font-size:  90%; font-family: Helvetica, Arial, sans-serif; color:#000000 }"},
-        {BUG_ID + FS + "stylesheet.css",
-                ".NavBarCell1    { background-color:#EEEEFF; color:#000000}"},
-        {BUG_ID + FS + "stylesheet.css",
-                ".NavBarCell1Rev { background-color:#00008B; color:#FFFFFF}"},
+                "body {" + NL + "    font-family:Helvetica, Arial, sans-serif;" + NL +
+                "    color:#000000;" + NL + "}"},
         {BUG_ID + FS + "stylesheet.css",
-                ".NavBarFont1    { font-family: Arial, Helvetica, sans-serif; color:#000000;color:#000000;}"},
-        {BUG_ID + FS + "stylesheet.css",
-                ".NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;color:#FFFFFF;}"},
-        {BUG_ID + FS + "stylesheet.css",
-                ".NavBarCell2    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000}"},
-        {BUG_ID + FS + "stylesheet.css",
-                ".NavBarCell3    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000}"},
-
+                "dl dd ul li {" + NL + "    list-style:none;" + NL +
+                "    margin:10px 0 10px 0;" + NL + "}"},
+        // Test whether a link to the stylesheet file is inserted properly
+        // in the class documentation.
+        {BUG_ID + FS + "pkg" + FS + "A.html",
+                "<link rel=\"stylesheet\" type=\"text/css\" " +
+                "href=\"../stylesheet.css\" title=\"Style\">"}
     };
     private static final String[][] NEGATED_TEST = NO_TEST;
 
--- a/langtools/test/com/sun/javadoc/testSummaryHeading/TestSummaryHeading.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testSummaryHeading/TestSummaryHeading.java	Wed Dec 01 11:02:38 2010 -0800
@@ -46,8 +46,7 @@
 
     //Input for string search tests.
     private static final String[][] TEST = {
-        {BUG_ID + FS + "C.html",  "<CAPTION CLASS=\"TableCaption\">" + NL +
-                 "Method Summary</CAPTION>"}
+        {BUG_ID + FS + "C.html",  "<h3>Method Summary</h3>"}
     };
     private static final String[][] NEGATED_TEST = NO_TEST;
 
--- a/langtools/test/com/sun/javadoc/testSuperclassInSerialForm/TestSuperClassInSerialForm.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testSuperclassInSerialForm/TestSuperClassInSerialForm.java	Wed Dec 01 11:02:38 2010 -0800
@@ -39,7 +39,7 @@
 
     private static final String[][] TEST = {
         {BUG_ID + FS + "serialized-form.html",
-         "<A HREF=\"pkg/SubClass.html\" title=\"class in pkg\">pkg.SubClass</A> extends <A HREF=\"pkg/SuperClass.html\" title=\"class in pkg\">SuperClass</A>"}
+         "<a href=\"pkg/SubClass.html\" title=\"class in pkg\">pkg.SubClass</a> extends <a href=\"pkg/SuperClass.html\" title=\"class in pkg\">SuperClass</a>"}
     };
 
     private static final String[][] NEGATED_TEST = NO_TEST;
--- a/langtools/test/com/sun/javadoc/testTagInheritence/TestTagInheritence.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testTagInheritence/TestTagInheritence.java	Wed Dec 01 11:02:38 2010 -0800
@@ -59,12 +59,12 @@
         //First sentence test (6253614)
         tests[tests.length - 2][0] =BUG_ID + FS + "firstSentence" + FS +
             "B.html";
-        tests[tests.length - 2][1] =  "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;First sentence.</TD>";
+        tests[tests.length - 2][1] =  "<div class=\"block\">First sentence.</div>";
 
         //Another first sentence test (6253604)
         tests[tests.length - 1][0] =BUG_ID + FS + "firstSentence2" + FS +
             "C.html";
-        tests[tests.length - 1][1] =  "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;First sentence.</TD>";
+        tests[tests.length - 1][1] =  "<div class=\"block\">First sentence.</div>";
 
         TestTagInheritence tester = new TestTagInheritence();
         run(tester, ARGS, tests, NO_TEST);
--- a/langtools/test/com/sun/javadoc/testTaglets/TestTaglets.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testTaglets/TestTaglets.java	Wed Dec 01 11:02:38 2010 -0800
@@ -55,13 +55,15 @@
 
     //Input for string search tests.
     private static final String[][] TEST_4654308 = new String[][] {
-        {"4654308" + FS + "C.html", "<B>Foo:</B><DD>my only method is " +            "<A HREF=\"C.html#method()\"><CODE>here</CODE></A>"}
+        {"4654308" + FS + "C.html", "<span class=\"strong\">Foo:</span></dt>" +
+                 "<dd>my only method is <a href=\"C.html#method()\"><code>here" +
+                 "</code></a></dd></dl>"}
     };
     private static final String[][] NEGATED_TEST_4654308 = NO_TEST;
 
     private static final String[][] TEST_4767038 = new String[][] {
         {"4767038" + FS + "Child.html",
-            "&nbsp;This is the first sentence.</TD>"}
+            "This is the first sentence."}
     };
     private static final String[][] NEGATED_TEST_4767038 = NO_TEST;
 
--- a/langtools/test/com/sun/javadoc/testTaglets/taglets/Foo.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testTaglets/taglets/Foo.java	Wed Dec 01 11:02:38 2010 -0800
@@ -50,9 +50,9 @@
      */
     public TagletOutput getTagletOutput(Tag tag, TagletWriter writer) {
         ArrayList inlineTags = new ArrayList();
-        inlineTags.add(new TextTag(tag.holder(), "<DT><B>Foo:</B><DD>"));
+        inlineTags.add(new TextTag(tag.holder(), "<dt><span class=\"strong\">Foo:</span></dt><dd>"));
         inlineTags.addAll(Arrays.asList(tag.inlineTags()));
-        inlineTags.add(new TextTag(tag.holder(), "</DD>"));
+        inlineTags.add(new TextTag(tag.holder(), "</dd>"));
         return writer.commentTagsToOutput(tag,
                 (Tag[]) inlineTags.toArray(new Tag[] {}));
     }
--- a/langtools/test/com/sun/javadoc/testThrowsHead/TestThrowsHead.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testThrowsHead/TestThrowsHead.java	Wed Dec 01 11:02:38 2010 -0800
@@ -38,7 +38,7 @@
 
     private static final String BUG_ID = "4530727";
     private static final String[][] TEST = {
-        {BUG_ID + FS + "C.html", "<DT><STRONG>Throws:</STRONG>"}
+        {BUG_ID + FS + "C.html", "<dt><span class=\"strong\">Throws:</span>"}
     };
     private static final String[][] NEGATED_TEST = NO_TEST;
     private static final String[] ARGS = new String[] {
--- a/langtools/test/com/sun/javadoc/testThrowsTag/TestThrowsTag.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testThrowsTag/TestThrowsTag.java	Wed Dec 01 11:02:38 2010 -0800
@@ -46,14 +46,14 @@
     //Input for string search tests.
     private static final String[][] TEST = {
         {BUG_ID + FS + "pkg" + FS + "C.html",
-            "<DD><CODE><A HREF=\"../pkg/T1.html\" title=\"class in pkg\">T1</A></CODE> - the first throws tag.</DD>" + NL +
-            "<DD><CODE><A HREF=\"../pkg/T2.html\" title=\"class in pkg\">T2</A></CODE> - the second throws tag.</DD>" + NL +
-            "<DD><CODE><A HREF=\"../pkg/T3.html\" title=\"class in pkg\">T3</A></CODE> - the third throws tag.</DD>" + NL +
-            "<DD><CODE><A HREF=\"../pkg/T4.html\" title=\"class in pkg\">T4</A></CODE> - the fourth throws tag.</DD>" + NL +
-            "<DD><CODE><A HREF=\"../pkg/T5.html\" title=\"class in pkg\">T5</A></CODE> - the first inherited throws tag.</DD>" + NL +
-            "<DD><CODE><A HREF=\"../pkg/T6.html\" title=\"class in pkg\">T6</A></CODE> - the second inherited throws tag.</DD>" + NL +
-            "<DD><CODE><A HREF=\"../pkg/T7.html\" title=\"class in pkg\">T7</A></CODE> - the third inherited throws tag.</DD>" + NL +
-            "<DD><CODE><A HREF=\"../pkg/T8.html\" title=\"class in pkg\">T8</A></CODE> - the fourth inherited throws tag.</DD>"
+            "<dd><code><a href=\"../pkg/T1.html\" title=\"class in pkg\">T1</a></code> - the first throws tag.</dd>" + NL +
+            "<dd><code><a href=\"../pkg/T2.html\" title=\"class in pkg\">T2</a></code> - the second throws tag.</dd>" + NL +
+            "<dd><code><a href=\"../pkg/T3.html\" title=\"class in pkg\">T3</a></code> - the third throws tag.</dd>" + NL +
+            "<dd><code><a href=\"../pkg/T4.html\" title=\"class in pkg\">T4</a></code> - the fourth throws tag.</dd>" + NL +
+            "<dd><code><a href=\"../pkg/T5.html\" title=\"class in pkg\">T5</a></code> - the first inherited throws tag.</dd>" + NL +
+            "<dd><code><a href=\"../pkg/T6.html\" title=\"class in pkg\">T6</a></code> - the second inherited throws tag.</dd>" + NL +
+            "<dd><code><a href=\"../pkg/T7.html\" title=\"class in pkg\">T7</a></code> - the third inherited throws tag.</dd>" + NL +
+            "<dd><code><a href=\"../pkg/T8.html\" title=\"class in pkg\">T8</a></code> - the fourth inherited throws tag.</dd>"
         },
     };
     private static final String[][] NEGATED_TEST = NO_TEST;
--- a/langtools/test/com/sun/javadoc/testTitleInHref/TestTitleInHref.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testTitleInHref/TestTitleInHref.java	Wed Dec 01 11:02:38 2010 -0800
@@ -38,13 +38,13 @@
 
     private static final String[][] TEST = {
         //Test to make sure that the title shows up in a class link.
-        {BUG_ID + FS + "pkg" + FS + "Links.html", "<A HREF=\"../pkg/Class.html\" title=\"class in pkg\">"},
+        {BUG_ID + FS + "pkg" + FS + "Links.html", "<a href=\"../pkg/Class.html\" title=\"class in pkg\">"},
 
         //Test to make sure that the title shows up in an interface link.
-        {BUG_ID + FS + "pkg" + FS + "Links.html", "<A HREF=\"../pkg/Interface.html\" title=\"interface in pkg\">"},
+        {BUG_ID + FS + "pkg" + FS + "Links.html", "<a href=\"../pkg/Interface.html\" title=\"interface in pkg\">"},
 
         //Test to make sure that the title shows up in cross link shows up
-        {BUG_ID + FS + "pkg" + FS + "Links.html", "<A HREF=\"http://java.sun.com/j2se/1.4/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\"><CODE>This is a cross link to class File</CODE></A>"},
+        {BUG_ID + FS + "pkg" + FS + "Links.html", "<a href=\"http://java.sun.com/j2se/1.4/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\"><code>This is a cross link to class File</code></a>"},
 
     };
 
--- a/langtools/test/com/sun/javadoc/testTypeParams/TestTypeParameters.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testTypeParams/TestTypeParameters.java	Wed Dec 01 11:02:38 2010 -0800
@@ -49,16 +49,17 @@
     private static final String[][] TEST =
     {
         {BUG_ID + FS + "pkg" + FS + "C.html",
-            "<CODE>&lt;W extends java.lang.String,V extends java.util.List&gt; " + NL +
-            "<BR>" + NL +
-            "java.lang.Object</CODE>"},
+            "<td class=\"colFirst\"><code>&lt;W extends java.lang.String,V extends " +
+            "java.util.List&gt;&nbsp;<br>java.lang.Object</code></td>"},
         {BUG_ID + FS + "pkg" + FS + "C.html",
-            "<CODE>&lt;T&gt; java.lang.Object</CODE>"},
+            "<code>&lt;T&gt;&nbsp;java.lang.Object</code>"},
         {BUG_ID + FS + "pkg" + FS + "package-summary.html",
             "C&lt;E extends Parent&gt;"},
         //Nested type parameters
         {BUG_ID + FS + "pkg" + FS + "C.html",
-            "<A NAME=\"formatDetails(java.util.Collection, java.util.Collection)\"><!-- --></A>"},
+            "<a name=\"formatDetails(java.util.Collection, java.util.Collection)\">" + NL +
+            "<!--   -->" + NL +
+            "</a>"},
 
     };
     private static final String[][] NEGATED_TEST = NO_TEST;
--- a/langtools/test/com/sun/javadoc/testUnnamedPackage/TestUnnamedPackage.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testUnnamedPackage/TestUnnamedPackage.java	Wed Dec 01 11:02:38 2010 -0800
@@ -46,7 +46,7 @@
     //Input for string search tests.
     private static final String[][] TEST = {
         {BUG_ID + FS + "package-summary.html",
-            "<H2>"+NL+"Package &lt;Unnamed&gt;"+NL+"</H2>"
+            "<h1 title=\"Package\" class=\"title\">Package&nbsp;&lt;Unnamed&gt;</h1>"
         },
         {BUG_ID + FS + "package-summary.html",
             "This is a package comment for the unnamed package."
@@ -55,12 +55,12 @@
             "This is a class in the unnamed package."
         },
         {BUG_ID + FS + "package-tree.html",
-            "<H2>"+NL+"Hierarchy For Package &lt;Unnamed&gt;"+NL+"</H2>"
+            "<h1 class=\"title\">Hierarchy For Package &lt;Unnamed&gt;</h1>"
         },
         {BUG_ID + FS + "index-all.html",
             "title=\"class in &lt;Unnamed&gt;\""
         },
-        {BUG_ID + FS + "C.html", "<A HREF=\"package-summary.html\">"}
+        {BUG_ID + FS + "C.html", "<a href=\"package-summary.html\">"}
     };
     private static final String[][] NEGATED_TEST = {
         {ERROR_OUTPUT, "BadSource"},
--- a/langtools/test/com/sun/javadoc/testValueTag/TestValueTag.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testValueTag/TestValueTag.java	Wed Dec 01 11:02:38 2010 -0800
@@ -52,44 +52,44 @@
             "Result:  \"Test 1 passes\""},
         //Retrieve value of constant in same class.
         {BUG_ID + FS + "pkg1" + FS + "Class1.html",
-            "Result:  <A HREF=\"../pkg1/Class1.html#TEST_2_PASSES\">\"Test 2 passes\"</A>"},
+            "Result:  <a href=\"../pkg1/Class1.html#TEST_2_PASSES\">\"Test 2 passes\"</a>"},
         {BUG_ID + FS + "pkg1" + FS + "Class1.html",
-            "Result:  <A HREF=\"../pkg1/Class1.html#TEST_3_PASSES\">\"Test 3 passes\"</A>"},
+            "Result:  <a href=\"../pkg1/Class1.html#TEST_3_PASSES\">\"Test 3 passes\"</a>"},
         {BUG_ID + FS + "pkg1" + FS + "Class1.html",
-            "Result:  <A HREF=\"../pkg1/Class1.html#TEST_4_PASSES\">\"Test 4 passes\"</A>"},
+            "Result:  <a href=\"../pkg1/Class1.html#TEST_4_PASSES\">\"Test 4 passes\"</a>"},
         {BUG_ID + FS + "pkg1" + FS + "Class1.html",
-            "Result:  <A HREF=\"../pkg1/Class1.html#TEST_5_PASSES\">\"Test 5 passes\"</A>"},
+            "Result:  <a href=\"../pkg1/Class1.html#TEST_5_PASSES\">\"Test 5 passes\"</a>"},
         {BUG_ID + FS + "pkg1" + FS + "Class1.html",
-            "Result:  <A HREF=\"../pkg1/Class1.html#TEST_6_PASSES\">\"Test 6 passes\"</A>"},
+            "Result:  <a href=\"../pkg1/Class1.html#TEST_6_PASSES\">\"Test 6 passes\"</a>"},
         //Retrieve value of constant in different class.
         {BUG_ID + FS + "pkg1" + FS + "Class2.html",
-            "Result:  <A HREF=\"../pkg1/Class1.html#TEST_7_PASSES\">\"Test 7 passes\"</A>"},
+            "Result:  <a href=\"../pkg1/Class1.html#TEST_7_PASSES\">\"Test 7 passes\"</a>"},
         {BUG_ID + FS + "pkg1" + FS + "Class2.html",
-            "Result:  <A HREF=\"../pkg1/Class1.html#TEST_8_PASSES\">\"Test 8 passes\"</A>"},
+            "Result:  <a href=\"../pkg1/Class1.html#TEST_8_PASSES\">\"Test 8 passes\"</a>"},
         {BUG_ID + FS + "pkg1" + FS + "Class2.html",
-            "Result:  <A HREF=\"../pkg1/Class1.html#TEST_9_PASSES\">\"Test 9 passes\"</A>"},
+            "Result:  <a href=\"../pkg1/Class1.html#TEST_9_PASSES\">\"Test 9 passes\"</a>"},
         {BUG_ID + FS + "pkg1" + FS + "Class2.html",
-            "Result:  <A HREF=\"../pkg1/Class1.html#TEST_10_PASSES\">\"Test 10 passes\"</A>"},
+            "Result:  <a href=\"../pkg1/Class1.html#TEST_10_PASSES\">\"Test 10 passes\"</a>"},
         {BUG_ID + FS + "pkg1" + FS + "Class2.html",
-            "Result:  <A HREF=\"../pkg1/Class1.html#TEST_11_PASSES\">\"Test 11 passes\"</A>"},
+            "Result:  <a href=\"../pkg1/Class1.html#TEST_11_PASSES\">\"Test 11 passes\"</a>"},
         //Retrieve value of constant in different package
         {BUG_ID + FS + "pkg1" + FS + "Class2.html",
-            "Result:  <A HREF=\"../pkg2/Class3.html#TEST_12_PASSES\">\"Test 12 passes\"</A>"},
+            "Result:  <a href=\"../pkg2/Class3.html#TEST_12_PASSES\">\"Test 12 passes\"</a>"},
         {BUG_ID + FS + "pkg1" + FS + "Class2.html",
-            "Result:  <A HREF=\"../pkg2/Class3.html#TEST_13_PASSES\">\"Test 13 passes\"</A>"},
+            "Result:  <a href=\"../pkg2/Class3.html#TEST_13_PASSES\">\"Test 13 passes\"</a>"},
         {BUG_ID + FS + "pkg1" + FS + "Class2.html",
-            "Result:  <A HREF=\"../pkg2/Class3.html#TEST_14_PASSES\">\"Test 14 passes\"</A>"},
+            "Result:  <a href=\"../pkg2/Class3.html#TEST_14_PASSES\">\"Test 14 passes\"</a>"},
         {BUG_ID + FS + "pkg1" + FS + "Class2.html",
-            "Result:  <A HREF=\"../pkg2/Class3.html#TEST_15_PASSES\">\"Test 15 passes\"</A>"},
+            "Result:  <a href=\"../pkg2/Class3.html#TEST_15_PASSES\">\"Test 15 passes\"</a>"},
         {BUG_ID + FS + "pkg1" + FS + "Class2.html",
-            "Result:  <A HREF=\"../pkg2/Class3.html#TEST_16_PASSES\">\"Test 16 passes\"</A>"},
+            "Result:  <a href=\"../pkg2/Class3.html#TEST_16_PASSES\">\"Test 16 passes\"</a>"},
         //Retrieve value of constant from a package page
         {BUG_ID + FS + "pkg2" + FS + "package-summary.html",
-            "Result: <A HREF=\"../pkg2/Class3.html#TEST_17_PASSES\">\"Test 17 passes\"</A>"},
+            "Result: <a href=\"../pkg2/Class3.html#TEST_17_PASSES\">\"Test 17 passes\"</a>"},
         //Test @value tag used with custom tag.
         {BUG_ID + FS + "pkg1" + FS + "CustomTagUsage.html",
-            "<DT><STRONG>Todo:</STRONG></DT>" + NL +
-                "  <DD>the value of this constant is 55.</DD>"},
+            "<dt><span class=\"strong\">Todo:</span></dt>" + NL +
+                "  <dd>the value of this constant is 55.</dd>"},
         //Test @value warning printed when used with non-constant.
         {WARNING_OUTPUT,"warning - @value tag (which references nonConstant) " +
             "can only be used in constants."
--- a/langtools/test/com/sun/javadoc/testWarnings/TestWarnings.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/test/com/sun/javadoc/testWarnings/TestWarnings.java	Wed Dec 01 11:02:38 2010 -0800
@@ -65,9 +65,9 @@
     };
 
     private static final String[][] TEST2 = {
-        {BUG_ID + FS + "pkg" + FS + "X.html", "<A HREF=\"../pkg/X.html#m()\"><CODE>m()</CODE></A><br/>"},
-        {BUG_ID + FS + "pkg" + FS + "X.html", "<A HREF=\"../pkg/X.html#X()\"><CODE>X()</CODE></A><br/>"},
-        {BUG_ID + FS + "pkg" + FS + "X.html", "<A HREF=\"../pkg/X.html#f\"><CODE>f</CODE></A><br/>"},
+        {BUG_ID + FS + "pkg" + FS + "X.html", "<a href=\"../pkg/X.html#m()\"><code>m()</code></a><br/>"},
+        {BUG_ID + FS + "pkg" + FS + "X.html", "<a href=\"../pkg/X.html#X()\"><code>X()</code></a><br/>"},
+        {BUG_ID + FS + "pkg" + FS + "X.html", "<a href=\"../pkg/X.html#f\"><code>f</code></a><br/>"},
     };
 
     private static final String[][] NEGATED_TEST2 = NO_TEST;