<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <h2>phase-1</h2>
    <p><b>In AbstractIndexWriter</b>, <br>
      the use of "anyOf" with a singleton list seems a bit weird.</p>
    <p><b>In SearchIndexItem</b>:<br>
      The word "index" is heavily overloaded in javadoc. Would it be
      better in this case to use "INDEX_TAG"? (Just asking).<br>
      If nothing else, add doc-comments on the members of Category.</p>
    <p>Folding "boolean systemProperty" into the Category seems like a
      good idea.<br>
    </p>
    <p><b>In SearchIndexItems</b>:   ugh for having to put the apiNote
      after the scary comment. Nothing we can do, except maybe one day
      think about removing the scary comments, which have maybe outlived
      their usefulness. Maybe we could limit them to package-info.java
      fies.</p>
    <pre><span class="changed"> 120      * <p> The returned stream consists of all items {@code i} for which there's</span></pre>
    <p>It's often considered better to avoid contractions (like
      "there's") in formal writing.</p>
    <pre><span class="changed"> 120      * <p> The returned stream consists of all items {@code i} for which there's</span>
<span class="changed"> 121      * a category {@code c}, from the specified categories, such that</span>
<span class="changed"> 122      * {@code i.getCategory().equals(c)}. The stream may be empty, if there are</span>
<span class="changed"> 123      * no such items.</span></pre>
    <p>The commas are questionable around "from the specified
      categories". Don't use commas when the enclosed text is important
      to the understanding of the sentence.</p>
    <p>`concat` seems overkill.  For an internal method, I'd simplify
      the anyOfCategories, and either use overloads or a single varargs
      and just verify the length is not zero.  By inspection, it seems
      to only ever use 1 or 2 args. Use overloads! </p>
    <p><br>
    </p>
    <h2>phase-2</h2>
    <p>AbstractIndexWriter<br>
      line 511,512: horrible non-standard formatting: was this suggested
      by an IDE?<br>
    </p>
    <p>keyCharacter: when is this method called with an empty string? 
      It looks like it is related to the SearchIndexItem having en empty
      label ... perhaps we should check/fix the problem there.<br>
      Be careful of using Character.toUpperCase/toLowerCase ... they are
      locale-dependent.<br>
      That being said, maybe we do want the locale-dependent version
      here, which is unusual.<br>
      While it is reasonable to get the first character of a Java
      identifier, I wonder if it is reasonable<br>
      to get the first character of an arbitrary string, i.e. from an
      {@index} tag.</p>
    <p>various: it's not wrong, but I personally don't like the style of
      importing static methods, like groupingBy and toList. Keep it if
      you want, but if I were writing the code, I would use
      Collectors.methodName</p>
    <p><br>
    </p>
    <h2>phase-3</h2>
    <p>HtmlDocletWriter: this class is one instance per page ... do you
      really mean to put it here, as compared to Configuration (more
      global) or some more specific kind of page?  (I see it moved in
      phase 4!)<br>
    </p>
    <p>SystemPropertiesWriter:80<br>
      I don't know if this is the right or wrong place for the check,
      but for reference I would compare with other "optional" pages,
      like Constant Values and Serialized Form.</p>
    <p>SystemPropertiesWriter:155<br>
      I like the intention, but I would have thought the link factory
      would have returned a link in code font. I guess I would check
      other places where links are generated.<br>
    </p>
    <p>TagletWriterImpl:457<br>
      The comment is unclear: does "those" refer back to
      DocFileELement?  I'm also curious why you think using identity
      equals and hashCode is inefficient.</p>
    <p>Utils:  uuugh ... I keep trying to get stuff *out* of the Utils
      dumping ground, and here you are adding to it. This is OK for now,
      but there may be a different utility class waiting to be written
      for processing DocTrees. This is not the only method to be working
      on DocTrees (although other work may be elsewhere, down in
      jdk.compiler module.)</p>
    <p>test: the new convention is to generate files on the fly ...
      which will be even easier when we have text blocks. The ToolBox
      library class has code to help write out smal files like these ...
      and using text strings avoids the heavy copyright overhead.</p>
    <p><br>
    </p>
    <h2>phase-4</h2>
    <p>In SystemPropertiesWriter, there is no need to use a WeakHashMap
      compared to a standard HashMap. Elements created by javac, which
      is the dominant collection of elements, will be permanent until
      the end of the javadoc run. And moreover, SystemPropertiesWriter
      should have a short lifetime, and no elements will be
      garbage-collectible while it is alive.</p>
    <p>Line 172: I see the comment moved here from TagletWriterImpl.
      Same comments apply that I made for phase-3.<br>
    </p>
    <p>In SearchIndexItem, if I understand it correctly, it seems
      strange to add a field of type DocletElement that is specific to
      certain types of search index item.  And, there is a cognizant
      disparity between the name of the type (DocletElement) and the
      name of the method (getElement). Generally, I would expect a
      method named `getElement` to return an Element. It seems like all
      other serach-index items are associated with n element anyway!<br>
    </p>
    <p><br>
    </p>
    <p> <br>
    </p>
    <p> </p>
  </body>
</html>