{
    "Function": "slitherConstructorConstantVariables",
    "File": "contracts/tests/Executor.sol",
    "Parent Contracts": [
        "node_modules/@openzeppelin/contracts/access/AccessControl.sol",
        "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol",
        "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol",
        "node_modules/@openzeppelin/contracts/access/AccessControl.sol",
        "node_modules/@openzeppelin/contracts/utils/Context.sol"
    ],
    "High-Level Calls": [],
    "Internal Calls": [],
    "Library Calls": [],
    "Low-Level Calls": [],
    "Code": "contract Executor is AccessControl {\n    constructor() {\n        _setupRole(DEFAULT_ADMIN_ROLE, msg.sender);\n    }\n\n    function execute(address[] calldata targets, bytes[] memory data)\n        external\n        onlyRole(DEFAULT_ADMIN_ROLE)\n    {\n        bool success;\n        bytes memory returnData;\n        require(targets.length == data.length, \"INVALID_INPUT\");\n        for (uint i = 0; i < targets.length; i++) {\n            (success, returnData) = targets[i].call(data[i]);\n            require(success, string(returnData));\n        }\n    }\n}"
}