Initial push.
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());
+  }
+}