Encoding of throwables to be sent to the other side will need to be recursively written. Basically it would be best to record the entire state of the Throwable, this includes causes, suppressed throwables, and the stack trace. At least with all of the information it should be much simpler to determine where failure has occurred on the remote end.


Also for easier usage, the printStackTrace() methods will be replaced in RemoteThrowable. So this way I can much better represent on the console itself the exception which was thrown on the other side.


Okay so the the PacketStream threads not being daemon threads is quite a problem, I will need to figure that one out so that they appear as such because otherwise the VM will just sit there waiting for them to die afterwards.


A ClientInstance interface factory would be better.


Going to need a way to send packets to handlers, but I believe I know a way I can do that.