Program: 189887
Project: 189887
Buggy source:
public void action(){
  final String LAST_PATH="String_Node_Str";
  final String LAST_PATH_DEFAULT="String_Node_Str";
  final ExportControllerUI exportController=Lookup.getDefault().lookup(ExportControllerUI.class);
  if (exportController == null) {
    return;
  }
  String lastPathDefault=NbPreferences.forModule(GraphFileExporterUI.class).get(LAST_PATH_DEFAULT,null);
  String lastPath=NbPreferences.forModule(GraphFileExporterUI.class).get(LAST_PATH,lastPathDefault);
  FlowLayout layout=new FlowLayout(FlowLayout.RIGHT);
  JPanel optionsPanel=new JPanel(layout);
  final JButton optionsButton=new JButton(NbBundle.getMessage(GraphFileExporterUI.class,"String_Node_Str"));
  optionsPanel.add(optionsButton);
  optionsButton.addActionListener(new ActionListener(){
    public void actionPerformed(    ActionEvent e){
      ExporterUI exporterUI=exportController.getExportController().getUI(selectedExporter);
      if (exporterUI != null) {
        JPanel panel=exporterUI.getPanel();
        exporterUI.setup(selectedExporter);
        DialogDescriptor dd=new DialogDescriptor(panel,NbBundle.getMessage(GraphFileExporterUI.class,"String_Node_Str",selectedBuilder.getName()));
        Object result=DialogDisplayer.getDefault().notify(dd);
        exporterUI.unsetup(result == NotifyDescriptor.OK_OPTION);
      }
    }
  }
);
  final JPanel southPanel=new JPanel(new BorderLayout());
  southPanel.add(optionsPanel,BorderLayout.NORTH);
  GraphFileExporterUIPanel graphSettings=new GraphFileExporterUIPanel();
  graphSettings.setVisibleOnlyGraph(visibleOnlyGraph);
  southPanel.add(graphSettings,BorderLayout.CENTER);
  final JFileChooser chooser=new JFileChooser(lastPath){
    @Override protected JDialog createDialog(    Component parent) throws HeadlessException {
      JDialog dialog=super.createDialog(parent);
      dialog.setSize(640,480);
      dialog.setResizable(true);
      Component c=dialog.getContentPane().getComponent(0);
      if (c != null && c instanceof JComponent) {
        Insets insets=((JComponent)c).getInsets();
        southPanel.setBorder(BorderFactory.createEmptyBorder(insets.top,insets.left,insets.bottom,insets.right));
      }
      dialog.getContentPane().add(southPanel,BorderLayout.SOUTH);
      return dialog;
    }
    @Override public void approveSelection(){
      if (canExport(this)) {
        super.approveSelection();
      }
    }
  }
;
  chooser.setDialogTitle(NbBundle.getMessage(GraphFileExporterUI.class,"String_Node_Str"));
  chooser.addPropertyChangeListener(JFileChooser.FILE_FILTER_CHANGED_PROPERTY,new PropertyChangeListener(){
    public void propertyChange(    PropertyChangeEvent evt){
      DialogFileFilter fileFilter=(DialogFileFilter)evt.getNewValue();
      selectedBuilder=getExporter(fileFilter);
      if (selectedBuilder != null) {
        selectedExporter=selectedBuilder.buildExporter();
      }
      if (selectedBuilder != null && exportController.getExportController().getUI(selectedExporter) != null) {
        optionsButton.setEnabled(true);
      }
 else {
        optionsButton.setEnabled(false);
      }
      if (selectedFile != null && fileFilter != null) {
        String fileName=selectedFile.getName();
        String directoryPath=chooser.getCurrentDirectory().getAbsolutePath();
        if (fileName.lastIndexOf("String_Node_Str") != -1) {
          fileName=fileName.substring(0,fileName.lastIndexOf("String_Node_Str"));
          fileName=fileName.concat(fileFilter.getExtensions().get(0));
          selectedFile=new File(directoryPath,fileName);
          chooser.setSelectedFile(selectedFile);
        }
      }
    }
  }
);
  chooser.addPropertyChangeListener(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY,new PropertyChangeListener(){
    public void propertyChange(    PropertyChangeEvent evt){
      if (evt.getNewValue() != null) {
        selectedFile=(File)evt.getNewValue();
      }
    }
  }
);
  DialogFileFilter defaultFilter=null;
  for (  GraphFileExporterBuilder graphFileExporter : Lookup.getDefault().lookupAll(GraphFileExporterBuilder.class)) {
    for (    FileType fileType : graphFileExporter.getFileTypes()) {
      DialogFileFilter dialogFileFilter=new DialogFileFilter(fileType.getName());
      dialogFileFilter.addExtensions(fileType.getExtensions());
      if (defaultFilter == null) {
        defaultFilter=dialogFileFilter;
      }
      chooser.addChoosableFileFilter(dialogFileFilter);
    }
  }
  chooser.setAcceptAllFileFilterUsed(false);
  chooser.setFileFilter(defaultFilter);
  selectedFile=new File(chooser.getCurrentDirectory(),"String_Node_Str" + defaultFilter.getExtensions().get(0));
  chooser.setSelectedFile(selectedFile);
  int returnFile=chooser.showSaveDialog(null);
  if (returnFile == JFileChooser.APPROVE_OPTION) {
    File file=chooser.getSelectedFile();
    file=FileUtil.normalizeFile(file);
    FileObject fileObject=FileUtil.toFileObject(file);
    NbPreferences.forModule(GraphFileExporterUI.class).put(LAST_PATH,file.getAbsolutePath());
    visibleOnlyGraph=graphSettings.isVisibleOnlyGraph();
    selectedExporter.setExportVisible(visibleOnlyGraph);
    exportController.exportFile(fileObject,selectedExporter);
  }
}

