Program: 158435
Project: 158435
Buggy source:
public static StringBuilder getRulefromCardView(CardView card,TextLines textLines){
  String manaCost="String_Node_Str";
  for (  String m : card.getManaCost()) {
    manaCost+=m;
  }
  String castingCost=UI.getDisplayManaCost(manaCost);
  castingCost=ManaSymbols.replaceSymbolsWithHTML(castingCost,ManaSymbols.Type.TOOLTIP);
  int symbolCount=0;
  int offset=0;
  while ((offset=castingCost.indexOf("String_Node_Str",offset) + 1) != 0) {
    symbolCount++;
  }
  String fontFamily="String_Node_Str";
  int fontSize=GUISizeHelper.cardTooltipFontSize;
  final StringBuilder buffer=new StringBuilder(512);
  buffer.append("String_Node_Str");
  buffer.append(fontFamily);
  buffer.append("String_Node_Str");
  buffer.append(fontSize);
  buffer.append("String_Node_Str");
  buffer.append("String_Node_Str");
  buffer.append("String_Node_Str");
  buffer.append(card.getDisplayName());
  if (card.isGameObject()) {
    buffer.append("String_Node_Str").append(card.getId().toString().substring(0,3)).append("String_Node_Str");
  }
  buffer.append("String_Node_Str");
  buffer.append(symbolCount * GUISizeHelper.cardTooltipFontSize);
  buffer.append("String_Node_Str");
  if (!card.isSplitCard()) {
    buffer.append(castingCost);
  }
  buffer.append("String_Node_Str");
  buffer.append("String_Node_Str");
  String imageSize="String_Node_Str" + GUISizeHelper.cardTooltipFontSize + "String_Node_Str"+ GUISizeHelper.cardTooltipFontSize+ "String_Node_Str";
  if (card.getColor().isWhite()) {
    buffer.append("String_Node_Str").append(getResourcePath("String_Node_Str")).append("String_Node_Str").append(imageSize);
  }
  if (card.getColor().isBlue()) {
    buffer.append("String_Node_Str").append(getResourcePath("String_Node_Str")).append("String_Node_Str").append(imageSize);
  }
  if (card.getColor().isBlack()) {
    buffer.append("String_Node_Str").append(getResourcePath("String_Node_Str")).append("String_Node_Str").append(imageSize);
  }
  if (card.getColor().isRed()) {
    buffer.append("String_Node_Str").append(getResourcePath("String_Node_Str")).append("String_Node_Str").append(imageSize);
  }
  if (card.getColor().isGreen()) {
    buffer.append("String_Node_Str").append(getResourcePath("String_Node_Str")).append("String_Node_Str").append(imageSize);
  }
  if (!card.getColor().isColorless()) {
    buffer.append("String_Node_Str");
  }
  buffer.append(getTypes(card));
  buffer.append("String_Node_Str");
  String rarity;
  if (card.getRarity() == null) {
    rarity=Rarity.COMMON.getCode();
    buffer.append("String_Node_Str");
  }
 else {
switch (card.getRarity()) {
case RARE:
      buffer.append("String_Node_Str");
    break;
case UNCOMMON:
  buffer.append("String_Node_Str");
break;
case COMMON:
buffer.append("String_Node_Str");
break;
case MYTHIC:
buffer.append("String_Node_Str");
break;
}
rarity=card.getRarity().getCode();
}
if (card.getExpansionSetCode() != null) {
buffer.append(ManaSymbols.replaceSetCodeWithHTML(card.getExpansionSetCode().toUpperCase(),rarity,GUISizeHelper.symbolTooltipSize));
}
buffer.append("String_Node_Str");
String pt="String_Node_Str";
if (CardUtil.isCreature(card)) {
pt=card.getPower() + "String_Node_Str" + card.getToughness();
}
 else if (CardUtil.isPlaneswalker(card)) {
pt=card.getLoyalty();
}
buffer.append("String_Node_Str");
buffer.append(pt).append("String_Node_Str");
buffer.append("String_Node_Str");
if (!card.isControlledByOwner()) {
if (card instanceof PermanentView) {
buffer.append("String_Node_Str").append(((PermanentView)card).getNameOwner()).append("String_Node_Str");
}
 else {
buffer.append("String_Node_Str");
}
}
if (!card.getMageObjectType().equals(MageObjectType.NULL)) {
buffer.append(card.getMageObjectType().toString());
}
buffer.append("String_Node_Str");
StringBuilder rule=new StringBuilder("String_Node_Str");
if (card.isSplitCard()) {
rule.append("String_Node_Str");
rule.append("String_Node_Str");
rule.append(card.getLeftSplitName());
rule.append("String_Node_Str");
rule.append(card.getLeftSplitCosts().getSymbols().size() * GUISizeHelper.symbolTooltipSize + 1);
rule.append("String_Node_Str");
rule.append(card.getLeftSplitCosts().getText());
rule.append("String_Node_Str");
for (String ruling : card.getLeftSplitRules()) {
if (ruling != null && !ruling.replace("String_Node_Str","String_Node_Str").trim().isEmpty()) {
rule.append("String_Node_Str").append(ruling).append("String_Node_Str");
}
}
rule.append("String_Node_Str");
rule.append("String_Node_Str");
rule.append(card.getRightSplitName());
rule.append("String_Node_Str");
rule.append(card.getRightSplitCosts().getSymbols().size() * GUISizeHelper.symbolTooltipSize + 1);
rule.append("String_Node_Str");
rule.append(card.getRightSplitCosts().getText());
rule.append("String_Node_Str");
for (String ruling : card.getRightSplitRules()) {
if (ruling != null && !ruling.replace("String_Node_Str","String_Node_Str").trim().isEmpty()) {
rule.append("String_Node_Str").append(ruling).append("String_Node_Str");
}
}
}
if (textLines.lines.size() > 0) {
for (String textLine : textLines.lines) {
if (textLine != null && !textLine.replace("String_Node_Str","String_Node_Str").trim().isEmpty()) {
rule.append("String_Node_Str").append(textLine).append("String_Node_Str");
}
}
}
String legal=rule.toString();
if (legal.length() > 0) {
legal=legal.replaceAll("String_Node_Str",card.getName().isEmpty() ? "String_Node_Str" : card.getName());
legal=legal.replaceAll("String_Node_Str",card.getName().isEmpty() ? "String_Node_Str" : card.getName());
buffer.append(ManaSymbols.replaceSymbolsWithHTML(legal,ManaSymbols.Type.TOOLTIP));
}
buffer.append("String_Node_Str");
return buffer;
}

