Perform a jump. Now you may think that you should indicate where
you want to jump to. But of course, that's actually specified by
the session type so you don't have to specify it at all in the
implementation.

Offer a number of branches. This is basically an external choice
- the other party uses sselect to decide which branch to take.
Use OfferImpls in order to construct the list of implementations of
branches. Note that every implementation must result in the same
final state and emit the same value.

Run! Provide a program and a start point within that program
(which is automatically sjumped to), the two implementations
which must be duals of each other, run them, have them communicate,
wait until they both finish and die and then return the results
from both of them.

Provides the ability to make a new session / channel with the
given Pid. Supply the index to the Session Type, whether or not
you're locally inverting (dualing) the Session Type, and the Pid,
and so long as the Pid supports the dual of your local Session
Type, this will block until the Pid gets around to servicing you.
Thus this is a synchronous operation and both Pids must know of
each other to create a new session / channel between them.