anchor.diff:          | method_declarations
           | module_declarations
           | let_statement
  +        | package_statement
   
       rule goal:
           (top_level_statements)* ENDTOKEN
  
positive.code:             [ "reset_by" clock_name] SEMICOLON
          )
  
      rule subinterface_declarations: "SUBINTER"
  
      rule interface_arg:
          "type" Type_name
  
      rule interface_declarations:
          "interface" ifc_name 
          ( SEMICOLON
              ( method_declarations
              #| subinterface_declarations
              )*
              "endinterface" [ COLON ifc_name ]
          | HASH LPAREN interface_arg ( COMMA interface_arg)* RPAREN SEMICOLON
              ( method_declarations
              #| subinterface_declarations
              )*
              "endinterface" [ COLON ifc_name ]
          )
  
negative.code:               #return_statement
                "endmethod" [ COLON method_name]
              ]
          | ("Type" | Type_item_basic | Type_named_sub) method_name  [ argument_list ]
              [ "if"  LPAREN method_predicate RPAREN ] SEMICOLON
              [ method_body_statements
                "endmethod" [ COLON method_name]
              ]
          | [ output_port ] method_name
              LPAREN LBRACE input_ports RBRACE RPAREN
              [ enable enable_port ]
  