def trash(self, file) :
if self._should_skipped_by_specs(file):<EOL><INDENT>self.reporter.unable_to_trash_dot_entries(file)<EOL>return<EOL><DEDENT>volume_of_file_to_be_trashed = self.volume_of_parent(file)<EOL>self.reporter.volume_of_file(volume_of_file_to_be_trashed)<EOL>candidates = self._possible_trash_directories_for(<EOL>volume_of_file_to_be_trashed)<EOL>self.try_trash_file_using_candidates(file,<EOL>volume_of_file_to_be_trashed,<EOL>candidates)<EOL>
Trash a file in the appropriate trash directory.
If the file belong to the same volume of the trash home directory it
will be trashed in the home trash directory.
Otherwise it will be trashed in one of the relevant volume trash
directories.

Each volume can have two trash directories, they are
    - $volume/.Trash/$uid
    - $volume/.Trash-$uid

Firstly the software attempt to trash the file in the first directory
then try to trash in the second trash directory.