def make_name(self, reserved=[]):
        """
        Autogenerates a :attr:`name` from the :attr:`title`. If the auto-generated name is already
        in use in this model, :meth:`make_name` tries again by suffixing numbers starting with 2
        until an available name is found.

        :param reserved: List or set of reserved names unavailable for use
        """
        if self.title:
            if inspect(self).has_identity:
                def checkused(c):
                    return bool(c in reserved or c in self.reserved_names
                        or self.__class__.query.filter(self.__class__.id != self.id).filter_by(name=c).notempty())
            else:
                def checkused(c):
                    return bool(c in reserved or c in self.reserved_names
                        or self.__class__.query.filter_by(name=c).notempty())
            with self.__class__.query.session.no_autoflush:
                self.name = six.text_type(make_name(self.title_for_name, maxlength=self.__name_length__, checkused=checkused))