def _get_all(self, node, name, max_depth, shortcuts):
if max_depth is None:<EOL><INDENT>max_depth = float('<STR_LIT>')<EOL><DEDENT>if isinstance(name, list):<EOL><INDENT>split_name = name<EOL><DEDENT>elif isinstance(name, tuple):<EOL><INDENT>split_name = list(name)<EOL><DEDENT>elif isinstance(name, int):<EOL><INDENT>split_name = [name]<EOL><DEDENT>else:<EOL><INDENT>split_name = name.split('<STR_LIT:.>')<EOL><DEDENT>for idx, key in enumerate(split_name):<EOL><INDENT>_, key = self._translate_shortcut(key)<EOL>_, key = self._replace_wildcards(key)<EOL>split_name[idx] = key<EOL><DEDENT>return self._backwards_search(node, split_name, max_depth, shortcuts)<EOL>
Searches for all occurrences of `name` under `node`.

        :param node:

            Start node

        :param name:

            Name what to look for can be longer and separated by colons, i.e.
            `mygroupA.mygroupB.myparam`.

        :param max_depth:

            Maximum depth to search for relative to start node.

        :param shortcuts:

            If shortcuts are allowed

        :return:

            List of nodes that match the name, empty list if nothing was found.