anchor.diff:          END
       ;
   
  +namedRef
  +    :   name=IDENT reference
  +    ;
  +
  +anonymousRef
  +    :   reference
  +    ;
  +
  +reference
  +    :   REF funcCall outputSelector
  +    ;
  +
  +outputSelector
  +    :   (LSQUARE selectedOutput=IDENT RSQUARE)?
  +    ;
  +
   funcDeclInit
  -    :   name=IDENT fullyQualifiedType ( LSQUARE activeObject=IDENT RSQUARE )? ('(' arguments ')')
  -    ;
  -
  -funcCall : fullyQualifiedType ( LSQUARE activeObject=IDENT RSQUARE )? ('(' arguments ')')?;
  +    :   name=IDENT fullyQualifiedType ( LSQUARE activeObject=IDENT RSQUARE )? ('(' arguments? ')')
  +    ;
  +
  +funcCall : fullyQualifiedType ( LSQUARE activeObject=IDENT RSQUARE )? ('(' arguments? ')')?;
   
   funcDecl
       :   name=IDENT fullyQualifiedType ( LSQUARE activeObject=IDENT RSQUARE )?
  
positive.code:     |   funcDeclInit NEWLINE
      |   funcDecl NEWLINE
      |   anonExpr
      ;
  
  expr : '(' expr ')'						      #parensExpr
  
negative.code: 	 |  expr (GT | GTE | LT | LTE) expr       #comparisonExpr
  	 |  expr ( EQ | NEQ ) expr                #equalityExpr
  	 |  fullyQualifiedType                    #typeExpr
  	 |  anonymousRef                          #anonRefExpr
  	 |  funcCall                              #inlineFuncCall
  	 |  path                                  #pathExpr
  	 |  listLiteral                           #listExpr
  	 |	NUMBER 								  #numExpr
  	 |  BOOLEAN_LITERAL						  #boolExpr
  	 |  STRING_LITERAL                        #stringExpr
  