def write(self):
        """
        write self.contents to self.filename
        self.filename was defined during .read()

        There is no self.changed check because we need to let the caller decide whether or not to write. This is
            useful if you want to force an overwrite of a file that might have been changed on disk even if
            self.contents did not change.
        """
        self.log('Writing {0}'.format(self.filename))
        with open(self.filename, 'w') as handle:
            for this_line in self.contents:
                handle.write(this_line+self.linesep)
        self.changed = False
        return True