anchor.diff:          COMMA
         )
       ;
  +
   directiveStatement returns [Directive directive]
       : d=directive 
         { $directive=$d.directive; } 
  
positive.code: memberBody[StaticType type] returns [Block block]
        //options { memoize=true; }
      : 
      {$type instanceof BaseType}? 
      (
        (namedArguments)
        => namedArguments //first try to match with no directives or control structures
  
negative.code:     ;
  
  statement returns [Statement statement]
      : directiveStatement
        { $statement = $directiveStatement.directive; }
      | controlStatement
        { $statement = $controlStatement.controlStatement; }
      | expressionOrSpecificationstatement
        { $statement = $expressionOrSpecificationstatement.statement; }
      ;
  
  expressionOrSpecificationstatement returns [Statement statement]
      @init { SpecifierStatement ss=new SpecifierStatement(null); 
              ExpressionStatement es=new ExpressionStatement(null); }
      : expression 
        { es.setExpression($expression.expression);
          $statement = es; }
        (
          { $expression.expression.getTerm() instanceof BaseMemberExpression }?=>
          specifier
          { ss.setSpecifierExpression($specifier.specifierExpression);
            ss.setBaseMemberExpression((BaseMemberExpression)$expression.expression.getTerm()); 
            $statement = ss; }
        )?
        (
          SEMICOLON
        | { displayRecognitionError(getTokenNames(), 
  