ProtocolRunManager
class ProtocolRunManager<T : ProtocolStateMachine<U>, U>(timeoutDuration: Duration = 60.minutes)(source)
Holds a list of protocol runs for ProtocolMessenger, handling concurrency with a lock, as well as cleaning up old (client did not send a message again) and finished runs.