This documents attempts to expose the class and interface structures.
graph LR
IChannel --> Channel
ConnectedSocket --> Channel
Channel --> ClientChannel
Channel --> ServiceChannel
graph LR
IA[IChannelAdapter] --> A[ChannelAdapter<>]
M[ChannelMiddleware<>] --> A
A --> X[...<>]
IInputChannelAdapter -..-> X
IOutputChannelAdapter -..-> X
graph LR
IH[IChannelHandler] --> H[ChannelHandler<>]
M[ChannelMiddleware<>] --> H
H --> X[...<>]
graph LR
IChannelService --> S[ChannelService]
S --> X[...]