Program: 62153
Project: 62153
Buggy source:
public static String convertText(List<Tag> tags,TextTag tag,MATRIX matrix,List<FILTER> filters){
  String ret="String_Node_Str";
  if (matrix == null) {
    matrix=new MATRIX();
  }
  CSMTextSettingsTag csmts=null;
  String filterStr="String_Node_Str";
  if (filters != null) {
    filterStr+="String_Node_Str";
    for (    FILTER f : filters) {
      filterStr+=convertFilter(f);
    }
    filterStr+="String_Node_Str";
  }
  for (  Tag t : tags) {
    if (t instanceof CSMTextSettingsTag) {
      CSMTextSettingsTag c=(CSMTextSettingsTag)t;
      if (c.textID == tag.getCharacterID()) {
        csmts=c;
        break;
      }
    }
  }
  String fontRenderingMode="String_Node_Str";
  String antiAlias="String_Node_Str";
  if (csmts != null) {
    if (csmts.thickness == 0 & csmts.sharpness == 0) {
      fontRenderingMode=null;
    }
 else {
      fontRenderingMode="String_Node_Str";
    }
    antiAlias="String_Node_Str" + doubleToString(csmts.sharpness) + "String_Node_Str"+ doubleToString(csmts.thickness)+ "String_Node_Str";
  }
  String matStr="String_Node_Str";
  matStr+="String_Node_Str";
  matStr+=convertMatrix(matrix);
  matStr+="String_Node_Str";
  if ((tag instanceof DefineTextTag) || (tag instanceof DefineText2Tag)) {
    List<TEXTRECORD> textRecords=new ArrayList<>();
    if (tag instanceof DefineTextTag) {
      textRecords=((DefineTextTag)tag).textRecords;
    }
 else     if (tag instanceof DefineText2Tag) {
      textRecords=((DefineText2Tag)tag).textRecords;
    }
    looprec:     for (    TEXTRECORD rec : textRecords) {
      if (rec.styleFlagsHasFont) {
        for (        Tag t : tags) {
          if (t instanceof FontTag) {
            FontTag ft=(FontTag)t;
            if (ft.getFontId() == rec.fontId) {
              if (ft.isSmall()) {
                fontRenderingMode="String_Node_Str";
                break looprec;
              }
            }
          }
        }
      }
    }
    ret+="String_Node_Str";
    if (fontRenderingMode != null) {
      ret+="String_Node_Str" + fontRenderingMode + "String_Node_Str";
    }
    ret+=antiAlias;
    ret+="String_Node_Str" + tag.getBounds().getWidth() / 2 + "String_Node_Str" + tag.getBounds().getHeight() + "String_Node_Str";
    ret+=matStr;
    ret+="String_Node_Str";
    int fontId=-1;
    FontTag font=null;
    String fontName=null;
    String psFontName=null;
    String availableFonts[]=GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
    int textHeight=-1;
    RGB textColor=null;
    RGBA textColorA=null;
    for (    TEXTRECORD rec : textRecords) {
      if (rec.styleFlagsHasColor) {
        if (tag instanceof DefineTextTag) {
          textColor=rec.textColor;
        }
 else {
          textColorA=rec.textColorA;
        }
      }
      if (rec.styleFlagsHasFont) {
        fontId=rec.fontId;
        fontName=null;
        textHeight=rec.textHeight;
        font=null;
        for (        Tag t : tags) {
          if (t instanceof FontTag) {
            if (((FontTag)t).getFontId() == fontId) {
              font=(FontTag)t;
            }
          }
          if (t instanceof DefineFontNameTag) {
            if (((DefineFontNameTag)t).fontId == fontId) {
              fontName=((DefineFontNameTag)t).fontName;
            }
          }
        }
        if ((fontName == null) && (font != null)) {
          fontName=font.getFontName(tags);
        }
        psFontName=fontName;
        if (fontName != null) {
          for (          String avFont : availableFonts) {
            if (avFont.equals(fontName)) {
              Font f=new Font(fontName,0,10);
              psFontName=f.getPSName();
            }
          }
        }
      }
      if (font != null) {
        ret+="String_Node_Str";
        ret+="String_Node_Str" + xmlString(rec.getText(tags,font)) + "String_Node_Str";
        ret+="String_Node_Str";
        ret+="String_Node_Str" + twipToPixel(textHeight) + "String_Node_Str";
        if (textColor != null) {
          ret+="String_Node_Str" + textColor.toHexRGB() + "String_Node_Str";
        }
 else         if (textColorA != null) {
          ret+="String_Node_Str" + textColorA.toHexRGB() + "String_Node_Str"+ textColorA.getAlphaFloat()+ "String_Node_Str";
        }
        ret+="String_Node_Str" + psFontName + "String_Node_Str";
        ret+="String_Node_Str";
        ret+="String_Node_Str";
        ret+="String_Node_Str";
      }
    }
    ret+="String_Node_Str";
    ret+=filterStr;
    ret+="String_Node_Str";
  }
 else   if (tag instanceof DefineEditTextTag) {
    DefineEditTextTag det=(DefineEditTextTag)tag;
    String tagName;
    for (    Tag t : tags) {
      if (t instanceof FontTag) {
        FontTag ft=(FontTag)t;
        if (ft.getFontId() == det.fontId) {
          if (ft.isSmall()) {
            fontRenderingMode="String_Node_Str";
            break;
          }
        }
      }
    }
    if (!det.useOutlines) {
      fontRenderingMode="String_Node_Str";
    }
    if (det.wasStatic) {
      tagName="String_Node_Str";
    }
 else     if (det.readOnly) {
      tagName="String_Node_Str";
    }
 else {
      tagName="String_Node_Str";
    }
    ret+="String_Node_Str" + tagName;
    if (fontRenderingMode != null) {
      ret+="String_Node_Str" + fontRenderingMode + "String_Node_Str";
    }
    ret+=antiAlias;
    double width=twipToPixel(det.getBounds().getWidth());
    double height=twipToPixel(det.getBounds().getHeight());
    if (det.hasLayout) {
      width-=twipToPixel(det.rightMargin);
      width-=twipToPixel(det.leftMargin);
    }
    ret+="String_Node_Str" + width + "String_Node_Str";
    ret+="String_Node_Str" + height + "String_Node_Str";
    if (det.border) {
      ret+="String_Node_Str";
    }
    if (det.html) {
      ret+="String_Node_Str";
    }
    if (det.noSelect) {
      ret+="String_Node_Str";
    }
    if (det.multiline && det.wordWrap) {
      ret+="String_Node_Str";
    }
 else     if (det.multiline && (!det.wordWrap)) {
      ret+="String_Node_Str";
    }
 else     if (det.password) {
      ret+="String_Node_Str";
    }
    if (det.hasMaxLength) {
      ret+="String_Node_Str" + det.maxLength + "String_Node_Str";
    }
    if (!det.variableName.equals("String_Node_Str")) {
      ret+="String_Node_Str" + det.variableName + "String_Node_Str";
    }
    ret+="String_Node_Str";
    ret+=matStr;
    ret+="String_Node_Str";
    if (det.hasText) {
      if (det.html) {
        ret+=convertHTMLText(tags,det,det.initialText);
      }
 else {
        ret+="String_Node_Str";
        ret+="String_Node_Str" + xmlString(det.initialText) + "String_Node_Str";
        int leftMargin=-1;
        int rightMargin=-1;
        int indent=-1;
        int lineSpacing=-1;
        String alignment=null;
        boolean italic=false;
        boolean bold=false;
        String fontFace=null;
        int size=-1;
        if (det.hasFont) {
          String fontName=null;
          FontTag ft=null;
          for (          Tag u : tags) {
            if (u instanceof DefineFontNameTag) {
              if (((DefineFontNameTag)u).fontId == det.fontId) {
                fontName=((DefineFontNameTag)u).fontName;
              }
            }
            if (u instanceof FontTag) {
              if (((FontTag)u).getFontId() == det.fontId) {
                ft=(FontTag)u;
              }
            }
            if (fontName != null && ft != null) {
              break;
            }
          }
          if (ft != null) {
            if (fontName == null) {
              fontName=ft.getFontName(tags);
            }
            italic=ft.isItalic();
            bold=ft.isBold();
            size=det.fontHeight;
            fontFace=new Font(fontName,(italic ? Font.ITALIC : 0) | (bold ? Font.BOLD : 0) | (!italic && !bold ? Font.PLAIN : 0),size < 0 ? 10 : size).getPSName();
          }
        }
        if (det.hasLayout) {
          leftMargin=det.leftMargin;
          rightMargin=det.rightMargin;
          indent=det.indent;
          lineSpacing=det.leading;
          String alignNames[]={"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"};
          alignment=alignNames[det.align];
        }
        ret+="String_Node_Str";
        ret+="String_Node_Str";
        if (alignment != null) {
          ret+="String_Node_Str" + alignment + "String_Node_Str";
        }
        ret+="String_Node_Str";
        if (indent > -1) {
          ret+="String_Node_Str" + twipToPixel(indent) + "String_Node_Str";
        }
        if (leftMargin > -1) {
          ret+="String_Node_Str" + twipToPixel(leftMargin) + "String_Node_Str";
        }
        if (lineSpacing > -1) {
          ret+="String_Node_Str" + twipToPixel(lineSpacing) + "String_Node_Str";
        }
        if (rightMargin > -1) {
          ret+="String_Node_Str" + twipToPixel(rightMargin) + "String_Node_Str";
        }
        if (size > -1) {
          ret+="String_Node_Str" + size + "String_Node_Str";
          ret+="String_Node_Str" + (size * 20) + "String_Node_Str";
        }
        if (fontFace != null) {
          ret+="String_Node_Str" + fontFace + "String_Node_Str";
        }
        ret+="String_Node_Str";
        ret+="String_Node_Str";
        ret+="String_Node_Str";
      }
    }
    ret+="String_Node_Str";
    ret+=filterStr;
    ret+="String_Node_Str" + tagName + "String_Node_Str";
  }
  return ret;
}

