<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def destroy(self, prefix_names=None):
 """ Destroy all the given prefixes and remove any left files if no more prefixes are left Args: prefix_names(list of str):
 list of prefix names to destroy, if None passed (default) will destroy all of them """

        if prefix_names is None:
            self.destroy(prefix_names=self.prefixes.keys())
            return

        for prefix_name in prefix_names:
            if prefix_name == 'current' and self.current in prefix_names:
                continue

            elif prefix_name == 'current':
                prefix_name = self.current

            self.get_prefix(prefix_name).destroy()
            self.prefixes.pop(prefix_name)
            if self.prefixes:
                self._update_current()

        if not self.prefixes:
            shutil.rmtree(self.path)