// SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.6; pragma experimental ABIEncoderV2; contract FakeTaker { struct Result { bool success; bytes resultData; uint256 gasUsed; } receive() payable external {} function execute(address payable to, bytes calldata data) public payable returns (Result memory result) { uint256 gasBefore = gasleft(); ( result.success, result.resultData ) = to.call{ value: msg.value }(data); result.gasUsed = gasBefore - gasleft(); } }