title: Protobuf: Nesting a message of arbitrary type
body: <p>in short, is there a way to define a protobuf Message that contains another Message of arbitrary type? Something like:</p>
  
  <pre><code>message OuterMsg {
      required int32 type = 1;
      required Message nestedMsg = 2; //Any sort of message can go here
  }
  </code></pre>
  
  <p>I suspect that there's a way to do this because in the various protobuf-implementations, compiled messages extend from a common <code>Message</code> base class.</p>
  
  <p>Otherwise I guess I have to create a common base Message for all sorts of messages like this:</p>
  
  <pre><code>message BaseNestedMessage {
      extensions 1 to max;
  }
  </code></pre>
  
  <p>and then do</p>
  
  <pre><code>message OuterMessage {
      required int32 type = 1;
      required BaseNestedMessage nestedMsg = 2;
  }
  </code></pre>
  
  <p>Is this the only way to achieve this?</p>