code: func (k *KeySet) Key(pairs ...string) (*Key, error) {
  	switch {
  	case len(pairs) == 0:
  		return nil, fmt.Errorf("empty key path")
  	case len(pairs)%2 != 0:
  		return nil, fmt.Errorf("key path %q has odd number of components", pairs)
  	}
  
  	for _, s := range pairs {
  		if strings.IndexByte(s, 0) != -1 {
  			return nil, fmt.Errorf("bad key path element %q, has zero byte inside", s)
  		}
  	}
  
  	keyID := strings.Join(pairs, "\x00")
  	if key := k.keys[keyID]; key != nil {
  		return key, nil
  	}
  
  	if k.keys == nil {
  		k.keys = make(map[string]*Key, 1)
  	}
  
  	key := &Key{set: k, pairs: pairs, idx: len(k.keys), cmp: keyID}
  	k.keys[keyID] = key
  	return key, nil
  }
docs: // Key returns a *Key given a list of (kind, id) pairs.
  //
  // Assumes strings don't have zero bytes. No other restrictions.