code: func (k *Key) String() string {
  	if len(k.pairs)%2 != 0 {
  		panic("odd") // never happens, validated by KeySet.Key(...) constructor
  	}
  	sb := strings.Builder{}
  	sb.WriteRune('[')
  	for i := 0; i < len(k.pairs)/2; i++ {
  		kind, id := k.pairs[i*2], k.pairs[i*2+1]
  		if i != 0 {
  			sb.WriteString(", ")
  		}
  		sb.WriteString(kind)
  		sb.WriteRune('(')
  		sb.WriteString(strconv.Quote(id))
  		sb.WriteRune(')')
  	}
  	sb.WriteRune(']')
  	return sb.String()
  }
docs: // String is part of starlark.Value interface.
  //
  // Returns [kind1("id1"), kind2("id2"), ...]. Must not be parsed, only for
  // logging.