Program: 60371
Project: 60371
Buggy source:
@Override public boolean onActionItemClicked(final ActionMode actionMode,final MenuItem menuItem){
  if (menuItem.getItemId() == R.id.copy) {
    if (getContext().getCab() instanceof BaseFileCab)     ((BaseFileCab)getContext().getCab()).overrideDestroy=true;
    getContext().setCab(new CopyCab().setFragment(getFragment()).setFiles(getFiles()).start());
    return super.onActionItemClicked(actionMode,menuItem);
  }
 else   if (menuItem.getItemId() == R.id.cut) {
    if (getContext().getCab() instanceof BaseFileCab)     ((BaseFileCab)getContext().getCab()).overrideDestroy=true;
    getContext().setCab(new CutCab().setFragment(getFragment()).setFiles(getFiles()).start());
    return super.onActionItemClicked(actionMode,menuItem);
  }
 else   if (menuItem.getItemId() == R.id.delete) {
    CustomDialog.create(getContext(),R.string.delete,getFiles().size() == 1 ? getContext().getString(R.string.confirm_delete,getFiles().get(0).getName()) : getContext().getString(R.string.confirm_delete_xfiles,getFiles().size()),R.string.yes,0,R.string.no,new CustomDialog.SimpleClickListener(){
      @Override public void onPositive(      int which,      View view){
        deleteNextFile();
        finish();
      }
    }
).show(getContext().getFragmentManager(),"String_Node_Str");
    return false;
  }
 else   if (menuItem.getItemId() == R.id.selectAll) {
    List<File> newSelected=getFragment().mAdapter.checkAll();
    addFiles(newSelected);
    invalidate();
    return true;
  }
 else   if (menuItem.getItemId() == R.id.share) {
    Intent intent=new Intent().setAction(Intent.ACTION_SEND_MULTIPLE);
    String mime=null;
    for (    File fi : getFiles()) {
      if (mime == null)       mime=fi.getMimeType();
 else       if (!fi.getMimeType().equals(mime)) {
        mime="String_Node_Str";
        break;
      }
    }
    intent.setType(mime);
    ArrayList<Uri> files=new ArrayList<Uri>();
    for (    File fi : getFiles())     files.add(Uri.fromFile(fi.toJavaFile()));
    intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,files);
    try {
      getContext().startActivity(intent);
    }
 catch (    ActivityNotFoundException e) {
      Toast.makeText(getContext(),R.string.no_apps_for_sharing,Toast.LENGTH_SHORT).show();
    }
  }
 else   if (menuItem.getItemId() == R.id.zip) {
    if (menuItem.getTitle().toString().equals(getContext().getString(R.string.unzip))) {
      Unzipper.unzip(getFragment(),getFiles(),new Zipper.ZipCallback(){
        @Override public void onComplete(){
          MainCab.super.onActionItemClicked(actionMode,menuItem);
        }
      }
);
    }
 else {
      Zipper.zip(getFragment(),getFiles(),new Zipper.ZipCallback(){
        @Override public void onComplete(){
          MainCab.super.onActionItemClicked(actionMode,menuItem);
        }
      }
);
    }
    return true;
  }
  return false;
}

Fixed version (ground truth):
@Override public boolean onActionItemClicked(final ActionMode actionMode,final MenuItem menuItem){
  if (menuItem.getItemId() == R.id.copy) {
    if (getContext().getCab() instanceof BaseFileCab)     ((BaseFileCab)getContext().getCab()).overrideDestroy=true;
    getContext().setCab(new CopyCab().setFragment(getFragment()).setFiles(getFiles()).start());
    return super.onActionItemClicked(actionMode,menuItem);
  }
 else   if (menuItem.getItemId() == R.id.cut) {
    if (getContext().getCab() instanceof BaseFileCab)     ((BaseFileCab)getContext().getCab()).overrideDestroy=true;
    getContext().setCab(new CutCab().setFragment(getFragment()).setFiles(getFiles()).start());
    return super.onActionItemClicked(actionMode,menuItem);
  }
 else   if (menuItem.getItemId() == R.id.delete) {
    CustomDialog.create(getContext(),R.string.delete,getFiles().size() == 1 ? getContext().getString(R.string.confirm_delete,getFiles().get(0).getName()) : getContext().getString(R.string.confirm_delete_xfiles,getFiles().size()),R.string.yes,0,R.string.no,new CustomDialog.SimpleClickListener(){
      @Override public void onPositive(      int which,      View view){
        deleteNextFile();
      }
    }
).show(getContext().getFragmentManager(),"String_Node_Str");
    return false;
  }
 else   if (menuItem.getItemId() == R.id.selectAll) {
    List<File> newSelected=getFragment().mAdapter.checkAll();
    addFiles(newSelected);
    invalidate();
    return true;
  }
 else   if (menuItem.getItemId() == R.id.share) {
    Intent intent=new Intent().setAction(Intent.ACTION_SEND_MULTIPLE);
    String mime=null;
    for (    File fi : getFiles()) {
      if (mime == null)       mime=fi.getMimeType();
 else       if (!fi.getMimeType().equals(mime)) {
        mime="String_Node_Str";
        break;
      }
    }
    intent.setType(mime);
    ArrayList<Uri> files=new ArrayList<Uri>();
    for (    File fi : getFiles())     files.add(Uri.fromFile(fi.toJavaFile()));
    intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,files);
    try {
      getContext().startActivity(intent);
    }
 catch (    ActivityNotFoundException e) {
      Toast.makeText(getContext(),R.string.no_apps_for_sharing,Toast.LENGTH_SHORT).show();
    }
  }
 else   if (menuItem.getItemId() == R.id.zip) {
    if (menuItem.getTitle().toString().equals(getContext().getString(R.string.unzip))) {
      Unzipper.unzip(getFragment(),getFiles(),new Zipper.ZipCallback(){
        @Override public void onComplete(){
          MainCab.super.onActionItemClicked(actionMode,menuItem);
        }
      }
);
    }
 else {
      Zipper.zip(getFragment(),getFiles(),new Zipper.ZipCallback(){
        @Override public void onComplete(){
          MainCab.super.onActionItemClicked(actionMode,menuItem);
        }
      }
);
    }
    return true;
  }
  return false;
}