sclass StringHead { replace InputStream with Reader. replace OutputStream with Writer. replace inputStream with reader. replace outputStream with writer. settable bool readMode; settable bool writeMode; gettable InputStream inputStream; gettable OutputStream outputStream; *() {} *(InputStream inputStream) { inputStream(inputStream); } *(OutputStream outputStream) { outputStream(outputStream); } selfType inputStream(InputStream inputStream) { this.inputStream = inputStream; readMode(true); this; } selfType outputStream(OutputStream outputStream) { this.outputStream = outputStream; writeMode(true); this; } void finish {} }