def METHOD_NAME(self, name, cat=None):
    self.confirm_no_error()
    # Check if it's in a namespace or class.
    bits = name.split('::')
    first = bits[0]
    rest = '::'.join(bits[1:])
    member = self._get_dict_members(cat).get(first, self.NoSuchMember)
    # Raise any errors that are returned.
    if member in set([self.NoSuchMember, self.Duplicate]):
        raise member()
    if rest:
        return member.METHOD_NAME(rest, cat=cat)
    return member