title: What's the purpose of ProtoMessage method?
body: <p>when I generate go code from a protocol buffer file, I noticed that each of the generated structs implement the Message interface, <a href="https://github.com/golang/protobuf/blob/master/proto/lib.go#L277" rel="noreferrer">https://github.com/golang/protobuf/blob/master/proto/lib.go#L277</a></p>
  
  <p>For an example of the code that is generated, see <a href="https://github.com/google/go-genproto/blob/master/googleapis/rpc/status/status.pb.go#L97" rel="noreferrer">https://github.com/google/go-genproto/blob/master/googleapis/rpc/status/status.pb.go#L97</a></p>
  
  <p>Clearly, the other methods on Message interface, String() and Reset(), have an obvious purpose and the concrete implementation example makes that clear. However, I don't understand the purpose of the ProtoMessage() method. The method takes no parameters and returns no arguments, so why is it there?</p>