def filter(self, domain=None,
               registration_status=REGISTERED,
               name=None,
               *args, **kwargs):
        """Filters workflows based on the ``domain`` they belong to,
        their ``status``, and/or their ``name``

        :param      domain: domain the workflow type belongs to
        :type       domain: swf.models.domain.Domain

        :param      registration_status: workflow type registration status to match,
                                         Valid values are:
                                         * ``swf.constants.REGISTERED``
                                         * ``swf.constants.DEPRECATED``

        :type       registration_status: string

        :param      name: workflow type name to match
        :type       name: string

        :returns: list of matched WorkflowType models objects
        :rtype: list
        """
        # As WorkflowTypeQuery has to be built against a specific domain
        # name, domain filter is disposable, but not mandatory.
        domain = domain or self.domain
        return [self.to_WorkflowType(domain, wf) for wf in
                self._list_items(domain.name, registration_status, name=name)]