* It ensures that suppressed exceptions from the Closeables are * handled correctly. */ try { try { throw _closer.rethrow(exc, Exception.class); } finally { _closer.close(); } } catch (Throwable t) { fail(t, attachment); } } private void fail(Throwable t, A attachment) { try { onFailure(t, attachment); } catch (Exception replacement) { if (replacement.getCause() == t) {