title: xext grammar with chosen predicates
body: <p>I am trying to understand a xtext grammar I have found (below). I have two questions:</p>
  
  <ul>
  <li>The XFeatureCall has return Type XExpression but this is overruled by {XFeatureCall} so I could set "returns XFeatureCall" as well?. Or is it actually necessary to do it this way?</li>
  <li>Line 8 and 14 start with "=>". Are these "chosen predicates" or something else that did not come to my attention so far? I could not find this variation of chosen predicates in the xtext documentation. So I would appreciate clarification in its application.</li>
  </ul>
  
  <p>xtext grammar:</p>
  
  <pre><code>StaticEquals:':=';
  XFeatureCall returns XExpression:
      // Same as Xbase...
      {XFeatureCall}
      (declaringType=[JvmDeclaredType|StaticQualifier])?
      ('&lt;' typeArguments+=JvmArgumentTypeReference (',' typeArguments+=JvmArgumentTypeReference)* '&gt;')? 
      (feature=[JvmIdentifiableElement|IdOrSuper]|'class') 
      (=&gt;explicitOperationCall?='(' 
          (
              featureCallArguments+=XShortClosure
            | featureCallArguments+=XExpression (',' featureCallArguments+=XExpression)*
          )? 
      ')')?
      =&gt;featureCallArguments+=XClosure?
      // ... Except with this additional optional clause that allows static members to be set with := operator
      ({XAssignment.assignable = current} StaticEquals value = XAssignment)?;
  </code></pre>