def METHOD_NAME(self, type=TAG_ALL):
    target = IRelatable(self._adapted)
    METHOD_NAME = getattr(self._adapted, 'dynamicview_relations', {})
    # Group methods by type to allow easy tagging of multiple types
    # per yielded relation. This allows supporting the special TAG_ALL
    # type without duplicating work or relations.
    types_by_methodname = collections.defaultdict(set)
    if type == TAG_ALL:
        for ltype, lmethodnames in METHOD_NAME.items():
            for lmethodname in lmethodnames:
                types_by_methodname[lmethodname].add(ltype)
    else:
        for lmethodname in METHOD_NAME.get(type, []):
            types_by_methodname[lmethodname].add(type)
    for methodname, type_set in types_by_methodname.items():
        for remote in self.get_remote_relatables(methodname):
            yield BaseRelation(target, remote, list(type_set))