```\nfunction _createAuction() private returns (bool) {\n // Get the next token available for bidding\n try token.mint() returns (uint256 tokenId) {\n  // Store the token id\n  auction.tokenId = tokenId;\n\n  // Cache the current timestamp\n  uint256 startTime = block.timestamp;\n\n  // Used to store the auction end time\n  uint256 endTime;\n\n  // Cannot realistically overflow\n  unchecked {\n   // Compute the auction end time\n   endTime = startTime + settings.duration;\n  }\n\n  // Store the auction start and end time\n  auction.startTime = uint40(startTime);\n  auction.endTime = uint40(endTime);\n\n  // Reset data from the previous auction\n  auction.highestBid = 0;\n  auction.highestBidder = address(0);\n  auction.settled = false;\n\n  // Reset referral from the previous auction\n  currentBidReferral = address(0);\n\n  emit AuctionCreated(tokenId, startTime, endTime);\n  return true;\n } catch {\n  // Pause the contract if token minting failed\n  _pause();\n  return false;\n }\n}\n```\n