asclass AbstractCompressor_AnyType extends Probabilistic { CompressionSearch_AnyType search; *() {} *(CompressionSearch_AnyType *search) {} void setSearch(CompressionSearch_AnyType search) { if (this.search != null && this.search != search) fail(); this.search = search; } CompressionRegime_AnyType regime() { ret search?.regime(); } Data inputData() { ret search.inputData(); } // get current best compressed representation //abstract A currentBestDecompressor aka get(); // submit your latest results here public void flush {} CompressionSearch_AnyType.Submission submit(A a, O notes default null) { ret search.submit(a, notes); } }