<NA>
<NA>
function finalizeInboundTransfer(
        address _token,
        address _from,
        address _to,
        uint256 _amount,
        bytes calldata _data
    ) external payable virtual override onlyCounterpartGateway returns (bytes memory) {
        (uint256 exitNum, bytes memory callHookData) = parseInboundData(_data);

        (_to, callHookData) = getExternalCall(exitNum, _to, callHookData);

        if (callHookData.length > 0) {
            bool success;
            try this.inboundEscrowAndCall(_token, _amount, _from, _to, callHookData) {
                success = true;
            } catch {
                // if reverted, then credit _from's account
                inboundEscrowTransfer(_token, _from, _amount);
                // success default value is false
            }
            emit TransferAndCallTriggered(success, _from, _to, _amount, callHookData);
        } else {
            inboundEscrowTransfer(_token, _to, _amount);
        }

        emit InboundTransferFinalized(_token, _from, _to, exitNum, _amount, _data);
        return bytes("");
    }
/**
 * @notice Finalizes a withdrawal via Outbox message; callable only by L2Gateway.outboundTransfer
 * @param _token L1 address of token being withdrawn from
 * @param _from initiator of withdrawal
 * @param _to address the L2 withdrawal call set as the destination.
 * @param _amount Token amount being withdrawn
 * @param _data encoded exitNum (Sequentially increasing exit counter determined by the L2Gateway) and additinal hook data
 */