<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def save(self, filepath=None, overwrite=False, verbose=True):
 """Save as root of a new file. Parameters filepath : Path-like object (optional) Filepath to write. If None, file is created using natural_name. overwrite : boolean (optional) Toggle overwrite behavior. Default is False. verbose : boolean (optional) Toggle talkback. Default is True Returns ------- str Written filepath. """

        if filepath is None:
            filepath = pathlib.Path(".") / self.natural_name
        else:
            filepath = pathlib.Path(filepath)
        filepath = filepath.with_suffix(".wt5")
        filepath = filepath.absolute().expanduser()
        if filepath.exists():
            if overwrite:
                filepath.unlink()
            else:
                raise wt_exceptions.FileExistsError(filepath)

        # copy to new file
        h5py.File(filepath)
        new = Group(filepath=filepath, edit_local=True)
        # attrs
        for k, v in self.attrs.items():
            new.attrs[k] = v
        # children
        for k, v in self.items():
            super().copy(v, new, name=v.natural_name)
        # finish
        new.flush()
        new.close()
        del new
        if verbose:
            print("file saved at", filepath)
        return str(filepath)