Program: 172353
Project: 172353
Buggy source:
public void extract(ContentReader reader,Map<QName,Serializable> destination) throws ContentIOException {
  final Map<QName,Serializable> tempDestination=new HashMap<QName,Serializable>();
  try {
    HTMLEditorKit.ParserCallback callback=new HTMLEditorKit.ParserCallback(){
      StringBuffer title=null;
      boolean inHead=false;
      public void handleText(      char[] data,      int pos){
        if (title != null) {
          title.append(data);
        }
      }
      public void handleComment(      char[] data,      int pos){
      }
      public void handleStartTag(      HTML.Tag t,      MutableAttributeSet a,      int pos){
        if (HTML.Tag.HEAD.equals(t)) {
          inHead=true;
        }
 else         if (HTML.Tag.TITLE.equals(t) && inHead) {
          title=new StringBuffer();
        }
 else         handleSimpleTag(t,a,pos);
      }
      public void handleEndTag(      HTML.Tag t,      int pos){
        if (HTML.Tag.HEAD.equals(t)) {
          inHead=false;
        }
 else         if (HTML.Tag.TITLE.equals(t)) {
          trimPut(ContentModel.PROP_TITLE,title.toString(),tempDestination);
          title=null;
        }
      }
      public void handleSimpleTag(      HTML.Tag t,      MutableAttributeSet a,      int pos){
        if (HTML.Tag.META.equals(t)) {
          Object nameO=a.getAttribute(HTML.Attribute.NAME);
          Object valueO=a.getAttribute(HTML.Attribute.CONTENT);
          if (nameO == null || valueO == null)           return;
          String name=nameO.toString();
          if (name.equalsIgnoreCase("String_Node_Str") || name.equalsIgnoreCase("String_Node_Str") || name.equalsIgnoreCase("String_Node_Str")) {
            trimPut(ContentModel.PROP_AUTHOR,valueO,tempDestination);
          }
          if (name.equalsIgnoreCase("String_Node_Str") || name.equalsIgnoreCase("String_Node_Str")) {
            trimPut(ContentModel.PROP_DESCRIPTION,valueO,tempDestination);
          }
        }
      }
      public void handleError(      String errorMsg,      int pos){
      }
    }
;
    String charsetGuess="String_Node_Str";
    int tries=0;
    while (tries < 3) {
      tempDestination.clear();
      Reader r=null;
      InputStream cis=null;
      try {
        cis=reader.getContentInputStream();
        r=new InputStreamReader(cis);
        HTMLEditorKit.Parser parser=new ParserDelegator();
        parser.parse(r,callback,tries > 0);
        destination.putAll(tempDestination);
        break;
      }
 catch (      ChangedCharSetException ccse) {
        tries++;
        charsetGuess=ccse.getCharSetSpec();
        int begin=charsetGuess.indexOf("String_Node_Str");
        if (begin > 0)         charsetGuess=charsetGuess.substring(begin + 8,charsetGuess.length());
        reader=reader.getReader();
      }
 finally {
        if (r != null)         r.close();
        if (cis != null)         cis.close();
      }
    }
  }
 catch (  IOException e) {
    throw new ContentIOException("String_Node_Str" + "String_Node_Str" + reader,e);
  }
}

Fixed version (ground truth):
public void extract(ContentReader reader,Map<QName,Serializable> destination) throws ContentIOException {
  final Map<QName,Serializable> tempDestination=new HashMap<QName,Serializable>();
  try {
    HTMLEditorKit.ParserCallback callback=new HTMLEditorKit.ParserCallback(){
      StringBuffer title=null;
      boolean inHead=false;
      public void handleText(      char[] data,      int pos){
        if (title != null) {
          title.append(data);
        }
      }
      public void handleComment(      char[] data,      int pos){
      }
      public void handleStartTag(      HTML.Tag t,      MutableAttributeSet a,      int pos){
        if (HTML.Tag.HEAD.equals(t)) {
          inHead=true;
        }
 else         if (HTML.Tag.TITLE.equals(t) && inHead) {
          title=new StringBuffer();
        }
 else         handleSimpleTag(t,a,pos);
      }
      public void handleEndTag(      HTML.Tag t,      int pos){
        if (HTML.Tag.HEAD.equals(t)) {
          inHead=false;
        }
 else         if (HTML.Tag.TITLE.equals(t) && title != null) {
          trimPut(ContentModel.PROP_TITLE,title.toString(),tempDestination);
          title=null;
        }
      }
      public void handleSimpleTag(      HTML.Tag t,      MutableAttributeSet a,      int pos){
        if (HTML.Tag.META.equals(t)) {
          Object nameO=a.getAttribute(HTML.Attribute.NAME);
          Object valueO=a.getAttribute(HTML.Attribute.CONTENT);
          if (nameO == null || valueO == null)           return;
          String name=nameO.toString();
          if (name.equalsIgnoreCase("String_Node_Str") || name.equalsIgnoreCase("String_Node_Str") || name.equalsIgnoreCase("String_Node_Str")) {
            trimPut(ContentModel.PROP_AUTHOR,valueO,tempDestination);
          }
          if (name.equalsIgnoreCase("String_Node_Str") || name.equalsIgnoreCase("String_Node_Str")) {
            trimPut(ContentModel.PROP_DESCRIPTION,valueO,tempDestination);
          }
        }
      }
      public void handleError(      String errorMsg,      int pos){
      }
    }
;
    String charsetGuess="String_Node_Str";
    int tries=0;
    while (tries < 3) {
      tempDestination.clear();
      Reader r=null;
      InputStream cis=null;
      try {
        cis=reader.getContentInputStream();
        r=new InputStreamReader(cis);
        HTMLEditorKit.Parser parser=new ParserDelegator();
        parser.parse(r,callback,tries > 0);
        destination.putAll(tempDestination);
        break;
      }
 catch (      ChangedCharSetException ccse) {
        tries++;
        charsetGuess=ccse.getCharSetSpec();
        int begin=charsetGuess.indexOf("String_Node_Str");
        if (begin > 0)         charsetGuess=charsetGuess.substring(begin + 8,charsetGuess.length());
        reader=reader.getReader();
      }
 finally {
        if (r != null)         r.close();
        if (cis != null)         cis.close();
      }
    }
  }
 catch (  IOException e) {
    throw new ContentIOException("String_Node_Str" + "String_Node_Str" + reader,e);
  }
}