Program: 61714
Project: 61714
Buggy source:
public boolean search(final String txt,boolean ignoreCase,boolean regexp){
  if ((txt != null) && (!txt.isEmpty())) {
    searchPanel.setOptions(ignoreCase,regexp);
    List<TreeNode> list=SWF.createASTagList(mainPanel.getCurrentSwf().tags,null);
    Map<String,ASMSource> asms=new HashMap<>();
    getASMs("String_Node_Str",list,asms);
    final List<ActionSearchResult> found=new ArrayList<>();
    Pattern pat=null;
    if (regexp) {
      pat=Pattern.compile(txt,ignoreCase ? Pattern.CASE_INSENSITIVE : 0);
    }
 else {
      pat=Pattern.compile(Pattern.quote(txt),ignoreCase ? Pattern.CASE_INSENSITIVE : 0);
    }
    int pos=0;
    for (    Entry<String,ASMSource> item : asms.entrySet()) {
      pos++;
      String workText=AppStrings.translate("String_Node_Str");
      String decAdd="String_Node_Str";
      if (!isCached(item.getValue())) {
        decAdd="String_Node_Str" + AppStrings.translate("String_Node_Str");
      }
      Main.startWork(workText + "String_Node_Str" + txt+ "String_Node_Str"+ decAdd+ "String_Node_Str"+ pos+ "String_Node_Str"+ asms.size()+ "String_Node_Str"+ item.getKey()+ "String_Node_Str");
      try {
        cacheScript(item.getValue(),null);
      }
 catch (      InterruptedException ex) {
        break;
      }
      if (pat.matcher(getCached(item.getValue()).text).find()) {
        found.add(new ActionSearchResult(item.getValue(),item.getKey()));
      }
    }
    Main.stopWork();
    searchPanel.setSearchText(txt);
    final ActionPanel that=this;
    View.execInEventDispatch(new Runnable(){
      @Override public void run(){
        SearchResultsDialog<ActionSearchResult> sr=new SearchResultsDialog<ActionSearchResult>(txt,that);
        sr.setResults(found);
        sr.setVisible(true);
      }
    }
);
    return true;
  }
  return false;
}

Fixed version (ground truth):
public boolean search(final String txt,boolean ignoreCase,boolean regexp){
  if ((txt != null) && (!txt.isEmpty())) {
    searchPanel.setOptions(ignoreCase,regexp);
    List<TreeNode> list=SWF.createASTagList(mainPanel.getCurrentSwf().tags,null);
    Map<String,ASMSource> asms=new HashMap<>();
    getASMs("String_Node_Str",list,asms);
    final List<ActionSearchResult> found=new ArrayList<>();
    Pattern pat=null;
    if (regexp) {
      pat=Pattern.compile(txt,ignoreCase ? Pattern.CASE_INSENSITIVE : 0);
    }
 else {
      pat=Pattern.compile(Pattern.quote(txt),ignoreCase ? Pattern.CASE_INSENSITIVE : 0);
    }
    int pos=0;
    for (    Entry<String,ASMSource> item : asms.entrySet()) {
      pos++;
      String workText=AppStrings.translate("String_Node_Str");
      String decAdd="String_Node_Str";
      if (!isCached(item.getValue())) {
        decAdd="String_Node_Str" + AppStrings.translate("String_Node_Str");
      }
      Main.startWork(workText + "String_Node_Str" + txt+ "String_Node_Str"+ decAdd+ "String_Node_Str"+ pos+ "String_Node_Str"+ asms.size()+ "String_Node_Str"+ item.getKey()+ "String_Node_Str");
      try {
        cacheScript(item.getValue(),null);
      }
 catch (      InterruptedException ex) {
        break;
      }
      if (pat.matcher(getCached(item.getValue()).text).find()) {
        found.add(new ActionSearchResult(item.getValue(),item.getKey()));
      }
    }
    Main.stopWork();
    searchPanel.setSearchText(txt);
    View.execInEventDispatch(new Runnable(){
      @Override public void run(){
        SearchResultsDialog<ActionSearchResult> sr=new SearchResultsDialog<>(ActionPanel.this.mainPanel.getMainFrame().getWindow(),txt,ActionPanel.this);
        sr.setResults(found);
        sr.setVisible(true);
      }
    }
);
    return true;
  }
  return false;
}