```\n    function _transferTokenInAndApprove(\n        address router,\n        IERC20 tokenIn,\n        uint256 amount\n    )\n        internal\n    {\n        tokenIn.safeTransferFrom(_msgSender(), address(this), amount);\n//@ The check of allowance is useless, we should check the allowance from address(this) rather than the msgSender\n        if (tokenIn.allowance(_msgSender(), router) < amount) {\n            tokenIn.forceApprove(router, amount);\n        }\n    }\n```\n