@@ -0,0 +1,281 @@
+import java.io.BufferedReader;%0Aimport java.io.IOException;%0A%0A%0Apublic class UseInitCause %7B%0A%09%0A%09public String firstLine(BufferedReader r) %7B%0A%09%09try %7B%0A%09%09%09return r.readLine();%0A%09%09%7D catch (IOException e) %7B%0A%09%09%09throw (RuntimeException) new RuntimeException(%22IO Error%22).initCause(e);%0A%09%09%7D%0A%09%7D%0A%0A%7D%0A

Check that type analysis understands that Throwable.initCause(Throwable) always returns the this object.