diff --git a/src/test/examplesAndroidApi/classloader/Runner.java b/src/test/examplesAndroidApi/classloader/Runner.java
new file mode 100644
index 0000000..4660559
--- /dev/null
+++ b/src/test/examplesAndroidApi/classloader/Runner.java
@@ -0,0 +1,36 @@
+// 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 classloader;
+
+import java.lang.reflect.Method;
+
+import dalvik.system.PathClassLoader;
+
+// Command line application which take three arguments:
+//
+//  Parent dex file
+//  Child dex file
+//  Main class name
+//
+// The application will create a classloader hierachy with the parent dex file above the
+// system class loader, and the child dex file above the parent dex file. The it will load the
+// Main class from the child dex file class loader and run its main method.
+public class Runner {
+  public static void main(String[] args) throws Exception {
+    String parentFile = args[0];
+    String childFile = args[1];
+    String childClassName = args[2];
+    ClassLoader parentClassLoader =
+        new PathClassLoader(parentFile, ClassLoader.getSystemClassLoader());
+    ClassLoader childClassLoader = new PathClassLoader(childFile, parentClassLoader);
+
+    Class<?> childClass = childClassLoader.loadClass(childClassName);
+    runMain(childClass, new String[0]);
+  }
+
+  private static void runMain(Class<?> clazz, String[] args) throws Exception {
+    Method m = clazz.getMethod("main", String[].class);
+    m.invoke(null, new Object[] { args });
+  }
+}