Fixed version (ground truth):
public static StringBuilder getRulefromCardView(CardView card,TextLines textLines){
  String manaCost="String_Node_Str";
  for (  String m : card.getManaCost()) {
    manaCost+=m;
  }
  String castingCost=UI.getDisplayManaCost(manaCost);
  castingCost=ManaSymbols.replaceSymbolsWithHTML(castingCost,ManaSymbols.Type.TOOLTIP);
  int symbolCount=0;
  int offset=0;
  while ((offset=castingCost.indexOf("String_Node_Str",offset) + 1) != 0) {
    symbolCount++;
  }
  String fontFamily="String_Node_Str";
  int fontSize=GUISizeHelper.cardTooltipFontSize;
  final StringBuilder buffer=new StringBuilder(512);
  buffer.append("String_Node_Str");
  buffer.append(fontFamily);
  buffer.append("String_Node_Str");
  buffer.append(fontSize);
  buffer.append("String_Node_Str");
  buffer.append("String_Node_Str");
  buffer.append("String_Node_Str");
  buffer.append(card.getDisplayName());
  if (card.isGameObject()) {
    buffer.append("String_Node_Str").append(card.getId().toString().substring(0,3)).append("String_Node_Str");
  }
  buffer.append("String_Node_Str");
  buffer.append(symbolCount * GUISizeHelper.cardTooltipFontSize);
  buffer.append("String_Node_Str");
  if (!card.isSplitCard()) {
    buffer.append(castingCost);
  }
  buffer.append("String_Node_Str");
  buffer.append("String_Node_Str");
  String imageSize="String_Node_Str" + GUISizeHelper.cardTooltipFontSize + "String_Node_Str"+ GUISizeHelper.cardTooltipFontSize+ "String_Node_Str";
  if (card.getColor().isWhite()) {
    buffer.append("String_Node_Str").append(getResourcePath("String_Node_Str")).append("String_Node_Str").append(imageSize);
  }
  if (card.getColor().isBlue()) {
    buffer.append("String_Node_Str").append(getResourcePath("String_Node_Str")).append("String_Node_Str").append(imageSize);
  }
  if (card.getColor().isBlack()) {
    buffer.append("String_Node_Str").append(getResourcePath("String_Node_Str")).append("String_Node_Str").append(imageSize);
  }
  if (card.getColor().isRed()) {
    buffer.append("String_Node_Str").append(getResourcePath("String_Node_Str")).append("String_Node_Str").append(imageSize);
  }
  if (card.getColor().isGreen()) {
    buffer.append("String_Node_Str").append(getResourcePath("String_Node_Str")).append("String_Node_Str").append(imageSize);
  }
  if (!card.getColor().isColorless()) {
    buffer.append("String_Node_Str");
  }
  buffer.append(getTypes(card));
  buffer.append("String_Node_Str");
  String rarity;
  if (card.getRarity() == null) {
    rarity=Rarity.COMMON.getCode();
    buffer.append("String_Node_Str");
  }
 else {
switch (card.getRarity()) {
case RARE:
      buffer.append("String_Node_Str");
    break;
case UNCOMMON:
  buffer.append("String_Node_Str");
break;
case COMMON:
buffer.append("String_Node_Str");
break;
case MYTHIC:
buffer.append("String_Node_Str");
break;
}
rarity=card.getRarity().getCode();
}
if (card.getExpansionSetCode() != null) {
buffer.append(ManaSymbols.replaceSetCodeWithHTML(card.getExpansionSetCode().toUpperCase(),rarity,GUISizeHelper.symbolTooltipSize));
}
buffer.append("String_Node_Str");
String pt="String_Node_Str";
if (CardUtil.isCreature(card)) {
pt=card.getPower() + "String_Node_Str" + card.getToughness();
}
 else if (CardUtil.isPlaneswalker(card)) {
pt=card.getLoyalty();
}
buffer.append("String_Node_Str");
buffer.append(pt).append("String_Node_Str");
buffer.append("String_Node_Str");
if (!card.isControlledByOwner()) {
if (card instanceof PermanentView) {
buffer.append("String_Node_Str").append(((PermanentView)card).getNameOwner()).append("String_Node_Str");
}
 else {
buffer.append("String_Node_Str");
}
}
if (!card.getMageObjectType().equals(MageObjectType.NULL)) {
buffer.append(card.getMageObjectType().toString());
}
buffer.append("String_Node_Str");
StringBuilder rule=new StringBuilder("String_Node_Str");
if (card.isSplitCard()) {
rule.append("String_Node_Str");
rule.append("String_Node_Str");
rule.append(card.getLeftSplitName());
rule.append("String_Node_Str");
rule.append(card.getLeftSplitCosts().getSymbols().size() * GUISizeHelper.symbolTooltipSize + 1);
rule.append("String_Node_Str");
rule.append(card.getLeftSplitCosts().getText());
rule.append("String_Node_Str");
for (String ruling : card.getLeftSplitRules()) {
if (ruling != null && !ruling.replace("String_Node_Str","String_Node_Str").trim().isEmpty()) {
rule.append("String_Node_Str").append(ruling).append("String_Node_Str");
}
}
rule.append("String_Node_Str");
rule.append("String_Node_Str");
rule.append(card.getRightSplitName());
rule.append("String_Node_Str");
rule.append(card.getRightSplitCosts().getSymbols().size() * GUISizeHelper.symbolTooltipSize + 1);
rule.append("String_Node_Str");
rule.append(card.getRightSplitCosts().getText());
rule.append("String_Node_Str");
for (String ruling : card.getRightSplitRules()) {
if (ruling != null && !ruling.replace("String_Node_Str","String_Node_Str").trim().isEmpty()) {
rule.append("String_Node_Str").append(ruling).append("String_Node_Str");
}
}
}
if (textLines.lines.size() > 0) {
for (String textLine : textLines.lines) {
if (textLine != null && !textLine.replace("String_Node_Str","String_Node_Str").trim().isEmpty()) {
rule.append("String_Node_Str").append(textLine).append("String_Node_Str");
}
}
}
String legal=rule.toString();
if (legal.length() > 0) {
legal=legal.replaceAll("String_Node_Str",card.getName().isEmpty() ? "String_Node_Str" : card.getName());
legal=legal.replaceAll("String_Node_Str",card.getName().isEmpty() ? "String_Node_Str" : card.getName());
buffer.append(ManaSymbols.replaceSymbolsWithHTML(legal,ManaSymbols.Type.TOOLTIP));
}
Zone zone=card.getZone();
if (zone != null) {
buffer.append("String_Node_Str").append(zone).append("String_Node_Str");
}
buffer.append("String_Node_Str");
return buffer;
}