Program: 61569
Project: 61569
Buggy source:
@Test(dataProvider="String_Node_Str") public void testDirectEditing(String filePath) throws IOException, InterruptedException, AVM2ParseException, CompilationException {
  File playerSWC=Configuration.getPlayerSWC();
  if (playerSWC == null) {
    throw new IOException("String_Node_Str" + Configuration.getPlayerSWC());
  }
  try {
    SWF swf=new SWF(new BufferedInputStream(new FileInputStream(filePath)),false);
    if (swf.isAS3()) {
      boolean dotest=false;
      List<ABC> allAbcs=new ArrayList<>();
      for (      ABCContainerTag ct : swf.getAbcList()) {
        allAbcs.add(ct.getABC());
      }
      for (      ABC abc : allAbcs) {
        for (int s=0; s < abc.script_info.size(); s++) {
          String startAfter=null;
          HighlightedTextWriter htw=new HighlightedTextWriter(new CodeFormatting(),false);
          ScriptPack en=abc.script_info.get(s).getPacks(abc,s,null).get(0);
          String classPathString=en.getClassPath().toString();
          if (startAfter == null || classPathString.equals(startAfter)) {
            dotest=true;
          }
          if (!dotest) {
            System.out.println("String_Node_Str" + classPathString);
            continue;
          }
          System.out.println("String_Node_Str" + classPathString + "String_Node_Str");
          en.toSource(htw,abc.script_info.get(s).traits.traits,ScriptExportMode.AS,false);
          String original=htw.toString();
          com.jpexs.decompiler.flash.abc.avm2.parser.script.ActionScriptParser.compile(original,abc,allAbcs,false,en.getClassPath().className + "String_Node_Str",abc.instance_info.size());
          abc.script_info.remove(abc.script_info.size() - 1);
        }
      }
    }
 else {
      Map<String,ASMSource> asms=swf.getASMs(false);
      for (      ASMSource asm : asms.values()) {
        try {
          HighlightedTextWriter writer=new HighlightedTextWriter(new CodeFormatting(),false);
          Action.actionsToSource(asm,asm.getActions(),asm.toString(),writer);
          String as=writer.toString();
          as=asm.removePrefixAndSuffix(as);
          ActionScriptParser par=new ActionScriptParser(swf.version);
          try {
            asm.setActions(par.actionsFromString(as));
          }
 catch (          ActionParseException|CompilationException ex) {
            fail("String_Node_Str" + asm.getSwf().getShortFileName() + "String_Node_Str"+ asm.toString());
          }
          writer=new HighlightedTextWriter(new CodeFormatting(),false);
          Action.actionsToSource(asm,asm.getActions(),asm.toString(),writer);
          String as2=writer.toString();
          as2=asm.removePrefixAndSuffix(as2);
          try {
            asm.setActions(par.actionsFromString(as2));
          }
 catch (          ActionParseException|CompilationException ex) {
            fail("String_Node_Str" + asm.getSwf().getShortFileName() + "String_Node_Str"+ asm.toString());
          }
          writer=new HighlightedTextWriter(new CodeFormatting(),false);
          Action.actionsToSource(asm,asm.getActions(),asm.toString(),writer);
          String as3=writer.toString();
          as3=asm.removePrefixAndSuffix(as3);
          if (!as3.equals(as2)) {
            fail("String_Node_Str" + asm.getSwf().getShortFileName() + "String_Node_Str"+ asm.toString());
          }
        }
 catch (        InterruptedException|IOException|OutOfMemoryError|TranslateException|StackOverflowError ex) {
        }
      }
    }
  }
 catch (  Exception ex) {
    fail("String_Node_Str" + filePath,ex);
  }
}

Fixed version (ground truth):
@Test(dataProvider="String_Node_Str") public void testDirectEditing(String filePath) throws IOException, InterruptedException, AVM2ParseException, CompilationException {
  File playerSWC=Configuration.getPlayerSWC();
  if (playerSWC == null) {
    throw new IOException("String_Node_Str" + Configuration.getFlashLibPath());
  }
  try {
    SWF swf=new SWF(new BufferedInputStream(new FileInputStream(filePath)),false);
    if (swf.isAS3()) {
      boolean dotest=false;
      List<ABC> allAbcs=new ArrayList<>();
      for (      ABCContainerTag ct : swf.getAbcList()) {
        allAbcs.add(ct.getABC());
      }
      for (      ABC abc : allAbcs) {
        for (int s=0; s < abc.script_info.size(); s++) {
          String startAfter=null;
          HighlightedTextWriter htw=new HighlightedTextWriter(new CodeFormatting(),false);
          ScriptPack en=abc.script_info.get(s).getPacks(abc,s,null).get(0);
          String classPathString=en.getClassPath().toString();
          if (startAfter == null || classPathString.equals(startAfter)) {
            dotest=true;
          }
          if (!dotest) {
            System.out.println("String_Node_Str" + classPathString);
            continue;
          }
          System.out.println("String_Node_Str" + classPathString + "String_Node_Str");
          en.toSource(htw,abc.script_info.get(s).traits.traits,ScriptExportMode.AS,false);
          String original=htw.toString();
          com.jpexs.decompiler.flash.abc.avm2.parser.script.ActionScriptParser.compile(original,abc,allAbcs,false,en.getClassPath().className + "String_Node_Str",abc.instance_info.size());
          abc.script_info.remove(abc.script_info.size() - 1);
        }
      }
    }
 else {
      Map<String,ASMSource> asms=swf.getASMs(false);
      for (      ASMSource asm : asms.values()) {
        try {
          HighlightedTextWriter writer=new HighlightedTextWriter(new CodeFormatting(),false);
          Action.actionsToSource(asm,asm.getActions(),asm.toString(),writer);
          String as=writer.toString();
          as=asm.removePrefixAndSuffix(as);
          ActionScriptParser par=new ActionScriptParser(swf.version);
          try {
            asm.setActions(par.actionsFromString(as));
          }
 catch (          ActionParseException|CompilationException ex) {
            fail("String_Node_Str" + asm.getSwf().getShortFileName() + "String_Node_Str"+ asm.toString());
          }
          writer=new HighlightedTextWriter(new CodeFormatting(),false);
          Action.actionsToSource(asm,asm.getActions(),asm.toString(),writer);
          String as2=writer.toString();
          as2=asm.removePrefixAndSuffix(as2);
          try {
            asm.setActions(par.actionsFromString(as2));
          }
 catch (          ActionParseException|CompilationException ex) {
            fail("String_Node_Str" + asm.getSwf().getShortFileName() + "String_Node_Str"+ asm.toString());
          }
          writer=new HighlightedTextWriter(new CodeFormatting(),false);
          Action.actionsToSource(asm,asm.getActions(),asm.toString(),writer);
          String as3=writer.toString();
          as3=asm.removePrefixAndSuffix(as3);
          if (!as3.equals(as2)) {
            fail("String_Node_Str" + asm.getSwf().getShortFileName() + "String_Node_Str"+ asm.toString());
          }
        }
 catch (        InterruptedException|IOException|OutOfMemoryError|TranslateException|StackOverflowError ex) {
        }
      }
    }
  }
 catch (  Exception ex) {
    fail("String_Node_Str" + filePath,ex);
  }
}