Fixed version (ground truth):
public static String convertText(List<Tag> tags,TextTag tag,MATRIX matrix,List<FILTER> filters){
  String ret="String_Node_Str";
  if (matrix == null) {
    matrix=new MATRIX();
  }
  CSMTextSettingsTag csmts=null;
  String filterStr="String_Node_Str";
  if (filters != null) {
    filterStr+="String_Node_Str";
    for (    FILTER f : filters) {
      filterStr+=convertFilter(f);
    }
    filterStr+="String_Node_Str";
  }
  for (  Tag t : tags) {
    if (t instanceof CSMTextSettingsTag) {
      CSMTextSettingsTag c=(CSMTextSettingsTag)t;
      if (c.textID == tag.getCharacterID()) {
        csmts=c;
        break;
      }
    }
  }
  String fontRenderingMode="String_Node_Str";
  String antiAlias="String_Node_Str";
  if (csmts != null) {
    if (csmts.thickness == 0 & csmts.sharpness == 0) {
      fontRenderingMode=null;
    }
 else {
      fontRenderingMode="String_Node_Str";
    }
    antiAlias="String_Node_Str" + doubleToString(csmts.sharpness) + "String_Node_Str"+ doubleToString(csmts.thickness)+ "String_Node_Str";
  }
  String matStr="String_Node_Str";
  matStr+="String_Node_Str";
  RECT bounds=tag.getBounds();
  matrix.translateX+=bounds.Xmin;
  matrix.translateY+=bounds.Ymin;
  matStr+=convertMatrix(matrix);
  matStr+="String_Node_Str";
  if ((tag instanceof DefineTextTag) || (tag instanceof DefineText2Tag)) {
    List<TEXTRECORD> textRecords=new ArrayList<>();
    if (tag instanceof DefineTextTag) {
      textRecords=((DefineTextTag)tag).textRecords;
    }
 else     if (tag instanceof DefineText2Tag) {
      textRecords=((DefineText2Tag)tag).textRecords;
    }
    looprec:     for (    TEXTRECORD rec : textRecords) {
      if (rec.styleFlagsHasFont) {
        for (        Tag t : tags) {
          if (t instanceof FontTag) {
            FontTag ft=(FontTag)t;
            if (ft.getFontId() == rec.fontId) {
              if (ft.isSmall()) {
                fontRenderingMode="String_Node_Str";
                break looprec;
              }
            }
          }
        }
      }
    }
    ret+="String_Node_Str";
    if (fontRenderingMode != null) {
      ret+="String_Node_Str" + fontRenderingMode + "String_Node_Str";
    }
    ret+=antiAlias;
    ret+="String_Node_Str" + tag.getBounds().getWidth() / 2 + "String_Node_Str" + tag.getBounds().getHeight() + "String_Node_Str";
    ret+=matStr;
    ret+="String_Node_Str";
    int fontId=-1;
    FontTag font=null;
    String fontName=null;
    String psFontName=null;
    String availableFonts[]=GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
    int textHeight=-1;
    RGB textColor=null;
    RGBA textColorA=null;
    for (    TEXTRECORD rec : textRecords) {
      if (rec.styleFlagsHasColor) {
        if (tag instanceof DefineTextTag) {
          textColor=rec.textColor;
        }
 else {
          textColorA=rec.textColorA;
        }
      }
      if (rec.styleFlagsHasFont) {
        fontId=rec.fontId;
        fontName=null;
        textHeight=rec.textHeight;
        font=null;
        for (        Tag t : tags) {
          if (t instanceof FontTag) {
            if (((FontTag)t).getFontId() == fontId) {
              font=(FontTag)t;
            }
          }
          if (t instanceof DefineFontNameTag) {
            if (((DefineFontNameTag)t).fontId == fontId) {
              fontName=((DefineFontNameTag)t).fontName;
            }
          }
        }
        if ((fontName == null) && (font != null)) {
          fontName=font.getFontName(tags);
        }
        psFontName=fontName;
        if (fontName != null) {
          for (          String avFont : availableFonts) {
            if (avFont.equals(fontName)) {
              Font f=new Font(fontName,0,10);
              psFontName=f.getPSName();
            }
          }
        }
      }
      if (font != null) {
        ret+="String_Node_Str";
        ret+="String_Node_Str" + xmlString(rec.getText(tags,font)) + "String_Node_Str";
        ret+="String_Node_Str";
        ret+="String_Node_Str" + twipToPixel(textHeight) + "String_Node_Str";
        if (textColor != null) {
          ret+="String_Node_Str" + textColor.toHexRGB() + "String_Node_Str";
        }
 else         if (textColorA != null) {
          ret+="String_Node_Str" + textColorA.toHexRGB() + "String_Node_Str"+ textColorA.getAlphaFloat()+ "String_Node_Str";
        }
        ret+="String_Node_Str" + psFontName + "String_Node_Str";
        ret+="String_Node_Str";
        ret+="String_Node_Str";
        ret+="String_Node_Str";
      }
    }
    ret+="String_Node_Str";
    ret+=filterStr;
    ret+="String_Node_Str";
  }
 else   if (tag instanceof DefineEditTextTag) {
    DefineEditTextTag det=(DefineEditTextTag)tag;
    String tagName;
    for (    Tag t : tags) {
      if (t instanceof FontTag) {
        FontTag ft=(FontTag)t;
        if (ft.getFontId() == det.fontId) {
          if (ft.isSmall()) {
            fontRenderingMode="String_Node_Str";
            break;
          }
        }
      }
    }
    if (!det.useOutlines) {
      fontRenderingMode="String_Node_Str";
    }
    if (det.wasStatic) {
      tagName="String_Node_Str";
    }
 else     if (det.readOnly) {
      tagName="String_Node_Str";
    }
 else {
      tagName="String_Node_Str";
    }
    ret+="String_Node_Str" + tagName;
    if (fontRenderingMode != null) {
      ret+="String_Node_Str" + fontRenderingMode + "String_Node_Str";
    }
    ret+=antiAlias;
    double width=twipToPixel(det.getBounds().getWidth());
    double height=twipToPixel(det.getBounds().getHeight());
    if (det.hasLayout) {
      width-=twipToPixel(det.rightMargin);
      width-=twipToPixel(det.leftMargin);
    }
    ret+="String_Node_Str" + width + "String_Node_Str";
    ret+="String_Node_Str" + height + "String_Node_Str";
    if (det.border) {
      ret+="String_Node_Str";
    }
    if (det.html) {
      ret+="String_Node_Str";
    }
    if (det.noSelect) {
      ret+="String_Node_Str";
    }
    if (det.multiline && det.wordWrap) {
      ret+="String_Node_Str";
    }
 else     if (det.multiline && (!det.wordWrap)) {
      ret+="String_Node_Str";
    }
 else     if (det.password) {
      ret+="String_Node_Str";
    }
    if (det.hasMaxLength) {
      ret+="String_Node_Str" + det.maxLength + "String_Node_Str";
    }
    if (!det.variableName.equals("String_Node_Str")) {
      ret+="String_Node_Str" + det.variableName + "String_Node_Str";
    }
    ret+="String_Node_Str";
    ret+=matStr;
    ret+="String_Node_Str";
    if (det.hasText) {
      if (det.html) {
        ret+=convertHTMLText(tags,det,det.initialText);
      }
 else {
        ret+="String_Node_Str";
        ret+="String_Node_Str" + xmlString(det.initialText) + "String_Node_Str";
        int leftMargin=-1;
        int rightMargin=-1;
        int indent=-1;
        int lineSpacing=-1;
        String alignment=null;
        boolean italic=false;
        boolean bold=false;
        String fontFace=null;
        int size=-1;
        if (det.hasFont) {
          String fontName=null;
          FontTag ft=null;
          for (          Tag u : tags) {
            if (u instanceof DefineFontNameTag) {
              if (((DefineFontNameTag)u).fontId == det.fontId) {
                fontName=((DefineFontNameTag)u).fontName;
              }
            }
            if (u instanceof FontTag) {
              if (((FontTag)u).getFontId() == det.fontId) {
                ft=(FontTag)u;
              }
            }
            if (fontName != null && ft != null) {
              break;
            }
          }
          if (ft != null) {
            if (fontName == null) {
              fontName=ft.getFontName(tags);
            }
            italic=ft.isItalic();
            bold=ft.isBold();
            size=det.fontHeight;
            fontFace=new Font(fontName,(italic ? Font.ITALIC : 0) | (bold ? Font.BOLD : 0) | (!italic && !bold ? Font.PLAIN : 0),size < 0 ? 10 : size).getPSName();
          }
        }
        if (det.hasLayout) {
          leftMargin=det.leftMargin;
          rightMargin=det.rightMargin;
          indent=det.indent;
          lineSpacing=det.leading;
          String alignNames[]={"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"};
          alignment=alignNames[det.align];
        }
        ret+="String_Node_Str";
        ret+="String_Node_Str";
        if (alignment != null) {
          ret+="String_Node_Str" + alignment + "String_Node_Str";
        }
        ret+="String_Node_Str";
        if (indent > -1) {
          ret+="String_Node_Str" + twipToPixel(indent) + "String_Node_Str";
        }
        if (leftMargin > -1) {
          ret+="String_Node_Str" + twipToPixel(leftMargin) + "String_Node_Str";
        }
        if (lineSpacing > -1) {
          ret+="String_Node_Str" + twipToPixel(lineSpacing) + "String_Node_Str";
        }
        if (rightMargin > -1) {
          ret+="String_Node_Str" + twipToPixel(rightMargin) + "String_Node_Str";
        }
        if (size > -1) {
          ret+="String_Node_Str" + size + "String_Node_Str";
          ret+="String_Node_Str" + (size * 20) + "String_Node_Str";
        }
        if (fontFace != null) {
          ret+="String_Node_Str" + fontFace + "String_Node_Str";
        }
        ret+="String_Node_Str";
        ret+="String_Node_Str";
        ret+="String_Node_Str";
      }
    }
    ret+="String_Node_Str";
    ret+=filterStr;
    ret+="String_Node_Str" + tagName + "String_Node_Str";
  }
  return ret;
}