private void validateSubsequestRequestAck(
            final int idx,
            final Node first,
            final Node request) {
        if (request == first) {
            // Nothing to check on first request
            return;
        }
        String ack = first.getBody().getAttribute(Attributes.ACK);
        if (ack == null) {
            String subAck = request.getBody().getAttribute(Attributes.ACK);
            assertNull("subsequent request #" + idx + " can only use acks if "
                    + "advertized in session creation request", subAck);
        }

        AbstractBody resp = request.getLastRequestRespondedTo();
        Long lastRID = Long.parseLong(resp.getAttribute(Attributes.RID));
        ack = request.getBody().getAttribute(Attributes.ACK);
        if (ack == null) {
            // Verify implicit ack
            String rid = request.getBody().getAttribute(Attributes.RID);
            long implicit = lastRID.longValue() + 1L;
            assertEquals("Implicit ack when RID != prev + 1",
                    Long.valueOf(implicit).toString(), rid);
        } else {
            assertEquals("Request ack incorrect", lastRID.toString(), ack);
        }
    }