title: Legacy array notation not allowed on variable-arity parameter
body: <p>I'm asking this out of curiosity as I have not found a question to this specific compile error on StackOverflow:</p>
  <blockquote>
  <p>Legacy array notation not allowed on variable-arity parameter</p>
  </blockquote>
  <p>I've come across legacy notation when seeing some code containing a signature like this:</p>
  <p><code>private void a(int ints[]){/*...*/}</code></p>
  <p>So I played around a bit until I encountered the compile error in the following samples.</p>
  <pre><code>// this method compiles as expected
  private void method1(int[][] ints){ /*...*/ }
  
  // this too
  private void method2(int[]... ints){ /*...*/ }
  
  // this does to, but makes use of legacy array notation
  private void method3(int ints[][]){ /*...*/ }
  
  // this still does, even when mixing up the notations
  private void method4(int[] ints[]){ /*...*/ }
  
  // this however fails to compile
  private void method5(int... ints[]){ /*...*/ }
  </code></pre>
  <p>Is there a specific reason, that the language designer decided to implement it that way? To not allow varargs with legacy array notation?</p>
  <blockquote>
  <p><strong>NOTE</strong>: I understand the legacy notation</p>
  </blockquote>