import java.lang.invoke.*;
import java.util.*;
class Main {
void foo() throws Exception {
MethodHandles.Lookup l = MethodHandles.lookup();
l.findVarHandle(Test.class, "myInt", int.class);
l.findVarHandle(Test.class, "myInts", int[].class);
l.findVarHandle(Test.class, "myList", List.class);
l.findVarHandle(Test.class, "myLists", List[].class);
l.findVarHandle(Test.class, "myString", String.class);
l.findStaticVarHandle(Test.class, "ourInt", int.class);
l.findStaticVarHandle(Test.class, "ourInts", int[].class);
l.findStaticVarHandle(Test.class, "ourList", List.class);
l.findStaticVarHandle(Test.class, "ourLists", List[].class);
l.findStaticVarHandle(Test.class, "ourString", String.class);
l.findVarHandle(Test.class, "doesntExist", String.class);
l.findStaticVarHandle(Test.class, "doesntExist", String.class);
l.findVarHandle(Test.class, "myInt", void.class);
l.findVarHandle(Test.class, "myInts", int.class);
l.findVarHandle(Test.class, "myString", List.class);
l.findStaticVarHandle(Test.class, "ourInt", void.class);
l.findStaticVarHandle(Test.class, "ourInts", int.class);
l.findStaticVarHandle(Test.class, "ourString", List.class);
l.findStaticVarHandle(Test.class, "myString", String.class);
l.findVarHandle(Test.class, "ourString", String.class);
}
}
class Test {
public int myInt;
public String myString;
public int[] myInts;
public List myList;
@SuppressWarnings("unchecked")
public List[] myLists;
public static int ourInt;
public static String ourString;
public static int[] ourInts;
public static List ourList;
@SuppressWarnings("unchecked")
public static List[] ourLists;
}