code: func (t *ParseTree) Group(tokens ...Token) *ParseTree {
  	for _, tok := range tokens {
  		// Look for the parse tree for this token.
  		if subtree := t.Tokens[tok]; subtree != nil {
  			t = subtree
  			continue
  		}
  
  		// No subtree exists yet. Verify that we don't have a conflicting
  		// statement.
  		if _, conflict := t.Handlers[tok]; conflict {
  			panic(fmt.Sprintf("conflict for token %s", tok))
  		}
  
  		// Create the new parse tree and register it inside of this one for
  		// later reference.
  		newT := &ParseTree{}
  		if t.Tokens == nil {
  			t.Tokens = make(map[Token]*ParseTree)
  		}
  		t.Tokens[tok] = newT
  		t.Keys = append(t.Keys, tok.String())
  		t = newT
  	}
  	return t
  }
docs: // Group groups together a set of related handlers with a common token prefix.