def METHOD_NAME(self, REQUEST=None):
    result = []
    try:
        options = tuple(self.manage_options)
    except TypeError:
        options = tuple(self.manage_options())
    for d in options:
        filter_ = d.get('filter', None)
        if filter_ is not None and not filter_(self):
            continue
        path = d.get('path', None)
        if path is None:
            path = d['action']
        o = self.restrictedTraverse(path, None)
        if o is None:
            continue
        result.append(d)
    return result