title: rule has non-LL(*) decision due to recursive rule invocations
body: <p>I have an error (like said in the title) with one rule that i dont know how resolve. </p>
  
  <p>i have written the following rule :</p>
  
  <pre><code>FunctionArguments returns FunctionArgs::IFunctionArguments :
      FunctionArgumentsNormal
      | FunctionArgumentsForIter
      ;
  
  FunctionArgumentsNormal returns FunctionArgs::IFunctionArguments :
      {FunctionArgs::FunctionArguments} args+=Expression (',' args+=Expression)* 
      | {FunctionArgs::FunctionArguments} argNames+=NamedArguments (',' argNames+=NamedArguments)*
      ;
  
  FunctionArgumentsForIter returns FunctionArgs::IFunctionArguments :
      {FunctionArgs::FunctionArgumentsIterator} exp=Expression 'for' iterators=ForIterator
      ;
  </code></pre>
  
  <p>Could you help me to resolve it by left-factoring this expression or give any others solutions please ?</p>