anchor.diff:  // mathematical clauses
   
   affectsClause
  -    :   parameterMode IDENTIFIER (COMMA IDENTIFIER)*
  +    :   parameterMode progNamedExp (COMMA progNamedExp)* SEMICOLON
       ;
   
   requiresClause
  
positive.code: procedureDecl
      :   (recursive=RECURSIVE)? PROCEDURE name=IDENTIFIER
          operationParameterList (COLON type)? SEMICOLON
          (variableDecl)*
          (stmt)*
          END closename=IDENTIFIER SEMICOLON
      ;
  
  operationProcedureDecl
      :   (recursive=RECURSIVE)? OPERATION
          name=IDENTIFIER operationParameterList SEMICOLON
          (requiresClause)?
          (ensuresClause)?
          PROCEDURE
          (variableDecl)*
          (stmt)*
          END closename=IDENTIFIER SEMICOLON
      ;
  
  operationDecl
      :   OPERATION name=IDENTIFIER operationParameterList (COLON type)? SEMICOLON
              (requiresClause)?
              (ensuresClause)?
      ;
  
  performanceOperationDecl
      :   OPERATION name=IDENTIFIER operationParameterList (COLON type)? SEMICOLON
              (ensuresClause)?
              (durationClause)?
              (manipulationDispClause)?
      ;
  
  // facility and enhancements
  
negative.code:     ;
  
  parameterDecl
      :   parameterMode variableDeclGroup
      ;
  
  parameterMode
  