xref: /aosp_15_r20/art/test/2277-methodhandle-invokeexact/src/JavaApiTest.java (revision 795d594fd825385562da6b089ea9b2033f3abf5a)
1*795d594fSAndroid Build Coastguard Worker /*
2*795d594fSAndroid Build Coastguard Worker  * Copyright (C) 2024 The Android Open Source Project
3*795d594fSAndroid Build Coastguard Worker  *
4*795d594fSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*795d594fSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*795d594fSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*795d594fSAndroid Build Coastguard Worker  *
8*795d594fSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*795d594fSAndroid Build Coastguard Worker  *
10*795d594fSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*795d594fSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*795d594fSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*795d594fSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*795d594fSAndroid Build Coastguard Worker  * limitations under the License.
15*795d594fSAndroid Build Coastguard Worker  */
16*795d594fSAndroid Build Coastguard Worker 
17*795d594fSAndroid Build Coastguard Worker import static java.lang.invoke.MethodType.methodType;
18*795d594fSAndroid Build Coastguard Worker 
19*795d594fSAndroid Build Coastguard Worker import java.lang.invoke.MethodHandle;
20*795d594fSAndroid Build Coastguard Worker import java.lang.invoke.MethodHandles;
21*795d594fSAndroid Build Coastguard Worker import java.util.Arrays;
22*795d594fSAndroid Build Coastguard Worker import java.util.Optional;
23*795d594fSAndroid Build Coastguard Worker 
24*795d594fSAndroid Build Coastguard Worker public class JavaApiTest extends AbstractInvokeExactTest {
25*795d594fSAndroid Build Coastguard Worker 
26*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle OPTIONAL_GET;
27*795d594fSAndroid Build Coastguard Worker 
28*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle VOID_METHOD;
29*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle RETURN_INT;
30*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle RETURN_DOUBLE;
31*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle PRIVATE_INTERFACE_METHOD;
32*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle B_PRIVATE_RETURN_INT;
33*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle A_PRIVATE_RETURN_INT;
34*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle STATIC_METHOD;
35*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle EXCEPTION_THROWING_METHOD;
36*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle INTERFACE_DEFAULT_METHOD;
37*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle OVERWRITTEN_INTERFACE_DEFAULT_METHOD;
38*795d594fSAndroid Build Coastguard Worker 
39*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle SUM_I;
40*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle SUM_2I;
41*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle SUM_3I;
42*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle SUM_4I;
43*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle SUM_5I;
44*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle SUM_6I;
45*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle SUM_7I;
46*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle SUM_8I;
47*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle SUM_9I;
48*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle SUM_10I;
49*795d594fSAndroid Build Coastguard Worker 
50*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle SUM_IJ;
51*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle SUM_2IJ;
52*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle SUM_3IJ;
53*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle SUM_4IJ;
54*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle SUM_5IJ;
55*795d594fSAndroid Build Coastguard Worker 
56*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle FOO_NONDEFAULT;
57*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle FOOBARIMPL_NONDEFAULT;
58*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle FOO_DEFAULT;
59*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle BAR_DEFAULT;
60*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle FOOBAR_DEFINEDINABSTRACT;
61*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle FOOBAR_NONDEFAULT;
62*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle FOOBARIMPL_DEFINEDINABSTRACT;
63*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle FOOBARIMPL_DEFAULT;
64*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle FOO_NONOVERRIDDEN_DEFAULT;
65*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle BAR_NONOVERRIDDEN_DEFAULT;
66*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle TO_STRING_DEFINED_IN_AN_INTERFACE;
67*795d594fSAndroid Build Coastguard Worker 
68*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle INTERFACE_ONE_METHOD;
69*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle INTERFACE_TWO_METHOD;
70*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle INTERFACE_THREE_METHOD;
71*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle INTERFACE_FOUR_METHOD;
72*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle FOO_AND_FOO_CONFLICT_DEFAULT;
73*795d594fSAndroid Build Coastguard Worker   private static final MethodHandle BASE_INTERFACE;
74*795d594fSAndroid Build Coastguard Worker 
75*795d594fSAndroid Build Coastguard Worker   static {
76*795d594fSAndroid Build Coastguard Worker     try {
77*795d594fSAndroid Build Coastguard Worker       OPTIONAL_GET = MethodHandles.lookup()
78*795d594fSAndroid Build Coastguard Worker           .findVirtual(Optional.class, "get", methodType(Object.class));
79*795d594fSAndroid Build Coastguard Worker 
80*795d594fSAndroid Build Coastguard Worker       VOID_METHOD = MethodHandles.lookup()
81*795d594fSAndroid Build Coastguard Worker           .findVirtual(A.class, "voidMethod", methodType(void.class));
82*795d594fSAndroid Build Coastguard Worker       RETURN_DOUBLE = MethodHandles.lookup()
83*795d594fSAndroid Build Coastguard Worker           .findVirtual(A.class, "returnDouble", methodType(double.class));
84*795d594fSAndroid Build Coastguard Worker       RETURN_INT = MethodHandles.lookup()
85*795d594fSAndroid Build Coastguard Worker           .findVirtual(A.class, "returnInt", methodType(int.class));
86*795d594fSAndroid Build Coastguard Worker       PRIVATE_INTERFACE_METHOD = MethodHandles.privateLookupIn(I.class, MethodHandles.lookup())
87*795d594fSAndroid Build Coastguard Worker           .findVirtual(I.class, "innerPrivateMethod", methodType(String.class));
88*795d594fSAndroid Build Coastguard Worker       A_PRIVATE_RETURN_INT = MethodHandles.privateLookupIn(A.class, MethodHandles.lookup())
89*795d594fSAndroid Build Coastguard Worker           .findVirtual(A.class, "privateReturnInt", methodType(int.class));
90*795d594fSAndroid Build Coastguard Worker       B_PRIVATE_RETURN_INT = MethodHandles.privateLookupIn(B.class, MethodHandles.lookup())
91*795d594fSAndroid Build Coastguard Worker           .findVirtual(B.class, "privateReturnInt", methodType(int.class));
92*795d594fSAndroid Build Coastguard Worker       STATIC_METHOD = MethodHandles.lookup()
93*795d594fSAndroid Build Coastguard Worker           .findStatic(A.class, "staticMethod", methodType(String.class, A.class));
94*795d594fSAndroid Build Coastguard Worker       EXCEPTION_THROWING_METHOD = MethodHandles.lookup()
95*795d594fSAndroid Build Coastguard Worker           .findVirtual(A.class, "throwException", methodType(void.class));
96*795d594fSAndroid Build Coastguard Worker       INTERFACE_DEFAULT_METHOD = MethodHandles.lookup()
97*795d594fSAndroid Build Coastguard Worker           .findVirtual(I.class, "defaultMethod", methodType(void.class));
98*795d594fSAndroid Build Coastguard Worker       OVERWRITTEN_INTERFACE_DEFAULT_METHOD = MethodHandles.lookup()
99*795d594fSAndroid Build Coastguard Worker           .findVirtual(I.class, "overrideMe", methodType(void.class));
100*795d594fSAndroid Build Coastguard Worker 
101*795d594fSAndroid Build Coastguard Worker       SUM_I  = MethodHandles.lookup()
102*795d594fSAndroid Build Coastguard Worker           .findVirtual(Sums.class, "sum", methodType(int.class, repeat(1, int.class)));
103*795d594fSAndroid Build Coastguard Worker       SUM_2I = MethodHandles.lookup()
104*795d594fSAndroid Build Coastguard Worker           .findVirtual(Sums.class, "sum", methodType(int.class, repeat(2, int.class)));
105*795d594fSAndroid Build Coastguard Worker       SUM_3I = MethodHandles.lookup()
106*795d594fSAndroid Build Coastguard Worker           .findVirtual(Sums.class, "sum", methodType(int.class, repeat(3, int.class)));
107*795d594fSAndroid Build Coastguard Worker       SUM_4I  = MethodHandles.lookup()
108*795d594fSAndroid Build Coastguard Worker           .findVirtual(Sums.class, "sum", methodType(int.class, repeat(4, int.class)));
109*795d594fSAndroid Build Coastguard Worker       SUM_5I  = MethodHandles.lookup()
110*795d594fSAndroid Build Coastguard Worker           .findVirtual(Sums.class, "sum", methodType(int.class, repeat(5, int.class)));
111*795d594fSAndroid Build Coastguard Worker       SUM_6I  = MethodHandles.lookup()
112*795d594fSAndroid Build Coastguard Worker           .findVirtual(Sums.class, "sum", methodType(int.class, repeat(6, int.class)));
113*795d594fSAndroid Build Coastguard Worker       SUM_7I  = MethodHandles.lookup()
114*795d594fSAndroid Build Coastguard Worker           .findVirtual(Sums.class, "sum", methodType(int.class, repeat(7, int.class)));
115*795d594fSAndroid Build Coastguard Worker       SUM_8I  = MethodHandles.lookup()
116*795d594fSAndroid Build Coastguard Worker           .findVirtual(Sums.class, "sum", methodType(int.class, repeat(8, int.class)));
117*795d594fSAndroid Build Coastguard Worker       SUM_9I  = MethodHandles.lookup()
118*795d594fSAndroid Build Coastguard Worker           .findVirtual(Sums.class, "sum", methodType(int.class, repeat(9, int.class)));
119*795d594fSAndroid Build Coastguard Worker       SUM_10I = MethodHandles.lookup()
120*795d594fSAndroid Build Coastguard Worker           .findVirtual(Sums.class, "sum", methodType(int.class, repeat(10, int.class)));
121*795d594fSAndroid Build Coastguard Worker 
122*795d594fSAndroid Build Coastguard Worker       SUM_IJ = MethodHandles.lookup()
123*795d594fSAndroid Build Coastguard Worker           .findVirtual(Sums.class, "sum", methodType(long.class, int.class, long.class));
124*795d594fSAndroid Build Coastguard Worker       SUM_2IJ  = MethodHandles.lookup()
125*795d594fSAndroid Build Coastguard Worker           .findVirtual(Sums.class,
126*795d594fSAndroid Build Coastguard Worker                        "sum",
127*795d594fSAndroid Build Coastguard Worker                        methodType(long.class, repeat(2, int.class, long.class)));
128*795d594fSAndroid Build Coastguard Worker       SUM_3IJ = MethodHandles.lookup()
129*795d594fSAndroid Build Coastguard Worker           .findVirtual(Sums.class,
130*795d594fSAndroid Build Coastguard Worker                        "sum",
131*795d594fSAndroid Build Coastguard Worker                        methodType(long.class, repeat(3, int.class, long.class)));
132*795d594fSAndroid Build Coastguard Worker       SUM_4IJ = MethodHandles.lookup()
133*795d594fSAndroid Build Coastguard Worker           .findVirtual(Sums.class,
134*795d594fSAndroid Build Coastguard Worker                        "sum",
135*795d594fSAndroid Build Coastguard Worker                        methodType(long.class, repeat(4, int.class, long.class)));
136*795d594fSAndroid Build Coastguard Worker       SUM_5IJ = MethodHandles.lookup()
137*795d594fSAndroid Build Coastguard Worker           .findVirtual(Sums.class,
138*795d594fSAndroid Build Coastguard Worker                        "sum",
139*795d594fSAndroid Build Coastguard Worker                        methodType(long.class, repeat(5, int.class, long.class)));
140*795d594fSAndroid Build Coastguard Worker 
141*795d594fSAndroid Build Coastguard Worker       FOO_NONDEFAULT = MethodHandles.lookup()
142*795d594fSAndroid Build Coastguard Worker           .findVirtual(Foo.class, "nonDefault", methodType(String.class));
143*795d594fSAndroid Build Coastguard Worker       FOOBARIMPL_NONDEFAULT = MethodHandles.lookup()
144*795d594fSAndroid Build Coastguard Worker           .findVirtual(FooBarImpl.class, "nonDefault", methodType(String.class));
145*795d594fSAndroid Build Coastguard Worker       FOO_DEFAULT = MethodHandles.lookup()
146*795d594fSAndroid Build Coastguard Worker           .findVirtual(Foo.class, "defaultToOverride", methodType(String.class));
147*795d594fSAndroid Build Coastguard Worker       BAR_DEFAULT = MethodHandles.lookup()
148*795d594fSAndroid Build Coastguard Worker           .findVirtual(Bar.class, "defaultToOverride", methodType(String.class));
149*795d594fSAndroid Build Coastguard Worker       FOOBAR_DEFINEDINABSTRACT = MethodHandles.lookup()
150*795d594fSAndroid Build Coastguard Worker           .findVirtual(FooBar.class, "definedInAbstract", methodType(String.class));
151*795d594fSAndroid Build Coastguard Worker       FOOBAR_NONDEFAULT = MethodHandles.lookup()
152*795d594fSAndroid Build Coastguard Worker           .findVirtual(FooBar.class, "nonDefault", methodType(String.class));
153*795d594fSAndroid Build Coastguard Worker       FOOBARIMPL_DEFINEDINABSTRACT = MethodHandles.lookup()
154*795d594fSAndroid Build Coastguard Worker           .findVirtual(FooBarImpl.class, "definedInAbstract", methodType(String.class));
155*795d594fSAndroid Build Coastguard Worker       FOOBARIMPL_DEFAULT = MethodHandles.lookup()
156*795d594fSAndroid Build Coastguard Worker           .findVirtual(FooBarImpl.class, "defaultToOverride", methodType(String.class));
157*795d594fSAndroid Build Coastguard Worker       FOO_NONOVERRIDDEN_DEFAULT = MethodHandles.lookup()
158*795d594fSAndroid Build Coastguard Worker           .findVirtual(Foo.class, "nonOverriddenDefault", methodType(String.class));
159*795d594fSAndroid Build Coastguard Worker       BAR_NONOVERRIDDEN_DEFAULT = MethodHandles.lookup()
160*795d594fSAndroid Build Coastguard Worker           .findVirtual(Bar.class, "nonOverriddenDefault", methodType(String.class));
161*795d594fSAndroid Build Coastguard Worker       TO_STRING_DEFINED_IN_AN_INTERFACE = MethodHandles.lookup()
162*795d594fSAndroid Build Coastguard Worker           .findVirtual(ToStringable.class, "toString", methodType(String.class));
163*795d594fSAndroid Build Coastguard Worker 
164*795d594fSAndroid Build Coastguard Worker       INTERFACE_ONE_METHOD = MethodHandles.lookup()
165*795d594fSAndroid Build Coastguard Worker           .findVirtual(Interface1.class, "methodOne", methodType(String.class));
166*795d594fSAndroid Build Coastguard Worker       INTERFACE_TWO_METHOD = MethodHandles.lookup()
167*795d594fSAndroid Build Coastguard Worker           .findVirtual(Interface2.class, "methodTwo", methodType(String.class));
168*795d594fSAndroid Build Coastguard Worker       INTERFACE_THREE_METHOD = MethodHandles.lookup()
169*795d594fSAndroid Build Coastguard Worker           .findVirtual(Interface3.class, "methodThree", methodType(String.class));
170*795d594fSAndroid Build Coastguard Worker       INTERFACE_FOUR_METHOD = MethodHandles.lookup()
171*795d594fSAndroid Build Coastguard Worker           .findVirtual(Interface4.class, "methodFour", methodType(String.class));
172*795d594fSAndroid Build Coastguard Worker       FOO_AND_FOO_CONFLICT_DEFAULT = MethodHandles.lookup()
173*795d594fSAndroid Build Coastguard Worker           .findVirtual(FooAndFooConflict.class, "defaultToOverride", methodType(String.class));
174*795d594fSAndroid Build Coastguard Worker       BASE_INTERFACE = MethodHandles.lookup()
175*795d594fSAndroid Build Coastguard Worker           .findVirtual(BaseInterface.class, "method", methodType(String.class));
176*795d594fSAndroid Build Coastguard Worker     } catch (Exception e) {
177*795d594fSAndroid Build Coastguard Worker       throw new RuntimeException(e);
178*795d594fSAndroid Build Coastguard Worker     }
179*795d594fSAndroid Build Coastguard Worker   }
180*795d594fSAndroid Build Coastguard Worker 
repeat(int times, Class<?> clazz)181*795d594fSAndroid Build Coastguard Worker   private static Class<?>[] repeat(int times, Class<?> clazz) {
182*795d594fSAndroid Build Coastguard Worker     Class<?>[] classes = new Class<?>[times];
183*795d594fSAndroid Build Coastguard Worker     Arrays.fill(classes, clazz);
184*795d594fSAndroid Build Coastguard Worker     return classes;
185*795d594fSAndroid Build Coastguard Worker   }
186*795d594fSAndroid Build Coastguard Worker 
repeat(int times, Class<?> first, Class<?> second)187*795d594fSAndroid Build Coastguard Worker   private static Class<?>[] repeat(int times, Class<?> first, Class<?> second) {
188*795d594fSAndroid Build Coastguard Worker     Class<?>[] classes = new Class<?>[times * 2];
189*795d594fSAndroid Build Coastguard Worker     for (int i = 0; i < 2 * times;) {
190*795d594fSAndroid Build Coastguard Worker       classes[i++] = first;
191*795d594fSAndroid Build Coastguard Worker       classes[i++] = second;
192*795d594fSAndroid Build Coastguard Worker     }
193*795d594fSAndroid Build Coastguard Worker     return classes;
194*795d594fSAndroid Build Coastguard Worker   }
195*795d594fSAndroid Build Coastguard Worker 
196*795d594fSAndroid Build Coastguard Worker   @Override
$noinline$privateMethods()197*795d594fSAndroid Build Coastguard Worker   void $noinline$privateMethods() throws Throwable {
198*795d594fSAndroid Build Coastguard Worker     assertEquals("boo", (String) PRIVATE_INTERFACE_METHOD.invokeExact((I) new A()));
199*795d594fSAndroid Build Coastguard Worker 
200*795d594fSAndroid Build Coastguard Worker     int privateIntA = (int) A_PRIVATE_RETURN_INT.invokeExact(new A());
201*795d594fSAndroid Build Coastguard Worker     assertEquals(1042, privateIntA);
202*795d594fSAndroid Build Coastguard Worker 
203*795d594fSAndroid Build Coastguard Worker     int privateIntB = (int) B_PRIVATE_RETURN_INT.invokeExact(new B());
204*795d594fSAndroid Build Coastguard Worker     assertEquals(9999, privateIntB);
205*795d594fSAndroid Build Coastguard Worker 
206*795d594fSAndroid Build Coastguard Worker     privateIntB = (int) B_PRIVATE_RETURN_INT.invokeExact((B) new A());
207*795d594fSAndroid Build Coastguard Worker     assertEquals(9999, privateIntB);
208*795d594fSAndroid Build Coastguard Worker   }
209*795d594fSAndroid Build Coastguard Worker 
210*795d594fSAndroid Build Coastguard Worker   @Override
voidMethod()211*795d594fSAndroid Build Coastguard Worker   public MethodHandle voidMethod() {
212*795d594fSAndroid Build Coastguard Worker     return VOID_METHOD;
213*795d594fSAndroid Build Coastguard Worker   }
214*795d594fSAndroid Build Coastguard Worker 
215*795d594fSAndroid Build Coastguard Worker   @Override
returnDouble()216*795d594fSAndroid Build Coastguard Worker   public MethodHandle returnDouble() {
217*795d594fSAndroid Build Coastguard Worker     return RETURN_DOUBLE;
218*795d594fSAndroid Build Coastguard Worker   }
219*795d594fSAndroid Build Coastguard Worker 
220*795d594fSAndroid Build Coastguard Worker   @Override
returnInt()221*795d594fSAndroid Build Coastguard Worker   public MethodHandle returnInt() {
222*795d594fSAndroid Build Coastguard Worker     return RETURN_INT;
223*795d594fSAndroid Build Coastguard Worker   }
224*795d594fSAndroid Build Coastguard Worker 
225*795d594fSAndroid Build Coastguard Worker   @Override
interfaceDefaultMethod()226*795d594fSAndroid Build Coastguard Worker   public MethodHandle interfaceDefaultMethod() {
227*795d594fSAndroid Build Coastguard Worker     return INTERFACE_DEFAULT_METHOD;
228*795d594fSAndroid Build Coastguard Worker   }
229*795d594fSAndroid Build Coastguard Worker 
230*795d594fSAndroid Build Coastguard Worker   @Override
overwrittenInterfaceDefaultMethod()231*795d594fSAndroid Build Coastguard Worker   public MethodHandle overwrittenInterfaceDefaultMethod() {
232*795d594fSAndroid Build Coastguard Worker     return OVERWRITTEN_INTERFACE_DEFAULT_METHOD;
233*795d594fSAndroid Build Coastguard Worker   }
234*795d594fSAndroid Build Coastguard Worker 
235*795d594fSAndroid Build Coastguard Worker   @Override
exceptionThrowingMethod()236*795d594fSAndroid Build Coastguard Worker   public MethodHandle exceptionThrowingMethod() {
237*795d594fSAndroid Build Coastguard Worker     return EXCEPTION_THROWING_METHOD;
238*795d594fSAndroid Build Coastguard Worker   }
239*795d594fSAndroid Build Coastguard Worker 
240*795d594fSAndroid Build Coastguard Worker   @Override
staticMethod()241*795d594fSAndroid Build Coastguard Worker   public MethodHandle staticMethod() {
242*795d594fSAndroid Build Coastguard Worker     return STATIC_METHOD;
243*795d594fSAndroid Build Coastguard Worker   }
244*795d594fSAndroid Build Coastguard Worker 
245*795d594fSAndroid Build Coastguard Worker   @Override
sumI()246*795d594fSAndroid Build Coastguard Worker   public MethodHandle sumI() {
247*795d594fSAndroid Build Coastguard Worker     return SUM_I;
248*795d594fSAndroid Build Coastguard Worker   }
249*795d594fSAndroid Build Coastguard Worker 
250*795d594fSAndroid Build Coastguard Worker   @Override
sum2I()251*795d594fSAndroid Build Coastguard Worker   public MethodHandle sum2I() {
252*795d594fSAndroid Build Coastguard Worker     return SUM_2I;
253*795d594fSAndroid Build Coastguard Worker   }
254*795d594fSAndroid Build Coastguard Worker 
255*795d594fSAndroid Build Coastguard Worker   @Override
sum3I()256*795d594fSAndroid Build Coastguard Worker   public MethodHandle sum3I() {
257*795d594fSAndroid Build Coastguard Worker     return SUM_3I;
258*795d594fSAndroid Build Coastguard Worker   }
259*795d594fSAndroid Build Coastguard Worker 
260*795d594fSAndroid Build Coastguard Worker   @Override
sum4I()261*795d594fSAndroid Build Coastguard Worker   public MethodHandle sum4I() {
262*795d594fSAndroid Build Coastguard Worker     return SUM_4I;
263*795d594fSAndroid Build Coastguard Worker   }
264*795d594fSAndroid Build Coastguard Worker 
265*795d594fSAndroid Build Coastguard Worker   @Override
sum5I()266*795d594fSAndroid Build Coastguard Worker   public MethodHandle sum5I() {
267*795d594fSAndroid Build Coastguard Worker     return SUM_5I;
268*795d594fSAndroid Build Coastguard Worker   }
269*795d594fSAndroid Build Coastguard Worker 
270*795d594fSAndroid Build Coastguard Worker   @Override
sum6I()271*795d594fSAndroid Build Coastguard Worker   public MethodHandle sum6I() {
272*795d594fSAndroid Build Coastguard Worker     return SUM_6I;
273*795d594fSAndroid Build Coastguard Worker   }
274*795d594fSAndroid Build Coastguard Worker 
275*795d594fSAndroid Build Coastguard Worker   @Override
sum7I()276*795d594fSAndroid Build Coastguard Worker   public MethodHandle sum7I() {
277*795d594fSAndroid Build Coastguard Worker     return SUM_7I;
278*795d594fSAndroid Build Coastguard Worker   }
279*795d594fSAndroid Build Coastguard Worker 
280*795d594fSAndroid Build Coastguard Worker   @Override
sum8I()281*795d594fSAndroid Build Coastguard Worker   public MethodHandle sum8I() {
282*795d594fSAndroid Build Coastguard Worker     return SUM_8I;
283*795d594fSAndroid Build Coastguard Worker   }
284*795d594fSAndroid Build Coastguard Worker 
285*795d594fSAndroid Build Coastguard Worker   @Override
sum9I()286*795d594fSAndroid Build Coastguard Worker   public MethodHandle sum9I() {
287*795d594fSAndroid Build Coastguard Worker     return SUM_9I;
288*795d594fSAndroid Build Coastguard Worker   }
289*795d594fSAndroid Build Coastguard Worker 
290*795d594fSAndroid Build Coastguard Worker   @Override
sum10I()291*795d594fSAndroid Build Coastguard Worker   public MethodHandle sum10I() {
292*795d594fSAndroid Build Coastguard Worker     return SUM_10I;
293*795d594fSAndroid Build Coastguard Worker   }
294*795d594fSAndroid Build Coastguard Worker 
295*795d594fSAndroid Build Coastguard Worker   @Override
sumIJ()296*795d594fSAndroid Build Coastguard Worker   public MethodHandle sumIJ() {
297*795d594fSAndroid Build Coastguard Worker     return SUM_IJ;
298*795d594fSAndroid Build Coastguard Worker   }
299*795d594fSAndroid Build Coastguard Worker 
300*795d594fSAndroid Build Coastguard Worker   @Override
sum2IJ()301*795d594fSAndroid Build Coastguard Worker   public MethodHandle sum2IJ() {
302*795d594fSAndroid Build Coastguard Worker     return SUM_2IJ;
303*795d594fSAndroid Build Coastguard Worker   }
304*795d594fSAndroid Build Coastguard Worker 
305*795d594fSAndroid Build Coastguard Worker   @Override
sum3IJ()306*795d594fSAndroid Build Coastguard Worker   public MethodHandle sum3IJ() {
307*795d594fSAndroid Build Coastguard Worker     return SUM_3IJ;
308*795d594fSAndroid Build Coastguard Worker   }
309*795d594fSAndroid Build Coastguard Worker 
310*795d594fSAndroid Build Coastguard Worker   @Override
sum4IJ()311*795d594fSAndroid Build Coastguard Worker   public MethodHandle sum4IJ() {
312*795d594fSAndroid Build Coastguard Worker     return SUM_4IJ;
313*795d594fSAndroid Build Coastguard Worker   }
314*795d594fSAndroid Build Coastguard Worker 
315*795d594fSAndroid Build Coastguard Worker   @Override
sum5IJ()316*795d594fSAndroid Build Coastguard Worker   public MethodHandle sum5IJ() {
317*795d594fSAndroid Build Coastguard Worker     return SUM_5IJ;
318*795d594fSAndroid Build Coastguard Worker   }
319*795d594fSAndroid Build Coastguard Worker 
320*795d594fSAndroid Build Coastguard Worker   @Override
fooNonDefault()321*795d594fSAndroid Build Coastguard Worker   public MethodHandle fooNonDefault() {
322*795d594fSAndroid Build Coastguard Worker     return FOO_NONDEFAULT;
323*795d594fSAndroid Build Coastguard Worker   }
324*795d594fSAndroid Build Coastguard Worker 
325*795d594fSAndroid Build Coastguard Worker   @Override
fooBarImplNonDefault()326*795d594fSAndroid Build Coastguard Worker   public MethodHandle fooBarImplNonDefault() {
327*795d594fSAndroid Build Coastguard Worker     return FOOBARIMPL_NONDEFAULT;
328*795d594fSAndroid Build Coastguard Worker   }
329*795d594fSAndroid Build Coastguard Worker 
330*795d594fSAndroid Build Coastguard Worker   @Override
barDefault()331*795d594fSAndroid Build Coastguard Worker   public MethodHandle barDefault() {
332*795d594fSAndroid Build Coastguard Worker     return BAR_DEFAULT;
333*795d594fSAndroid Build Coastguard Worker   }
334*795d594fSAndroid Build Coastguard Worker 
335*795d594fSAndroid Build Coastguard Worker   @Override
fooDefault()336*795d594fSAndroid Build Coastguard Worker   public MethodHandle fooDefault() {
337*795d594fSAndroid Build Coastguard Worker     return FOO_DEFAULT;
338*795d594fSAndroid Build Coastguard Worker   }
339*795d594fSAndroid Build Coastguard Worker 
340*795d594fSAndroid Build Coastguard Worker   @Override
fooBarImplDefault()341*795d594fSAndroid Build Coastguard Worker   public MethodHandle fooBarImplDefault() {
342*795d594fSAndroid Build Coastguard Worker     return FOOBARIMPL_DEFAULT;
343*795d594fSAndroid Build Coastguard Worker   }
344*795d594fSAndroid Build Coastguard Worker 
345*795d594fSAndroid Build Coastguard Worker   @Override
fooNonOverriddenDefault()346*795d594fSAndroid Build Coastguard Worker   public MethodHandle fooNonOverriddenDefault() {
347*795d594fSAndroid Build Coastguard Worker     return FOO_NONOVERRIDDEN_DEFAULT;
348*795d594fSAndroid Build Coastguard Worker   }
349*795d594fSAndroid Build Coastguard Worker 
350*795d594fSAndroid Build Coastguard Worker   @Override
barNonOverriddenDefault()351*795d594fSAndroid Build Coastguard Worker   public MethodHandle barNonOverriddenDefault() {
352*795d594fSAndroid Build Coastguard Worker     return BAR_NONOVERRIDDEN_DEFAULT;
353*795d594fSAndroid Build Coastguard Worker   }
354*795d594fSAndroid Build Coastguard Worker 
355*795d594fSAndroid Build Coastguard Worker   @Override
fooBarDefinedInAbstract()356*795d594fSAndroid Build Coastguard Worker   public MethodHandle fooBarDefinedInAbstract() {
357*795d594fSAndroid Build Coastguard Worker     return FOOBAR_DEFINEDINABSTRACT;
358*795d594fSAndroid Build Coastguard Worker   }
359*795d594fSAndroid Build Coastguard Worker 
360*795d594fSAndroid Build Coastguard Worker   @Override
fooBarImplDefinedInAbstract()361*795d594fSAndroid Build Coastguard Worker   public MethodHandle fooBarImplDefinedInAbstract() {
362*795d594fSAndroid Build Coastguard Worker     return FOOBARIMPL_DEFINEDINABSTRACT;
363*795d594fSAndroid Build Coastguard Worker   }
364*795d594fSAndroid Build Coastguard Worker 
365*795d594fSAndroid Build Coastguard Worker   @Override
fooBarNonDefault()366*795d594fSAndroid Build Coastguard Worker   public MethodHandle fooBarNonDefault() {
367*795d594fSAndroid Build Coastguard Worker     return FOOBAR_NONDEFAULT;
368*795d594fSAndroid Build Coastguard Worker   }
369*795d594fSAndroid Build Coastguard Worker 
370*795d594fSAndroid Build Coastguard Worker   @Override
toStringDefinedInAnInterface()371*795d594fSAndroid Build Coastguard Worker   public MethodHandle toStringDefinedInAnInterface() {
372*795d594fSAndroid Build Coastguard Worker     return TO_STRING_DEFINED_IN_AN_INTERFACE;
373*795d594fSAndroid Build Coastguard Worker   }
374*795d594fSAndroid Build Coastguard Worker 
375*795d594fSAndroid Build Coastguard Worker   @Override
optionalGet()376*795d594fSAndroid Build Coastguard Worker   public MethodHandle optionalGet() {
377*795d594fSAndroid Build Coastguard Worker     return OPTIONAL_GET;
378*795d594fSAndroid Build Coastguard Worker   }
379*795d594fSAndroid Build Coastguard Worker 
380*795d594fSAndroid Build Coastguard Worker   @Override
interfaceOneMethod()381*795d594fSAndroid Build Coastguard Worker   public MethodHandle interfaceOneMethod() {
382*795d594fSAndroid Build Coastguard Worker     return INTERFACE_ONE_METHOD;
383*795d594fSAndroid Build Coastguard Worker   }
384*795d594fSAndroid Build Coastguard Worker 
385*795d594fSAndroid Build Coastguard Worker   @Override
interfaceTwoMethod()386*795d594fSAndroid Build Coastguard Worker   public MethodHandle interfaceTwoMethod() {
387*795d594fSAndroid Build Coastguard Worker     return INTERFACE_TWO_METHOD;
388*795d594fSAndroid Build Coastguard Worker   }
389*795d594fSAndroid Build Coastguard Worker 
390*795d594fSAndroid Build Coastguard Worker   @Override
interfaceThreeMethod()391*795d594fSAndroid Build Coastguard Worker   public MethodHandle interfaceThreeMethod() {
392*795d594fSAndroid Build Coastguard Worker     return INTERFACE_THREE_METHOD;
393*795d594fSAndroid Build Coastguard Worker   }
394*795d594fSAndroid Build Coastguard Worker 
395*795d594fSAndroid Build Coastguard Worker   @Override
interfaceFourMethod()396*795d594fSAndroid Build Coastguard Worker   public MethodHandle interfaceFourMethod() {
397*795d594fSAndroid Build Coastguard Worker     return INTERFACE_FOUR_METHOD;
398*795d594fSAndroid Build Coastguard Worker   }
399*795d594fSAndroid Build Coastguard Worker 
400*795d594fSAndroid Build Coastguard Worker   @Override
fooAndFooConflictDefault()401*795d594fSAndroid Build Coastguard Worker   public MethodHandle fooAndFooConflictDefault() {
402*795d594fSAndroid Build Coastguard Worker     return FOO_AND_FOO_CONFLICT_DEFAULT;
403*795d594fSAndroid Build Coastguard Worker   }
404*795d594fSAndroid Build Coastguard Worker 
405*795d594fSAndroid Build Coastguard Worker   @Override
baseInterface()406*795d594fSAndroid Build Coastguard Worker   public MethodHandle baseInterface() {
407*795d594fSAndroid Build Coastguard Worker     return BASE_INTERFACE;
408*795d594fSAndroid Build Coastguard Worker   }
409*795d594fSAndroid Build Coastguard Worker }
410