private CompletableFuture<S7MessageUserData> reassembledAlarmEvents(short sequenceNumber) {
        CompletableFuture<S7MessageUserData> future = new CompletableFuture<>();

        //TODO: We need to verify that the returned tpdu id is the same in the response.
        int tpduId = getTpduId();

        TPKTPacket request = createAlarmQueryReassembledRequest(tpduId, sequenceNumber);

        conversationContext.sendRequest(request)
            .onTimeout(e -> {
                logger.warn("Timeout during Connection establishing, closing channel...");
                //context.getChannel().close();
            })
            .expectResponse(TPKTPacket.class, Duration.ofMillis(1000))
            .unwrap(TPKTPacket::getPayload)
            .only(COTPPacketData.class)
            .unwrap(COTPPacketData::getPayload)
            .only(S7MessageUserData.class)
            .check(p -> p.getPayload() instanceof S7PayloadUserData)
            .handle(future::complete);

        return future;
    }
Currently we only support the S7 Any type of addresses. This helper simply converts the S7Tag
from PLC4X into S7Address objects.

@param tag S7Tag instance we need to convert into an S7Address
@return the S7Address
plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7ProtocolLogic.java