code: func (r *RawConfig) GobEncode() ([]byte, error) {
  	r.lock.Lock()
  	defer r.lock.Unlock()
  
  	data := gobRawConfig{
  		Key: r.Key,
  		Raw: r.Raw,
  	}
  
  	var buf bytes.Buffer
  	if err := gob.NewEncoder(&buf).Encode(data); err != nil {
  		return nil, err
  	}
  
  	return buf.Bytes(), nil
  }
docs: // GobEncode is a custom Gob encoder to use so that we only include the
  // raw configuration. Interpolated variables and such are lost and the
  // tree of interpolated variables is recomputed on decode, since it is
  // referentially transparent.