Program: 61552
Project: 61552
Buggy source:
public void exportFla(final SWF swf){
  if (swf == null) {
    return;
  }
  JFileChooser fc=new JFileChooser();
  String selDir=Configuration.lastOpenDir.get();
  fc.setCurrentDirectory(new File(selDir));
  if (!selDir.endsWith(File.separator)) {
    selDir+=File.separator;
  }
  String fileName=new File(swf.getFile()).getName();
  fileName=fileName.substring(0,fileName.length() - 4) + "String_Node_Str";
  fc.setSelectedFile(new File(selDir + fileName));
  List<FileFilter> flaFilters=new ArrayList<>();
  List<FileFilter> xflFilters=new ArrayList<>();
  List<FLAVersion> versions=new ArrayList<>();
  boolean isAS3=swf.isAS3();
  for (int i=FLAVersion.values().length - 1; i >= 0; i--) {
    final FLAVersion v=FLAVersion.values()[i];
    if (!isAS3 && v.minASVersion() > 2) {
    }
 else {
      versions.add(v);
      FileFilter f=new FileFilter(){
        @Override public boolean accept(        File f){
          return f.isDirectory() || (f.getName().toLowerCase().endsWith("String_Node_Str"));
        }
        @Override public String getDescription(){
          return translate("String_Node_Str").replace("String_Node_Str",v.applicationName());
        }
      }
;
      if (v == FLAVersion.CS6) {
        fc.setFileFilter(f);
      }
 else {
        fc.addChoosableFileFilter(f);
      }
      flaFilters.add(f);
      f=new FileFilter(){
        @Override public boolean accept(        File f){
          return f.isDirectory() || (f.getName().toLowerCase().endsWith("String_Node_Str"));
        }
        @Override public String getDescription(){
          return translate("String_Node_Str").replace("String_Node_Str",v.applicationName());
        }
      }
;
      fc.addChoosableFileFilter(f);
      xflFilters.add(f);
    }
  }
  fc.setAcceptAllFileFilterUsed(false);
  JFrame f=new JFrame();
  View.setWindowIcon(f);
  if (fc.showSaveDialog(f) == JFileChooser.APPROVE_OPTION) {
    Configuration.lastOpenDir.set(Helper.fixDialogFile(fc.getSelectedFile()).getParentFile().getAbsolutePath());
    File sf=Helper.fixDialogFile(fc.getSelectedFile());
    Main.startWork(translate("String_Node_Str") + "String_Node_Str");
    final boolean compressed=flaFilters.contains(fc.getFileFilter());
    if (!compressed) {
      if (sf.getName().endsWith("String_Node_Str")) {
        sf=new File(sf.getAbsolutePath().substring(0,sf.getAbsolutePath().length() - 4) + "String_Node_Str");
      }
    }
    final FLAVersion selectedVersion=versions.get(compressed ? flaFilters.indexOf(fc.getFileFilter()) : xflFilters.indexOf(fc.getFileFilter()));
    final File selfile=sf;
    new CancellableWorker(){
      @Override protected Void doInBackground() throws Exception {
        Helper.freeMem();
        try {
          AbortRetryIgnoreHandler errorHandler=new GuiAbortRetryIgnoreHandler();
          if (compressed) {
            swf.exportFla(errorHandler,selfile.getAbsolutePath(),new File(swf.getFile()).getName(),ApplicationInfo.APPLICATION_NAME,ApplicationInfo.applicationVerName,ApplicationInfo.version,Configuration.parallelSpeedUp.get(),selectedVersion);
          }
 else {
            swf.exportXfl(errorHandler,selfile.getAbsolutePath(),new File(swf.getFile()).getName(),ApplicationInfo.APPLICATION_NAME,ApplicationInfo.applicationVerName,ApplicationInfo.version,Configuration.parallelSpeedUp.get(),selectedVersion);
          }
        }
 catch (        IOException ex) {
          View.showMessageDialog(null,translate("String_Node_Str") + "String_Node_Str" + ex.getClass().getName()+ "String_Node_Str"+ ex.getLocalizedMessage(),translate("String_Node_Str"),JOptionPane.ERROR_MESSAGE);
        }
        Helper.freeMem();
        return null;
      }
      @Override protected void done(){
        Main.stopWork();
        if (Configuration.openFolderAfterFlaExport.get()) {
          try {
            Desktop.getDesktop().open(selfile.getAbsoluteFile().getParentFile());
          }
 catch (          IOException ex) {
            logger.log(Level.SEVERE,null,ex);
          }
        }
      }
    }
.execute();
  }
}

