(
,
,
address to,
uint256 tokenID,
IERC20[] memory rewardTokens,
IRewardClaimSendFromParams[] memory rewardClaimSendParams
) = abi.decode(
    _payload,
    (
        uint16,
        address,
        address,
        uint256,
        IERC20[],
        IRewardClaimSendFromParams[]
    )
);
try twTap.claimAndSendRewards(tokenID, rewardTokens) {
function _claimRewardsOn(
    uint256 _tokenId,
    address _to,
    IERC20[] memory _rewardTokens
) internal {
    uint256[] memory amounts = claimable(_tokenId);
    unchecked {
        uint256 len = _rewardTokens.length;
        for (uint256 i = 0; i < len; ) {
            uint256 claimableIndex = rewardTokenIndex[_rewardTokens[i]];
            uint256 amount = amounts[i];

            if (amount > 0) {
                // Math is safe: `amount` calculated safely in `claimable()`
                claimed[_tokenId][claimableIndex] += amount;
                rewardTokens[claimableIndex].safeTransfer(_to, amount);
            }
            ++i;
        }
    }
}
