nodes: 0, module; 1, function_definition; 2, function_name:append_responder; 3, parameters; 4, block; 5, identifier:self; 6, identifier:matcher; 7, list_splat_pattern; 8, dictionary_splat_pattern; 9, expression_statement; 10, return_statement; 11, identifier:args; 12, identifier:kwargs; 13, comment:"""Add a responder of last resort.
  
          Like `.autoresponds`, but instead of adding a responder to the top of
          the stack, add it to the bottom. This responder will be called if no
          others match.
          """; 14, call; 15, attribute; 16, argument_list; 17, identifier:self; 18, identifier:_insert_responder; 19, string:"bottom"; 20, identifier:matcher; 21, list_splat; 22, dictionary_splat; 23, identifier:args; 24, identifier:kwargs
code: def append_responder(self, matcher, *args, **kwargs):
          """Add a responder of last resort.
  
          Like `.autoresponds`, but instead of adding a responder to the top of
          the stack, add it to the bottom. This responder will be called if no
          others match.
          """
          return self._insert_responder("bottom", matcher, *args, **kwargs)