Remove all occurrences of 'line' from contents
            where 'line' is an entire line or a list of lines.

        Return true if the file was changed by rm(), False otherwise.

        Multi-line strings are converted to a list delimited by new lines.

        :param line: String, or List of Strings; each string represents an entire line to be removed from file.
        :return: Boolean, whether contents were changed.

def rm(self, line):
        """
        Remove all occurrences of 'line' from contents
            where 'line' is an entire line or a list of lines.

        Return true if the file was changed by rm(), False otherwise.

        Multi-line strings are converted to a list delimited by new lines.

        :param line: String, or List of Strings; each string represents an entire line to be removed from file.
        :return: Boolean, whether contents were changed.
        """
        self.log('rm({0})'.format(line))
        if line is False:
            return False
        if isinstance(line, str):
            line = line.split('\n')
        if not isinstance(line, list):
            raise TypeError("Parameter 'line' not a 'string' or 'list', is {0}".format(type(line)))
        local_changes = False
        for this in line:
            if this in self.contents:
                while this in self.contents:
                    self.log('Removed "{0}" from position {1}'.format(this, self.contents.index(this)))
                    self.contents.remove(this)
                    self.changed = local_changes = True
            else:
                self.log('"{0}" not in {1}'.format(this, self.filename))
        if self.sorted and local_changes:
            self.sort()
        return local_changes