anchor.diff:  externalFunction        :   Function functionName libInfo procedureParameters? functionType?;
   libInfo                 :   Lib StringLiteral (Alias StringLiteral)?;
   
  +// 5.2.4.2 Implements Directive
  +implementsDirective     :   Implements classTypeName;
  +
   // 5.2.4.3 Event Declaration
  -eventDeclaration    :   (Public )? Event ID ('(' ( positionalParameters )? ')')?;
  +eventDeclaration        :   Public? Event identifier eventParameterList?;
  +eventParameterList      :   '(' positionalParameters? ')';
  +
  +// 5.3 Module Code Section Structure
  +// TODO implement LINE-START / LINE-END
  +moduleCodeSection
  +    :   subroutineDeclaration
  +    |   functionDeclaration
  +    |   propGetDeclaration
  +    |   propLhsDeclaration
  +    |   implementsDirective
  +    ;
   
   // 5.3.1 Procedure Declarations
   subroutineDeclaration
  -    :   procedureScope? Static? Sub identifier procedureParameters? Static? EOS
  -        End Sub EOS;
  +    :   procedureScope? Static? Sub subroutineName procedureParameters? Static? EOS
  +        procedureBody?
  +        endLabel? End Sub EOS;
   
   functionDeclaration
  -    :   procedureScope? Static? Function ID procedureParameters? functionType? Static? EOS
  -        End Function EOS;
  +    :   procedureScope? Static? Function functionName procedureParameters? functionType? Static? EOS
  +        procedureBody?
  +        endLabel? End Function EOS;
   
   propGetDeclaration
  -    :   procedureScope? Static? Property Get ID procedureParameters? functionType? Static? EOS
  -        End Property;
  +    :   procedureScope? Static? Property Get functionName procedureParameters? functionType? Static? EOS
  +        procedureBody?
  +        endLabel? End Property;
   
   propLhsDeclaration
  -    :   procedureScope? Static? Property (Set | Let) ID procedureParameters? functionType? Static? EOS
  -        End Property;
  +    :   procedureScope? Static? Property (Set | Let) subroutineName procedureParameters? functionType? Static? EOS
  +        procedureBody?
  +        endLabel? End Property;
  +
  +endLabel            :   statementLabelDefinition;
  +//procedureTail       :   TODO
   
   // 5.3.1.1 Procedure Scope
   procedureScope
  
positive.code:     |   DefVar
      ;
  
  // 5.2.4.2 Implements Directive
  implementsDirective         :   Implements ID;
  
  // 5.2.3.1 Module Variable Declaration Lists
  variableDeclaration :   (Global | Public | Private | Dim) Shared? variableDclList;
  variableDclList     :   (variableDcl | witheventsVariableDcl) (',' (variableDcl | witheventsVariableDcl))*; 
  
negative.code: fixedLengthStringSpec : String '*' stringLength;
  stringLength        :   constantName | IntegerLiteral;
  constantName        :   simpleNameExpression;
  
  // 5.2.3.2 Const Declarations
  constDeclaration    :   (Global | Public | Private)? Const constItemList;
  