Initial push.
diff --git a/src/test/smali/merge-blocks-regression/Test.java b/src/test/smali/merge-blocks-regression/Test.java
new file mode 100644
index 0000000..ca61ff4
--- /dev/null
+++ b/src/test/smali/merge-blocks-regression/Test.java
@@ -0,0 +1,36 @@
+// Copyright (c) 2016, 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.
+
+public class Test {
+
+  public Object b;
+  public Test d;
+  public Test e;
+  public Test g;
+  public Test f;
+
+  public void a() { throw new RuntimeException("Test.a()"); }
+  public void a(long p1) { throw new RuntimeException("Test.a(long)"); }
+  public void a(long p1, boolean p2) { throw new RuntimeException("Test.a(long, boolean)"); }
+  public Test a(java.io.DataInputStream p1) { throw new RuntimeException("Test.a(input-stream)"); }
+  public Test a(byte[] p1, Test p2) { throw new RuntimeException("Test.a(B[], Test)"); }
+  public java.io.File b() { throw new RuntimeException("Test.b()"); }
+  public Test bW_() { throw new RuntimeException("Test.bW_()"); }
+  public long c() { throw new RuntimeException("Test.d()"); }
+  public void c(boolean p1) { throw new RuntimeException("Test.c(boolean)"); }
+  public void c(java.nio.ByteBuffer p1) { throw new RuntimeException("Test.c(byte-buf)"); }
+  public byte[] cB() { throw new RuntimeException("Test.cB()"); }
+  public long d() { throw new RuntimeException("Test.d()"); }
+  public void d(boolean p1) { throw new RuntimeException("Test.d(boolean)"); }
+  public Test e() { throw new RuntimeException("Test.e()"); }
+  public void eV() { throw new RuntimeException("Test.eV()"); }
+
+  public static void main(String[] args) {
+    try {
+      new TestObject().f();
+    } catch (Exception e) {
+      System.out.println(e);
+    }
+  }
+}