code: func CoalesceValues(chrt *chart.Chart, vals *chart.Config) (Values, error) {
  	cvals := Values{}
  	// Parse values if not nil. We merge these at the top level because
  	// the passed-in values are in the same namespace as the parent chart.
  	if vals != nil {
  		evals, err := ReadValues([]byte(vals.Raw))
  		if err != nil {
  			return cvals, err
  		}
  		cvals, err = coalesce(chrt, evals)
  		if err != nil {
  			return cvals, err
  		}
  	}
  
  	var err error
  	cvals, err = coalesceDeps(chrt, cvals)
  	return cvals, err
  }
docs: // CoalesceValues coalesces all of the values in a chart (and its subcharts).
  //
  // Values are coalesced together using the following rules:
  //
  //	- Values in a higher level chart always override values in a lower-level
  //		dependency chart
  //	- Scalar values and arrays are replaced, maps are merged
  //	- A chart has access to all of the variables for it, as well as all of
  //		the values destined for its dependencies.