contract C1 {
    // non-payable constructor
    constructor() public {}

    fallback() external {}

    receive() external payable {}
}

contract C2 {
    // payable constructor
    constructor() public payable {}

    fallback() external {}

    receive() external payable {}
}

contract C3 {
    // internal constructor
    constructor() internal {}

    modifier modifierNoArgs() { _; }
    modifier modifierWithArgs(uint a) { _; }

    function f() public modifierNoArgs modifierWithArgs(block.timestamp) {}
}

contract C4 {
    function hasArgs(uint, uint) public {}
    function hasReturns() public returns (uint) {}
    function hasArgsAndReturns(uint a, uint b) public returns (uint c) {}
}

abstract contract C5 {
    function payableFunc() public payable {}
    function externalFunc() external {}
    function publicFunc() public {}
    function internalFunc() internal {}
    function privateFunc() private {}
    function pureFunc() public pure {}
    function viewFunc() public view {}
    function abstractFunc() public virtual;
}

abstract contract C6 {
    function abstractFunc() public virtual;
    function abstractFunc2() public virtual;
}

abstract contract C7 {
    function abstractFunc3() public virtual;
}

contract C8 is C5, C6, C7 {
    function abstractFunc() public virtual override(C5, C6) {}
    function abstractFunc2() public virtual override(C6) {}
    function abstractFunc3() public virtual override {}
}