code: func (w *Word) Lit() string {
  	// In the usual case, we'll have either a single part that's a literal,
  	// or one of the parts being a non-literal. Using strings.Join instead
  	// of a strings.Builder avoids extra work in these cases, since a single
  	// part is a shortcut, and many parts don't incur string copies.
  	lits := make([]string, 0, 1)
  	for _, part := range w.Parts {
  		lit, ok := part.(*Lit)
  		if !ok {
  			return ""
  		}
  		lits = append(lits, lit.Value)
  	}
  	return strings.Join(lits, "")
  }
docs: // Lit returns the word as a literal value, if the word consists of *syntax.Lit
  // nodes only. An empty string is returned otherwise. Words with multiple
  // literals, which can appear in some edge cases, are handled properly.
  //
  // For example, the word "foo" will return "foo", but the word "foo${bar}" will
  // return "".