```\n/// @notice Redeems tokens from the yield source from the msg.sender, it burn yield bearing tokens and return token to the sender.\n/// @param amount The amount of `token()` to withdraw. Denominated in `token()` as above.\n/// @return The actual amount of tokens that were redeemed.\nfunction redeemToken(uint256 amount) public override returns (uint256) {\n    ISushiBar bar = ISushiBar(sushiBar);\n    ISushi sushi = ISushi(sushiAddr);\n\n    uint256 totalShares = bar.totalSupply();\n    uint256 barSushiBalance = sushi.balanceOf(address(bar));\n    uint256 requiredShares = amount.mul(totalShares).div(barSushiBalance);\n\n    uint256 barBeforeBalance = bar.balanceOf(address(this));\n    uint256 sushiBeforeBalance = sushi.balanceOf(address(this));\n\n    bar.leave(requiredShares);\n\n    uint256 barAfterBalance = bar.balanceOf(address(this));\n    uint256 sushiAfterBalance = sushi.balanceOf(address(this));\n\n    uint256 barBalanceDiff = barBeforeBalance.sub(barAfterBalance);\n    uint256 sushiBalanceDiff = sushiAfterBalance.sub(sushiBeforeBalance);\n\n    balances[msg.sender] = balances[msg.sender].sub(barBalanceDiff);\n    sushi.transfer(msg.sender, sushiBalanceDiff);\n    return (sushiBalanceDiff);\n}\n```\n