func MessageDescriptorProto(m proto.GeneratedMessage) (*descriptorpb.FileDescriptorProto, *descriptorpb.DescriptorProto) {
	rawDesc, idxs := MessageRawDescriptor(m)
	if rawDesc == nil || idxs == nil {
		return nil, nil
	}
	fd := deriveFileDescriptor(rawDesc)
	md := fd.MessageType[idxs[0]]
	for _, i := range idxs[1:] {
		md = md.NestedType[i]
	}
	return fd, md
}
// MessageDescriptorProto returns the file descriptor proto representing
// the message and the message descriptor proto for the message itself.
// The returned proto messages must not be mutated.
MessageDescriptorProto returns the file descriptor proto representing
the message and the message descriptor proto for the message itself.
The returned proto messages must not be mutated.
// MessageDescriptorProto returns the file descriptor proto representing // the message and the message descriptor proto for the message itself . // The returned proto messages must not be mutated .
func MessageDescriptorProto(m proto.GeneratedMessage) (*descriptorpb.FileDescriptorProto, *descriptorpb.DescriptorProto) {
	rawDesc, idxs := MessageRawDescriptor(m)
	if rawDesc == nil || idxs == nil {
		return nil, nil
	}
	fd := deriveFileDescriptor(rawDesc)
	md := fd.MessageType[idxs[0]]
	for _, i := range idxs[1:] {
		md = md.NestedType[i]
	}
	return fd, md
}
func MessageDescriptorProto ( m proto . GeneratedMessage ) ( * descriptorpb . FileDescriptorProto , * descriptorpb . DescriptorProto ) { rawDesc , idxs := MessageRawDescriptor ( m ) if rawDesc == nil || idxs == nil { return nil , nil } fd := deriveFileDescriptor ( rawDesc ) md := fd . MessageType [ idxs [ 0 ] ] for _ , i := range idxs [ 1 : ] { md = md . NestedType [ i ] } return fd , md }
MessageDescriptorProto returns the file descriptor proto representing
the message and the message descriptor proto for the message itself.
MessageDescriptorProto returns the file descriptor proto representing the message and the message descriptor proto for the message itself .