|  | // 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)); | 
|  | } | 
|  | } |