{
    "Function": "_burn",
    "File": "contracts/openzeppelin-solidity/contracts/token/ERC1155/ERC1155.sol",
    "Parent Contracts": [
        "contracts/openzeppelin-solidity/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol",
        "contracts/openzeppelin-solidity/contracts/token/ERC1155/IERC1155.sol",
        "contracts/openzeppelin-solidity/contracts/utils/introspection/ERC165.sol",
        "contracts/openzeppelin-solidity/contracts/utils/introspection/IERC165.sol",
        "contracts/openzeppelin-solidity/contracts/utils/Context.sol"
    ],
    "High-Level Calls": [],
    "Internal Calls": [
        "require(bool,string)",
        "_asSingletonArray",
        "_msgSender",
        "require(bool,string)",
        "_asSingletonArray",
        "_beforeTokenTransfer"
    ],
    "Library Calls": [],
    "Low-Level Calls": [],
    "Code": "function _burn(\n        address from,\n        uint256 id,\n        uint256 amount\n    ) internal virtual {\n        require(from != address(0), \"ERC1155: burn from the zero address\");\n\n        address operator = _msgSender();\n\n        _beforeTokenTransfer(operator, from, address(0), _asSingletonArray(id), _asSingletonArray(amount), \"\");\n\n        uint256 fromBalance = _balances[id][from];\n        require(fromBalance >= amount, \"ERC1155: burn amount exceeds balance\");\n        unchecked {\n            _balances[id][from] = fromBalance - amount;\n        }\n\n        emit TransferSingle(operator, from, address(0), id, amount);\n    }"
}