use std::marker;
pub trait Session: marker::Sized + marker::Send {
type Dual: Session<Dual = Self>;
#[doc(hidden)]
fn new() -> (Self, Self::Dual);
#[doc(hidden)]
fn head_str() -> String;
#[doc(hidden)]
fn tail_str() -> String;
#[doc(hidden)]
fn self_head_str(&self) -> String;
#[doc(hidden)]
fn self_tail_str(&self) -> String;
}