================================================================================
Contract
================================================================================

contract Example {}

--------------------------------------------------------------------------------

(source_file
  (contract_declaration
    name: (identifier)
    body: (contract_body)))

================================================================================
Abstract Contract
================================================================================

abstract contract Example {}

--------------------------------------------------------------------------------

(source_file
  (contract_declaration
    name: (identifier)
    body: (contract_body)))

================================================================================
Inheriting contract
================================================================================

contract Example is NotAContract() {}

--------------------------------------------------------------------------------

(source_file
  (contract_declaration
    name: (identifier)
    (inheritance_specifier
      ancestor: (user_defined_type
        (identifier)))
    body: (contract_body)))

================================================================================
Inheriting contract without parentheses
================================================================================

contract Example is NotAContract{}

--------------------------------------------------------------------------------

(source_file
  (contract_declaration
    name: (identifier)
    (inheritance_specifier
      ancestor: (user_defined_type
        (identifier)))
    body: (contract_body)))

================================================================================
Multiple Inheritance
================================================================================

contract Example is NotAContract(), AContract(1) {}

--------------------------------------------------------------------------------

(source_file
  (contract_declaration
    name: (identifier)
    (inheritance_specifier
      ancestor: (user_defined_type
        (identifier)))
    (inheritance_specifier
      ancestor: (user_defined_type
        (identifier))
      ancestor_arguments: (call_argument
        (expression
          (number_literal))))
    body: (contract_body)))
