interface ByteIO { void readWrite(ByteHead head); default byte[] saveToByteArray aka saveAsByteArray() { var baos = byteArrayOutputStream(); readWrite(new ByteHead(baos)); ret baos.toByteArray(); } default selfType load(byte[] data) { readWrite(new ByteHead(new ByteArrayInputStream(data))); this; } }