{
    "Function": "safeTransferFrom",
    "File": "contracts/src/vendor/forge-std/src/mocks/MockERC721.sol",
    "Parent Contracts": [
        "contracts/src/vendor/forge-std/src/interfaces/IERC721.sol",
        "contracts/src/vendor/forge-std/src/interfaces/IERC721.sol",
        "contracts/src/vendor/forge-std/src/interfaces/IERC165.sol"
    ],
    "High-Level Calls": [
        "IERC721TokenReceiver"
    ],
    "Internal Calls": [
        "transferFrom",
        "require(bool,string)",
        "_isContract"
    ],
    "Library Calls": [],
    "Low-Level Calls": [],
    "Code": "function safeTransferFrom(address from, address to, uint256 id, bytes memory data)\n        public\n        payable\n        virtual\n        override\n    {\n        transferFrom(from, to, id);\n\n        require(\n            !_isContract(to)\n                || IERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data)\n                    == IERC721TokenReceiver.onERC721Received.selector,\n            \"UNSAFE_RECIPIENT\"\n        );\n    }"
}