anchor.diff:  
       rule module_declaration:
           "module" [ LBRACKET "Module" RBRACKET ] module_name [ HASH  argument_list ]
  -        LPAREN [ Ifc_type ] [ ifc_name ] [ STAR ] RPAREN provisos
  +        LPAREN [ Type_item_or_name ] [ VAR ] [ STAR ] RPAREN provisos
           module_item
           "endmodule" [ COLON module_name]
   
       rule package_statement:
           "package" Package_name SEMICOLON
  -        ( typedef_statement
  -        | import_statement
  -        | interface_declaration
  -        | module_declaration
  -        | variable_declaration
  -        | attribute_statement
  -        | function_statement
  -        )*
  +        package_statement_list
           "endpackage" [ COLON  Package_name]
   
  -#    Ifc_type ifc_name LARROW module_name argument_list SEMICOLON
  -#    Ifc_type ifc_name LARROW module_name argument_list COMMA2
  +#    Type_item_or_name VAR LARROW module_name argument_list SEMICOLON
  +#    Type_item_or_name VAR LARROW module_name argument_list COMMA2
   #        "clocked_by" clock_name COMMA2
   #        "reset_by" reset_name ] RPAREN SEMICOLON
   
       rule tagged_match_arg:
           VAR COLON DOT VAR
  -#term<<[]>>
   
       rule rule_predicate:
           LPAREN
  
positive.code: 
      rule typedef_statement:
          "typedef" 
          ( ( "type" | Type_item_or_name | NUM ) [Type_name]
              [ HASH LPAREN struct_arg (COMMA struct_arg)* RPAREN ] SEMICOLON
          | "enum" LBRACE Elements ( COMMA Elements )* RBRACE Type_name
  
negative.code:         | "struct" LBRACE
              ( Type_item_or_name VAR SEMICOLON )* RBRACE
              Type_name [ HASH LPAREN struct_arg (COMMA struct_arg)* RPAREN ]
              [ deriving_clause ] SEMICOLON
          | "union" "tagged"
              LBRACE (Member)+ RBRACE
              Type_name [ HASH [ "numeric" ] "type" type_variable ]
              [ deriving_clause ] SEMICOLON
          )
  
  #    "Type" variable_name  EQUAL "Type" LBRACE member COLON expression RBRACE
  