title: Protocol Buffers import message depending on another imported message
body: <p>About import statement, google says that <a href="https://developers.google.com/protocol-buffers/docs/proto#services" rel="nofollow">https://developers.google.com/protocol-buffers/docs/proto#services</a> :</p>
  
  <blockquote>
    <p>You can use definitions from other .proto files by importing them. To import another .proto's definitions, you add an import statement to the top of your file.
    By default you can only use definitions from directly imported .proto files.</p>
  </blockquote>
  
  <p>...Sounds great, but what about that :</p>
  
  <p>1.proto :</p>
  
  <pre><code>message M1{
     required string foo = 1;
  }
  </code></pre>
  
  <p>2.proto :</p>
  
  <pre><code>import "1.proto";
  message M2{
      required M1 m_1 = 1;
  }
  </code></pre>
  
  <p>3.proto :</p>
  
  <pre><code>import "2.proto";
  message M3{
      required M2 m_2 = 1;
  }
  </code></pre>
  
  <p>So, When parsing 3.proto, M1 shouldn't be accessible because 1.proto is not imported publicly from 2.proto.
  However, M2 should be, because it is directely imported from 3.proto...</p>
  
  <p>Thus what about M2.m_1 ? how a compiler should generate classes ?</p>