func getFieldByName(fields protoreflect.FieldDescriptors, name string) protoreflect.FieldDescriptor { … } // FieldMaskFromRequestBody creates a FieldMask printing all complete paths from the JSON body. func FieldMaskFromRequestBody(r io.Reader, msg proto.Message) (*field_mask.FieldMask, error) { … } func isProtobufAnyMessage(md protoreflect.MessageDescriptor) bool { … } func isDynamicProtoMessage(md protoreflect.MessageDescriptor) bool { … } // buildPathsBlindly does not attempt to match proto field names to the // json value keys. Instead it relies completely on the structure of // the unmarshalled json contained within in. // Returns a slice containing all subpaths with the root at the // passed in name and json value. func buildPathsBlindly(name string, in interface{ … } type fieldMaskPathItem …