sclass SSIListFrame > MetaWithChangeListeners is ByteIO, MakesBufferedImage { settable int magicMarker = 0xFFFFBABE; settableWithVar long timestampInMS; settableWithVar new WidthAndHeightImpl resolution; settableWithVar new SSIList content; public void readWrite(ByteHead head) { head.exchangeInt(magicMarker); head.exchangeLong(varTimestampInMS()); head.exchange(resolution); head.exchangeWithSize(content); } public int getWidth() { ret resolution.w(); } public int getHeight() { ret resolution.h(); } public BufferedImage getBufferedImage aka render() { ret content.render(resolution); } }