- client needs to send a break between commands
  -> ... which means the remoting core needs to be chunking aware, and therefore
     AbstractByteArrayCommandTransport can just use one ObjectOutputStream per command

- server doesn't echo back CloseCommand correctly because it's using single SelectableChannel
  and ChannelPair.closeRead() closes the writer before stuff gets sent.
  Half close needs to be handled properly

Phase 2:
    Socket connecting NioChannelHub to thread-driven Channel inside the same process

Phase 3:
    process-based channel client connected to NioChannelHub

Phase 3:
    client-side NioChannelHub

TODOs:
    - multi-threaded acceptors?
=======
Prefetch branch TODO before merge

- constant pool analyzer must be shaded & rebundled
- some classes should be traversed more deeply
  - base class and interfaces (this might be easy enough)
  - types used in static fields

- ClassLoader oracles
  - for creating a smarter remote classloader clone
    built on top of ClassLoader -> IClassLoader translation service
    & jar transfer service

- if jar is still loading, fall back to fetch2
