code: def with_suffix(self, suffix):
          
          # XXX if suffix is None, should the current suffix be removed?
          drv, root, parts = self._flavour.parse_parts((suffix,))
          if drv or root or len(parts) != 1:
              raise ValueError("Invalid suffix %r" % (suffix))
          suffix = parts[0]
          if not suffix.startswith('.'):
              raise ValueError("Invalid suffix %r" % (suffix))
          name = self.name
          if not name:
              raise ValueError("%r has an empty name" % (self,))
          old_suffix = self.suffix
          if not old_suffix:
              name = name + suffix
          else:
              name = name[:-len(old_suffix)] + suffix
          return self._from_parsed_parts(self._drv, self._root,
                                         self._parts[:-1] + [name])
docs: Return a new path with the file suffix changed (or added, if none).