diff --git a/src/test/examples/memberrebinding/Test.java b/src/test/examples/memberrebinding/Test.java
new file mode 100644
index 0000000..ba5e2f0
--- /dev/null
+++ b/src/test/examples/memberrebinding/Test.java
@@ -0,0 +1,37 @@
+// 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.
+package memberrebinding;
+
+import memberrebinding.subpackage.PublicClass;
+import memberrebindinglib.AnIndependentInterface;
+
+public class Test {
+
+  public static void main(String[] args) {
+    ClassAtBottomOfChain bottomInstance = new ClassAtBottomOfChain();
+    bottomInstance.superCallsProperlyPropagate();
+    bottomInstance.methodThatCallsSuperCallsProperlyPropagateTwo();
+    bottomInstance.methodThatShadowsPrivate();
+    bottomInstance.ensureAllCalled();
+    System.out.println(bottomInstance.superField);
+    ClassExtendsLibraryClass classExtendsLibraryClass = new ClassExtendsLibraryClass();
+    classExtendsLibraryClass.methodThatAddsHelloWorld();
+    classExtendsLibraryClass.methodThatAddsHelloWorldUsingAddAll();
+    System.out.println(classExtendsLibraryClass.get(0));
+    System.out.println(classExtendsLibraryClass.get(1));
+    System.out.println(classExtendsLibraryClass.get(2));
+    PublicClass instance = new PublicClass();
+    instance.aMethod();
+    ClassExtendsOtherLibraryClass classExtendsOther = new ClassExtendsOtherLibraryClass();
+    System.out.println(classExtendsOther.aMethodThatReturnsOne());
+    System.out.println(classExtendsOther.aMethodThatReturnsTwo());
+    System.out.println(classExtendsOther.aMethodThatReturnsThree());
+    System.out.println(classExtendsOther.aMethodThatReturnsFour());
+    AnIndependentInterface iface = classExtendsOther;
+    System.out.println(iface.aMethodThatReturnsTwo());
+    SuperClassOfClassExtendsOtherLibraryClass superClass = classExtendsOther;
+    System.out.println(superClass.aMethodThatReturnsTrue());
+    System.out.println(superClass.aMethodThatReturnsFalse());
+  }
+}
