* A session processes data in two directions:
*
* - `_UNWRAP` deals with raw data received from the session's transport. It
- * strips the ceremony of individual protocols from the buffers. The last
- * (bottommost) layer is generally responsible for submitting the unwrapped
- * data to be processed by an internal system, e.g. to be resolved as a DNS
- * query.
+ * strips the ceremony of individual protocols from the buffers, retaining any
+ * required metadata in an iteration context (`struct protolayer_iter_ctx`).
+ * The last layer (as defined by a `protolayer_grp_*` array in `session2.c`) in
+ * a sequence is generally responsible for submitting the unwrapped data to be
+ * processed by an internal system, e.g. to be resolved as a DNS query.
*
* - `_WRAP` deals with data generated by an internal system. It adds the
- * required protocol ceremony to it (e.g. encryption). The first (topmost)
- * layer is responsible for preparing the data to be sent through the
- * session's transport. */
+ * required protocol ceremony to it (e.g. encryption). The first layer (as
+ * defined by a `protolayer_grp_*` array in `session2.c`) is responsible for
+ * preparing the data to be sent through the session's transport. */
struct session2 {
/** Data for sending data out in the `wrap` direction and receiving new
* data in the `unwrap` direction. */