public void close() throws IOException {synchronized (lock) {if (isClosed()) {return;}Throwable thrown = null;try {flushInternal();} catch (Throwable e) {thrown = e;}buf = null;try {out.close();} catch (Throwable e) {if (thrown == null) {thrown = e;}}out = null;if (thrown != null) {SneakyThrow.sneakyThrow(thrown);}}}

public override void close(){lock (@lock){if (isClosed()){return;}System.Exception thrown = null;try{flushInternal();}catch (System.Exception e){thrown = e;}buf = null;try{@out.close();}catch (System.Exception e){if (thrown == null){thrown = e;}}@out = null;if (thrown != null){Sharpen.Util.Throw(thrown);}}}
