Program: 61550
Project: 61550
Buggy source:
private static String convertText(String instanceName,TextTag tag,MATRIX m,List<FILTER> filters,CLIPACTIONS clipActions){
  StringBuilder ret=new StringBuilder();
  MATRIX matrix=new MATRIX(m);
  CSMTextSettingsTag csmts=null;
  StringBuilder filterStr=new StringBuilder();
  if (filters != null) {
    filterStr.append("String_Node_Str");
    for (    FILTER f : filters) {
      convertFilter(f,ret);
    }
    filterStr.append("String_Node_Str");
  }
  SWF swf=tag.getSwf();
  for (  Tag t : swf.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 left="String_Node_Str";
  RECT bounds=tag.getBounds();
  if ((tag instanceof DefineTextTag) || (tag instanceof DefineText2Tag)) {
    MATRIX textMatrix=tag.getTextMatrix();
    left="String_Node_Str" + doubleToString((textMatrix.translateX) / SWF.unitDivisor) + "String_Node_Str";
  }
  StringBuilder matStr=new StringBuilder();
  matStr.append("String_Node_Str");
  convertMatrix(matrix,matStr);
  matStr.append("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;
    }
    for (    TEXTRECORD rec : textRecords) {
      if (rec.styleFlagsHasFont) {
        FontTag ft=swf.getFont(rec.fontId);
        if (ft != null && ft.isSmall()) {
          fontRenderingMode="String_Node_Str";
          break;
        }
      }
    }
    ret.append("String_Node_Str");
    ret.append(left);
    if (fontRenderingMode != null) {
      ret.append("String_Node_Str").append(fontRenderingMode).append("String_Node_Str");
    }
    if (instanceName != null) {
      ret.append("String_Node_Str").append(xmlString(instanceName)).append("String_Node_Str");
    }
    ret.append(antiAlias);
    Map<String,Object> attrs=TextTag.getTextRecordsAttributes(textRecords,swf);
    ret.append("String_Node_Str").append(tag.getBounds().getWidth() / 2).append("String_Node_Str").append(tag.getBounds().getHeight()).append("String_Node_Str");
    ret.append(matStr);
    ret.append("String_Node_Str");
    int fontId=-1;
    FontTag font=null;
    String fontName=null;
    String psFontName=null;
    int textHeight=-1;
    RGB textColor=null;
    RGBA textColorA=null;
    boolean newline=false;
    boolean firstRun=true;
    @SuppressWarnings("String_Node_Str") List<Integer> leftMargins=(List<Integer>)attrs.get("String_Node_Str");
    @SuppressWarnings("String_Node_Str") List<Integer> letterSpacings=(List<Integer>)attrs.get("String_Node_Str");
    for (int r=0; r < textRecords.size(); r++) {
      TEXTRECORD rec=textRecords.get(r);
      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=swf.getFont(fontId);
        for (        Tag t : swf.tags) {
          if (t instanceof DefineFontNameTag) {
            if (((DefineFontNameTag)t).fontId == fontId) {
              fontName=((DefineFontNameTag)t).fontName;
            }
          }
        }
        if ((fontName == null) && (font != null)) {
          fontName=font.getFontNameIntag();
        }
        int fontStyle=0;
        if (font != null) {
          fontStyle=font.getFontStyle();
        }
        String installedFont;
        if ((installedFont=FontTag.isFontFamilyInstalled(fontName)) != null) {
          psFontName=new Font(installedFont,fontStyle,10).getPSName();
        }
 else {
          psFontName=fontName;
        }
      }
      newline=false;
      if (!firstRun && rec.styleFlagsHasYOffset) {
        newline=true;
      }
      firstRun=false;
      if (font != null) {
        ret.append("String_Node_Str");
        ret.append("String_Node_Str").append(xmlString((newline ? "String_Node_Str" : "String_Node_Str") + rec.getText(font))).append("String_Node_Str");
        ret.append("String_Node_Str");
        ret.append("String_Node_Str").append(twipToPixel(textHeight)).append("String_Node_Str").append(textHeight).append("String_Node_Str");
        ret.append("String_Node_Str").append(doubleToString(twipToPixel(letterSpacings.get(r)))).append("String_Node_Str");
        ret.append("String_Node_Str").append(doubleToString(twipToPixel((int)attrs.get("String_Node_Str")))).append("String_Node_Str");
        ret.append("String_Node_Str").append(doubleToString(twipToPixel(leftMargins.get(r)))).append("String_Node_Str");
        ret.append("String_Node_Str").append(doubleToString(twipToPixel((int)attrs.get("String_Node_Str")))).append("String_Node_Str");
        ret.append("String_Node_Str").append(doubleToString(twipToPixel((int)attrs.get("String_Node_Str")))).append("String_Node_Str");
        if (textColor != null) {
          ret.append("String_Node_Str").append(textColor.toHexRGB()).append("String_Node_Str");
        }
 else         if (textColorA != null) {
          ret.append("String_Node_Str").append(textColorA.toHexRGB()).append("String_Node_Str").append(textColorA.getAlphaFloat()).append("String_Node_Str");
        }
        ret.append("String_Node_Str").append(psFontName).append("String_Node_Str");
        ret.append("String_Node_Str");
        ret.append("String_Node_Str");
        ret.append("String_Node_Str");
      }
    }
    ret.append("String_Node_Str");
    ret.append(filterStr);
    ret.append("String_Node_Str");
  }
 else   if (tag instanceof DefineEditTextTag) {
    DefineEditTextTag det=(DefineEditTextTag)tag;
    String tagName;
    FontTag ft=swf.getFont(det.fontId);
    if (ft != null && ft.isSmall()) {
      fontRenderingMode="String_Node_Str";
    }
    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.append("String_Node_Str").append(tagName);
    if (fontRenderingMode != null) {
      ret.append("String_Node_Str").append(fontRenderingMode).append("String_Node_Str");
    }
    if (instanceName != null) {
      ret.append("String_Node_Str").append(xmlString(instanceName)).append("String_Node_Str");
    }
    ret.append(antiAlias);
    double width=twipToPixel(bounds.getWidth());
    double height=twipToPixel(bounds.getHeight());
    double padding=2;
    width-=2 * padding;
    height-=2 * padding;
    if (det.hasLayout) {
      width-=twipToPixel(det.rightMargin);
      width-=twipToPixel(det.leftMargin);
    }
    ret.append("String_Node_Str").append(width).append("String_Node_Str");
    ret.append("String_Node_Str").append(height).append("String_Node_Str");
    if (det.border) {
      ret.append("String_Node_Str");
    }
    if (det.html) {
      ret.append("String_Node_Str");
    }
    if (det.noSelect) {
      ret.append("String_Node_Str");
    }
    if (det.multiline && det.wordWrap) {
      ret.append("String_Node_Str");
    }
 else     if (det.multiline && (!det.wordWrap)) {
      ret.append("String_Node_Str");
    }
 else     if (det.password) {
      ret.append("String_Node_Str");
    }
    if (det.hasMaxLength) {
      ret.append("String_Node_Str").append(det.maxLength).append("String_Node_Str");
    }
    if (!det.variableName.isEmpty()) {
      ret.append("String_Node_Str").append(det.variableName).append("String_Node_Str");
    }
    ret.append("String_Node_Str");
    ret.append(matStr);
    ret.append("String_Node_Str");
    String txt="String_Node_Str";
    if (det.hasText) {
      txt=det.initialText;
    }
    if (det.html) {
      ret.append(convertHTMLText(swf.tags,det,txt));
    }
 else {
      ret.append("String_Node_Str");
      ret.append("String_Node_Str").append(xmlString(txt)).append("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;
      RGBA textColor=null;
      if (det.hasTextColor) {
        textColor=det.textColor;
      }
      if (det.hasFont) {
        String fontName=null;
        for (        Tag u : swf.tags) {
          if (u instanceof DefineFontNameTag) {
            if (((DefineFontNameTag)u).fontId == det.fontId) {
              fontName=((DefineFontNameTag)u).fontName;
            }
          }
          if (fontName != null && ft != null) {
            break;
          }
        }
        if (ft != null) {
          if (fontName == null) {
            fontName=ft.getFontNameIntag();
          }
          italic=ft.isItalic();
          bold=ft.isBold();
          size=det.fontHeight;
          fontFace=fontName;
          String installedFont=null;
          if ((installedFont=FontTag.isFontFamilyInstalled(fontName)) != null) {
            fontName=installedFont;
            fontFace=new Font(installedFont,(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"};
        if (det.align < alignNames.length) {
          alignment=alignNames[det.align];
        }
 else {
          alignment="String_Node_Str";
        }
      }
      ret.append("String_Node_Str");
      ret.append("String_Node_Str");
      if (alignment != null) {
        ret.append("String_Node_Str").append(alignment).append("String_Node_Str");
      }
      ret.append("String_Node_Str");
      if (indent > -1) {
        ret.append("String_Node_Str").append(twipToPixel(indent)).append("String_Node_Str");
      }
      if (leftMargin > -1) {
        ret.append("String_Node_Str").append(twipToPixel(leftMargin)).append("String_Node_Str");
      }
      if (lineSpacing > -1) {
        ret.append("String_Node_Str").append(twipToPixel(lineSpacing)).append("String_Node_Str");
      }
      if (rightMargin > -1) {
        ret.append("String_Node_Str").append(twipToPixel(rightMargin)).append("String_Node_Str");
      }
      if (size > -1) {
        ret.append("String_Node_Str").append(twipToPixel(size)).append("String_Node_Str");
        ret.append("String_Node_Str").append(size).append("String_Node_Str");
      }
      if (fontFace != null) {
        ret.append("String_Node_Str").append(fontFace).append("String_Node_Str");
      }
      if (textColor != null) {
        ret.append("String_Node_Str").append(textColor.toHexRGB()).append("String_Node_Str").append(textColor.getAlphaFloat()).append("String_Node_Str");
      }
      ret.append("String_Node_Str");
      ret.append("String_Node_Str");
      ret.append("String_Node_Str");
    }
    ret.append("String_Node_Str");
    ret.append(filterStr);
    ret.append("String_Node_Str").append(tagName).append("String_Node_Str");
  }
  return ret.toString();
}

Fixed version (ground truth):
private static String convertText(String instanceName,TextTag tag,MATRIX m,List<FILTER> filters,CLIPACTIONS clipActions){
  StringBuilder ret=new StringBuilder();
  MATRIX matrix=new MATRIX(m);
  CSMTextSettingsTag csmts=null;
  StringBuilder filterStr=new StringBuilder();
  if (filters != null) {
    filterStr.append("String_Node_Str");
    for (    FILTER f : filters) {
      convertFilter(f,ret);
    }
    filterStr.append("String_Node_Str");
  }
  SWF swf=tag.getSwf();
  for (  Tag t : swf.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 left="String_Node_Str";
  RECT bounds=tag.getBounds();
  if ((tag instanceof DefineTextTag) || (tag instanceof DefineText2Tag)) {
    MATRIX textMatrix=tag.getTextMatrix();
    left="String_Node_Str" + doubleToString((textMatrix.translateX) / SWF.unitDivisor) + "String_Node_Str";
  }
  StringBuilder matStr=new StringBuilder();
  matStr.append("String_Node_Str");
  convertMatrix(matrix,matStr);
  matStr.append("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;
    }
    for (    TEXTRECORD rec : textRecords) {
      if (rec.styleFlagsHasFont) {
        FontTag ft=swf.getFont(rec.fontId);
        if (ft != null && ft.isSmall()) {
          fontRenderingMode="String_Node_Str";
          break;
        }
      }
    }
    ret.append("String_Node_Str");
    ret.append(left);
    if (fontRenderingMode != null) {
      ret.append("String_Node_Str").append(fontRenderingMode).append("String_Node_Str");
    }
    if (instanceName != null) {
      ret.append("String_Node_Str").append(xmlString(instanceName)).append("String_Node_Str");
    }
    ret.append(antiAlias);
    Map<String,Object> attrs=TextTag.getTextRecordsAttributes(textRecords,swf);
    ret.append("String_Node_Str").append(tag.getBounds().getWidth() / 2).append("String_Node_Str").append(tag.getBounds().getHeight()).append("String_Node_Str");
    ret.append(matStr);
    ret.append("String_Node_Str");
    int fontId=-1;
    FontTag font=null;
    String fontName=null;
    String psFontName=null;
    int textHeight=-1;
    RGB textColor=null;
    RGBA textColorA=null;
    boolean newline=false;
    boolean firstRun=true;
    @SuppressWarnings("String_Node_Str") List<Integer> leftMargins=(List<Integer>)attrs.get("String_Node_Str");
    @SuppressWarnings("String_Node_Str") List<Integer> letterSpacings=(List<Integer>)attrs.get("String_Node_Str");
    for (int r=0; r < textRecords.size(); r++) {
      TEXTRECORD rec=textRecords.get(r);
      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=swf.getFont(fontId);
        for (        Tag t : swf.tags) {
          if (t instanceof DefineFontNameTag) {
            if (((DefineFontNameTag)t).fontId == fontId) {
              fontName=((DefineFontNameTag)t).fontName;
            }
          }
        }
        if ((fontName == null) && (font != null)) {
          fontName=font.getFontNameIntag();
        }
        if (fontName == null) {
          fontName=FontTag.defaultFontName;
        }
        int fontStyle=0;
        if (font != null) {
          fontStyle=font.getFontStyle();
        }
        String installedFont;
        if ((installedFont=FontTag.isFontFamilyInstalled(fontName)) != null) {
          psFontName=new Font(installedFont,fontStyle,10).getPSName();
        }
 else {
          psFontName=fontName;
        }
      }
      newline=false;
      if (!firstRun && rec.styleFlagsHasYOffset) {
        newline=true;
      }
      firstRun=false;
      if (font != null) {
        ret.append("String_Node_Str");
        ret.append("String_Node_Str").append(xmlString((newline ? "String_Node_Str" : "String_Node_Str") + rec.getText(font))).append("String_Node_Str");
        ret.append("String_Node_Str");
        ret.append("String_Node_Str").append(twipToPixel(textHeight)).append("String_Node_Str").append(textHeight).append("String_Node_Str");
        ret.append("String_Node_Str").append(doubleToString(twipToPixel(letterSpacings.get(r)))).append("String_Node_Str");
        ret.append("String_Node_Str").append(doubleToString(twipToPixel((int)attrs.get("String_Node_Str")))).append("String_Node_Str");
        ret.append("String_Node_Str").append(doubleToString(twipToPixel(leftMargins.get(r)))).append("String_Node_Str");
        ret.append("String_Node_Str").append(doubleToString(twipToPixel((int)attrs.get("String_Node_Str")))).append("String_Node_Str");
        ret.append("String_Node_Str").append(doubleToString(twipToPixel((int)attrs.get("String_Node_Str")))).append("String_Node_Str");
        if (textColor != null) {
          ret.append("String_Node_Str").append(textColor.toHexRGB()).append("String_Node_Str");
        }
 else         if (textColorA != null) {
          ret.append("String_Node_Str").append(textColorA.toHexRGB()).append("String_Node_Str").append(textColorA.getAlphaFloat()).append("String_Node_Str");
        }
        ret.append("String_Node_Str").append(psFontName).append("String_Node_Str");
        ret.append("String_Node_Str");
        ret.append("String_Node_Str");
        ret.append("String_Node_Str");
      }
    }
    ret.append("String_Node_Str");
    ret.append(filterStr);
    ret.append("String_Node_Str");
  }
 else   if (tag instanceof DefineEditTextTag) {
    DefineEditTextTag det=(DefineEditTextTag)tag;
    String tagName;
    FontTag ft=swf.getFont(det.fontId);
    if (ft != null && ft.isSmall()) {
      fontRenderingMode="String_Node_Str";
    }
    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.append("String_Node_Str").append(tagName);
    if (fontRenderingMode != null) {
      ret.append("String_Node_Str").append(fontRenderingMode).append("String_Node_Str");
    }
    if (instanceName != null) {
      ret.append("String_Node_Str").append(xmlString(instanceName)).append("String_Node_Str");
    }
    ret.append(antiAlias);
    double width=twipToPixel(bounds.getWidth());
    double height=twipToPixel(bounds.getHeight());
    double padding=2;
    width-=2 * padding;
    height-=2 * padding;
    if (det.hasLayout) {
      width-=twipToPixel(det.rightMargin);
      width-=twipToPixel(det.leftMargin);
    }
    ret.append("String_Node_Str").append(width).append("String_Node_Str");
    ret.append("String_Node_Str").append(height).append("String_Node_Str");
    if (det.border) {
      ret.append("String_Node_Str");
    }
    if (det.html) {
      ret.append("String_Node_Str");
    }
    if (det.noSelect) {
      ret.append("String_Node_Str");
    }
    if (det.multiline && det.wordWrap) {
      ret.append("String_Node_Str");
    }
 else     if (det.multiline && (!det.wordWrap)) {
      ret.append("String_Node_Str");
    }
 else     if (det.password) {
      ret.append("String_Node_Str");
    }
    if (det.hasMaxLength) {
      ret.append("String_Node_Str").append(det.maxLength).append("String_Node_Str");
    }
    if (!det.variableName.isEmpty()) {
      ret.append("String_Node_Str").append(det.variableName).append("String_Node_Str");
    }
    ret.append("String_Node_Str");
    ret.append(matStr);
    ret.append("String_Node_Str");
    String txt="String_Node_Str";
    if (det.hasText) {
      txt=det.initialText;
    }
    if (det.html) {
      ret.append(convertHTMLText(swf.tags,det,txt));
    }
 else {
      ret.append("String_Node_Str");
      ret.append("String_Node_Str").append(xmlString(txt)).append("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;
      RGBA textColor=null;
      if (det.hasTextColor) {
        textColor=det.textColor;
      }
      if (det.hasFont) {
        String fontName=null;
        for (        Tag u : swf.tags) {
          if (u instanceof DefineFontNameTag) {
            if (((DefineFontNameTag)u).fontId == det.fontId) {
              fontName=((DefineFontNameTag)u).fontName;
            }
          }
          if (fontName != null && ft != null) {
            break;
          }
        }
        if (ft != null) {
          if (fontName == null) {
            fontName=ft.getFontNameIntag();
          }
          if (fontName == null) {
            fontName=FontTag.defaultFontName;
          }
          italic=ft.isItalic();
          bold=ft.isBold();
          size=det.fontHeight;
          fontFace=fontName;
          String installedFont=null;
          if ((installedFont=FontTag.isFontFamilyInstalled(fontName)) != null) {
            fontName=installedFont;
            fontFace=new Font(installedFont,(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"};
        if (det.align < alignNames.length) {
          alignment=alignNames[det.align];
        }
 else {
          alignment="String_Node_Str";
        }
      }
      ret.append("String_Node_Str");
      ret.append("String_Node_Str");
      if (alignment != null) {
        ret.append("String_Node_Str").append(alignment).append("String_Node_Str");
      }
      ret.append("String_Node_Str");
      if (indent > -1) {
        ret.append("String_Node_Str").append(twipToPixel(indent)).append("String_Node_Str");
      }
      if (leftMargin > -1) {
        ret.append("String_Node_Str").append(twipToPixel(leftMargin)).append("String_Node_Str");
      }
      if (lineSpacing > -1) {
        ret.append("String_Node_Str").append(twipToPixel(lineSpacing)).append("String_Node_Str");
      }
      if (rightMargin > -1) {
        ret.append("String_Node_Str").append(twipToPixel(rightMargin)).append("String_Node_Str");
      }
      if (size > -1) {
        ret.append("String_Node_Str").append(twipToPixel(size)).append("String_Node_Str");
        ret.append("String_Node_Str").append(size).append("String_Node_Str");
      }
      if (fontFace != null) {
        ret.append("String_Node_Str").append(fontFace).append("String_Node_Str");
      }
      if (textColor != null) {
        ret.append("String_Node_Str").append(textColor.toHexRGB()).append("String_Node_Str").append(textColor.getAlphaFloat()).append("String_Node_Str");
      }
      ret.append("String_Node_Str");
      ret.append("String_Node_Str");
      ret.append("String_Node_Str");
    }
    ret.append("String_Node_Str");
    ret.append(filterStr);
    ret.append("String_Node_Str").append(tagName).append("String_Node_Str");
  }
  return ret.toString();
}