code: func (k ResourceTransformationKey) key() string {
  	if len(k.elements) == 0 {
  		return k.name
  	}
  
  	sb := bp.GetBuffer()
  	defer bp.PutBuffer(sb)
  
  	sb.WriteString(k.name)
  	for _, element := range k.elements {
  		hash, err := hashstructure.Hash(element, nil)
  		if err != nil {
  			panic(err)
  		}
  		sb.WriteString("_")
  		sb.WriteString(strconv.FormatUint(hash, 10))
  	}
  
  	return sb.String()
  }
docs: // Do not change this without good reasons.