| // Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file | 
 | // for details. All rights reserved. Use of this source code is governed by a | 
 | // BSD-style license that can be found in the LICENSE file. | 
 |  | 
 | package twrcloseresource; | 
 |  | 
 | import java.util.jar.JarFile; | 
 |  | 
 | public class TwrCloseResourceTest implements Iface { | 
 |   public static void main(String[] args) { | 
 |     TwrCloseResourceTest o = new TwrCloseResourceTest(); | 
 |     o.foo(args[0]); | 
 |     o.iFoo(args[0]); | 
 |     bar(args[0]); | 
 |     Iface.iBar(args[0]); | 
 |   } | 
 |  | 
 |   synchronized void foo(String arg) { | 
 |     try { | 
 |       try (JarFile a = new JarFile(arg)) { | 
 |         System.out.println("A"); | 
 |       } catch (Exception e) { | 
 |         System.out.println("B"); | 
 |         try (JarFile a = new JarFile(arg)) { | 
 |           System.out.println("C"); | 
 |         } | 
 |         System.out.println("D"); | 
 |         throw new RuntimeException(); | 
 |       } | 
 |       try (JarFile a = new JarFile(arg)) { | 
 |         System.out.println("E"); | 
 |       } | 
 |     } catch (Exception e) { | 
 |       System.out.println("F"); | 
 |     } | 
 |     try (JarFile a = new JarFile(arg)) { | 
 |       System.out.println("G"); | 
 |       try (JarFile b = new JarFile(arg)) { | 
 |         System.out.println("H"); | 
 |       } finally { | 
 |         System.out.println("I"); | 
 |         throw new RuntimeException(); | 
 |       } | 
 |     } catch (Exception e) { | 
 |       System.out.println("J"); | 
 |     } | 
 |     System.out.println("K"); | 
 |   } | 
 |  | 
 |   static synchronized void bar(String arg) { | 
 |     try (JarFile a = new JarFile(arg)) { | 
 |       System.out.println("1"); | 
 |       throw new RuntimeException(); | 
 |     } catch (Exception e) { | 
 |       System.out.println("2"); | 
 |     } | 
 |     try (JarFile a = new JarFile(arg)) { | 
 |       System.out.println("3"); | 
 |       throw new RuntimeException(); | 
 |     } catch (Exception e) { | 
 |       System.out.println("4"); | 
 |     } | 
 |     try (JarFile a = new JarFile(arg)) { | 
 |       System.out.println("5"); | 
 |       throw new RuntimeException(); | 
 |     } catch (Exception e) { | 
 |       System.out.println("6"); | 
 |     } | 
 |     try (JarFile a = new JarFile(arg)) { | 
 |       System.out.println("7"); | 
 |       throw new RuntimeException(); | 
 |     } catch (Exception e) { | 
 |       System.out.println("8"); | 
 |     } | 
 |     System.out.println("99"); | 
 |   } | 
 | } | 
 |  | 
 | interface Iface { | 
 |   default void iFoo(String arg) { | 
 |     try { | 
 |       try (JarFile a = new JarFile(arg)) { | 
 |         System.out.println("iA"); | 
 |       } catch (Exception e) { | 
 |         System.out.println("iB"); | 
 |         try (JarFile a = new JarFile(arg)) { | 
 |           System.out.println("iC"); | 
 |         } | 
 |         System.out.println("iD"); | 
 |         throw new RuntimeException(); | 
 |       } | 
 |       try (JarFile a = new JarFile(arg)) { | 
 |         System.out.println("iE"); | 
 |       } | 
 |     } catch (Exception e) { | 
 |       System.out.println("iF"); | 
 |     } | 
 |     try (JarFile a = new JarFile(arg)) { | 
 |       System.out.println("iG"); | 
 |       try (JarFile b = new JarFile(arg)) { | 
 |         System.out.println("iH"); | 
 |       } finally { | 
 |         System.out.println("iI"); | 
 |         throw new RuntimeException(); | 
 |       } | 
 |     } catch (Exception e) { | 
 |       System.out.println("iJ"); | 
 |     } | 
 |     System.out.println("iK"); | 
 |   } | 
 |  | 
 |   static void iBar(String arg) { | 
 |     try (JarFile a = new JarFile(arg)) { | 
 |       System.out.println("i1"); | 
 |       throw new RuntimeException(); | 
 |     } catch (Exception e) { | 
 |       System.out.println("i2"); | 
 |     } | 
 |     try (JarFile a = new JarFile(arg)) { | 
 |       System.out.println("i3"); | 
 |       throw new RuntimeException(); | 
 |     } catch (Exception e) { | 
 |       System.out.println("i4"); | 
 |     } | 
 |     try (JarFile a = new JarFile(arg)) { | 
 |       System.out.println("i5"); | 
 |       throw new RuntimeException(); | 
 |     } catch (Exception e) { | 
 |       System.out.println("i6"); | 
 |     } | 
 |     try (JarFile a = new JarFile(arg)) { | 
 |       System.out.println("i7"); | 
 |       throw new RuntimeException(); | 
 |     } catch (Exception e) { | 
 |       System.out.println("i8"); | 
 |     } | 
 |     System.out.println("i99"); | 
 |   } | 
 | } |