Fixed version (ground truth):
public void action(){
  final String LAST_PATH="String_Node_Str";
  final String LAST_PATH_DEFAULT="String_Node_Str";
  final ExportControllerUI exportController=Lookup.getDefault().lookup(ExportControllerUI.class);
  if (exportController == null) {
    return;
  }
  String lastPathDefault=NbPreferences.forModule(GraphFileExporterUI.class).get(LAST_PATH_DEFAULT,null);
  String lastPath=NbPreferences.forModule(GraphFileExporterUI.class).get(LAST_PATH,lastPathDefault);
  FlowLayout layout=new FlowLayout(FlowLayout.RIGHT);
  JPanel optionsPanel=new JPanel(layout);
  final JButton optionsButton=new JButton(NbBundle.getMessage(GraphFileExporterUI.class,"String_Node_Str"));
  optionsPanel.add(optionsButton);
  optionsButton.addActionListener(new ActionListener(){
    public void actionPerformed(    ActionEvent e){
      ExporterUI exporterUI=exportController.getExportController().getUI(selectedExporter);
      if (exporterUI != null) {
        JPanel panel=exporterUI.getPanel();
        exporterUI.setup(selectedExporter);
        DialogDescriptor dd=new DialogDescriptor(panel,NbBundle.getMessage(GraphFileExporterUI.class,"String_Node_Str",selectedBuilder.getName()));
        TopDialog topDialog=new TopDialog(dialog,dd.getTitle(),dd.isModal(),dd,dd.getClosingOptions(),dd.getButtonListener());
        topDialog.setVisible(true);
        Object result=(dd.getValue() != null) ? dd.getValue() : NotifyDescriptor.CLOSED_OPTION;
        exporterUI.unsetup(result == NotifyDescriptor.OK_OPTION);
      }
    }
  }
);
  final JPanel southPanel=new JPanel(new BorderLayout());
  southPanel.add(optionsPanel,BorderLayout.NORTH);
  GraphFileExporterUIPanel graphSettings=new GraphFileExporterUIPanel();
  graphSettings.setVisibleOnlyGraph(visibleOnlyGraph);
  southPanel.add(graphSettings,BorderLayout.CENTER);
  final JFileChooser chooser=new JFileChooser(lastPath){
    @Override protected JDialog createDialog(    Component parent) throws HeadlessException {
      dialog=super.createDialog(parent);
      dialog.setSize(640,480);
      dialog.setResizable(true);
      Component c=dialog.getContentPane().getComponent(0);
      if (c != null && c instanceof JComponent) {
        Insets insets=((JComponent)c).getInsets();
        southPanel.setBorder(BorderFactory.createEmptyBorder(insets.top,insets.left,insets.bottom,insets.right));
      }
      dialog.getContentPane().add(southPanel,BorderLayout.SOUTH);
      return dialog;
    }
    @Override public void approveSelection(){
      if (canExport(this)) {
        super.approveSelection();
      }
    }
  }
;
  chooser.setDialogTitle(NbBundle.getMessage(GraphFileExporterUI.class,"String_Node_Str"));
  chooser.addPropertyChangeListener(JFileChooser.FILE_FILTER_CHANGED_PROPERTY,new PropertyChangeListener(){
    public void propertyChange(    PropertyChangeEvent evt){
      DialogFileFilter fileFilter=(DialogFileFilter)evt.getNewValue();
      selectedBuilder=getExporter(fileFilter);
      if (selectedBuilder != null) {
        selectedExporter=selectedBuilder.buildExporter();
      }
      if (selectedBuilder != null && exportController.getExportController().getUI(selectedExporter) != null) {
        optionsButton.setEnabled(true);
      }
 else {
        optionsButton.setEnabled(false);
      }
      if (selectedFile != null && fileFilter != null) {
        String fileName=selectedFile.getName();
        String directoryPath=chooser.getCurrentDirectory().getAbsolutePath();
        if (fileName.lastIndexOf("String_Node_Str") != -1) {
          fileName=fileName.substring(0,fileName.lastIndexOf("String_Node_Str"));
          fileName=fileName.concat(fileFilter.getExtensions().get(0));
          selectedFile=new File(directoryPath,fileName);
          chooser.setSelectedFile(selectedFile);
        }
      }
    }
  }
);
  chooser.addPropertyChangeListener(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY,new PropertyChangeListener(){
    public void propertyChange(    PropertyChangeEvent evt){
      if (evt.getNewValue() != null) {
        selectedFile=(File)evt.getNewValue();
      }
    }
  }
);
  DialogFileFilter defaultFilter=null;
  for (  GraphFileExporterBuilder graphFileExporter : Lookup.getDefault().lookupAll(GraphFileExporterBuilder.class)) {
    for (    FileType fileType : graphFileExporter.getFileTypes()) {
      DialogFileFilter dialogFileFilter=new DialogFileFilter(fileType.getName());
      dialogFileFilter.addExtensions(fileType.getExtensions());
      if (defaultFilter == null) {
        defaultFilter=dialogFileFilter;
      }
      chooser.addChoosableFileFilter(dialogFileFilter);
    }
  }
  chooser.setAcceptAllFileFilterUsed(false);
  chooser.setFileFilter(defaultFilter);
  selectedFile=new File(chooser.getCurrentDirectory(),"String_Node_Str" + defaultFilter.getExtensions().get(0));
  chooser.setSelectedFile(selectedFile);
  int returnFile=chooser.showSaveDialog(null);
  if (returnFile == JFileChooser.APPROVE_OPTION) {
    File file=chooser.getSelectedFile();
    file=FileUtil.normalizeFile(file);
    FileObject fileObject=FileUtil.toFileObject(file);
    NbPreferences.forModule(GraphFileExporterUI.class).put(LAST_PATH,file.getAbsolutePath());
    visibleOnlyGraph=graphSettings.isVisibleOnlyGraph();
    selectedExporter.setExportVisible(visibleOnlyGraph);
    exportController.exportFile(fileObject,selectedExporter);
  }
  dialog=null;
}