static void dissectControlSessionStateChange(
        final MutableDirectBuffer buffer, final int offset, final StringBuilder builder)
    {
        int absoluteOffset = offset;
        absoluteOffset += dissectLogHeader(CONTEXT, CONTROL_SESSION_STATE_CHANGE, buffer, absoluteOffset, builder);

        final long controlSessionId = buffer.getLong(absoluteOffset, LITTLE_ENDIAN);
        absoluteOffset += SIZE_OF_LONG;

        builder.append(": controlSessionId=").append(controlSessionId);
        builder.append(" ");
        buffer.getStringAscii(absoluteOffset, builder);
    }
@Test
    void controlSessionStateChange()
    {
        internalEncodeLogHeader(buffer, 0, 10, 20, () -> 1_500_000_000L);
        buffer.putLong(LOG_HEADER_LENGTH, -10_000_000_000L, LITTLE_ENDIAN);
        buffer.putStringAscii(LOG_HEADER_LENGTH + SIZE_OF_LONG, "x -> y");

        dissectControlSessionStateChange(buffer, 0, builder);

        assertEquals("[1.500000000] " + CONTEXT + ": " + CONTROL_SESSION_STATE_CHANGE.name() + " [10/20]:" +
            " controlSessionId=-10000000000" +
            " x -> y",
            builder.toString());
    }