code: func (t *ParseTree) Handle(tok Token, fn func(*Parser) (Statement, error)) {
  	// Verify that there is no conflict for this token in this parse tree.
  	if _, conflict := t.Tokens[tok]; conflict {
  		panic(fmt.Sprintf("conflict for token %s", tok))
  	}
  
  	if _, conflict := t.Handlers[tok]; conflict {
  		panic(fmt.Sprintf("conflict for token %s", tok))
  	}
  
  	if t.Handlers == nil {
  		t.Handlers = make(map[Token]func(*Parser) (Statement, error))
  	}
  	t.Handlers[tok] = fn
  	t.Keys = append(t.Keys, tok.String())
  }
docs: // Handle registers a handler to be invoked when seeing the given token.