anchor.diff:      ;
   
   // 5.3.1.3 Procedure Names
  -subroutineName  :   ID | prefixedName;
  -functionName    :   typedName | ID | prefixedName;
  +subroutineName  :   identifier | prefixedName;
  +functionName    :   typedName | identifier | prefixedName;
   prefixedName    :   eventHandlerName | implementedName | lifecycleHandlerName;
   
   // 5.3.1.4 Function Type Declarations
  -functionType    :   As ID arrayDesignator?;
  +functionType    :   As typeExpression arrayDesignator?;
   arrayDesignator :   '(' ')';
   
   // 5.3.1.5 Parameter Lists
  
positive.code: externalFunction        :   Function functionName libInfo procedureParameters? functionType?;
  libInfo                 :   Lib StringLiteral (Alias StringLiteral)?;
  
  // 5.2.4.3 Event Declaration
  eventDeclaration    :   (Public )? Event ID ('(' ( positionalParameters )? ')')?;
  
  // 5.3.1 Procedure Declarations
  subroutineDeclaration
      :   procedureScope? Static? Sub identifier procedureParameters? Static? EOS
          End Sub EOS;
  
  functionDeclaration
      :   procedureScope? Static? Function ID procedureParameters? functionType? Static? EOS
          End Function EOS;
  
  propGetDeclaration
      :   procedureScope? Static? Property Get ID procedureParameters? functionType? Static? EOS
          End Property;
  
  propLhsDeclaration
      :   procedureScope? Static? Property (Set | Let) ID procedureParameters? functionType? Static? EOS
          End Property;
  
  // 5.3.1.1 Procedure Scope
  procedureScope
  
negative.code: fixedLengthStringSpec : String '*' stringLength;
  stringLength        :   constantName | IntegerLiteral;
  constantName        :   simpleNameExpression;
  
  // 5.2.3.2 Const Declarations
  constDeclaration    :   (Global | Public | Private)? Const constItemList;
  