```\n    function mintNFT(address asset, uint8 shortRecordId)\n        external\n        isNotFrozen(asset)\n        nonReentrant\n        onlyValidShortRecord(asset, msg.sender, shortRecordId)\n    {\n        if (shortRecordId == Constants.SHORT_MAX_ID) {\n            revert Errors.CannotMintLastShortRecord();\n        }\n        STypes.ShortRecord storage short =\n            s.shortRecords[asset][msg.sender][shortRecordId];\n\n        if (short.tokenId != 0) revert Errors.AlreadyMinted();\n\n        s.nftMapping[s.tokenIdCounter] = STypes.NFT({\n            owner: msg.sender,\n            assetId: s.asset[asset].assetId,\n            shortRecordId: shortRecordId\n        });\n\n        short.tokenId = s.tokenIdCounter;\n\n        //@dev never decreases\n        s.tokenIdCounter += 1;\n    }\n```\n