def _recurse(self, inputs, output):
if inputs:<EOL><INDENT>my_input = inputs[<NUM_LIT:0>]<EOL>name = my_input.name<EOL>if my_input.state:<EOL><INDENT>my_options = my_input.options(self.state)<EOL><DEDENT>else:<EOL><INDENT>my_options = my_input.options<EOL><DEDENT>for option in my_options:<EOL><INDENT>my_output = list(output)<EOL>my_output.append({name: option})<EOL>self._recurse(inputs[<NUM_LIT:1>:], my_output)<EOL><DEDENT><DEDENT>else:<EOL><INDENT>try:<EOL><INDENT>valid, result = self._function(output)<EOL><DEDENT>except ValueError:<EOL><INDENT>raise RuntimeError("<STR_LIT>")<EOL><DEDENT>print(output, valid, result)<EOL><DEDENT>
internal recursion routine called by the run method that generates
        all input combinations