function flashFocusCall(FlashFocusParams calldata params) external override {
    ...
    {
        ...
        if (!tokenOfPool && params.swapPath.length > 0) amountIn0 = _swap(params.swapPath, params.amount);
        ...
    }
    ...
}

function flashFocus(FlashFocusParams calldata params)
    external
    override
    nonReentrant(true)
    isAuthorizedForToken(params.tokenId)
    avoidsShortfall
{
    ...
    flashLoan.LENDING_POOL().flashLoan(
        receiverAddress,
        assets,
        amounts,
        modes,
        onBehalfOf,
        newParams,
        referralCode
    );
}

function repayDebt(RepayDebtParams calldata params)
    external
    override
    nonReentrant(true)
    isAuthorizedForToken(params.tokenId)
    avoidsShortfall
    returns (uint256 amountReturned)
{
    ...
    {
        ...
        if (amountOutFrom0 == 0 && params.swapPath0.length > 0) amountOutFrom0 = _swap(params.swapPath0, amount0);
        if (amountOutFrom1 == 0 && params.swapPath1.length > 0) amountOutFrom1 = _swap(params.swapPath1, amount1);
        ...
    }
    ...
}
