code: func DeepUnmarshalJSON(r io.Reader, msg proto.Message) error {
  	b, err := ioutil.ReadAll(r)
  	if err != nil {
  		return err
  	}
  
  	root, err := jsonToMap(b)
  	if err != nil {
  		return err
  	}
  
  	return recursivelyPopulateMessageFromTree(root, msg)
  }
docs: // DeepUnmarshalJSON takes JSON output as generated by DeepMarshalJSON and decodes it into msg
  // This includes re-marshaling the expanded nested elements to binary form