| // Copyright (c) 2023, 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 varhandle; | 
 |  | 
 | import java.lang.invoke.MethodHandles; | 
 | import varhandle.util.WithPrivateFields; | 
 |  | 
 | public class MethodHandlesPrivateLookupIn { | 
 |  | 
 |   public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException { | 
 |     MethodHandles.Lookup lookup = MethodHandles.lookup(); | 
 |  | 
 |     WithPrivateFields withPrivateFields = new WithPrivateFields(); | 
 |     try { | 
 |       lookup.findVarHandle(WithPrivateFields.class, "intField", int.class).get(withPrivateFields); | 
 |       System.out.println("Unexpected success"); | 
 |     } catch (IllegalAccessException e) { | 
 |     } | 
 |     System.out.println( | 
 |         MethodHandles.privateLookupIn(WithPrivateFields.class, lookup) | 
 |             .findVarHandle(WithPrivateFields.class, "intField", int.class) | 
 |             .get(withPrivateFields)); | 
 |  | 
 |     try { | 
 |       lookup.findVarHandle(WithPrivateFields.class, "longField", long.class).get(withPrivateFields); | 
 |       System.out.println("Unexpected success"); | 
 |     } catch (IllegalAccessException e) { | 
 |     } | 
 |     System.out.println( | 
 |         MethodHandles.privateLookupIn(WithPrivateFields.class, lookup) | 
 |             .findVarHandle(WithPrivateFields.class, "longField", long.class) | 
 |             .get(withPrivateFields)); | 
 |  | 
 |     try { | 
 |       lookup | 
 |           .findVarHandle(WithPrivateFields.class, "referenceField", Object.class) | 
 |           .get(withPrivateFields); | 
 |       System.out.println("Unexpected success"); | 
 |     } catch (IllegalAccessException e) { | 
 |     } | 
 |     System.out.println( | 
 |         MethodHandles.privateLookupIn(WithPrivateFields.class, lookup) | 
 |             .findVarHandle(WithPrivateFields.class, "referenceField", Object.class) | 
 |             .get(withPrivateFields)); | 
 |   } | 
 | } |