anchor.diff:  	| NEW WS valueStmt # vsNew
   	| implicitCallStmt_Value # vsValueCalls
   	| typeOfStmt # vsTypeOf
  -    | LPAREN WS? valueStmt (WS? ',' WS? valueStmt)* RPAREN # vsStruct
  +	| LPAREN WS? valueStmt (WS? ',' WS? valueStmt)* RPAREN # vsStruct
   	| implicitCallStmt_Value WS? ASSIGN WS? valueStmt # vsAssign
   	| valueStmt WS? PLUS WS? valueStmt # vsAdd
   	| PLUS WS? valueStmt # vsPlus
  
positive.code: timeStmt : TIME WS? EQ WS? valueStmt;
  
  typeStmt : 
      (visibility WS)? TYPE WS ambiguousIdentifier NEWLINE+ 
      (typeStmt_Element)*
      END_TYPE
  ;
  
  typeStmt_Element : ambiguousIdentifier (WS? LPAREN (WS? subscripts)? WS? RPAREN)? (WS asTypeClause)? NEWLINE+;
  
negative.code: filecopyStmt : FILECOPY WS valueStmt WS? ',' WS? valueStmt;
  
  forEachStmt : 
  	FOR WS EACH WS ambiguousIdentifier typeHint? WS IN WS valueStmt NEWLINE+ 
  	(block NEWLINE+)?
  	NEXT (WS ambiguousIdentifier)?
  ;
  
  forNextStmt : 
  	FOR WS ambiguousIdentifier typeHint? (WS asTypeClause)? WS? EQ WS? valueStmt WS TO WS valueStmt (WS STEP WS valueStmt)? NEWLINE+ 
  	(block NEWLINE+)? 
  	NEXT (WS ambiguousIdentifier)?
  ; 
  
  functionStmt :
  	(visibility WS)? (STATIC WS)? FUNCTION WS ambiguousIdentifier (WS? argList)? (WS asTypeClause)? NEWLINE+
  