def findChangelist(self, description=None):
        """Gets or creates a Changelist object with a description

        :param description: The description to set or lookup
        :type description: str
        :returns: :class:`.Changelist`
        """
        if description is None:
            change = Default(self)
        else:
            if isinstance(description, six.integer_types):
                change = Changelist(description, self)
            else:
                pending = self.run(['changes', '-l', '-s', 'pending', '-c', str(self._client), '-u', self._user])
                for cl in pending:
                    if cl['desc'].strip() == description.strip():
                        LOGGER.debug('Changelist found: {}'.format(cl['change']))
                        change = Changelist(int(cl['change']), self)
                        break
                else:
                    LOGGER.debug('No changelist found, creating one')
                    change = Changelist.create(description, self)
                    change.client = self._client
                    change.save()

        return change