====================
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: (identifier))
    body: (contract_body)))

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

contract Example is NotAContract{}

---

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

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

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

---

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