def split_recursive(self, decl_string):
assert self.has_pattern(decl_string)<EOL>to_go = [decl_string]<EOL>while to_go:<EOL><INDENT>name, args = self.split(to_go.pop())<EOL>for arg in args:<EOL><INDENT>if self.has_pattern(arg):<EOL><INDENT>to_go.append(arg)<EOL><DEDENT><DEDENT>yield name, args<EOL><DEDENT>
implementation details