```\nFile: StableModule.sol\n    function executeWithdraw(\n        address _account,\n        uint64 _executableAtTime,\n        FlatcoinStructs.AnnouncedStableWithdraw calldata _announcedWithdraw\n    ) external whenNotPaused onlyAuthorizedModule returns (uint256 _amountOut, uint256 _withdrawFee) {\n        uint256 withdrawAmount = _announcedWithdraw.withdrawAmount;\n..SNIP..\n        _burn(_account, withdrawAmount);\n..SNIP..\n        // Check that there is no significant impact on stable token price.\n        // This should never happen and means that too much value or not enough value was withdrawn.\n        if (totalSupply() > 0) {\n            if (\n                stableCollateralPerShareAfter < stableCollateralPerShareBefore - 1e6 ||\n                stableCollateralPerShareAfter > stableCollateralPerShareBefore + 1e6\n            ) revert FlatcoinErrors.PriceImpactDuringWithdraw();\n\n            // Apply the withdraw fee if it's not the final withdrawal.\n            _withdrawFee = (stableWithdrawFee * _amountOut) / 1e18;\n\n            // additionalSkew = 0 because withdrawal was already processed above.\n            vault.checkSkewMax({additionalSkew: 0});\n        } else {\n            // Need to check there are no longs open before allowing full system withdrawal.\n            uint256 sizeOpenedTotal = vault.getVaultSummary().globalPositions.sizeOpenedTotal;\n\n            if (sizeOpenedTotal != 0) revert FlatcoinErrors.MaxSkewReached(sizeOpenedTotal);\n            if (stableCollateralPerShareAfter != 1e18) revert FlatcoinErrors.PriceImpactDuringFullWithdraw();\n        }\n```\n