Program: 73825
Project: 73825
Buggy source:
/** 
 * Draws a line with the line-style specified in advance from the start position to the end position with the given linewidth, color, and style at the given pdf layer. If the line-style is NOT set before invoking this method, "solid" will be used as the default line-style.
 * @param startX the start X coordinate of the line.
 * @param startY the start Y coordinate of the line.
 * @param endX the end X coordinate of the line.
 * @param endY the end Y coordinate of the line.
 * @param width the lineWidth
 * @param color the color of the line.
 * @param lineStyle the style of the line.
 */
protected void drawLine(float startX,float startY,float endX,float endY,float width,Color color,String lineStyle){
  if (null == color || 0f == width || "String_Node_Str".equalsIgnoreCase(lineStyle)) {
    return;
  }
  contentByte.saveState();
  if ("String_Node_Str".equalsIgnoreCase(lineStyle)) {
    contentByte.setLineCap(PdfContentByte.LINE_CAP_PROJECTING_SQUARE);
    drawRawLine(startX,startY,endX,endY,width,color,contentByte);
  }
  if ("String_Node_Str".equalsIgnoreCase(lineStyle)) {
    contentByte.setLineDash(3 * width,2 * width,0f);
    drawRawLine(startX,startY,endX,endY,width,color,contentByte);
  }
 else   if ("String_Node_Str".equalsIgnoreCase(lineStyle)) {
    contentByte.setLineDash(width,width,0f);
    drawRawLine(startX,startY,endX,endY,width,color,contentByte);
  }
 else   if ("String_Node_Str".equalsIgnoreCase(lineStyle)) {
    return;
  }
 else {
    contentByte.setLineCap(PdfContentByte.LINE_CAP_PROJECTING_SQUARE);
    drawRawLine(startX,startY,endX,endY,width,color,contentByte);
  }
  contentByte.restoreState();
}

Fixed version (ground truth):
/** 
 * Draws a line with the line-style specified in advance from the start position to the end position with the given line width, color, and style at the given PDF layer. If the line-style is NOT set before invoking this method, "solid" will be used as the default line-style.
 * @param startX the start X coordinate of the line.
 * @param startY the start Y coordinate of the line.
 * @param endX the end X coordinate of the line.
 * @param endY the end Y coordinate of the line.
 * @param width the lineWidth
 * @param color the color of the line.
 * @param lineStyle the style of the line.
 */
protected void drawLine(float startX,float startY,float endX,float endY,float width,Color color,String lineStyle){
  if (null == color || 0f == width || "String_Node_Str".equalsIgnoreCase(lineStyle)) {
    return;
  }
  contentByte.saveState();
  if ("String_Node_Str".equalsIgnoreCase(lineStyle)) {
    contentByte.setLineCap(PdfContentByte.LINE_CAP_PROJECTING_SQUARE);
    drawRawLine(startX,startY,endX,endY,width,color,contentByte);
  }
  if ("String_Node_Str".equalsIgnoreCase(lineStyle)) {
    contentByte.setLineDash(3 * width,2 * width,0f);
    drawRawLine(startX,startY,endX,endY,width,color,contentByte);
  }
 else   if ("String_Node_Str".equalsIgnoreCase(lineStyle)) {
    contentByte.setLineDash(width,width,0f);
    drawRawLine(startX,startY,endX,endY,width,color,contentByte);
  }
 else   if ("String_Node_Str".equalsIgnoreCase(lineStyle)) {
    return;
  }
 else {
    contentByte.setLineCap(PdfContentByte.LINE_CAP_PROJECTING_SQUARE);
    drawRawLine(startX,startY,endX,endY,width,color,contentByte);
  }
  contentByte.restoreState();
}