Fixed version (ground truth):
public void exportFla(final SWF swf){
  if (swf == null) {
    return;
  }
  JFileChooser fc=new JFileChooser();
  String selDir=Configuration.lastOpenDir.get();
  fc.setCurrentDirectory(new File(selDir));
  if (!selDir.endsWith(File.separator)) {
    selDir+=File.separator;
  }
  String fileName=new File(swf.getFile()).getName();
  fileName=fileName.substring(0,fileName.length() - 4) + "String_Node_Str";
  fc.setSelectedFile(new File(selDir + fileName));
  List<FileFilter> flaFilters=new ArrayList<>();
  List<FileFilter> xflFilters=new ArrayList<>();
  List<FLAVersion> versions=new ArrayList<>();
  boolean isAS3=swf.isAS3();
  for (int i=FLAVersion.values().length - 1; i >= 0; i--) {
    final FLAVersion v=FLAVersion.values()[i];
    if (!isAS3 && v.minASVersion() > 2) {
    }
 else {
      versions.add(v);
      FileFilter f=new FileFilter(){
        @Override public boolean accept(        File f){
          return f.isDirectory() || (f.getName().toLowerCase().endsWith("String_Node_Str"));
        }
        @Override public String getDescription(){
          return translate("String_Node_Str").replace("String_Node_Str",v.applicationName());
        }
      }
;
      if (v == FLAVersion.CS6) {
        fc.setFileFilter(f);
      }
 else {
        fc.addChoosableFileFilter(f);
      }
      flaFilters.add(f);
      f=new FileFilter(){
        @Override public boolean accept(        File f){
          return f.isDirectory() || (f.getName().toLowerCase().endsWith("String_Node_Str"));
        }
        @Override public String getDescription(){
          return translate("String_Node_Str").replace("String_Node_Str",v.applicationName());
        }
      }
;
      fc.addChoosableFileFilter(f);
      xflFilters.add(f);
    }
  }
  fc.setAcceptAllFileFilterUsed(false);
  JFrame f=new JFrame();
  View.setWindowIcon(f);
  if (fc.showSaveDialog(f) == JFileChooser.APPROVE_OPTION) {
    Configuration.lastOpenDir.set(Helper.fixDialogFile(fc.getSelectedFile()).getParentFile().getAbsolutePath());
    File sf=Helper.fixDialogFile(fc.getSelectedFile());
    Main.startWork(translate("String_Node_Str") + "String_Node_Str");
    final boolean compressed=flaFilters.contains(fc.getFileFilter());
    if (!compressed) {
      if (sf.getName().endsWith("String_Node_Str")) {
        sf=new File(sf.getAbsolutePath().substring(0,sf.getAbsolutePath().length() - 4) + "String_Node_Str");
      }
    }
    final FLAVersion selectedVersion=versions.get(compressed ? flaFilters.indexOf(fc.getFileFilter()) : xflFilters.indexOf(fc.getFileFilter()));
    final File selfile=sf;
    new CancellableWorker(){
      @Override protected Void doInBackground() throws Exception {
        Helper.freeMem();
        try {
          AbortRetryIgnoreHandler errorHandler=new GuiAbortRetryIgnoreHandler();
          if (compressed) {
            swf.exportFla(errorHandler,selfile.getAbsolutePath(),new File(swf.getFile()).getName(),ApplicationInfo.APPLICATION_NAME,ApplicationInfo.applicationVerName,ApplicationInfo.version,Configuration.parallelSpeedUp.get(),selectedVersion);
          }
 else {
            swf.exportXfl(errorHandler,selfile.getAbsolutePath(),new File(swf.getFile()).getName(),ApplicationInfo.APPLICATION_NAME,ApplicationInfo.applicationVerName,ApplicationInfo.version,Configuration.parallelSpeedUp.get(),selectedVersion);
          }
        }
 catch (        Exception ex) {
          View.showMessageDialog(null,translate("String_Node_Str") + "String_Node_Str" + ex.getClass().getName()+ "String_Node_Str"+ ex.getLocalizedMessage(),translate("String_Node_Str"),JOptionPane.ERROR_MESSAGE);
        }
        Helper.freeMem();
        return null;
      }
      @Override protected void done(){
        Main.stopWork();
        if (Configuration.openFolderAfterFlaExport.get()) {
          try {
            Desktop.getDesktop().open(selfile.getAbsoluteFile().getParentFile());
          }
 catch (          IOException ex) {
            logger.log(Level.SEVERE,null,ex);
          }
        }
      }
    }
.execute();
  }
}