Program: 75129
Project: 75129
Buggy source:
/** 
 * Visits the children nodes of the specific node
 * @param ele the specific node
 * @param needEscape the flag indicating the content needs escaping
 * @param cssStyles
 * @param content the parent content of the element
 */
static void processNodes(Element ele,Map cssStyles,IContent content,IContent inlineParent,ActionContent action){
  int level=0;
  for (Node node=ele.getFirstChild(); node != null; node=node.getNextSibling()) {
    if (node.getNodeName().equals("String_Node_Str")) {
      if (node.getFirstChild() instanceof Element) {
        processNodes((Element)node.getFirstChild(),cssStyles,content,inlineParent,action);
      }
    }
 else     if (node.getNodeName().equals("String_Node_Str")) {
      if (node.getFirstChild() instanceof Element) {
        processNodes((Element)node.getFirstChild(),cssStyles,content,inlineParent,action);
      }
    }
 else     if (node.getNodeType() == Node.TEXT_NODE) {
      ILabelContent label=new LabelContent((ReportContent)content.getReportContent());
      addChild(content,label,inlineParent);
      label.setText(node.getNodeValue());
      StyleDeclaration inlineStyle=new StyleDeclaration(content.getCSSEngine());
      inlineStyle.setProperty(IStyle.STYLE_DISPLAY,CSSValueConstants.INLINE_VALUE);
      Node pNode=node.getParentNode();
      if (pNode != null) {
        if ("String_Node_Str".equalsIgnoreCase(pNode.getNodeName()) || "String_Node_Str".equalsIgnoreCase(pNode.getNodeName())) {
          inlineStyle.setProperty(IStyle.STYLE_TEXT_UNDERLINE,IStyle.UNDERLINE_VALUE);
        }
 else         if ("String_Node_Str".equalsIgnoreCase(pNode.getNodeName())) {
          inlineStyle.setProperty(IStyle.STYLE_TEXT_LINETHROUGH,IStyle.LINE_THROUGH_VALUE);
        }
 else         if ("String_Node_Str".equalsIgnoreCase(pNode.getNodeName())) {
          inlineStyle.setProperty(IStyle.STYLE_VERTICAL_ALIGN,IStyle.BOTTOM_VALUE);
        }
 else         if ("String_Node_Str".equalsIgnoreCase(pNode.getNodeName())) {
          inlineStyle.setProperty(IStyle.STYLE_VERTICAL_ALIGN,IStyle.TOP_VALUE);
        }
      }
      label.setInlineStyle(inlineStyle);
      if (action != null) {
        label.setHyperlinkAction(action);
      }
    }
 else     if (node.getNodeType() == Node.ELEMENT_NODE) {
      handleElement((Element)node,cssStyles,content,inlineParent,action,++level);
    }
  }
}

Fixed version (ground truth):
/** 
 * Visits the children nodes of the specific node
 * @param ele the specific node
 * @param needEscape the flag indicating the content needs escaping
 * @param cssStyles
 * @param content the parent content of the element
 */
static void processNodes(Element ele,Map cssStyles,IContent content,IContent inlineParent,ActionContent action){
  int level=0;
  for (Node node=ele.getFirstChild(); node != null; node=node.getNextSibling()) {
    if (node.getNodeName().equals("String_Node_Str")) {
      if (node.getFirstChild() instanceof Element) {
        processNodes((Element)node.getFirstChild(),cssStyles,content,inlineParent,action);
      }
    }
 else     if (node.getNodeName().equals("String_Node_Str")) {
      if (node.getFirstChild() instanceof Element) {
        processNodes((Element)node.getFirstChild(),cssStyles,content,inlineParent,action);
      }
    }
 else     if (node.getNodeType() == Node.TEXT_NODE) {
      ILabelContent label=new LabelContent((ReportContent)content.getReportContent());
      addChild(content,label,inlineParent);
      label.setText(node.getNodeValue());
      StyleDeclaration inlineStyle=new StyleDeclaration(content.getCSSEngine());
      inlineStyle.setProperty(IStyle.STYLE_DISPLAY,CSSValueConstants.INLINE_VALUE);
      label.setInlineStyle(inlineStyle);
      if (action != null) {
        label.setHyperlinkAction(action);
      }
    }
 else     if (node.getNodeType() == Node.ELEMENT_NODE) {
      handleElement((Element)node,cssStyles,content,inlineParent,action,++level);
    }
  }
}