{
    "Function": "_setTokenDescriptor",
    "File": "contracts/discovery/SubgraphNFT.sol",
    "Parent Contracts": [
        "contracts/discovery/ISubgraphNFT.sol",
        "node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol",
        "node_modules/@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol",
        "node_modules/@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol",
        "node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol",
        "node_modules/@openzeppelin/contracts/introspection/ERC165.sol",
        "node_modules/@openzeppelin/contracts/introspection/IERC165.sol",
        "node_modules/@openzeppelin/contracts/utils/Context.sol",
        "contracts/governance/Governed.sol"
    ],
    "High-Level Calls": [
        "Address"
    ],
    "Internal Calls": [
        "require(bool,string)"
    ],
    "Library Calls": [
        "isContract"
    ],
    "Low-Level Calls": [],
    "Code": "function _setTokenDescriptor(address _tokenDescriptor) internal {\n        require(\n            _tokenDescriptor == address(0) || Address.isContract(_tokenDescriptor),\n            \"NFT: Invalid token descriptor\"\n        );\n        tokenDescriptor = ISubgraphNFTDescriptor(_tokenDescriptor);\n        emit TokenDescriptorUpdated(_tokenDescriptor);\n    }"
}