1 /*******************************************************************************
2  * Copyright (c) 2006, 2018 IBM Corporation and others.
3  *
4  * This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License 2.0
6  * which accompanies this distribution, and is available at
7  * https://www.eclipse.org/legal/epl-2.0/
8  *
9  * SPDX-License-Identifier: EPL-2.0
10  *
11  * Contributors:
12  *     IBM Corporation - initial API and implementation
13  *     Stephan Herrmann - Contribution for
14  *								bug 388800 - [1.8] adjust tests to 1.8 JRE
15  *								Bug 412203 - [compiler] Internal compiler error: java.lang.IllegalArgumentException: info cannot be null
16  *								Bug 400874 - [1.8][compiler] Inference infrastructure should evolve to meet JLS8 18.x (Part G of JSR335 spec)
17  *******************************************************************************/
18 package org.eclipse.jdt.core.tests.compiler.regression;
19 
20 import java.io.File;
21 import java.util.Map;
22 
23 import junit.framework.Test;
24 
25 import org.eclipse.jdt.core.JavaCore;
26 import org.eclipse.jdt.core.ToolFactory;
27 import org.eclipse.jdt.core.tests.util.Util;
28 import org.eclipse.jdt.core.util.ClassFileBytesDisassembler;
29 import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
30 
31 @SuppressWarnings({ "unchecked", "rawtypes" })
32 public class StackMapAttributeTest extends AbstractRegressionTest {
StackMapAttributeTest(String name)33 	public StackMapAttributeTest(String name) {
34 		super(name);
35 	}
36 
testClass()37 	public static Class testClass() {
38 		return StackMapAttributeTest.class;
39 	}
40 
41 	// Use this static initializer to specify subset for tests
42 	// All specified tests which does not belong to the class are skipped...
43 	static {
44 //		TESTS_PREFIX = "testBug95521";
45 //		TESTS_NAMES = new String[] { "testBug412076_" };
46 //		TESTS_NUMBERS = new int[] { 53 };
47 //		TESTS_RANGE = new int[] { 23 -1,};
48 	}
suite()49 	public static Test suite() {
50 		return buildMinimalComplianceTestSuite(testClass(), F_1_6);
51 	}
test001()52 	public void test001() throws Exception {
53 		this.runConformTest(
54 				new String[] {
55 					"X.java",
56 					"public class X {\n" +
57 					"	X() {}\n" +
58 					"	X(double i) {\n" +
59 					"		this(i > 0 ? null : new Object());\n" +
60 					"		try {\n" +
61 					"			foo(6, false);\n" +
62 					"		} catch(Exception e) {\n" +
63 					"			e.printStackTrace();\n" +
64 					"		}\n" +
65 					"	}\n" +
66 					"	X(Object o) {}\n" +
67 					"	int foo(int i, boolean b) {\n" +
68 					"		try {\n" +
69 					"			if (b) {\n" +
70 					"				return i;\n" +
71 					"			}\n" +
72 					"			return i + 1;\n" +
73 					"		} catch(Exception e) {\n" +
74 					"			return 5;\n" +
75 					"		}\n" +
76 					"	}\n" +
77 					"	public static void main(String[] args) {\n" +
78 					"		new X().foo(2, false);\n" +
79 					"		System.out.println(\"SUCCESS\");\n" +
80 					"	}\n" +
81 					"}",
82 				},
83 				"SUCCESS");
84 
85 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
86 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
87 			String actualOutput =
88 				disassembler.disassemble(
89 					classFileBytes,
90 					"\n",
91 					ClassFileBytesDisassembler.DETAILED);
92 
93 			String expectedOutput =
94 				"  // Method descriptor #14 (D)V\n" +
95 				"  // Stack: 5, Locals: 4\n" +
96 				"  X(double i);\n" +
97 				"     0  aload_0 [this]\n" +
98 				"     1  dload_1 [i]\n" +
99 				"     2  dconst_0\n" +
100 				"     3  dcmpl\n" +
101 				"     4  ifle 11\n" +
102 				"     7  aconst_null\n" +
103 				"     8  goto 18\n" +
104 				"    11  new java.lang.Object [3]\n" +
105 				"    14  dup\n" +
106 				"    15  invokespecial java.lang.Object() [8]\n" +
107 				"    18  invokespecial X(java.lang.Object) [15]\n" +
108 				"    21  aload_0 [this]\n" +
109 				"    22  bipush 6\n" +
110 				"    24  iconst_0\n" +
111 				"    25  invokevirtual X.foo(int, boolean) : int [18]\n" +
112 				"    28  pop\n" +
113 				"    29  goto 37\n" +
114 				"    32  astore_3 [e]\n" +
115 				"    33  aload_3 [e]\n" +
116 				"    34  invokevirtual java.lang.Exception.printStackTrace() : void [22]\n" +
117 				"    37  return\n" +
118 				"      Exception Table:\n" +
119 				"        [pc: 21, pc: 29] -> 32 when : java.lang.Exception\n" +
120 				"      Line numbers:\n" +
121 				"        [pc: 0, line: 4]\n" +
122 				"        [pc: 21, line: 6]\n" +
123 				"        [pc: 29, line: 7]\n" +
124 				"        [pc: 33, line: 8]\n" +
125 				"        [pc: 37, line: 10]\n" +
126 				"      Local variable table:\n" +
127 				"        [pc: 0, pc: 38] local: this index: 0 type: X\n" +
128 				"        [pc: 0, pc: 38] local: i index: 1 type: double\n" +
129 				"        [pc: 33, pc: 37] local: e index: 3 type: java.lang.Exception\n" +
130 				"      Stack map table: number of frames 4\n" +
131 				"        [pc: 11, same_locals_1_stack_item, stack: {uninitialized_this}]\n" +
132 				"        [pc: 18, full, stack: {uninitialized_this, java.lang.Object}, locals: {uninitialized_this, double}]\n" +
133 				"        [pc: 32, full, stack: {java.lang.Exception}, locals: {X, double}]\n" +
134 				"        [pc: 37, same]\n" +
135 				"  \n" +
136 				"  // Method descriptor #17 (Ljava/lang/Object;)V\n" +
137 				"  // Stack: 1, Locals: 2\n" +
138 				"  X(java.lang.Object o);\n" +
139 				"    0  aload_0 [this]\n" +
140 				"    1  invokespecial java.lang.Object() [8]\n" +
141 				"    4  return\n" +
142 				"      Line numbers:\n" +
143 				"        [pc: 0, line: 11]\n" +
144 				"      Local variable table:\n" +
145 				"        [pc: 0, pc: 5] local: this index: 0 type: X\n" +
146 				"        [pc: 0, pc: 5] local: o index: 1 type: java.lang.Object\n" +
147 				"  \n" +
148 				"  // Method descriptor #21 (IZ)I\n" +
149 				"  // Stack: 2, Locals: 4\n" +
150 				"  int foo(int i, boolean b);\n" +
151 				"     0  iload_2 [b]\n" +
152 				"     1  ifeq 6\n" +
153 				"     4  iload_1 [i]\n" +
154 				"     5  ireturn\n" +
155 				"     6  iload_1 [i]\n" +
156 				"     7  iconst_1\n" +
157 				"     8  iadd\n" +
158 				"     9  ireturn\n" +
159 				"    10  astore_3 [e]\n" +
160 				"    11  iconst_5\n" +
161 				"    12  ireturn\n" +
162 				"      Exception Table:\n" +
163 				"        [pc: 0, pc: 5] -> 10 when : java.lang.Exception\n" +
164 				"        [pc: 6, pc: 9] -> 10 when : java.lang.Exception\n" +
165 				"      Line numbers:\n" +
166 				"        [pc: 0, line: 14]\n" +
167 				"        [pc: 4, line: 15]\n" +
168 				"        [pc: 6, line: 17]\n" +
169 				"        [pc: 10, line: 18]\n" +
170 				"        [pc: 11, line: 19]\n" +
171 				"      Local variable table:\n" +
172 				"        [pc: 0, pc: 13] local: this index: 0 type: X\n" +
173 				"        [pc: 0, pc: 13] local: i index: 1 type: int\n" +
174 				"        [pc: 0, pc: 13] local: b index: 2 type: boolean\n" +
175 				"        [pc: 11, pc: 13] local: e index: 3 type: java.lang.Exception\n" +
176 				"      Stack map table: number of frames 2\n" +
177 				"        [pc: 6, same]\n" +
178 				"        [pc: 10, same_locals_1_stack_item, stack: {java.lang.Exception}]\n";
179 
180 			int index = actualOutput.indexOf(expectedOutput);
181 			if (index == -1 || expectedOutput.length() == 0) {
182 				System.out.println(Util.displayString(actualOutput, 2));
183 			}
184 			if (index == -1) {
185 				assertEquals("Wrong contents", expectedOutput, actualOutput);
186 			}
187 	}
test002()188 	public void test002() throws Exception {
189 		this.runConformTest(
190 				new String[] {
191 					"X.java",
192 					"public class X {\n" +
193 					"	public static void foo(double d, boolean b) {\n" +
194 					"		double i;\n" +
195 					"		try {\n" +
196 					"			i = 0;\n" +
197 					"			i++;\n" +
198 					"			int j = (int) (i - 1);\n" +
199 					"			if (b) {\n" +
200 					"				double d1 = 0;\n" +
201 					"				if (!b) {\n" +
202 					"					d1 = 0;\n" +
203 					"				}\n" +
204 					"				double d2 = d + d1;\n" +
205 					"			}\n" +
206 					"			bar(j);\n" +
207 					"		} catch(NullPointerException e) {\n" +
208 					"			i = 2;\n" +
209 					"		} finally {\n" +
210 					"			i = 1;\n" +
211 					"		}\n" +
212 					"		long j = (long) (i + 1);\n" +
213 					"		int k = (int) j;\n" +
214 					"		k += j;\n" +
215 					"	}\n" +
216 					"	public static void bar(int i) {}\n" +
217 					"	public static void main(String[] args) {\n" +
218 					"		foo(0, true);\n" +
219 					"		System.out.println(\"SUCCESS\");\n" +
220 					"	}\n" +
221 					"}",
222 				},
223 				"SUCCESS");
224 
225 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
226 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
227 			String actualOutput =
228 				disassembler.disassemble(
229 					classFileBytes,
230 					"\n",
231 					ClassFileBytesDisassembler.DETAILED);
232 
233 			String expectedOutput =
234 				"  // Method descriptor #15 (DZ)V\n" +
235 				"  // Stack: 4, Locals: 11\n" +
236 				"  public static void foo(double d, boolean b);\n" +
237 				"     0  dconst_0\n" +
238 				"     1  dstore_3 [i]\n" +
239 				"     2  dload_3 [i]\n" +
240 				"     3  dconst_1\n" +
241 				"     4  dadd\n" +
242 				"     5  dstore_3 [i]\n" +
243 				"     6  dload_3 [i]\n" +
244 				"     7  dconst_1\n" +
245 				"     8  dsub\n" +
246 				"     9  d2i\n" +
247 				"    10  istore 5 [j]\n" +
248 				"    12  iload_2 [b]\n" +
249 				"    13  ifeq 32\n" +
250 				"    16  dconst_0\n" +
251 				"    17  dstore 6 [d1]\n" +
252 				"    19  iload_2 [b]\n" +
253 				"    20  ifne 26\n" +
254 				"    23  dconst_0\n" +
255 				"    24  dstore 6 [d1]\n" +
256 				"    26  dload_0 [d]\n" +
257 				"    27  dload 6 [d1]\n" +
258 				"    29  dadd\n" +
259 				"    30  dstore 8\n" +
260 				"    32  iload 5 [j]\n" +
261 				"    34  invokestatic X.bar(int) : void [16]\n" +
262 				"    37  goto 58\n" +
263 				"    40  astore 5 [e]\n" +
264 				"    42  ldc2_w <Double 2.0> [20]\n" +
265 				"    45  dstore_3 [i]\n" +
266 				"    46  dconst_1\n" +
267 				"    47  dstore_3 [i]\n" +
268 				"    48  goto 60\n" +
269 				"    51  astore 10\n" +
270 				"    53  dconst_1\n" +
271 				"    54  dstore_3 [i]\n" +
272 				"    55  aload 10\n" +
273 				"    57  athrow\n" +
274 				"    58  dconst_1\n" +
275 				"    59  dstore_3 [i]\n" +
276 				"    60  dload_3 [i]\n" +
277 				"    61  dconst_1\n" +
278 				"    62  dadd\n" +
279 				"    63  d2l\n" +
280 				"    64  lstore 5 [j]\n" +
281 				"    66  lload 5 [j]\n" +
282 				"    68  l2i\n" +
283 				"    69  istore 7 [k]\n" +
284 				"    71  iload 7 [k]\n" +
285 				"    73  i2l\n" +
286 				"    74  lload 5 [j]\n" +
287 				"    76  ladd\n" +
288 				"    77  l2i\n" +
289 				"    78  istore 7 [k]\n" +
290 				"    80  return\n" +
291 				"      Exception Table:\n" +
292 				"        [pc: 0, pc: 37] -> 40 when : java.lang.NullPointerException\n" +
293 				"        [pc: 0, pc: 46] -> 51 when : any\n" +
294 				"      Line numbers:\n" +
295 				"        [pc: 0, line: 5]\n" +
296 				"        [pc: 2, line: 6]\n" +
297 				"        [pc: 6, line: 7]\n" +
298 				"        [pc: 12, line: 8]\n" +
299 				"        [pc: 16, line: 9]\n" +
300 				"        [pc: 19, line: 10]\n" +
301 				"        [pc: 23, line: 11]\n" +
302 				"        [pc: 26, line: 13]\n" +
303 				"        [pc: 32, line: 15]\n" +
304 				"        [pc: 37, line: 16]\n" +
305 				"        [pc: 42, line: 17]\n" +
306 				"        [pc: 46, line: 19]\n" +
307 				"        [pc: 51, line: 18]\n" +
308 				"        [pc: 53, line: 19]\n" +
309 				"        [pc: 55, line: 20]\n" +
310 				"        [pc: 58, line: 19]\n" +
311 				"        [pc: 60, line: 21]\n" +
312 				"        [pc: 66, line: 22]\n" +
313 				"        [pc: 71, line: 23]\n" +
314 				"        [pc: 80, line: 24]\n" +
315 				"      Local variable table:\n" +
316 				"        [pc: 0, pc: 81] local: d index: 0 type: double\n" +
317 				"        [pc: 0, pc: 81] local: b index: 2 type: boolean\n" +
318 				"        [pc: 2, pc: 40] local: i index: 3 type: double\n" +
319 				"        [pc: 46, pc: 51] local: i index: 3 type: double\n" +
320 				"        [pc: 55, pc: 81] local: i index: 3 type: double\n" +
321 				"        [pc: 12, pc: 37] local: j index: 5 type: int\n" +
322 				"        [pc: 19, pc: 32] local: d1 index: 6 type: double\n" +
323 				"        [pc: 42, pc: 46] local: e index: 5 type: java.lang.NullPointerException\n" +
324 				"        [pc: 66, pc: 81] local: j index: 5 type: long\n" +
325 				"        [pc: 71, pc: 81] local: k index: 7 type: int\n" +
326 				"      Stack map table: number of frames 6\n" +
327 				"        [pc: 26, append: {double, int, double}]\n" +
328 				"        [pc: 32, chop 1 local(s)]\n" +
329 				"        [pc: 40, full, stack: {java.lang.NullPointerException}, locals: {double, int}]\n" +
330 				"        [pc: 51, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" +
331 				"        [pc: 58, append: {double}]\n" +
332 				"        [pc: 60, same]\n";
333 
334 			int index = actualOutput.indexOf(expectedOutput);
335 			if (index == -1 || expectedOutput.length() == 0) {
336 				System.out.println(Util.displayString(actualOutput, 2));
337 			}
338 			if (index == -1) {
339 				assertEquals("Wrong contents", expectedOutput, actualOutput);
340 			}
341 	}
test003()342 	public void test003() throws Exception {
343 		this.runConformTest(
344 				new String[] {
345 					"X.java",
346 					"public class X {\n" +
347 					"	public static void foo(boolean b) {\n" +
348 					"		int i = 0;\n" +
349 					"		try {\n" +
350 					"			System.out.println(\"FINALLY\");\n" +
351 					"			i++;\n" +
352 					"			int j = i -1;\n" +
353 					"			bar(j);\n" +
354 					"		} catch(NullPointerException e) {\n" +
355 					"			e.printStackTrace();\n" +
356 					"		} finally {\n" +
357 					"			System.out.println(\"FINALLY\");\n" +
358 					"		}\n" +
359 					"	}\n" +
360 					"	public static void bar(int i) {}\n" +
361 					"	\n" +
362 					"	public static void main(String[] args) {\n" +
363 					"		foo(true);\n" +
364 					"		System.out.println(\"SUCCESS\");\n" +
365 					"	}\n" +
366 					"}",
367 				},
368 				"FINALLY\n" +
369 				"FINALLY\n" +
370 				"SUCCESS");
371 
372 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
373 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
374 			String actualOutput =
375 				disassembler.disassemble(
376 					classFileBytes,
377 					"\n",
378 					ClassFileBytesDisassembler.DETAILED);
379 
380 			String expectedOutput =
381 				"  // Method descriptor #15 (Z)V\n" +
382 				"  // Stack: 2, Locals: 4\n" +
383 				"  public static void foo(boolean b);\n" +
384 				"     0  iconst_0\n" +
385 				"     1  istore_1 [i]\n" +
386 				"     2  getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
387 				"     5  ldc <String \"FINALLY\"> [22]\n" +
388 				"     7  invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" +
389 				"    10  iinc 1 1 [i]\n" +
390 				"    13  iload_1 [i]\n" +
391 				"    14  iconst_1\n" +
392 				"    15  isub\n" +
393 				"    16  istore_2 [j]\n" +
394 				"    17  iload_2 [j]\n" +
395 				"    18  invokestatic X.bar(int) : void [30]\n" +
396 				"    21  goto 51\n" +
397 				"    24  astore_2 [e]\n" +
398 				"    25  aload_2 [e]\n" +
399 				"    26  invokevirtual java.lang.NullPointerException.printStackTrace() : void [34]\n" +
400 				"    29  getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
401 				"    32  ldc <String \"FINALLY\"> [22]\n" +
402 				"    34  invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" +
403 				"    37  goto 59\n" +
404 				"    40  astore_3\n" +
405 				"    41  getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
406 				"    44  ldc <String \"FINALLY\"> [22]\n" +
407 				"    46  invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" +
408 				"    49  aload_3\n" +
409 				"    50  athrow\n" +
410 				"    51  getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
411 				"    54  ldc <String \"FINALLY\"> [22]\n" +
412 				"    56  invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" +
413 				"    59  return\n" +
414 				"      Exception Table:\n" +
415 				"        [pc: 2, pc: 21] -> 24 when : java.lang.NullPointerException\n" +
416 				"        [pc: 2, pc: 29] -> 40 when : any\n" +
417 				"      Line numbers:\n" +
418 				"        [pc: 0, line: 3]\n" +
419 				"        [pc: 2, line: 5]\n" +
420 				"        [pc: 10, line: 6]\n" +
421 				"        [pc: 13, line: 7]\n" +
422 				"        [pc: 17, line: 8]\n" +
423 				"        [pc: 21, line: 9]\n" +
424 				"        [pc: 25, line: 10]\n" +
425 				"        [pc: 29, line: 12]\n" +
426 				"        [pc: 40, line: 11]\n" +
427 				"        [pc: 41, line: 12]\n" +
428 				"        [pc: 49, line: 13]\n" +
429 				"        [pc: 51, line: 12]\n" +
430 				"        [pc: 59, line: 14]\n" +
431 				"      Local variable table:\n" +
432 				"        [pc: 0, pc: 60] local: b index: 0 type: boolean\n" +
433 				"        [pc: 2, pc: 60] local: i index: 1 type: int\n" +
434 				"        [pc: 17, pc: 21] local: j index: 2 type: int\n" +
435 				"        [pc: 25, pc: 29] local: e index: 2 type: java.lang.NullPointerException\n" +
436 				"      Stack map table: number of frames 4\n" +
437 				"        [pc: 24, full, stack: {java.lang.NullPointerException}, locals: {int, int}]\n" +
438 				"        [pc: 40, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" +
439 				"        [pc: 51, same]\n" +
440 				"        [pc: 59, same]\n";
441 
442 			int index = actualOutput.indexOf(expectedOutput);
443 			if (index == -1 || expectedOutput.length() == 0) {
444 				System.out.println(Util.displayString(actualOutput, 2));
445 			}
446 			if (index == -1) {
447 				assertEquals("Wrong contents", expectedOutput, actualOutput);
448 			}
449 	}
450 
test004()451 	public void test004() throws Exception {
452 		this.runConformTest(
453 				new String[] {
454 					"X.java",
455 					"public class X {\n" +
456 					"	public static void foo(boolean b) {\n" +
457 					"		C c;\n" +
458 					"		if (b) {\n" +
459 					"			c = new C1();\n" +
460 					"		} else {\n" +
461 					"			c = new C2();\n" +
462 					"		}\n" +
463 					"		System.out.println();\n" +
464 					"	}\n" +
465 					"	public static void main(String[] args) {\n" +
466 					"		foo(true);\n" +
467 					"		System.out.println(\"SUCCESS\");\n" +
468 					"	}\n" +
469 					"}\n" +
470 					"class C {\n" +
471 					"	void foo() {}\n" +
472 					"}\n" +
473 					"class C1 extends C {\n" +
474 					"}\n" +
475 					"class C2 extends C {\n" +
476 					"}",
477 				},
478 				"SUCCESS");
479 
480 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
481 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
482 			String actualOutput =
483 				disassembler.disassemble(
484 					classFileBytes,
485 					"\n",
486 					ClassFileBytesDisassembler.DETAILED);
487 
488 			String expectedOutput =
489 				"  // Method descriptor #15 (Z)V\n" +
490 				"  // Stack: 2, Locals: 2\n" +
491 				"  public static void foo(boolean b);\n" +
492 				"     0  iload_0 [b]\n" +
493 				"     1  ifeq 15\n" +
494 				"     4  new C1 [16]\n" +
495 				"     7  dup\n" +
496 				"     8  invokespecial C1() [18]\n" +
497 				"    11  astore_1 [c]\n" +
498 				"    12  goto 23\n" +
499 				"    15  new C2 [19]\n" +
500 				"    18  dup\n" +
501 				"    19  invokespecial C2() [21]\n" +
502 				"    22  astore_1 [c]\n" +
503 				"    23  getstatic java.lang.System.out : java.io.PrintStream [22]\n" +
504 				"    26  invokevirtual java.io.PrintStream.println() : void [28]\n" +
505 				"    29  return\n" +
506 				"      Line numbers:\n" +
507 				"        [pc: 0, line: 4]\n" +
508 				"        [pc: 4, line: 5]\n" +
509 				"        [pc: 12, line: 6]\n" +
510 				"        [pc: 15, line: 7]\n" +
511 				"        [pc: 23, line: 9]\n" +
512 				"        [pc: 29, line: 10]\n" +
513 				"      Local variable table:\n" +
514 				"        [pc: 0, pc: 30] local: b index: 0 type: boolean\n" +
515 				"        [pc: 12, pc: 15] local: c index: 1 type: C\n" +
516 				"        [pc: 23, pc: 30] local: c index: 1 type: C\n" +
517 				"      Stack map table: number of frames 2\n" +
518 				"        [pc: 15, same]\n" +
519 				"        [pc: 23, append: {C}]\n";
520 
521 			int index = actualOutput.indexOf(expectedOutput);
522 			if (index == -1 || expectedOutput.length() == 0) {
523 				System.out.println(Util.displayString(actualOutput, 2));
524 			}
525 			if (index == -1) {
526 				assertEquals("Wrong contents", expectedOutput, actualOutput);
527 			}
528 	}
test005()529 	public void test005() throws Exception {
530 		this.runConformTest(
531 				new String[] {
532 					"X.java",
533 					"public class X {\n" +
534 					"  public static void main(String args[]) {\n" +
535 					"    int i = 0, j, k, l;\n" +
536 					"    boolean b;\n" +
537 					"    if (i == 0 && (j = ++i) > 0)\n" +
538 					"      i += j;\n" +
539 					"    while (true) {\n" +
540 					"      k = 3;\n" +
541 					"      break;\n" +
542 					"    } \n" +
543 					"    i -= k;\n" +
544 					"    b = false && (i = l) > 0;\n" +
545 					"    if (i > 0)\n" +
546 					"      l = i;\n" +
547 					"    else\n" +
548 					"      l = k;\n" +
549 					"    j = l;\n" +
550 					"    if (i != -1 || j != 3 || k != 3 || l != 3)\n" +
551 					"      System.out.println(\"FAILED\");\n" +
552 					"    System.out.println(\"SUCCESS\");\n" +
553 					"  }\n" +
554 					"}",
555 				},
556 				"SUCCESS");
557 
558 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
559 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
560 			String actualOutput =
561 				disassembler.disassemble(
562 					classFileBytes,
563 					"\n",
564 					ClassFileBytesDisassembler.DETAILED);
565 
566 			String expectedOutput =
567 				"  // Method descriptor #15 ([Ljava/lang/String;)V\n" +
568 				"  // Stack: 2, Locals: 6\n" +
569 				"  public static void main(java.lang.String[] args);\n" +
570 				"     0  iconst_0\n" +
571 				"     1  istore_1 [i]\n" +
572 				"     2  iload_1 [i]\n" +
573 				"     3  ifne 19\n" +
574 				"     6  iinc 1 1 [i]\n" +
575 				"     9  iload_1 [i]\n" +
576 				"    10  dup\n" +
577 				"    11  istore_2 [j]\n" +
578 				"    12  ifle 19\n" +
579 				"    15  iload_1 [i]\n" +
580 				"    16  iload_2 [j]\n" +
581 				"    17  iadd\n" +
582 				"    18  istore_1 [i]\n" +
583 				"    19  iconst_3\n" +
584 				"    20  istore_3 [k]\n" +
585 				"    21  iload_1 [i]\n" +
586 				"    22  iload_3 [k]\n" +
587 				"    23  isub\n" +
588 				"    24  istore_1 [i]\n" +
589 				"    25  iconst_0\n" +
590 				"    26  istore 5 [b]\n" +
591 				"    28  iload_1 [i]\n" +
592 				"    29  ifle 38\n" +
593 				"    32  iload_1 [i]\n" +
594 				"    33  istore 4 [l]\n" +
595 				"    35  goto 41\n" +
596 				"    38  iload_3 [k]\n" +
597 				"    39  istore 4 [l]\n" +
598 				"    41  iload 4 [l]\n" +
599 				"    43  istore_2 [j]\n" +
600 				"    44  iload_1 [i]\n" +
601 				"    45  iconst_m1\n" +
602 				"    46  if_icmpne 65\n" +
603 				"    49  iload_2 [j]\n" +
604 				"    50  iconst_3\n" +
605 				"    51  if_icmpne 65\n" +
606 				"    54  iload_3 [k]\n" +
607 				"    55  iconst_3\n" +
608 				"    56  if_icmpne 65\n" +
609 				"    59  iload 4 [l]\n" +
610 				"    61  iconst_3\n" +
611 				"    62  if_icmpeq 73\n" +
612 				"    65  getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
613 				"    68  ldc <String \"FAILED\"> [22]\n" +
614 				"    70  invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" +
615 				"    73  getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
616 				"    76  ldc <String \"SUCCESS\"> [30]\n" +
617 				"    78  invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" +
618 				"    81  return\n" +
619 				"      Line numbers:\n" +
620 				"        [pc: 0, line: 3]\n" +
621 				"        [pc: 2, line: 5]\n" +
622 				"        [pc: 15, line: 6]\n" +
623 				"        [pc: 19, line: 8]\n" +
624 				"        [pc: 21, line: 9]\n" +
625 				"        [pc: 22, line: 11]\n" +
626 				"        [pc: 25, line: 12]\n" +
627 				"        [pc: 28, line: 13]\n" +
628 				"        [pc: 32, line: 14]\n" +
629 				"        [pc: 38, line: 16]\n" +
630 				"        [pc: 41, line: 17]\n" +
631 				"        [pc: 44, line: 18]\n" +
632 				"        [pc: 65, line: 19]\n" +
633 				"        [pc: 73, line: 20]\n" +
634 				"        [pc: 81, line: 21]\n" +
635 				"      Local variable table:\n" +
636 				"        [pc: 0, pc: 82] local: args index: 0 type: java.lang.String[]\n" +
637 				"        [pc: 2, pc: 82] local: i index: 1 type: int\n" +
638 				"        [pc: 12, pc: 19] local: j index: 2 type: int\n" +
639 				"        [pc: 44, pc: 82] local: j index: 2 type: int\n" +
640 				"        [pc: 21, pc: 82] local: k index: 3 type: int\n" +
641 				"        [pc: 35, pc: 38] local: l index: 4 type: int\n" +
642 				"        [pc: 41, pc: 82] local: l index: 4 type: int\n" +
643 				"        [pc: 28, pc: 82] local: b index: 5 type: boolean\n" +
644 				"      Stack map table: number of frames 5\n" +
645 				"        [pc: 19, append: {int}]\n" +
646 				"        [pc: 38, full, stack: {}, locals: {java.lang.String[], int, _, int, _, int}]\n" +
647 				"        [pc: 41, full, stack: {}, locals: {java.lang.String[], int, _, int, int, int}]\n" +
648 				"        [pc: 65, full, stack: {}, locals: {java.lang.String[], int, int, int, int, int}]\n" +
649 				"        [pc: 73, same]\n";
650 
651 			int index = actualOutput.indexOf(expectedOutput);
652 			if (index == -1 || expectedOutput.length() == 0) {
653 				System.out.println(Util.displayString(actualOutput, 2));
654 			}
655 			if (index == -1) {
656 				assertEquals("Wrong contents", expectedOutput, actualOutput);
657 			}
658 	}
659 
test006()660 	public void test006() throws Exception {
661 		this.runConformTest(
662 				new String[] {
663 					"X.java",
664 					"public class X {\n" +
665 					"	void foo (int n) {\n" +
666 					"   	synchronized (this) {\n" +
667 					"       	switch (n) {\n" +
668 					"       		case 1:\n" +
669 					"       		throw new NullPointerException();\n" +
670 					"			}\n" +
671 					"		}\n" +
672 					"	}\n" +
673 					"    public static void main(String args[]) {\n" +
674 					"    	try {\n" +
675 					"	    	new X().foo(1);\n" +
676 					"    	} catch(Exception e) {\n" +
677 					"	        System.out.println(\"SUCCESS\"); \n" +
678 					"    	}\n" +
679 					"    } \n" +
680 					"}",
681 				},
682 				"SUCCESS");
683 
684 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
685 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
686 			String actualOutput =
687 				disassembler.disassemble(
688 					classFileBytes,
689 					"\n",
690 					ClassFileBytesDisassembler.DETAILED);
691 
692 			String expectedOutput =
693 				"  // Method descriptor #15 (I)V\n" +
694 				"  // Stack: 2, Locals: 3\n" +
695 				"  void foo(int n);\n" +
696 				"     0  aload_0 [this]\n" +
697 				"     1  dup\n" +
698 				"     2  astore_2\n" +
699 				"     3  monitorenter\n" +
700 				"     4  iload_1 [n]\n" +
701 				"     5  tableswitch default: 32\n" +
702 				"          case 1: 24\n" +
703 				"    24  new java.lang.NullPointerException [16]\n" +
704 				"    27  dup\n" +
705 				"    28  invokespecial java.lang.NullPointerException() [18]\n" +
706 				"    31  athrow\n" +
707 				"    32  aload_2\n" +
708 				"    33  monitorexit\n" +
709 				"    34  goto 40\n" +
710 				"    37  aload_2\n" +
711 				"    38  monitorexit\n" +
712 				"    39  athrow\n" +
713 				"    40  return\n" +
714 				"      Exception Table:\n" +
715 				"        [pc: 4, pc: 34] -> 37 when : any\n" +
716 				"        [pc: 37, pc: 39] -> 37 when : any\n" +
717 				"      Line numbers:\n" +
718 				"        [pc: 0, line: 3]\n" +
719 				"        [pc: 4, line: 4]\n" +
720 				"        [pc: 24, line: 6]\n" +
721 				"        [pc: 32, line: 3]\n" +
722 				"        [pc: 40, line: 9]\n" +
723 				"      Local variable table:\n" +
724 				"        [pc: 0, pc: 41] local: this index: 0 type: X\n" +
725 				"        [pc: 0, pc: 41] local: n index: 1 type: int\n" +
726 				"      Stack map table: number of frames 4\n" +
727 				"        [pc: 24, append: {X}]\n" +
728 				"        [pc: 32, same]\n" +
729 				"        [pc: 37, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" +
730 				"        [pc: 40, chop 1 local(s)]\n";
731 
732 			int index = actualOutput.indexOf(expectedOutput);
733 			if (index == -1 || expectedOutput.length() == 0) {
734 				System.out.println(Util.displayString(actualOutput, 2));
735 			}
736 			if (index == -1) {
737 				assertEquals("Wrong contents", expectedOutput, actualOutput);
738 			}
739 	}
740 
test007()741 	public void test007() throws Exception {
742 		this.runConformTest(
743 				new String[] {
744 					"X.java",
745 					"public class X {\n" +
746 					"	StringBuffer foo2(boolean b) {\n" +
747 					"		System.out.println(\"foo2\");\n" +
748 					"		return new StringBuffer(b ? \"true\" : \"false\");\n" +
749 					"	}\n" +
750 					"	public static void main(String[] args) {\n" +
751 					"		System.out.println(\"SUCCESS\");\n" +
752 					"	}\n" +
753 					"}",
754 				},
755 				"SUCCESS");
756 
757 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
758 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
759 			String actualOutput =
760 				disassembler.disassemble(
761 					classFileBytes,
762 					"\n",
763 					ClassFileBytesDisassembler.DETAILED);
764 
765 			String expectedOutput =
766 				"  // Method descriptor #15 (Z)Ljava/lang/StringBuffer;\n" +
767 				"  // Stack: 3, Locals: 2\n" +
768 				"  java.lang.StringBuffer foo2(boolean b);\n" +
769 				"     0  getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
770 				"     3  ldc <String \"foo2\"> [22]\n" +
771 				"     5  invokevirtual java.io.PrintStream.println(java.lang.String) : void [23]\n" +
772 				"     8  new java.lang.StringBuffer [29]\n" +
773 				"    11  dup\n" +
774 				"    12  iload_1 [b]\n" +
775 				"    13  ifeq 21\n" +
776 				"    16  ldc <String \"true\"> [31]\n" +
777 				"    18  goto 23\n" +
778 				"    21  ldc <String \"false\"> [33]\n" +
779 				"    23  invokespecial java.lang.StringBuffer(java.lang.String) [35]\n" +
780 				"    26  areturn\n" +
781 				"      Line numbers:\n" +
782 				"        [pc: 0, line: 3]\n" +
783 				"        [pc: 8, line: 4]\n" +
784 				"      Local variable table:\n" +
785 				"        [pc: 0, pc: 27] local: this index: 0 type: X\n" +
786 				"        [pc: 0, pc: 27] local: b index: 1 type: boolean\n" +
787 				"      Stack map table: number of frames 2\n" +
788 				"        [pc: 21, full, stack: {uninitialized(8), uninitialized(8)}, locals: {X, int}]\n" +
789 				"        [pc: 23, full, stack: {uninitialized(8), uninitialized(8), java.lang.String}, locals: {X, int}]\n";
790 
791 			int index = actualOutput.indexOf(expectedOutput);
792 			if (index == -1 || expectedOutput.length() == 0) {
793 				System.out.println(Util.displayString(actualOutput, 2));
794 			}
795 			if (index == -1) {
796 				assertEquals("Wrong contents", expectedOutput, actualOutput);
797 			}
798 	}
799 	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=141252
test008()800 	public void test008() throws Exception {
801 		this.runConformTest(
802 				new String[] {
803 					"X.java",
804 					"public class X {\n" +
805 					"	public static void main(String[] args) {\n" +
806 					"		int foo = 0;\n" +
807 					"		String bar = \"zero\";\n" +
808 					"		System.out.println((foo != 0) ? foo : bar);\n" +
809 					"	}\n" +
810 					"	<T extends Comparable<?>> void foo(T foo) {\n" +
811 					"		T bar = null;\n" +
812 					"		System.out.println((foo != null) ? foo : bar);\n" +
813 					"	}	\n" +
814 					"}\n",
815 				},
816 				"zero");
817 
818 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
819 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
820 			String actualOutput =
821 				disassembler.disassemble(
822 					classFileBytes,
823 					"\n",
824 					ClassFileBytesDisassembler.DETAILED);
825 
826 			String expectedOutput =
827 					"  // Method descriptor #15 ([Ljava/lang/String;)V\n" +
828 					"  // Stack: 2, Locals: 3\n" +
829 					"  public static void main(java.lang.String[] args);\n" +
830 					"     0  iconst_0\n" +
831 					"     1  istore_1 [foo]\n" +
832 					"     2  ldc <String \"zero\"> [16]\n" +
833 					"     4  astore_2 [bar]\n" +
834 					"     5  getstatic java.lang.System.out : java.io.PrintStream [18]\n" +
835 					"     8  iload_1 [foo]\n" +
836 					"     9  ifeq 19\n" +
837 					"    12  iload_1 [foo]\n" +
838 					"    13  invokestatic java.lang.Integer.valueOf(int) : java.lang.Integer [24]\n" +
839 					"    16  goto 20\n" +
840 					"    19  aload_2 [bar]\n" +
841 					"    20  invokevirtual java.io.PrintStream.println(java.lang.Object) : void [30]\n" +
842 					"    23  return\n" +
843 					"      Line numbers:\n" +
844 					"        [pc: 0, line: 3]\n" +
845 					"        [pc: 2, line: 4]\n" +
846 					"        [pc: 5, line: 5]\n" +
847 					"        [pc: 23, line: 6]\n" +
848 					"      Local variable table:\n" +
849 					"        [pc: 0, pc: 24] local: args index: 0 type: java.lang.String[]\n" +
850 					"        [pc: 2, pc: 24] local: foo index: 1 type: int\n" +
851 					"        [pc: 5, pc: 24] local: bar index: 2 type: java.lang.String\n" +
852 					"      Stack map table: number of frames 2\n" +
853 					"        [pc: 19, full, stack: {java.io.PrintStream}, locals: {java.lang.String[], int, java.lang.String}]\n" +
854 					"        [pc: 20, full, stack: {java.io.PrintStream, java.lang.Comparable}, locals: {java.lang.String[], int, java.lang.String}]\n" +
855 					"  \n" +
856 					"  // Method descriptor #48 (Ljava/lang/Comparable;)V\n" +
857 					"  // Signature: <T::Ljava/lang/Comparable<*>;>(TT;)V\n" +
858 					"  // Stack: 2, Locals: 3\n" +
859 					"  void foo(java.lang.Comparable foo);\n" +
860 					"     0  aconst_null\n" +
861 					"     1  astore_2 [bar]\n" +
862 					"     2  getstatic java.lang.System.out : java.io.PrintStream [18]\n" +
863 					"     5  aload_1 [foo]\n" +
864 					"     6  ifnull 13\n" +
865 					"     9  aload_1 [foo]\n" +
866 					"    10  goto 14\n" +
867 					"    13  aload_2 [bar]\n" +
868 					"    14  invokevirtual java.io.PrintStream.println(java.lang.Object) : void [30]\n" +
869 					"    17  return\n" +
870 					"      Line numbers:\n" +
871 					"        [pc: 0, line: 8]\n" +
872 					"        [pc: 2, line: 9]\n" +
873 					"        [pc: 17, line: 10]\n" +
874 					"      Local variable table:\n" +
875 					"        [pc: 0, pc: 18] local: this index: 0 type: X\n" +
876 					"        [pc: 0, pc: 18] local: foo index: 1 type: java.lang.Comparable\n" +
877 					"        [pc: 2, pc: 18] local: bar index: 2 type: java.lang.Comparable\n" +
878 					"      Local variable type table:\n" +
879 					"        [pc: 0, pc: 18] local: foo index: 1 type: T\n" +
880 					"        [pc: 2, pc: 18] local: bar index: 2 type: T\n" +
881 					"      Stack map table: number of frames 2\n" +
882 					"        [pc: 13, full, stack: {java.io.PrintStream}, locals: {X, java.lang.Comparable, java.lang.Comparable}]\n" +
883 					"        [pc: 14, full, stack: {java.io.PrintStream, java.lang.Comparable}, locals: {X, java.lang.Comparable, java.lang.Comparable}]\n";
884 
885 			int index = actualOutput.indexOf(expectedOutput);
886 			if (index == -1 || expectedOutput.length() == 0) {
887 				System.out.println(Util.displayString(actualOutput, 2));
888 			}
889 			if (index == -1) {
890 				assertEquals("Wrong contents", expectedOutput, actualOutput);
891 			}
892 	}
893 
test009()894 	public void test009() throws Exception {
895 		this.runConformTest(
896 				new String[] {
897 					"X.java",
898 					"public class X {\n" +
899 					"	String s;\n" +
900 					"	X() {\n" +
901 					"        int i = 0;\n" +
902 					"        if (s == null) {\n" +
903 					"        	System.out.print(\"PASSED\");\n" +
904 					"        } else {\n" +
905 					"        	System.out.print(\"FAILED\");\n" +
906 					"        }\n" +
907 					"        System.out.print(\"DONE\" + i);\n" +
908 					"	}\n" +
909 					"    public static void main(String argv[]) {\n" +
910 					"    	new X();\n" +
911 					"    }\n" +
912 					"}",
913 				},
914 				"PASSEDDONE0");
915 
916 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
917 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
918 			String actualOutput =
919 				disassembler.disassemble(
920 					classFileBytes,
921 					"\n",
922 					ClassFileBytesDisassembler.DETAILED);
923 
924 			String expectedOutput =
925 				"  // Method descriptor #8 ()V\n" +
926 				"  // Stack: 4, Locals: 2\n" +
927 				"  X();\n" +
928 				"     0  aload_0 [this]\n" +
929 				"     1  invokespecial java.lang.Object() [10]\n" +
930 				"     4  iconst_0\n" +
931 				"     5  istore_1 [i]\n" +
932 				"     6  aload_0 [this]\n" +
933 				"     7  getfield X.s : java.lang.String [12]\n" +
934 				"    10  ifnonnull 24\n" +
935 				"    13  getstatic java.lang.System.out : java.io.PrintStream [14]\n" +
936 				"    16  ldc <String \"PASSED\"> [20]\n" +
937 				"    18  invokevirtual java.io.PrintStream.print(java.lang.String) : void [22]\n" +
938 				"    21  goto 32\n" +
939 				"    24  getstatic java.lang.System.out : java.io.PrintStream [14]\n" +
940 				"    27  ldc <String \"FAILED\"> [28]\n" +
941 				"    29  invokevirtual java.io.PrintStream.print(java.lang.String) : void [22]\n" +
942 				"    32  getstatic java.lang.System.out : java.io.PrintStream [14]\n" +
943 				"    35  new java.lang.StringBuilder [30]\n" +
944 				"    38  dup\n" +
945 				"    39  ldc <String \"DONE\"> [32]\n" +
946 				"    41  invokespecial java.lang.StringBuilder(java.lang.String) [34]\n" +
947 				"    44  iload_1 [i]\n" +
948 				"    45  invokevirtual java.lang.StringBuilder.append(int) : java.lang.StringBuilder [36]\n" +
949 				"    48  invokevirtual java.lang.StringBuilder.toString() : java.lang.String [40]\n" +
950 				"    51  invokevirtual java.io.PrintStream.print(java.lang.String) : void [22]\n" +
951 				"    54  return\n" +
952 				"      Line numbers:\n" +
953 				"        [pc: 0, line: 3]\n" +
954 				"        [pc: 4, line: 4]\n" +
955 				"        [pc: 6, line: 5]\n" +
956 				"        [pc: 13, line: 6]\n" +
957 				"        [pc: 21, line: 7]\n" +
958 				"        [pc: 24, line: 8]\n" +
959 				"        [pc: 32, line: 10]\n" +
960 				"        [pc: 54, line: 11]\n" +
961 				"      Local variable table:\n" +
962 				"        [pc: 0, pc: 55] local: this index: 0 type: X\n" +
963 				"        [pc: 6, pc: 55] local: i index: 1 type: int\n" +
964 				"      Stack map table: number of frames 2\n" +
965 				"        [pc: 24, full, stack: {}, locals: {X, int}]\n" +
966 				"        [pc: 32, same]\n";
967 
968 			int index = actualOutput.indexOf(expectedOutput);
969 			if (index == -1 || expectedOutput.length() == 0) {
970 				System.out.println(Util.displayString(actualOutput, 2));
971 			}
972 			if (index == -1) {
973 				assertEquals("Wrong contents", expectedOutput, actualOutput);
974 			}
975 	}
976 
test010()977 	public void test010() throws Exception {
978 		this.runConformTest(
979 				new String[] {
980 					"X.java",
981 					"public class X {\n" +
982 					"	public static void main(String[] args) {\n" +
983 					"		int[] tab = new int[0];\n" +
984 					"		Object o = tab;\n" +
985 					"		Object o1 = null;\n" +
986 					"		if (tab.length == 0) {\n" +
987 					"			System.out.println(tab.getClass());\n" +
988 					"		}\n" +
989 					"		o1 = tab.clone();\n" +
990 					"	}\n" +
991 					"}",
992 				},
993 				"class [I");
994 
995 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
996 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
997 			String actualOutput =
998 				disassembler.disassemble(
999 					classFileBytes,
1000 					"\n",
1001 					ClassFileBytesDisassembler.DETAILED);
1002 
1003 			String expectedOutput =
1004 				"  // Method descriptor #15 ([Ljava/lang/String;)V\n" +
1005 				"  // Stack: 2, Locals: 4\n" +
1006 				"  public static void main(java.lang.String[] args);\n" +
1007 				"     0  iconst_0\n" +
1008 				"     1  newarray int [10]\n" +
1009 				"     3  astore_1 [tab]\n" +
1010 				"     4  aload_1 [tab]\n" +
1011 				"     5  astore_2 [o]\n" +
1012 				"     6  aconst_null\n" +
1013 				"     7  astore_3 [o1]\n" +
1014 				"     8  aload_1 [tab]\n" +
1015 				"     9  arraylength\n" +
1016 				"    10  ifne 23\n" +
1017 				"    13  getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
1018 				"    16  aload_1 [tab]\n" +
1019 				"    17  invokevirtual java.lang.Object.getClass() : java.lang.Class [22]\n" +
1020 				"    20  invokevirtual java.io.PrintStream.println(java.lang.Object) : void [26]\n" +
1021 				"    23  aload_1 [tab]\n" +
1022 				"    24  invokevirtual int[].clone() : java.lang.Object [32]\n" +
1023 				"    27  astore_3 [o1]\n" +
1024 				"    28  return\n" +
1025 				"      Line numbers:\n" +
1026 				"        [pc: 0, line: 3]\n" +
1027 				"        [pc: 4, line: 4]\n" +
1028 				"        [pc: 6, line: 5]\n" +
1029 				"        [pc: 8, line: 6]\n" +
1030 				"        [pc: 13, line: 7]\n" +
1031 				"        [pc: 23, line: 9]\n" +
1032 				"        [pc: 28, line: 10]\n" +
1033 				"      Local variable table:\n" +
1034 				"        [pc: 0, pc: 29] local: args index: 0 type: java.lang.String[]\n" +
1035 				"        [pc: 4, pc: 29] local: tab index: 1 type: int[]\n" +
1036 				"        [pc: 6, pc: 29] local: o index: 2 type: java.lang.Object\n" +
1037 				"        [pc: 8, pc: 29] local: o1 index: 3 type: java.lang.Object\n" +
1038 				"      Stack map table: number of frames 1\n" +
1039 				"        [pc: 23, append: {int[], java.lang.Object, java.lang.Object}]\n";
1040 
1041 			int index = actualOutput.indexOf(expectedOutput);
1042 			if (index == -1 || expectedOutput.length() == 0) {
1043 				System.out.println(Util.displayString(actualOutput, 2));
1044 			}
1045 			if (index == -1) {
1046 				assertEquals("Wrong contents", expectedOutput, actualOutput);
1047 			}
1048 	}
1049 
test011()1050 	public void test011() throws Exception {
1051 		this.runConformTest(
1052 				new String[] {
1053 					"X.java",
1054 					"public class X {\n" +
1055 					"	Object o;\n" +
1056 					"\n" +
1057 					"	public static void main(String[] args) {\n" +
1058 					"		X x;\n" +
1059 					"		for (int i = 0; i < 10; i++) {\n" +
1060 					"			if (i < 90) {\n" +
1061 					"				x = new X();\n" +
1062 					"				if (i > 4) {\n" +
1063 					"					x.o = new Object();\n" +
1064 					"				} else {\n" +
1065 					"					x.o = \"0\";\n" +
1066 					"				}\n" +
1067 					"				switch (i) {\n" +
1068 					"					case 0:\n" +
1069 					"						if (x.o instanceof String) {\n" +
1070 					"							System.out.print(\"1\");\n" +
1071 					"						}\n" +
1072 					"						break;\n" +
1073 					"					default: {\n" +
1074 					"						Object diff = x.o;\n" +
1075 					"						if (diff != null) {\n" +
1076 					"							System.out.print(\"2\");\n" +
1077 					"						}\n" +
1078 					"					}\n" +
1079 					"				}\n" +
1080 					"			}\n" +
1081 					"		}\n" +
1082 					"	}\n" +
1083 					"}",
1084 				},
1085 				"1222222222");
1086 
1087 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
1088 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
1089 			String actualOutput =
1090 				disassembler.disassemble(
1091 					classFileBytes,
1092 					"\n",
1093 					ClassFileBytesDisassembler.DETAILED);
1094 
1095 			String expectedOutput =
1096 				"  // Method descriptor #17 ([Ljava/lang/String;)V\n" +
1097 				"  // Stack: 3, Locals: 4\n" +
1098 				"  public static void main(java.lang.String[] args);\n" +
1099 				"      0  iconst_0\n" +
1100 				"      1  istore_2 [i]\n" +
1101 				"      2  goto 105\n" +
1102 				"      5  iload_2 [i]\n" +
1103 				"      6  bipush 90\n" +
1104 				"      8  if_icmpge 102\n" +
1105 				"     11  new X [1]\n" +
1106 				"     14  dup\n" +
1107 				"     15  invokespecial X() [18]\n" +
1108 				"     18  astore_1 [x]\n" +
1109 				"     19  iload_2 [i]\n" +
1110 				"     20  iconst_4\n" +
1111 				"     21  if_icmple 38\n" +
1112 				"     24  aload_1 [x]\n" +
1113 				"     25  new java.lang.Object [3]\n" +
1114 				"     28  dup\n" +
1115 				"     29  invokespecial java.lang.Object() [10]\n" +
1116 				"     32  putfield X.o : java.lang.Object [19]\n" +
1117 				"     35  goto 44\n" +
1118 				"     38  aload_1 [x]\n" +
1119 				"     39  ldc <String \"0\"> [21]\n" +
1120 				"     41  putfield X.o : java.lang.Object [19]\n" +
1121 				"     44  iload_2 [i]\n" +
1122 				"     45  tableswitch default: 85\n" +
1123 				"          case 0: 64\n" +
1124 				"     64  aload_1 [x]\n" +
1125 				"     65  getfield X.o : java.lang.Object [19]\n" +
1126 				"     68  instanceof java.lang.String [23]\n" +
1127 				"     71  ifeq 102\n" +
1128 				"     74  getstatic java.lang.System.out : java.io.PrintStream [25]\n" +
1129 				"     77  ldc <String \"1\"> [31]\n" +
1130 				"     79  invokevirtual java.io.PrintStream.print(java.lang.String) : void [33]\n" +
1131 				"     82  goto 102\n" +
1132 				"     85  aload_1 [x]\n" +
1133 				"     86  getfield X.o : java.lang.Object [19]\n" +
1134 				"     89  astore_3 [diff]\n" +
1135 				"     90  aload_3 [diff]\n" +
1136 				"     91  ifnull 102\n" +
1137 				"     94  getstatic java.lang.System.out : java.io.PrintStream [25]\n" +
1138 				"     97  ldc <String \"2\"> [39]\n" +
1139 				"     99  invokevirtual java.io.PrintStream.print(java.lang.String) : void [33]\n" +
1140 				"    102  iinc 2 1 [i]\n" +
1141 				"    105  iload_2 [i]\n" +
1142 				"    106  bipush 10\n" +
1143 				"    108  if_icmplt 5\n" +
1144 				"    111  return\n" +
1145 				"      Line numbers:\n" +
1146 				"        [pc: 0, line: 6]\n" +
1147 				"        [pc: 5, line: 7]\n" +
1148 				"        [pc: 11, line: 8]\n" +
1149 				"        [pc: 19, line: 9]\n" +
1150 				"        [pc: 24, line: 10]\n" +
1151 				"        [pc: 35, line: 11]\n" +
1152 				"        [pc: 38, line: 12]\n" +
1153 				"        [pc: 44, line: 14]\n" +
1154 				"        [pc: 64, line: 16]\n" +
1155 				"        [pc: 74, line: 17]\n" +
1156 				"        [pc: 82, line: 19]\n" +
1157 				"        [pc: 85, line: 21]\n" +
1158 				"        [pc: 90, line: 22]\n" +
1159 				"        [pc: 94, line: 23]\n" +
1160 				"        [pc: 102, line: 6]\n" +
1161 				"        [pc: 111, line: 29]\n" +
1162 				"      Local variable table:\n" +
1163 				"        [pc: 0, pc: 112] local: args index: 0 type: java.lang.String[]\n" +
1164 				"        [pc: 19, pc: 102] local: x index: 1 type: X\n" +
1165 				"        [pc: 2, pc: 111] local: i index: 2 type: int\n" +
1166 				"        [pc: 90, pc: 102] local: diff index: 3 type: java.lang.Object\n" +
1167 				"      Stack map table: number of frames 7\n" +
1168 				"        [pc: 5, full, stack: {}, locals: {java.lang.String[], _, int}]\n" +
1169 				"        [pc: 38, full, stack: {}, locals: {java.lang.String[], X, int}]\n" +
1170 				"        [pc: 44, same]\n" +
1171 				"        [pc: 64, same]\n" +
1172 				"        [pc: 85, same]\n" +
1173 				"        [pc: 102, full, stack: {}, locals: {java.lang.String[], _, int}]\n" +
1174 				"        [pc: 105, same]\n";
1175 
1176 			int index = actualOutput.indexOf(expectedOutput);
1177 			if (index == -1 || expectedOutput.length() == 0) {
1178 				System.out.println(Util.displayString(actualOutput, 2));
1179 			}
1180 			if (index == -1) {
1181 				assertEquals("Wrong contents", expectedOutput, actualOutput);
1182 			}
1183 	}
1184 
test012()1185 	public void test012() throws Exception {
1186 		this.runConformTest(
1187 				new String[] {
1188 					"X.java",
1189 					"public class X {\n" +
1190 					"	public static void main(String[] args) {\n" +
1191 					"		X x;\n" +
1192 					"		Object o;\n" +
1193 					"		for (int i = 0; i < 10; i++) {\n" +
1194 					"			if (i < 90) {\n" +
1195 					"				x = new X();\n" +
1196 					"				if (i > 4) {\n" +
1197 					"					o = new Object();\n" +
1198 					"				} else {\n" +
1199 					"					o = null;\n" +
1200 					"				}\n" +
1201 					"				switch (i) {\n" +
1202 					"					case 0:\n" +
1203 					"						if (o instanceof String) {\n" +
1204 					"							System.out.print(\"1\");\n" +
1205 					"							return;\n" +
1206 					"						} else {\n" +
1207 					"							break;\n" +
1208 					"						}\n" +
1209 					"					default: {\n" +
1210 					"						Object diff = o;\n" +
1211 					"						if (diff != null) {\n" +
1212 					"							System.out.print(\"2\");\n" +
1213 					"						}\n" +
1214 					"						break;\n" +
1215 					"					}\n" +
1216 					"				}\n" +
1217 					"				System.out.print(\"3\");\n" +
1218 					"			}\n" +
1219 					"		}\n" +
1220 					"	}\n" +
1221 					"}",
1222 				},
1223 				"333332323232323");
1224 
1225 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
1226 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
1227 			String actualOutput =
1228 				disassembler.disassemble(
1229 					classFileBytes,
1230 					"\n",
1231 					ClassFileBytesDisassembler.DETAILED);
1232 
1233 			String expectedOutput =
1234 				"  // Method descriptor #15 ([Ljava/lang/String;)V\n" +
1235 				"  // Stack: 2, Locals: 5\n" +
1236 				"  public static void main(java.lang.String[] args);\n" +
1237 				"      0  iconst_0\n" +
1238 				"      1  istore_3 [i]\n" +
1239 				"      2  goto 99\n" +
1240 				"      5  iload_3 [i]\n" +
1241 				"      6  bipush 90\n" +
1242 				"      8  if_icmpge 96\n" +
1243 				"     11  new X [1]\n" +
1244 				"     14  dup\n" +
1245 				"     15  invokespecial X() [16]\n" +
1246 				"     18  astore_1 [x]\n" +
1247 				"     19  iload_3 [i]\n" +
1248 				"     20  iconst_4\n" +
1249 				"     21  if_icmple 35\n" +
1250 				"     24  new java.lang.Object [3]\n" +
1251 				"     27  dup\n" +
1252 				"     28  invokespecial java.lang.Object() [8]\n" +
1253 				"     31  astore_2 [o]\n" +
1254 				"     32  goto 37\n" +
1255 				"     35  aconst_null\n" +
1256 				"     36  astore_2 [o]\n" +
1257 				"     37  iload_3 [i]\n" +
1258 				"     38  tableswitch default: 72\n" +
1259 				"          case 0: 56\n" +
1260 				"     56  aload_2 [o]\n" +
1261 				"     57  instanceof java.lang.String [17]\n" +
1262 				"     60  ifeq 88\n" +
1263 				"     63  getstatic java.lang.System.out : java.io.PrintStream [19]\n" +
1264 				"     66  ldc <String \"1\"> [25]\n" +
1265 				"     68  invokevirtual java.io.PrintStream.print(java.lang.String) : void [27]\n" +
1266 				"     71  return\n" +
1267 				"     72  aload_2 [o]\n" +
1268 				"     73  astore 4 [diff]\n" +
1269 				"     75  aload 4 [diff]\n" +
1270 				"     77  ifnull 88\n" +
1271 				"     80  getstatic java.lang.System.out : java.io.PrintStream [19]\n" +
1272 				"     83  ldc <String \"2\"> [33]\n" +
1273 				"     85  invokevirtual java.io.PrintStream.print(java.lang.String) : void [27]\n" +
1274 				"     88  getstatic java.lang.System.out : java.io.PrintStream [19]\n" +
1275 				"     91  ldc <String \"3\"> [35]\n" +
1276 				"     93  invokevirtual java.io.PrintStream.print(java.lang.String) : void [27]\n" +
1277 				"     96  iinc 3 1 [i]\n" +
1278 				"     99  iload_3 [i]\n" +
1279 				"    100  bipush 10\n" +
1280 				"    102  if_icmplt 5\n" +
1281 				"    105  return\n" +
1282 				"      Line numbers:\n" +
1283 				"        [pc: 0, line: 5]\n" +
1284 				"        [pc: 5, line: 6]\n" +
1285 				"        [pc: 11, line: 7]\n" +
1286 				"        [pc: 19, line: 8]\n" +
1287 				"        [pc: 24, line: 9]\n" +
1288 				"        [pc: 32, line: 10]\n" +
1289 				"        [pc: 35, line: 11]\n" +
1290 				"        [pc: 37, line: 13]\n" +
1291 				"        [pc: 56, line: 15]\n" +
1292 				"        [pc: 63, line: 16]\n" +
1293 				"        [pc: 71, line: 17]\n" +
1294 				"        [pc: 72, line: 22]\n" +
1295 				"        [pc: 75, line: 23]\n" +
1296 				"        [pc: 80, line: 24]\n" +
1297 				"        [pc: 88, line: 29]\n" +
1298 				"        [pc: 96, line: 5]\n" +
1299 				"        [pc: 105, line: 32]\n" +
1300 				"      Local variable table:\n" +
1301 				"        [pc: 0, pc: 106] local: args index: 0 type: java.lang.String[]\n" +
1302 				"        [pc: 19, pc: 96] local: x index: 1 type: X\n" +
1303 				"        [pc: 32, pc: 35] local: o index: 2 type: java.lang.Object\n" +
1304 				"        [pc: 37, pc: 96] local: o index: 2 type: java.lang.Object\n" +
1305 				"        [pc: 2, pc: 105] local: i index: 3 type: int\n" +
1306 				"        [pc: 75, pc: 88] local: diff index: 4 type: java.lang.Object\n" +
1307 				"      Stack map table: number of frames 8\n" +
1308 				"        [pc: 5, full, stack: {}, locals: {java.lang.String[], _, _, int}]\n" +
1309 				"        [pc: 35, full, stack: {}, locals: {java.lang.String[], X, _, int}]\n" +
1310 				"        [pc: 37, full, stack: {}, locals: {java.lang.String[], X, java.lang.Object, int}]\n" +
1311 				"        [pc: 56, same]\n" +
1312 				"        [pc: 72, same]\n" +
1313 				"        [pc: 88, same]\n" +
1314 				"        [pc: 96, full, stack: {}, locals: {java.lang.String[], _, _, int}]\n" +
1315 				"        [pc: 99, same]\n";
1316 
1317 			int index = actualOutput.indexOf(expectedOutput);
1318 			if (index == -1 || expectedOutput.length() == 0) {
1319 				System.out.println(Util.displayString(actualOutput, 2));
1320 			}
1321 			if (index == -1) {
1322 				assertEquals("Wrong contents", expectedOutput, actualOutput);
1323 			}
1324 	}
1325 
test013()1326 	public void test013() throws Exception {
1327 		this.runConformTest(
1328             new String[] {
1329             		"X.java",
1330             		"public class X {\n" +
1331             		"\n" +
1332             		"  void foo() {\n" +
1333             		"      synchronized (this) {\n" +
1334             		"        int n=0;\n" +
1335             		"        try {\n" +
1336             		"           Thread.sleep(n); \n" +
1337             		"        } catch (Exception e ) {\n" +
1338             		"        }\n" +
1339             		"     }\n" +
1340             		"  }\n" +
1341             		"  \n" +
1342             		"  public static void main(String[] args) {}\n" +
1343             		"}",
1344             },
1345 			"");
1346 
1347 		ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
1348 		byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
1349 		String actualOutput =
1350 			disassembler.disassemble(
1351                  classFileBytes,
1352                  "\n",
1353                  ClassFileBytesDisassembler.DETAILED);
1354 
1355 		String expectedOutput =
1356 			"  // Method descriptor #6 ()V\n" +
1357 			"  // Stack: 2, Locals: 4\n" +
1358 			"  void foo();\n" +
1359 			"     0  aload_0 [this]\n" +
1360 			"     1  dup\n" +
1361 			"     2  astore_1\n" +
1362 			"     3  monitorenter\n" +
1363 			"     4  iconst_0\n" +
1364 			"     5  istore_2 [n]\n" +
1365 			"     6  iload_2 [n]\n" +
1366 			"     7  i2l\n" +
1367 			"     8  invokestatic java.lang.Thread.sleep(long) : void [15]\n" +
1368 			"    11  goto 15\n" +
1369 			"    14  astore_3\n" +
1370 			"    15  aload_1\n" +
1371 			"    16  monitorexit\n" +
1372 			"    17  goto 23\n" +
1373 			"    20  aload_1\n" +
1374 			"    21  monitorexit\n" +
1375 			"    22  athrow\n" +
1376 			"    23  return\n" +
1377 			"      Exception Table:\n" +
1378 			"        [pc: 6, pc: 11] -> 14 when : java.lang.Exception\n" +
1379 			"        [pc: 4, pc: 17] -> 20 when : any\n" +
1380 			"        [pc: 20, pc: 22] -> 20 when : any\n" +
1381 			"      Line numbers:\n" +
1382 			"        [pc: 0, line: 4]\n" +
1383 			"        [pc: 4, line: 5]\n" +
1384 			"        [pc: 6, line: 7]\n" +
1385 			"        [pc: 11, line: 8]\n" +
1386 			"        [pc: 15, line: 4]\n" +
1387 			"        [pc: 23, line: 11]\n" +
1388 			"      Local variable table:\n" +
1389 			"        [pc: 0, pc: 24] local: this index: 0 type: X\n" +
1390 			"        [pc: 6, pc: 15] local: n index: 2 type: int\n" +
1391 			"      Stack map table: number of frames 4\n" +
1392 			"        [pc: 14, full, stack: {java.lang.Exception}, locals: {X, X, int}]\n" +
1393 			"        [pc: 15, chop 1 local(s)]\n" +
1394 			"        [pc: 20, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" +
1395 			"        [pc: 23, chop 1 local(s)]\n";
1396 
1397 		int index = actualOutput.indexOf(expectedOutput);
1398 		if (index == -1 || expectedOutput.length() == 0) {
1399 			System.out.println(Util.displayString(actualOutput, 2));
1400 		}
1401 		if (index == -1) {
1402 			assertEquals("Wrong contents", expectedOutput, actualOutput);
1403 		}
1404 	}
1405 
test014()1406 	public void test014() throws Exception {
1407 		this.runConformTest(
1408             new String[] {
1409             		"X.java",
1410             		"public class X {\n" +
1411             		"    X() {\n" +
1412             		"		final int i;\n" +
1413             		"		synchronized (this) {\n" +
1414             		"		    i = 8;\n" +
1415             		"		}\n" +
1416             		"    }  \n" +
1417             		"  public static void main(String[] args) {}\n" +
1418             		"}",
1419             },
1420 			"");
1421 
1422 		ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
1423 		byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
1424 		String actualOutput =
1425 			disassembler.disassemble(
1426                  classFileBytes,
1427                  "\n",
1428                  ClassFileBytesDisassembler.DETAILED);
1429 
1430 		String expectedOutput =
1431 			"  // Method descriptor #6 ()V\n" +
1432 			"  // Stack: 2, Locals: 3\n" +
1433 			"  X();\n" +
1434 			"     0  aload_0 [this]\n" +
1435 			"     1  invokespecial java.lang.Object() [8]\n" +
1436 			"     4  aload_0 [this]\n" +
1437 			"     5  dup\n" +
1438 			"     6  astore_2\n" +
1439 			"     7  monitorenter\n" +
1440 			"     8  bipush 8\n" +
1441 			"    10  istore_1 [i]\n" +
1442 			"    11  aload_2\n" +
1443 			"    12  monitorexit\n" +
1444 			"    13  goto 19\n" +
1445 			"    16  aload_2\n" +
1446 			"    17  monitorexit\n" +
1447 			"    18  athrow\n" +
1448 			"    19  return\n" +
1449 			"      Exception Table:\n" +
1450 			"        [pc: 8, pc: 13] -> 16 when : any\n" +
1451 			"        [pc: 16, pc: 18] -> 16 when : any\n" +
1452 			"      Line numbers:\n" +
1453 			"        [pc: 0, line: 2]\n" +
1454 			"        [pc: 4, line: 4]\n" +
1455 			"        [pc: 8, line: 5]\n" +
1456 			"        [pc: 11, line: 4]\n" +
1457 			"        [pc: 19, line: 7]\n" +
1458 			"      Local variable table:\n" +
1459 			"        [pc: 0, pc: 20] local: this index: 0 type: X\n" +
1460 			"        [pc: 11, pc: 16] local: i index: 1 type: int\n" +
1461 			"        [pc: 19, pc: 20] local: i index: 1 type: int\n" +
1462 			"      Stack map table: number of frames 2\n" +
1463 			"        [pc: 16, full, stack: {java.lang.Throwable}, locals: {X, _, X}]\n" +
1464 			"        [pc: 19, full, stack: {}, locals: {X, int}]\n";
1465 
1466 		int index = actualOutput.indexOf(expectedOutput);
1467 		if (index == -1 || expectedOutput.length() == 0) {
1468 			System.out.println(Util.displayString(actualOutput, 2));
1469 		}
1470 		if (index == -1) {
1471 			assertEquals("Wrong contents", expectedOutput, actualOutput);
1472 		}
1473 	}
1474 
test015()1475 	public void test015() throws Exception {
1476 		this.runConformTest(
1477             new String[] {
1478             		"X.java",
1479             		"public enum X {\n" +
1480             		"    a1(1), a2(5), a3(11);\n" +
1481             		"    int value;\n" +
1482             		"    X(int a) {\n" +
1483             		"        value = a;\n" +
1484             		"    }\n" +
1485             		"    int value () {\n" +
1486             		"    	return value;\n" +
1487             		"    }\n" +
1488             		"    public static void main(String argv[]) {\n" +
1489             		"    }\n" +
1490             		"    public static int foo() {\n" +
1491             		"        int val;\n" +
1492             		"        int res = 0;\n" +
1493             		"        int n = 0;\n" +
1494             		"        X[] vals = X.values();\n" +
1495             		"		for (int i = 0, max = vals.length; i < max; i++) {\n" +
1496             		"			X e = vals[i];\n" +
1497             		"           if ( n == 1) {\n" +
1498             		"               continue;\n" +
1499             		"           }\n" +
1500             		"           val = e.value();\n" +
1501             		"			System.out.println(val);\n" +
1502             		"        }\n" +
1503             		"        return res;\n" +
1504             		"    }\n" +
1505             		"}",
1506             },
1507 			"");
1508 
1509 		ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
1510 		byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
1511 		String actualOutput =
1512 			disassembler.disassemble(
1513                  classFileBytes,
1514                  "\n",
1515                  ClassFileBytesDisassembler.DETAILED);
1516 
1517 		String expectedOutput =
1518 			"  // Method descriptor #40 ()I\n" +
1519 			"  // Stack: 2, Locals: 7\n" +
1520 			"  public static int foo();\n" +
1521 			"     0  iconst_0\n" +
1522 			"     1  istore_1 [res]\n" +
1523 			"     2  iconst_0\n" +
1524 			"     3  istore_2 [n]\n" +
1525 			"     4  invokestatic X.values() : X[] [46]\n" +
1526 			"     7  astore_3 [vals]\n" +
1527 			"     8  iconst_0\n" +
1528 			"     9  istore 4 [i]\n" +
1529 			"    11  aload_3 [vals]\n" +
1530 			"    12  arraylength\n" +
1531 			"    13  istore 5 [max]\n" +
1532 			"    15  goto 48\n" +
1533 			"    18  aload_3 [vals]\n" +
1534 			"    19  iload 4 [i]\n" +
1535 			"    21  aaload\n" +
1536 			"    22  astore 6 [e]\n" +
1537 			"    24  iload_2 [n]\n" +
1538 			"    25  iconst_1\n" +
1539 			"    26  if_icmpne 32\n" +
1540 			"    29  goto 45\n" +
1541 			"    32  aload 6 [e]\n" +
1542 			"    34  invokevirtual X.value() : int [50]\n" +
1543 			"    37  istore_0 [val]\n" +
1544 			"    38  getstatic java.lang.System.out : java.io.PrintStream [52]\n" +
1545 			"    41  iload_0 [val]\n" +
1546 			"    42  invokevirtual java.io.PrintStream.println(int) : void [58]\n" +
1547 			"    45  iinc 4 1 [i]\n" +
1548 			"    48  iload 4 [i]\n" +
1549 			"    50  iload 5 [max]\n" +
1550 			"    52  if_icmplt 18\n" +
1551 			"    55  iload_1 [res]\n" +
1552 			"    56  ireturn\n" +
1553 			"      Line numbers:\n" +
1554 			"        [pc: 0, line: 14]\n" +
1555 			"        [pc: 2, line: 15]\n" +
1556 			"        [pc: 4, line: 16]\n" +
1557 			"        [pc: 8, line: 17]\n" +
1558 			"        [pc: 18, line: 18]\n" +
1559 			"        [pc: 24, line: 19]\n" +
1560 			"        [pc: 29, line: 20]\n" +
1561 			"        [pc: 32, line: 22]\n" +
1562 			"        [pc: 38, line: 23]\n" +
1563 			"        [pc: 45, line: 17]\n" +
1564 			"        [pc: 55, line: 25]\n" +
1565 			"      Local variable table:\n" +
1566 			"        [pc: 38, pc: 45] local: val index: 0 type: int\n" +
1567 			"        [pc: 2, pc: 57] local: res index: 1 type: int\n" +
1568 			"        [pc: 4, pc: 57] local: n index: 2 type: int\n" +
1569 			"        [pc: 8, pc: 57] local: vals index: 3 type: X[]\n" +
1570 			"        [pc: 11, pc: 55] local: i index: 4 type: int\n" +
1571 			"        [pc: 15, pc: 55] local: max index: 5 type: int\n" +
1572 			"        [pc: 24, pc: 45] local: e index: 6 type: X\n" +
1573 			"      Stack map table: number of frames 4\n" +
1574 			"        [pc: 18, full, stack: {}, locals: {_, int, int, X[], int, int}]\n" +
1575 			"        [pc: 32, append: {X}]\n" +
1576 			"        [pc: 45, chop 1 local(s)]\n" +
1577 			"        [pc: 48, same]\n";
1578 
1579 		int index = actualOutput.indexOf(expectedOutput);
1580 		if (index == -1 || expectedOutput.length() == 0) {
1581 			System.out.println(Util.displayString(actualOutput, 2));
1582 		}
1583 		if (index == -1) {
1584 			assertEquals("Wrong contents", expectedOutput, actualOutput);
1585 		}
1586 	}
1587 
test016()1588 	public void test016() throws Exception {
1589 		this.runConformTest(
1590             new String[] {
1591             		"X.java",
1592             		"public enum X {\n" +
1593             		"    a1(1), a2(5), a3(11);\n" +
1594             		"    int value;\n" +
1595             		"    X(int a) {\n" +
1596             		"        value = a;\n" +
1597             		"    }\n" +
1598             		"    int value () {\n" +
1599             		"    	return value;\n" +
1600             		"    }\n" +
1601             		"    public static void main(String argv[]) {\n" +
1602             		"    }\n" +
1603             		"    public static int foo() {\n" +
1604             		"        int val;\n" +
1605             		"        int res = 0;\n" +
1606             		"        int n = 0;\n" +
1607             		"        for (X e : X.values()) {\n" +
1608             		"            if ( n == 1) {\n" +
1609             		"                continue;\n" +
1610             		"            }\n" +
1611             		"            val = e.value();\n" +
1612             		"			 System.out.println(val);\n" +
1613             		"        }\n" +
1614             		"        return res;\n" +
1615             		"    }\n" +
1616             		"}",
1617             },
1618 			"");
1619 
1620 		ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
1621 		byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
1622 		String actualOutput =
1623 			disassembler.disassemble(
1624                  classFileBytes,
1625                  "\n",
1626                  ClassFileBytesDisassembler.DETAILED);
1627 
1628 		String expectedOutput =
1629 			"  // Method descriptor #40 ()I\n" +
1630 			"  // Stack: 2, Locals: 7\n" +
1631 			"  public static int foo();\n" +
1632 			"     0  iconst_0\n" +
1633 			"     1  istore_1 [res]\n" +
1634 			"     2  iconst_0\n" +
1635 			"     3  istore_2 [n]\n" +
1636 			"     4  invokestatic X.values() : X[] [46]\n" +
1637 			"     7  dup\n" +
1638 			"     8  astore 6\n" +
1639 			"    10  arraylength\n" +
1640 			"    11  istore 5\n" +
1641 			"    13  iconst_0\n" +
1642 			"    14  istore 4\n" +
1643 			"    16  goto 48\n" +
1644 			"    19  aload 6\n" +
1645 			"    21  iload 4\n" +
1646 			"    23  aaload\n" +
1647 			"    24  astore_3 [e]\n" +
1648 			"    25  iload_2 [n]\n" +
1649 			"    26  iconst_1\n" +
1650 			"    27  if_icmpne 33\n" +
1651 			"    30  goto 45\n" +
1652 			"    33  aload_3 [e]\n" +
1653 			"    34  invokevirtual X.value() : int [50]\n" +
1654 			"    37  istore_0 [val]\n" +
1655 			"    38  getstatic java.lang.System.out : java.io.PrintStream [52]\n" +
1656 			"    41  iload_0 [val]\n" +
1657 			"    42  invokevirtual java.io.PrintStream.println(int) : void [58]\n" +
1658 			"    45  iinc 4 1\n" +
1659 			"    48  iload 4\n" +
1660 			"    50  iload 5\n" +
1661 			"    52  if_icmplt 19\n" +
1662 			"    55  iload_1 [res]\n" +
1663 			"    56  ireturn\n" +
1664 			"      Line numbers:\n" +
1665 			"        [pc: 0, line: 14]\n" +
1666 			"        [pc: 2, line: 15]\n" +
1667 			"        [pc: 4, line: 16]\n" +
1668 			"        [pc: 25, line: 17]\n" +
1669 			"        [pc: 30, line: 18]\n" +
1670 			"        [pc: 33, line: 20]\n" +
1671 			"        [pc: 38, line: 21]\n" +
1672 			"        [pc: 45, line: 16]\n" +
1673 			"        [pc: 55, line: 23]\n" +
1674 			"      Local variable table:\n" +
1675 			"        [pc: 38, pc: 45] local: val index: 0 type: int\n" +
1676 			"        [pc: 2, pc: 57] local: res index: 1 type: int\n" +
1677 			"        [pc: 4, pc: 57] local: n index: 2 type: int\n" +
1678 			"        [pc: 25, pc: 45] local: e index: 3 type: X\n" +
1679 			"      Stack map table: number of frames 4\n" +
1680 			"        [pc: 19, full, stack: {}, locals: {_, int, int, _, int, int, X[]}]\n" +
1681 			"        [pc: 33, full, stack: {}, locals: {_, int, int, X, int, int, X[]}]\n" +
1682 			"        [pc: 45, full, stack: {}, locals: {_, int, int, _, int, int, X[]}]\n" +
1683 			"        [pc: 48, same]\n";
1684 
1685 		int index = actualOutput.indexOf(expectedOutput);
1686 		if (index == -1 || expectedOutput.length() == 0) {
1687 			System.out.println(Util.displayString(actualOutput, 2));
1688 		}
1689 		if (index == -1) {
1690 			assertEquals("Wrong contents", expectedOutput, actualOutput);
1691 		}
1692 	}
1693 
test017()1694 	public void test017() throws Exception {
1695 		this.runConformTest(
1696             new String[] {
1697             		"X.java",
1698             		"public class X {\n" +
1699             		"	public static void main(String argv[]) {\n" +
1700             		"		int i;\n" +
1701             		"		\n" +
1702             		"		switch (i = 0) {\n" +
1703             		"			case 0 :\n" +
1704             		"				i = 1;\n" +
1705             		"				break;\n" +
1706             		"			default :\n" +
1707             		"				;\n" +
1708             		"		}\n" +
1709             		"		System.out.print(i);\n" +
1710             		"	}\n" +
1711             		"}",
1712             },
1713 			"1");
1714 
1715 		ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
1716 		byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
1717 		String actualOutput =
1718 			disassembler.disassemble(
1719                  classFileBytes,
1720                  "\n",
1721                  ClassFileBytesDisassembler.DETAILED);
1722 
1723 		String expectedOutput =
1724 			"  // Method descriptor #15 ([Ljava/lang/String;)V\n" +
1725 			"  // Stack: 2, Locals: 2\n" +
1726 			"  public static void main(java.lang.String[] argv);\n" +
1727 			"     0  iconst_0\n" +
1728 			"     1  dup\n" +
1729 			"     2  istore_1 [i]\n" +
1730 			"     3  tableswitch default: 22\n" +
1731 			"          case 0: 20\n" +
1732 			"    20  iconst_1\n" +
1733 			"    21  istore_1 [i]\n" +
1734 			"    22  getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
1735 			"    25  iload_1 [i]\n" +
1736 			"    26  invokevirtual java.io.PrintStream.print(int) : void [22]\n" +
1737 			"    29  return\n" +
1738 			"      Line numbers:\n" +
1739 			"        [pc: 0, line: 5]\n" +
1740 			"        [pc: 20, line: 7]\n" +
1741 			"        [pc: 22, line: 12]\n" +
1742 			"        [pc: 29, line: 13]\n" +
1743 			"      Local variable table:\n" +
1744 			"        [pc: 0, pc: 30] local: argv index: 0 type: java.lang.String[]\n" +
1745 			"        [pc: 3, pc: 30] local: i index: 1 type: int\n" +
1746 			"      Stack map table: number of frames 2\n" +
1747 			"        [pc: 20, append: {int}]\n" +
1748 			"        [pc: 22, same]\n";
1749 
1750 		int index = actualOutput.indexOf(expectedOutput);
1751 		if (index == -1 || expectedOutput.length() == 0) {
1752 			System.out.println(Util.displayString(actualOutput, 2));
1753 		}
1754 		if (index == -1) {
1755 			assertEquals("Wrong contents", expectedOutput, actualOutput);
1756 		}
1757 	}
1758 
test018()1759 	public void test018() {
1760 		this.runConformTest(
1761             new String[] {
1762             		"X.java",
1763             		"import java.util.*;\n" +
1764             		"\n" +
1765             		"interface Sequence<Value_Type> extends Iterable<Value_Type>{\n" +
1766             		"\n" +
1767             		"    Value_Type get(int i);\n" +
1768             		"    int length();\n" +
1769             		"    Value_Type set(int i, Value_Type value);\n" +
1770             		"}\n" +
1771             		"\n" +
1772             		"class ArraySequence<Value_Type> implements Sequence<Value_Type> {\n" +
1773             		"\n" +
1774             		"    public ArraySequence(int length) {}\n" +
1775             		"    public Value_Type get(int i) {\n" +
1776             		"        return null;\n" +
1777             		"    }\n" +
1778             		"    public int length() {\n" +
1779             		"        return 0;\n" +
1780             		"    }\n" +
1781             		"    public Value_Type set(int i, Value_Type value) {\n" +
1782             		"        return value;\n" +
1783             		"    }\n" +
1784             		"    public Iterator<Value_Type> iterator() {\n" +
1785             		"        return null;\n" +
1786             		"    }\n" +
1787             		"}\n" +
1788             		"\n" +
1789             		"class BirBlock {\n" +
1790             		"    void setRole(IrBlock.Role role) {}\n" +
1791             		"}\n" +
1792             		"\n" +
1793             		"class CatchChain {\n" +
1794             		"    int dispatcherAddress() {\n" +
1795             		"        return 0;\n" +
1796             		"    }\n" +
1797             		"}\n" +
1798             		"\n" +
1799             		"class ExceptionHandlerInfo {\n" +
1800             		"    int handlerProgramCounter() {\n" +
1801             		"        return 0;\n" +
1802             		"    }\n" +
1803             		"}\n" +
1804             		"\n" +
1805             		"interface IrBlock {\n" +
1806             		"    enum Role {\n" +
1807             		"        EXCEPTION_DISPATCHER\n" +
1808             		"    }\n" +
1809             		"}\n" +
1810             		"\n" +
1811             		"class ClassMethodActor {\n" +
1812             		"    Sequence<ExceptionHandlerInfo> exceptionHandlerInfos() {\n" +
1813             		"        return null;\n" +
1814             		"    }\n" +
1815             		"}\n" +
1816             		"\n" +
1817             		"public class X {\n" +
1818             		"\n" +
1819             		"    private Sequence<CatchChain> _catchChains;\n" +
1820             		"    private ClassMethodActor _classMethodActor;\n" +
1821             		"\n" +
1822             		"    public Sequence<BirBlock> getExceptionDispatchers(final BirBlock[] blockMap) {\n" +
1823             		"        final ArraySequence<BirBlock> dispatchers = new ArraySequence<BirBlock>(_catchChains.length());\n" +
1824             		"        for (int i = 0; i < _catchChains.length(); i++) {\n" +
1825             		"            final BirBlock dispatcher = blockMap[_catchChains.get(i).dispatcherAddress()];\n" +
1826             		"            dispatcher.setRole(IrBlock.Role.EXCEPTION_DISPATCHER);\n" +
1827             		"            dispatchers.set(i, dispatcher);\n" +
1828             		"        }\n" +
1829             		"        for (ExceptionHandlerInfo exceptionHandlerInfo : _classMethodActor.exceptionHandlerInfos()) {\n" +
1830             		"            blockMap[exceptionHandlerInfo.handlerProgramCounter()].setRole(IrBlock.Role.EXCEPTION_DISPATCHER);\n" +
1831             		"        }\n" +
1832             		"        return dispatchers;\n" +
1833             		"    }\n" +
1834             		"    public static void main(String[] args) {\n" +
1835             		"		System.out.print(\"SUCCESS\");\n" +
1836             		"	}\n" +
1837             		"}",
1838             },
1839 			"SUCCESS");
1840 	}
1841 
test019()1842 	public void test019() {
1843 		this.runConformTest(
1844             new String[] {
1845         		"X.java",
1846         		"final public class X\n" +
1847         		"{\n" +
1848         		"    final class MyClass\n" +
1849         		"    {\n" +
1850         		"        void method1(final String s)\n" +
1851         		"        {\n" +
1852         		"        }\n" +
1853         		"    }\n" +
1854         		"\n" +
1855         		"    Object method1()\n" +
1856         		"    {\n" +
1857         		"        try\n" +
1858         		"        {\n" +
1859         		"            final MyClass myClass = null;\n" +
1860         		"\n" +
1861         		"            try\n" +
1862         		"            {\n" +
1863         		"                return null;\n" +
1864         		"            }\n" +
1865         		"            catch (final Throwable ex)\n" +
1866         		"            {\n" +
1867         		"                myClass.method1(this == null ? \"\" : \"\");\n" +
1868         		"            }\n" +
1869         		"\n" +
1870         		"            return null;\n" +
1871         		"        }\n" +
1872         		"        finally\n" +
1873         		"        {\n" +
1874         		"            {\n" +
1875         		"            }\n" +
1876         		"        }\n" +
1877         		"    }\n" +
1878         		"    public static void main(String[] args) {\n" +
1879         		"		System.out.print(\"SUCCESS\");\n" +
1880         		"	}\n" +
1881         		"}",
1882             },
1883 			"SUCCESS");
1884 	}
test020()1885 	public void test020() {
1886 		this.runConformTest(
1887             new String[] {
1888         		"X.java",
1889         		"import java.util.*;\n" +
1890         		"public class X {\n" +
1891         		"    public static Map make(boolean sorted) {\n" +
1892         		"        return (sorted) ? new TreeMap() : new HashMap();\n" +
1893         		"    }\n" +
1894         		"    public static void main(String[] args) {\n" +
1895         		"       make(false);\n" +
1896         		"		System.out.print(\"SUCCESS\");\n" +
1897         		"    }\n" +
1898         		"}",
1899             },
1900 			"SUCCESS");
1901 	}
1902 	// 155423
test021()1903 	public void test021() throws Exception {
1904 		this.runConformTest(
1905             new String[] {
1906         		"X.java",
1907         		"public class X {\n" +
1908         		"   {\n" +
1909         		"      if (true) throw new NullPointerException();\n" +
1910         		"   }\n" +
1911         		"   X() {\n" +
1912         		"      System.out.println();\n" +
1913         		"   }\n" +
1914         		"}",
1915             },
1916 			"");
1917 
1918 		ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
1919 		byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
1920 		String actualOutput =
1921 			disassembler.disassemble(
1922                  classFileBytes,
1923                  "\n",
1924                  ClassFileBytesDisassembler.DETAILED);
1925 
1926 		String expectedOutput =
1927 			"  // Method descriptor #6 ()V\n" +
1928 			"  // Stack: 2, Locals: 1\n" +
1929 			"  X();\n" +
1930 			"     0  aload_0 [this]\n" +
1931 			"     1  invokespecial java.lang.Object() [8]\n" +
1932 			"     4  new java.lang.NullPointerException [10]\n" +
1933 			"     7  dup\n" +
1934 			"     8  invokespecial java.lang.NullPointerException() [12]\n" +
1935 			"    11  athrow\n" +
1936 			"      Line numbers:\n" +
1937 			"        [pc: 0, line: 5]\n" +
1938 			"        [pc: 4, line: 3]\n" +
1939 			"      Local variable table:\n" +
1940 			"        [pc: 0, pc: 12] local: this index: 0 type: X\n";
1941 
1942 		int index = actualOutput.indexOf(expectedOutput);
1943 		if (index == -1 || expectedOutput.length() == 0) {
1944 			System.out.println(Util.displayString(actualOutput, 2));
1945 		}
1946 		if (index == -1) {
1947 			assertEquals("Wrong contents", expectedOutput, actualOutput);
1948 		}
1949 	}
1950 
1951 	// 157247
test022()1952 	public void test022() {
1953 		this.runConformTest(
1954             new String[] {
1955         		"X.java",
1956         		"public class X {\n" +
1957         		"	public static void main(String[] args) {\n" +
1958         		"		String errorMessage;\n" +
1959         		"		try {\n" +
1960         		"			foo();\n" +
1961         		"			errorMessage = \"No exception thrown\";\n" +
1962         		"		} catch (Exception e) {\n" +
1963         		"			if (e instanceof NullPointerException) {\n" +
1964         		"				System.out.println(\"SUCCESS\");\n" +
1965         		"				return;\n" +
1966         		"			}\n" +
1967         		"			errorMessage = \"Exception thrown\" + e;\n" +
1968         		"		}\n" +
1969         		"		System.out.println(errorMessage);\n" +
1970         		"	}\n" +
1971         		"	public static void foo() {\n" +
1972         		"		throw new NullPointerException();\n" +
1973         		"	}\n" +
1974         		"}",
1975             },
1976 			"SUCCESS");
1977 	}
1978 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=162965
test023()1979 	public void test023() {
1980 		this.runConformTest(
1981 			new String[] {
1982 				"X.java",
1983 				"public class X {\n" +
1984 				"	public static void main(String[] args) {\n" +
1985 				"		boolean a = true, x;\n" +
1986 				"		if (a ? false : (x = true))\n" +
1987 				"			a = x;\n" +
1988 				"		System.out.println(\"SUCCESS\");\n" +
1989 				"	}\n" +
1990 				"}",
1991 			},
1992 			"SUCCESS");
1993 	}
1994 
test024()1995 	public void test024() {
1996 		this.runConformTest(
1997             new String[] {
1998         		"X.java",
1999         		"public class X {\n" +
2000         		"	public static final int MAX_PROPERTIES = 25;\n" +
2001         		"	public C c = new C();\n" +
2002         		"	void foo(int i) {\n" +
2003         		"		final int len = c.foo2();\n" +
2004         		"		A f = new A(\" Test \", i, 1, MAX_PROPERTIES) {\n" +
2005         		"			@Override\n" +
2006         		"			public double bar() {\n" +
2007         		"				return len;\n" +
2008         		"			}\n" +
2009         		"			@Override\n" +
2010         		"			public String toString() {\n" +
2011         		"				return \"SUCCESS\";\n" +
2012         		"			}\n" +
2013         		"		};\n" +
2014         		"		System.out.println(f);\n" +
2015         		"	}\n" +
2016         		"	public static void main(String[] args) {\n" +
2017         		"		new X().foo(0);\n" +
2018         		"	}\n" +
2019         		"}",
2020         		"A.java",
2021         		"class A {\n" +
2022         		"	A(String s, double d, double d1, double d2) {}\n" +
2023         		"	public double bar() {\n" +
2024         		"		return 0.0;\n" +
2025         		"	}\n" +
2026         		"}",
2027         		"C.java",
2028         		"class C {\n" +
2029         		"	public int foo2() {\n" +
2030         		"		return 0;\n" +
2031         		"	}\n" +
2032         		"}",
2033             },
2034 			"SUCCESS");
2035 	}
2036 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=169596
test025()2037 	public void test025() {
2038 		this.runConformTest(
2039 	        new String[] {
2040 	    		"X.java",
2041 	    		"public class X {\n" +
2042 	    		"	public static void main(String[] args) {\n" +
2043 	    		"		System.out.println(\"SUCCESS\");\n" +
2044 	    		"	}\n" +
2045 	    		"	\n" +
2046 	    		"	void foo(Object[] o) {}\n" +
2047 	    		"\n" +
2048 	    		"	void bar(boolean b) {\n" +
2049 	    		"		foo(new Object[] {\"\", \"\", b ? \"\" : \"\"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ \n" +
2050 	    		"	}\n" +
2051 	    		"}"
2052 	        },
2053 			"SUCCESS");
2054 	}
2055 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=169017
test026()2056 	public void test026() {
2057 		this.runConformTest(
2058 			new String[] {
2059 				"X.java",
2060 				"public class X {\n" +
2061 				"\n" +
2062 				"	public static final Object EXIT_OK = new Object();\n" +
2063 				"	public static final Object EXIT_RELAUNCH = new Object();\n" +
2064 				"	public static final Object EXIT_RESTART = new Object();\n" +
2065 				"	public static final int RETURN_RESTART = 1;\n" +
2066 				"	public static final String PROP_EXIT_CODE = \"\";\n" +
2067 				"	public static void main(String[] args) {\n" +
2068 				"		System.out.println(\"SUCCESS\");\n" +
2069 				"	}\n" +
2070 				"	private static int createAndRunWorkbench(Display display, IDEWorkbenchAdvisor advisor) {\n" +
2071 				"		return 0;\n" +
2072 				"	}\n" +
2073 				" \n" +
2074 				"    public Object run(Object args) throws Exception {\n" +
2075 				"        Display display = createDisplay();\n" +
2076 				"        try {\n" +
2077 				"            Shell shell = new Shell(display, SWT.ON_TOP);\n" +
2078 				"            try {\n" +
2079 				"                if (!checkInstanceLocation(shell)) {\n" +
2080 				"                    Platform.endSplash();\n" +
2081 				"                    return EXIT_OK;\n" +
2082 				"                }\n" +
2083 				"            } finally {\n" +
2084 				"                if (shell != null) {\n" +
2085 				"					shell.dispose();\n" +
2086 				"				}\n" +
2087 				"            }\n" +
2088 				"            int returnCode = X.createAndRunWorkbench(display,\n" +
2089 				"                    new IDEWorkbenchAdvisor());\n" +
2090 				"            if (returnCode != X.RETURN_RESTART) {\n" +
2091 				"				return EXIT_OK;\n" +
2092 				"			}\n" +
2093 				"            return EXIT_RELAUNCH.equals(Integer.getInteger(PROP_EXIT_CODE)) ? EXIT_RELAUNCH\n" +
2094 				"                    : EXIT_RESTART;\n" +
2095 				"        } finally {\n" +
2096 				"            if (display != null) {\n" +
2097 				"				display.dispose();\n" +
2098 				"			}\n" +
2099 				"        }\n" +
2100 				"    }\n" +
2101 				"	private boolean checkInstanceLocation(Shell shell) {\n" +
2102 				"		// TODO Auto-generated method stub\n" +
2103 				"		return false;\n" +
2104 				"	}\n" +
2105 				"	private Display createDisplay() {\n" +
2106 				"		// TODO Auto-generated method stub\n" +
2107 				"		return null;\n" +
2108 				"	}\n" +
2109 				"}",
2110 				"Display.java",
2111 				"class Display {\n" +
2112 				"\n" +
2113 				"	public void dispose() {\n" +
2114 				"		// TODO Auto-generated method stub\n" +
2115 				"		\n" +
2116 				"	}\n" +
2117 				"}",
2118 				"Shell.java",
2119 				"class Shell {\n" +
2120 				"	public Shell(Display display, int i) {\n" +
2121 				"		// TODO Auto-generated constructor stub\n" +
2122 				"	}\n" +
2123 				"\n" +
2124 				"	public void dispose() {\n" +
2125 				"		// TODO Auto-generated method stub\n" +
2126 				"		\n" +
2127 				"	}\n" +
2128 				"}",
2129 				"Platform.java",
2130 				"class Platform {\n" +
2131 				"\n" +
2132 				"	public static void endSplash() {\n" +
2133 				"		// TODO Auto-generated method stub\n" +
2134 				"		\n" +
2135 				"	}\n" +
2136 				"}",
2137 				"SWT.java",
2138 				"class SWT {\n" +
2139 				"	public static final int ON_TOP = 1; \n" +
2140 				"}",
2141 				"IDEWorkbenchAdvisor.java",
2142 				"class IDEWorkbenchAdvisor {\n" +
2143 				"}"
2144     	},
2145 		"SUCCESS");
2146 	}
2147 
2148 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=169017
test027()2149 	public void test027() {
2150 		this.runConformTest(
2151 			new String[] {
2152 				"X.java",
2153 				"import java.io.IOException;\n" +
2154 				"import java.io.InputStream;\n" +
2155 				"public class X {\n" +
2156 				"	private static final int BUF_SIZE = 8192;\n" +
2157 				"	public static void main(String[] args) {\n" +
2158 				"		System.out.println(\"SUCCESS\");\n" +
2159 				"	}\n" +
2160 				"	BundleActivator activator;\n" +
2161 				"	BundleHost bundle;\n" +
2162 				"	public byte[] getBytes() throws IOException {\n" +
2163 				"		InputStream in = getInputStream();\n" +
2164 				"		int length = (int) getSize();\n" +
2165 				"		byte[] classbytes;\n" +
2166 				"		int bytesread = 0;\n" +
2167 				"		int readcount;\n" +
2168 				"		if (Debug.DEBUG && Debug.DEBUG_LOADER)\n" +
2169 				"			Debug.println(\"  about to read \" + length + \" bytes from \" + getName()); //$NON-NLS-1$ //$NON-NLS-2$\n" +
2170 				"		try {\n" +
2171 				"			if (length > 0) {\n" +
2172 				"				classbytes = new byte[length];\n" +
2173 				"				for (; bytesread < length; bytesread += readcount) {\n" +
2174 				"					readcount = in.read(classbytes, bytesread, length - bytesread);\n" +
2175 				"					if (readcount <= 0)\n" +
2176 				"						break;\n" +
2177 				"				}\n" +
2178 				"			} else {\n" +
2179 				"				length = BUF_SIZE;\n" +
2180 				"				classbytes = new byte[length];\n" +
2181 				"				readloop: while (true) {\n" +
2182 				"					for (; bytesread < length; bytesread += readcount) {\n" +
2183 				"						readcount = in.read(classbytes, bytesread, length - bytesread);\n" +
2184 				"						if (readcount <= 0)\n" +
2185 				"							break readloop;\n" +
2186 				"					}\n" +
2187 				"					byte[] oldbytes = classbytes;\n" +
2188 				"					length += BUF_SIZE;\n" +
2189 				"					classbytes = new byte[length];\n" +
2190 				"					System.arraycopy(oldbytes, 0, classbytes, 0, bytesread);\n" +
2191 				"				}\n" +
2192 				"			}\n" +
2193 				"			if (classbytes.length > bytesread) {\n" +
2194 				"				byte[] oldbytes = classbytes;\n" +
2195 				"				classbytes = new byte[bytesread];\n" +
2196 				"				System.arraycopy(oldbytes, 0, classbytes, 0, bytesread);\n" +
2197 				"			}\n" +
2198 				"		} finally {\n" +
2199 				"			try {\n" +
2200 				"				in.close();\n" +
2201 				"			} catch (IOException ee) {\n" +
2202 				"				// ignore\n" +
2203 				"			}\n" +
2204 				"		}\n" +
2205 				"		return classbytes;\n" +
2206 				"	}\n" +
2207 				"	protected void stop(Throwable t) throws BundleException {\n" +
2208 				"			String clazz = \"\";//(activator == null) ? \"\" : activator.getClass().getName(); //$NON-NLS-1$\n" +
2209 				"			throw new BundleException(NLS.bind(Msg.BUNDLE_ACTIVATOR_EXCEPTION, new Object[] {clazz, \"stop\", bundle.getSymbolicName() == null ? \"\" + bundle.getBundleId() : bundle.getSymbolicName()}), t); //$NON-NLS-1$ //$NON-NLS-2$ \n" +
2210 				"	}\n" +
2211 				"	private String getName() {\n" +
2212 				"		// TODO Auto-generated method stub\n" +
2213 				"		return null;\n" +
2214 				"	}\n" +
2215 				"	private int getSize() {\n" +
2216 				"		// TODO Auto-generated method stub\n" +
2217 				"		return 0;\n" +
2218 				"	}\n" +
2219 				"	private InputStream getInputStream() {\n" +
2220 				"		// TODO Auto-generated method stub\n" +
2221 				"		return null;\n" +
2222 				"	}\n" +
2223 				"}",
2224 				"Debug.java",
2225 				"class Debug {\n" +
2226 				"	public static final boolean DEBUG = false;\n" +
2227 				"	public static final boolean DEBUG_LOADER = false;\n" +
2228 				"	public static final boolean DEBUG_GENERAL = false;\n" +
2229 				"	public static void println(String string) {\n" +
2230 				"		// TODO Auto-generated method stub\n" +
2231 				"		\n" +
2232 				"	}\n" +
2233 				"	public static void printStackTrace(Throwable t) {\n" +
2234 				"		// TODO Auto-generated method stub\n" +
2235 				"		\n" +
2236 				"	}\n" +
2237 				"}",
2238 				"AccessController.java",
2239 				"class AccessController {\n" +
2240 				"	static void doPrivileged(Object o) {\n" +
2241 				"	}\n" +
2242 				"}",
2243 				"BundleException.java",
2244 				"class BundleException extends Exception {\n" +
2245 				"	private static final long serialVersionUID = 5758882959559471648L;\n" +
2246 				"\n" +
2247 				"	public BundleException(String bind, Throwable t) {\n" +
2248 				"		// TODO Auto-generated constructor stub\n" +
2249 				"	}\n" +
2250 				"}",
2251 				"PrivilegedExceptionAction.java",
2252 				"class PrivilegedExceptionAction {\n" +
2253 				"}",
2254 				"BundleActivator.java",
2255 				"class BundleActivator {\n" +
2256 				"	public void stop(X x) {\n" +
2257 				"		// TODO Auto-generated method stub\n" +
2258 				"		\n" +
2259 				"	}\n" +
2260 				"}",
2261 				"BundleHost.java",
2262 				"class BundleHost {\n" +
2263 				"	public Object getSymbolicName() {\n" +
2264 				"		// TODO Auto-generated method stub\n" +
2265 				"		return null;\n" +
2266 				"	}\n" +
2267 				"	public String getBundleId() {\n" +
2268 				"		// TODO Auto-generated method stub\n" +
2269 				"		return null;\n" +
2270 				"	}\n" +
2271 				"}",
2272 				"NLS.java",
2273 				"class NLS {\n" +
2274 				"	public static String bind(String bundleActivatorException, Object[] objects) {\n" +
2275 				"		// TODO Auto-generated method stub\n" +
2276 				"		return null;\n" +
2277 				"	}\n" +
2278 				"}",
2279 				"PrivilegedActionException.java",
2280 				"class PrivilegedActionException extends Exception {\n" +
2281 				"	private static final long serialVersionUID = 3919969055057660822L;\n" +
2282 				"	public Throwable getException() {\n" +
2283 				"		// TODO Auto-generated method stub\n" +
2284 				"		return null;\n" +
2285 				"	}\n" +
2286 				"}",
2287 				"Msg.java",
2288 				"class Msg {\n" +
2289 				"	public static final String BUNDLE_ACTIVATOR_EXCEPTION = \"\";\n" +
2290 				"}"
2291     	},
2292 		"SUCCESS");
2293 	}
2294 
2295 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=169017
test028()2296 	public void test028() {
2297 		this.runConformTest(
2298 			new String[] {
2299 				"X.java",
2300 				"import java.io.StringReader;\n" +
2301 				"\n" +
2302 				"public class X {\n" +
2303 				"	public void loadVariablesAndContainers() {\n" +
2304 				"		// backward compatibility, consider persistent property	\n" +
2305 				"		String qName = \"1\";\n" +
2306 				"		String xmlString = \"2\";\n" +
2307 				"		\n" +
2308 				"		try {\n" +
2309 				"			if (xmlString != null){\n" +
2310 				"				StringReader reader = new StringReader(xmlString);\n" +
2311 				"				Object o;\n" +
2312 				"				try {\n" +
2313 				"					StringBuffer buffer = null;\n" +
2314 				"					o = new Object();\n" +
2315 				"				} catch(RuntimeException e) {\n" +
2316 				"					return;\n" +
2317 				"				} catch(Exception e){\n" +
2318 				"					return;\n" +
2319 				"				} finally {\n" +
2320 				"					reader.close();\n" +
2321 				"				}\n" +
2322 				"				System.out.println(reader);\n" +
2323 				"			}\n" +
2324 				"		} catch(Exception e){\n" +
2325 				"			// problem loading xml file: nothing we can do\n" +
2326 				"		} finally {\n" +
2327 				"			if (xmlString != null){\n" +
2328 				"				System.out.println(xmlString);\n" +
2329 				"			}\n" +
2330 				"		}\n" +
2331 				"	}\n" +
2332 				"\n" +
2333 				"	public static void main(String[] args) {\n" +
2334 				"		System.out.println(\"SUCCESS\");\n" +
2335 				"	}\n" +
2336 				"}"
2337 		},
2338 		"SUCCESS");
2339 	}
2340 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=171472
test029()2341 	public void test029() {
2342 		this.runConformTest(
2343 			new String[] {
2344 				"X.java",
2345 				"public class X {\n" +
2346 				"\n" +
2347 				"	public Object foo() {\n" +
2348 				"		Object status;\n" +
2349 				"		try {\n" +
2350 				"			status= bar();\n" +
2351 				"		} catch (RuntimeException x) {\n" +
2352 				"			status= foo2(x);\n" +
2353 				"		} finally {\n" +
2354 				"			System.out.println();\n" +
2355 				"		}\n" +
2356 				"		return status;\n" +
2357 				"	}\n" +
2358 				"	public Object bar() {\n" +
2359 				"		return null;\n" +
2360 				"	}\n" +
2361 				"	public Object foo2(Exception e) {\n" +
2362 				"		return null;\n" +
2363 				"	}\n" +
2364 				"	public static void main(String[] args) {\n" +
2365 				"		System.out.println(\"SUCCESS\");\n" +
2366 				"	}\n" +
2367 				"}"
2368 		},
2369 		"SUCCESS");
2370 	}
2371 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=171472
test030()2372 	public void test030() {
2373 		this.runConformTest(
2374 			new String[] {
2375 				"X.java",
2376 				"import java.util.Collections;\n" +
2377 				"import java.util.List;\n" +
2378 				"public class X {\n" +
2379 				"\n" +
2380 				"	private static final String COMPUTE_COMPLETION_PROPOSALS= \"computeCompletionProposals()\"; //$NON-NLS-1$\n" +
2381 				"	private Object fLastError;\n" +
2382 				"	private boolean fIsReportingDelay;\n" +
2383 				"	private CompletionProposalComputerRegistry fRegistry;\n" +
2384 				"	public List computeCompletionProposals(ContentAssistInvocationContext context, IProgressMonitor monitor) {\n" +
2385 				"		if (!isEnabled())\n" +
2386 				"			return Collections.EMPTY_LIST;\n" +
2387 				"\n" +
2388 				"		IStatus status;\n" +
2389 				"		try {\n" +
2390 				"			IJavaCompletionProposalComputer computer= getComputer();\n" +
2391 				"			if (computer == null) // not active yet\n" +
2392 				"				return Collections.EMPTY_LIST;\n" +
2393 				"			\n" +
2394 				"			try {\n" +
2395 				"				PerformanceStats stats= startMeter(context, computer);\n" +
2396 				"				List proposals= computer.computeCompletionProposals(context, monitor);\n" +
2397 				"				stopMeter(stats, COMPUTE_COMPLETION_PROPOSALS);\n" +
2398 				"				\n" +
2399 				"				if (proposals != null) {\n" +
2400 				"					fLastError= computer.getErrorMessage();\n" +
2401 				"					return proposals;\n" +
2402 				"				}\n" +
2403 				"			} finally {\n" +
2404 				"				fIsReportingDelay= true;\n" +
2405 				"			}\n" +
2406 				"			status= createAPIViolationStatus(COMPUTE_COMPLETION_PROPOSALS);\n" +
2407 				"		} catch (InvalidRegistryObjectException x) {\n" +
2408 				"			status= createExceptionStatus(x);\n" +
2409 				"		} catch (CoreException x) {\n" +
2410 				"			status= createExceptionStatus(x);\n" +
2411 				"		} catch (RuntimeException x) {\n" +
2412 				"			status= createExceptionStatus(x);\n" +
2413 				"		} finally {\n" +
2414 				"			monitor.done();\n" +
2415 				"		}\n" +
2416 				"\n" +
2417 				"		fRegistry.informUser(this, status);\n" +
2418 				"\n" +
2419 				"		return Collections.EMPTY_LIST;\n" +
2420 				"	}\n" +
2421 				"\n" +
2422 				"	private IStatus createExceptionStatus(Exception x) {\n" +
2423 				"		// TODO Auto-generated method stub\n" +
2424 				"		return null;\n" +
2425 				"	}\n" +
2426 				"\n" +
2427 				"	private IStatus createAPIViolationStatus(String computeCompletionProposals) {\n" +
2428 				"		// TODO Auto-generated method stub\n" +
2429 				"		return null;\n" +
2430 				"	}\n" +
2431 				"\n" +
2432 				"	private void stopMeter(PerformanceStats stats, String computeCompletionProposals) {\n" +
2433 				"		// TODO Auto-generated method stub\n" +
2434 				"		\n" +
2435 				"	}\n" +
2436 				"\n" +
2437 				"	private PerformanceStats startMeter(ContentAssistInvocationContext context, IJavaCompletionProposalComputer computer) {\n" +
2438 				"		// TODO Auto-generated method stub\n" +
2439 				"		return null;\n" +
2440 				"	}\n" +
2441 				"\n" +
2442 				"	private IJavaCompletionProposalComputer getComputer() throws CoreException, InvalidRegistryObjectException {\n" +
2443 				"		// TODO Auto-generated method stub\n" +
2444 				"		return null;\n" +
2445 				"	}\n" +
2446 				"\n" +
2447 				"	private boolean isEnabled() {\n" +
2448 				"		// TODO Auto-generated method stub\n" +
2449 				"		return false;\n" +
2450 				"	}\n" +
2451 				"	\n" +
2452 				"	public static void main(String[] args) {\n" +
2453 				"		System.out.println(\"SUCCESS\");\n" +
2454 				"	}\n" +
2455 				"}",
2456 				"IProgressMonitor.java",
2457 				"interface IProgressMonitor {\n" +
2458 				"	void done();\n" +
2459 				"}",
2460 				"ContentAssistInvocationContext.java",
2461 				"class ContentAssistInvocationContext {\n" +
2462 				"}",
2463 				"IStatus.java",
2464 				"interface IStatus {}",
2465 				"IJavaCompletionProposalComputer.java",
2466 				"import java.util.List;\n" +
2467 				"interface IJavaCompletionProposalComputer {\n" +
2468 				"	List computeCompletionProposals(ContentAssistInvocationContext context, IProgressMonitor monitor);\n" +
2469 				"	Object getErrorMessage();\n" +
2470 				"}",
2471 				"PerformanceStats.java",
2472 				"class PerformanceStats {}",
2473 				"CompletionProposalComputerRegistry.java",
2474 				"class CompletionProposalComputerRegistry {\n" +
2475 				"	public void informUser(X x, IStatus status) {\n" +
2476 				"	}\n" +
2477 				"}",
2478 				"InvalidRegistryObjectException.java",
2479 				"class InvalidRegistryObjectException extends Exception {\n" +
2480 				"	private static final long serialVersionUID = 8943194846421947853L;\n" +
2481 				"}",
2482 				"CoreException.java",
2483 				"class CoreException extends Exception {\n" +
2484 				"	private static final long serialVersionUID = 3996792687633449517L;\n" +
2485 				"}"
2486 		},
2487 		"SUCCESS");
2488 	}
2489 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=168665
test031()2490 	public void test031() {
2491 		this.runConformTest(
2492 			new String[] {
2493 				"X.java",
2494 				"public class X {\n" +
2495 				"	String s;\n" +
2496 				"	X() {\n" +
2497 				"		this.s = \"\";\n" +
2498 				"	}\n" +
2499 				"	X(String s, double d, double d2, double i) {\n" +
2500 				"		this.s = s;\n" +
2501 				"	}\n" +
2502 				"	public static final int CONST = 1;\n" +
2503 				"	public int foo() {\n" +
2504 				"		return 0;\n" +
2505 				"	}\n" +
2506 				"	public double value(double d1) {\n" +
2507 				"		return d1;\n" +
2508 				"	}\n" +
2509 				"	public void bar(int start) {\n" +
2510 				"		final int len = foo();\n" +
2511 				"		X x = new X(\"SUCCESS\", start, 1, CONST) {\n" +
2512 				"			@Override\n" +
2513 				"			public double value(double newValue) {\n" +
2514 				"				return len;\n" +
2515 				"			}\n" +
2516 				"		};\n" +
2517 				"		System.out.println(x);\n" +
2518 				"	}\n" +
2519 				"	public static void main(String[] args) {\n" +
2520 				"		new X().bar(1);\n" +
2521 				"	}\n" +
2522 				"	public String toString() {\n" +
2523 				"		return this.s;\n" +
2524 				"	}\n" +
2525 				"}",
2526 			},
2527 			"SUCCESS");
2528 	}
test032()2529 	public void test032() {
2530 		this.runConformTest(
2531 			new String[] {
2532 					"X.java",
2533 					"public class X {\n" +
2534 					"    public static void main(String[] args) {\n" +
2535 					"		int i = args.length;\n" +
2536 					"       X[] array = new X[] { i == 0 ? null : null };\n" +
2537 					"		System.out.print(\"SUCCESS\" + array.length);\n" +
2538 					"    }\n" +
2539 					"}",
2540 			},
2541 		"SUCCESS1");
2542 	}
2543 
2544 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=184102
test033()2545 	public void test033() {
2546 		this.runConformTest(
2547 			new String[] {
2548 				"X.java",
2549 				"public enum X {\n" +
2550 				"	C { @Override public boolean test() { return true; } };\n" +
2551 				"	static {\n" +
2552 				"		for (int i = 0; i < 1; i++) {}\n" +
2553 				"	}\n" +
2554 				"	public boolean test() {\n" +
2555 				"	return false;\n" +
2556 				"	}\n" +
2557 				"	public static void main(String[] args) {\n" +
2558 				"		System.out.print(\"SUCCESS\");\n" +
2559 				"	}\n" +
2560 				"}",
2561 			},
2562 		"SUCCESS");
2563 	}
2564 
2565 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=184102
test034()2566 	public void test034() {
2567 		this.runConformTest(
2568 			new String[] {
2569 				"X.java",
2570 				"public enum X {\n" +
2571 				"	C;\n" +
2572 				"	static {\n" +
2573 				"		for (int i = 0; i < 1; i++) {}\n" +
2574 				"	}\n" +
2575 				"	public boolean test() {\n" +
2576 				"	return false;\n" +
2577 				"	}\n" +
2578 				"	public static void main(String[] args) {\n" +
2579 				"		System.out.print(\"SUCCESS\");\n" +
2580 				"	}\n" +
2581 				"}",
2582 			},
2583 		"SUCCESS");
2584 	}
2585 
2586 	// add more bytecode coverage: fneg, lneg, dneg, dstore_0, f2l, fstore_0, fstore_2, lstore_0 and saload
test035()2587 	public void test035() {
2588 		this.runConformTest(
2589 			new String[] {
2590 				"X.java",
2591 				"public class X {\n" +
2592 				"	static double foo() {\n" +
2593 				"		double d = 3.0;\n" +
2594 				"		d = -d;\n" +
2595 				"		return d > 1.0 ? d : -d;\n" +
2596 				"	}\n" +
2597 				"\n" +
2598 				"	static float foo2() {\n" +
2599 				"		float f = 3.0f;\n" +
2600 				"		int i = 0;\n" +
2601 				"		float f2 = f+ i;\n" +
2602 				"		long l = (long) f;\n" +
2603 				"		l += f2;\n" +
2604 				"		return i == 0 ? f : -f + (float) l;\n" +
2605 				"	}\n" +
2606 				"\n" +
2607 				"	static long foo3() {\n" +
2608 				"		long l = Long.MAX_VALUE - 3;\n" +
2609 				"		boolean b = true;\n" +
2610 				"		return b ? l : -l;\n" +
2611 				"	}\n" +
2612 				"	\n" +
2613 				"	static short foo4() {\n" +
2614 				"		short[] tab = new short[] { 1, 2, 3 };\n" +
2615 				"		return tab.length == 3 ? tab[2] : (tab.length == 2 ? tab[1] : tab[0]);\n" +
2616 				"	}\n" +
2617 				"\n" +
2618 				"	public static void main(String args[]) {\n" +
2619 				"		foo();\n" +
2620 				"		foo2();\n" +
2621 				"		foo3();\n" +
2622 				"		foo4();\n" +
2623 				"		System.out.print(\"SUCCESS\");\n" +
2624 				"	}\n" +
2625 				"}",
2626 			},
2627 		"SUCCESS");
2628 	}
2629 
2630 	// fix verify error
test036()2631 	public void test036() {
2632 		this.runConformTest(
2633 			new String[] {
2634 				"X.java",
2635 				"import java.util.Map;\n" +
2636 				"import java.util.Set;\n" +
2637 				"\n" +
2638 				"public class X {\n" +
2639 				"	public static void main(String[] args) {\n" +
2640 				"		System.out.print(\"SUCCESS\");\n" +
2641 				"	}\n" +
2642 				"	public void foo(Object o, boolean b) {\n" +
2643 				"		String[] models = new String[] {};\n" +
2644 				"		Map map = null;\n" +
2645 				"		Set set  = null;\n" +
2646 				"		for (int n = 0; n < models.length; n++) {	bar(models[n]); }\n" +
2647 				"		foo2(new Object(),\n" +
2648 				"				set,\n" +
2649 				"				map,\n" +
2650 				"				!b);\n" +
2651 				"	}\n" +
2652 				"	void bar(String s) {}\n" +
2653 				"	void foo2(Object o, Object s, Object m, boolean b) {}\n" +
2654 				"}",
2655 			},
2656 		"SUCCESS");
2657 	}
2658 
2659 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=236336
test037()2660 	public void test037() {
2661 		this.runConformTest(
2662 			new String[] {
2663 				"X.java",
2664 				"public class X {\n" +
2665 				"	public static void main(String[] args) {\n" +
2666 				"		System.out.print(\"SUCCESS\");\n" +
2667 				"	}\n" +
2668 				"	String field;\n" +
2669 				"	String field2;\n" +
2670 				"	public void foo(int index, Object[] objs, Object[] objs2) {\n" +
2671 				"		String methodName = \"foo\";\n" +
2672 				"		int i = -1;\n" +
2673 				"		try {\n" +
2674 				"			switch (index) {\n" +
2675 				"				case 1130: {\n" +
2676 				"					int j = ((Integer) objs[0]).intValue();\n" +
2677 				"					int k = ((Integer) objs[0]).intValue();\n" +
2678 				"					{\n" +
2679 				"						String s = field;\n" +
2680 				"						String s2 = field2;\n" +
2681 				"						synchronized (s2) {\n" +
2682 				"							String s3 = s2;\n" +
2683 				"							try {\n" +
2684 				"								System.out.println(s);\n" +
2685 				"								System.out.println(s2);\n" +
2686 				"								System.out.println(s3);\n" +
2687 				"							} finally {\n" +
2688 				"								s2.toString();\n" +
2689 				"							}\n" +
2690 				"						}\n" +
2691 				"						}\n" +
2692 				"				}\n" +
2693 				"				break;\n" +
2694 				"				case 0 :\n" +
2695 				"					System.out.println(methodName + i);\n" +
2696 				"				break;\n" +
2697 				"				case 1 :\n" +
2698 				"					System.out.println(methodName + i);\n" +
2699 				"				break;\n" +
2700 				"				case 2 :\n" +
2701 				"					System.out.println(methodName + i);\n" +
2702 				"				break;\n" +
2703 				"				case 3 :\n" +
2704 				"					System.out.println(methodName + i);\n" +
2705 				"				break;\n" +
2706 				"				case 4 :\n" +
2707 				"					System.out.println(methodName + i);\n" +
2708 				"				break;\n" +
2709 				"				case 5 :\n" +
2710 				"					System.out.println(methodName + i);\n" +
2711 				"				break;\n" +
2712 				"				case 6 :\n" +
2713 				"					System.out.println(methodName + i);\n" +
2714 				"				break;\n" +
2715 				"				case 7 :\n" +
2716 				"					System.out.println(methodName + i);\n" +
2717 				"				break;\n" +
2718 				"				case 8 :\n" +
2719 				"					System.out.println(methodName + i);\n" +
2720 				"				break;\n" +
2721 				"				case 9 :\n" +
2722 				"					System.out.println(methodName + i);\n" +
2723 				"				break;\n" +
2724 				"				case 10 :\n" +
2725 				"					System.out.println(methodName + i);\n" +
2726 				"				break;\n" +
2727 				"				case 11 :\n" +
2728 				"					System.out.println(methodName + i);\n" +
2729 				"				break;\n" +
2730 				"				case 12 :\n" +
2731 				"					System.out.println(methodName + i);\n" +
2732 				"				break;\n" +
2733 				"				case 13 :\n" +
2734 				"					System.out.println(methodName + i);\n" +
2735 				"				break;\n" +
2736 				"				case 14 :\n" +
2737 				"					System.out.println(methodName + i);\n" +
2738 				"				break;\n" +
2739 				"				case 15 :\n" +
2740 				"					System.out.println(methodName + i);\n" +
2741 				"				break;\n" +
2742 				"				case 16 :\n" +
2743 				"					System.out.println(methodName + i);\n" +
2744 				"				break;\n" +
2745 				"				case 17 :\n" +
2746 				"					System.out.println(methodName + i);\n" +
2747 				"				break;\n" +
2748 				"				case 18 :\n" +
2749 				"					System.out.println(methodName + i);\n" +
2750 				"				break;\n" +
2751 				"				case 19 :\n" +
2752 				"					System.out.println(methodName + i);\n" +
2753 				"				break;\n" +
2754 				"				case 20 :\n" +
2755 				"					System.out.println(methodName + i);\n" +
2756 				"				break;\n" +
2757 				"				case 21 :\n" +
2758 				"					System.out.println(methodName + i);\n" +
2759 				"				break;\n" +
2760 				"				case 22 :\n" +
2761 				"					System.out.println(methodName + i);\n" +
2762 				"				break;\n" +
2763 				"				case 23 :\n" +
2764 				"					System.out.println(methodName + i);\n" +
2765 				"				break;\n" +
2766 				"				case 24 :\n" +
2767 				"					System.out.println(methodName + i);\n" +
2768 				"				break;\n" +
2769 				"				case 25 :\n" +
2770 				"					System.out.println(methodName + i);\n" +
2771 				"				break;\n" +
2772 				"				case 26 :\n" +
2773 				"					System.out.println(methodName + i);\n" +
2774 				"				break;\n" +
2775 				"				case 27 :\n" +
2776 				"					System.out.println(methodName + i);\n" +
2777 				"				break;\n" +
2778 				"				case 28 :\n" +
2779 				"					System.out.println(methodName + i);\n" +
2780 				"				break;\n" +
2781 				"				case 29 :\n" +
2782 				"					System.out.println(methodName + i);\n" +
2783 				"				break;\n" +
2784 				"				case 30 :\n" +
2785 				"					System.out.println(methodName + i);\n" +
2786 				"				break;\n" +
2787 				"				case 31 :\n" +
2788 				"					System.out.println(methodName + i);\n" +
2789 				"				break;\n" +
2790 				"				case 32 :\n" +
2791 				"					System.out.println(methodName + i);\n" +
2792 				"				break;\n" +
2793 				"				case 33 :\n" +
2794 				"					System.out.println(methodName + i);\n" +
2795 				"				break;\n" +
2796 				"				case 34 :\n" +
2797 				"					System.out.println(methodName + i);\n" +
2798 				"				break;\n" +
2799 				"				case 35 :\n" +
2800 				"					System.out.println(methodName + i);\n" +
2801 				"				break;\n" +
2802 				"				case 36 :\n" +
2803 				"					System.out.println(methodName + i);\n" +
2804 				"				break;\n" +
2805 				"				case 37 :\n" +
2806 				"					System.out.println(methodName + i);\n" +
2807 				"				break;\n" +
2808 				"				case 38 :\n" +
2809 				"					System.out.println(methodName + i);\n" +
2810 				"				break;\n" +
2811 				"				case 39 :\n" +
2812 				"					System.out.println(methodName + i);\n" +
2813 				"				break;\n" +
2814 				"				case 40 :\n" +
2815 				"					System.out.println(methodName + i);\n" +
2816 				"				break;\n" +
2817 				"				case 41 :\n" +
2818 				"					System.out.println(methodName + i);\n" +
2819 				"				break;\n" +
2820 				"				case 42 :\n" +
2821 				"					System.out.println(methodName + i);\n" +
2822 				"				break;\n" +
2823 				"				case 43 :\n" +
2824 				"					System.out.println(methodName + i);\n" +
2825 				"				break;\n" +
2826 				"				case 44 :\n" +
2827 				"					System.out.println(methodName + i);\n" +
2828 				"				break;\n" +
2829 				"				case 45 :\n" +
2830 				"					System.out.println(methodName + i);\n" +
2831 				"				break;\n" +
2832 				"				case 46 :\n" +
2833 				"					System.out.println(methodName + i);\n" +
2834 				"				break;\n" +
2835 				"				case 47 :\n" +
2836 				"					System.out.println(methodName + i);\n" +
2837 				"				break;\n" +
2838 				"				case 48 :\n" +
2839 				"					System.out.println(methodName + i);\n" +
2840 				"				break;\n" +
2841 				"				case 49 :\n" +
2842 				"					System.out.println(methodName + i);\n" +
2843 				"				break;\n" +
2844 				"				case 50 :\n" +
2845 				"					System.out.println(methodName + i);\n" +
2846 				"				break;\n" +
2847 				"				case 51 :\n" +
2848 				"					System.out.println(methodName + i);\n" +
2849 				"				break;\n" +
2850 				"				case 52 :\n" +
2851 				"					System.out.println(methodName + i);\n" +
2852 				"				break;\n" +
2853 				"				case 53 :\n" +
2854 				"					System.out.println(methodName + i);\n" +
2855 				"				break;\n" +
2856 				"				case 54 :\n" +
2857 				"					System.out.println(methodName + i);\n" +
2858 				"				break;\n" +
2859 				"				case 55 :\n" +
2860 				"					System.out.println(methodName + i);\n" +
2861 				"				break;\n" +
2862 				"				case 56 :\n" +
2863 				"					System.out.println(methodName + i);\n" +
2864 				"				break;\n" +
2865 				"				case 57 :\n" +
2866 				"					System.out.println(methodName + i);\n" +
2867 				"				break;\n" +
2868 				"				case 58 :\n" +
2869 				"					System.out.println(methodName + i);\n" +
2870 				"				break;\n" +
2871 				"				case 59 :\n" +
2872 				"					System.out.println(methodName + i);\n" +
2873 				"				break;\n" +
2874 				"				case 60 :\n" +
2875 				"					System.out.println(methodName + i);\n" +
2876 				"				break;\n" +
2877 				"				case 61 :\n" +
2878 				"					System.out.println(methodName + i);\n" +
2879 				"				break;\n" +
2880 				"				case 62 :\n" +
2881 				"					System.out.println(methodName + i);\n" +
2882 				"				break;\n" +
2883 				"				case 63 :\n" +
2884 				"					System.out.println(methodName + i);\n" +
2885 				"				break;\n" +
2886 				"				case 64 :\n" +
2887 				"					System.out.println(methodName + i);\n" +
2888 				"				break;\n" +
2889 				"				case 65 :\n" +
2890 				"					System.out.println(methodName + i);\n" +
2891 				"				break;\n" +
2892 				"				case 66 :\n" +
2893 				"					System.out.println(methodName + i);\n" +
2894 				"				break;\n" +
2895 				"				case 67 :\n" +
2896 				"					System.out.println(methodName + i);\n" +
2897 				"				break;\n" +
2898 				"				case 68 :\n" +
2899 				"					System.out.println(methodName + i);\n" +
2900 				"				break;\n" +
2901 				"				case 69 :\n" +
2902 				"					System.out.println(methodName + i);\n" +
2903 				"				break;\n" +
2904 				"				case 70 :\n" +
2905 				"					System.out.println(methodName + i);\n" +
2906 				"				break;\n" +
2907 				"				case 71 :\n" +
2908 				"					System.out.println(methodName + i);\n" +
2909 				"				break;\n" +
2910 				"				case 72 :\n" +
2911 				"					System.out.println(methodName + i);\n" +
2912 				"				break;\n" +
2913 				"				case 73 :\n" +
2914 				"					System.out.println(methodName + i);\n" +
2915 				"				break;\n" +
2916 				"				case 74 :\n" +
2917 				"					System.out.println(methodName + i);\n" +
2918 				"				break;\n" +
2919 				"				case 75 :\n" +
2920 				"					System.out.println(methodName + i);\n" +
2921 				"				break;\n" +
2922 				"				case 76 :\n" +
2923 				"					System.out.println(methodName + i);\n" +
2924 				"				break;\n" +
2925 				"				case 77 :\n" +
2926 				"					System.out.println(methodName + i);\n" +
2927 				"				break;\n" +
2928 				"				case 78 :\n" +
2929 				"					System.out.println(methodName + i);\n" +
2930 				"				break;\n" +
2931 				"				case 79 :\n" +
2932 				"					System.out.println(methodName + i);\n" +
2933 				"				break;\n" +
2934 				"				case 80 :\n" +
2935 				"					System.out.println(methodName + i);\n" +
2936 				"				break;\n" +
2937 				"				case 81 :\n" +
2938 				"					System.out.println(methodName + i);\n" +
2939 				"				break;\n" +
2940 				"				case 82 :\n" +
2941 				"					System.out.println(methodName + i);\n" +
2942 				"				break;\n" +
2943 				"				case 83 :\n" +
2944 				"					System.out.println(methodName + i);\n" +
2945 				"				break;\n" +
2946 				"				case 84 :\n" +
2947 				"					System.out.println(methodName + i);\n" +
2948 				"				break;\n" +
2949 				"				case 85 :\n" +
2950 				"					System.out.println(methodName + i);\n" +
2951 				"				break;\n" +
2952 				"				case 86 :\n" +
2953 				"					System.out.println(methodName + i);\n" +
2954 				"				break;\n" +
2955 				"				case 87 :\n" +
2956 				"					System.out.println(methodName + i);\n" +
2957 				"				break;\n" +
2958 				"				case 88 :\n" +
2959 				"					System.out.println(methodName + i);\n" +
2960 				"				break;\n" +
2961 				"				case 89 :\n" +
2962 				"					System.out.println(methodName + i);\n" +
2963 				"				break;\n" +
2964 				"				case 90 :\n" +
2965 				"					System.out.println(methodName + i);\n" +
2966 				"				break;\n" +
2967 				"				case 91 :\n" +
2968 				"					System.out.println(methodName + i);\n" +
2969 				"				break;\n" +
2970 				"				case 92 :\n" +
2971 				"					System.out.println(methodName + i);\n" +
2972 				"				break;\n" +
2973 				"				case 93 :\n" +
2974 				"					System.out.println(methodName + i);\n" +
2975 				"				break;\n" +
2976 				"				case 94 :\n" +
2977 				"					System.out.println(methodName + i);\n" +
2978 				"				break;\n" +
2979 				"				case 95 :\n" +
2980 				"					System.out.println(methodName + i);\n" +
2981 				"				break;\n" +
2982 				"				case 96 :\n" +
2983 				"					System.out.println(methodName + i);\n" +
2984 				"				break;\n" +
2985 				"				case 97 :\n" +
2986 				"					System.out.println(methodName + i);\n" +
2987 				"				break;\n" +
2988 				"				case 98 :\n" +
2989 				"					System.out.println(methodName + i);\n" +
2990 				"				break;\n" +
2991 				"				case 99 :\n" +
2992 				"					System.out.println(methodName + i);\n" +
2993 				"				break;\n" +
2994 				"				case 100 :\n" +
2995 				"					System.out.println(methodName + i);\n" +
2996 				"				break;\n" +
2997 				"				case 101 :\n" +
2998 				"					System.out.println(methodName + i);\n" +
2999 				"				break;\n" +
3000 				"				case 102 :\n" +
3001 				"					System.out.println(methodName + i);\n" +
3002 				"				break;\n" +
3003 				"				case 103 :\n" +
3004 				"					System.out.println(methodName + i);\n" +
3005 				"				break;\n" +
3006 				"				case 104 :\n" +
3007 				"					System.out.println(methodName + i);\n" +
3008 				"				break;\n" +
3009 				"				case 105 :\n" +
3010 				"					System.out.println(methodName + i);\n" +
3011 				"				break;\n" +
3012 				"				case 106 :\n" +
3013 				"					System.out.println(methodName + i);\n" +
3014 				"				break;\n" +
3015 				"				case 107 :\n" +
3016 				"					System.out.println(methodName + i);\n" +
3017 				"				break;\n" +
3018 				"				case 108 :\n" +
3019 				"					System.out.println(methodName + i);\n" +
3020 				"				break;\n" +
3021 				"				case 109 :\n" +
3022 				"					System.out.println(methodName + i);\n" +
3023 				"				break;\n" +
3024 				"				case 110 :\n" +
3025 				"					System.out.println(methodName + i);\n" +
3026 				"				break;\n" +
3027 				"				case 111 :\n" +
3028 				"					System.out.println(methodName + i);\n" +
3029 				"				break;\n" +
3030 				"				case 112 :\n" +
3031 				"					System.out.println(methodName + i);\n" +
3032 				"				break;\n" +
3033 				"				case 113 :\n" +
3034 				"					System.out.println(methodName + i);\n" +
3035 				"				break;\n" +
3036 				"				case 114 :\n" +
3037 				"					System.out.println(methodName + i);\n" +
3038 				"				break;\n" +
3039 				"				case 115 :\n" +
3040 				"					System.out.println(methodName + i);\n" +
3041 				"				break;\n" +
3042 				"				case 116 :\n" +
3043 				"					System.out.println(methodName + i);\n" +
3044 				"				break;\n" +
3045 				"				case 117 :\n" +
3046 				"					System.out.println(methodName + i);\n" +
3047 				"				break;\n" +
3048 				"				case 118 :\n" +
3049 				"					System.out.println(methodName + i);\n" +
3050 				"				break;\n" +
3051 				"				case 119 :\n" +
3052 				"					System.out.println(methodName + i);\n" +
3053 				"				break;\n" +
3054 				"				case 120 :\n" +
3055 				"					System.out.println(methodName + i);\n" +
3056 				"				break;\n" +
3057 				"				case 121 :\n" +
3058 				"					System.out.println(methodName + i);\n" +
3059 				"				break;\n" +
3060 				"				case 122 :\n" +
3061 				"					System.out.println(methodName + i);\n" +
3062 				"				break;\n" +
3063 				"				case 123 :\n" +
3064 				"					System.out.println(methodName + i);\n" +
3065 				"				break;\n" +
3066 				"				case 124 :\n" +
3067 				"					System.out.println(methodName + i);\n" +
3068 				"				break;\n" +
3069 				"				case 125 :\n" +
3070 				"					System.out.println(methodName + i);\n" +
3071 				"				break;\n" +
3072 				"				case 126 :\n" +
3073 				"					System.out.println(methodName + i);\n" +
3074 				"				break;\n" +
3075 				"				case 127 :\n" +
3076 				"					System.out.println(methodName + i);\n" +
3077 				"				break;\n" +
3078 				"				case 128 :\n" +
3079 				"					System.out.println(methodName + i);\n" +
3080 				"				break;\n" +
3081 				"				case 129 :\n" +
3082 				"					System.out.println(methodName + i);\n" +
3083 				"				break;\n" +
3084 				"				case 130 :\n" +
3085 				"					System.out.println(methodName + i);\n" +
3086 				"				break;\n" +
3087 				"				case 131 :\n" +
3088 				"					System.out.println(methodName + i);\n" +
3089 				"				break;\n" +
3090 				"				case 132 :\n" +
3091 				"					System.out.println(methodName + i);\n" +
3092 				"				break;\n" +
3093 				"				case 133 :\n" +
3094 				"					System.out.println(methodName + i);\n" +
3095 				"				break;\n" +
3096 				"				case 134 :\n" +
3097 				"					System.out.println(methodName + i);\n" +
3098 				"				break;\n" +
3099 				"				case 135 :\n" +
3100 				"					System.out.println(methodName + i);\n" +
3101 				"				break;\n" +
3102 				"				case 136 :\n" +
3103 				"					System.out.println(methodName + i);\n" +
3104 				"				break;\n" +
3105 				"				case 137 :\n" +
3106 				"					System.out.println(methodName + i);\n" +
3107 				"				break;\n" +
3108 				"				case 138 :\n" +
3109 				"					System.out.println(methodName + i);\n" +
3110 				"				break;\n" +
3111 				"				case 139 :\n" +
3112 				"					System.out.println(methodName + i);\n" +
3113 				"				break;\n" +
3114 				"				case 140 :\n" +
3115 				"					System.out.println(methodName + i);\n" +
3116 				"				break;\n" +
3117 				"				case 141 :\n" +
3118 				"					System.out.println(methodName + i);\n" +
3119 				"				break;\n" +
3120 				"				case 142 :\n" +
3121 				"					System.out.println(methodName + i);\n" +
3122 				"				break;\n" +
3123 				"				case 143 :\n" +
3124 				"					System.out.println(methodName + i);\n" +
3125 				"				break;\n" +
3126 				"				case 144 :\n" +
3127 				"					System.out.println(methodName + i);\n" +
3128 				"				break;\n" +
3129 				"				case 145 :\n" +
3130 				"					System.out.println(methodName + i);\n" +
3131 				"				break;\n" +
3132 				"				case 146 :\n" +
3133 				"					System.out.println(methodName + i);\n" +
3134 				"				break;\n" +
3135 				"				case 147 :\n" +
3136 				"					System.out.println(methodName + i);\n" +
3137 				"				break;\n" +
3138 				"				case 148 :\n" +
3139 				"					System.out.println(methodName + i);\n" +
3140 				"				break;\n" +
3141 				"				case 149 :\n" +
3142 				"					System.out.println(methodName + i);\n" +
3143 				"				break;\n" +
3144 				"				case 150 :\n" +
3145 				"					System.out.println(methodName + i);\n" +
3146 				"				break;\n" +
3147 				"				case 151 :\n" +
3148 				"					System.out.println(methodName + i);\n" +
3149 				"				break;\n" +
3150 				"				case 152 :\n" +
3151 				"					System.out.println(methodName + i);\n" +
3152 				"				break;\n" +
3153 				"				case 153 :\n" +
3154 				"					System.out.println(methodName + i);\n" +
3155 				"				break;\n" +
3156 				"				case 154 :\n" +
3157 				"					System.out.println(methodName + i);\n" +
3158 				"				break;\n" +
3159 				"				case 155 :\n" +
3160 				"					System.out.println(methodName + i);\n" +
3161 				"				break;\n" +
3162 				"				case 156 :\n" +
3163 				"					System.out.println(methodName + i);\n" +
3164 				"				break;\n" +
3165 				"				case 157 :\n" +
3166 				"					System.out.println(methodName + i);\n" +
3167 				"				break;\n" +
3168 				"				case 158 :\n" +
3169 				"					System.out.println(methodName + i);\n" +
3170 				"				break;\n" +
3171 				"				case 159 :\n" +
3172 				"					System.out.println(methodName + i);\n" +
3173 				"				break;\n" +
3174 				"				case 160 :\n" +
3175 				"					System.out.println(methodName + i);\n" +
3176 				"				break;\n" +
3177 				"				case 161 :\n" +
3178 				"					System.out.println(methodName + i);\n" +
3179 				"				break;\n" +
3180 				"				case 162 :\n" +
3181 				"					System.out.println(methodName + i);\n" +
3182 				"				break;\n" +
3183 				"				case 163 :\n" +
3184 				"					System.out.println(methodName + i);\n" +
3185 				"				break;\n" +
3186 				"				case 164 :\n" +
3187 				"					System.out.println(methodName + i);\n" +
3188 				"				break;\n" +
3189 				"				case 165 :\n" +
3190 				"					System.out.println(methodName + i);\n" +
3191 				"				break;\n" +
3192 				"				case 166 :\n" +
3193 				"					System.out.println(methodName + i);\n" +
3194 				"				break;\n" +
3195 				"				case 167 :\n" +
3196 				"					System.out.println(methodName + i);\n" +
3197 				"				break;\n" +
3198 				"				case 168 :\n" +
3199 				"					System.out.println(methodName + i);\n" +
3200 				"				break;\n" +
3201 				"				case 169 :\n" +
3202 				"					System.out.println(methodName + i);\n" +
3203 				"				break;\n" +
3204 				"				case 170 :\n" +
3205 				"					System.out.println(methodName + i);\n" +
3206 				"				break;\n" +
3207 				"				case 171 :\n" +
3208 				"					System.out.println(methodName + i);\n" +
3209 				"				break;\n" +
3210 				"				case 172 :\n" +
3211 				"					System.out.println(methodName + i);\n" +
3212 				"				break;\n" +
3213 				"				case 173 :\n" +
3214 				"					System.out.println(methodName + i);\n" +
3215 				"				break;\n" +
3216 				"				case 174 :\n" +
3217 				"					System.out.println(methodName + i);\n" +
3218 				"				break;\n" +
3219 				"				case 175 :\n" +
3220 				"					System.out.println(methodName + i);\n" +
3221 				"				break;\n" +
3222 				"				case 176 :\n" +
3223 				"					System.out.println(methodName + i);\n" +
3224 				"				break;\n" +
3225 				"				case 177 :\n" +
3226 				"					System.out.println(methodName + i);\n" +
3227 				"				break;\n" +
3228 				"				case 178 :\n" +
3229 				"					System.out.println(methodName + i);\n" +
3230 				"				break;\n" +
3231 				"				case 179 :\n" +
3232 				"					System.out.println(methodName + i);\n" +
3233 				"				break;\n" +
3234 				"				case 180 :\n" +
3235 				"					System.out.println(methodName + i);\n" +
3236 				"				break;\n" +
3237 				"				case 181 :\n" +
3238 				"					System.out.println(methodName + i);\n" +
3239 				"				break;\n" +
3240 				"				case 182 :\n" +
3241 				"					System.out.println(methodName + i);\n" +
3242 				"				break;\n" +
3243 				"				case 183 :\n" +
3244 				"					System.out.println(methodName + i);\n" +
3245 				"				break;\n" +
3246 				"				case 184 :\n" +
3247 				"					System.out.println(methodName + i);\n" +
3248 				"				break;\n" +
3249 				"				case 185 :\n" +
3250 				"					System.out.println(methodName + i);\n" +
3251 				"				break;\n" +
3252 				"				case 186 :\n" +
3253 				"					System.out.println(methodName + i);\n" +
3254 				"				break;\n" +
3255 				"				case 187 :\n" +
3256 				"					System.out.println(methodName + i);\n" +
3257 				"				break;\n" +
3258 				"				case 188 :\n" +
3259 				"					System.out.println(methodName + i);\n" +
3260 				"				break;\n" +
3261 				"				case 189 :\n" +
3262 				"					System.out.println(methodName + i);\n" +
3263 				"				break;\n" +
3264 				"				case 190 :\n" +
3265 				"					System.out.println(methodName + i);\n" +
3266 				"				break;\n" +
3267 				"				case 191 :\n" +
3268 				"					System.out.println(methodName + i);\n" +
3269 				"				break;\n" +
3270 				"				case 192 :\n" +
3271 				"					System.out.println(methodName + i);\n" +
3272 				"				break;\n" +
3273 				"				case 193 :\n" +
3274 				"					System.out.println(methodName + i);\n" +
3275 				"				break;\n" +
3276 				"				case 194 :\n" +
3277 				"					System.out.println(methodName + i);\n" +
3278 				"				break;\n" +
3279 				"				case 195 :\n" +
3280 				"					System.out.println(methodName + i);\n" +
3281 				"				break;\n" +
3282 				"				case 196 :\n" +
3283 				"					System.out.println(methodName + i);\n" +
3284 				"				break;\n" +
3285 				"				case 197 :\n" +
3286 				"					System.out.println(methodName + i);\n" +
3287 				"				break;\n" +
3288 				"				case 198 :\n" +
3289 				"					System.out.println(methodName + i);\n" +
3290 				"				break;\n" +
3291 				"				case 199 :\n" +
3292 				"					System.out.println(methodName + i);\n" +
3293 				"				break;\n" +
3294 				"				case 200 :\n" +
3295 				"					System.out.println(methodName + i);\n" +
3296 				"				break;\n" +
3297 				"				case 201 :\n" +
3298 				"					System.out.println(methodName + i);\n" +
3299 				"				break;\n" +
3300 				"				case 202 :\n" +
3301 				"					System.out.println(methodName + i);\n" +
3302 				"				break;\n" +
3303 				"				case 203 :\n" +
3304 				"					System.out.println(methodName + i);\n" +
3305 				"				break;\n" +
3306 				"				case 204 :\n" +
3307 				"					System.out.println(methodName + i);\n" +
3308 				"				break;\n" +
3309 				"				case 205 :\n" +
3310 				"					System.out.println(methodName + i);\n" +
3311 				"				break;\n" +
3312 				"				case 206 :\n" +
3313 				"					System.out.println(methodName + i);\n" +
3314 				"				break;\n" +
3315 				"				case 207 :\n" +
3316 				"					System.out.println(methodName + i);\n" +
3317 				"				break;\n" +
3318 				"				case 208 :\n" +
3319 				"					System.out.println(methodName + i);\n" +
3320 				"				break;\n" +
3321 				"				case 209 :\n" +
3322 				"					System.out.println(methodName + i);\n" +
3323 				"				break;\n" +
3324 				"				case 210 :\n" +
3325 				"					System.out.println(methodName + i);\n" +
3326 				"				break;\n" +
3327 				"				case 211 :\n" +
3328 				"					System.out.println(methodName + i);\n" +
3329 				"				break;\n" +
3330 				"				case 212 :\n" +
3331 				"					System.out.println(methodName + i);\n" +
3332 				"				break;\n" +
3333 				"				case 213 :\n" +
3334 				"					System.out.println(methodName + i);\n" +
3335 				"				break;\n" +
3336 				"				case 214 :\n" +
3337 				"					System.out.println(methodName + i);\n" +
3338 				"				break;\n" +
3339 				"				case 215 :\n" +
3340 				"					System.out.println(methodName + i);\n" +
3341 				"				break;\n" +
3342 				"				case 216 :\n" +
3343 				"					System.out.println(methodName + i);\n" +
3344 				"				break;\n" +
3345 				"				case 217 :\n" +
3346 				"					System.out.println(methodName + i);\n" +
3347 				"				break;\n" +
3348 				"				case 218 :\n" +
3349 				"					System.out.println(methodName + i);\n" +
3350 				"				break;\n" +
3351 				"				case 219 :\n" +
3352 				"					System.out.println(methodName + i);\n" +
3353 				"				break;\n" +
3354 				"				case 220 :\n" +
3355 				"					System.out.println(methodName + i);\n" +
3356 				"				break;\n" +
3357 				"				case 221 :\n" +
3358 				"					System.out.println(methodName + i);\n" +
3359 				"				break;\n" +
3360 				"				case 222 :\n" +
3361 				"					System.out.println(methodName + i);\n" +
3362 				"				break;\n" +
3363 				"				case 223 :\n" +
3364 				"					System.out.println(methodName + i);\n" +
3365 				"				break;\n" +
3366 				"				case 224 :\n" +
3367 				"					System.out.println(methodName + i);\n" +
3368 				"				break;\n" +
3369 				"				case 225 :\n" +
3370 				"					System.out.println(methodName + i);\n" +
3371 				"				break;\n" +
3372 				"				case 226 :\n" +
3373 				"					System.out.println(methodName + i);\n" +
3374 				"				break;\n" +
3375 				"				case 227 :\n" +
3376 				"					System.out.println(methodName + i);\n" +
3377 				"				break;\n" +
3378 				"				case 228 :\n" +
3379 				"					System.out.println(methodName + i);\n" +
3380 				"				break;\n" +
3381 				"				case 229 :\n" +
3382 				"					System.out.println(methodName + i);\n" +
3383 				"				break;\n" +
3384 				"				case 230 :\n" +
3385 				"					System.out.println(methodName + i);\n" +
3386 				"				break;\n" +
3387 				"				case 231 :\n" +
3388 				"					System.out.println(methodName + i);\n" +
3389 				"				break;\n" +
3390 				"				case 232 :\n" +
3391 				"					System.out.println(methodName + i);\n" +
3392 				"				break;\n" +
3393 				"				case 233 :\n" +
3394 				"					System.out.println(methodName + i);\n" +
3395 				"				break;\n" +
3396 				"				case 234 :\n" +
3397 				"					System.out.println(methodName + i);\n" +
3398 				"				break;\n" +
3399 				"				case 235 :\n" +
3400 				"					System.out.println(methodName + i);\n" +
3401 				"				break;\n" +
3402 				"				case 236 :\n" +
3403 				"					System.out.println(methodName + i);\n" +
3404 				"				break;\n" +
3405 				"				case 237 :\n" +
3406 				"					System.out.println(methodName + i);\n" +
3407 				"				break;\n" +
3408 				"				case 238 :\n" +
3409 				"					System.out.println(methodName + i);\n" +
3410 				"				break;\n" +
3411 				"				case 239 :\n" +
3412 				"					System.out.println(methodName + i);\n" +
3413 				"				break;\n" +
3414 				"				case 240 :\n" +
3415 				"					System.out.println(methodName + i);\n" +
3416 				"				break;\n" +
3417 				"				case 241 :\n" +
3418 				"					System.out.println(methodName + i);\n" +
3419 				"				break;\n" +
3420 				"				case 242 :\n" +
3421 				"					System.out.println(methodName + i);\n" +
3422 				"				break;\n" +
3423 				"				case 243 :\n" +
3424 				"					System.out.println(methodName + i);\n" +
3425 				"				break;\n" +
3426 				"				case 244 :\n" +
3427 				"					System.out.println(methodName + i);\n" +
3428 				"				break;\n" +
3429 				"				case 245 :\n" +
3430 				"					System.out.println(methodName + i);\n" +
3431 				"				break;\n" +
3432 				"				case 246 :\n" +
3433 				"					System.out.println(methodName + i);\n" +
3434 				"				break;\n" +
3435 				"				case 247 :\n" +
3436 				"					System.out.println(methodName + i);\n" +
3437 				"				break;\n" +
3438 				"				case 248 :\n" +
3439 				"					System.out.println(methodName + i);\n" +
3440 				"				break;\n" +
3441 				"				case 249 :\n" +
3442 				"					System.out.println(methodName + i);\n" +
3443 				"				break;\n" +
3444 				"				case 250 :\n" +
3445 				"					System.out.println(methodName + i);\n" +
3446 				"				break;\n" +
3447 				"				case 251 :\n" +
3448 				"					System.out.println(methodName + i);\n" +
3449 				"				break;\n" +
3450 				"				case 252 :\n" +
3451 				"					System.out.println(methodName + i);\n" +
3452 				"				break;\n" +
3453 				"				case 253 :\n" +
3454 				"					System.out.println(methodName + i);\n" +
3455 				"				break;\n" +
3456 				"				case 254 :\n" +
3457 				"					System.out.println(methodName + i);\n" +
3458 				"				break;\n" +
3459 				"				case 255 :\n" +
3460 				"					System.out.println(methodName + i);\n" +
3461 				"				break;\n" +
3462 				"				case 256 :\n" +
3463 				"					System.out.println(methodName + i);\n" +
3464 				"				break;\n" +
3465 				"				case 257 :\n" +
3466 				"					System.out.println(methodName + i);\n" +
3467 				"				break;\n" +
3468 				"				case 258 :\n" +
3469 				"					System.out.println(methodName + i);\n" +
3470 				"				break;\n" +
3471 				"				case 259 :\n" +
3472 				"					System.out.println(methodName + i);\n" +
3473 				"				break;\n" +
3474 				"				case 260 :\n" +
3475 				"					System.out.println(methodName + i);\n" +
3476 				"				break;\n" +
3477 				"				case 261 :\n" +
3478 				"					System.out.println(methodName + i);\n" +
3479 				"				break;\n" +
3480 				"				case 262 :\n" +
3481 				"					System.out.println(methodName + i);\n" +
3482 				"				break;\n" +
3483 				"				case 263 :\n" +
3484 				"					System.out.println(methodName + i);\n" +
3485 				"				break;\n" +
3486 				"				case 264 :\n" +
3487 				"					System.out.println(methodName + i);\n" +
3488 				"				break;\n" +
3489 				"				case 265 :\n" +
3490 				"					System.out.println(methodName + i);\n" +
3491 				"				break;\n" +
3492 				"				case 266 :\n" +
3493 				"					System.out.println(methodName + i);\n" +
3494 				"				break;\n" +
3495 				"				case 267 :\n" +
3496 				"					System.out.println(methodName + i);\n" +
3497 				"				break;\n" +
3498 				"				case 268 :\n" +
3499 				"					System.out.println(methodName + i);\n" +
3500 				"				break;\n" +
3501 				"				case 269 :\n" +
3502 				"					System.out.println(methodName + i);\n" +
3503 				"				break;\n" +
3504 				"				case 270 :\n" +
3505 				"					System.out.println(methodName + i);\n" +
3506 				"				break;\n" +
3507 				"				case 271 :\n" +
3508 				"					System.out.println(methodName + i);\n" +
3509 				"				break;\n" +
3510 				"				case 272 :\n" +
3511 				"					System.out.println(methodName + i);\n" +
3512 				"				break;\n" +
3513 				"				case 273 :\n" +
3514 				"					System.out.println(methodName + i);\n" +
3515 				"				break;\n" +
3516 				"				case 274 :\n" +
3517 				"					System.out.println(methodName + i);\n" +
3518 				"				break;\n" +
3519 				"				case 275 :\n" +
3520 				"					System.out.println(methodName + i);\n" +
3521 				"				break;\n" +
3522 				"				case 276 :\n" +
3523 				"					System.out.println(methodName + i);\n" +
3524 				"				break;\n" +
3525 				"				case 277 :\n" +
3526 				"					System.out.println(methodName + i);\n" +
3527 				"				break;\n" +
3528 				"				case 278 :\n" +
3529 				"					System.out.println(methodName + i);\n" +
3530 				"				break;\n" +
3531 				"				case 279 :\n" +
3532 				"					System.out.println(methodName + i);\n" +
3533 				"				break;\n" +
3534 				"				case 280 :\n" +
3535 				"					System.out.println(methodName + i);\n" +
3536 				"				break;\n" +
3537 				"				case 281 :\n" +
3538 				"					System.out.println(methodName + i);\n" +
3539 				"				break;\n" +
3540 				"				case 282 :\n" +
3541 				"					System.out.println(methodName + i);\n" +
3542 				"				break;\n" +
3543 				"				case 283 :\n" +
3544 				"					System.out.println(methodName + i);\n" +
3545 				"				break;\n" +
3546 				"				case 284 :\n" +
3547 				"					System.out.println(methodName + i);\n" +
3548 				"				break;\n" +
3549 				"				case 285 :\n" +
3550 				"					System.out.println(methodName + i);\n" +
3551 				"				break;\n" +
3552 				"				case 286 :\n" +
3553 				"					System.out.println(methodName + i);\n" +
3554 				"				break;\n" +
3555 				"				case 287 :\n" +
3556 				"					System.out.println(methodName + i);\n" +
3557 				"				break;\n" +
3558 				"				case 288 :\n" +
3559 				"					System.out.println(methodName + i);\n" +
3560 				"				break;\n" +
3561 				"				case 289 :\n" +
3562 				"					System.out.println(methodName + i);\n" +
3563 				"				break;\n" +
3564 				"				case 290 :\n" +
3565 				"					System.out.println(methodName + i);\n" +
3566 				"				break;\n" +
3567 				"				case 291 :\n" +
3568 				"					System.out.println(methodName + i);\n" +
3569 				"				break;\n" +
3570 				"				case 292 :\n" +
3571 				"					System.out.println(methodName + i);\n" +
3572 				"				break;\n" +
3573 				"				case 293 :\n" +
3574 				"					System.out.println(methodName + i);\n" +
3575 				"				break;\n" +
3576 				"				case 294 :\n" +
3577 				"					System.out.println(methodName + i);\n" +
3578 				"				break;\n" +
3579 				"				case 295 :\n" +
3580 				"					System.out.println(methodName + i);\n" +
3581 				"				break;\n" +
3582 				"				case 296 :\n" +
3583 				"					System.out.println(methodName + i);\n" +
3584 				"				break;\n" +
3585 				"				case 297 :\n" +
3586 				"					System.out.println(methodName + i);\n" +
3587 				"				break;\n" +
3588 				"				case 298 :\n" +
3589 				"					System.out.println(methodName + i);\n" +
3590 				"				break;\n" +
3591 				"				case 299 :\n" +
3592 				"					System.out.println(methodName + i);\n" +
3593 				"				break;\n" +
3594 				"				case 300 :\n" +
3595 				"					System.out.println(methodName + i);\n" +
3596 				"				break;\n" +
3597 				"				case 301 :\n" +
3598 				"					System.out.println(methodName + i);\n" +
3599 				"				break;\n" +
3600 				"				case 302 :\n" +
3601 				"					System.out.println(methodName + i);\n" +
3602 				"				break;\n" +
3603 				"				case 303 :\n" +
3604 				"					System.out.println(methodName + i);\n" +
3605 				"				break;\n" +
3606 				"				case 304 :\n" +
3607 				"					System.out.println(methodName + i);\n" +
3608 				"				break;\n" +
3609 				"				case 305 :\n" +
3610 				"					System.out.println(methodName + i);\n" +
3611 				"				break;\n" +
3612 				"				case 306 :\n" +
3613 				"					System.out.println(methodName + i);\n" +
3614 				"				break;\n" +
3615 				"				case 307 :\n" +
3616 				"					System.out.println(methodName + i);\n" +
3617 				"				break;\n" +
3618 				"				case 308 :\n" +
3619 				"					System.out.println(methodName + i);\n" +
3620 				"				break;\n" +
3621 				"				case 309 :\n" +
3622 				"					System.out.println(methodName + i);\n" +
3623 				"				break;\n" +
3624 				"				case 310 :\n" +
3625 				"					System.out.println(methodName + i);\n" +
3626 				"				break;\n" +
3627 				"				case 311 :\n" +
3628 				"					System.out.println(methodName + i);\n" +
3629 				"				break;\n" +
3630 				"				case 312 :\n" +
3631 				"					System.out.println(methodName + i);\n" +
3632 				"				break;\n" +
3633 				"				case 313 :\n" +
3634 				"					System.out.println(methodName + i);\n" +
3635 				"				break;\n" +
3636 				"				case 314 :\n" +
3637 				"					System.out.println(methodName + i);\n" +
3638 				"				break;\n" +
3639 				"				case 315 :\n" +
3640 				"					System.out.println(methodName + i);\n" +
3641 				"				break;\n" +
3642 				"				case 316 :\n" +
3643 				"					System.out.println(methodName + i);\n" +
3644 				"				break;\n" +
3645 				"				case 317 :\n" +
3646 				"					System.out.println(methodName + i);\n" +
3647 				"				break;\n" +
3648 				"				case 318 :\n" +
3649 				"					System.out.println(methodName + i);\n" +
3650 				"				break;\n" +
3651 				"				case 319 :\n" +
3652 				"					System.out.println(methodName + i);\n" +
3653 				"				break;\n" +
3654 				"				case 320 :\n" +
3655 				"					System.out.println(methodName + i);\n" +
3656 				"				break;\n" +
3657 				"				case 321 :\n" +
3658 				"					System.out.println(methodName + i);\n" +
3659 				"				break;\n" +
3660 				"				case 322 :\n" +
3661 				"					System.out.println(methodName + i);\n" +
3662 				"				break;\n" +
3663 				"				case 323 :\n" +
3664 				"					System.out.println(methodName + i);\n" +
3665 				"				break;\n" +
3666 				"				case 324 :\n" +
3667 				"					System.out.println(methodName + i);\n" +
3668 				"				break;\n" +
3669 				"				case 325 :\n" +
3670 				"					System.out.println(methodName + i);\n" +
3671 				"				break;\n" +
3672 				"				case 326 :\n" +
3673 				"					System.out.println(methodName + i);\n" +
3674 				"				break;\n" +
3675 				"				case 327 :\n" +
3676 				"					System.out.println(methodName + i);\n" +
3677 				"				break;\n" +
3678 				"				case 328 :\n" +
3679 				"					System.out.println(methodName + i);\n" +
3680 				"				break;\n" +
3681 				"				case 329 :\n" +
3682 				"					System.out.println(methodName + i);\n" +
3683 				"				break;\n" +
3684 				"				case 330 :\n" +
3685 				"					System.out.println(methodName + i);\n" +
3686 				"				break;\n" +
3687 				"				case 331 :\n" +
3688 				"					System.out.println(methodName + i);\n" +
3689 				"				break;\n" +
3690 				"				case 332 :\n" +
3691 				"					System.out.println(methodName + i);\n" +
3692 				"				break;\n" +
3693 				"				case 333 :\n" +
3694 				"					System.out.println(methodName + i);\n" +
3695 				"				break;\n" +
3696 				"				case 334 :\n" +
3697 				"					System.out.println(methodName + i);\n" +
3698 				"				break;\n" +
3699 				"				case 335 :\n" +
3700 				"					System.out.println(methodName + i);\n" +
3701 				"				break;\n" +
3702 				"				case 336 :\n" +
3703 				"					System.out.println(methodName + i);\n" +
3704 				"				break;\n" +
3705 				"				case 337 :\n" +
3706 				"					System.out.println(methodName + i);\n" +
3707 				"				break;\n" +
3708 				"				case 338 :\n" +
3709 				"					System.out.println(methodName + i);\n" +
3710 				"				break;\n" +
3711 				"				case 339 :\n" +
3712 				"					System.out.println(methodName + i);\n" +
3713 				"				break;\n" +
3714 				"				case 340 :\n" +
3715 				"					System.out.println(methodName + i);\n" +
3716 				"				break;\n" +
3717 				"				case 341 :\n" +
3718 				"					System.out.println(methodName + i);\n" +
3719 				"				break;\n" +
3720 				"				case 342 :\n" +
3721 				"					System.out.println(methodName + i);\n" +
3722 				"				break;\n" +
3723 				"				case 343 :\n" +
3724 				"					System.out.println(methodName + i);\n" +
3725 				"				break;\n" +
3726 				"				case 344 :\n" +
3727 				"					System.out.println(methodName + i);\n" +
3728 				"				break;\n" +
3729 				"				case 345 :\n" +
3730 				"					System.out.println(methodName + i);\n" +
3731 				"				break;\n" +
3732 				"				case 346 :\n" +
3733 				"					System.out.println(methodName + i);\n" +
3734 				"				break;\n" +
3735 				"				case 347 :\n" +
3736 				"					System.out.println(methodName + i);\n" +
3737 				"				break;\n" +
3738 				"				case 348 :\n" +
3739 				"					System.out.println(methodName + i);\n" +
3740 				"				break;\n" +
3741 				"				case 349 :\n" +
3742 				"					System.out.println(methodName + i);\n" +
3743 				"				break;\n" +
3744 				"				case 350 :\n" +
3745 				"					System.out.println(methodName + i);\n" +
3746 				"				break;\n" +
3747 				"				case 351 :\n" +
3748 				"					System.out.println(methodName + i);\n" +
3749 				"				break;\n" +
3750 				"				case 352 :\n" +
3751 				"					System.out.println(methodName + i);\n" +
3752 				"				break;\n" +
3753 				"				case 353 :\n" +
3754 				"					System.out.println(methodName + i);\n" +
3755 				"				break;\n" +
3756 				"				case 354 :\n" +
3757 				"					System.out.println(methodName + i);\n" +
3758 				"				break;\n" +
3759 				"				case 355 :\n" +
3760 				"					System.out.println(methodName + i);\n" +
3761 				"				break;\n" +
3762 				"				case 356 :\n" +
3763 				"					System.out.println(methodName + i);\n" +
3764 				"				break;\n" +
3765 				"				case 357 :\n" +
3766 				"					System.out.println(methodName + i);\n" +
3767 				"				break;\n" +
3768 				"				case 358 :\n" +
3769 				"					System.out.println(methodName + i);\n" +
3770 				"				break;\n" +
3771 				"				case 359 :\n" +
3772 				"					System.out.println(methodName + i);\n" +
3773 				"				break;\n" +
3774 				"				case 360 :\n" +
3775 				"					System.out.println(methodName + i);\n" +
3776 				"				break;\n" +
3777 				"				case 361 :\n" +
3778 				"					System.out.println(methodName + i);\n" +
3779 				"				break;\n" +
3780 				"				case 362 :\n" +
3781 				"					System.out.println(methodName + i);\n" +
3782 				"				break;\n" +
3783 				"				case 363 :\n" +
3784 				"					System.out.println(methodName + i);\n" +
3785 				"				break;\n" +
3786 				"				case 364 :\n" +
3787 				"					System.out.println(methodName + i);\n" +
3788 				"				break;\n" +
3789 				"				case 365 :\n" +
3790 				"					System.out.println(methodName + i);\n" +
3791 				"				break;\n" +
3792 				"				case 366 :\n" +
3793 				"					System.out.println(methodName + i);\n" +
3794 				"				break;\n" +
3795 				"				case 367 :\n" +
3796 				"					System.out.println(methodName + i);\n" +
3797 				"				break;\n" +
3798 				"				case 368 :\n" +
3799 				"					System.out.println(methodName + i);\n" +
3800 				"				break;\n" +
3801 				"				case 369 :\n" +
3802 				"					System.out.println(methodName + i);\n" +
3803 				"				break;\n" +
3804 				"				case 370 :\n" +
3805 				"					System.out.println(methodName + i);\n" +
3806 				"				break;\n" +
3807 				"				case 371 :\n" +
3808 				"					System.out.println(methodName + i);\n" +
3809 				"				break;\n" +
3810 				"				case 372 :\n" +
3811 				"					System.out.println(methodName + i);\n" +
3812 				"				break;\n" +
3813 				"				case 373 :\n" +
3814 				"					System.out.println(methodName + i);\n" +
3815 				"				break;\n" +
3816 				"				case 374 :\n" +
3817 				"					System.out.println(methodName + i);\n" +
3818 				"				break;\n" +
3819 				"				case 375 :\n" +
3820 				"					System.out.println(methodName + i);\n" +
3821 				"				break;\n" +
3822 				"				case 376 :\n" +
3823 				"					System.out.println(methodName + i);\n" +
3824 				"				break;\n" +
3825 				"				case 377 :\n" +
3826 				"					System.out.println(methodName + i);\n" +
3827 				"				break;\n" +
3828 				"				case 378 :\n" +
3829 				"					System.out.println(methodName + i);\n" +
3830 				"				break;\n" +
3831 				"				case 379 :\n" +
3832 				"					System.out.println(methodName + i);\n" +
3833 				"				break;\n" +
3834 				"				case 380 :\n" +
3835 				"					System.out.println(methodName + i);\n" +
3836 				"				break;\n" +
3837 				"				case 381 :\n" +
3838 				"					System.out.println(methodName + i);\n" +
3839 				"				break;\n" +
3840 				"				case 382 :\n" +
3841 				"					System.out.println(methodName + i);\n" +
3842 				"				break;\n" +
3843 				"				case 383 :\n" +
3844 				"					System.out.println(methodName + i);\n" +
3845 				"				break;\n" +
3846 				"				case 384 :\n" +
3847 				"					System.out.println(methodName + i);\n" +
3848 				"				break;\n" +
3849 				"				case 385 :\n" +
3850 				"					System.out.println(methodName + i);\n" +
3851 				"				break;\n" +
3852 				"				case 386 :\n" +
3853 				"					System.out.println(methodName + i);\n" +
3854 				"				break;\n" +
3855 				"				case 387 :\n" +
3856 				"					System.out.println(methodName + i);\n" +
3857 				"				break;\n" +
3858 				"				case 388 :\n" +
3859 				"					System.out.println(methodName + i);\n" +
3860 				"				break;\n" +
3861 				"				case 389 :\n" +
3862 				"					System.out.println(methodName + i);\n" +
3863 				"				break;\n" +
3864 				"				case 390 :\n" +
3865 				"					System.out.println(methodName + i);\n" +
3866 				"				break;\n" +
3867 				"				case 391 :\n" +
3868 				"					System.out.println(methodName + i);\n" +
3869 				"				break;\n" +
3870 				"				case 392 :\n" +
3871 				"					System.out.println(methodName + i);\n" +
3872 				"				break;\n" +
3873 				"				case 393 :\n" +
3874 				"					System.out.println(methodName + i);\n" +
3875 				"				break;\n" +
3876 				"				case 394 :\n" +
3877 				"					System.out.println(methodName + i);\n" +
3878 				"				break;\n" +
3879 				"				case 395 :\n" +
3880 				"					System.out.println(methodName + i);\n" +
3881 				"				break;\n" +
3882 				"				case 396 :\n" +
3883 				"					System.out.println(methodName + i);\n" +
3884 				"				break;\n" +
3885 				"				case 397 :\n" +
3886 				"					System.out.println(methodName + i);\n" +
3887 				"				break;\n" +
3888 				"				case 398 :\n" +
3889 				"					System.out.println(methodName + i);\n" +
3890 				"				break;\n" +
3891 				"				case 399 :\n" +
3892 				"					System.out.println(methodName + i);\n" +
3893 				"				break;\n" +
3894 				"				case 400 :\n" +
3895 				"					System.out.println(methodName + i);\n" +
3896 				"				break;\n" +
3897 				"				case 401 :\n" +
3898 				"					System.out.println(methodName + i);\n" +
3899 				"				break;\n" +
3900 				"				case 402 :\n" +
3901 				"					System.out.println(methodName + i);\n" +
3902 				"				break;\n" +
3903 				"				case 403 :\n" +
3904 				"					System.out.println(methodName + i);\n" +
3905 				"				break;\n" +
3906 				"				case 404 :\n" +
3907 				"					System.out.println(methodName + i);\n" +
3908 				"				break;\n" +
3909 				"				case 405 :\n" +
3910 				"					System.out.println(methodName + i);\n" +
3911 				"				break;\n" +
3912 				"				case 406 :\n" +
3913 				"					System.out.println(methodName + i);\n" +
3914 				"				break;\n" +
3915 				"				case 407 :\n" +
3916 				"					System.out.println(methodName + i);\n" +
3917 				"				break;\n" +
3918 				"				case 408 :\n" +
3919 				"					System.out.println(methodName + i);\n" +
3920 				"				break;\n" +
3921 				"				case 409 :\n" +
3922 				"					System.out.println(methodName + i);\n" +
3923 				"				break;\n" +
3924 				"				case 410 :\n" +
3925 				"					System.out.println(methodName + i);\n" +
3926 				"				break;\n" +
3927 				"				case 411 :\n" +
3928 				"					System.out.println(methodName + i);\n" +
3929 				"				break;\n" +
3930 				"				case 412 :\n" +
3931 				"					System.out.println(methodName + i);\n" +
3932 				"				break;\n" +
3933 				"				case 413 :\n" +
3934 				"					System.out.println(methodName + i);\n" +
3935 				"				break;\n" +
3936 				"				case 414 :\n" +
3937 				"					System.out.println(methodName + i);\n" +
3938 				"				break;\n" +
3939 				"				case 415 :\n" +
3940 				"					System.out.println(methodName + i);\n" +
3941 				"				break;\n" +
3942 				"				case 416 :\n" +
3943 				"					System.out.println(methodName + i);\n" +
3944 				"				break;\n" +
3945 				"				case 417 :\n" +
3946 				"					System.out.println(methodName + i);\n" +
3947 				"				break;\n" +
3948 				"				case 418 :\n" +
3949 				"					System.out.println(methodName + i);\n" +
3950 				"				break;\n" +
3951 				"				case 419 :\n" +
3952 				"					System.out.println(methodName + i);\n" +
3953 				"				break;\n" +
3954 				"				case 420 :\n" +
3955 				"					System.out.println(methodName + i);\n" +
3956 				"				break;\n" +
3957 				"				case 421 :\n" +
3958 				"					System.out.println(methodName + i);\n" +
3959 				"				break;\n" +
3960 				"				case 422 :\n" +
3961 				"					System.out.println(methodName + i);\n" +
3962 				"				break;\n" +
3963 				"				case 423 :\n" +
3964 				"					System.out.println(methodName + i);\n" +
3965 				"				break;\n" +
3966 				"				case 424 :\n" +
3967 				"					System.out.println(methodName + i);\n" +
3968 				"				break;\n" +
3969 				"				case 425 :\n" +
3970 				"					System.out.println(methodName + i);\n" +
3971 				"				break;\n" +
3972 				"				case 426 :\n" +
3973 				"					System.out.println(methodName + i);\n" +
3974 				"				break;\n" +
3975 				"				case 427 :\n" +
3976 				"					System.out.println(methodName + i);\n" +
3977 				"				break;\n" +
3978 				"				case 428 :\n" +
3979 				"					System.out.println(methodName + i);\n" +
3980 				"				break;\n" +
3981 				"				case 429 :\n" +
3982 				"					System.out.println(methodName + i);\n" +
3983 				"				break;\n" +
3984 				"				case 430 :\n" +
3985 				"					System.out.println(methodName + i);\n" +
3986 				"				break;\n" +
3987 				"				case 431 :\n" +
3988 				"					System.out.println(methodName + i);\n" +
3989 				"				break;\n" +
3990 				"				case 432 :\n" +
3991 				"					System.out.println(methodName + i);\n" +
3992 				"				break;\n" +
3993 				"				case 433 :\n" +
3994 				"					System.out.println(methodName + i);\n" +
3995 				"				break;\n" +
3996 				"				case 434 :\n" +
3997 				"					System.out.println(methodName + i);\n" +
3998 				"				break;\n" +
3999 				"				case 435 :\n" +
4000 				"					System.out.println(methodName + i);\n" +
4001 				"				break;\n" +
4002 				"				case 436 :\n" +
4003 				"					System.out.println(methodName + i);\n" +
4004 				"				break;\n" +
4005 				"				case 437 :\n" +
4006 				"					System.out.println(methodName + i);\n" +
4007 				"				break;\n" +
4008 				"				case 438 :\n" +
4009 				"					System.out.println(methodName + i);\n" +
4010 				"				break;\n" +
4011 				"				case 439 :\n" +
4012 				"					System.out.println(methodName + i);\n" +
4013 				"				break;\n" +
4014 				"				case 440 :\n" +
4015 				"					System.out.println(methodName + i);\n" +
4016 				"				break;\n" +
4017 				"				case 441 :\n" +
4018 				"					System.out.println(methodName + i);\n" +
4019 				"				break;\n" +
4020 				"				case 442 :\n" +
4021 				"					System.out.println(methodName + i);\n" +
4022 				"				break;\n" +
4023 				"				case 443 :\n" +
4024 				"					System.out.println(methodName + i);\n" +
4025 				"				break;\n" +
4026 				"				case 444 :\n" +
4027 				"					System.out.println(methodName + i);\n" +
4028 				"				break;\n" +
4029 				"				case 445 :\n" +
4030 				"					System.out.println(methodName + i);\n" +
4031 				"				break;\n" +
4032 				"				case 446 :\n" +
4033 				"					System.out.println(methodName + i);\n" +
4034 				"				break;\n" +
4035 				"				case 447 :\n" +
4036 				"					System.out.println(methodName + i);\n" +
4037 				"				break;\n" +
4038 				"				case 448 :\n" +
4039 				"					System.out.println(methodName + i);\n" +
4040 				"				break;\n" +
4041 				"				case 449 :\n" +
4042 				"					System.out.println(methodName + i);\n" +
4043 				"				break;\n" +
4044 				"				case 450 :\n" +
4045 				"					System.out.println(methodName + i);\n" +
4046 				"				break;\n" +
4047 				"				case 451 :\n" +
4048 				"					System.out.println(methodName + i);\n" +
4049 				"				break;\n" +
4050 				"				case 452 :\n" +
4051 				"					System.out.println(methodName + i);\n" +
4052 				"				break;\n" +
4053 				"				case 453 :\n" +
4054 				"					System.out.println(methodName + i);\n" +
4055 				"				break;\n" +
4056 				"				case 454 :\n" +
4057 				"					System.out.println(methodName + i);\n" +
4058 				"				break;\n" +
4059 				"				case 455 :\n" +
4060 				"					System.out.println(methodName + i);\n" +
4061 				"				break;\n" +
4062 				"				case 456 :\n" +
4063 				"					System.out.println(methodName + i);\n" +
4064 				"				break;\n" +
4065 				"				case 457 :\n" +
4066 				"					System.out.println(methodName + i);\n" +
4067 				"				break;\n" +
4068 				"				case 458 :\n" +
4069 				"					System.out.println(methodName + i);\n" +
4070 				"				break;\n" +
4071 				"				case 459 :\n" +
4072 				"					System.out.println(methodName + i);\n" +
4073 				"				break;\n" +
4074 				"				case 460 :\n" +
4075 				"					System.out.println(methodName + i);\n" +
4076 				"				break;\n" +
4077 				"				case 461 :\n" +
4078 				"					System.out.println(methodName + i);\n" +
4079 				"				break;\n" +
4080 				"				case 462 :\n" +
4081 				"					System.out.println(methodName + i);\n" +
4082 				"				break;\n" +
4083 				"				case 463 :\n" +
4084 				"					System.out.println(methodName + i);\n" +
4085 				"				break;\n" +
4086 				"				case 464 :\n" +
4087 				"					System.out.println(methodName + i);\n" +
4088 				"				break;\n" +
4089 				"				case 465 :\n" +
4090 				"					System.out.println(methodName + i);\n" +
4091 				"				break;\n" +
4092 				"				case 466 :\n" +
4093 				"					System.out.println(methodName + i);\n" +
4094 				"				break;\n" +
4095 				"				case 467 :\n" +
4096 				"					System.out.println(methodName + i);\n" +
4097 				"				break;\n" +
4098 				"				case 468 :\n" +
4099 				"					System.out.println(methodName + i);\n" +
4100 				"				break;\n" +
4101 				"				case 469 :\n" +
4102 				"					System.out.println(methodName + i);\n" +
4103 				"				break;\n" +
4104 				"				case 470 :\n" +
4105 				"					System.out.println(methodName + i);\n" +
4106 				"				break;\n" +
4107 				"				case 471 :\n" +
4108 				"					System.out.println(methodName + i);\n" +
4109 				"				break;\n" +
4110 				"				case 472 :\n" +
4111 				"					System.out.println(methodName + i);\n" +
4112 				"				break;\n" +
4113 				"				case 473 :\n" +
4114 				"					System.out.println(methodName + i);\n" +
4115 				"				break;\n" +
4116 				"				case 474 :\n" +
4117 				"					System.out.println(methodName + i);\n" +
4118 				"				break;\n" +
4119 				"				case 475 :\n" +
4120 				"					System.out.println(methodName + i);\n" +
4121 				"				break;\n" +
4122 				"				case 476 :\n" +
4123 				"					System.out.println(methodName + i);\n" +
4124 				"				break;\n" +
4125 				"				case 477 :\n" +
4126 				"					System.out.println(methodName + i);\n" +
4127 				"				break;\n" +
4128 				"				case 478 :\n" +
4129 				"					System.out.println(methodName + i);\n" +
4130 				"				break;\n" +
4131 				"				case 479 :\n" +
4132 				"					System.out.println(methodName + i);\n" +
4133 				"				break;\n" +
4134 				"				case 480 :\n" +
4135 				"					System.out.println(methodName + i);\n" +
4136 				"				break;\n" +
4137 				"				case 481 :\n" +
4138 				"					System.out.println(methodName + i);\n" +
4139 				"				break;\n" +
4140 				"				case 482 :\n" +
4141 				"					System.out.println(methodName + i);\n" +
4142 				"				break;\n" +
4143 				"				case 483 :\n" +
4144 				"					System.out.println(methodName + i);\n" +
4145 				"				break;\n" +
4146 				"				case 484 :\n" +
4147 				"					System.out.println(methodName + i);\n" +
4148 				"				break;\n" +
4149 				"				case 485 :\n" +
4150 				"					System.out.println(methodName + i);\n" +
4151 				"				break;\n" +
4152 				"				case 486 :\n" +
4153 				"					System.out.println(methodName + i);\n" +
4154 				"				break;\n" +
4155 				"				case 487 :\n" +
4156 				"					System.out.println(methodName + i);\n" +
4157 				"				break;\n" +
4158 				"				case 488 :\n" +
4159 				"					System.out.println(methodName + i);\n" +
4160 				"				break;\n" +
4161 				"				case 489 :\n" +
4162 				"					System.out.println(methodName + i);\n" +
4163 				"				break;\n" +
4164 				"				case 490 :\n" +
4165 				"					System.out.println(methodName + i);\n" +
4166 				"				break;\n" +
4167 				"				case 491 :\n" +
4168 				"					System.out.println(methodName + i);\n" +
4169 				"				break;\n" +
4170 				"				case 492 :\n" +
4171 				"					System.out.println(methodName + i);\n" +
4172 				"				break;\n" +
4173 				"				case 493 :\n" +
4174 				"					System.out.println(methodName + i);\n" +
4175 				"				break;\n" +
4176 				"				case 494 :\n" +
4177 				"					System.out.println(methodName + i);\n" +
4178 				"				break;\n" +
4179 				"				case 495 :\n" +
4180 				"					System.out.println(methodName + i);\n" +
4181 				"				break;\n" +
4182 				"				case 496 :\n" +
4183 				"					System.out.println(methodName + i);\n" +
4184 				"				break;\n" +
4185 				"				case 497 :\n" +
4186 				"					System.out.println(methodName + i);\n" +
4187 				"				break;\n" +
4188 				"				case 498 :\n" +
4189 				"					System.out.println(methodName + i);\n" +
4190 				"				break;\n" +
4191 				"				case 499 :\n" +
4192 				"					System.out.println(methodName + i);\n" +
4193 				"				break;\n" +
4194 				"				case 500 :\n" +
4195 				"					System.out.println(methodName + i);\n" +
4196 				"				break;\n" +
4197 				"				case 501 :\n" +
4198 				"					System.out.println(methodName + i);\n" +
4199 				"				break;\n" +
4200 				"				case 502 :\n" +
4201 				"					System.out.println(methodName + i);\n" +
4202 				"				break;\n" +
4203 				"				case 503 :\n" +
4204 				"					System.out.println(methodName + i);\n" +
4205 				"				break;\n" +
4206 				"				case 504 :\n" +
4207 				"					System.out.println(methodName + i);\n" +
4208 				"				break;\n" +
4209 				"				case 505 :\n" +
4210 				"					System.out.println(methodName + i);\n" +
4211 				"				break;\n" +
4212 				"				case 506 :\n" +
4213 				"					System.out.println(methodName + i);\n" +
4214 				"				break;\n" +
4215 				"				case 507 :\n" +
4216 				"					System.out.println(methodName + i);\n" +
4217 				"				break;\n" +
4218 				"				case 508 :\n" +
4219 				"					System.out.println(methodName + i);\n" +
4220 				"				break;\n" +
4221 				"				case 509 :\n" +
4222 				"					System.out.println(methodName + i);\n" +
4223 				"				break;\n" +
4224 				"				case 510 :\n" +
4225 				"					System.out.println(methodName + i);\n" +
4226 				"				break;\n" +
4227 				"				case 511 :\n" +
4228 				"					System.out.println(methodName + i);\n" +
4229 				"				break;\n" +
4230 				"				case 512 :\n" +
4231 				"					System.out.println(methodName + i);\n" +
4232 				"				break;\n" +
4233 				"				case 513 :\n" +
4234 				"					System.out.println(methodName + i);\n" +
4235 				"				break;\n" +
4236 				"				case 514 :\n" +
4237 				"					System.out.println(methodName + i);\n" +
4238 				"				break;\n" +
4239 				"				case 515 :\n" +
4240 				"					System.out.println(methodName + i);\n" +
4241 				"				break;\n" +
4242 				"				case 516 :\n" +
4243 				"					System.out.println(methodName + i);\n" +
4244 				"				break;\n" +
4245 				"				case 517 :\n" +
4246 				"					System.out.println(methodName + i);\n" +
4247 				"				break;\n" +
4248 				"				case 518 :\n" +
4249 				"					System.out.println(methodName + i);\n" +
4250 				"				break;\n" +
4251 				"				case 519 :\n" +
4252 				"					System.out.println(methodName + i);\n" +
4253 				"				break;\n" +
4254 				"				case 520 :\n" +
4255 				"					System.out.println(methodName + i);\n" +
4256 				"				break;\n" +
4257 				"				case 521 :\n" +
4258 				"					System.out.println(methodName + i);\n" +
4259 				"				break;\n" +
4260 				"				case 522 :\n" +
4261 				"					System.out.println(methodName + i);\n" +
4262 				"				break;\n" +
4263 				"				case 523 :\n" +
4264 				"					System.out.println(methodName + i);\n" +
4265 				"				break;\n" +
4266 				"				case 524 :\n" +
4267 				"					System.out.println(methodName + i);\n" +
4268 				"				break;\n" +
4269 				"				case 525 :\n" +
4270 				"					System.out.println(methodName + i);\n" +
4271 				"				break;\n" +
4272 				"				case 526 :\n" +
4273 				"					System.out.println(methodName + i);\n" +
4274 				"				break;\n" +
4275 				"				case 527 :\n" +
4276 				"					System.out.println(methodName + i);\n" +
4277 				"				break;\n" +
4278 				"				case 528 :\n" +
4279 				"					System.out.println(methodName + i);\n" +
4280 				"				break;\n" +
4281 				"				case 529 :\n" +
4282 				"					System.out.println(methodName + i);\n" +
4283 				"				break;\n" +
4284 				"				case 530 :\n" +
4285 				"					System.out.println(methodName + i);\n" +
4286 				"				break;\n" +
4287 				"				case 531 :\n" +
4288 				"					System.out.println(methodName + i);\n" +
4289 				"				break;\n" +
4290 				"				case 532 :\n" +
4291 				"					System.out.println(methodName + i);\n" +
4292 				"				break;\n" +
4293 				"				case 533 :\n" +
4294 				"					System.out.println(methodName + i);\n" +
4295 				"				break;\n" +
4296 				"				case 534 :\n" +
4297 				"					System.out.println(methodName + i);\n" +
4298 				"				break;\n" +
4299 				"				case 535 :\n" +
4300 				"					System.out.println(methodName + i);\n" +
4301 				"				break;\n" +
4302 				"				case 536 :\n" +
4303 				"					System.out.println(methodName + i);\n" +
4304 				"				break;\n" +
4305 				"				case 537 :\n" +
4306 				"					System.out.println(methodName + i);\n" +
4307 				"				break;\n" +
4308 				"				case 538 :\n" +
4309 				"					System.out.println(methodName + i);\n" +
4310 				"				break;\n" +
4311 				"				case 539 :\n" +
4312 				"					System.out.println(methodName + i);\n" +
4313 				"				break;\n" +
4314 				"				case 540 :\n" +
4315 				"					System.out.println(methodName + i);\n" +
4316 				"				break;\n" +
4317 				"				case 541 :\n" +
4318 				"					System.out.println(methodName + i);\n" +
4319 				"				break;\n" +
4320 				"				case 542 :\n" +
4321 				"					System.out.println(methodName + i);\n" +
4322 				"				break;\n" +
4323 				"				case 543 :\n" +
4324 				"					System.out.println(methodName + i);\n" +
4325 				"				break;\n" +
4326 				"				case 544 :\n" +
4327 				"					System.out.println(methodName + i);\n" +
4328 				"				break;\n" +
4329 				"				case 545 :\n" +
4330 				"					System.out.println(methodName + i);\n" +
4331 				"				break;\n" +
4332 				"				case 546 :\n" +
4333 				"					System.out.println(methodName + i);\n" +
4334 				"				break;\n" +
4335 				"				case 547 :\n" +
4336 				"					System.out.println(methodName + i);\n" +
4337 				"				break;\n" +
4338 				"				case 548 :\n" +
4339 				"					System.out.println(methodName + i);\n" +
4340 				"				break;\n" +
4341 				"				case 549 :\n" +
4342 				"					System.out.println(methodName + i);\n" +
4343 				"				break;\n" +
4344 				"				case 550 :\n" +
4345 				"					System.out.println(methodName + i);\n" +
4346 				"				break;\n" +
4347 				"				case 551 :\n" +
4348 				"					System.out.println(methodName + i);\n" +
4349 				"				break;\n" +
4350 				"				case 552 :\n" +
4351 				"					System.out.println(methodName + i);\n" +
4352 				"				break;\n" +
4353 				"				case 553 :\n" +
4354 				"					System.out.println(methodName + i);\n" +
4355 				"				break;\n" +
4356 				"				case 554 :\n" +
4357 				"					System.out.println(methodName + i);\n" +
4358 				"				break;\n" +
4359 				"				case 555 :\n" +
4360 				"					System.out.println(methodName + i);\n" +
4361 				"				break;\n" +
4362 				"				case 556 :\n" +
4363 				"					System.out.println(methodName + i);\n" +
4364 				"				break;\n" +
4365 				"				case 557 :\n" +
4366 				"					System.out.println(methodName + i);\n" +
4367 				"				break;\n" +
4368 				"				case 558 :\n" +
4369 				"					System.out.println(methodName + i);\n" +
4370 				"				break;\n" +
4371 				"				case 559 :\n" +
4372 				"					System.out.println(methodName + i);\n" +
4373 				"				break;\n" +
4374 				"				case 560 :\n" +
4375 				"					System.out.println(methodName + i);\n" +
4376 				"				break;\n" +
4377 				"				case 561 :\n" +
4378 				"					System.out.println(methodName + i);\n" +
4379 				"				break;\n" +
4380 				"				case 562 :\n" +
4381 				"					System.out.println(methodName + i);\n" +
4382 				"				break;\n" +
4383 				"				case 563 :\n" +
4384 				"					System.out.println(methodName + i);\n" +
4385 				"				break;\n" +
4386 				"				case 564 :\n" +
4387 				"					System.out.println(methodName + i);\n" +
4388 				"				break;\n" +
4389 				"				case 565 :\n" +
4390 				"					System.out.println(methodName + i);\n" +
4391 				"				break;\n" +
4392 				"				case 566 :\n" +
4393 				"					System.out.println(methodName + i);\n" +
4394 				"				break;\n" +
4395 				"				case 567 :\n" +
4396 				"					System.out.println(methodName + i);\n" +
4397 				"				break;\n" +
4398 				"				case 568 :\n" +
4399 				"					System.out.println(methodName + i);\n" +
4400 				"				break;\n" +
4401 				"				case 569 :\n" +
4402 				"					System.out.println(methodName + i);\n" +
4403 				"				break;\n" +
4404 				"				case 570 :\n" +
4405 				"					System.out.println(methodName + i);\n" +
4406 				"				break;\n" +
4407 				"				case 571 :\n" +
4408 				"					System.out.println(methodName + i);\n" +
4409 				"				break;\n" +
4410 				"				case 572 :\n" +
4411 				"					System.out.println(methodName + i);\n" +
4412 				"				break;\n" +
4413 				"				case 573 :\n" +
4414 				"					System.out.println(methodName + i);\n" +
4415 				"				break;\n" +
4416 				"				case 574 :\n" +
4417 				"					System.out.println(methodName + i);\n" +
4418 				"				break;\n" +
4419 				"				case 575 :\n" +
4420 				"					System.out.println(methodName + i);\n" +
4421 				"				break;\n" +
4422 				"				case 576 :\n" +
4423 				"					System.out.println(methodName + i);\n" +
4424 				"				break;\n" +
4425 				"				case 577 :\n" +
4426 				"					System.out.println(methodName + i);\n" +
4427 				"				break;\n" +
4428 				"				case 578 :\n" +
4429 				"					System.out.println(methodName + i);\n" +
4430 				"				break;\n" +
4431 				"				case 579 :\n" +
4432 				"					System.out.println(methodName + i);\n" +
4433 				"				break;\n" +
4434 				"				case 580 :\n" +
4435 				"					System.out.println(methodName + i);\n" +
4436 				"				break;\n" +
4437 				"				case 581 :\n" +
4438 				"					System.out.println(methodName + i);\n" +
4439 				"				break;\n" +
4440 				"				case 582 :\n" +
4441 				"					System.out.println(methodName + i);\n" +
4442 				"				break;\n" +
4443 				"				case 583 :\n" +
4444 				"					System.out.println(methodName + i);\n" +
4445 				"				break;\n" +
4446 				"				case 584 :\n" +
4447 				"					System.out.println(methodName + i);\n" +
4448 				"				break;\n" +
4449 				"				case 585 :\n" +
4450 				"					System.out.println(methodName + i);\n" +
4451 				"				break;\n" +
4452 				"				case 586 :\n" +
4453 				"					System.out.println(methodName + i);\n" +
4454 				"				break;\n" +
4455 				"				case 587 :\n" +
4456 				"					System.out.println(methodName + i);\n" +
4457 				"				break;\n" +
4458 				"				case 588 :\n" +
4459 				"					System.out.println(methodName + i);\n" +
4460 				"				break;\n" +
4461 				"				case 589 :\n" +
4462 				"					System.out.println(methodName + i);\n" +
4463 				"				break;\n" +
4464 				"				case 590 :\n" +
4465 				"					System.out.println(methodName + i);\n" +
4466 				"				break;\n" +
4467 				"				case 591 :\n" +
4468 				"					System.out.println(methodName + i);\n" +
4469 				"				break;\n" +
4470 				"				case 592 :\n" +
4471 				"					System.out.println(methodName + i);\n" +
4472 				"				break;\n" +
4473 				"				case 593 :\n" +
4474 				"					System.out.println(methodName + i);\n" +
4475 				"				break;\n" +
4476 				"				case 594 :\n" +
4477 				"					System.out.println(methodName + i);\n" +
4478 				"				break;\n" +
4479 				"				case 595 :\n" +
4480 				"					System.out.println(methodName + i);\n" +
4481 				"				break;\n" +
4482 				"				case 596 :\n" +
4483 				"					System.out.println(methodName + i);\n" +
4484 				"				break;\n" +
4485 				"				case 597 :\n" +
4486 				"					System.out.println(methodName + i);\n" +
4487 				"				break;\n" +
4488 				"				case 598 :\n" +
4489 				"					System.out.println(methodName + i);\n" +
4490 				"				break;\n" +
4491 				"				case 599 :\n" +
4492 				"					System.out.println(methodName + i);\n" +
4493 				"				break;\n" +
4494 				"				case 600 :\n" +
4495 				"					System.out.println(methodName + i);\n" +
4496 				"				break;\n" +
4497 				"				case 601 :\n" +
4498 				"					System.out.println(methodName + i);\n" +
4499 				"				break;\n" +
4500 				"				case 602 :\n" +
4501 				"					System.out.println(methodName + i);\n" +
4502 				"				break;\n" +
4503 				"				case 603 :\n" +
4504 				"					System.out.println(methodName + i);\n" +
4505 				"				break;\n" +
4506 				"				case 604 :\n" +
4507 				"					System.out.println(methodName + i);\n" +
4508 				"				break;\n" +
4509 				"				case 605 :\n" +
4510 				"					System.out.println(methodName + i);\n" +
4511 				"				break;\n" +
4512 				"				case 606 :\n" +
4513 				"					System.out.println(methodName + i);\n" +
4514 				"				break;\n" +
4515 				"				case 607 :\n" +
4516 				"					System.out.println(methodName + i);\n" +
4517 				"				break;\n" +
4518 				"				case 608 :\n" +
4519 				"					System.out.println(methodName + i);\n" +
4520 				"				break;\n" +
4521 				"				case 609 :\n" +
4522 				"					System.out.println(methodName + i);\n" +
4523 				"				break;\n" +
4524 				"				case 610 :\n" +
4525 				"					System.out.println(methodName + i);\n" +
4526 				"				break;\n" +
4527 				"				case 611 :\n" +
4528 				"					System.out.println(methodName + i);\n" +
4529 				"				break;\n" +
4530 				"				case 612 :\n" +
4531 				"					System.out.println(methodName + i);\n" +
4532 				"				break;\n" +
4533 				"				case 613 :\n" +
4534 				"					System.out.println(methodName + i);\n" +
4535 				"				break;\n" +
4536 				"				case 614 :\n" +
4537 				"					System.out.println(methodName + i);\n" +
4538 				"				break;\n" +
4539 				"				case 615 :\n" +
4540 				"					System.out.println(methodName + i);\n" +
4541 				"				break;\n" +
4542 				"				case 616 :\n" +
4543 				"					System.out.println(methodName + i);\n" +
4544 				"				break;\n" +
4545 				"				case 617 :\n" +
4546 				"					System.out.println(methodName + i);\n" +
4547 				"				break;\n" +
4548 				"				case 618 :\n" +
4549 				"					System.out.println(methodName + i);\n" +
4550 				"				break;\n" +
4551 				"				case 619 :\n" +
4552 				"					System.out.println(methodName + i);\n" +
4553 				"				break;\n" +
4554 				"				case 620 :\n" +
4555 				"					System.out.println(methodName + i);\n" +
4556 				"				break;\n" +
4557 				"				case 621 :\n" +
4558 				"					System.out.println(methodName + i);\n" +
4559 				"				break;\n" +
4560 				"				case 622 :\n" +
4561 				"					System.out.println(methodName + i);\n" +
4562 				"				break;\n" +
4563 				"				case 623 :\n" +
4564 				"					System.out.println(methodName + i);\n" +
4565 				"				break;\n" +
4566 				"				case 624 :\n" +
4567 				"					System.out.println(methodName + i);\n" +
4568 				"				break;\n" +
4569 				"				case 625 :\n" +
4570 				"					System.out.println(methodName + i);\n" +
4571 				"				break;\n" +
4572 				"				case 626 :\n" +
4573 				"					System.out.println(methodName + i);\n" +
4574 				"				break;\n" +
4575 				"				case 627 :\n" +
4576 				"					System.out.println(methodName + i);\n" +
4577 				"				break;\n" +
4578 				"				case 628 :\n" +
4579 				"					System.out.println(methodName + i);\n" +
4580 				"				break;\n" +
4581 				"				case 629 :\n" +
4582 				"					System.out.println(methodName + i);\n" +
4583 				"				break;\n" +
4584 				"				case 630 :\n" +
4585 				"					System.out.println(methodName + i);\n" +
4586 				"				break;\n" +
4587 				"				case 631 :\n" +
4588 				"					System.out.println(methodName + i);\n" +
4589 				"				break;\n" +
4590 				"				case 632 :\n" +
4591 				"					System.out.println(methodName + i);\n" +
4592 				"				break;\n" +
4593 				"				case 633 :\n" +
4594 				"					System.out.println(methodName + i);\n" +
4595 				"				break;\n" +
4596 				"				case 634 :\n" +
4597 				"					System.out.println(methodName + i);\n" +
4598 				"				break;\n" +
4599 				"				case 635 :\n" +
4600 				"					System.out.println(methodName + i);\n" +
4601 				"				break;\n" +
4602 				"				case 636 :\n" +
4603 				"					System.out.println(methodName + i);\n" +
4604 				"				break;\n" +
4605 				"				case 637 :\n" +
4606 				"					System.out.println(methodName + i);\n" +
4607 				"				break;\n" +
4608 				"				case 638 :\n" +
4609 				"					System.out.println(methodName + i);\n" +
4610 				"				break;\n" +
4611 				"				case 639 :\n" +
4612 				"					System.out.println(methodName + i);\n" +
4613 				"				break;\n" +
4614 				"				case 640 :\n" +
4615 				"					System.out.println(methodName + i);\n" +
4616 				"				break;\n" +
4617 				"				case 641 :\n" +
4618 				"					System.out.println(methodName + i);\n" +
4619 				"				break;\n" +
4620 				"				case 642 :\n" +
4621 				"					System.out.println(methodName + i);\n" +
4622 				"				break;\n" +
4623 				"				case 643 :\n" +
4624 				"					System.out.println(methodName + i);\n" +
4625 				"				break;\n" +
4626 				"				case 644 :\n" +
4627 				"					System.out.println(methodName + i);\n" +
4628 				"				break;\n" +
4629 				"				case 645 :\n" +
4630 				"					System.out.println(methodName + i);\n" +
4631 				"				break;\n" +
4632 				"				case 646 :\n" +
4633 				"					System.out.println(methodName + i);\n" +
4634 				"				break;\n" +
4635 				"				case 647 :\n" +
4636 				"					System.out.println(methodName + i);\n" +
4637 				"				break;\n" +
4638 				"				case 648 :\n" +
4639 				"					System.out.println(methodName + i);\n" +
4640 				"				break;\n" +
4641 				"				case 649 :\n" +
4642 				"					System.out.println(methodName + i);\n" +
4643 				"				break;\n" +
4644 				"				case 650 :\n" +
4645 				"					System.out.println(methodName + i);\n" +
4646 				"				break;\n" +
4647 				"				case 651 :\n" +
4648 				"					System.out.println(methodName + i);\n" +
4649 				"				break;\n" +
4650 				"				case 652 :\n" +
4651 				"					System.out.println(methodName + i);\n" +
4652 				"				break;\n" +
4653 				"				case 653 :\n" +
4654 				"					System.out.println(methodName + i);\n" +
4655 				"				break;\n" +
4656 				"				case 654 :\n" +
4657 				"					System.out.println(methodName + i);\n" +
4658 				"				break;\n" +
4659 				"				case 655 :\n" +
4660 				"					System.out.println(methodName + i);\n" +
4661 				"				break;\n" +
4662 				"				case 656 :\n" +
4663 				"					System.out.println(methodName + i);\n" +
4664 				"				break;\n" +
4665 				"				case 657 :\n" +
4666 				"					System.out.println(methodName + i);\n" +
4667 				"				break;\n" +
4668 				"				case 658 :\n" +
4669 				"					System.out.println(methodName + i);\n" +
4670 				"				break;\n" +
4671 				"				case 659 :\n" +
4672 				"					System.out.println(methodName + i);\n" +
4673 				"				break;\n" +
4674 				"				case 660 :\n" +
4675 				"					System.out.println(methodName + i);\n" +
4676 				"				break;\n" +
4677 				"				case 661 :\n" +
4678 				"					System.out.println(methodName + i);\n" +
4679 				"				break;\n" +
4680 				"				case 662 :\n" +
4681 				"					System.out.println(methodName + i);\n" +
4682 				"				break;\n" +
4683 				"				case 663 :\n" +
4684 				"					System.out.println(methodName + i);\n" +
4685 				"				break;\n" +
4686 				"				case 664 :\n" +
4687 				"					System.out.println(methodName + i);\n" +
4688 				"				break;\n" +
4689 				"				case 665 :\n" +
4690 				"					System.out.println(methodName + i);\n" +
4691 				"				break;\n" +
4692 				"				case 666 :\n" +
4693 				"					System.out.println(methodName + i);\n" +
4694 				"				break;\n" +
4695 				"				case 667 :\n" +
4696 				"					System.out.println(methodName + i);\n" +
4697 				"				break;\n" +
4698 				"				case 668 :\n" +
4699 				"					System.out.println(methodName + i);\n" +
4700 				"				break;\n" +
4701 				"				case 669 :\n" +
4702 				"					System.out.println(methodName + i);\n" +
4703 				"				break;\n" +
4704 				"				case 670 :\n" +
4705 				"					System.out.println(methodName + i);\n" +
4706 				"				break;\n" +
4707 				"				case 671 :\n" +
4708 				"					System.out.println(methodName + i);\n" +
4709 				"				break;\n" +
4710 				"				case 672 :\n" +
4711 				"					System.out.println(methodName + i);\n" +
4712 				"				break;\n" +
4713 				"				case 673 :\n" +
4714 				"					System.out.println(methodName + i);\n" +
4715 				"				break;\n" +
4716 				"				case 674 :\n" +
4717 				"					System.out.println(methodName + i);\n" +
4718 				"				break;\n" +
4719 				"				case 675 :\n" +
4720 				"					System.out.println(methodName + i);\n" +
4721 				"				break;\n" +
4722 				"				case 676 :\n" +
4723 				"					System.out.println(methodName + i);\n" +
4724 				"				break;\n" +
4725 				"				case 677 :\n" +
4726 				"					System.out.println(methodName + i);\n" +
4727 				"				break;\n" +
4728 				"				case 678 :\n" +
4729 				"					System.out.println(methodName + i);\n" +
4730 				"				break;\n" +
4731 				"				case 679 :\n" +
4732 				"					System.out.println(methodName + i);\n" +
4733 				"				break;\n" +
4734 				"				case 680 :\n" +
4735 				"					System.out.println(methodName + i);\n" +
4736 				"				break;\n" +
4737 				"				case 681 :\n" +
4738 				"					System.out.println(methodName + i);\n" +
4739 				"				break;\n" +
4740 				"				case 682 :\n" +
4741 				"					System.out.println(methodName + i);\n" +
4742 				"				break;\n" +
4743 				"				case 683 :\n" +
4744 				"					System.out.println(methodName + i);\n" +
4745 				"				break;\n" +
4746 				"				case 684 :\n" +
4747 				"					System.out.println(methodName + i);\n" +
4748 				"				break;\n" +
4749 				"				case 685 :\n" +
4750 				"					System.out.println(methodName + i);\n" +
4751 				"				break;\n" +
4752 				"				case 686 :\n" +
4753 				"					System.out.println(methodName + i);\n" +
4754 				"				break;\n" +
4755 				"				case 687 :\n" +
4756 				"					System.out.println(methodName + i);\n" +
4757 				"				break;\n" +
4758 				"				case 688 :\n" +
4759 				"					System.out.println(methodName + i);\n" +
4760 				"				break;\n" +
4761 				"				case 689 :\n" +
4762 				"					System.out.println(methodName + i);\n" +
4763 				"				break;\n" +
4764 				"				case 690 :\n" +
4765 				"					System.out.println(methodName + i);\n" +
4766 				"				break;\n" +
4767 				"				case 691 :\n" +
4768 				"					System.out.println(methodName + i);\n" +
4769 				"				break;\n" +
4770 				"				case 692 :\n" +
4771 				"					System.out.println(methodName + i);\n" +
4772 				"				break;\n" +
4773 				"				case 693 :\n" +
4774 				"					System.out.println(methodName + i);\n" +
4775 				"				break;\n" +
4776 				"				case 694 :\n" +
4777 				"					System.out.println(methodName + i);\n" +
4778 				"				break;\n" +
4779 				"				case 695 :\n" +
4780 				"					System.out.println(methodName + i);\n" +
4781 				"				break;\n" +
4782 				"				case 696 :\n" +
4783 				"					System.out.println(methodName + i);\n" +
4784 				"				break;\n" +
4785 				"				case 697 :\n" +
4786 				"					System.out.println(methodName + i);\n" +
4787 				"				break;\n" +
4788 				"				case 698 :\n" +
4789 				"					System.out.println(methodName + i);\n" +
4790 				"				break;\n" +
4791 				"				case 699 :\n" +
4792 				"					System.out.println(methodName + i);\n" +
4793 				"				break;\n" +
4794 				"				case 700 :\n" +
4795 				"					System.out.println(methodName + i);\n" +
4796 				"				break;\n" +
4797 				"				case 701 :\n" +
4798 				"					System.out.println(methodName + i);\n" +
4799 				"				break;\n" +
4800 				"				case 702 :\n" +
4801 				"					System.out.println(methodName + i);\n" +
4802 				"				break;\n" +
4803 				"				case 703 :\n" +
4804 				"					System.out.println(methodName + i);\n" +
4805 				"				break;\n" +
4806 				"				case 704 :\n" +
4807 				"					System.out.println(methodName + i);\n" +
4808 				"				break;\n" +
4809 				"				case 705 :\n" +
4810 				"					System.out.println(methodName + i);\n" +
4811 				"				break;\n" +
4812 				"				case 706 :\n" +
4813 				"					System.out.println(methodName + i);\n" +
4814 				"				break;\n" +
4815 				"				case 707 :\n" +
4816 				"					System.out.println(methodName + i);\n" +
4817 				"				break;\n" +
4818 				"				case 708 :\n" +
4819 				"					System.out.println(methodName + i);\n" +
4820 				"				break;\n" +
4821 				"				case 709 :\n" +
4822 				"					System.out.println(methodName + i);\n" +
4823 				"				break;\n" +
4824 				"				case 710 :\n" +
4825 				"					System.out.println(methodName + i);\n" +
4826 				"				break;\n" +
4827 				"				case 711 :\n" +
4828 				"					System.out.println(methodName + i);\n" +
4829 				"				break;\n" +
4830 				"				case 712 :\n" +
4831 				"					System.out.println(methodName + i);\n" +
4832 				"				break;\n" +
4833 				"				case 713 :\n" +
4834 				"					System.out.println(methodName + i);\n" +
4835 				"				break;\n" +
4836 				"				case 714 :\n" +
4837 				"					System.out.println(methodName + i);\n" +
4838 				"				break;\n" +
4839 				"				case 715 :\n" +
4840 				"					System.out.println(methodName + i);\n" +
4841 				"				break;\n" +
4842 				"				case 716 :\n" +
4843 				"					System.out.println(methodName + i);\n" +
4844 				"				break;\n" +
4845 				"				case 717 :\n" +
4846 				"					System.out.println(methodName + i);\n" +
4847 				"				break;\n" +
4848 				"				case 718 :\n" +
4849 				"					System.out.println(methodName + i);\n" +
4850 				"				break;\n" +
4851 				"				case 719 :\n" +
4852 				"					System.out.println(methodName + i);\n" +
4853 				"				break;\n" +
4854 				"				case 720 :\n" +
4855 				"					System.out.println(methodName + i);\n" +
4856 				"				break;\n" +
4857 				"				case 721 :\n" +
4858 				"					System.out.println(methodName + i);\n" +
4859 				"				break;\n" +
4860 				"				case 722 :\n" +
4861 				"					System.out.println(methodName + i);\n" +
4862 				"				break;\n" +
4863 				"				case 723 :\n" +
4864 				"					System.out.println(methodName + i);\n" +
4865 				"				break;\n" +
4866 				"				case 724 :\n" +
4867 				"					System.out.println(methodName + i);\n" +
4868 				"				break;\n" +
4869 				"				case 725 :\n" +
4870 				"					System.out.println(methodName + i);\n" +
4871 				"				break;\n" +
4872 				"				case 726 :\n" +
4873 				"					System.out.println(methodName + i);\n" +
4874 				"				break;\n" +
4875 				"				case 727 :\n" +
4876 				"					System.out.println(methodName + i);\n" +
4877 				"				break;\n" +
4878 				"				case 728 :\n" +
4879 				"					System.out.println(methodName + i);\n" +
4880 				"				break;\n" +
4881 				"				case 729 :\n" +
4882 				"					System.out.println(methodName + i);\n" +
4883 				"				break;\n" +
4884 				"				case 730 :\n" +
4885 				"					System.out.println(methodName + i);\n" +
4886 				"				break;\n" +
4887 				"				case 731 :\n" +
4888 				"					System.out.println(methodName + i);\n" +
4889 				"				break;\n" +
4890 				"				case 732 :\n" +
4891 				"					System.out.println(methodName + i);\n" +
4892 				"				break;\n" +
4893 				"				case 733 :\n" +
4894 				"					System.out.println(methodName + i);\n" +
4895 				"				break;\n" +
4896 				"				case 734 :\n" +
4897 				"					System.out.println(methodName + i);\n" +
4898 				"				break;\n" +
4899 				"				case 735 :\n" +
4900 				"					System.out.println(methodName + i);\n" +
4901 				"				break;\n" +
4902 				"				case 736 :\n" +
4903 				"					System.out.println(methodName + i);\n" +
4904 				"				break;\n" +
4905 				"				case 737 :\n" +
4906 				"					System.out.println(methodName + i);\n" +
4907 				"				break;\n" +
4908 				"				case 738 :\n" +
4909 				"					System.out.println(methodName + i);\n" +
4910 				"				break;\n" +
4911 				"				case 739 :\n" +
4912 				"					System.out.println(methodName + i);\n" +
4913 				"				break;\n" +
4914 				"				case 740 :\n" +
4915 				"					System.out.println(methodName + i);\n" +
4916 				"				break;\n" +
4917 				"				case 741 :\n" +
4918 				"					System.out.println(methodName + i);\n" +
4919 				"				break;\n" +
4920 				"				case 742 :\n" +
4921 				"					System.out.println(methodName + i);\n" +
4922 				"				break;\n" +
4923 				"				case 743 :\n" +
4924 				"					System.out.println(methodName + i);\n" +
4925 				"				break;\n" +
4926 				"				case 744 :\n" +
4927 				"					System.out.println(methodName + i);\n" +
4928 				"				break;\n" +
4929 				"				case 745 :\n" +
4930 				"					System.out.println(methodName + i);\n" +
4931 				"				break;\n" +
4932 				"				case 746 :\n" +
4933 				"					System.out.println(methodName + i);\n" +
4934 				"				break;\n" +
4935 				"				case 747 :\n" +
4936 				"					System.out.println(methodName + i);\n" +
4937 				"				break;\n" +
4938 				"				case 748 :\n" +
4939 				"					System.out.println(methodName + i);\n" +
4940 				"				break;\n" +
4941 				"				case 749 :\n" +
4942 				"					System.out.println(methodName + i);\n" +
4943 				"				break;\n" +
4944 				"				case 750 :\n" +
4945 				"					System.out.println(methodName + i);\n" +
4946 				"				break;\n" +
4947 				"				case 751 :\n" +
4948 				"					System.out.println(methodName + i);\n" +
4949 				"				break;\n" +
4950 				"				case 752 :\n" +
4951 				"					System.out.println(methodName + i);\n" +
4952 				"				break;\n" +
4953 				"				case 753 :\n" +
4954 				"					System.out.println(methodName + i);\n" +
4955 				"				break;\n" +
4956 				"				case 754 :\n" +
4957 				"					System.out.println(methodName + i);\n" +
4958 				"				break;\n" +
4959 				"				case 755 :\n" +
4960 				"					System.out.println(methodName + i);\n" +
4961 				"				break;\n" +
4962 				"				case 756 :\n" +
4963 				"					System.out.println(methodName + i);\n" +
4964 				"				break;\n" +
4965 				"				case 757 :\n" +
4966 				"					System.out.println(methodName + i);\n" +
4967 				"				break;\n" +
4968 				"				case 758 :\n" +
4969 				"					System.out.println(methodName + i);\n" +
4970 				"				break;\n" +
4971 				"				case 759 :\n" +
4972 				"					System.out.println(methodName + i);\n" +
4973 				"				break;\n" +
4974 				"				case 760 :\n" +
4975 				"					System.out.println(methodName + i);\n" +
4976 				"				break;\n" +
4977 				"				case 761 :\n" +
4978 				"					System.out.println(methodName + i);\n" +
4979 				"				break;\n" +
4980 				"				case 762 :\n" +
4981 				"					System.out.println(methodName + i);\n" +
4982 				"				break;\n" +
4983 				"				case 763 :\n" +
4984 				"					System.out.println(methodName + i);\n" +
4985 				"				break;\n" +
4986 				"				case 764 :\n" +
4987 				"					System.out.println(methodName + i);\n" +
4988 				"				break;\n" +
4989 				"				case 765 :\n" +
4990 				"					System.out.println(methodName + i);\n" +
4991 				"				break;\n" +
4992 				"				case 766 :\n" +
4993 				"					System.out.println(methodName + i);\n" +
4994 				"				break;\n" +
4995 				"				case 767 :\n" +
4996 				"					System.out.println(methodName + i);\n" +
4997 				"				break;\n" +
4998 				"				case 768 :\n" +
4999 				"					System.out.println(methodName + i);\n" +
5000 				"				break;\n" +
5001 				"				case 769 :\n" +
5002 				"					System.out.println(methodName + i);\n" +
5003 				"				break;\n" +
5004 				"				case 770 :\n" +
5005 				"					System.out.println(methodName + i);\n" +
5006 				"				break;\n" +
5007 				"				case 771 :\n" +
5008 				"					System.out.println(methodName + i);\n" +
5009 				"				break;\n" +
5010 				"				case 772 :\n" +
5011 				"					System.out.println(methodName + i);\n" +
5012 				"				break;\n" +
5013 				"				case 773 :\n" +
5014 				"					System.out.println(methodName + i);\n" +
5015 				"				break;\n" +
5016 				"				case 774 :\n" +
5017 				"					System.out.println(methodName + i);\n" +
5018 				"				break;\n" +
5019 				"				case 775 :\n" +
5020 				"					System.out.println(methodName + i);\n" +
5021 				"				break;\n" +
5022 				"				case 776 :\n" +
5023 				"					System.out.println(methodName + i);\n" +
5024 				"				break;\n" +
5025 				"				case 777 :\n" +
5026 				"					System.out.println(methodName + i);\n" +
5027 				"				break;\n" +
5028 				"				case 778 :\n" +
5029 				"					System.out.println(methodName + i);\n" +
5030 				"				break;\n" +
5031 				"				case 779 :\n" +
5032 				"					System.out.println(methodName + i);\n" +
5033 				"				break;\n" +
5034 				"				case 780 :\n" +
5035 				"					System.out.println(methodName + i);\n" +
5036 				"				break;\n" +
5037 				"				case 781 :\n" +
5038 				"					System.out.println(methodName + i);\n" +
5039 				"				break;\n" +
5040 				"				case 782 :\n" +
5041 				"					System.out.println(methodName + i);\n" +
5042 				"				break;\n" +
5043 				"				case 783 :\n" +
5044 				"					System.out.println(methodName + i);\n" +
5045 				"				break;\n" +
5046 				"				case 784 :\n" +
5047 				"					System.out.println(methodName + i);\n" +
5048 				"				break;\n" +
5049 				"				case 785 :\n" +
5050 				"					System.out.println(methodName + i);\n" +
5051 				"				break;\n" +
5052 				"				case 786 :\n" +
5053 				"					System.out.println(methodName + i);\n" +
5054 				"				break;\n" +
5055 				"				case 787 :\n" +
5056 				"					System.out.println(methodName + i);\n" +
5057 				"				break;\n" +
5058 				"				case 788 :\n" +
5059 				"					System.out.println(methodName + i);\n" +
5060 				"				break;\n" +
5061 				"				case 789 :\n" +
5062 				"					System.out.println(methodName + i);\n" +
5063 				"				break;\n" +
5064 				"				case 790 :\n" +
5065 				"					System.out.println(methodName + i);\n" +
5066 				"				break;\n" +
5067 				"				case 791 :\n" +
5068 				"					System.out.println(methodName + i);\n" +
5069 				"				break;\n" +
5070 				"				case 792 :\n" +
5071 				"					System.out.println(methodName + i);\n" +
5072 				"				break;\n" +
5073 				"				case 793 :\n" +
5074 				"					System.out.println(methodName + i);\n" +
5075 				"				break;\n" +
5076 				"				case 794 :\n" +
5077 				"					System.out.println(methodName + i);\n" +
5078 				"				break;\n" +
5079 				"				case 795 :\n" +
5080 				"					System.out.println(methodName + i);\n" +
5081 				"				break;\n" +
5082 				"				case 796 :\n" +
5083 				"					System.out.println(methodName + i);\n" +
5084 				"				break;\n" +
5085 				"				case 797 :\n" +
5086 				"					System.out.println(methodName + i);\n" +
5087 				"				break;\n" +
5088 				"				case 798 :\n" +
5089 				"					System.out.println(methodName + i);\n" +
5090 				"				break;\n" +
5091 				"				case 799 :\n" +
5092 				"					System.out.println(methodName + i);\n" +
5093 				"				break;\n" +
5094 				"				case 800 :\n" +
5095 				"					System.out.println(methodName + i);\n" +
5096 				"				break;\n" +
5097 				"				case 801 :\n" +
5098 				"					System.out.println(methodName + i);\n" +
5099 				"				break;\n" +
5100 				"				case 802 :\n" +
5101 				"					System.out.println(methodName + i);\n" +
5102 				"				break;\n" +
5103 				"				case 803 :\n" +
5104 				"					System.out.println(methodName + i);\n" +
5105 				"				break;\n" +
5106 				"				case 804 :\n" +
5107 				"					System.out.println(methodName + i);\n" +
5108 				"				break;\n" +
5109 				"				case 805 :\n" +
5110 				"					System.out.println(methodName + i);\n" +
5111 				"				break;\n" +
5112 				"				case 806 :\n" +
5113 				"					System.out.println(methodName + i);\n" +
5114 				"				break;\n" +
5115 				"				case 807 :\n" +
5116 				"					System.out.println(methodName + i);\n" +
5117 				"				break;\n" +
5118 				"				case 808 :\n" +
5119 				"					System.out.println(methodName + i);\n" +
5120 				"				break;\n" +
5121 				"				case 809 :\n" +
5122 				"					System.out.println(methodName + i);\n" +
5123 				"				break;\n" +
5124 				"				case 810 :\n" +
5125 				"					System.out.println(methodName + i);\n" +
5126 				"				break;\n" +
5127 				"				case 811 :\n" +
5128 				"					System.out.println(methodName + i);\n" +
5129 				"				break;\n" +
5130 				"				case 812 :\n" +
5131 				"					System.out.println(methodName + i);\n" +
5132 				"				break;\n" +
5133 				"				case 813 :\n" +
5134 				"					System.out.println(methodName + i);\n" +
5135 				"				break;\n" +
5136 				"				case 814 :\n" +
5137 				"					System.out.println(methodName + i);\n" +
5138 				"				break;\n" +
5139 				"				case 815 :\n" +
5140 				"					System.out.println(methodName + i);\n" +
5141 				"				break;\n" +
5142 				"				case 816 :\n" +
5143 				"					System.out.println(methodName + i);\n" +
5144 				"				break;\n" +
5145 				"				case 817 :\n" +
5146 				"					System.out.println(methodName + i);\n" +
5147 				"				break;\n" +
5148 				"				case 818 :\n" +
5149 				"					System.out.println(methodName + i);\n" +
5150 				"				break;\n" +
5151 				"				case 819 :\n" +
5152 				"					System.out.println(methodName + i);\n" +
5153 				"				break;\n" +
5154 				"				case 820 :\n" +
5155 				"					System.out.println(methodName + i);\n" +
5156 				"				break;\n" +
5157 				"				case 821 :\n" +
5158 				"					System.out.println(methodName + i);\n" +
5159 				"				break;\n" +
5160 				"				case 822 :\n" +
5161 				"					System.out.println(methodName + i);\n" +
5162 				"				break;\n" +
5163 				"				case 823 :\n" +
5164 				"					System.out.println(methodName + i);\n" +
5165 				"				break;\n" +
5166 				"				case 824 :\n" +
5167 				"					System.out.println(methodName + i);\n" +
5168 				"				break;\n" +
5169 				"				case 825 :\n" +
5170 				"					System.out.println(methodName + i);\n" +
5171 				"				break;\n" +
5172 				"				case 826 :\n" +
5173 				"					System.out.println(methodName + i);\n" +
5174 				"				break;\n" +
5175 				"				case 827 :\n" +
5176 				"					System.out.println(methodName + i);\n" +
5177 				"				break;\n" +
5178 				"				case 828 :\n" +
5179 				"					System.out.println(methodName + i);\n" +
5180 				"				break;\n" +
5181 				"				case 829 :\n" +
5182 				"					System.out.println(methodName + i);\n" +
5183 				"				break;\n" +
5184 				"				case 830 :\n" +
5185 				"					System.out.println(methodName + i);\n" +
5186 				"				break;\n" +
5187 				"				case 831 :\n" +
5188 				"					System.out.println(methodName + i);\n" +
5189 				"				break;\n" +
5190 				"				case 832 :\n" +
5191 				"					System.out.println(methodName + i);\n" +
5192 				"				break;\n" +
5193 				"				case 833 :\n" +
5194 				"					System.out.println(methodName + i);\n" +
5195 				"				break;\n" +
5196 				"				case 834 :\n" +
5197 				"					System.out.println(methodName + i);\n" +
5198 				"				break;\n" +
5199 				"				case 835 :\n" +
5200 				"					System.out.println(methodName + i);\n" +
5201 				"				break;\n" +
5202 				"				case 836 :\n" +
5203 				"					System.out.println(methodName + i);\n" +
5204 				"				break;\n" +
5205 				"				case 837 :\n" +
5206 				"					System.out.println(methodName + i);\n" +
5207 				"				break;\n" +
5208 				"				case 838 :\n" +
5209 				"					System.out.println(methodName + i);\n" +
5210 				"				break;\n" +
5211 				"				case 839 :\n" +
5212 				"					System.out.println(methodName + i);\n" +
5213 				"				break;\n" +
5214 				"				case 840 :\n" +
5215 				"					System.out.println(methodName + i);\n" +
5216 				"				break;\n" +
5217 				"				case 841 :\n" +
5218 				"					System.out.println(methodName + i);\n" +
5219 				"				break;\n" +
5220 				"				case 842 :\n" +
5221 				"					System.out.println(methodName + i);\n" +
5222 				"				break;\n" +
5223 				"				case 843 :\n" +
5224 				"					System.out.println(methodName + i);\n" +
5225 				"				break;\n" +
5226 				"				case 844 :\n" +
5227 				"					System.out.println(methodName + i);\n" +
5228 				"				break;\n" +
5229 				"				case 845 :\n" +
5230 				"					System.out.println(methodName + i);\n" +
5231 				"				break;\n" +
5232 				"				case 846 :\n" +
5233 				"					System.out.println(methodName + i);\n" +
5234 				"				break;\n" +
5235 				"				case 847 :\n" +
5236 				"					System.out.println(methodName + i);\n" +
5237 				"				break;\n" +
5238 				"				case 848 :\n" +
5239 				"					System.out.println(methodName + i);\n" +
5240 				"				break;\n" +
5241 				"				case 849 :\n" +
5242 				"					System.out.println(methodName + i);\n" +
5243 				"				break;\n" +
5244 				"				case 850 :\n" +
5245 				"					System.out.println(methodName + i);\n" +
5246 				"				break;\n" +
5247 				"				case 851 :\n" +
5248 				"					System.out.println(methodName + i);\n" +
5249 				"				break;\n" +
5250 				"				case 852 :\n" +
5251 				"					System.out.println(methodName + i);\n" +
5252 				"				break;\n" +
5253 				"				case 853 :\n" +
5254 				"					System.out.println(methodName + i);\n" +
5255 				"				break;\n" +
5256 				"				case 854 :\n" +
5257 				"					System.out.println(methodName + i);\n" +
5258 				"				break;\n" +
5259 				"				case 855 :\n" +
5260 				"					System.out.println(methodName + i);\n" +
5261 				"				break;\n" +
5262 				"				case 856 :\n" +
5263 				"					System.out.println(methodName + i);\n" +
5264 				"				break;\n" +
5265 				"				case 857 :\n" +
5266 				"					System.out.println(methodName + i);\n" +
5267 				"				break;\n" +
5268 				"				case 858 :\n" +
5269 				"					System.out.println(methodName + i);\n" +
5270 				"				break;\n" +
5271 				"				case 859 :\n" +
5272 				"					System.out.println(methodName + i);\n" +
5273 				"				break;\n" +
5274 				"				case 860 :\n" +
5275 				"					System.out.println(methodName + i);\n" +
5276 				"				break;\n" +
5277 				"				case 861 :\n" +
5278 				"					System.out.println(methodName + i);\n" +
5279 				"				break;\n" +
5280 				"				case 862 :\n" +
5281 				"					System.out.println(methodName + i);\n" +
5282 				"				break;\n" +
5283 				"				case 863 :\n" +
5284 				"					System.out.println(methodName + i);\n" +
5285 				"				break;\n" +
5286 				"				case 864 :\n" +
5287 				"					System.out.println(methodName + i);\n" +
5288 				"				break;\n" +
5289 				"				case 865 :\n" +
5290 				"					System.out.println(methodName + i);\n" +
5291 				"				break;\n" +
5292 				"				case 866 :\n" +
5293 				"					System.out.println(methodName + i);\n" +
5294 				"				break;\n" +
5295 				"				case 867 :\n" +
5296 				"					System.out.println(methodName + i);\n" +
5297 				"				break;\n" +
5298 				"				case 868 :\n" +
5299 				"					System.out.println(methodName + i);\n" +
5300 				"				break;\n" +
5301 				"				case 869 :\n" +
5302 				"					System.out.println(methodName + i);\n" +
5303 				"				break;\n" +
5304 				"				case 870 :\n" +
5305 				"					System.out.println(methodName + i);\n" +
5306 				"				break;\n" +
5307 				"				case 871 :\n" +
5308 				"					System.out.println(methodName + i);\n" +
5309 				"				break;\n" +
5310 				"				case 872 :\n" +
5311 				"					System.out.println(methodName + i);\n" +
5312 				"				break;\n" +
5313 				"				case 873 :\n" +
5314 				"					System.out.println(methodName + i);\n" +
5315 				"				break;\n" +
5316 				"				case 874 :\n" +
5317 				"					System.out.println(methodName + i);\n" +
5318 				"				break;\n" +
5319 				"				case 875 :\n" +
5320 				"					System.out.println(methodName + i);\n" +
5321 				"				break;\n" +
5322 				"				case 876 :\n" +
5323 				"					System.out.println(methodName + i);\n" +
5324 				"				break;\n" +
5325 				"				case 877 :\n" +
5326 				"					System.out.println(methodName + i);\n" +
5327 				"				break;\n" +
5328 				"				case 878 :\n" +
5329 				"					System.out.println(methodName + i);\n" +
5330 				"				break;\n" +
5331 				"				case 879 :\n" +
5332 				"					System.out.println(methodName + i);\n" +
5333 				"				break;\n" +
5334 				"				case 880 :\n" +
5335 				"					System.out.println(methodName + i);\n" +
5336 				"				break;\n" +
5337 				"				case 881 :\n" +
5338 				"					System.out.println(methodName + i);\n" +
5339 				"				break;\n" +
5340 				"				case 882 :\n" +
5341 				"					System.out.println(methodName + i);\n" +
5342 				"				break;\n" +
5343 				"				case 883 :\n" +
5344 				"					System.out.println(methodName + i);\n" +
5345 				"				break;\n" +
5346 				"				case 884 :\n" +
5347 				"					System.out.println(methodName + i);\n" +
5348 				"				break;\n" +
5349 				"				case 885 :\n" +
5350 				"					System.out.println(methodName + i);\n" +
5351 				"				break;\n" +
5352 				"				case 886 :\n" +
5353 				"					System.out.println(methodName + i);\n" +
5354 				"				break;\n" +
5355 				"				case 887 :\n" +
5356 				"					System.out.println(methodName + i);\n" +
5357 				"				break;\n" +
5358 				"				case 888 :\n" +
5359 				"					System.out.println(methodName + i);\n" +
5360 				"				break;\n" +
5361 				"				case 889 :\n" +
5362 				"					System.out.println(methodName + i);\n" +
5363 				"				break;\n" +
5364 				"				case 890 :\n" +
5365 				"					System.out.println(methodName + i);\n" +
5366 				"				break;\n" +
5367 				"				case 891 :\n" +
5368 				"					System.out.println(methodName + i);\n" +
5369 				"				break;\n" +
5370 				"				case 892 :\n" +
5371 				"					System.out.println(methodName + i);\n" +
5372 				"				break;\n" +
5373 				"				case 893 :\n" +
5374 				"					System.out.println(methodName + i);\n" +
5375 				"				break;\n" +
5376 				"				case 894 :\n" +
5377 				"					System.out.println(methodName + i);\n" +
5378 				"				break;\n" +
5379 				"				case 895 :\n" +
5380 				"					System.out.println(methodName + i);\n" +
5381 				"				break;\n" +
5382 				"				case 896 :\n" +
5383 				"					System.out.println(methodName + i);\n" +
5384 				"				break;\n" +
5385 				"				case 897 :\n" +
5386 				"					System.out.println(methodName + i);\n" +
5387 				"				break;\n" +
5388 				"				case 898 :\n" +
5389 				"					System.out.println(methodName + i);\n" +
5390 				"				break;\n" +
5391 				"				case 899 :\n" +
5392 				"					System.out.println(methodName + i);\n" +
5393 				"				break;\n" +
5394 				"				case 900 :\n" +
5395 				"					System.out.println(methodName + i);\n" +
5396 				"				break;\n" +
5397 				"				case 901 :\n" +
5398 				"					System.out.println(methodName + i);\n" +
5399 				"				break;\n" +
5400 				"				case 902 :\n" +
5401 				"					System.out.println(methodName + i);\n" +
5402 				"				break;\n" +
5403 				"				case 903 :\n" +
5404 				"					System.out.println(methodName + i);\n" +
5405 				"				break;\n" +
5406 				"				case 904 :\n" +
5407 				"					System.out.println(methodName + i);\n" +
5408 				"				break;\n" +
5409 				"				case 905 :\n" +
5410 				"					System.out.println(methodName + i);\n" +
5411 				"				break;\n" +
5412 				"				case 906 :\n" +
5413 				"					System.out.println(methodName + i);\n" +
5414 				"				break;\n" +
5415 				"				case 907 :\n" +
5416 				"					System.out.println(methodName + i);\n" +
5417 				"				break;\n" +
5418 				"				case 908 :\n" +
5419 				"					System.out.println(methodName + i);\n" +
5420 				"				break;\n" +
5421 				"				case 909 :\n" +
5422 				"					System.out.println(methodName + i);\n" +
5423 				"				break;\n" +
5424 				"				case 910 :\n" +
5425 				"					System.out.println(methodName + i);\n" +
5426 				"				break;\n" +
5427 				"				case 911 :\n" +
5428 				"					System.out.println(methodName + i);\n" +
5429 				"				break;\n" +
5430 				"				case 912 :\n" +
5431 				"					System.out.println(methodName + i);\n" +
5432 				"				break;\n" +
5433 				"				case 913 :\n" +
5434 				"					System.out.println(methodName + i);\n" +
5435 				"				break;\n" +
5436 				"				case 914 :\n" +
5437 				"					System.out.println(methodName + i);\n" +
5438 				"				break;\n" +
5439 				"				case 915 :\n" +
5440 				"					System.out.println(methodName + i);\n" +
5441 				"				break;\n" +
5442 				"				case 916 :\n" +
5443 				"					System.out.println(methodName + i);\n" +
5444 				"				break;\n" +
5445 				"				case 917 :\n" +
5446 				"					System.out.println(methodName + i);\n" +
5447 				"				break;\n" +
5448 				"				case 918 :\n" +
5449 				"					System.out.println(methodName + i);\n" +
5450 				"				break;\n" +
5451 				"				case 919 :\n" +
5452 				"					System.out.println(methodName + i);\n" +
5453 				"				break;\n" +
5454 				"				case 920 :\n" +
5455 				"					System.out.println(methodName + i);\n" +
5456 				"				break;\n" +
5457 				"				case 921 :\n" +
5458 				"					System.out.println(methodName + i);\n" +
5459 				"				break;\n" +
5460 				"				case 922 :\n" +
5461 				"					System.out.println(methodName + i);\n" +
5462 				"				break;\n" +
5463 				"				case 923 :\n" +
5464 				"					System.out.println(methodName + i);\n" +
5465 				"				break;\n" +
5466 				"				case 924 :\n" +
5467 				"					System.out.println(methodName + i);\n" +
5468 				"				break;\n" +
5469 				"				case 925 :\n" +
5470 				"					System.out.println(methodName + i);\n" +
5471 				"				break;\n" +
5472 				"				case 926 :\n" +
5473 				"					System.out.println(methodName + i);\n" +
5474 				"				break;\n" +
5475 				"				case 927 :\n" +
5476 				"					System.out.println(methodName + i);\n" +
5477 				"				break;\n" +
5478 				"				case 928 :\n" +
5479 				"					System.out.println(methodName + i);\n" +
5480 				"				break;\n" +
5481 				"				case 929 :\n" +
5482 				"					System.out.println(methodName + i);\n" +
5483 				"				break;\n" +
5484 				"				case 930 :\n" +
5485 				"					System.out.println(methodName + i);\n" +
5486 				"				break;\n" +
5487 				"				case 931 :\n" +
5488 				"					System.out.println(methodName + i);\n" +
5489 				"				break;\n" +
5490 				"				case 932 :\n" +
5491 				"					System.out.println(methodName + i);\n" +
5492 				"				break;\n" +
5493 				"				case 933 :\n" +
5494 				"					System.out.println(methodName + i);\n" +
5495 				"				break;\n" +
5496 				"				case 934 :\n" +
5497 				"					System.out.println(methodName + i);\n" +
5498 				"				break;\n" +
5499 				"				case 935 :\n" +
5500 				"					System.out.println(methodName + i);\n" +
5501 				"				break;\n" +
5502 				"				case 936 :\n" +
5503 				"					System.out.println(methodName + i);\n" +
5504 				"				break;\n" +
5505 				"				case 937 :\n" +
5506 				"					System.out.println(methodName + i);\n" +
5507 				"				break;\n" +
5508 				"				case 938 :\n" +
5509 				"					System.out.println(methodName + i);\n" +
5510 				"				break;\n" +
5511 				"				case 939 :\n" +
5512 				"					System.out.println(methodName + i);\n" +
5513 				"				break;\n" +
5514 				"				case 940 :\n" +
5515 				"					System.out.println(methodName + i);\n" +
5516 				"				break;\n" +
5517 				"				case 941 :\n" +
5518 				"					System.out.println(methodName + i);\n" +
5519 				"				break;\n" +
5520 				"				case 942 :\n" +
5521 				"					System.out.println(methodName + i);\n" +
5522 				"				break;\n" +
5523 				"				case 943 :\n" +
5524 				"					System.out.println(methodName + i);\n" +
5525 				"				break;\n" +
5526 				"				case 944 :\n" +
5527 				"					System.out.println(methodName + i);\n" +
5528 				"				break;\n" +
5529 				"				case 945 :\n" +
5530 				"					System.out.println(methodName + i);\n" +
5531 				"				break;\n" +
5532 				"				case 946 :\n" +
5533 				"					System.out.println(methodName + i);\n" +
5534 				"				break;\n" +
5535 				"				case 947 :\n" +
5536 				"					System.out.println(methodName + i);\n" +
5537 				"				break;\n" +
5538 				"				case 948 :\n" +
5539 				"					System.out.println(methodName + i);\n" +
5540 				"				break;\n" +
5541 				"				case 949 :\n" +
5542 				"					System.out.println(methodName + i);\n" +
5543 				"				break;\n" +
5544 				"				case 950 :\n" +
5545 				"					System.out.println(methodName + i);\n" +
5546 				"				break;\n" +
5547 				"				case 951 :\n" +
5548 				"					System.out.println(methodName + i);\n" +
5549 				"				break;\n" +
5550 				"				case 952 :\n" +
5551 				"					System.out.println(methodName + i);\n" +
5552 				"				break;\n" +
5553 				"				case 953 :\n" +
5554 				"					System.out.println(methodName + i);\n" +
5555 				"				break;\n" +
5556 				"				case 954 :\n" +
5557 				"					System.out.println(methodName + i);\n" +
5558 				"				break;\n" +
5559 				"				case 955 :\n" +
5560 				"					System.out.println(methodName + i);\n" +
5561 				"				break;\n" +
5562 				"				case 956 :\n" +
5563 				"					System.out.println(methodName + i);\n" +
5564 				"				break;\n" +
5565 				"				case 957 :\n" +
5566 				"					System.out.println(methodName + i);\n" +
5567 				"				break;\n" +
5568 				"				case 958 :\n" +
5569 				"					System.out.println(methodName + i);\n" +
5570 				"				break;\n" +
5571 				"				case 959 :\n" +
5572 				"					System.out.println(methodName + i);\n" +
5573 				"				break;\n" +
5574 				"				case 960 :\n" +
5575 				"					System.out.println(methodName + i);\n" +
5576 				"				break;\n" +
5577 				"				case 961 :\n" +
5578 				"					System.out.println(methodName + i);\n" +
5579 				"				break;\n" +
5580 				"				case 962 :\n" +
5581 				"					System.out.println(methodName + i);\n" +
5582 				"				break;\n" +
5583 				"				case 963 :\n" +
5584 				"					System.out.println(methodName + i);\n" +
5585 				"				break;\n" +
5586 				"				case 964 :\n" +
5587 				"					System.out.println(methodName + i);\n" +
5588 				"				break;\n" +
5589 				"				case 965 :\n" +
5590 				"					System.out.println(methodName + i);\n" +
5591 				"				break;\n" +
5592 				"				case 966 :\n" +
5593 				"					System.out.println(methodName + i);\n" +
5594 				"				break;\n" +
5595 				"				case 967 :\n" +
5596 				"					System.out.println(methodName + i);\n" +
5597 				"				break;\n" +
5598 				"				case 968 :\n" +
5599 				"					System.out.println(methodName + i);\n" +
5600 				"				break;\n" +
5601 				"				case 969 :\n" +
5602 				"					System.out.println(methodName + i);\n" +
5603 				"				break;\n" +
5604 				"				case 970 :\n" +
5605 				"					System.out.println(methodName + i);\n" +
5606 				"				break;\n" +
5607 				"				case 971 :\n" +
5608 				"					System.out.println(methodName + i);\n" +
5609 				"				break;\n" +
5610 				"				case 972 :\n" +
5611 				"					System.out.println(methodName + i);\n" +
5612 				"				break;\n" +
5613 				"				case 973 :\n" +
5614 				"					System.out.println(methodName + i);\n" +
5615 				"				break;\n" +
5616 				"				case 974 :\n" +
5617 				"					System.out.println(methodName + i);\n" +
5618 				"				break;\n" +
5619 				"				case 975 :\n" +
5620 				"					System.out.println(methodName + i);\n" +
5621 				"				break;\n" +
5622 				"				case 976 :\n" +
5623 				"					System.out.println(methodName + i);\n" +
5624 				"				break;\n" +
5625 				"				case 977 :\n" +
5626 				"					System.out.println(methodName + i);\n" +
5627 				"				break;\n" +
5628 				"				case 978 :\n" +
5629 				"					System.out.println(methodName + i);\n" +
5630 				"				break;\n" +
5631 				"				case 979 :\n" +
5632 				"					System.out.println(methodName + i);\n" +
5633 				"				break;\n" +
5634 				"				case 980 :\n" +
5635 				"					System.out.println(methodName + i);\n" +
5636 				"				break;\n" +
5637 				"				case 981 :\n" +
5638 				"					System.out.println(methodName + i);\n" +
5639 				"				break;\n" +
5640 				"				case 982 :\n" +
5641 				"					System.out.println(methodName + i);\n" +
5642 				"				break;\n" +
5643 				"				case 983 :\n" +
5644 				"					System.out.println(methodName + i);\n" +
5645 				"				break;\n" +
5646 				"				case 984 :\n" +
5647 				"					System.out.println(methodName + i);\n" +
5648 				"				break;\n" +
5649 				"				case 985 :\n" +
5650 				"					System.out.println(methodName + i);\n" +
5651 				"				break;\n" +
5652 				"				case 986 :\n" +
5653 				"					System.out.println(methodName + i);\n" +
5654 				"				break;\n" +
5655 				"				case 987 :\n" +
5656 				"					System.out.println(methodName + i);\n" +
5657 				"				break;\n" +
5658 				"				case 988 :\n" +
5659 				"					System.out.println(methodName + i);\n" +
5660 				"				break;\n" +
5661 				"				case 989 :\n" +
5662 				"					System.out.println(methodName + i);\n" +
5663 				"				break;\n" +
5664 				"				case 990 :\n" +
5665 				"					System.out.println(methodName + i);\n" +
5666 				"				break;\n" +
5667 				"				case 991 :\n" +
5668 				"					System.out.println(methodName + i);\n" +
5669 				"				break;\n" +
5670 				"				case 992 :\n" +
5671 				"					System.out.println(methodName + i);\n" +
5672 				"				break;\n" +
5673 				"				case 993 :\n" +
5674 				"					System.out.println(methodName + i);\n" +
5675 				"				break;\n" +
5676 				"				case 994 :\n" +
5677 				"					System.out.println(methodName + i);\n" +
5678 				"				break;\n" +
5679 				"				case 995 :\n" +
5680 				"					System.out.println(methodName + i);\n" +
5681 				"				break;\n" +
5682 				"				case 996 :\n" +
5683 				"					System.out.println(methodName + i);\n" +
5684 				"				break;\n" +
5685 				"				case 997 :\n" +
5686 				"					System.out.println(methodName + i);\n" +
5687 				"				break;\n" +
5688 				"				case 998 :\n" +
5689 				"					System.out.println(methodName + i);\n" +
5690 				"				break;\n" +
5691 				"				case 999 :\n" +
5692 				"					System.out.println(methodName + i);\n" +
5693 				"				break;\n" +
5694 				"				case 1000 :\n" +
5695 				"					System.out.println(methodName + i);\n" +
5696 				"				break;\n" +
5697 				"				case 1001 :\n" +
5698 				"					System.out.println(methodName + i);\n" +
5699 				"				break;\n" +
5700 				"				case 1002 :\n" +
5701 				"					System.out.println(methodName + i);\n" +
5702 				"				break;\n" +
5703 				"				case 1003 :\n" +
5704 				"					System.out.println(methodName + i);\n" +
5705 				"				break;\n" +
5706 				"				case 1004 :\n" +
5707 				"					System.out.println(methodName + i);\n" +
5708 				"				break;\n" +
5709 				"				case 1005 :\n" +
5710 				"					System.out.println(methodName + i);\n" +
5711 				"				break;\n" +
5712 				"				case 1006 :\n" +
5713 				"					System.out.println(methodName + i);\n" +
5714 				"				break;\n" +
5715 				"				case 1007 :\n" +
5716 				"					System.out.println(methodName + i);\n" +
5717 				"				break;\n" +
5718 				"				case 1008 :\n" +
5719 				"					System.out.println(methodName + i);\n" +
5720 				"				break;\n" +
5721 				"				case 1009 :\n" +
5722 				"					System.out.println(methodName + i);\n" +
5723 				"				break;\n" +
5724 				"				case 1010 :\n" +
5725 				"					System.out.println(methodName + i);\n" +
5726 				"				break;\n" +
5727 				"				case 1011 :\n" +
5728 				"					System.out.println(methodName + i);\n" +
5729 				"				break;\n" +
5730 				"				case 1012 :\n" +
5731 				"					System.out.println(methodName + i);\n" +
5732 				"				break;\n" +
5733 				"				case 1013 :\n" +
5734 				"					System.out.println(methodName + i);\n" +
5735 				"				break;\n" +
5736 				"				case 1014 :\n" +
5737 				"					System.out.println(methodName + i);\n" +
5738 				"				break;\n" +
5739 				"				case 1015 :\n" +
5740 				"					System.out.println(methodName + i);\n" +
5741 				"				break;\n" +
5742 				"				case 1016 :\n" +
5743 				"					System.out.println(methodName + i);\n" +
5744 				"				break;\n" +
5745 				"				case 1017 :\n" +
5746 				"					System.out.println(methodName + i);\n" +
5747 				"				break;\n" +
5748 				"				case 1018 :\n" +
5749 				"					System.out.println(methodName + i);\n" +
5750 				"				break;\n" +
5751 				"				case 1019 :\n" +
5752 				"					System.out.println(methodName + i);\n" +
5753 				"				break;\n" +
5754 				"				case 1020 :\n" +
5755 				"					System.out.println(methodName + i);\n" +
5756 				"				break;\n" +
5757 				"				case 1021 :\n" +
5758 				"					System.out.println(methodName + i);\n" +
5759 				"				break;\n" +
5760 				"				case 1022 :\n" +
5761 				"					System.out.println(methodName + i);\n" +
5762 				"				break;\n" +
5763 				"				case 1023 :\n" +
5764 				"					System.out.println(methodName + i);\n" +
5765 				"				break;\n" +
5766 				"				case 1024 :\n" +
5767 				"					System.out.println(methodName + i);\n" +
5768 				"				break;\n" +
5769 				"				case 1025 :\n" +
5770 				"					System.out.println(methodName + i);\n" +
5771 				"				break;\n" +
5772 				"				case 1026 :\n" +
5773 				"					System.out.println(methodName + i);\n" +
5774 				"				break;\n" +
5775 				"				case 1027 :\n" +
5776 				"					System.out.println(methodName + i);\n" +
5777 				"				break;\n" +
5778 				"				case 1028 :\n" +
5779 				"					System.out.println(methodName + i);\n" +
5780 				"				break;\n" +
5781 				"				case 1029 :\n" +
5782 				"					System.out.println(methodName + i);\n" +
5783 				"				break;\n" +
5784 				"				case 1030 :\n" +
5785 				"					System.out.println(methodName + i);\n" +
5786 				"				break;\n" +
5787 				"				case 1031 :\n" +
5788 				"					System.out.println(methodName + i);\n" +
5789 				"				break;\n" +
5790 				"				case 1032 :\n" +
5791 				"					System.out.println(methodName + i);\n" +
5792 				"				break;\n" +
5793 				"				case 1033 :\n" +
5794 				"					System.out.println(methodName + i);\n" +
5795 				"				break;\n" +
5796 				"				case 1034 :\n" +
5797 				"					System.out.println(methodName + i);\n" +
5798 				"				break;\n" +
5799 				"				case 1035 :\n" +
5800 				"					System.out.println(methodName + i);\n" +
5801 				"				break;\n" +
5802 				"				case 1036 :\n" +
5803 				"					System.out.println(methodName + i);\n" +
5804 				"				break;\n" +
5805 				"				case 1037 :\n" +
5806 				"					System.out.println(methodName + i);\n" +
5807 				"				break;\n" +
5808 				"				case 1038 :\n" +
5809 				"					System.out.println(methodName + i);\n" +
5810 				"				break;\n" +
5811 				"				case 1039 :\n" +
5812 				"					System.out.println(methodName + i);\n" +
5813 				"				break;\n" +
5814 				"				case 1040 :\n" +
5815 				"					System.out.println(methodName + i);\n" +
5816 				"				break;\n" +
5817 				"				case 1041 :\n" +
5818 				"					System.out.println(methodName + i);\n" +
5819 				"				break;\n" +
5820 				"				case 1042 :\n" +
5821 				"					System.out.println(methodName + i);\n" +
5822 				"				break;\n" +
5823 				"				case 1043 :\n" +
5824 				"					System.out.println(methodName + i);\n" +
5825 				"				break;\n" +
5826 				"				case 1044 :\n" +
5827 				"					System.out.println(methodName + i);\n" +
5828 				"				break;\n" +
5829 				"				case 1045 :\n" +
5830 				"					System.out.println(methodName + i);\n" +
5831 				"				break;\n" +
5832 				"				case 1046 :\n" +
5833 				"					System.out.println(methodName + i);\n" +
5834 				"				break;\n" +
5835 				"				case 1047 :\n" +
5836 				"					System.out.println(methodName + i);\n" +
5837 				"				break;\n" +
5838 				"				case 1048 :\n" +
5839 				"					System.out.println(methodName + i);\n" +
5840 				"				break;\n" +
5841 				"				case 1049 :\n" +
5842 				"					System.out.println(methodName + i);\n" +
5843 				"				break;\n" +
5844 				"				case 1050 :\n" +
5845 				"					System.out.println(methodName + i);\n" +
5846 				"				break;\n" +
5847 				"				case 1051 :\n" +
5848 				"					System.out.println(methodName + i);\n" +
5849 				"				break;\n" +
5850 				"				case 1052 :\n" +
5851 				"					System.out.println(methodName + i);\n" +
5852 				"				break;\n" +
5853 				"				case 1053 :\n" +
5854 				"					System.out.println(methodName + i);\n" +
5855 				"				break;\n" +
5856 				"				case 1054 :\n" +
5857 				"					System.out.println(methodName + i);\n" +
5858 				"				break;\n" +
5859 				"				case 1055 :\n" +
5860 				"					System.out.println(methodName + i);\n" +
5861 				"				break;\n" +
5862 				"				case 1056 :\n" +
5863 				"					System.out.println(methodName + i);\n" +
5864 				"				break;\n" +
5865 				"				case 1057 :\n" +
5866 				"					System.out.println(methodName + i);\n" +
5867 				"				break;\n" +
5868 				"				case 1058 :\n" +
5869 				"					System.out.println(methodName + i);\n" +
5870 				"				break;\n" +
5871 				"				case 1059 :\n" +
5872 				"					System.out.println(methodName + i);\n" +
5873 				"				break;\n" +
5874 				"				case 1060 :\n" +
5875 				"					System.out.println(methodName + i);\n" +
5876 				"				break;\n" +
5877 				"				case 1061 :\n" +
5878 				"					System.out.println(methodName + i);\n" +
5879 				"				break;\n" +
5880 				"				case 1062 :\n" +
5881 				"					System.out.println(methodName + i);\n" +
5882 				"				break;\n" +
5883 				"				case 1063 :\n" +
5884 				"					System.out.println(methodName + i);\n" +
5885 				"				break;\n" +
5886 				"				case 1064 :\n" +
5887 				"					System.out.println(methodName + i);\n" +
5888 				"				break;\n" +
5889 				"				case 1065 :\n" +
5890 				"					System.out.println(methodName + i);\n" +
5891 				"				break;\n" +
5892 				"				case 1066 :\n" +
5893 				"					System.out.println(methodName + i);\n" +
5894 				"				break;\n" +
5895 				"				case 1067 :\n" +
5896 				"					System.out.println(methodName + i);\n" +
5897 				"				break;\n" +
5898 				"				case 1068 :\n" +
5899 				"					System.out.println(methodName + i);\n" +
5900 				"				break;\n" +
5901 				"				case 1069 :\n" +
5902 				"					System.out.println(methodName + i);\n" +
5903 				"				break;\n" +
5904 				"				case 1070 :\n" +
5905 				"					System.out.println(methodName + i);\n" +
5906 				"				break;\n" +
5907 				"				case 1071 :\n" +
5908 				"					System.out.println(methodName + i);\n" +
5909 				"				break;\n" +
5910 				"				case 1072 :\n" +
5911 				"					System.out.println(methodName + i);\n" +
5912 				"				break;\n" +
5913 				"				case 1073 :\n" +
5914 				"					System.out.println(methodName + i);\n" +
5915 				"				break;\n" +
5916 				"				case 1074 :\n" +
5917 				"					System.out.println(methodName + i);\n" +
5918 				"				break;\n" +
5919 				"				case 1075 :\n" +
5920 				"					System.out.println(methodName + i);\n" +
5921 				"				break;\n" +
5922 				"				case 1076 :\n" +
5923 				"					System.out.println(methodName + i);\n" +
5924 				"				break;\n" +
5925 				"				case 1077 :\n" +
5926 				"					System.out.println(methodName + i);\n" +
5927 				"				break;\n" +
5928 				"				case 1078 :\n" +
5929 				"					System.out.println(methodName + i);\n" +
5930 				"				break;\n" +
5931 				"				case 1079 :\n" +
5932 				"					System.out.println(methodName + i);\n" +
5933 				"				break;\n" +
5934 				"				case 1080 :\n" +
5935 				"					System.out.println(methodName + i);\n" +
5936 				"				break;\n" +
5937 				"				case 1081 :\n" +
5938 				"					System.out.println(methodName + i);\n" +
5939 				"				break;\n" +
5940 				"				case 1082 :\n" +
5941 				"					System.out.println(methodName + i);\n" +
5942 				"				break;\n" +
5943 				"				case 1083 :\n" +
5944 				"					System.out.println(methodName + i);\n" +
5945 				"				break;\n" +
5946 				"				case 1084 :\n" +
5947 				"					System.out.println(methodName + i);\n" +
5948 				"				break;\n" +
5949 				"				case 1085 :\n" +
5950 				"					System.out.println(methodName + i);\n" +
5951 				"				break;\n" +
5952 				"				case 1086 :\n" +
5953 				"					System.out.println(methodName + i);\n" +
5954 				"				break;\n" +
5955 				"				case 1087 :\n" +
5956 				"					System.out.println(methodName + i);\n" +
5957 				"				break;\n" +
5958 				"				case 1088 :\n" +
5959 				"					System.out.println(methodName + i);\n" +
5960 				"				break;\n" +
5961 				"				case 1089 :\n" +
5962 				"					System.out.println(methodName + i);\n" +
5963 				"				break;\n" +
5964 				"				case 1090 :\n" +
5965 				"					System.out.println(methodName + i);\n" +
5966 				"				break;\n" +
5967 				"				case 1091 :\n" +
5968 				"					System.out.println(methodName + i);\n" +
5969 				"				break;\n" +
5970 				"				case 1092 :\n" +
5971 				"					System.out.println(methodName + i);\n" +
5972 				"				break;\n" +
5973 				"				case 1093 :\n" +
5974 				"					System.out.println(methodName + i);\n" +
5975 				"				break;\n" +
5976 				"				case 1094 :\n" +
5977 				"					System.out.println(methodName + i);\n" +
5978 				"				break;\n" +
5979 				"				case 1095 :\n" +
5980 				"					System.out.println(methodName + i);\n" +
5981 				"				break;\n" +
5982 				"				case 1096 :\n" +
5983 				"					System.out.println(methodName + i);\n" +
5984 				"				break;\n" +
5985 				"				case 1097 :\n" +
5986 				"					System.out.println(methodName + i);\n" +
5987 				"				break;\n" +
5988 				"				case 1098 :\n" +
5989 				"					System.out.println(methodName + i);\n" +
5990 				"				break;\n" +
5991 				"				case 1099 :\n" +
5992 				"					System.out.println(methodName + i);\n" +
5993 				"				break;\n" +
5994 				"				case 1100 :\n" +
5995 				"					System.out.println(methodName + i);\n" +
5996 				"				break;\n" +
5997 				"				case 1101 :\n" +
5998 				"					System.out.println(methodName + i);\n" +
5999 				"				break;\n" +
6000 				"				case 1102 :\n" +
6001 				"					System.out.println(methodName + i);\n" +
6002 				"				break;\n" +
6003 				"				case 1103 :\n" +
6004 				"					System.out.println(methodName + i);\n" +
6005 				"				break;\n" +
6006 				"				case 1104 :\n" +
6007 				"					System.out.println(methodName + i);\n" +
6008 				"				break;\n" +
6009 				"				case 1105 :\n" +
6010 				"					System.out.println(methodName + i);\n" +
6011 				"				break;\n" +
6012 				"				case 1106 :\n" +
6013 				"					System.out.println(methodName + i);\n" +
6014 				"				break;\n" +
6015 				"				case 1107 :\n" +
6016 				"					System.out.println(methodName + i);\n" +
6017 				"				break;\n" +
6018 				"				case 1108 :\n" +
6019 				"					System.out.println(methodName + i);\n" +
6020 				"				break;\n" +
6021 				"				case 1109 :\n" +
6022 				"					System.out.println(methodName + i);\n" +
6023 				"				break;\n" +
6024 				"				case 1110 :\n" +
6025 				"					System.out.println(methodName + i);\n" +
6026 				"				break;\n" +
6027 				"				case 1111 :\n" +
6028 				"					System.out.println(methodName + i);\n" +
6029 				"				break;\n" +
6030 				"				case 1112 :\n" +
6031 				"					System.out.println(methodName + i);\n" +
6032 				"				break;\n" +
6033 				"				case 1113 :\n" +
6034 				"					System.out.println(methodName + i);\n" +
6035 				"				break;\n" +
6036 				"				case 1114 :\n" +
6037 				"					System.out.println(methodName + i);\n" +
6038 				"				break;\n" +
6039 				"				case 1115 :\n" +
6040 				"					System.out.println(methodName + i);\n" +
6041 				"				break;\n" +
6042 				"				case 1116 :\n" +
6043 				"					System.out.println(methodName + i);\n" +
6044 				"				break;\n" +
6045 				"				case 1117 :\n" +
6046 				"					System.out.println(methodName + i);\n" +
6047 				"				break;\n" +
6048 				"				case 1118 :\n" +
6049 				"					System.out.println(methodName + i);\n" +
6050 				"				break;\n" +
6051 				"				case 1119 :\n" +
6052 				"					System.out.println(methodName + i);\n" +
6053 				"				break;\n" +
6054 				"				case 1120 :\n" +
6055 				"					System.out.println(methodName + i);\n" +
6056 				"				break;\n" +
6057 				"				case 1121 :\n" +
6058 				"					System.out.println(methodName + i);\n" +
6059 				"				break;\n" +
6060 				"				case 1122 :\n" +
6061 				"					System.out.println(methodName + i);\n" +
6062 				"				break;\n" +
6063 				"				case 1123 :\n" +
6064 				"					System.out.println(methodName + i);\n" +
6065 				"				break;\n" +
6066 				"				case 1124 :\n" +
6067 				"					System.out.println(methodName + i);\n" +
6068 				"				break;\n" +
6069 				"				case 1125 :\n" +
6070 				"					System.out.println(methodName + i);\n" +
6071 				"				break;\n" +
6072 				"				case 1126 :\n" +
6073 				"					System.out.println(methodName + i);\n" +
6074 				"				break;\n" +
6075 				"				case 1127 :\n" +
6076 				"					System.out.println(methodName + i);\n" +
6077 				"				break;\n" +
6078 				"				case 1128 :\n" +
6079 				"					System.out.println(methodName + i);\n" +
6080 				"				break;\n" +
6081 				"				case 1129 :\n" +
6082 				"					System.out.println(methodName + i);\n" +
6083 				"				break;\n" +
6084 				"			}\n" +
6085 				"		} catch(Exception e) {\n" +
6086 				"			e.printStackTrace();\n" +
6087 				"		}\n" +
6088 				"	}" +
6089 				"}",
6090 			},
6091 		"SUCCESS");
6092 	}
6093 
6094 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=238923
test038()6095 	public void test038() {
6096 		this.runConformTest(
6097 			new String[] {
6098 				"X.java",
6099 				"public class X {\n" +
6100 				"	{\n" +
6101 				"		for (boolean b : new boolean[] {}) {}\n" +
6102 				"	}\n" +
6103 				"	public X() {}\n" +
6104 				"	public X(boolean b) {}\n" +
6105 				"	public static void main(String[] args) {\n" +
6106 				"		System.out.print(\"SUCCESS\");\n" +
6107 				"	}\n" +
6108 				"}",
6109 			},
6110 		"SUCCESS");
6111 	}
6112 
6113 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=237931
test039()6114 	public void test039() {
6115 		this.runConformTest(
6116 			new String[] {
6117 				"X.java",
6118 				"public class X {\n" +
6119 				"	public String[][] foo(String s) {\n" +
6120 				"		return\n" +
6121 				"			new String[][] { {\" \", s != null ? s : \"\" },\n" +
6122 				"				{\" \", s != null ? s : \"\" },\n" +
6123 				"				{\" \", s != null ? s : \"\" },\n" +
6124 				"				{\" \", s != null ? s : \"\" } };\n" +
6125 				"	}\n" +
6126 				"	public static void main(String[] args) {\n" +
6127 				"		System.out.println(\"SUCCESS\");\n" +
6128 				"	}\n" +
6129 				"}",
6130 			},
6131 		"SUCCESS");
6132 	}
6133 
6134 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=251539
test040()6135 	public void test040() throws Exception {
6136 		this.runConformTest(
6137 			new String[] {
6138 				"I.java",
6139 				"public interface I {\n" +
6140 				"\n" +
6141 				"	public Object foo();\n" +
6142 				"\n" +
6143 				"	public static class B implements I {\n" +
6144 				"		public Object foo() {\n" +
6145 				"			return X.myI.foo();\n" +
6146 				"		}\n" +
6147 				"	}\n" +
6148 				"}",
6149 				"X.java",
6150 				"public class X {\n" +
6151 				"	public static final I myI = new I.B() {\n" +
6152 				"		int a = 0;\n" +
6153 				"		int b = 1;\n" +
6154 				"	};\n" +
6155 				"\n" +
6156 				"	private Object bar2() {\n" +
6157 				"		return null;\n" +
6158 				"	}\n" +
6159 				"	private Object bar() {\n" +
6160 				"		Object o = bar2();\n" +
6161 				"		if (o != null) {\n" +
6162 				"			o.toString();\n" +
6163 				"		}\n" +
6164 				"		return null;\n" +
6165 				"	}\n" +
6166 				"\n" +
6167 				"}",
6168 			},
6169 		"");
6170 		String expectedOutput =
6171 			"  // Method descriptor #23 ()Ljava/lang/Object;\n" +
6172 			"  // Stack: 1, Locals: 2\n" +
6173 			"  private java.lang.Object bar();\n" +
6174 			"     0  aload_0 [this]\n" +
6175 			"     1  " +
6176 			(isMinimumCompliant(ClassFileConstants.JDK11) ? "invokevirtual" : "invokespecial") +
6177 			" X.bar2() : java.lang.Object [25]\n" +
6178 			"     4  astore_1 [o]\n" +
6179 			"     5  aload_1 [o]\n" +
6180 			"     6  ifnull 14\n" +
6181 			"     9  aload_1 [o]\n" +
6182 			"    10  invokevirtual java.lang.Object.toString() : java.lang.String [27]\n" +
6183 			"    13  pop\n" +
6184 			"    14  aconst_null\n" +
6185 			"    15  areturn\n" +
6186 			"      Line numbers:\n" +
6187 			"        [pc: 0, line: 11]\n" +
6188 			"        [pc: 5, line: 12]\n" +
6189 			"        [pc: 9, line: 13]\n" +
6190 			"        [pc: 14, line: 15]\n" +
6191 			"      Local variable table:\n" +
6192 			"        [pc: 0, pc: 16] local: this index: 0 type: X\n" +
6193 			"        [pc: 5, pc: 16] local: o index: 1 type: java.lang.Object\n" +
6194 			"      Stack map table: number of frames 1\n" +
6195 			"        [pc: 14, append: {java.lang.Object}]\n";
6196 		checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput);
6197 	}
6198 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=251539
test041()6199 	public void test041() throws Exception {
6200 		this.runConformTest(
6201 			new String[] {
6202 				"I.java",
6203 				"public interface I {\n" +
6204 				"\n" +
6205 				"	public Object foo();\n" +
6206 				"\n" +
6207 				"	public static class B implements I {\n" +
6208 				"		public Object foo() {\n" +
6209 				"			return String.valueOf(X.myI.foo()) + String.valueOf(X.myU.foo());\n" +
6210 				"		}\n" +
6211 				"	}\n" +
6212 				"}",
6213 				"X.java",
6214 				"public class X {\n" +
6215 				"	public static final I myI = new I.B() {\n" +
6216 				"		int a = 0;\n" +
6217 				"		int b = 1;\n" +
6218 				"	};\n" +
6219 				"	public static final I myU = new I.B() {\n" +
6220 				"		int a = 0;\n" +
6221 				"		int b = 1;\n" +
6222 				"		int c = 2;\n" +
6223 				"	};\n" +
6224 				"	private Object bar2() {\n" +
6225 				"		return null;\n" +
6226 				"	}\n" +
6227 				"	private Object bar() {\n" +
6228 				"		Object o = bar2();\n" +
6229 				"		if (o != null) {\n" +
6230 				"			o.toString();\n" +
6231 				"		}\n" +
6232 				"		return null;\n" +
6233 				"	}\n" +
6234 				"}",
6235 			},
6236 		"");
6237 
6238 		String expectedOutput =
6239 			"  // Method descriptor #29 ()Ljava/lang/Object;\n" +
6240 			"  // Stack: 1, Locals: 2\n" +
6241 			"  private java.lang.Object bar();\n" +
6242 			"     0  aload_0 [this]\n" +
6243 			"     1  " +
6244 			(isMinimumCompliant(ClassFileConstants.JDK11) ? "invokevirtual" : "invokespecial") +
6245 			" X.bar2() : java.lang.Object [31]\n" +
6246 			"     4  astore_1 [o]\n" +
6247 			"     5  aload_1 [o]\n" +
6248 			"     6  ifnull 14\n" +
6249 			"     9  aload_1 [o]\n" +
6250 			"    10  invokevirtual java.lang.Object.toString() : java.lang.String [33]\n" +
6251 			"    13  pop\n" +
6252 			"    14  aconst_null\n" +
6253 			"    15  areturn\n" +
6254 			"      Line numbers:\n" +
6255 			"        [pc: 0, line: 15]\n" +
6256 			"        [pc: 5, line: 16]\n" +
6257 			"        [pc: 9, line: 17]\n" +
6258 			"        [pc: 14, line: 19]\n" +
6259 			"      Local variable table:\n" +
6260 			"        [pc: 0, pc: 16] local: this index: 0 type: X\n" +
6261 			"        [pc: 5, pc: 16] local: o index: 1 type: java.lang.Object\n" +
6262 			"      Stack map table: number of frames 1\n" +
6263 			"        [pc: 14, append: {java.lang.Object}]\n";
6264 		checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput);
6265 	}
6266 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=260031
test042()6267 	public void test042() throws Exception {
6268 		this.runConformTest(
6269 			new String[] {
6270 				"X.java",
6271 				"public class X {\n" +
6272 				"	private static void foo(Class<?> c, int n) { }\n" +
6273 				"	public static void main(String... args) {\n" +
6274 				"		foo(Integer.class, (args == null ? -1 : 1));\n" +
6275 				"	}\n" +
6276 				"}",
6277 			},
6278 		"");
6279 
6280 		String expectedOutput =
6281 			"  // Stack: 2, Locals: 1\n" +
6282 			"  public static void main(java.lang.String... args);\n" +
6283 			"     0  ldc <Class java.lang.Integer> [26]\n" +
6284 			"     2  aload_0 [args]\n" +
6285 			"     3  ifnonnull 10\n" +
6286 			"     6  iconst_m1\n" +
6287 			"     7  goto 11\n" +
6288 			"    10  iconst_1\n" +
6289 			"    11  invokestatic X.foo(java.lang.Class, int) : void [28]\n" +
6290 			"    14  return\n" +
6291 			"      Line numbers:\n" +
6292 			"        [pc: 0, line: 4]\n" +
6293 			"        [pc: 14, line: 5]\n" +
6294 			"      Local variable table:\n" +
6295 			"        [pc: 0, pc: 15] local: args index: 0 type: java.lang.String[]\n" +
6296 			"      Stack map table: number of frames 2\n" +
6297 			"        [pc: 10, same_locals_1_stack_item, stack: {java.lang.Class}]\n" +
6298 			"        [pc: 11, full, stack: {java.lang.Class, int}, locals: {java.lang.String[]}]\n";
6299 		checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput);
6300 	}
6301 
6302 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=279183
test043()6303 	public void test043() throws Exception {
6304 		this.runConformTest(
6305 			new String[] {
6306 				"X.java",
6307 				"public class X {\n" +
6308 				"	public static void main(String[] args) {\n" +
6309 				"		System.out.println(\"ok\");\n" +
6310 				"	}\n" +
6311 				"	private static int willNotVerify() {\n" +
6312 				"		int limit = 100;\n" +
6313 				"		int match;\n" +
6314 				"		int result = 200;\n" +
6315 				"		do {\n" +
6316 				"			if (limit > 0) {\n" +
6317 				"				continue;\n" +
6318 				"			}\n" +
6319 				"			match = 0;\n" +
6320 				"			while (++match < 100) {\n" +
6321 				"				System.out.println();\n" +
6322 				"			}\n" +
6323 				"		} while (--limit != 0);\n" +
6324 				"		return result;\n" +
6325 				"	}\n" +
6326 				"}",
6327 			},
6328 		"ok");
6329 
6330 		String expectedOutput =
6331 			"  // Method descriptor #33 ()I\n" +
6332 			"  // Stack: 2, Locals: 3\n" +
6333 			"  private static int willNotVerify();\n" +
6334 			"     0  bipush 100\n" +
6335 			"     2  istore_0 [limit]\n" +
6336 			"     3  sipush 200\n" +
6337 			"     6  istore_2 [result]\n" +
6338 			"     7  iload_0 [limit]\n" +
6339 			"     8  ifle 14\n" +
6340 			"    11  goto 34\n" +
6341 			"    14  iconst_0\n" +
6342 			"    15  istore_1 [match]\n" +
6343 			"    16  goto 25\n" +
6344 			"    19  getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
6345 			"    22  invokevirtual java.io.PrintStream.println() : void [34]\n" +
6346 			"    25  iinc 1 1 [match]\n" +
6347 			"    28  iload_1 [match]\n" +
6348 			"    29  bipush 100\n" +
6349 			"    31  if_icmplt 19\n" +
6350 			"    34  iinc 0 -1 [limit]\n" +
6351 			"    37  iload_0 [limit]\n" +
6352 			"    38  ifne 7\n" +
6353 			"    41  iload_2 [result]\n" +
6354 			"    42  ireturn\n" +
6355 			"      Line numbers:\n" +
6356 			"        [pc: 0, line: 6]\n" +
6357 			"        [pc: 3, line: 8]\n" +
6358 			"        [pc: 7, line: 10]\n" +
6359 			"        [pc: 11, line: 11]\n" +
6360 			"        [pc: 14, line: 13]\n" +
6361 			"        [pc: 16, line: 14]\n" +
6362 			"        [pc: 19, line: 15]\n" +
6363 			"        [pc: 25, line: 14]\n" +
6364 			"        [pc: 34, line: 17]\n" +
6365 			"        [pc: 41, line: 18]\n" +
6366 			"      Local variable table:\n" +
6367 			"        [pc: 3, pc: 43] local: limit index: 0 type: int\n" +
6368 			"        [pc: 16, pc: 34] local: match index: 1 type: int\n" +
6369 			"        [pc: 7, pc: 43] local: result index: 2 type: int\n" +
6370 			"      Stack map table: number of frames 5\n" +
6371 			"        [pc: 7, full, stack: {}, locals: {int, _, int}]\n" +
6372 			"        [pc: 14, same]\n" +
6373 			"        [pc: 19, full, stack: {}, locals: {int, int, int}]\n" +
6374 			"        [pc: 25, same]\n" +
6375 			"        [pc: 34, full, stack: {}, locals: {int, _, int}]\n";
6376 		checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput);
6377 	}
6378 
6379 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=279183
test044()6380 	public void test044() throws Exception {
6381 		this.runConformTest(
6382 			new String[] {
6383 				"X.java",
6384 				"public class X {\n" +
6385 				"	public static void main(String[] args) {\n" +
6386 				"		System.out.println(\"ok\");\n" +
6387 				"	}\n" +
6388 				"	private static int willNotVerify() {\n" +
6389 				"		int limit = 100;\n" +
6390 				"		int match;\n" +
6391 				"		int result = 200;\n" +
6392 				"		do {\n" +
6393 				"			if (limit > 0) {\n" +
6394 				"				continue;\n" +
6395 				"			}\n" +
6396 				"			match = 0;\n" +
6397 				"			while (++match < 100) {\n" +
6398 				"				// empty\n" +
6399 				"			}\n" +
6400 				"		} while (--limit != 0);\n" +
6401 				"		return result;\n" +
6402 				"	}\n" +
6403 				"}",
6404 			},
6405 		"ok");
6406 
6407 		String expectedOutput =
6408 			"  // Method descriptor #33 ()I\n" +
6409 			"  // Stack: 2, Locals: 3\n" +
6410 			"  private static int willNotVerify();\n" +
6411 			"     0  bipush 100\n" +
6412 			"     2  istore_0 [limit]\n" +
6413 			"     3  sipush 200\n" +
6414 			"     6  istore_2 [result]\n" +
6415 			"     7  iload_0 [limit]\n" +
6416 			"     8  ifle 14\n" +
6417 			"    11  goto 25\n" +
6418 			"    14  iconst_0\n" +
6419 			"    15  istore_1 [match]\n" +
6420 			"    16  iinc 1 1 [match]\n" +
6421 			"    19  iload_1 [match]\n" +
6422 			"    20  bipush 100\n" +
6423 			"    22  if_icmplt 16\n" +
6424 			"    25  iinc 0 -1 [limit]\n" +
6425 			"    28  iload_0 [limit]\n" +
6426 			"    29  ifne 7\n" +
6427 			"    32  iload_2 [result]\n" +
6428 			"    33  ireturn\n" +
6429 			"      Line numbers:\n" +
6430 			"        [pc: 0, line: 6]\n" +
6431 			"        [pc: 3, line: 8]\n" +
6432 			"        [pc: 7, line: 10]\n" +
6433 			"        [pc: 11, line: 11]\n" +
6434 			"        [pc: 14, line: 13]\n" +
6435 			"        [pc: 16, line: 14]\n" +
6436 			"        [pc: 25, line: 17]\n" +
6437 			"        [pc: 32, line: 18]\n" +
6438 			"      Local variable table:\n" +
6439 			"        [pc: 3, pc: 34] local: limit index: 0 type: int\n" +
6440 			"        [pc: 16, pc: 25] local: match index: 1 type: int\n" +
6441 			"        [pc: 7, pc: 34] local: result index: 2 type: int\n" +
6442 			"      Stack map table: number of frames 4\n" +
6443 			"        [pc: 7, full, stack: {}, locals: {int, _, int}]\n" +
6444 			"        [pc: 14, same]\n" +
6445 			"        [pc: 16, full, stack: {}, locals: {int, int, int}]\n" +
6446 			"        [pc: 25, full, stack: {}, locals: {int, _, int}]\n";
6447 		checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput);
6448 	}
6449 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=279183
test045()6450 	public void test045() throws Exception {
6451 		this.runConformTest(
6452 			new String[] {
6453 				"X.java",
6454 				"public class X {\n" +
6455 				"	public static void main(String args[]) {\n" +
6456 				"		int i;\n" +
6457 				"		do {\n" +
6458 				"		} while ((i = 2) < 0);\n" +
6459 				"		if (i != 2) {\n" +
6460 				"			System.out.println(\"FAILED\");\n" +
6461 				"		} else {\n" +
6462 				"			System.out.println(\"SUCCESS\");\n" +
6463 				"		}\n" +
6464 				"	}\n" +
6465 				"}",
6466 			},
6467 		"SUCCESS");
6468 
6469 		String expectedOutput =
6470 			"  // Method descriptor #15 ([Ljava/lang/String;)V\n" +
6471 			"  // Stack: 2, Locals: 2\n" +
6472 			"  public static void main(java.lang.String[] args);\n" +
6473 			"     0  iconst_2\n" +
6474 			"     1  dup\n" +
6475 			"     2  istore_1 [i]\n" +
6476 			"     3  iflt 0\n" +
6477 			"     6  iload_1 [i]\n" +
6478 			"     7  iconst_2\n" +
6479 			"     8  if_icmpeq 22\n" +
6480 			"    11  getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
6481 			"    14  ldc <String \"FAILED\"> [22]\n" +
6482 			"    16  invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" +
6483 			"    19  goto 30\n" +
6484 			"    22  getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
6485 			"    25  ldc <String \"SUCCESS\"> [30]\n" +
6486 			"    27  invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" +
6487 			"    30  return\n" +
6488 			"      Line numbers:\n" +
6489 			"        [pc: 0, line: 5]\n" +
6490 			"        [pc: 3, line: 4]\n" +
6491 			"        [pc: 6, line: 6]\n" +
6492 			"        [pc: 11, line: 7]\n" +
6493 			"        [pc: 19, line: 8]\n" +
6494 			"        [pc: 22, line: 9]\n" +
6495 			"        [pc: 30, line: 11]\n" +
6496 			"      Local variable table:\n" +
6497 			"        [pc: 0, pc: 31] local: args index: 0 type: java.lang.String[]\n" +
6498 			"        [pc: 3, pc: 31] local: i index: 1 type: int\n" +
6499 			"      Stack map table: number of frames 3\n" +
6500 			"        [pc: 0, same]\n" +
6501 			"        [pc: 22, append: {int}]\n" +
6502 			"        [pc: 30, same]\n";
6503 		checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput);
6504 	}
6505 	// 298250
test046()6506 	public void test046() {
6507 		Map customOptions = getCompilerOptions();
6508 		customOptions.put(JavaCore.COMPILER_PB_UNUSED_PRIVATE_MEMBER, JavaCore.IGNORE);
6509 		this.runNegativeTest(
6510 			new String[] {
6511 				"X.java",
6512 				"public class X {\n" +
6513 				"	class E1 extends RuntimeException {\n" +
6514 				"		private static final long serialVersionUID = 1L;\n" +
6515 				"	}\n" +
6516 				"	static Object bar() {\n" +
6517 				"		return new Object() {\n" +
6518 				"			public void foo() {\n" +
6519 				"				if (condition())\n" +
6520 				"					throw new E1();\n" +
6521 				"			}\n" +
6522 				"		};\n" +
6523 				"	}\n" +
6524 				"	static boolean condition() {\n" +
6525 				"		return false;\n" +
6526 				"	}\n" +
6527 				"	public static void main(String[] args) {\n" +
6528 				"	}\n" +
6529 				"}\n" +
6530 				"",
6531 			},
6532 			"----------\n" +
6533 			"1. ERROR in X.java (at line 9)\n" +
6534 			"	throw new E1();\n" +
6535 			"	      ^^^^^^^^\n" +
6536 			"No enclosing instance of type X is accessible. Must qualify the allocation with an enclosing instance of type X (e.g. x.new A() where x is an instance of X).\n" +
6537 			"----------\n",
6538 			null,
6539 			true,
6540 			customOptions);
6541 	}
6542 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=324848
test047()6543 	public void test047() {
6544 		this.runNegativeTest(
6545 			new String[] {
6546 				"X.java",
6547 				"public class X {\n" +
6548 				"	public static void test() {\n" +
6549 				"		final boolean x = true;\n" +
6550 				"		new Runnable() {\n" +
6551 				"			@Override\n" +
6552 				"			public void run() {\n" +
6553 				"				synchronized (X.this) {\n" +
6554 				"					System.out.println(x);\n" +
6555 				"				}\n" +
6556 				"			}\n" +
6557 				"		};\n" +
6558 				"	}\n" +
6559 				"}"
6560 			},
6561 			"----------\n" +
6562 			"1. ERROR in X.java (at line 7)\n" +
6563 			"	synchronized (X.this) {\n" +
6564 			"	              ^^^^^^\n" +
6565 			"No enclosing instance of the type X is accessible in scope\n" +
6566 			"----------\n");
6567 	}
6568 
6569 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=351653
test048()6570 	public void test048() {
6571 		this.runConformTest(
6572 			new String[] {
6573 				"X.java",
6574 				"public class X {\n" +
6575 				"    public static void main(String[] p) {\n" +
6576 				"        int i;\n" +
6577 				"        try {\n" +
6578 				"          if (p == null || p == null)\n" +
6579 				"            return;\n" +
6580 				"          i = 0;\n" +
6581 				"        } finally {\n" +
6582 				"            i = 0;\n" +
6583 				"        }\n" +
6584 				"    }\n" +
6585 				"}\n"
6586 			},
6587 			"");
6588 	}
6589 	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=351653
test049()6590 	public void test049() {
6591 		this.runConformTest(
6592 			new String[] {
6593 				"X.java",
6594 				"import java.io.IOException;\n" +
6595 				"import java.io.InputStream;\n" +
6596 				"\n" +
6597 				"public class X implements Runnable {\n" +
6598 				"\n" +
6599 				"	private boolean contentEquals(final String src, final String tar)\n" +
6600 				"			throws IOException {\n" +
6601 				"		if (src == null && tar == null) {\n" +
6602 				"			return true;\n" +
6603 				"		}\n" +
6604 				"		if (!isFile(src) || !isFile(tar))\n" +
6605 				"			throw new IOException(\"cannot compare non-files\");\n" +
6606 				"		if (size(src) != size(tar))\n" +
6607 				"			return false;\n" +
6608 				"		final byte[] baSrc = new byte[8192];\n" +
6609 				"		final byte[] baTar = new byte[baSrc.length];\n" +
6610 				"		int lrSrc;\n" +
6611 				"		int lrTar;\n" +
6612 				"		InputStream isSrc = null;\n" +
6613 				"		InputStream isTar = null;\n" +
6614 				"		try {\n" +
6615 				"			isSrc = newInputStream(src);\n" +
6616 				"			if (isSrc == null)\n" +
6617 				"				return false;\n" +
6618 				"			isTar = newInputStream(tar);\n" +
6619 				"			if (isTar == null)\n" +
6620 				"				return false;\n" +
6621 				"			do {\n" +
6622 				"				lrSrc = isSrc.read(baSrc);\n" +
6623 				"				lrTar = isTar.read(baTar);\n" +
6624 				"				if (lrSrc != lrTar)\n" +
6625 				"					return false;\n" +
6626 				"				for (int i = 0; i < lrSrc; i++)\n" +
6627 				"					if (baSrc[i] != baTar[i])\n" +
6628 				"						return false;\n" +
6629 				"			} while ((lrSrc >= 0) && (lrSrc == lrTar));\n" +
6630 				"		} finally {\n" +
6631 				"			try {\n" +
6632 				"				close(isSrc);\n" +
6633 				"			} finally {\n" +
6634 				"				close(isTar);\n" +
6635 				"			}\n" +
6636 				"		}\n" +
6637 				"		return true;\n" +
6638 				"	}\n" +
6639 				"	private void close(final InputStream isSrc) {\n" +
6640 				"	}\n" +
6641 				"	private boolean isFile(final String src) {\n" +
6642 				"		return false;\n" +
6643 				"	}\n" +
6644 				"	public void run() {\n" +
6645 				"		try {\n" +
6646 				"			System.out.println(contentEquals(null, null));\n" +
6647 				"		} catch (final IOException e) {\n" +
6648 				"			e.printStackTrace();\n" +
6649 				"		}\n" +
6650 				"	}\n" +
6651 				"	static InputStream newInputStream(String path) {\n" +
6652 				"		return null;\n" +
6653 				"	}\n" +
6654 				"	static int size(String path) {\n" +
6655 				"		return 0;\n" +
6656 				"	}\n" +
6657 				"	public static void main(final String[] args) {\n" +
6658 				"		new X().run();\n" +
6659 				"	}\n" +
6660 				"}"
6661 			},
6662 			"true");
6663 	}
6664 	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=352145
test050()6665 	public void test050() {
6666 		this.runConformTest(
6667 			new String[] {
6668 				"X.java",
6669 				"import java.io.File;\n" +
6670 				"import java.io.FileFilter;\n" +
6671 				"import java.io.FileNotFoundException;\n" +
6672 				"import java.io.IOException;\n" +
6673 				"import java.util.ArrayList;\n" +
6674 				"import java.util.List;\n" +
6675 				"\n" +
6676 				"public class X {\n" +
6677 				"\n" +
6678 				"	public static final List<File> copyDir(List<File> lf,\n" +
6679 				"			final boolean overwrite, final boolean recursive,\n" +
6680 				"			final boolean returnSrc, final File src, final File tar,\n" +
6681 				"			final FileFilter filter) throws IOException {\n" +
6682 				"		if (!src.isDirectory())\n" +
6683 				"			throw new FileNotFoundException(\"not a directory: \" + src);\n" +
6684 				"		if (!tar.isDirectory())\n" +
6685 				"			throw new FileNotFoundException(\"not a directory: \" + tar);\n" +
6686 				"		final File[] fa = src.listFiles();\n" +
6687 				"		if (fa == null)\n" +
6688 				"			throw new FileNotFoundException(\"directory not accessible: \" + src);\n" +
6689 				"		if (lf == null)\n" +
6690 				"			lf = new ArrayList<File>(fa.length);\n" +
6691 				"		for (final File f : fa) {\n" +
6692 				"			final File right = new File(tar, f.getName());\n" +
6693 				"			if (f.isDirectory()) {\n" +
6694 				"				if (recursive && filter.accept(f)) {\n" +
6695 				"					if (!right.exists())\n" +
6696 				"						right.mkdir();\n" +
6697 				"					copyDir(lf, overwrite, recursive, returnSrc, f, right,\n" +
6698 				"							filter);\n" +
6699 				"				}\n" +
6700 				"			} else {\n" +
6701 				"				if (overwrite || (!right.exists() && filter.accept(f))) {\n" +
6702 				"					lf.add(returnSrc ? f : right);\n" +
6703 				"				}\n" +
6704 				"			}\n" +
6705 				"		}\n" +
6706 				"		return lf;\n" +
6707 				"	}\n" +
6708 				"\n" +
6709 				"	public static void main(final String[] args) {\n" +
6710 				"		System.out.println(\"SUCCESS\");\n" +
6711 				"	}\n" +
6712 				"\n" +
6713 				"}"
6714 			},
6715 			"SUCCESS");
6716 	}
6717 	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=352145
test051()6718 	public void test051() {
6719 		this.runConformTest(
6720 			new String[] {
6721 				"X.java",
6722 				"import java.io.File;\n" +
6723 				"import java.io.IOException;\n" +
6724 				"import java.util.List;\n" +
6725 				"\n" +
6726 				"public class X {\n" +
6727 				"\n" +
6728 				"	public static final List<File> copyDir(int j, List<File> lf,\n" +
6729 				"			final boolean returnSrc, final File[] fa) throws IOException {\n" +
6730 				"		if (lf == null)\n" +
6731 				"			lf = null;\n" +
6732 				"		for (int i = 0, max = fa.length; i < max; i++) {\n" +
6733 				"			final File f = fa[i];\n" +
6734 				"			final File right = new File(f.getName());\n" +
6735 				"			if (f.isDirectory()) {\n" +
6736 				"			} else {\n" +
6737 				"				lf.add(returnSrc ? f : right);\n" +
6738 				"			}\n" +
6739 				"		}\n" +
6740 				"		return lf;\n" +
6741 				"	}\n" +
6742 				"\n" +
6743 				"	public static void main(final String[] args) {\n" +
6744 				"		System.out.println(\"SUCCESS\");\n" +
6745 				"	}\n" +
6746 				"\n" +
6747 				"}"
6748 			},
6749 			"SUCCESS");
6750 	}
test052()6751 	public void test052() throws Exception {
6752 		this.runConformTest(
6753 			new String[] {
6754 				"X.java",
6755 				"public class X {\n" +
6756 				"	X(int i) {}\n" +
6757 				"	void foo() {}\n" +
6758 				"	public static void main(String[] args) {\n" +
6759 				"		new X(args.length == 2 ? 1 : 2).foo();\n" +
6760 				"		System.out.println(\"SUCCESS\");\n" +
6761 				"	}\n" +
6762 				"}",
6763 			},
6764 			"SUCCESS");
6765 	}
6766 	// 352665
test053()6767 	public void test053() {
6768 		Map customOptions = getCompilerOptions();
6769 		customOptions.put(JavaCore.COMPILER_PB_UNUSED_PRIVATE_MEMBER, JavaCore.IGNORE);
6770 		customOptions.put(JavaCore.COMPILER_PB_SYNTHETIC_ACCESS_EMULATION, JavaCore.IGNORE);
6771 		this.runNegativeTest(
6772 			new String[] {
6773 				"X.java",
6774 				"public class X {\n" +
6775 				"	static {\n" +
6776 				"		for(int i = 0; i < 10; i++){\n" +
6777 				"			A a = new A();\n" +
6778 				"			a.foo();\n" +
6779 				"		}\n" +
6780 				"	}\n" +
6781 				"	private class A {\n" +
6782 				"		private A() {\n" +
6783 				"		}\n" +
6784 				"		void foo() {}\n" +
6785 				"	}\n" +
6786 				"}",
6787 			},
6788 			"----------\n" +
6789 			"1. ERROR in X.java (at line 4)\n" +
6790 			"	A a = new A();\n" +
6791 			"	      ^^^^^^^\n" +
6792 			"No enclosing instance of type X is accessible. Must qualify the allocation with an enclosing instance of type X (e.g. x.new A() where x is an instance of X).\n" +
6793 			"----------\n",
6794 			null,
6795 			true,
6796 			customOptions);
6797 	}
6798 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=354052
test054()6799 	public void test054() throws Exception {
6800 		this.runConformTest(
6801 			new String[] {
6802 				"X.java",
6803 				"public class X {\n" +
6804 				"public static void foo() {\n" +
6805 			    "     X z;\n" +
6806 			    "     while ((z = getObject()) != null) {\n" +
6807 			    "         z.bar();\n" +
6808 			    "     }\n" +
6809 			    "	  System.out.println(\"SUCCESS\");\n" +
6810 			    " }\n" +
6811 			    " public void bar() {}\n" +
6812 			    " public static X getObject() {\n" +
6813 			    "     return null;\n" +
6814 			    " }\n" +
6815 				"   public static void main(String[] args) {\n"+
6816 				"       new X().foo();\n"+
6817 				"   }\n"+
6818 				"}",
6819 			},
6820 			"SUCCESS");
6821 	}
6822 
6823 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=359495
testBug359495a()6824 	public void testBug359495a() throws Exception {
6825 		this.runConformTest(
6826 				new String[] {
6827 					"X.java",
6828 					"import java.util.List;\n" +
6829 					"import java.util.concurrent.locks.Lock;\n" +
6830 					"import java.util.Arrays;\n" +
6831 					"import java.util.concurrent.locks.ReentrantLock;\n" +
6832 					"public class X {\n" +
6833 					"	public static void main(String[] args) {\n" +
6834 					"		final Lock lock = new ReentrantLock();\n" +
6835 					"		final List<String> strings = Arrays.asList(args);\n" +
6836 					"		lock.lock();\n" +
6837 					"		try{\n" +
6838 					"			for (final String string:strings){\n" +
6839 					"				return;\n" +
6840 					"			}\n" +
6841 					"			return;\n" +
6842 					"		} finally {\n" +
6843 					"			lock.unlock();\n" +
6844 					"		}" +
6845 					"	}\n" +
6846 					"}",
6847 				},
6848 				"");
6849 
6850 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
6851 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
6852 			String actualOutput =
6853 				disassembler.disassemble(
6854 					classFileBytes,
6855 					"\n",
6856 					ClassFileBytesDisassembler.DETAILED);
6857 
6858 			String expectedOutput =
6859 					"  // Method descriptor #15 ([Ljava/lang/String;)V\n" +
6860 					"  // Stack: 2, Locals: 6\n" +
6861 					"  public static void main(java.lang.String[] args);\n" +
6862 					"     0  new java.util.concurrent.locks.ReentrantLock [16]\n" +
6863 					"     3  dup\n" +
6864 					"     4  invokespecial java.util.concurrent.locks.ReentrantLock() [18]\n" +
6865 					"     7  astore_1 [lock]\n" +
6866 					"     8  aload_0 [args]\n" +
6867 					"     9  invokestatic java.util.Arrays.asList(java.lang.Object[]) : java.util.List [19]\n" +
6868 					"    12  astore_2 [strings]\n" +
6869 					"    13  aload_1 [lock]\n" +
6870 					"    14  invokeinterface java.util.concurrent.locks.Lock.lock() : void [25] [nargs: 1]\n" +
6871 					"    19  aload_2 [strings]\n" +
6872 					"    20  invokeinterface java.util.List.iterator() : java.util.Iterator [30] [nargs: 1]\n" +
6873 					"    25  astore 4\n" +
6874 					"    27  aload 4\n" +
6875 					"    29  invokeinterface java.util.Iterator.hasNext() : boolean [36] [nargs: 1]\n" +
6876 					"    34  ifeq 55\n" +
6877 					"    37  aload 4\n" +
6878 					"    39  invokeinterface java.util.Iterator.next() : java.lang.Object [42] [nargs: 1]\n" +
6879 					"    44  checkcast java.lang.String [46]\n" +
6880 					"    47  astore_3 [string]\n" +
6881 					"    48  aload_1 [lock]\n" +
6882 					"    49  invokeinterface java.util.concurrent.locks.Lock.unlock() : void [48] [nargs: 1]\n" +
6883 					"    54  return\n" +
6884 					"    55  aload_1 [lock]\n" +
6885 					"    56  invokeinterface java.util.concurrent.locks.Lock.unlock() : void [48] [nargs: 1]\n" +
6886 					"    61  return\n" +
6887 					"    62  astore 5\n" +
6888 					"    64  aload_1 [lock]\n" +
6889 					"    65  invokeinterface java.util.concurrent.locks.Lock.unlock() : void [48] [nargs: 1]\n" +
6890 					"    70  aload 5\n" +
6891 					"    72  athrow\n" +
6892 					"      Exception Table:\n" +
6893 					"        [pc: 19, pc: 48] -> 62 when : any\n" +
6894 					"      Line numbers:\n" +
6895 					"        [pc: 0, line: 7]\n" +
6896 					"        [pc: 8, line: 8]\n" +
6897 					"        [pc: 13, line: 9]\n" +
6898 					"        [pc: 19, line: 11]\n" +
6899 					"        [pc: 48, line: 16]\n" +
6900 					"        [pc: 54, line: 12]\n" +
6901 					"        [pc: 55, line: 16]\n" +
6902 					"        [pc: 61, line: 14]\n" +
6903 					"        [pc: 62, line: 15]\n" +
6904 					"        [pc: 64, line: 16]\n" +
6905 					"        [pc: 70, line: 17]\n" +
6906 					"      Local variable table:\n" +
6907 					"        [pc: 0, pc: 73] local: args index: 0 type: java.lang.String[]\n" +
6908 					"        [pc: 8, pc: 73] local: lock index: 1 type: java.util.concurrent.locks.Lock\n" +
6909 					"        [pc: 13, pc: 73] local: strings index: 2 type: java.util.List\n" +
6910 					"        [pc: 48, pc: 55] local: string index: 3 type: java.lang.String\n" +
6911 					"      Local variable type table:\n" +
6912 					"        [pc: 13, pc: 73] local: strings index: 2 type: java.util.List<java.lang.String>\n" +
6913 					"      Stack map table: number of frames 2\n" +
6914 					"        [pc: 55, append: {java.util.concurrent.locks.Lock, java.util.List}]\n" +
6915 					"        [pc: 62, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" ;
6916 
6917 			int index = actualOutput.indexOf(expectedOutput);
6918 			if (index == -1 || expectedOutput.length() == 0) {
6919 				System.out.println(Util.displayString(actualOutput, 2));
6920 			}
6921 			if (index == -1) {
6922 				assertEquals("Wrong contents", expectedOutput, actualOutput);
6923 			}
6924 	}
6925 
6926 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=359495
testBug359495b()6927 	public void testBug359495b() throws Exception {
6928 		this.runConformTest(
6929 				new String[] {
6930 					"X.java",
6931 					"import java.util.List;\n" +
6932 					"import java.util.Iterator;\n" +
6933 					"import java.util.concurrent.locks.Lock;\n" +
6934 					"import java.util.Arrays;\n" +
6935 					"import java.util.concurrent.locks.ReentrantLock;\n" +
6936 					"public class X {\n" +
6937 					"	public static void main(String[] args) {\n" +
6938 					"		final Lock lock = new ReentrantLock();\n" +
6939 					"		final List<String> strings = Arrays.asList(args);\n" +
6940 					"		lock.lock();\n" +
6941 					"		try{\n" +
6942 					"			for (Iterator i = strings.iterator(); i.hasNext();){\n" +
6943 					"				return;\n" +
6944 					"			}\n" +
6945 					"			return;\n" +
6946 					"		} finally {\n" +
6947 					"			lock.unlock();\n" +
6948 					"		}" +
6949 					"	}\n" +
6950 					"}",
6951 				},
6952 				"");
6953 
6954 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
6955 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
6956 			String actualOutput =
6957 				disassembler.disassemble(
6958 					classFileBytes,
6959 					"\n",
6960 					ClassFileBytesDisassembler.DETAILED);
6961 
6962 			String expectedOutput =
6963 					"  // Method descriptor #15 ([Ljava/lang/String;)V\n" +
6964 					"  // Stack: 2, Locals: 5\n" +
6965 					"  public static void main(java.lang.String[] args);\n" +
6966 					"     0  new java.util.concurrent.locks.ReentrantLock [16]\n" +
6967 					"     3  dup\n" +
6968 					"     4  invokespecial java.util.concurrent.locks.ReentrantLock() [18]\n" +
6969 					"     7  astore_1 [lock]\n" +
6970 					"     8  aload_0 [args]\n" +
6971 					"     9  invokestatic java.util.Arrays.asList(java.lang.Object[]) : java.util.List [19]\n" +
6972 					"    12  astore_2 [strings]\n" +
6973 					"    13  aload_1 [lock]\n" +
6974 					"    14  invokeinterface java.util.concurrent.locks.Lock.lock() : void [25] [nargs: 1]\n" +
6975 					"    19  aload_2 [strings]\n" +
6976 					"    20  invokeinterface java.util.List.iterator() : java.util.Iterator [30] [nargs: 1]\n" +
6977 					"    25  astore_3 [i]\n" +
6978 					"    26  aload_3 [i]\n" +
6979 					"    27  invokeinterface java.util.Iterator.hasNext() : boolean [36] [nargs: 1]\n" +
6980 					"    32  ifeq 42\n" +
6981 					"    35  aload_1 [lock]\n" +
6982 					"    36  invokeinterface java.util.concurrent.locks.Lock.unlock() : void [42] [nargs: 1]\n" +
6983 					"    41  return\n" +
6984 					"    42  aload_1 [lock]\n" +
6985 					"    43  invokeinterface java.util.concurrent.locks.Lock.unlock() : void [42] [nargs: 1]\n" +
6986 					"    48  return\n" +
6987 					"    49  astore 4\n" +
6988 					"    51  aload_1 [lock]\n" +
6989 					"    52  invokeinterface java.util.concurrent.locks.Lock.unlock() : void [42] [nargs: 1]\n" +
6990 					"    57  aload 4\n" +
6991 					"    59  athrow\n" +
6992 					"      Exception Table:\n" +
6993 					"        [pc: 19, pc: 35] -> 49 when : any\n" +
6994 					"      Line numbers:\n" +
6995 					"        [pc: 0, line: 8]\n" +
6996 					"        [pc: 8, line: 9]\n" +
6997 					"        [pc: 13, line: 10]\n" +
6998 					"        [pc: 19, line: 12]\n" +
6999 					"        [pc: 35, line: 17]\n" +
7000 					"        [pc: 41, line: 13]\n" +
7001 					"        [pc: 42, line: 17]\n" +
7002 					"        [pc: 48, line: 15]\n" +
7003 					"        [pc: 49, line: 16]\n" +
7004 					"        [pc: 51, line: 17]\n" +
7005 					"        [pc: 57, line: 18]\n" +
7006 					"      Local variable table:\n" +
7007 					"        [pc: 0, pc: 60] local: args index: 0 type: java.lang.String[]\n" +
7008 					"        [pc: 8, pc: 60] local: lock index: 1 type: java.util.concurrent.locks.Lock\n" +
7009 					"        [pc: 13, pc: 60] local: strings index: 2 type: java.util.List\n" +
7010 					"        [pc: 26, pc: 42] local: i index: 3 type: java.util.Iterator\n" +
7011 					"      Local variable type table:\n" +
7012 					"        [pc: 13, pc: 60] local: strings index: 2 type: java.util.List<java.lang.String>\n" +
7013 					"      Stack map table: number of frames 2\n" +
7014 					"        [pc: 42, append: {java.util.concurrent.locks.Lock, java.util.List}]\n" +
7015 					"        [pc: 49, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n";
7016 
7017 			int index = actualOutput.indexOf(expectedOutput);
7018 			if (index == -1 || expectedOutput.length() == 0) {
7019 				System.out.println(Util.displayString(actualOutput, 2));
7020 			}
7021 			if (index == -1) {
7022 				assertEquals("Wrong contents", expectedOutput, actualOutput);
7023 			}
7024 	}
7025 
7026 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=362591
test055()7027 	public void test055() throws Exception {
7028 		this.runConformTest(
7029 				new String[] {
7030 					"X.java",
7031 					"public class X {\n" +
7032 					"	public static void main(String[] args) {\n" +
7033 					"		testError(3, 4, \"d\");\n" +
7034 					"	}\n" +
7035 					"	public static void testError(Number n0, Number n1, String refValue) {\n" +
7036 					"		Number result = refValue.equals(\"ttt\") ? n0 : (n1 == null ? null : n1.intValue());\n" +
7037 					"		System.out.println(String.valueOf(result));\n" +
7038 					"	}\n" +
7039 					"}",
7040 				},
7041 				"4");
7042 
7043 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
7044 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
7045 			String actualOutput =
7046 				disassembler.disassemble(
7047 					classFileBytes,
7048 					"\n",
7049 					ClassFileBytesDisassembler.DETAILED);
7050 
7051 			String expectedOutput =
7052 				"  // Method descriptor #27 (Ljava/lang/Number;Ljava/lang/Number;Ljava/lang/String;)V\n" +
7053 				"  // Stack: 2, Locals: 4\n" +
7054 				"  public static void testError(java.lang.Number n0, java.lang.Number n1, java.lang.String refValue);\n" +
7055 				"     0  aload_2 [refValue]\n" +
7056 				"     1  ldc <String \"ttt\"> [30]\n" +
7057 				"     3  invokevirtual java.lang.String.equals(java.lang.Object) : boolean [32]\n" +
7058 				"     6  ifeq 13\n" +
7059 				"     9  aload_0 [n0]\n" +
7060 				"    10  goto 28\n" +
7061 				"    13  aload_1 [n1]\n" +
7062 				"    14  ifnonnull 21\n" +
7063 				"    17  aconst_null\n" +
7064 				"    18  goto 28\n" +
7065 				"    21  aload_1 [n1]\n" +
7066 				"    22  invokevirtual java.lang.Number.intValue() : int [38]\n" +
7067 				"    25  invokestatic java.lang.Integer.valueOf(int) : java.lang.Integer [16]\n" +
7068 				"    28  astore_3 [result]\n" +
7069 				"    29  getstatic java.lang.System.out : java.io.PrintStream [44]\n" +
7070 				"    32  aload_3 [result]\n" +
7071 				"    33  invokestatic java.lang.String.valueOf(java.lang.Object) : java.lang.String [50]\n" +
7072 				"    36  invokevirtual java.io.PrintStream.println(java.lang.String) : void [53]\n" +
7073 				"    39  return\n" +
7074 				"      Line numbers:\n" +
7075 				"        [pc: 0, line: 6]\n" +
7076 				"        [pc: 29, line: 7]\n" +
7077 				"        [pc: 39, line: 8]\n" +
7078 				"      Local variable table:\n" +
7079 				"        [pc: 0, pc: 40] local: n0 index: 0 type: java.lang.Number\n" +
7080 				"        [pc: 0, pc: 40] local: n1 index: 1 type: java.lang.Number\n" +
7081 				"        [pc: 0, pc: 40] local: refValue index: 2 type: java.lang.String\n" +
7082 				"        [pc: 29, pc: 40] local: result index: 3 type: java.lang.Number\n" +
7083 				"      Stack map table: number of frames 3\n" +
7084 				"        [pc: 13, same]\n" +
7085 				"        [pc: 21, same]\n" +
7086 				"        [pc: 28, same_locals_1_stack_item, stack: {java.lang.Number}]\n";
7087 
7088 			int index = actualOutput.indexOf(expectedOutput);
7089 			if (index == -1 || expectedOutput.length() == 0) {
7090 				System.out.println(Util.displayString(actualOutput, 2));
7091 			}
7092 			if (index == -1) {
7093 				assertEquals("Wrong contents", expectedOutput, actualOutput);
7094 			}
7095 	}
7096 
test055a()7097 	public void test055a() throws Exception {
7098 		this.runConformTest(
7099 				new String[] {
7100 					"X.java",
7101 					"public class X {\n" +
7102 					"    public static void main(String[] args) {\n" +
7103 					"        Object o = args != null ? args : (args == null ? null : args.length);\n" +
7104 					"    }\n" +
7105 					"}\n",
7106 				},
7107 				"");
7108 	}
7109 	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=366999
test056()7110 	public void test056() throws Exception {
7111 		if (this.complianceLevel < ClassFileConstants.JDK1_7) return;
7112 		this.runConformTest(
7113 				new String[] {
7114 					"X.java",
7115 					"import java.io.BufferedReader;\n" +
7116 					"import java.io.Closeable;\n" +
7117 					"import java.io.File;\n" +
7118 					"import java.io.FileReader;\n" +
7119 					"import java.io.IOException;\n" +
7120 					"\n" +
7121 					"public class X {\n" +
7122 					"\n" +
7123 					"	static class C implements Closeable {\n" +
7124 					"		@Override\n" +
7125 					"		public void close() throws IOException {\n" +
7126 					"			//\n" +
7127 					"		}\n" +
7128 					"	}\n" +
7129 					"\n" +
7130 					"	int run() throws IOException {\n" +
7131 					"		int lcnt = 0;\n" +
7132 					"		try (C c = new C();) {\n" +
7133 					"			try (final BufferedReader br = new BufferedReader(new FileReader(\n" +
7134 					"					new File(\"logging.properties\")))) {\n" +
7135 					"				String s = null;\n" +
7136 					"				while ((s = br.readLine()) != null)\n" +
7137 					"					lcnt++;\n" +
7138 					"				return lcnt;\n" +
7139 					"			}\n" +
7140 					"		} finally {\n" +
7141 					"			System.out.println(\"read \" + lcnt + \" lines\");\n" +
7142 					"		}\n" +
7143 					"	}\n" +
7144 					"\n" +
7145 					"	public static void main(final String[] args) throws IOException {\n" +
7146 					"		System.out.println(\"SUCCESS\");\n" +
7147 					"	}\n" +
7148 					"}",
7149 				},
7150 				"SUCCESS");
7151 	}
7152 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
test057()7153 	public void test057() throws Exception {
7154 		this.runConformTest(
7155 				new String[] {
7156 					"X.java",
7157 					"public class X {\n" +
7158 					"    public void run() {\n" +
7159 					"        String s;\n" +
7160 					"        label1: do {\n" +
7161 					"            for (;;) {\n" +
7162 					"                s = \"\";\n" +
7163 					"                if (s == null) \n" +
7164 					"                    continue label1;\n" +
7165 					"            }\n" +
7166 					"        } while (s != null);\n" +
7167 					"}\n" +
7168 					"    public static void main(String [] args) {\n" +
7169 					"		System.out.println(\"SUCCESS\");\n" +
7170 					"    }\n" +
7171 					"}\n",
7172 				},
7173 				"SUCCESS");
7174 	}
7175 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
test058()7176 	public void test058() throws Exception {
7177 		this.runConformTest(
7178 				new String[] {
7179 					"X.java",
7180 					"public class X {\n" +
7181 					"    public void run() {\n" +
7182 					"        String s;\n" +
7183 					"        label1: do {\n" +
7184 					"            for (;true;) {\n" +
7185 					"                s = \"\";\n" +
7186 					"                if (s == null) \n" +
7187 					"                    continue label1;\n" +
7188 					"            }\n" +
7189 					"        } while (s != null);\n" +
7190 					"}\n" +
7191 					"    public static void main(String [] args) {\n" +
7192 					"		System.out.println(\"SUCCESS\");\n" +
7193 					"    }\n" +
7194 					"}\n"				},
7195 				"SUCCESS");
7196 	}
7197 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
test059()7198 	public void test059() throws Exception {
7199 		this.runNegativeTest(
7200 				new String[] {
7201 					"X.java",
7202 					"public class X {\n" +
7203 					"    public void run() {\n" +
7204 					"        String s;\n" +
7205 					"        label1: do {\n" +
7206 					"            for (;false;) {\n" +
7207 					"                s = \"\";\n" +
7208 					"                if (s == null) \n" +
7209 					"                    continue label1;\n" +
7210 					"            }\n" +
7211 					"        } while (s != null);\n" +
7212 					"}\n" +
7213 					"    public static void main(String [] args) {\n" +
7214 					"		System.out.println(\"SUCCESS\");\n" +
7215 					"    }\n" +
7216 					"}\n"				},
7217 					"----------\n" +
7218 					"1. WARNING in X.java (at line 4)\n" +
7219 					"	label1: do {\n" +
7220 					"	^^^^^^\n" +
7221 					"The label label1 is never explicitly referenced\n" +
7222 					"----------\n" +
7223 					"2. ERROR in X.java (at line 5)\n" +
7224 					"	for (;false;) {\n" +
7225 					"                s = \"\";\n" +
7226 					"                if (s == null) \n" +
7227 					"                    continue label1;\n" +
7228 					"            }\n" +
7229 					"	              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
7230 					"Unreachable code\n" +
7231 					"----------\n" +
7232 					"3. ERROR in X.java (at line 10)\n" +
7233 					"	} while (s != null);\n" +
7234 					"	         ^\n" +
7235 					"The local variable s may not have been initialized\n" +
7236 						"----------\n");
7237 	}
7238 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
test060()7239 	public void test060() throws Exception {
7240 		this.runConformTest(
7241 				new String[] {
7242 					"X.java",
7243 					"public class X {\n" +
7244 					"    public void run() {\n" +
7245 					"        String s;\n" +
7246 					"        label1: do {\n" +
7247 					"            for (; 5 < 10;) {\n" +
7248 					"                s = \"\";\n" +
7249 					"                if (s == null) \n" +
7250 					"                    continue label1;\n" +
7251 					"            }\n" +
7252 					"        } while (s != null);\n" +
7253 					"}\n" +
7254 					"    public static void main(String [] args) {\n" +
7255 					"		System.out.println(\"SUCCESS\");\n" +
7256 					"    }\n" +
7257 					"}\n"				},
7258 				"SUCCESS");
7259 	}
7260 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
test061()7261 	public void test061() throws Exception {
7262 		this.runNegativeTest(
7263 				new String[] {
7264 					"X.java",
7265 					"public class X {\n" +
7266 					"    public void run() {\n" +
7267 					"        int five = 5, ten = 10;\n" +
7268 					"        String s;\n" +
7269 					"        label1: do {\n" +
7270 					"            for (; five < ten;) {\n" +
7271 					"                s = \"\";\n" +
7272 					"                if (s == null) \n" +
7273 					"                    continue label1;\n" +
7274 					"            }\n" +
7275 					"        } while (s != null);\n" +
7276 					"}\n" +
7277 					"    public static void main(String [] args) {\n" +
7278 					"		System.out.println(\"SUCCESS\");\n" +
7279 					"    }\n" +
7280 					"}\n"				},
7281 					"----------\n" +
7282 					"1. WARNING in X.java (at line 9)\n" +
7283 					"	continue label1;\n" +
7284 					"	^^^^^^^^^^^^^^^^\n" +
7285 					"Dead code\n" +
7286 					"----------\n" +
7287 					"2. ERROR in X.java (at line 11)\n" +
7288 					"	} while (s != null);\n" +
7289 					"	         ^\n" +
7290 					"The local variable s may not have been initialized\n" +
7291 					"----------\n");
7292 	}
7293 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
test062()7294 	public void test062() throws Exception {
7295 		this.runConformTest(
7296 			new String[] {
7297 				"X.java",
7298 				"public class X {\n" +
7299 				"    public void run() {\n" +
7300 				"        final int five = 5, ten = 10;\n" +
7301 				"        String s;\n" +
7302 				"        label1: do {\n" +
7303 				"            for (; five < ten;) {\n" +
7304 				"                s = \"\";\n" +
7305 				"                if (s == null) \n" +
7306 				"                    continue label1;\n" +
7307 				"            }\n" +
7308 				"        } while (s != null);\n" +
7309 				"}\n" +
7310 				"    public static void main(String [] args) {\n" +
7311 				"		System.out.println(\"SUCCESS\");\n" +
7312 				"    }\n" +
7313 				"}\n"				},
7314 			"SUCCESS");
7315 	}
7316 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
test063()7317 	public void test063() throws Exception {
7318 		this.runNegativeTest(
7319 			new String[] {
7320 				"X.java",
7321 				"public class X {\n" +
7322 				"    public void run() {\n" +
7323 				"        final int five = 5, ten = 10;\n" +
7324 				"        String s;\n" +
7325 				"        label1: do {\n" +
7326 				"            for (; five > ten;) {\n" +
7327 				"                s = \"\";\n" +
7328 				"                if (s == null) \n" +
7329 				"                    continue label1;\n" +
7330 				"            }\n" +
7331 				"        } while (s != null);\n" +
7332 				"}\n" +
7333 				"    public static void main(String [] args) {\n" +
7334 				"		System.out.println(\"SUCCESS\");\n" +
7335 				"    }\n" +
7336 				"}\n"				},
7337 				"----------\n" +
7338 				"1. WARNING in X.java (at line 5)\n" +
7339 				"	label1: do {\n" +
7340 				"	^^^^^^\n" +
7341 				"The label label1 is never explicitly referenced\n" +
7342 				"----------\n" +
7343 				"2. ERROR in X.java (at line 6)\n" +
7344 				"	for (; five > ten;) {\n" +
7345 				"                s = \"\";\n" +
7346 				"                if (s == null) \n" +
7347 				"                    continue label1;\n" +
7348 				"            }\n" +
7349 				"	                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
7350 				"Unreachable code\n" +
7351 				"----------\n" +
7352 				"3. ERROR in X.java (at line 11)\n" +
7353 				"	} while (s != null);\n" +
7354 				"	         ^\n" +
7355 				"The local variable s may not have been initialized\n" +
7356 				"----------\n");
7357 	}
7358 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
test064()7359 	public void test064() throws Exception {
7360 		this.runConformTest(
7361 				new String[] {
7362 					"X.java",
7363 					"public class X {\n" +
7364 					"    public void run() {\n" +
7365 					"        String s;\n" +
7366 					"        label1: do {\n" +
7367 					"            while (true) {\n" +
7368 					"                s = \"\";\n" +
7369 					"                if (s == null) \n" +
7370 					"                    continue label1;\n" +
7371 					"            }\n" +
7372 					"        } while (s != null);\n" +
7373 					"}\n" +
7374 					"    public static void main(String [] args) {\n" +
7375 					"		System.out.println(\"SUCCESS\");\n" +
7376 					"    }\n" +
7377 					"}\n",
7378 				},
7379 				"SUCCESS");
7380 	}
7381 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
test065()7382 	public void test065() throws Exception {
7383 		this.runNegativeTest(
7384 				new String[] {
7385 					"X.java",
7386 					"public class X {\n" +
7387 					"    public void run() {\n" +
7388 					"        String s;\n" +
7389 					"        label1: do {\n" +
7390 					"            while (false) {\n" +
7391 					"                s = \"\";\n" +
7392 					"                if (s == null) \n" +
7393 					"                    continue label1;\n" +
7394 					"            }\n" +
7395 					"        } while (s != null);\n" +
7396 					"}\n" +
7397 					"    public static void main(String [] args) {\n" +
7398 					"		System.out.println(\"SUCCESS\");\n" +
7399 					"    }\n" +
7400 					"}\n"				},
7401 					"----------\n" +
7402 					"1. WARNING in X.java (at line 4)\n" +
7403 					"	label1: do {\n" +
7404 					"	^^^^^^\n" +
7405 					"The label label1 is never explicitly referenced\n" +
7406 					"----------\n" +
7407 					"2. ERROR in X.java (at line 5)\n" +
7408 					"	while (false) {\n" +
7409 					"                s = \"\";\n" +
7410 					"                if (s == null) \n" +
7411 					"                    continue label1;\n" +
7412 					"            }\n" +
7413 					"	              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
7414 					"Unreachable code\n" +
7415 					"----------\n" +
7416 					"3. ERROR in X.java (at line 10)\n" +
7417 					"	} while (s != null);\n" +
7418 					"	         ^\n" +
7419 					"The local variable s may not have been initialized\n" +
7420 					"----------\n");
7421 	}
7422 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
test066()7423 	public void test066() throws Exception {
7424 		this.runConformTest(
7425 				new String[] {
7426 					"X.java",
7427 					"public class X {\n" +
7428 					"    public void run() {\n" +
7429 					"        String s;\n" +
7430 					"        label1: do {\n" +
7431 					"            while(5 < 10) {\n" +
7432 					"                s = \"\";\n" +
7433 					"                if (s == null) \n" +
7434 					"                    continue label1;\n" +
7435 					"            }\n" +
7436 					"        } while (s != null);\n" +
7437 					"}\n" +
7438 					"    public static void main(String [] args) {\n" +
7439 					"		System.out.println(\"SUCCESS\");\n" +
7440 					"    }\n" +
7441 					"}\n"				},
7442 				"SUCCESS");
7443 	}
7444 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
test067()7445 	public void test067() throws Exception {
7446 		this.runNegativeTest(
7447 				new String[] {
7448 					"X.java",
7449 					"public class X {\n" +
7450 					"    public void run() {\n" +
7451 					"        int five = 5, ten = 10;\n" +
7452 					"        String s;\n" +
7453 					"        label1: do {\n" +
7454 					"            while (five < ten) {\n" +
7455 					"                s = \"\";\n" +
7456 					"                if (s == null) \n" +
7457 					"                    continue label1;\n" +
7458 					"            }\n" +
7459 					"        } while (s != null);\n" +
7460 					"}\n" +
7461 					"    public static void main(String [] args) {\n" +
7462 					"		System.out.println(\"SUCCESS\");\n" +
7463 					"    }\n" +
7464 					"}\n"				},
7465 					"----------\n" +
7466 					"1. WARNING in X.java (at line 9)\n" +
7467 					"	continue label1;\n" +
7468 					"	^^^^^^^^^^^^^^^^\n" +
7469 					"Dead code\n" +
7470 					"----------\n" +
7471 					"2. ERROR in X.java (at line 11)\n" +
7472 					"	} while (s != null);\n" +
7473 					"	         ^\n" +
7474 					"The local variable s may not have been initialized\n" +
7475 					"----------\n");
7476 	}
7477 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
test068()7478 	public void test068() throws Exception {
7479 		this.runConformTest(
7480 			new String[] {
7481 				"X.java",
7482 				"public class X {\n" +
7483 				"    public void run() {\n" +
7484 				"        final int five = 5, ten = 10;\n" +
7485 				"        String s;\n" +
7486 				"        label1: do {\n" +
7487 				"            while (five < ten) {\n" +
7488 				"                s = \"\";\n" +
7489 				"                if (s == null) \n" +
7490 				"                    continue label1;\n" +
7491 				"            }\n" +
7492 				"        } while (s != null);\n" +
7493 				"}\n" +
7494 				"    public static void main(String [] args) {\n" +
7495 				"		System.out.println(\"SUCCESS\");\n" +
7496 				"    }\n" +
7497 				"}\n"				},
7498 			"SUCCESS");
7499 	}
7500 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
test069()7501 	public void test069() throws Exception {
7502 		this.runNegativeTest(
7503 			new String[] {
7504 				"X.java",
7505 				"public class X {\n" +
7506 				"    public void run() {\n" +
7507 				"        final int five = 5, ten = 10;\n" +
7508 				"        String s;\n" +
7509 				"        label1: do {\n" +
7510 				"            while (five > ten) {\n" +
7511 				"                s = \"\";\n" +
7512 				"                if (s == null) \n" +
7513 				"                    continue label1;\n" +
7514 				"            }\n" +
7515 				"        } while (s != null);\n" +
7516 				"}\n" +
7517 				"    public static void main(String [] args) {\n" +
7518 				"		System.out.println(\"SUCCESS\");\n" +
7519 				"    }\n" +
7520 				"}\n"				},
7521 				"----------\n" +
7522 				"1. WARNING in X.java (at line 5)\n" +
7523 				"	label1: do {\n" +
7524 				"	^^^^^^\n" +
7525 				"The label label1 is never explicitly referenced\n" +
7526 				"----------\n" +
7527 				"2. ERROR in X.java (at line 6)\n" +
7528 				"	while (five > ten) {\n" +
7529 				"                s = \"\";\n" +
7530 				"                if (s == null) \n" +
7531 				"                    continue label1;\n" +
7532 				"            }\n" +
7533 				"	                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" +
7534 				"Unreachable code\n" +
7535 				"----------\n" +
7536 				"3. ERROR in X.java (at line 11)\n" +
7537 				"	} while (s != null);\n" +
7538 				"	         ^\n" +
7539 				"The local variable s may not have been initialized\n" +
7540 				"----------\n");
7541 	}
7542 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
test070()7543 	public void test070() throws Exception {
7544 		this.runConformTest(
7545 			new String[] {
7546 				"X.java",
7547 				"import java.util.ArrayList;\n" +
7548 				"import java.util.Arrays;\n" +
7549 				"import java.util.Iterator;\n" +
7550 				"import java.util.List;\n" +
7551 				"import java.util.Properties;\n" +
7552 				"import org.w3c.dom.*;\n" +
7553 				"public class X extends Object {\n" +
7554 				"        public static void main(String [] args) {\n" +
7555 				"            System.out.println (\"SUCCESS\");\n" +
7556 				"        }\n" +
7557 				"	private static class Handler extends Object {\n" +
7558 				"		public int getStuff() {\n" +
7559 				"			return 1;\n" +
7560 				"		}\n" +
7561 				"		public void handle(Element element) {\n" +
7562 				"			Properties properties = new Properties();\n" +
7563 				"			NamedNodeMap atts = element.getAttributes();\n" +
7564 				"			if (atts != null) {\n" +
7565 				"				for (int a = 0; a < atts.getLength(); a++) {\n" +
7566 				"					Node att = atts.item(a);\n" +
7567 				"					String name = att.getNodeName();\n" +
7568 				"					String value = att.getNodeValue();\n" +
7569 				"					if (\"foo\".equals(name)) {\n" +
7570 				"						name = value;\n" +
7571 				"					} else {\n" +
7572 				"						if (!\"bar\".equals(name))\n" +
7573 				"							continue;\n" +
7574 				"						name = value;\n" +
7575 				"					}\n" +
7576 				"					properties.put(name, value);\n" +
7577 				"				}\n" +
7578 				"			}\n" +
7579 				"			label0: do {\n" +
7580 				"				Node node;\n" +
7581 				"				String nodeName;\n" +
7582 				"				label1: do {\n" +
7583 				"					for (Iterator i = (new ArrayList(1)).iterator(); i\n" +
7584 				"							.hasNext(); members.add(equals(node))) {\n" +
7585 				"						node = (Node) i.next();\n" +
7586 				"						nodeName = \"\" + equals(node.getNodeName());\n" +
7587 				"						if (!\"foo\".equals(nodeName))\n" +
7588 				"							continue label1;\n" +
7589 				"					}\n" +
7590 				"					break label0;\n" +
7591 				"				} while (!\"bar\".equals(nodeName));\n" +
7592 				"				Iterator i = (new ArrayList(1)).iterator();\n" +
7593 				"				while (i.hasNext()) {\n" +
7594 				"					Node n = (Node) i.next();\n" +
7595 				"					String name = toString() + n.getNodeName();\n" +
7596 				"					if (\"wtf\".equals(name)) {\n" +
7597 				"						String propertyName = (toString() + n.getAttributes()\n" +
7598 				"								.getNamedItem(\"broken\")).trim();\n" +
7599 				"						String value = toString() + n;\n" +
7600 				"						properties.put(propertyName, value);\n" +
7601 				"					}\n" +
7602 				"				}\n" +
7603 				"			} while (true);\n" +
7604 				"			propertiesBuilder.equals(properties);\n" +
7605 				"			builder.equals(propertiesBuilder.hashCode());\n" +
7606 				"			builder.equals(members);\n" +
7607 				"		}\n" +
7608 				"		private final Object c;\n" +
7609 				"		private Object builder;\n" +
7610 				"		private List members;\n" +
7611 				"		private Object propertiesBuilder;\n" +
7612 				"		public Handler(Object c) {\n" +
7613 				"			this.c = c;\n" +
7614 				"			builder = Arrays.asList(Object.class);\n" +
7615 				"			builder.equals(\"foo\");\n" +
7616 				"			builder.equals(\"bar\");\n" +
7617 				"			members = new ArrayList();\n" +
7618 				"			propertiesBuilder = Arrays.asList(Object.class);\n" +
7619 				"			Object beanDefinition = propertiesBuilder.toString();\n" +
7620 				"			Object holder = new String(\"stirng\");\n" +
7621 				"			Arrays.asList(holder, c.toString());\n" +
7622 				"		}\n" +
7623 				"	}\n" +
7624 				"	public X() {\n" +
7625 				"	}\n" +
7626 				"	protected Object parseInternal(Element element, Object c) {\n" +
7627 				"		Handler h = new Handler(c);\n" +
7628 				"		h.handle(element);\n" +
7629 				"		return h.getStuff();\n" +
7630 				"	}\n" +
7631 				"}\n"
7632 				},
7633 				"SUCCESS");
7634 	}
7635 
7636 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=380313
7637 	// Verify the generated code does not have same branch target for the 2 return statements
testBug380313()7638 	public void testBug380313() throws Exception {
7639 		this.runConformTest(
7640 				new String[] {
7641 						"X.java",
7642 						"public class X {\n" +
7643 						"public void foo() throws Exception {\n" +
7644 						"        int i = 1;\n" +
7645 						"        try {\n" +
7646 						"            if (i == 1) {\n" +
7647 						"                int n = bar();\n" +
7648 						"                if (n == 35)\n" +
7649 						"                   return;\n" +
7650 						"            } else {\n" +
7651 						"                throw new Exception();\n" +
7652 						"            }\n" +
7653 						"            if (i == 0)\n" +
7654 						"               return;\n" +
7655 						"        } finally {\n" +
7656 						"            bar();\n" +
7657 						"        }\n" +
7658 						"    }\n" +
7659 						"\n" +
7660 						"    private int bar() {\n" +
7661 						"        return 0;\n" +
7662 						"    }\n" +
7663 						"\n" +
7664 						"    public static void main(String[] args) {\n" +
7665 						"		System.out.println(\"SUCCESS\");\n" +
7666 						"    }\n" +
7667 						"}\n"
7668 				},
7669 				"SUCCESS");
7670 
7671 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
7672 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
7673 			String actualOutput =
7674 				disassembler.disassemble(
7675 					classFileBytes,
7676 					"\n",
7677 					ClassFileBytesDisassembler.DETAILED);
7678 
7679 			String xBarCall = isMinimumCompliant(ClassFileConstants.JDK11) ?
7680 					"invokevirtual X.bar() : int [18]\n" : "invokespecial X.bar() : int [18]\n";
7681 			String expectedOutput =
7682 					"  // Method descriptor #6 ()V\n" +
7683 					"  // Stack: 2, Locals: 4\n" +
7684 					"  public void foo() throws java.lang.Exception;\n" +
7685 					"     0  iconst_1\n" +
7686 					"     1  istore_1 [i]\n" +
7687 					"     2  iload_1 [i]\n" +
7688 					"     3  iconst_1\n" +
7689 					"     4  if_icmpne 24\n" +
7690 					"     7  aload_0 [this]\n" +
7691 					"     8  " + xBarCall +
7692 					"    11  istore_2 [n]\n" +
7693 					"    12  iload_2 [n]\n" +
7694 					"    13  bipush 35\n" +
7695 					"    15  if_icmpne 32\n" +
7696 					"    18  aload_0 [this]\n" +
7697 					"    19  " + xBarCall +
7698 					"    22  pop\n" +
7699 					"    23  return\n" +
7700 					"    24  new java.lang.Exception [16]\n" +
7701 					"    27  dup\n" +
7702 					"    28  invokespecial java.lang.Exception() [22]\n" +
7703 					"    31  athrow\n" +
7704 					"    32  iload_1 [i]\n" +
7705 					"    33  ifne 50\n" +
7706 					"    36  aload_0 [this]\n" +
7707 					"    37  " + xBarCall +
7708 					"    40  pop\n" +
7709 					"    41  return\n" +
7710 					"    42  astore_3\n" +
7711 					"    43  aload_0 [this]\n" +
7712 					"    44  " + xBarCall +
7713 					"    47  pop\n" +
7714 					"    48  aload_3\n" +
7715 					"    49  athrow\n" +
7716 					"    50  aload_0 [this]\n" +
7717 					"    51  " + xBarCall +
7718 					"    54  pop\n" +
7719 					"    55  return\n" +
7720 					"      Exception Table:\n" +
7721 					"        [pc: 2, pc: 18] -> 42 when : any\n" +
7722 					"        [pc: 24, pc: 36] -> 42 when : any\n" +
7723 					"      Line numbers:\n" +
7724 					"        [pc: 0, line: 3]\n" +
7725 					"        [pc: 2, line: 5]\n" +
7726 					"        [pc: 7, line: 6]\n" +
7727 					"        [pc: 12, line: 7]\n" +
7728 					"        [pc: 18, line: 15]\n" +
7729 					"        [pc: 23, line: 8]\n" +
7730 					"        [pc: 24, line: 10]\n" +
7731 					"        [pc: 32, line: 12]\n" +
7732 					"        [pc: 36, line: 15]\n" +
7733 					"        [pc: 41, line: 13]\n" +
7734 					"        [pc: 42, line: 14]\n" +
7735 					"        [pc: 43, line: 15]\n" +
7736 					"        [pc: 48, line: 16]\n" +
7737 					"        [pc: 50, line: 15]\n" +
7738 					"        [pc: 55, line: 17]\n" +
7739 					"      Local variable table:\n" +
7740 					"        [pc: 0, pc: 56] local: this index: 0 type: X\n" +
7741 					"        [pc: 2, pc: 56] local: i index: 1 type: int\n" +
7742 					"        [pc: 12, pc: 24] local: n index: 2 type: int\n" +
7743 					"      Stack map table: number of frames 4\n" +
7744 					"        [pc: 24, append: {int}]\n" +
7745 					"        [pc: 32, same]\n" +
7746 					"        [pc: 42, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" +
7747 					"        [pc: 50, same]\n";
7748 			int index = actualOutput.indexOf(expectedOutput);
7749 			if (index == -1 || expectedOutput.length() == 0) {
7750 				System.out.println(Util.displayString(actualOutput, 2));
7751 			}
7752 			if (index == -1) {
7753 				assertEquals("Wrong contents", expectedOutput, actualOutput);
7754 			}
7755 	}
7756 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=380313
7757 	// Verify the generated code does not have same branch target for the 2 return statements
testBug380313b()7758 	public void testBug380313b() throws Exception {
7759 		if (this.complianceLevel < ClassFileConstants.JDK1_7)
7760 			return;
7761 		this.runConformTest(
7762 				new String[] {
7763 						"X.java",
7764 						"import java.io.FileInputStream;\n" +
7765 						"import java.io.IOException;\n" +
7766 						"public class X {\n" +
7767 						"public void foo() throws Exception {\n" +
7768 						"        int i = 1;\n" +
7769 						"        try {\n" +
7770 						"            try (FileInputStream fis = new FileInputStream(\"\")) {\n" +
7771 						"				 if (i == 2)" +
7772 						"                	return;\n" +
7773 						" 			 }\n" +
7774 						"            if (i == 35) \n" +
7775 						"                return;\n" +
7776 						"        } catch(IOException e) {\n" +
7777 						"            bar();\n" +
7778 						"        } finally {\n" +
7779 						"            bar();\n" +
7780 						"        }\n" +
7781 						"    }\n" +
7782 						"\n" +
7783 						"    private int bar() {\n" +
7784 						"        return 0;\n" +
7785 						"    }\n" +
7786 						"\n" +
7787 						"    public static void main(String[] args) {\n" +
7788 						"		System.out.println(\"SUCCESS\");\n" +
7789 						"    }\n" +
7790 						"}\n"
7791 					},
7792 				"SUCCESS");
7793 
7794 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
7795 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
7796 			String actualOutput =
7797 				disassembler.disassemble(
7798 					classFileBytes,
7799 					"\n",
7800 					ClassFileBytesDisassembler.DETAILED);
7801 
7802 			String xBarCall = (isMinimumCompliant(ClassFileConstants.JDK11) ?
7803 					"invokevirtual" : "invokespecial") + " X.bar() : int [28]\n";
7804 			String expectedOutput =
7805 					"  // Method descriptor #6 ()V\n" +
7806 					"  // Stack: 3, Locals: 6\n" +
7807 					"  public void foo() throws java.lang.Exception;\n" +
7808 					"      0  iconst_1\n" +
7809 					"      1  istore_1 [i]\n" +
7810 					"      2  aconst_null\n" +
7811 					"      3  astore_2\n" +
7812 					"      4  aconst_null\n" +
7813 					"      5  astore_3\n" +
7814 					"      6  new java.io.FileInputStream [18]\n" +
7815 					"      9  dup\n" +
7816 					"     10  ldc <String \"\"> [20]\n" +
7817 					"     12  invokespecial java.io.FileInputStream(java.lang.String) [22]\n" +
7818 					"     15  astore 4 [fis]\n" +
7819 					"     17  iload_1 [i]\n" +
7820 					"     18  iconst_2\n" +
7821 					"     19  if_icmpne 38\n" +
7822 					"     22  aload 4 [fis]\n" +
7823 					"     24  ifnull 32\n" +
7824 					"     27  aload 4 [fis]\n" +
7825 					"     29  invokevirtual java.io.FileInputStream.close() : void [25]\n" +
7826 					"     32  aload_0 [this]\n" + // return 1
7827 					"     33  " + xBarCall +
7828 					"     36  pop\n" +
7829 					"     37  return\n" +
7830 					"     38  aload 4 [fis]\n" +
7831 					"     40  ifnull 86\n" +
7832 					"     43  aload 4 [fis]\n" +
7833 					"     45  invokevirtual java.io.FileInputStream.close() : void [25]\n" +
7834 					"     48  goto 86\n" +
7835 					"     51  astore_2\n" +
7836 					"     52  aload 4 [fis]\n" +
7837 					"     54  ifnull 62\n" +
7838 					"     57  aload 4 [fis]\n" +
7839 					"     59  invokevirtual java.io.FileInputStream.close() : void [25]\n" +
7840 					"     62  aload_2\n" +
7841 					"     63  athrow\n" +
7842 					"     64  astore_3\n" +
7843 					"     65  aload_2\n" +
7844 					"     66  ifnonnull 74\n" +
7845 					"     69  aload_3\n" +
7846 					"     70  astore_2\n" +
7847 					"     71  goto 84\n" +
7848 					"     74  aload_2\n" +
7849 					"     75  aload_3\n" +
7850 					"     76  if_acmpeq 84\n" +
7851 					"     79  aload_2\n" +
7852 					"     80  aload_3\n" +
7853 					"     81  invokevirtual java.lang.Throwable.addSuppressed(java.lang.Throwable) : void [32]\n" +
7854 					"     84  aload_2\n" +
7855 					"     85  athrow\n" +
7856 					"     86  iload_1 [i]\n" +
7857 					"     87  bipush 35\n" +
7858 					"     89  if_icmpne 122\n" +
7859 					"     92  aload_0 [this]\n" + 	// return 2
7860 					"     93  " + xBarCall +
7861 					"     96  pop\n" +
7862 					"     97  return\n" +
7863 					"     98  astore_2 [e]\n" +
7864 					"     99  aload_0 [this]\n" +
7865 					"    100  " + xBarCall +
7866 					"    103  pop\n" +
7867 					"    104  aload_0 [this]\n" +
7868 					"    105  " + xBarCall +
7869 					"    108  pop\n" +
7870 					"    109  goto 127\n" +
7871 					"    112  astore 5\n" +
7872 					"    114  aload_0 [this]\n" +
7873 					"    115  " + xBarCall +
7874 					"    118  pop\n" +
7875 					"    119  aload 5\n" +
7876 					"    121  athrow\n" +
7877 					"    122  aload_0 [this]\n" +
7878 					"    123  " + xBarCall +
7879 					"    126  pop\n" +
7880 					"    127  return\n" +
7881 					"      Exception Table:\n" +
7882 					"        [pc: 17, pc: 22] -> 51 when : any\n" +
7883 					"        [pc: 6, pc: 32] -> 64 when : any\n" +
7884 					"        [pc: 38, pc: 64] -> 64 when : any\n" +
7885 					"        [pc: 2, pc: 32] -> 98 when : java.io.IOException\n" +
7886 					"        [pc: 38, pc: 92] -> 98 when : java.io.IOException\n" +
7887 					"        [pc: 2, pc: 32] -> 112 when : any\n" +
7888 					"        [pc: 38, pc: 92] -> 112 when : any\n" +
7889 					"        [pc: 98, pc: 104] -> 112 when : any\n" +
7890 					"      Line numbers:\n" +
7891 					"        [pc: 0, line: 5]\n" +
7892 					"        [pc: 2, line: 7]\n" +
7893 					"        [pc: 17, line: 8]\n" +
7894 					"        [pc: 22, line: 9]\n" +
7895 					"        [pc: 32, line: 15]\n" +
7896 					"        [pc: 37, line: 8]\n" +
7897 					"        [pc: 38, line: 9]\n" +
7898 					"        [pc: 86, line: 10]\n" +
7899 					"        [pc: 92, line: 15]\n" +
7900 					"        [pc: 97, line: 11]\n" +
7901 					"        [pc: 98, line: 12]\n" +
7902 					"        [pc: 99, line: 13]\n" +
7903 					"        [pc: 104, line: 15]\n" +
7904 					"        [pc: 112, line: 14]\n" +
7905 					"        [pc: 114, line: 15]\n" +
7906 					"        [pc: 119, line: 16]\n" +
7907 					"        [pc: 122, line: 15]\n" +
7908 					"        [pc: 127, line: 17]\n" +
7909 					"      Local variable table:\n" +
7910 					"        [pc: 0, pc: 128] local: this index: 0 type: X\n" +
7911 					"        [pc: 2, pc: 128] local: i index: 1 type: int\n" +
7912 					"        [pc: 17, pc: 62] local: fis index: 4 type: java.io.FileInputStream\n" +
7913 					"        [pc: 99, pc: 104] local: e index: 2 type: java.io.IOException\n" +
7914 					"      Stack map table: number of frames 12\n" +
7915 					"        [pc: 32, full, stack: {}, locals: {X, int, java.lang.Throwable, java.lang.Throwable, java.io.FileInputStream}]\n" +
7916 					"        [pc: 38, same]\n" +
7917 					"        [pc: 51, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" +
7918 					"        [pc: 62, chop 1 local(s)]\n" +
7919 					"        [pc: 64, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" +
7920 					"        [pc: 74, same]\n" +
7921 					"        [pc: 84, same]\n" +
7922 					"        [pc: 86, chop 2 local(s)]\n" +
7923 					"        [pc: 98, same_locals_1_stack_item, stack: {java.io.IOException}]\n" +
7924 					"        [pc: 112, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" +
7925 					"        [pc: 122, same]\n" +
7926 					"        [pc: 127, same]\n";
7927 			int index = actualOutput.indexOf(expectedOutput);
7928 			if (index == -1 || expectedOutput.length() == 0) {
7929 				System.out.println(Util.displayString(actualOutput, 2));
7930 			}
7931 			if (index == -1) {
7932 				assertEquals("Wrong contents", expectedOutput, actualOutput);
7933 			}
7934 	}
7935 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=380927
7936 	// Verify the reduced range of locals.
testBug380927()7937 	public void testBug380927() throws Exception {
7938 		this.runConformTest(
7939 				new String[] {
7940 						"X.java",
7941 						"public class X {\n" +
7942 						"    public final static Object f() {\n" +
7943 						"        final Object a = null;\n" +
7944 						"        Object b;\n" +
7945 						"        label: do {\n" +
7946 						"            switch (0) {\n" +
7947 						"            case 1: {\n" +
7948 						"                b = a;\n" +
7949 						"            }\n" +
7950 						"                break;\n" +
7951 						"            default:\n" +
7952 						"                break label;\n" +
7953 						"            }\n" +
7954 						"        } while (true);\n" +
7955 						"        return a;\n" +
7956 						"    }\n" +
7957 						"    public static void main(final String[] args) {\n" +
7958 						"        f();\n" +
7959 						"        System.out.println(\"SUCCESS\");\n" +
7960 						"    }\n" +
7961 						"}\n"
7962 				},
7963 				"SUCCESS");
7964 
7965 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
7966 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
7967 			String actualOutput =
7968 				disassembler.disassemble(
7969 					classFileBytes,
7970 					"\n",
7971 					ClassFileBytesDisassembler.DETAILED);
7972 
7973 			String expectedOutput =
7974 					"  // Method descriptor #15 ()Ljava/lang/Object;\n" +
7975 					"  // Stack: 1, Locals: 2\n" +
7976 					"  public static final java.lang.Object f();\n" +
7977 					"     0  aconst_null\n" +
7978 					"     1  astore_0 [a]\n" +
7979 					"     2  iconst_0\n" +
7980 					"     3  tableswitch default: 25\n" +
7981 					"          case 1: 20\n" +
7982 					"    20  aload_0 [a]\n" +
7983 					"    21  astore_1 [b]\n" +
7984 					"    22  goto 2\n" +
7985 					"    25  aload_0 [a]\n" +
7986 					"    26  areturn\n" +
7987 					"      Line numbers:\n" +
7988 					"        [pc: 0, line: 3]\n" +
7989 					"        [pc: 2, line: 6]\n" +
7990 					"        [pc: 20, line: 8]\n" +
7991 					"        [pc: 22, line: 10]\n" +
7992 					"        [pc: 25, line: 15]\n" +
7993 					"      Local variable table:\n" +
7994 					"        [pc: 2, pc: 27] local: a index: 0 type: java.lang.Object\n" +
7995 					"        [pc: 22, pc: 25] local: b index: 1 type: java.lang.Object\n" +
7996 					"      Stack map table: number of frames 3\n" +
7997 					"        [pc: 2, append: {java.lang.Object}]\n" +
7998 					"        [pc: 20, same]\n" +
7999 					"        [pc: 25, same]\n" +
8000 					"  \n";
8001 			int index = actualOutput.indexOf(expectedOutput);
8002 			if (index == -1 || expectedOutput.length() == 0) {
8003 				System.out.println(Util.displayString(actualOutput, 2));
8004 			}
8005 			if (index == -1) {
8006 				assertEquals("Wrong contents", expectedOutput, actualOutput);
8007 			}
8008 	}
8009 
8010 	// from https://bugs.eclipse.org/bugs/show_bug.cgi?id=385593#c1
test385593_1()8011 	public void test385593_1() throws Exception {
8012 		this.runConformTest(
8013 			new String[] {
8014 					"stackmap/StackMapTableFormatError.java",
8015 					"package stackmap;\n" +
8016 					"\n" +
8017 					"import java.util.Collection;\n" +
8018 					"import java.util.Collections;\n" +
8019 					"\n" +
8020 					"/**\n" +
8021 					" * If compiled with Eclipse (compiler target >= 1.6) this snippet causes the\n" +
8022 					" * error \"java.lang.ClassFormatError: StackMapTable format error: bad\n" +
8023 					" * verification type\" when executed with JaCoCo code coverage. JaCoCo seems to\n" +
8024 					" * get confused by unexpected stackmap frames generated by ECJ.\n" +
8025 					" */\n" +
8026 					"public class StackMapTableFormatError {\n" +
8027 					"\n" +
8028 					"	public static Object exec(Collection<Object> set, Object a,\n" +
8029 					"			boolean b) {\n" +
8030 					"		for (Object e : set) {\n" +
8031 					"			if (a != null && (e == null || b)) {\n" +
8032 					"				continue;\n" +
8033 					"			}\n" +
8034 					"			return null;\n" +
8035 					"		}\n" +
8036 					"		return null;\n" +
8037 					"	}\n" +
8038 					"	\n" +
8039 					"	public static void main(String[] args) {\n" +
8040 					"		exec(Collections.emptySet(), null, false);\n" +
8041 					"	}\n" +
8042 					"\n" +
8043 					"}\n"
8044 			});
8045 
8046 		ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
8047 		byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR+File.separator+"stackmap"+File.separator+"StackMapTableFormatError.class"));
8048 		String actualOutput =
8049 			disassembler.disassemble(
8050 				classFileBytes,
8051 				"\n",
8052 				ClassFileBytesDisassembler.DETAILED);
8053 
8054 		String expectedOutput =
8055 				"  // Method descriptor #15 (Ljava/util/Collection;Ljava/lang/Object;Z)Ljava/lang/Object;\n" +
8056 				"  // Signature: (Ljava/util/Collection<Ljava/lang/Object;>;Ljava/lang/Object;Z)Ljava/lang/Object;\n" +
8057 				"  // Stack: 1, Locals: 5\n" +
8058 				"  public static java.lang.Object exec(java.util.Collection set, java.lang.Object a, boolean b);\n" +
8059 				"     0  aload_0 [set]\n" +
8060 				"     1  invokeinterface java.util.Collection.iterator() : java.util.Iterator [18] [nargs: 1]\n" +
8061 				"     6  astore 4\n" +
8062 				"     8  goto 36\n" +
8063 				"    11  aload 4\n" +
8064 				"    13  invokeinterface java.util.Iterator.next() : java.lang.Object [24] [nargs: 1]\n" +
8065 				"    18  astore_3 [e]\n" +
8066 				"    19  aload_1 [a]\n" +
8067 				"    20  ifnull 34\n" +
8068 				"    23  aload_3 [e]\n" +
8069 				"    24  ifnull 36\n" +
8070 				"    27  iload_2 [b]\n" +
8071 				"    28  ifeq 34\n" +
8072 				"    31  goto 36\n" +
8073 				"    34  aconst_null\n" +
8074 				"    35  areturn\n" +
8075 				"    36  aload 4\n" +
8076 				"    38  invokeinterface java.util.Iterator.hasNext() : boolean [30] [nargs: 1]\n" +
8077 				"    43  ifne 11\n" +
8078 				"    46  aconst_null\n" +
8079 				"    47  areturn\n" +
8080 				"      Line numbers:\n" +
8081 				"        [pc: 0, line: 16]\n" +
8082 				"        [pc: 19, line: 17]\n" +
8083 				"        [pc: 31, line: 18]\n" +
8084 				"        [pc: 34, line: 20]\n" +
8085 				"        [pc: 36, line: 16]\n" +
8086 				"        [pc: 46, line: 22]\n" +
8087 				"      Local variable table:\n" +
8088 				"        [pc: 0, pc: 48] local: set index: 0 type: java.util.Collection\n" +
8089 				"        [pc: 0, pc: 48] local: a index: 1 type: java.lang.Object\n" +
8090 				"        [pc: 0, pc: 48] local: b index: 2 type: boolean\n" +
8091 				"        [pc: 19, pc: 36] local: e index: 3 type: java.lang.Object\n" +
8092 				"      Local variable type table:\n" +
8093 				"        [pc: 0, pc: 48] local: set index: 0 type: java.util.Collection<java.lang.Object>\n" +
8094 				"      Stack map table: number of frames 3\n" +
8095 				"        [pc: 11, full, stack: {}, locals: {java.util.Collection, java.lang.Object, int, _, java.util.Iterator}]\n" +
8096 				"        [pc: 34, full, stack: {}, locals: {java.util.Collection, java.lang.Object, int, java.lang.Object, java.util.Iterator}]\n" +
8097 				"        [pc: 36, full, stack: {}, locals: {java.util.Collection, java.lang.Object, int, _, java.util.Iterator}]";
8098 		int index = actualOutput.indexOf(expectedOutput);
8099 		if (index == -1 || expectedOutput.length() == 0) {
8100 			System.out.println(Util.displayString(actualOutput, 2));
8101 		}
8102 		if (index == -1) {
8103 			assertEquals("Wrong contents", expectedOutput, actualOutput);
8104 		}
8105 	}
8106 
8107 	// from https://bugs.eclipse.org/bugs/show_bug.cgi?id=385593#c11
test385593_2()8108 	public void test385593_2() throws Exception {
8109 		this.runConformTest(
8110 			new String[] {
8111 					"snippet/X.java",
8112 					"package snippet;\n" +
8113 					"\n" +
8114 					"\n" +
8115 					"public class X { \n" +
8116 					"	private void foo(boolean delete) { \n" +
8117 					"		 \n" +
8118 					"		String s = bar(); \n" +
8119 					"		StringBuffer buffer =new StringBuffer(); \n" +
8120 					"		 \n" +
8121 					"		try { \n" +
8122 					"			 \n" +
8123 					"			String[] datas = new String[] { \"\" }; \n" +
8124 					"			Object[] data= new Object[] { s }; \n" +
8125 					"			try { \n" +
8126 					"				buffer.append(datas).append(data); \n" +
8127 					"			} catch (Exception e) { \n" +
8128 					"				if (e != null) \n" +
8129 					"					throw e; \n" +
8130 					"				return; \n" +
8131 					"			} \n" +
8132 					"				 \n" +
8133 					"			if (delete) \n" +
8134 					"				buffer.delete(0, buffer.length()); \n" +
8135 					"			 \n" +
8136 					"		} catch (Exception x) { \n" +
8137 					"		} finally { \n" +
8138 					"			buffer = null; \n" +
8139 					"		} \n" +
8140 					"	} \n" +
8141 					"	 \n" +
8142 					"	String bar() { \n" +
8143 					"		return \"\"; \n" +
8144 					"	} \n" +
8145 					"	 \n" +
8146 					"	public static void main(String[] args) { \n" +
8147 					"		new X().foo(false); \n" +
8148 					"		System.out.println(\"SUCCESS\"); \n" +
8149 					"	} \n" +
8150 					"}\n"
8151 			});
8152 
8153 		ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
8154 		byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR+File.separator+"snippet"+File.separator+"X.class"));
8155 		String actualOutput =
8156 			disassembler.disassemble(
8157 				classFileBytes,
8158 				"\n",
8159 				ClassFileBytesDisassembler.DETAILED);
8160 
8161 		String expectedOutput =
8162 				"Stack map table: number of frames 7\n" +
8163 				"        [pc: 49, full, stack: {java.lang.Exception}, locals: {snippet.X, int, java.lang.String, java.lang.StringBuffer, java.lang.String[], java.lang.Object[]}]\n" +
8164 				"        [pc: 59, append: {java.lang.Exception}]\n" +
8165 				"        [pc: 62, chop 1 local(s)]\n" +
8166 				"        [pc: 79, full, stack: {java.lang.Exception}, locals: {snippet.X, int, java.lang.String, java.lang.StringBuffer}]\n" +
8167 				"        [pc: 86, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" +
8168 				"        [pc: 93, same]\n" +
8169 				"        [pc: 95, same]\n";
8170 
8171 		int index = actualOutput.indexOf(expectedOutput);
8172 		if (index == -1 || expectedOutput.length() == 0) {
8173 			System.out.println(Util.displayString(actualOutput, 2));
8174 		}
8175 		if (index == -1) {
8176 			assertEquals("Wrong contents", expectedOutput, actualOutput);
8177 		}
8178 	}
8179 	// from https://bugs.eclipse.org/bugs/show_bug.cgi?id=394718
test394718()8180 	public void test394718() throws Exception {
8181 		this.runConformTest(
8182 			new String[] {
8183 					"X.java",
8184 					"public class X\n" +
8185 					"{\n" +
8186 					"	public static Boolean test() throws Exception\n" +
8187 					"	{\n" +
8188 					"		try\n" +
8189 					"		{\n" +
8190 					"			for (int i = 0; i < 1; i++)\n" +
8191 					"			{\n" +
8192 					"				long status = System.currentTimeMillis();\n" +
8193 					"				if (status < 0)\n" +
8194 					"					return false;\n" +
8195 					"				if (status == 1)\n" +
8196 					"					return false;\n" +
8197 					"			}\n" +
8198 					"			\n" +
8199 					"			return false;\n" +
8200 					"		}\n" +
8201 					"		finally\n" +
8202 					"		{\n" +
8203 					"			System.currentTimeMillis();\n" +
8204 					"		}\n" +
8205 					"	}\n" +
8206 					"	\n" +
8207 					"	public static void main(String[] args) throws Exception\n" +
8208 					"	{\n" +
8209 					"		System.out.print(\"Starting\");\n" +
8210 					"		test();\n" +
8211 					"		System.out.println(\"Done\");\n" +
8212 					"	}\n" +
8213 					"}"
8214 			},
8215 			"StartingDone");
8216 	}
8217 
8218 	// https://bugs.eclipse.org/412203
testBug412203_a()8219 	public void testBug412203_a() throws Exception {
8220 		if (this.complianceLevel < ClassFileConstants.JDK1_7) return; // using <>
8221 		Map options = getCompilerOptions();
8222 		options.put(JavaCore.COMPILER_ANNOTATION_NULL_ANALYSIS, JavaCore.ENABLED);
8223 		options.put(JavaCore.COMPILER_PB_NULL_REFERENCE, JavaCore.ERROR);
8224 		options.put(JavaCore.COMPILER_PB_NULL_SPECIFICATION_VIOLATION, JavaCore.ERROR);
8225 		options.put(JavaCore.COMPILER_PB_POTENTIAL_NULL_REFERENCE, JavaCore.WARNING);
8226 		options.put(JavaCore.COMPILER_PB_SUPPRESS_OPTIONAL_ERRORS, JavaCore.ENABLED);
8227 		this.runConformTest(
8228 				new String[] {
8229 					"X2.java",
8230 					"import java.util.*;\n" +
8231 					"\n" +
8232 					"import org.eclipse.jdt.annotation.NonNullByDefault;\n" +
8233 					"\n" +
8234 					"class Y {\n" +
8235 					"	public Y() { }\n" +
8236 					"}\n" +
8237 					"\n" +
8238 					"@NonNullByDefault\n" +
8239 					"abstract class X1 {\n" +
8240 					"\n" +
8241 					"	private Object a;\n" +
8242 					"	private Object b;\n" +
8243 					"	private Object c;\n" +
8244 					"	private Object d;\n" +
8245 					"	private Object e;\n" +
8246 					"	private Object f;\n" +
8247 					"\n" +
8248 					"	protected Object name;\n" +
8249 					"\n" +
8250 					"	@SuppressWarnings(\"null\")\n" +
8251 					"	protected X1() {\n" +
8252 					"		super ();\n" +
8253 					"	}\n" +
8254 					"\n" +
8255 					"}\n" +
8256 					"public class X2 extends X1 {\n" +
8257 					"\n" +
8258 					"\n" +
8259 					"	public static final int ID = 4711;\n" +
8260 					"\n" +
8261 					"	private Object x;\n" +
8262 					"	private Object y;\n" +
8263 					"	private Object z;\n" +
8264 					"\n" +
8265 					"	private Runnable runable = new Runnable () {\n" +
8266 					"		@Override\n" +
8267 					"		public void run () {\n" +
8268 					"			// whatever\n" +
8269 					"		}\n" +
8270 					"	};\n" +
8271 					"\n" +
8272 					"	private void init () {\n" +
8273 					"		final Object selector = new Object ();\n" +
8274 					"		this.name = new Object ();\n" +
8275 					"		LinkedList<Character> invalidCharactersList = new LinkedList<> ();\n" +
8276 					"		char[] invalidCharacters = new char[invalidCharactersList.size ()];\n" +
8277 					"		for (int i = 0; i < invalidCharacters.length; i++) {\n" +
8278 					"			invalidCharacters[i] = invalidCharactersList.get (i).charValue ();\n" +
8279 					"		}\n" +
8280 					"		Y inputVerifier = new Y();\n" +
8281 					"	}\n" +
8282 					"\n" +
8283 					"}\n",
8284 				},
8285 				"",
8286 				getLibsWithNullAnnotations(ClassFileConstants.JDK1_7),
8287 				true/*flush*/,
8288 				null/*vmArgs*/,
8289 				options,
8290 				null/*requestor*/,
8291 				true/*skipJavac*/);
8292 
8293 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
8294 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X2.class"));
8295 			String actualOutput =
8296 				disassembler.disassemble(
8297 					classFileBytes,
8298 					"\n",
8299 					ClassFileBytesDisassembler.DETAILED);
8300 
8301 			String expectedOutput =
8302 					"  // Method descriptor #16 ()V\n" +
8303 					"  // Stack: 4, Locals: 5\n" +
8304 					"  private void init();\n" +
8305 					"     0  new java.lang.Object [32]\n" +
8306 					"     3  dup\n" +
8307 					"     4  invokespecial java.lang.Object() [34]\n" +
8308 					"     7  astore_1 [selector]\n" +
8309 					"     8  aload_0 [this]\n" +
8310 					"     9  new java.lang.Object [32]\n" +
8311 					"    12  dup\n" +
8312 					"    13  invokespecial java.lang.Object() [34]\n" +
8313 					"    16  putfield X2.name : java.lang.Object [35]\n" +
8314 					"    19  new java.util.LinkedList [38]\n" +
8315 					"    22  dup\n" +
8316 					"    23  invokespecial java.util.LinkedList() [40]\n" +
8317 					"    26  astore_2 [invalidCharactersList]\n" +
8318 					"    27  aload_2 [invalidCharactersList]\n" +
8319 					"    28  invokevirtual java.util.LinkedList.size() : int [41]\n" +
8320 					"    31  newarray char [5]\n" +
8321 					"    33  astore_3 [invalidCharacters]\n" +
8322 					"    34  iconst_0\n" +
8323 					"    35  istore 4 [i]\n" +
8324 					"    37  goto 59\n" +
8325 					"    40  aload_3 [invalidCharacters]\n" +
8326 					"    41  iload 4 [i]\n" +
8327 					"    43  aload_2 [invalidCharactersList]\n" +
8328 					"    44  iload 4 [i]\n" +
8329 					"    46  invokevirtual java.util.LinkedList.get(int) : java.lang.Object [45]\n" +
8330 					"    49  checkcast java.lang.Character [49]\n" +
8331 					"    52  invokevirtual java.lang.Character.charValue() : char [51]\n" +
8332 					"    55  castore\n" +
8333 					"    56  iinc 4 1 [i]\n" +
8334 					"    59  iload 4 [i]\n" +
8335 					"    61  aload_3 [invalidCharacters]\n" +
8336 					"    62  arraylength\n" +
8337 					"    63  if_icmplt 40\n" +
8338 					"    66  new Y [55]\n" +
8339 					"    69  dup\n" +
8340 					"    70  invokespecial Y() [57]\n" +
8341 					"    73  astore 4 [inputVerifier]\n" +
8342 					"    75  return\n" +
8343 					"      Line numbers:\n" +
8344 					"        [pc: 0, line: 44]\n" +
8345 					"        [pc: 8, line: 45]\n" +
8346 					"        [pc: 19, line: 46]\n" +
8347 					"        [pc: 27, line: 47]\n" +
8348 					"        [pc: 34, line: 48]\n" +
8349 					"        [pc: 40, line: 49]\n" +
8350 					"        [pc: 56, line: 48]\n" +
8351 					"        [pc: 66, line: 51]\n" +
8352 					"        [pc: 75, line: 52]\n" +
8353 					"      Local variable table:\n" +
8354 					"        [pc: 0, pc: 76] local: this index: 0 type: X2\n" +
8355 					"        [pc: 8, pc: 76] local: selector index: 1 type: java.lang.Object\n" +
8356 					"        [pc: 27, pc: 76] local: invalidCharactersList index: 2 type: java.util.LinkedList\n" +
8357 					"        [pc: 34, pc: 76] local: invalidCharacters index: 3 type: char[]\n" +
8358 					"        [pc: 37, pc: 66] local: i index: 4 type: int\n" +
8359 					"        [pc: 75, pc: 76] local: inputVerifier index: 4 type: Y\n" +
8360 					"      Local variable type table:\n" +
8361 					"        [pc: 27, pc: 76] local: invalidCharactersList index: 2 type: java.util.LinkedList<java.lang.Character>\n" +
8362 					"      Stack map table: number of frames 2\n" +
8363 					"        [pc: 40, full, stack: {}, locals: {X2, java.lang.Object, java.util.LinkedList, char[], int}]\n" +
8364 					"        [pc: 59, same]\n";
8365 
8366 			int index = actualOutput.indexOf(expectedOutput);
8367 			if (index == -1 || expectedOutput.length() == 0) {
8368 				System.out.println(Util.displayString(actualOutput, 2));
8369 			}
8370 			if (index == -1) {
8371 				assertEquals("Wrong contents", expectedOutput, actualOutput);
8372 			}
8373 	}
8374 
8375 	// https://bugs.eclipse.org/412203
8376 	// yet simplified version - using FieldReference
testBug412203_b()8377 	public void testBug412203_b() throws Exception {
8378 		Map options = getCompilerOptions();
8379 		options.put(JavaCore.COMPILER_ANNOTATION_NULL_ANALYSIS, JavaCore.ENABLED);
8380 		options.put(JavaCore.COMPILER_PB_NULL_REFERENCE, JavaCore.ERROR);
8381 		options.put(JavaCore.COMPILER_PB_NULL_SPECIFICATION_VIOLATION, JavaCore.ERROR);
8382 		options.put(JavaCore.COMPILER_PB_POTENTIAL_NULL_REFERENCE, JavaCore.WARNING);
8383 		options.put(JavaCore.COMPILER_PB_SUPPRESS_OPTIONAL_ERRORS, JavaCore.ENABLED);
8384 		this.runConformTest(
8385 				new String[] {
8386 					"X2.java",
8387 					"import java.util.LinkedList;\n" +
8388 					"\n" +
8389 					"import org.eclipse.jdt.annotation.NonNull;\n" +
8390 					"\n" +
8391 					"abstract class X1 {\n" +
8392 					"	protected @NonNull Object name = new Object();\n" +
8393 					"}\n" +
8394 					"\n" +
8395 					"public class X2 extends X1 {\n" +
8396 					"	void init () {\n" +
8397 					"		this.name = new Object ();\n" +
8398 					"		LinkedList<Character> l = new LinkedList<Character> ();\n" +
8399 					"		char[] cs = new char[l.size ()];\n" +
8400 					"		for (int i = 0; i < cs.length; i++) {\n" +
8401 					"			cs[i] = l.get (i).charValue ();\n" +
8402 					"		}\n" +
8403 					"		Object o2 = new Object();\n" +
8404 					"	}\n" +
8405 					"}\n",
8406 				},
8407 				"",
8408 				getLibsWithNullAnnotations(ClassFileConstants.JDK1_7),
8409 				true/*flush*/,
8410 				null/*vmArgs*/,
8411 				options,
8412 				null/*requestor*/,
8413 				true/*skipJavac*/);
8414 
8415 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
8416 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X2.class"));
8417 			String actualOutput =
8418 				disassembler.disassemble(
8419 					classFileBytes,
8420 					"\n",
8421 					ClassFileBytesDisassembler.DETAILED);
8422 
8423 			String expectedOutput =
8424 					"  // Method descriptor #6 ()V\n" +
8425 					"  // Stack: 4, Locals: 4\n" +
8426 					"  void init();\n" +
8427 					"     0  aload_0 [this]\n" +
8428 					"     1  new java.lang.Object [15]\n" +
8429 					"     4  dup\n" +
8430 					"     5  invokespecial java.lang.Object() [17]\n" +
8431 					"     8  putfield X2.name : java.lang.Object [18]\n" +
8432 					"    11  new java.util.LinkedList [22]\n" +
8433 					"    14  dup\n" +
8434 					"    15  invokespecial java.util.LinkedList() [24]\n" +
8435 					"    18  astore_1 [l]\n" +
8436 					"    19  aload_1 [l]\n" +
8437 					"    20  invokevirtual java.util.LinkedList.size() : int [25]\n" +
8438 					"    23  newarray char [5]\n" +
8439 					"    25  astore_2 [cs]\n" +
8440 					"    26  iconst_0\n" +
8441 					"    27  istore_3 [i]\n" +
8442 					"    28  goto 48\n" +
8443 					"    31  aload_2 [cs]\n" +
8444 					"    32  iload_3 [i]\n" +
8445 					"    33  aload_1 [l]\n" +
8446 					"    34  iload_3 [i]\n" +
8447 					"    35  invokevirtual java.util.LinkedList.get(int) : java.lang.Object [29]\n" +
8448 					"    38  checkcast java.lang.Character [33]\n" +
8449 					"    41  invokevirtual java.lang.Character.charValue() : char [35]\n" +
8450 					"    44  castore\n" +
8451 					"    45  iinc 3 1 [i]\n" +
8452 					"    48  iload_3 [i]\n" +
8453 					"    49  aload_2 [cs]\n" +
8454 					"    50  arraylength\n" +
8455 					"    51  if_icmplt 31\n" +
8456 					"    54  new java.lang.Object [15]\n" +
8457 					"    57  dup\n" +
8458 					"    58  invokespecial java.lang.Object() [17]\n" +
8459 					"    61  astore_3 [o2]\n" +
8460 					"    62  return\n" +
8461 					"      Line numbers:\n" +
8462 					"        [pc: 0, line: 11]\n" +
8463 					"        [pc: 11, line: 12]\n" +
8464 					"        [pc: 19, line: 13]\n" +
8465 					"        [pc: 26, line: 14]\n" +
8466 					"        [pc: 31, line: 15]\n" +
8467 					"        [pc: 45, line: 14]\n" +
8468 					"        [pc: 54, line: 17]\n" +
8469 					"        [pc: 62, line: 18]\n" +
8470 					"      Local variable table:\n" +
8471 					"        [pc: 0, pc: 63] local: this index: 0 type: X2\n" +
8472 					"        [pc: 19, pc: 63] local: l index: 1 type: java.util.LinkedList\n" +
8473 					"        [pc: 26, pc: 63] local: cs index: 2 type: char[]\n" +
8474 					"        [pc: 28, pc: 54] local: i index: 3 type: int\n" +
8475 					"        [pc: 62, pc: 63] local: o2 index: 3 type: java.lang.Object\n" +
8476 					"      Local variable type table:\n" +
8477 					"        [pc: 19, pc: 63] local: l index: 1 type: java.util.LinkedList<java.lang.Character>\n" +
8478 					"      Stack map table: number of frames 2\n" +
8479 					"        [pc: 31, append: {java.util.LinkedList, char[], int}]\n" +
8480 					"        [pc: 48, same]\n" +
8481 					"}";
8482 
8483 			int index = actualOutput.indexOf(expectedOutput);
8484 			if (index == -1 || expectedOutput.length() == 0) {
8485 				System.out.println(Util.displayString(actualOutput, 2));
8486 			}
8487 			if (index == -1) {
8488 				assertEquals("Wrong contents", expectedOutput, actualOutput);
8489 			}
8490 	}
8491 
8492 	// https://bugs.eclipse.org/412203
8493 	// yet simplified version - using SingleNameReference
testBug412203_c()8494 	public void testBug412203_c() throws Exception {
8495 		Map options = getCompilerOptions();
8496 		options.put(JavaCore.COMPILER_ANNOTATION_NULL_ANALYSIS, JavaCore.ENABLED);
8497 		options.put(JavaCore.COMPILER_PB_NULL_REFERENCE, JavaCore.ERROR);
8498 		options.put(JavaCore.COMPILER_PB_NULL_SPECIFICATION_VIOLATION, JavaCore.ERROR);
8499 		options.put(JavaCore.COMPILER_PB_POTENTIAL_NULL_REFERENCE, JavaCore.WARNING);
8500 		options.put(JavaCore.COMPILER_PB_SUPPRESS_OPTIONAL_ERRORS, JavaCore.ENABLED);
8501 		this.runConformTest(
8502 				new String[] {
8503 					"X2.java",
8504 					"import java.util.LinkedList;\n" +
8505 					"\n" +
8506 					"import org.eclipse.jdt.annotation.NonNull;\n" +
8507 					"\n" +
8508 					"abstract class X1 {\n" +
8509 					"	protected @NonNull Object name = new Object();\n" +
8510 					"}\n" +
8511 					"\n" +
8512 					"public class X2 extends X1 {\n" +
8513 					"	void init () {\n" +
8514 					"		name = new Object ();\n" +
8515 					"		LinkedList<Character> l = new LinkedList<Character> ();\n" +
8516 					"		char[] cs = new char[l.size ()];\n" +
8517 					"		for (int i = 0; i < cs.length; i++) {\n" +
8518 					"			cs[i] = l.get (i).charValue ();\n" +
8519 					"		}\n" +
8520 					"		Object o2 = new Object();\n" +
8521 					"	}\n" +
8522 					"}\n",
8523 				},
8524 				"",
8525 				getLibsWithNullAnnotations(ClassFileConstants.JDK1_7),
8526 				true/*flush*/,
8527 				null/*vmArgs*/,
8528 				options,
8529 				null/*requestor*/,
8530 				true/*skipJavac*/);
8531 
8532 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
8533 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X2.class"));
8534 			String actualOutput =
8535 				disassembler.disassemble(
8536 					classFileBytes,
8537 					"\n",
8538 					ClassFileBytesDisassembler.DETAILED);
8539 
8540 			String expectedOutput =
8541 					"  // Method descriptor #6 ()V\n" +
8542 					"  // Stack: 4, Locals: 4\n" +
8543 					"  void init();\n" +
8544 					"     0  aload_0 [this]\n" +
8545 					"     1  new java.lang.Object [15]\n" +
8546 					"     4  dup\n" +
8547 					"     5  invokespecial java.lang.Object() [17]\n" +
8548 					"     8  putfield X2.name : java.lang.Object [18]\n" +
8549 					"    11  new java.util.LinkedList [22]\n" +
8550 					"    14  dup\n" +
8551 					"    15  invokespecial java.util.LinkedList() [24]\n" +
8552 					"    18  astore_1 [l]\n" +
8553 					"    19  aload_1 [l]\n" +
8554 					"    20  invokevirtual java.util.LinkedList.size() : int [25]\n" +
8555 					"    23  newarray char [5]\n" +
8556 					"    25  astore_2 [cs]\n" +
8557 					"    26  iconst_0\n" +
8558 					"    27  istore_3 [i]\n" +
8559 					"    28  goto 48\n" +
8560 					"    31  aload_2 [cs]\n" +
8561 					"    32  iload_3 [i]\n" +
8562 					"    33  aload_1 [l]\n" +
8563 					"    34  iload_3 [i]\n" +
8564 					"    35  invokevirtual java.util.LinkedList.get(int) : java.lang.Object [29]\n" +
8565 					"    38  checkcast java.lang.Character [33]\n" +
8566 					"    41  invokevirtual java.lang.Character.charValue() : char [35]\n" +
8567 					"    44  castore\n" +
8568 					"    45  iinc 3 1 [i]\n" +
8569 					"    48  iload_3 [i]\n" +
8570 					"    49  aload_2 [cs]\n" +
8571 					"    50  arraylength\n" +
8572 					"    51  if_icmplt 31\n" +
8573 					"    54  new java.lang.Object [15]\n" +
8574 					"    57  dup\n" +
8575 					"    58  invokespecial java.lang.Object() [17]\n" +
8576 					"    61  astore_3 [o2]\n" +
8577 					"    62  return\n" +
8578 					"      Line numbers:\n" +
8579 					"        [pc: 0, line: 11]\n" +
8580 					"        [pc: 11, line: 12]\n" +
8581 					"        [pc: 19, line: 13]\n" +
8582 					"        [pc: 26, line: 14]\n" +
8583 					"        [pc: 31, line: 15]\n" +
8584 					"        [pc: 45, line: 14]\n" +
8585 					"        [pc: 54, line: 17]\n" +
8586 					"        [pc: 62, line: 18]\n" +
8587 					"      Local variable table:\n" +
8588 					"        [pc: 0, pc: 63] local: this index: 0 type: X2\n" +
8589 					"        [pc: 19, pc: 63] local: l index: 1 type: java.util.LinkedList\n" +
8590 					"        [pc: 26, pc: 63] local: cs index: 2 type: char[]\n" +
8591 					"        [pc: 28, pc: 54] local: i index: 3 type: int\n" +
8592 					"        [pc: 62, pc: 63] local: o2 index: 3 type: java.lang.Object\n" +
8593 					"      Local variable type table:\n" +
8594 					"        [pc: 19, pc: 63] local: l index: 1 type: java.util.LinkedList<java.lang.Character>\n" +
8595 					"      Stack map table: number of frames 2\n" +
8596 					"        [pc: 31, append: {java.util.LinkedList, char[], int}]\n" +
8597 					"        [pc: 48, same]\n" +
8598 					"}";
8599 
8600 			int index = actualOutput.indexOf(expectedOutput);
8601 			if (index == -1 || expectedOutput.length() == 0) {
8602 				System.out.println(Util.displayString(actualOutput, 2));
8603 			}
8604 			if (index == -1) {
8605 				assertEquals("Wrong contents", expectedOutput, actualOutput);
8606 			}
8607 	}
testBug5409021()8608 	public void testBug5409021() throws Exception {
8609 		this.runConformTest(
8610 				new String[] {
8611 					"X.java",
8612 					"public class X {\n" +
8613 					"\n" +
8614 					"	public static void main(String[] args) {\n" +
8615 					"		X error = new X();\n" +
8616 					"		error.reproduce(\"hello\");\n" +
8617 					"		System.out.println(\"DONE\");\n" +
8618 					"	}\n" +
8619 					"	\n" +
8620 					"	public Object reproduce(Object param) throws RuntimeException {\n" +
8621 					"		Object local;\n" +
8622 					"		try {\n" +
8623 					"			return param; \n" +
8624 					"		} \n" +
8625 					"		catch (RuntimeException e) {\n" +
8626 					"			return null;\n" +
8627 					"		} \n" +
8628 					"		finally {\n" +
8629 					"			if (param != null) {\n" +
8630 					"				System.out.println(\"FINALLY\");\n" +
8631 					"			}\n" +
8632 					"			local = null;\n" +
8633 					"		}\n" +
8634 					"	}\n" +
8635 					"}\n" +
8636 					"",
8637 				},
8638 				"FINALLY\n" +
8639 				"DONE");
8640 
8641 			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
8642 			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
8643 			String actualOutput =
8644 				disassembler.disassemble(
8645 					classFileBytes,
8646 					"\n",
8647 					ClassFileBytesDisassembler.DETAILED);
8648 			String expectedOutput =
8649 					"  // Stack: 2, Locals: 6\n" +
8650 					"  public java.lang.Object reproduce(java.lang.Object param) throws java.lang.RuntimeException;\n" +
8651 					"     0  aload_1 [param]\n" +
8652 					"     1  astore 5\n" +
8653 					"     3  aload_1 [param]\n" +
8654 					"     4  ifnull 15\n" +
8655 					"     7  getstatic java.lang.System.out : java.io.PrintStream [23]\n" +
8656 					"    10  ldc <String \"FINALLY\"> [43]\n" +
8657 					"    12  invokevirtual java.io.PrintStream.println(java.lang.String) : void [31]\n" +
8658 					"    15  aconst_null\n" +
8659 					"    16  astore_2 [local]\n" +
8660 					"    17  aload 5\n" +
8661 					"    19  areturn\n" +
8662 					"    20  astore_3 [e]\n" +
8663 					"    21  aload_1 [param]\n" +
8664 					"    22  ifnull 33\n" +
8665 					"    25  getstatic java.lang.System.out : java.io.PrintStream [23]\n" +
8666 					"    28  ldc <String \"FINALLY\"> [43]\n" +
8667 					"    30  invokevirtual java.io.PrintStream.println(java.lang.String) : void [31]\n" +
8668 					"    33  aconst_null\n" +
8669 					"    34  astore_2 [local]\n" +
8670 					"    35  aconst_null\n" +
8671 					"    36  areturn\n" +
8672 					"    37  astore 4\n" +
8673 					"    39  aload_1 [param]\n" +
8674 					"    40  ifnull 51\n" +
8675 					"    43  getstatic java.lang.System.out : java.io.PrintStream [23]\n" +
8676 					"    46  ldc <String \"FINALLY\"> [43]\n" +
8677 					"    48  invokevirtual java.io.PrintStream.println(java.lang.String) : void [31]\n" +
8678 					"    51  aconst_null\n" +
8679 					"    52  astore_2 [local]\n" +
8680 					"    53  aload 4\n" +
8681 					"    55  athrow\n" +
8682 					"      Exception Table:\n" +
8683 					"        [pc: 0, pc: 3] -> 20 when : java.lang.RuntimeException\n" +
8684 					"        [pc: 0, pc: 3] -> 37 when : any\n" +
8685 					"        [pc: 20, pc: 21] -> 37 when : any\n" +
8686 					"      Line numbers:\n" +
8687 					"        [pc: 0, line: 12]\n" +
8688 					"        [pc: 3, line: 18]\n" +
8689 					"        [pc: 7, line: 19]\n" +
8690 					"        [pc: 15, line: 21]\n" +
8691 					"        [pc: 17, line: 12]\n" +
8692 					"        [pc: 20, line: 14]\n" +
8693 					"        [pc: 21, line: 18]\n" +
8694 					"        [pc: 25, line: 19]\n" +
8695 					"        [pc: 33, line: 21]\n" +
8696 					"        [pc: 35, line: 15]\n" +
8697 					"        [pc: 37, line: 17]\n" +
8698 					"        [pc: 39, line: 18]\n" +
8699 					"        [pc: 43, line: 19]\n" +
8700 					"        [pc: 51, line: 21]\n" +
8701 					"        [pc: 53, line: 22]\n" +
8702 					"      Local variable table:\n" +
8703 					"        [pc: 0, pc: 56] local: this index: 0 type: X\n" +
8704 					"        [pc: 0, pc: 56] local: param index: 1 type: java.lang.Object\n" +
8705 					"        [pc: 17, pc: 20] local: local index: 2 type: java.lang.Object\n" +
8706 					"        [pc: 35, pc: 37] local: local index: 2 type: java.lang.Object\n" +
8707 					"        [pc: 53, pc: 56] local: local index: 2 type: java.lang.Object\n" +
8708 					"        [pc: 21, pc: 37] local: e index: 3 type: java.lang.RuntimeException\n" +
8709 					"      Stack map table: number of frames 5\n" +
8710 					"        [pc: 15, full, stack: {}, locals: {X, java.lang.Object, _, _, _, java.lang.Object}]\n" +
8711 					"        [pc: 20, full, stack: {java.lang.RuntimeException}, locals: {X, java.lang.Object}]\n" +
8712 					"        [pc: 33, full, stack: {}, locals: {X, java.lang.Object, _, java.lang.RuntimeException}]\n" +
8713 					"        [pc: 37, full, stack: {java.lang.Throwable}, locals: {X, java.lang.Object}]\n" +
8714 					"        [pc: 51, full, stack: {}, locals: {X, java.lang.Object, _, _, java.lang.Throwable}]\n" +
8715 					"}";
8716 
8717 			int index = actualOutput.indexOf(expectedOutput);
8718 			if (index == -1 || expectedOutput.length() == 0) {
8719 				System.out.println(Util.displayString(actualOutput, 2));
8720 			}
8721 			if (index == -1) {
8722 				assertEquals("Wrong contents", expectedOutput, actualOutput);
8723 			}
8724 	}
8725 
test551368()8726 	public void test551368() {
8727 		this.runConformTest(
8728             new String[] {
8729         		"X.java",
8730         		"interface A {\n" +
8731         		"}\n" +
8732         		"class B implements A {\n" +
8733         		"	public C c;\n" +
8734         		"	\n" +
8735         		"	protected B original() {\n" +
8736         		"		return this;\n" +
8737         		"	}\n" +
8738         		"}\n" +
8739         		"class C {\n" +
8740         		"	C parent;\n" +
8741         		"	A context;\n" +
8742         		"}\n" +
8743         		"class F extends C {\n" +
8744         		"	\n" +
8745         		"}\n" +
8746         		"class G extends C {\n" +
8747         		"	\n" +
8748         		"}\n" +
8749         		"abstract class D implements A {\n" +
8750         		"	public F c;\n" +
8751         		"}\n" +
8752         		"class E implements A {\n" +
8753         		"	public G c;\n" +
8754         		"}\n" +
8755         		"public class X {\n" +
8756         		"	boolean foo(A a) {\n" +
8757         		"		if (a instanceof B && a != ((B) a).original())\n" +
8758         		"			return true;\n" +
8759         		"		C aC = a instanceof D ? ((D) a).c :\n" +
8760         		"			a instanceof E ? ((E) a).c : \n" +
8761         		"			a instanceof B ? ((B) a).c :\n" +
8762         		"				null;\n" +
8763         		"		return aC != null ? foo(aC.parent.context) : false;\n" +
8764         		"	}\n" +
8765         		"	public static void main(String[] args) {\n" +
8766         		"		System.out.println(\"SUCCESS\");\n" +
8767         		"	}\n" +
8768         		"}",
8769             },
8770 			"SUCCESS");
8771 	}
test551368_2()8772 	public void test551368_2() {
8773 		this.runConformTest(
8774             new String[] {
8775         		"X.java",
8776         		"public class X {\n" +
8777         		"\n" +
8778         		"	int size;\n" +
8779         		"	char[][][] elements;\n" +
8780         		"\n" +
8781         		"	public X() {\n" +
8782         		"		this.size = 0;\n" +
8783         		"		this.elements = new char[10][][];\n" +
8784         		"	}\n" +
8785         		"\n" +
8786         		"	public void insertIntoArray(char[][][] target) {\n" +
8787         		"	}\n" +
8788         		"\n" +
8789         		"	public void add(char[][] newElement) {\n" +
8790         		"		insertIntoArray(this.size < this.elements.length ? this.elements : new char[this.elements.length * 2][][]);\n" +
8791         		"	}\n" +
8792         		"\n" +
8793         		"	public static void main(String[] args) {\n" +
8794         		"		System.out.println(\"SUCCESS\");\n" +
8795         		"	}\n" +
8796         		"}",
8797             },
8798 			"SUCCESS");
8799 	}
test551368_3()8800 	public void test551368_3() {
8801 		this.runConformTest(
8802             new String[] {
8803         		"X.java",
8804         		"class B {\n" +
8805         		"	public boolean bar() {\n" +
8806         		"		return false;\n" +
8807         		"	}\n" +
8808         		"	public void foo() {}\n" +
8809         		"}\n" +
8810         		"public class X {\n" +
8811         		"	\n" +
8812         		"	public B foo(boolean test) {\n" +
8813         		"		B b =\n" +
8814         		"			test ?\n" +
8815         		"				new B() {\n" +
8816         		"					@Override\n" +
8817         		"					public boolean bar() {\n" +
8818         		"						return true;\n" +
8819         		"					}\n" +
8820         		"				} :\n" +
8821         		"			new B();\n" +
8822         		"		b.foo();\n" +
8823         		"		return b;\n" +
8824         		"	}\n" +
8825         		"\n" +
8826         		"	public static void main(String[] args) {\n" +
8827         		"		System.out.println(\"SUCCESS\");\n" +
8828         		"	}\n" +
8829         		"}",
8830             },
8831 			"SUCCESS");
8832 	}
test558844()8833 	public void test558844() {
8834 		this.runConformTest(
8835             new String[] {
8836         		"X.java",
8837         		"public class X {\n" +
8838         		"	\n" +
8839         		"	public static void main( String[] args ) {\n" +
8840         		"		System.out.println(new X().getText());\n" +
8841         		"	}\n" +
8842         		"\n" +
8843         		"	public String getText() {\n" +
8844         		"		Long lValue1 = getValue1();\n" +
8845         		"		Long lValue2 = getValue2();\n" +
8846         		"		return ( isValue1() ? \"\" : ( lValue1 == null ? \"\" : lValue1.toString() ) + \"-\" ) + ( lValue2 == null ? \"\" : lValue2.toString() );\n" +
8847         		"	}\n" +
8848         		"\n" +
8849         		"	private Long getValue1() {\n" +
8850         		"		return Long.valueOf( 1 );\n" +
8851         		"	}\n" +
8852         		"\n" +
8853         		"	private Long getValue2() {\n" +
8854         		"		return Long.valueOf( 1 );\n" +
8855         		"	}\n" +
8856         		"\n" +
8857         		"	private boolean isValue1() {\n" +
8858         		"		return false;\n" +
8859         		"	}\n" +
8860         		"}",
8861             },
8862 			"1-1");
8863 	}
test562854()8864 	public void test562854() {
8865 		this.runConformTest(
8866 			new String[] {
8867 				"bug/Bug.java",
8868 				"package bug;\n" +
8869 				"public class Bug {\n" +
8870 				"	public static void main(String[] args) {\n" +
8871 				"		F(args.length > 1 ? pkg.Base.derived1() : pkg.Base.derived2());\n" + "	}\n" + "\n" +
8872 				"	static void F(pkg.Base base) {\n" +
8873 				"		System.out.println(base.getClass().getCanonicalName());\n" +
8874 				"	}\n" +
8875 				"}",
8876 				"pkg/Base.java",
8877 				"package pkg;\n" +
8878 				"public abstract class Base {\n" +
8879 				"	public static Derived1 derived1() {\n" +
8880 				"		return new Derived1();\n" +
8881 				"	}\n" +
8882 				"\n" +
8883 				"	public static Derived2 derived2() {\n" +
8884 				"		return new Derived2();\n" +
8885 				"	}\n" +
8886 				"}",
8887 				"pkg/Derived1.java",
8888 				"package pkg;\n" +
8889 				"class Derived1 extends Base {}",
8890 				"pkg/Derived2.java",
8891 				"package pkg;\n" +
8892 				"class Derived2 extends Derived1 {}",
8893 			},
8894 			"pkg.Derived2");
8895 	}
test562854_2()8896 	public void test562854_2() {
8897 		this.runConformTest(
8898 			new String[] {
8899 				"bug/Bug.java",
8900 				"package bug;\n" +
8901 				"public class Bug {\n" +
8902 				"	public static void main(String[] args) {\n" +
8903 				"		F(args.length > 1 ? pkg.Base.derived1() : pkg.Base.derived2());\n" + "	}\n" + "\n" +
8904 				"	static void F(pkg.Base base) {\n" +
8905 				"		System.out.println(base.getClass().getCanonicalName());\n" +
8906 				"	}\n" +
8907 				"}",
8908 				"pkg/Base.java",
8909 				"package pkg;\n" +
8910 				"public abstract class Base {\n" +
8911 				"	public static Derived1 derived1() {\n" +
8912 				"		return new Derived1();\n" +
8913 				"	}\n" +
8914 				"\n" +
8915 				"	public static Derived2 derived2() {\n" +
8916 				"		return new Derived2();\n" +
8917 				"	}\n" +
8918 				"}",
8919 				"pkg/Derived1.java",
8920 				"package pkg;\n" +
8921 				"public class Derived1 extends Base {}",
8922 				"pkg/Derived2.java",
8923 				"package pkg;\n" +
8924 				"public class Derived2 extends Derived1 {}",
8925 			},
8926 			"pkg.Derived2");
8927 	}
8928 }
8929