Strong exception-safety for Java-like languages