diff --git a/src/test/examplesJava11/nesthostexample/BasicNestHostWithAnonymousInnerClass.java b/src/test/examplesJava11/nesthostexample/BasicNestHostWithAnonymousInnerClass.java
new file mode 100644
index 0000000..f014507
--- /dev/null
+++ b/src/test/examplesJava11/nesthostexample/BasicNestHostWithAnonymousInnerClass.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2019, 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 nesthostexample;
+
+public class BasicNestHostWithAnonymousInnerClass {
+
+  private String method() {
+    return "hostMethod";
+  }
+
+  private static String staticMethod() {
+    return "staticHostMethod";
+  }
+
+  private String field = "field";
+  private static String staticField = "staticField";
+
+  public static InterfaceForAnonymousClass createAnonymousNestedInstance() {
+    return new InterfaceForAnonymousClass() {
+      public String accessOuter(BasicNestHostWithAnonymousInnerClass o) {
+        return o.field
+            + o.staticField
+            + BasicNestHostWithAnonymousInnerClass.staticField
+            + o.method()
+            + o.staticMethod()
+            + BasicNestHostWithAnonymousInnerClass.staticMethod();
+      }
+    };
+  }
+
+  public interface InterfaceForAnonymousClass {
+    String accessOuter(BasicNestHostWithAnonymousInnerClass o);
+  }
+
+  public static void main(String[] args) {
+    BasicNestHostWithAnonymousInnerClass outer = new BasicNestHostWithAnonymousInnerClass();
+    InterfaceForAnonymousClass anonymousInner =
+        BasicNestHostWithAnonymousInnerClass.createAnonymousNestedInstance();
+    System.out.println(anonymousInner.accessOuter(outer));
+  }
+}
