void readWrite(SomethingHead head); default byte[] saveToByteArray aka saveAsByteArray aka toByteArray() { var baos = byteArrayOutputStream(); readWrite(new SomethingHead(baos)); ret baos.toByteArray(); } default File saveToFile(File file) { temp OutputStream out = bufferedFileOutputStream(file); readWrite(new SomethingHead(out)); ret file; } default selfType load(byte[] data) { readWrite(new SomethingHead(new ByteArrayInputStream(data))); this; } default selfType load(File file) { temp InputStream in = bufferedInputStream(file); readWrite(new SomethingHead(in)); this; }