code: func DeepMerge(b, a Metadata) Metadata {
  	out := Metadata{}
  	for k, v := range b {
  		out[k] = v
  	}
  	for k, v := range a {
  
  		maybe, err := Metadatify(v)
  		if err != nil {
  			// if the new value is not meta. just overwrite the dest vaue
  			if out[k] != nil {
  				log.Debugf("Overwriting key: %s, old: %s, new: %s", k, out[k], v)
  			}
  			out[k] = v
  			continue
  		}
  
  		// it is meta. What about dest?
  		outv, exists := out[k]
  		if !exists {
  			// the new value is meta, but there's no dest value. just write it
  			out[k] = v
  			continue
  		}
  
  		outMetadataValue, err := Metadatify(outv)
  		if err != nil {
  			// the new value is meta and there's a dest value, but the dest
  			// value isn't meta. just overwrite
  			out[k] = v
  			continue
  		}
  
  		// both are meta. merge them.
  		out[k] = DeepMerge(outMetadataValue, maybe)
  	}
  	return out
  }
docs: // DeepMerge merges the second Metadata parameter into the first.
  // Nested Metadata are merged recursively. Primitives are over-written.