```\n/// @notice Set allowance for other address and notify.\n/// Allows `\_spender` to transfer the specified TDT\n/// on your behalf and then ping the contract about it.\n/// @dev The `\_spender` should implement the `tokenRecipient` interface below\n/// to receive approval notifications.\n/// @param \_spender Address of contract authorized to spend.\n/// @param \_tdtId The TDT they can spend.\n/// @param \_extraData Extra information to send to the approved contract.\nfunction approveAndCall(address \_spender, uint256 \_tdtId, bytes memory \_extraData) public returns (bool success) {\n    tokenRecipient spender = tokenRecipient(\_spender);\n    approve(\_spender, \_tdtId);\n    spender.receiveApproval(msg.sender, \_tdtId, address(this), \_extraData);\n}\n```\n