/*******************************************************************************
 * Copyright (c) 2006, 2014 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *     Stephan Herrmann - Contribution for
 *								bug 388800 - [1.8] adjust tests to 1.8 JRE
 *								Bug 412203 - [compiler] Internal compiler error: java.lang.IllegalArgumentException: info cannot be null
 *								Bug 400874 - [1.8][compiler] Inference infrastructure should evolve to meet JLS8 18.x (Part G of JSR335 spec)
 *******************************************************************************/
package org.eclipse.jdt.core.tests.compiler.regression;

import java.io.File;
import java.util.Map;

import junit.framework.Test;

import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.ToolFactory;
import org.eclipse.jdt.core.tests.util.Util;
import org.eclipse.jdt.core.util.ClassFileBytesDisassembler;
import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;

@SuppressWarnings({ "unchecked", "rawtypes" })
public class StackMapAttributeTest extends AbstractRegressionTest {
	public StackMapAttributeTest(String name) {
		super(name);
	}

	public static Class testClass() {
		return StackMapAttributeTest.class;
	}

	// Use this static initializer to specify subset for tests
	// All specified tests which does not belong to the class are skipped...
	static {
//		TESTS_PREFIX = "testBug95521";
//		TESTS_NAMES = new String[] { "testBug412076_" };
//		TESTS_NUMBERS = new int[] { 53 };
//		TESTS_RANGE = new int[] { 23 -1,};
	}
	public static Test suite() {
		return buildMinimalComplianceTestSuite(testClass(), F_1_6);
	}
	public void test001() throws Exception {
		this.runConformTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"	X() {}\n" +
					"	X(double i) {\n" +
					"		this(i > 0 ? null : new Object());\n" +
					"		try {\n" +
					"			foo(6, false);\n" +
					"		} catch(Exception e) {\n" +
					"			e.printStackTrace();\n" +
					"		}\n" +
					"	}\n" +
					"	X(Object o) {}\n" +
					"	int foo(int i, boolean b) {\n" +
					"		try {\n" +
					"			if (b) {\n" +
					"				return i;\n" +
					"			}\n" +
					"			return i + 1;\n" +
					"		} catch(Exception e) {\n" +
					"			return 5;\n" +
					"		}\n" +
					"	}\n" +
					"	public static void main(String[] args) {\n" +
					"		new X().foo(2, false);\n" +
					"		System.out.println(\"SUCCESS\");\n" +
					"	}\n" +
					"}",
				},
				"SUCCESS");

			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
			String actualOutput =
				disassembler.disassemble(
					classFileBytes,
					"\n",
					ClassFileBytesDisassembler.DETAILED);

			String expectedOutput =
				"  // Method descriptor #14 (D)V\n" +
				"  // Stack: 5, Locals: 4\n" +
				"  X(double i);\n" +
				"     0  aload_0 [this]\n" +
				"     1  dload_1 [i]\n" +
				"     2  dconst_0\n" +
				"     3  dcmpl\n" +
				"     4  ifle 11\n" +
				"     7  aconst_null\n" +
				"     8  goto 18\n" +
				"    11  new java.lang.Object [3]\n" +
				"    14  dup\n" +
				"    15  invokespecial java.lang.Object() [8]\n" +
				"    18  invokespecial X(java.lang.Object) [15]\n" +
				"    21  aload_0 [this]\n" +
				"    22  bipush 6\n" +
				"    24  iconst_0\n" +
				"    25  invokevirtual X.foo(int, boolean) : int [18]\n" +
				"    28  pop\n" +
				"    29  goto 37\n" +
				"    32  astore_3 [e]\n" +
				"    33  aload_3 [e]\n" +
				"    34  invokevirtual java.lang.Exception.printStackTrace() : void [22]\n" +
				"    37  return\n" +
				"      Exception Table:\n" +
				"        [pc: 21, pc: 29] -> 32 when : java.lang.Exception\n" +
				"      Line numbers:\n" +
				"        [pc: 0, line: 4]\n" +
				"        [pc: 21, line: 6]\n" +
				"        [pc: 29, line: 7]\n" +
				"        [pc: 33, line: 8]\n" +
				"        [pc: 37, line: 10]\n" +
				"      Local variable table:\n" +
				"        [pc: 0, pc: 38] local: this index: 0 type: X\n" +
				"        [pc: 0, pc: 38] local: i index: 1 type: double\n" +
				"        [pc: 33, pc: 37] local: e index: 3 type: java.lang.Exception\n" +
				"      Stack map table: number of frames 4\n" +
				"        [pc: 11, same_locals_1_stack_item, stack: {uninitialized_this}]\n" +
				"        [pc: 18, full, stack: {uninitialized_this, java.lang.Object}, locals: {uninitialized_this, double}]\n" +
				"        [pc: 32, full, stack: {java.lang.Exception}, locals: {X, double}]\n" +
				"        [pc: 37, same]\n" +
				"  \n" +
				"  // Method descriptor #17 (Ljava/lang/Object;)V\n" +
				"  // Stack: 1, Locals: 2\n" +
				"  X(java.lang.Object o);\n" +
				"    0  aload_0 [this]\n" +
				"    1  invokespecial java.lang.Object() [8]\n" +
				"    4  return\n" +
				"      Line numbers:\n" +
				"        [pc: 0, line: 11]\n" +
				"      Local variable table:\n" +
				"        [pc: 0, pc: 5] local: this index: 0 type: X\n" +
				"        [pc: 0, pc: 5] local: o index: 1 type: java.lang.Object\n" +
				"  \n" +
				"  // Method descriptor #21 (IZ)I\n" +
				"  // Stack: 2, Locals: 4\n" +
				"  int foo(int i, boolean b);\n" +
				"     0  iload_2 [b]\n" +
				"     1  ifeq 6\n" +
				"     4  iload_1 [i]\n" +
				"     5  ireturn\n" +
				"     6  iload_1 [i]\n" +
				"     7  iconst_1\n" +
				"     8  iadd\n" +
				"     9  ireturn\n" +
				"    10  astore_3 [e]\n" +
				"    11  iconst_5\n" +
				"    12  ireturn\n" +
				"      Exception Table:\n" +
				"        [pc: 0, pc: 5] -> 10 when : java.lang.Exception\n" +
				"        [pc: 6, pc: 9] -> 10 when : java.lang.Exception\n" +
				"      Line numbers:\n" +
				"        [pc: 0, line: 14]\n" +
				"        [pc: 4, line: 15]\n" +
				"        [pc: 6, line: 17]\n" +
				"        [pc: 10, line: 18]\n" +
				"        [pc: 11, line: 19]\n" +
				"      Local variable table:\n" +
				"        [pc: 0, pc: 13] local: this index: 0 type: X\n" +
				"        [pc: 0, pc: 13] local: i index: 1 type: int\n" +
				"        [pc: 0, pc: 13] local: b index: 2 type: boolean\n" +
				"        [pc: 11, pc: 13] local: e index: 3 type: java.lang.Exception\n" +
				"      Stack map table: number of frames 2\n" +
				"        [pc: 6, same]\n" +
				"        [pc: 10, same_locals_1_stack_item, stack: {java.lang.Exception}]\n";

			int index = actualOutput.indexOf(expectedOutput);
			if (index == -1 || expectedOutput.length() == 0) {
				System.out.println(Util.displayString(actualOutput, 2));
			}
			if (index == -1) {
				assertEquals("Wrong contents", expectedOutput, actualOutput);
			}
	}
	public void test002() throws Exception {
		this.runConformTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"	public static void foo(double d, boolean b) {\n" +
					"		double i;\n" +
					"		try {\n" +
					"			i = 0;\n" +
					"			i++;\n" +
					"			int j = (int) (i - 1);\n" +
					"			if (b) {\n" +
					"				double d1 = 0;\n" +
					"				if (!b) {\n" +
					"					d1 = 0;\n" +
					"				}\n" +
					"				double d2 = d + d1;\n" +
					"			}\n" +
					"			bar(j);\n" +
					"		} catch(NullPointerException e) {\n" +
					"			i = 2;\n" +
					"		} finally {\n" +
					"			i = 1;\n" +
					"		}\n" +
					"		long j = (long) (i + 1);\n" +
					"		int k = (int) j;\n" +
					"		k += j;\n" +
					"	}\n" +
					"	public static void bar(int i) {}\n" +
					"	public static void main(String[] args) {\n" +
					"		foo(0, true);\n" +
					"		System.out.println(\"SUCCESS\");\n" +
					"	}\n" +
					"}",
				},
				"SUCCESS");

			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
			String actualOutput =
				disassembler.disassemble(
					classFileBytes,
					"\n",
					ClassFileBytesDisassembler.DETAILED);

			String expectedOutput =
				"  // Method descriptor #15 (DZ)V\n" +
				"  // Stack: 4, Locals: 11\n" +
				"  public static void foo(double d, boolean b);\n" +
				"     0  dconst_0\n" +
				"     1  dstore_3 [i]\n" +
				"     2  dload_3 [i]\n" +
				"     3  dconst_1\n" +
				"     4  dadd\n" +
				"     5  dstore_3 [i]\n" +
				"     6  dload_3 [i]\n" +
				"     7  dconst_1\n" +
				"     8  dsub\n" +
				"     9  d2i\n" +
				"    10  istore 5 [j]\n" +
				"    12  iload_2 [b]\n" +
				"    13  ifeq 32\n" +
				"    16  dconst_0\n" +
				"    17  dstore 6 [d1]\n" +
				"    19  iload_2 [b]\n" +
				"    20  ifne 26\n" +
				"    23  dconst_0\n" +
				"    24  dstore 6 [d1]\n" +
				"    26  dload_0 [d]\n" +
				"    27  dload 6 [d1]\n" +
				"    29  dadd\n" +
				"    30  dstore 8\n" +
				"    32  iload 5 [j]\n" +
				"    34  invokestatic X.bar(int) : void [16]\n" +
				"    37  goto 58\n" +
				"    40  astore 5 [e]\n" +
				"    42  ldc2_w <Double 2.0> [20]\n" +
				"    45  dstore_3 [i]\n" +
				"    46  dconst_1\n" +
				"    47  dstore_3 [i]\n" +
				"    48  goto 60\n" +
				"    51  astore 10\n" +
				"    53  dconst_1\n" +
				"    54  dstore_3 [i]\n" +
				"    55  aload 10\n" +
				"    57  athrow\n" +
				"    58  dconst_1\n" +
				"    59  dstore_3 [i]\n" +
				"    60  dload_3 [i]\n" +
				"    61  dconst_1\n" +
				"    62  dadd\n" +
				"    63  d2l\n" +
				"    64  lstore 5 [j]\n" +
				"    66  lload 5 [j]\n" +
				"    68  l2i\n" +
				"    69  istore 7 [k]\n" +
				"    71  iload 7 [k]\n" +
				"    73  i2l\n" +
				"    74  lload 5 [j]\n" +
				"    76  ladd\n" +
				"    77  l2i\n" +
				"    78  istore 7 [k]\n" +
				"    80  return\n" +
				"      Exception Table:\n" +
				"        [pc: 0, pc: 37] -> 40 when : java.lang.NullPointerException\n" +
				"        [pc: 0, pc: 46] -> 51 when : any\n" +
				"      Line numbers:\n" +
				"        [pc: 0, line: 5]\n" +
				"        [pc: 2, line: 6]\n" +
				"        [pc: 6, line: 7]\n" +
				"        [pc: 12, line: 8]\n" +
				"        [pc: 16, line: 9]\n" +
				"        [pc: 19, line: 10]\n" +
				"        [pc: 23, line: 11]\n" +
				"        [pc: 26, line: 13]\n" +
				"        [pc: 32, line: 15]\n" +
				"        [pc: 37, line: 16]\n" +
				"        [pc: 42, line: 17]\n" +
				"        [pc: 46, line: 19]\n" +
				"        [pc: 51, line: 18]\n" +
				"        [pc: 53, line: 19]\n" +
				"        [pc: 55, line: 20]\n" +
				"        [pc: 58, line: 19]\n" +
				"        [pc: 60, line: 21]\n" +
				"        [pc: 66, line: 22]\n" +
				"        [pc: 71, line: 23]\n" +
				"        [pc: 80, line: 24]\n" +
				"      Local variable table:\n" +
				"        [pc: 0, pc: 81] local: d index: 0 type: double\n" +
				"        [pc: 0, pc: 81] local: b index: 2 type: boolean\n" +
				"        [pc: 2, pc: 40] local: i index: 3 type: double\n" +
				"        [pc: 46, pc: 51] local: i index: 3 type: double\n" +
				"        [pc: 55, pc: 81] local: i index: 3 type: double\n" +
				"        [pc: 12, pc: 37] local: j index: 5 type: int\n" +
				"        [pc: 19, pc: 32] local: d1 index: 6 type: double\n" +
				"        [pc: 42, pc: 46] local: e index: 5 type: java.lang.NullPointerException\n" +
				"        [pc: 66, pc: 81] local: j index: 5 type: long\n" +
				"        [pc: 71, pc: 81] local: k index: 7 type: int\n" +
				"      Stack map table: number of frames 6\n" +
				"        [pc: 26, append: {double, int, double}]\n" +
				"        [pc: 32, chop 1 local(s)]\n" +
				"        [pc: 40, full, stack: {java.lang.NullPointerException}, locals: {double, int}]\n" +
				"        [pc: 51, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" +
				"        [pc: 58, append: {double}]\n" +
				"        [pc: 60, same]\n";

			int index = actualOutput.indexOf(expectedOutput);
			if (index == -1 || expectedOutput.length() == 0) {
				System.out.println(Util.displayString(actualOutput, 2));
			}
			if (index == -1) {
				assertEquals("Wrong contents", expectedOutput, actualOutput);
			}
	}
	public void test003() throws Exception {
		this.runConformTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"	public static void foo(boolean b) {\n" +
					"		int i = 0;\n" +
					"		try {\n" +
					"			System.out.println(\"FINALLY\");\n" +
					"			i++;\n" +
					"			int j = i -1;\n" +
					"			bar(j);\n" +
					"		} catch(NullPointerException e) {\n" +
					"			e.printStackTrace();\n" +
					"		} finally {\n" +
					"			System.out.println(\"FINALLY\");\n" +
					"		}\n" +
					"	}\n" +
					"	public static void bar(int i) {}\n" +
					"	\n" +
					"	public static void main(String[] args) {\n" +
					"		foo(true);\n" +
					"		System.out.println(\"SUCCESS\");\n" +
					"	}\n" +
					"}",
				},
				"FINALLY\n" +
				"FINALLY\n" +
				"SUCCESS");

			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
			String actualOutput =
				disassembler.disassemble(
					classFileBytes,
					"\n",
					ClassFileBytesDisassembler.DETAILED);

			String expectedOutput =
				"  // Method descriptor #15 (Z)V\n" +
				"  // Stack: 2, Locals: 4\n" +
				"  public static void foo(boolean b);\n" +
				"     0  iconst_0\n" +
				"     1  istore_1 [i]\n" +
				"     2  getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
				"     5  ldc <String \"FINALLY\"> [22]\n" +
				"     7  invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" +
				"    10  iinc 1 1 [i]\n" +
				"    13  iload_1 [i]\n" +
				"    14  iconst_1\n" +
				"    15  isub\n" +
				"    16  istore_2 [j]\n" +
				"    17  iload_2 [j]\n" +
				"    18  invokestatic X.bar(int) : void [30]\n" +
				"    21  goto 51\n" +
				"    24  astore_2 [e]\n" +
				"    25  aload_2 [e]\n" +
				"    26  invokevirtual java.lang.NullPointerException.printStackTrace() : void [34]\n" +
				"    29  getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
				"    32  ldc <String \"FINALLY\"> [22]\n" +
				"    34  invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" +
				"    37  goto 59\n" +
				"    40  astore_3\n" +
				"    41  getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
				"    44  ldc <String \"FINALLY\"> [22]\n" +
				"    46  invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" +
				"    49  aload_3\n" +
				"    50  athrow\n" +
				"    51  getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
				"    54  ldc <String \"FINALLY\"> [22]\n" +
				"    56  invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" +
				"    59  return\n" +
				"      Exception Table:\n" +
				"        [pc: 2, pc: 21] -> 24 when : java.lang.NullPointerException\n" +
				"        [pc: 2, pc: 29] -> 40 when : any\n" +
				"      Line numbers:\n" +
				"        [pc: 0, line: 3]\n" +
				"        [pc: 2, line: 5]\n" +
				"        [pc: 10, line: 6]\n" +
				"        [pc: 13, line: 7]\n" +
				"        [pc: 17, line: 8]\n" +
				"        [pc: 21, line: 9]\n" +
				"        [pc: 25, line: 10]\n" +
				"        [pc: 29, line: 12]\n" +
				"        [pc: 40, line: 11]\n" +
				"        [pc: 41, line: 12]\n" +
				"        [pc: 49, line: 13]\n" +
				"        [pc: 51, line: 12]\n" +
				"        [pc: 59, line: 14]\n" +
				"      Local variable table:\n" +
				"        [pc: 0, pc: 60] local: b index: 0 type: boolean\n" +
				"        [pc: 2, pc: 60] local: i index: 1 type: int\n" +
				"        [pc: 17, pc: 21] local: j index: 2 type: int\n" +
				"        [pc: 25, pc: 29] local: e index: 2 type: java.lang.NullPointerException\n" +
				"      Stack map table: number of frames 4\n" +
				"        [pc: 24, full, stack: {java.lang.NullPointerException}, locals: {int, int}]\n" +
				"        [pc: 40, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" +
				"        [pc: 51, same]\n" +
				"        [pc: 59, same]\n";

			int index = actualOutput.indexOf(expectedOutput);
			if (index == -1 || expectedOutput.length() == 0) {
				System.out.println(Util.displayString(actualOutput, 2));
			}
			if (index == -1) {
				assertEquals("Wrong contents", expectedOutput, actualOutput);
			}
	}

	public void test004() throws Exception {
		this.runConformTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"	public static void foo(boolean b) {\n" +
					"		C c;\n" +
					"		if (b) {\n" +
					"			c = new C1();\n" +
					"		} else {\n" +
					"			c = new C2();\n" +
					"		}\n" +
					"		System.out.println();\n" +
					"	}\n" +
					"	public static void main(String[] args) {\n" +
					"		foo(true);\n" +
					"		System.out.println(\"SUCCESS\");\n" +
					"	}\n" +
					"}\n" +
					"class C {\n" +
					"	void foo() {}\n" +
					"}\n" +
					"class C1 extends C {\n" +
					"}\n" +
					"class C2 extends C {\n" +
					"}",
				},
				"SUCCESS");

			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
			String actualOutput =
				disassembler.disassemble(
					classFileBytes,
					"\n",
					ClassFileBytesDisassembler.DETAILED);

			String expectedOutput =
				"  // Method descriptor #15 (Z)V\n" +
				"  // Stack: 2, Locals: 2\n" +
				"  public static void foo(boolean b);\n" +
				"     0  iload_0 [b]\n" +
				"     1  ifeq 15\n" +
				"     4  new C1 [16]\n" +
				"     7  dup\n" +
				"     8  invokespecial C1() [18]\n" +
				"    11  astore_1 [c]\n" +
				"    12  goto 23\n" +
				"    15  new C2 [19]\n" +
				"    18  dup\n" +
				"    19  invokespecial C2() [21]\n" +
				"    22  astore_1 [c]\n" +
				"    23  getstatic java.lang.System.out : java.io.PrintStream [22]\n" +
				"    26  invokevirtual java.io.PrintStream.println() : void [28]\n" +
				"    29  return\n" +
				"      Line numbers:\n" +
				"        [pc: 0, line: 4]\n" +
				"        [pc: 4, line: 5]\n" +
				"        [pc: 12, line: 6]\n" +
				"        [pc: 15, line: 7]\n" +
				"        [pc: 23, line: 9]\n" +
				"        [pc: 29, line: 10]\n" +
				"      Local variable table:\n" +
				"        [pc: 0, pc: 30] local: b index: 0 type: boolean\n" +
				"        [pc: 12, pc: 15] local: c index: 1 type: C\n" +
				"        [pc: 23, pc: 30] local: c index: 1 type: C\n" +
				"      Stack map table: number of frames 2\n" +
				"        [pc: 15, same]\n" +
				"        [pc: 23, append: {C}]\n";

			int index = actualOutput.indexOf(expectedOutput);
			if (index == -1 || expectedOutput.length() == 0) {
				System.out.println(Util.displayString(actualOutput, 2));
			}
			if (index == -1) {
				assertEquals("Wrong contents", expectedOutput, actualOutput);
			}
	}
	public void test005() throws Exception {
		this.runConformTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"  public static void main(String args[]) {\n" +
					"    int i = 0, j, k, l;\n" +
					"    boolean b;\n" +
					"    if (i == 0 && (j = ++i) > 0)\n" +
					"      i += j;\n" +
					"    while (true) {\n" +
					"      k = 3;\n" +
					"      break;\n" +
					"    } \n" +
					"    i -= k;\n" +
					"    b = false && (i = l) > 0;\n" +
					"    if (i > 0)\n" +
					"      l = i;\n" +
					"    else\n" +
					"      l = k;\n" +
					"    j = l;\n" +
					"    if (i != -1 || j != 3 || k != 3 || l != 3)\n" +
					"      System.out.println(\"FAILED\");\n" +
					"    System.out.println(\"SUCCESS\");\n" +
					"  }\n" +
					"}",
				},
				"SUCCESS");

			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
			String actualOutput =
				disassembler.disassemble(
					classFileBytes,
					"\n",
					ClassFileBytesDisassembler.DETAILED);

			String expectedOutput =
				"  // Method descriptor #15 ([Ljava/lang/String;)V\n" +
				"  // Stack: 2, Locals: 6\n" +
				"  public static void main(java.lang.String[] args);\n" +
				"     0  iconst_0\n" +
				"     1  istore_1 [i]\n" +
				"     2  iload_1 [i]\n" +
				"     3  ifne 19\n" +
				"     6  iinc 1 1 [i]\n" +
				"     9  iload_1 [i]\n" +
				"    10  dup\n" +
				"    11  istore_2 [j]\n" +
				"    12  ifle 19\n" +
				"    15  iload_1 [i]\n" +
				"    16  iload_2 [j]\n" +
				"    17  iadd\n" +
				"    18  istore_1 [i]\n" +
				"    19  iconst_3\n" +
				"    20  istore_3 [k]\n" +
				"    21  iload_1 [i]\n" +
				"    22  iload_3 [k]\n" +
				"    23  isub\n" +
				"    24  istore_1 [i]\n" +
				"    25  iconst_0\n" +
				"    26  istore 5 [b]\n" +
				"    28  iload_1 [i]\n" +
				"    29  ifle 38\n" +
				"    32  iload_1 [i]\n" +
				"    33  istore 4 [l]\n" +
				"    35  goto 41\n" +
				"    38  iload_3 [k]\n" +
				"    39  istore 4 [l]\n" +
				"    41  iload 4 [l]\n" +
				"    43  istore_2 [j]\n" +
				"    44  iload_1 [i]\n" +
				"    45  iconst_m1\n" +
				"    46  if_icmpne 65\n" +
				"    49  iload_2 [j]\n" +
				"    50  iconst_3\n" +
				"    51  if_icmpne 65\n" +
				"    54  iload_3 [k]\n" +
				"    55  iconst_3\n" +
				"    56  if_icmpne 65\n" +
				"    59  iload 4 [l]\n" +
				"    61  iconst_3\n" +
				"    62  if_icmpeq 73\n" +
				"    65  getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
				"    68  ldc <String \"FAILED\"> [22]\n" +
				"    70  invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" +
				"    73  getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
				"    76  ldc <String \"SUCCESS\"> [30]\n" +
				"    78  invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" +
				"    81  return\n" +
				"      Line numbers:\n" +
				"        [pc: 0, line: 3]\n" +
				"        [pc: 2, line: 5]\n" +
				"        [pc: 15, line: 6]\n" +
				"        [pc: 19, line: 8]\n" +
				"        [pc: 21, line: 9]\n" +
				"        [pc: 22, line: 11]\n" +
				"        [pc: 25, line: 12]\n" +
				"        [pc: 28, line: 13]\n" +
				"        [pc: 32, line: 14]\n" +
				"        [pc: 38, line: 16]\n" +
				"        [pc: 41, line: 17]\n" +
				"        [pc: 44, line: 18]\n" +
				"        [pc: 65, line: 19]\n" +
				"        [pc: 73, line: 20]\n" +
				"        [pc: 81, line: 21]\n" +
				"      Local variable table:\n" +
				"        [pc: 0, pc: 82] local: args index: 0 type: java.lang.String[]\n" +
				"        [pc: 2, pc: 82] local: i index: 1 type: int\n" +
				"        [pc: 12, pc: 19] local: j index: 2 type: int\n" +
				"        [pc: 44, pc: 82] local: j index: 2 type: int\n" +
				"        [pc: 21, pc: 82] local: k index: 3 type: int\n" +
				"        [pc: 35, pc: 38] local: l index: 4 type: int\n" +
				"        [pc: 41, pc: 82] local: l index: 4 type: int\n" +
				"        [pc: 28, pc: 82] local: b index: 5 type: boolean\n" +
				"      Stack map table: number of frames 5\n" +
				"        [pc: 19, append: {int}]\n" +
				"        [pc: 38, full, stack: {}, locals: {java.lang.String[], int, _, int, _, int}]\n" +
				"        [pc: 41, full, stack: {}, locals: {java.lang.String[], int, _, int, int, int}]\n" +
				"        [pc: 65, full, stack: {}, locals: {java.lang.String[], int, int, int, int, int}]\n" +
				"        [pc: 73, same]\n";

			int index = actualOutput.indexOf(expectedOutput);
			if (index == -1 || expectedOutput.length() == 0) {
				System.out.println(Util.displayString(actualOutput, 2));
			}
			if (index == -1) {
				assertEquals("Wrong contents", expectedOutput, actualOutput);
			}
	}

	public void test006() throws Exception {
		this.runConformTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"	void foo (int n) {\n" +
					"   	synchronized (this) {\n" +
					"       	switch (n) {\n" +
					"       		case 1:\n" +
					"       		throw new NullPointerException();\n" +
					"			}\n" +
					"		}\n" +
					"	}\n" +
					"    public static void main(String args[]) {\n" +
					"    	try {\n" +
					"	    	new X().foo(1);\n" +
					"    	} catch(Exception e) {\n" +
					"	        System.out.println(\"SUCCESS\"); \n" +
					"    	}\n" +
					"    } \n" +
					"}",
				},
				"SUCCESS");

			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
			String actualOutput =
				disassembler.disassemble(
					classFileBytes,
					"\n",
					ClassFileBytesDisassembler.DETAILED);

			String expectedOutput =
				"  // Method descriptor #15 (I)V\n" +
				"  // Stack: 2, Locals: 3\n" +
				"  void foo(int n);\n" +
				"     0  aload_0 [this]\n" +
				"     1  dup\n" +
				"     2  astore_2\n" +
				"     3  monitorenter\n" +
				"     4  iload_1 [n]\n" +
				"     5  tableswitch default: 32\n" +
				"          case 1: 24\n" +
				"    24  new java.lang.NullPointerException [16]\n" +
				"    27  dup\n" +
				"    28  invokespecial java.lang.NullPointerException() [18]\n" +
				"    31  athrow\n" +
				"    32  aload_2\n" +
				"    33  monitorexit\n" +
				"    34  goto 40\n" +
				"    37  aload_2\n" +
				"    38  monitorexit\n" +
				"    39  athrow\n" +
				"    40  return\n" +
				"      Exception Table:\n" +
				"        [pc: 4, pc: 34] -> 37 when : any\n" +
				"        [pc: 37, pc: 39] -> 37 when : any\n" +
				"      Line numbers:\n" +
				"        [pc: 0, line: 3]\n" +
				"        [pc: 4, line: 4]\n" +
				"        [pc: 24, line: 6]\n" +
				"        [pc: 32, line: 3]\n" +
				"        [pc: 40, line: 9]\n" +
				"      Local variable table:\n" +
				"        [pc: 0, pc: 41] local: this index: 0 type: X\n" +
				"        [pc: 0, pc: 41] local: n index: 1 type: int\n" +
				"      Stack map table: number of frames 4\n" +
				"        [pc: 24, append: {X}]\n" +
				"        [pc: 32, same]\n" +
				"        [pc: 37, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" +
				"        [pc: 40, chop 1 local(s)]\n";

			int index = actualOutput.indexOf(expectedOutput);
			if (index == -1 || expectedOutput.length() == 0) {
				System.out.println(Util.displayString(actualOutput, 2));
			}
			if (index == -1) {
				assertEquals("Wrong contents", expectedOutput, actualOutput);
			}
	}

	public void test007() throws Exception {
		this.runConformTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"	StringBuffer foo2(boolean b) {\n" +
					"		System.out.println(\"foo2\");\n" +
					"		return new StringBuffer(b ? \"true\" : \"false\");\n" +
					"	}\n" +
					"	public static void main(String[] args) {\n" +
					"		System.out.println(\"SUCCESS\");\n" +
					"	}\n" +
					"}",
				},
				"SUCCESS");

			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
			String actualOutput =
				disassembler.disassemble(
					classFileBytes,
					"\n",
					ClassFileBytesDisassembler.DETAILED);

			String expectedOutput =
				"  // Method descriptor #15 (Z)Ljava/lang/StringBuffer;\n" +
				"  // Stack: 3, Locals: 2\n" +
				"  java.lang.StringBuffer foo2(boolean b);\n" +
				"     0  getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
				"     3  ldc <String \"foo2\"> [22]\n" +
				"     5  invokevirtual java.io.PrintStream.println(java.lang.String) : void [23]\n" +
				"     8  new java.lang.StringBuffer [29]\n" +
				"    11  dup\n" +
				"    12  iload_1 [b]\n" +
				"    13  ifeq 21\n" +
				"    16  ldc <String \"true\"> [31]\n" +
				"    18  goto 23\n" +
				"    21  ldc <String \"false\"> [33]\n" +
				"    23  invokespecial java.lang.StringBuffer(java.lang.String) [35]\n" +
				"    26  areturn\n" +
				"      Line numbers:\n" +
				"        [pc: 0, line: 3]\n" +
				"        [pc: 8, line: 4]\n" +
				"      Local variable table:\n" +
				"        [pc: 0, pc: 27] local: this index: 0 type: X\n" +
				"        [pc: 0, pc: 27] local: b index: 1 type: boolean\n" +
				"      Stack map table: number of frames 2\n" +
				"        [pc: 21, full, stack: {uninitialized(8), uninitialized(8)}, locals: {X, int}]\n" +
				"        [pc: 23, full, stack: {uninitialized(8), uninitialized(8), java.lang.String}, locals: {X, int}]\n";

			int index = actualOutput.indexOf(expectedOutput);
			if (index == -1 || expectedOutput.length() == 0) {
				System.out.println(Util.displayString(actualOutput, 2));
			}
			if (index == -1) {
				assertEquals("Wrong contents", expectedOutput, actualOutput);
			}
	}
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=141252
	public void test008() throws Exception {
		this.runConformTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"	public static void main(String[] args) {\n" +
					"		int foo = 0;\n" +
					"		String bar = \"zero\";\n" +
					"		System.out.println((foo != 0) ? foo : bar);\n" +
					"	}\n" +
					"	<T extends Comparable<?>> void foo(T foo) {\n" +
					"		T bar = null;\n" +
					"		System.out.println((foo != null) ? foo : bar);\n" +
					"	}	\n" +
					"}\n",
				},
				"zero");

			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
			String actualOutput =
				disassembler.disassemble(
					classFileBytes,
					"\n",
					ClassFileBytesDisassembler.DETAILED);

			String expectedOutput =
					"  // Method descriptor #15 ([Ljava/lang/String;)V\n" +
					"  // Stack: 2, Locals: 3\n" +
					"  public static void main(java.lang.String[] args);\n" +
					"     0  iconst_0\n" +
					"     1  istore_1 [foo]\n" +
					"     2  ldc <String \"zero\"> [16]\n" +
					"     4  astore_2 [bar]\n" +
					"     5  getstatic java.lang.System.out : java.io.PrintStream [18]\n" +
					"     8  iload_1 [foo]\n" +
					"     9  ifeq 19\n" +
					"    12  iload_1 [foo]\n" +
					"    13  invokestatic java.lang.Integer.valueOf(int) : java.lang.Integer [24]\n" +
					"    16  goto 20\n" +
					"    19  aload_2 [bar]\n" +
					"    20  invokevirtual java.io.PrintStream.println(java.lang.Object) : void [30]\n" +
					"    23  return\n" +
					"      Line numbers:\n" +
					"        [pc: 0, line: 3]\n" +
					"        [pc: 2, line: 4]\n" +
					"        [pc: 5, line: 5]\n" +
					"        [pc: 23, line: 6]\n" +
					"      Local variable table:\n" +
					"        [pc: 0, pc: 24] local: args index: 0 type: java.lang.String[]\n" +
					"        [pc: 2, pc: 24] local: foo index: 1 type: int\n" +
					"        [pc: 5, pc: 24] local: bar index: 2 type: java.lang.String\n" +
					"      Stack map table: number of frames 2\n" +
					"        [pc: 19, full, stack: {java.io.PrintStream}, locals: {java.lang.String[], int, java.lang.String}]\n" +
					(this.complianceLevel >= ClassFileConstants.JDK1_8 ? // in 1.8 the ternary is resolved to its target type j.l.Object
					"        [pc: 20, full, stack: {java.io.PrintStream, java.lang.Object}, locals: {java.lang.String[], int, java.lang.String}]\n" :
					"        [pc: 20, full, stack: {java.io.PrintStream, java.lang.Comparable}, locals: {java.lang.String[], int, java.lang.String}]\n") +
					"  \n" +
					(this.complianceLevel >= ClassFileConstants.JDK1_8 ?
					"  // Method descriptor #46 (Ljava/lang/Comparable;)V\n" :
					"  // Method descriptor #48 (Ljava/lang/Comparable;)V\n") +
					"  // Signature: <T::Ljava/lang/Comparable<*>;>(TT;)V\n" +
					"  // Stack: 2, Locals: 3\n" +
					"  void foo(java.lang.Comparable foo);\n" +
					"     0  aconst_null\n" +
					"     1  astore_2 [bar]\n" +
					"     2  getstatic java.lang.System.out : java.io.PrintStream [18]\n" +
					"     5  aload_1 [foo]\n" +
					"     6  ifnull 13\n" +
					"     9  aload_1 [foo]\n" +
					"    10  goto 14\n" +
					"    13  aload_2 [bar]\n" +
					"    14  invokevirtual java.io.PrintStream.println(java.lang.Object) : void [30]\n" +
					"    17  return\n" +
					"      Line numbers:\n" +
					"        [pc: 0, line: 8]\n" +
					"        [pc: 2, line: 9]\n" +
					"        [pc: 17, line: 10]\n" +
					"      Local variable table:\n" +
					"        [pc: 0, pc: 18] local: this index: 0 type: X\n" +
					"        [pc: 0, pc: 18] local: foo index: 1 type: java.lang.Comparable\n" +
					"        [pc: 2, pc: 18] local: bar index: 2 type: java.lang.Comparable\n" +
					"      Local variable type table:\n" +
					"        [pc: 0, pc: 18] local: foo index: 1 type: T\n" +
					"        [pc: 2, pc: 18] local: bar index: 2 type: T\n" +
					"      Stack map table: number of frames 2\n" +
					"        [pc: 13, full, stack: {java.io.PrintStream}, locals: {X, java.lang.Comparable, java.lang.Comparable}]\n" +
					(this.complianceLevel < ClassFileConstants.JDK1_8 ?
					"        [pc: 14, full, stack: {java.io.PrintStream, java.lang.Comparable}, locals: {X, java.lang.Comparable, java.lang.Comparable}]\n"
					: // in 1.8 the ternary is resolved to its target type j.l.Object
					"        [pc: 14, full, stack: {java.io.PrintStream, java.lang.Object}, locals: {X, java.lang.Comparable, java.lang.Comparable}]\n"
					);

			int index = actualOutput.indexOf(expectedOutput);
			if (index == -1 || expectedOutput.length() == 0) {
				System.out.println(Util.displayString(actualOutput, 2));
			}
			if (index == -1) {
				assertEquals("Wrong contents", expectedOutput, actualOutput);
			}
	}

	public void test009() throws Exception {
		this.runConformTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"	String s;\n" +
					"	X() {\n" +
					"        int i = 0;\n" +
					"        if (s == null) {\n" +
					"        	System.out.print(\"PASSED\");\n" +
					"        } else {\n" +
					"        	System.out.print(\"FAILED\");\n" +
					"        }\n" +
					"        System.out.print(\"DONE\" + i);\n" +
					"	}\n" +
					"    public static void main(String argv[]) {\n" +
					"    	new X();\n" +
					"    }\n" +
					"}",
				},
				"PASSEDDONE0");

			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
			String actualOutput =
				disassembler.disassemble(
					classFileBytes,
					"\n",
					ClassFileBytesDisassembler.DETAILED);

			String expectedOutput =
				"  // Method descriptor #8 ()V\n" +
				"  // Stack: 4, Locals: 2\n" +
				"  X();\n" +
				"     0  aload_0 [this]\n" +
				"     1  invokespecial java.lang.Object() [10]\n" +
				"     4  iconst_0\n" +
				"     5  istore_1 [i]\n" +
				"     6  aload_0 [this]\n" +
				"     7  getfield X.s : java.lang.String [12]\n" +
				"    10  ifnonnull 24\n" +
				"    13  getstatic java.lang.System.out : java.io.PrintStream [14]\n" +
				"    16  ldc <String \"PASSED\"> [20]\n" +
				"    18  invokevirtual java.io.PrintStream.print(java.lang.String) : void [22]\n" +
				"    21  goto 32\n" +
				"    24  getstatic java.lang.System.out : java.io.PrintStream [14]\n" +
				"    27  ldc <String \"FAILED\"> [28]\n" +
				"    29  invokevirtual java.io.PrintStream.print(java.lang.String) : void [22]\n" +
				"    32  getstatic java.lang.System.out : java.io.PrintStream [14]\n" +
				"    35  new java.lang.StringBuilder [30]\n" +
				"    38  dup\n" +
				"    39  ldc <String \"DONE\"> [32]\n" +
				"    41  invokespecial java.lang.StringBuilder(java.lang.String) [34]\n" +
				"    44  iload_1 [i]\n" +
				"    45  invokevirtual java.lang.StringBuilder.append(int) : java.lang.StringBuilder [36]\n" +
				"    48  invokevirtual java.lang.StringBuilder.toString() : java.lang.String [40]\n" +
				"    51  invokevirtual java.io.PrintStream.print(java.lang.String) : void [22]\n" +
				"    54  return\n" +
				"      Line numbers:\n" +
				"        [pc: 0, line: 3]\n" +
				"        [pc: 4, line: 4]\n" +
				"        [pc: 6, line: 5]\n" +
				"        [pc: 13, line: 6]\n" +
				"        [pc: 21, line: 7]\n" +
				"        [pc: 24, line: 8]\n" +
				"        [pc: 32, line: 10]\n" +
				"        [pc: 54, line: 11]\n" +
				"      Local variable table:\n" +
				"        [pc: 0, pc: 55] local: this index: 0 type: X\n" +
				"        [pc: 6, pc: 55] local: i index: 1 type: int\n" +
				"      Stack map table: number of frames 2\n" +
				"        [pc: 24, full, stack: {}, locals: {X, int}]\n" +
				"        [pc: 32, same]\n";

			int index = actualOutput.indexOf(expectedOutput);
			if (index == -1 || expectedOutput.length() == 0) {
				System.out.println(Util.displayString(actualOutput, 2));
			}
			if (index == -1) {
				assertEquals("Wrong contents", expectedOutput, actualOutput);
			}
	}

	public void test010() throws Exception {
		this.runConformTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"	public static void main(String[] args) {\n" +
					"		int[] tab = new int[0];\n" +
					"		Object o = tab;\n" +
					"		Object o1 = null;\n" +
					"		if (tab.length == 0) {\n" +
					"			System.out.println(tab.getClass());\n" +
					"		}\n" +
					"		o1 = tab.clone();\n" +
					"	}\n" +
					"}",
				},
				"class [I");

			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
			String actualOutput =
				disassembler.disassemble(
					classFileBytes,
					"\n",
					ClassFileBytesDisassembler.DETAILED);

			String expectedOutput =
				"  // Method descriptor #15 ([Ljava/lang/String;)V\n" +
				"  // Stack: 2, Locals: 4\n" +
				"  public static void main(java.lang.String[] args);\n" +
				"     0  iconst_0\n" +
				"     1  newarray int [10]\n" +
				"     3  astore_1 [tab]\n" +
				"     4  aload_1 [tab]\n" +
				"     5  astore_2 [o]\n" +
				"     6  aconst_null\n" +
				"     7  astore_3 [o1]\n" +
				"     8  aload_1 [tab]\n" +
				"     9  arraylength\n" +
				"    10  ifne 23\n" +
				"    13  getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
				"    16  aload_1 [tab]\n" +
				"    17  invokevirtual java.lang.Object.getClass() : java.lang.Class [22]\n" +
				"    20  invokevirtual java.io.PrintStream.println(java.lang.Object) : void [26]\n" +
				"    23  aload_1 [tab]\n" +
				"    24  invokevirtual int[].clone() : java.lang.Object [32]\n" +
				"    27  astore_3 [o1]\n" +
				"    28  return\n" +
				"      Line numbers:\n" +
				"        [pc: 0, line: 3]\n" +
				"        [pc: 4, line: 4]\n" +
				"        [pc: 6, line: 5]\n" +
				"        [pc: 8, line: 6]\n" +
				"        [pc: 13, line: 7]\n" +
				"        [pc: 23, line: 9]\n" +
				"        [pc: 28, line: 10]\n" +
				"      Local variable table:\n" +
				"        [pc: 0, pc: 29] local: args index: 0 type: java.lang.String[]\n" +
				"        [pc: 4, pc: 29] local: tab index: 1 type: int[]\n" +
				"        [pc: 6, pc: 29] local: o index: 2 type: java.lang.Object\n" +
				"        [pc: 8, pc: 29] local: o1 index: 3 type: java.lang.Object\n" +
				"      Stack map table: number of frames 1\n" +
				"        [pc: 23, append: {int[], java.lang.Object, java.lang.Object}]\n";

			int index = actualOutput.indexOf(expectedOutput);
			if (index == -1 || expectedOutput.length() == 0) {
				System.out.println(Util.displayString(actualOutput, 2));
			}
			if (index == -1) {
				assertEquals("Wrong contents", expectedOutput, actualOutput);
			}
	}

	public void test011() throws Exception {
		this.runConformTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"	Object o;\n" +
					"\n" +
					"	public static void main(String[] args) {\n" +
					"		X x;\n" +
					"		for (int i = 0; i < 10; i++) {\n" +
					"			if (i < 90) {\n" +
					"				x = new X();\n" +
					"				if (i > 4) {\n" +
					"					x.o = new Object();\n" +
					"				} else {\n" +
					"					x.o = \"0\";\n" +
					"				}\n" +
					"				switch (i) {\n" +
					"					case 0:\n" +
					"						if (x.o instanceof String) {\n" +
					"							System.out.print(\"1\");\n" +
					"						}\n" +
					"						break;\n" +
					"					default: {\n" +
					"						Object diff = x.o;\n" +
					"						if (diff != null) {\n" +
					"							System.out.print(\"2\");\n" +
					"						}\n" +
					"					}\n" +
					"				}\n" +
					"			}\n" +
					"		}\n" +
					"	}\n" +
					"}",
				},
				"1222222222");

			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
			String actualOutput =
				disassembler.disassemble(
					classFileBytes,
					"\n",
					ClassFileBytesDisassembler.DETAILED);

			String expectedOutput =
				"  // Method descriptor #17 ([Ljava/lang/String;)V\n" +
				"  // Stack: 3, Locals: 4\n" +
				"  public static void main(java.lang.String[] args);\n" +
				"      0  iconst_0\n" +
				"      1  istore_2 [i]\n" +
				"      2  goto 105\n" +
				"      5  iload_2 [i]\n" +
				"      6  bipush 90\n" +
				"      8  if_icmpge 102\n" +
				"     11  new X [1]\n" +
				"     14  dup\n" +
				"     15  invokespecial X() [18]\n" +
				"     18  astore_1 [x]\n" +
				"     19  iload_2 [i]\n" +
				"     20  iconst_4\n" +
				"     21  if_icmple 38\n" +
				"     24  aload_1 [x]\n" +
				"     25  new java.lang.Object [3]\n" +
				"     28  dup\n" +
				"     29  invokespecial java.lang.Object() [10]\n" +
				"     32  putfield X.o : java.lang.Object [19]\n" +
				"     35  goto 44\n" +
				"     38  aload_1 [x]\n" +
				"     39  ldc <String \"0\"> [21]\n" +
				"     41  putfield X.o : java.lang.Object [19]\n" +
				"     44  iload_2 [i]\n" +
				"     45  tableswitch default: 85\n" +
				"          case 0: 64\n" +
				"     64  aload_1 [x]\n" +
				"     65  getfield X.o : java.lang.Object [19]\n" +
				"     68  instanceof java.lang.String [23]\n" +
				"     71  ifeq 102\n" +
				"     74  getstatic java.lang.System.out : java.io.PrintStream [25]\n" +
				"     77  ldc <String \"1\"> [31]\n" +
				"     79  invokevirtual java.io.PrintStream.print(java.lang.String) : void [33]\n" +
				"     82  goto 102\n" +
				"     85  aload_1 [x]\n" +
				"     86  getfield X.o : java.lang.Object [19]\n" +
				"     89  astore_3 [diff]\n" +
				"     90  aload_3 [diff]\n" +
				"     91  ifnull 102\n" +
				"     94  getstatic java.lang.System.out : java.io.PrintStream [25]\n" +
				"     97  ldc <String \"2\"> [39]\n" +
				"     99  invokevirtual java.io.PrintStream.print(java.lang.String) : void [33]\n" +
				"    102  iinc 2 1 [i]\n" +
				"    105  iload_2 [i]\n" +
				"    106  bipush 10\n" +
				"    108  if_icmplt 5\n" +
				"    111  return\n" +
				"      Line numbers:\n" +
				"        [pc: 0, line: 6]\n" +
				"        [pc: 5, line: 7]\n" +
				"        [pc: 11, line: 8]\n" +
				"        [pc: 19, line: 9]\n" +
				"        [pc: 24, line: 10]\n" +
				"        [pc: 35, line: 11]\n" +
				"        [pc: 38, line: 12]\n" +
				"        [pc: 44, line: 14]\n" +
				"        [pc: 64, line: 16]\n" +
				"        [pc: 74, line: 17]\n" +
				"        [pc: 82, line: 19]\n" +
				"        [pc: 85, line: 21]\n" +
				"        [pc: 90, line: 22]\n" +
				"        [pc: 94, line: 23]\n" +
				"        [pc: 102, line: 6]\n" +
				"        [pc: 111, line: 29]\n" +
				"      Local variable table:\n" +
				"        [pc: 0, pc: 112] local: args index: 0 type: java.lang.String[]\n" +
				"        [pc: 19, pc: 102] local: x index: 1 type: X\n" +
				"        [pc: 2, pc: 111] local: i index: 2 type: int\n" +
				"        [pc: 90, pc: 102] local: diff index: 3 type: java.lang.Object\n" +
				"      Stack map table: number of frames 7\n" +
				"        [pc: 5, full, stack: {}, locals: {java.lang.String[], _, int}]\n" +
				"        [pc: 38, full, stack: {}, locals: {java.lang.String[], X, int}]\n" +
				"        [pc: 44, same]\n" +
				"        [pc: 64, same]\n" +
				"        [pc: 85, same]\n" +
				"        [pc: 102, full, stack: {}, locals: {java.lang.String[], _, int}]\n" +
				"        [pc: 105, same]\n";

			int index = actualOutput.indexOf(expectedOutput);
			if (index == -1 || expectedOutput.length() == 0) {
				System.out.println(Util.displayString(actualOutput, 2));
			}
			if (index == -1) {
				assertEquals("Wrong contents", expectedOutput, actualOutput);
			}
	}

	public void test012() throws Exception {
		this.runConformTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"	public static void main(String[] args) {\n" +
					"		X x;\n" +
					"		Object o;\n" +
					"		for (int i = 0; i < 10; i++) {\n" +
					"			if (i < 90) {\n" +
					"				x = new X();\n" +
					"				if (i > 4) {\n" +
					"					o = new Object();\n" +
					"				} else {\n" +
					"					o = null;\n" +
					"				}\n" +
					"				switch (i) {\n" +
					"					case 0:\n" +
					"						if (o instanceof String) {\n" +
					"							System.out.print(\"1\");\n" +
					"							return;\n" +
					"						} else {\n" +
					"							break;\n" +
					"						}\n" +
					"					default: {\n" +
					"						Object diff = o;\n" +
					"						if (diff != null) {\n" +
					"							System.out.print(\"2\");\n" +
					"						}\n" +
					"						break;\n" +
					"					}\n" +
					"				}\n" +
					"				System.out.print(\"3\");\n" +
					"			}\n" +
					"		}\n" +
					"	}\n" +
					"}",
				},
				"333332323232323");

			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
			String actualOutput =
				disassembler.disassemble(
					classFileBytes,
					"\n",
					ClassFileBytesDisassembler.DETAILED);

			String expectedOutput =
				"  // Method descriptor #15 ([Ljava/lang/String;)V\n" +
				"  // Stack: 2, Locals: 5\n" +
				"  public static void main(java.lang.String[] args);\n" +
				"      0  iconst_0\n" +
				"      1  istore_3 [i]\n" +
				"      2  goto 99\n" +
				"      5  iload_3 [i]\n" +
				"      6  bipush 90\n" +
				"      8  if_icmpge 96\n" +
				"     11  new X [1]\n" +
				"     14  dup\n" +
				"     15  invokespecial X() [16]\n" +
				"     18  astore_1 [x]\n" +
				"     19  iload_3 [i]\n" +
				"     20  iconst_4\n" +
				"     21  if_icmple 35\n" +
				"     24  new java.lang.Object [3]\n" +
				"     27  dup\n" +
				"     28  invokespecial java.lang.Object() [8]\n" +
				"     31  astore_2 [o]\n" +
				"     32  goto 37\n" +
				"     35  aconst_null\n" +
				"     36  astore_2 [o]\n" +
				"     37  iload_3 [i]\n" +
				"     38  tableswitch default: 72\n" +
				"          case 0: 56\n" +
				"     56  aload_2 [o]\n" +
				"     57  instanceof java.lang.String [17]\n" +
				"     60  ifeq 88\n" +
				"     63  getstatic java.lang.System.out : java.io.PrintStream [19]\n" +
				"     66  ldc <String \"1\"> [25]\n" +
				"     68  invokevirtual java.io.PrintStream.print(java.lang.String) : void [27]\n" +
				"     71  return\n" +
				"     72  aload_2 [o]\n" +
				"     73  astore 4 [diff]\n" +
				"     75  aload 4 [diff]\n" +
				"     77  ifnull 88\n" +
				"     80  getstatic java.lang.System.out : java.io.PrintStream [19]\n" +
				"     83  ldc <String \"2\"> [33]\n" +
				"     85  invokevirtual java.io.PrintStream.print(java.lang.String) : void [27]\n" +
				"     88  getstatic java.lang.System.out : java.io.PrintStream [19]\n" +
				"     91  ldc <String \"3\"> [35]\n" +
				"     93  invokevirtual java.io.PrintStream.print(java.lang.String) : void [27]\n" +
				"     96  iinc 3 1 [i]\n" +
				"     99  iload_3 [i]\n" +
				"    100  bipush 10\n" +
				"    102  if_icmplt 5\n" +
				"    105  return\n" +
				"      Line numbers:\n" +
				"        [pc: 0, line: 5]\n" +
				"        [pc: 5, line: 6]\n" +
				"        [pc: 11, line: 7]\n" +
				"        [pc: 19, line: 8]\n" +
				"        [pc: 24, line: 9]\n" +
				"        [pc: 32, line: 10]\n" +
				"        [pc: 35, line: 11]\n" +
				"        [pc: 37, line: 13]\n" +
				"        [pc: 56, line: 15]\n" +
				"        [pc: 63, line: 16]\n" +
				"        [pc: 71, line: 17]\n" +
				"        [pc: 72, line: 22]\n" +
				"        [pc: 75, line: 23]\n" +
				"        [pc: 80, line: 24]\n" +
				"        [pc: 88, line: 29]\n" +
				"        [pc: 96, line: 5]\n" +
				"        [pc: 105, line: 32]\n" +
				"      Local variable table:\n" +
				"        [pc: 0, pc: 106] local: args index: 0 type: java.lang.String[]\n" +
				"        [pc: 19, pc: 96] local: x index: 1 type: X\n" +
				"        [pc: 32, pc: 35] local: o index: 2 type: java.lang.Object\n" +
				"        [pc: 37, pc: 96] local: o index: 2 type: java.lang.Object\n" +
				"        [pc: 2, pc: 105] local: i index: 3 type: int\n" +
				"        [pc: 75, pc: 88] local: diff index: 4 type: java.lang.Object\n" +
				"      Stack map table: number of frames 8\n" +
				"        [pc: 5, full, stack: {}, locals: {java.lang.String[], _, _, int}]\n" +
				"        [pc: 35, full, stack: {}, locals: {java.lang.String[], X, _, int}]\n" +
				"        [pc: 37, full, stack: {}, locals: {java.lang.String[], X, java.lang.Object, int}]\n" +
				"        [pc: 56, same]\n" +
				"        [pc: 72, same]\n" +
				"        [pc: 88, same]\n" +
				"        [pc: 96, full, stack: {}, locals: {java.lang.String[], _, _, int}]\n" +
				"        [pc: 99, same]\n";

			int index = actualOutput.indexOf(expectedOutput);
			if (index == -1 || expectedOutput.length() == 0) {
				System.out.println(Util.displayString(actualOutput, 2));
			}
			if (index == -1) {
				assertEquals("Wrong contents", expectedOutput, actualOutput);
			}
	}

	public void test013() throws Exception {
		this.runConformTest(
            new String[] {
            		"X.java",
            		"public class X {\n" +
            		"\n" +
            		"  void foo() {\n" +
            		"      synchronized (this) {\n" +
            		"        int n=0;\n" +
            		"        try {\n" +
            		"           Thread.sleep(n); \n" +
            		"        } catch (Exception e ) {\n" +
            		"        }\n" +
            		"     }\n" +
            		"  }\n" +
            		"  \n" +
            		"  public static void main(String[] args) {}\n" +
            		"}",
            },
			"");

		ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
		byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
		String actualOutput =
			disassembler.disassemble(
                 classFileBytes,
                 "\n",
                 ClassFileBytesDisassembler.DETAILED);

		String expectedOutput =
			"  // Method descriptor #6 ()V\n" +
			"  // Stack: 2, Locals: 4\n" +
			"  void foo();\n" +
			"     0  aload_0 [this]\n" +
			"     1  dup\n" +
			"     2  astore_1\n" +
			"     3  monitorenter\n" +
			"     4  iconst_0\n" +
			"     5  istore_2 [n]\n" +
			"     6  iload_2 [n]\n" +
			"     7  i2l\n" +
			"     8  invokestatic java.lang.Thread.sleep(long) : void [15]\n" +
			"    11  goto 15\n" +
			"    14  astore_3\n" +
			"    15  aload_1\n" +
			"    16  monitorexit\n" +
			"    17  goto 23\n" +
			"    20  aload_1\n" +
			"    21  monitorexit\n" +
			"    22  athrow\n" +
			"    23  return\n" +
			"      Exception Table:\n" +
			"        [pc: 6, pc: 11] -> 14 when : java.lang.Exception\n" +
			"        [pc: 4, pc: 17] -> 20 when : any\n" +
			"        [pc: 20, pc: 22] -> 20 when : any\n" +
			"      Line numbers:\n" +
			"        [pc: 0, line: 4]\n" +
			"        [pc: 4, line: 5]\n" +
			"        [pc: 6, line: 7]\n" +
			"        [pc: 11, line: 8]\n" +
			"        [pc: 15, line: 4]\n" +
			"        [pc: 23, line: 11]\n" +
			"      Local variable table:\n" +
			"        [pc: 0, pc: 24] local: this index: 0 type: X\n" +
			"        [pc: 6, pc: 15] local: n index: 2 type: int\n" +
			"      Stack map table: number of frames 4\n" +
			"        [pc: 14, full, stack: {java.lang.Exception}, locals: {X, X, int}]\n" +
			"        [pc: 15, chop 1 local(s)]\n" +
			"        [pc: 20, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" +
			"        [pc: 23, chop 1 local(s)]\n";

		int index = actualOutput.indexOf(expectedOutput);
		if (index == -1 || expectedOutput.length() == 0) {
			System.out.println(Util.displayString(actualOutput, 2));
		}
		if (index == -1) {
			assertEquals("Wrong contents", expectedOutput, actualOutput);
		}
	}

	public void test014() throws Exception {
		this.runConformTest(
            new String[] {
            		"X.java",
            		"public class X {\n" +
            		"    X() {\n" +
            		"		final int i;\n" +
            		"		synchronized (this) {\n" +
            		"		    i = 8;\n" +
            		"		}\n" +
            		"    }  \n" +
            		"  public static void main(String[] args) {}\n" +
            		"}",
            },
			"");

		ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
		byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
		String actualOutput =
			disassembler.disassemble(
                 classFileBytes,
                 "\n",
                 ClassFileBytesDisassembler.DETAILED);

		String expectedOutput =
			"  // Method descriptor #6 ()V\n" +
			"  // Stack: 2, Locals: 3\n" +
			"  X();\n" +
			"     0  aload_0 [this]\n" +
			"     1  invokespecial java.lang.Object() [8]\n" +
			"     4  aload_0 [this]\n" +
			"     5  dup\n" +
			"     6  astore_2\n" +
			"     7  monitorenter\n" +
			"     8  bipush 8\n" +
			"    10  istore_1 [i]\n" +
			"    11  aload_2\n" +
			"    12  monitorexit\n" +
			"    13  goto 19\n" +
			"    16  aload_2\n" +
			"    17  monitorexit\n" +
			"    18  athrow\n" +
			"    19  return\n" +
			"      Exception Table:\n" +
			"        [pc: 8, pc: 13] -> 16 when : any\n" +
			"        [pc: 16, pc: 18] -> 16 when : any\n" +
			"      Line numbers:\n" +
			"        [pc: 0, line: 2]\n" +
			"        [pc: 4, line: 4]\n" +
			"        [pc: 8, line: 5]\n" +
			"        [pc: 11, line: 4]\n" +
			"        [pc: 19, line: 7]\n" +
			"      Local variable table:\n" +
			"        [pc: 0, pc: 20] local: this index: 0 type: X\n" +
			"        [pc: 11, pc: 16] local: i index: 1 type: int\n" +
			"        [pc: 19, pc: 20] local: i index: 1 type: int\n" +
			"      Stack map table: number of frames 2\n" +
			"        [pc: 16, full, stack: {java.lang.Throwable}, locals: {X, _, X}]\n" +
			"        [pc: 19, full, stack: {}, locals: {X, int}]\n";

		int index = actualOutput.indexOf(expectedOutput);
		if (index == -1 || expectedOutput.length() == 0) {
			System.out.println(Util.displayString(actualOutput, 2));
		}
		if (index == -1) {
			assertEquals("Wrong contents", expectedOutput, actualOutput);
		}
	}

	public void test015() throws Exception {
		this.runConformTest(
            new String[] {
            		"X.java",
            		"public enum X {\n" +
            		"    a1(1), a2(5), a3(11);\n" +
            		"    int value;\n" +
            		"    X(int a) {\n" +
            		"        value = a;\n" +
            		"    }\n" +
            		"    int value () {\n" +
            		"    	return value;\n" +
            		"    }\n" +
            		"    public static void main(String argv[]) {\n" +
            		"    }\n" +
            		"    public static int foo() {\n" +
            		"        int val;\n" +
            		"        int res = 0;\n" +
            		"        int n = 0;\n" +
            		"        X[] vals = X.values();\n" +
            		"		for (int i = 0, max = vals.length; i < max; i++) {\n" +
            		"			X e = vals[i];\n" +
            		"           if ( n == 1) {\n" +
            		"               continue;\n" +
            		"           }\n" +
            		"           val = e.value();\n" +
            		"			System.out.println(val);\n" +
            		"        }\n" +
            		"        return res;\n" +
            		"    }\n" +
            		"}",
            },
			"");

		ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
		byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
		String actualOutput =
			disassembler.disassemble(
                 classFileBytes,
                 "\n",
                 ClassFileBytesDisassembler.DETAILED);

		String expectedOutput =
			"  // Method descriptor #40 ()I\n" +
			"  // Stack: 2, Locals: 7\n" +
			"  public static int foo();\n" +
			"     0  iconst_0\n" +
			"     1  istore_1 [res]\n" +
			"     2  iconst_0\n" +
			"     3  istore_2 [n]\n" +
			"     4  invokestatic X.values() : X[] [46]\n" +
			"     7  astore_3 [vals]\n" +
			"     8  iconst_0\n" +
			"     9  istore 4 [i]\n" +
			"    11  aload_3 [vals]\n" +
			"    12  arraylength\n" +
			"    13  istore 5 [max]\n" +
			"    15  goto 48\n" +
			"    18  aload_3 [vals]\n" +
			"    19  iload 4 [i]\n" +
			"    21  aaload\n" +
			"    22  astore 6 [e]\n" +
			"    24  iload_2 [n]\n" +
			"    25  iconst_1\n" +
			"    26  if_icmpne 32\n" +
			"    29  goto 45\n" +
			"    32  aload 6 [e]\n" +
			"    34  invokevirtual X.value() : int [50]\n" +
			"    37  istore_0 [val]\n" +
			"    38  getstatic java.lang.System.out : java.io.PrintStream [52]\n" +
			"    41  iload_0 [val]\n" +
			"    42  invokevirtual java.io.PrintStream.println(int) : void [58]\n" +
			"    45  iinc 4 1 [i]\n" +
			"    48  iload 4 [i]\n" +
			"    50  iload 5 [max]\n" +
			"    52  if_icmplt 18\n" +
			"    55  iload_1 [res]\n" +
			"    56  ireturn\n" +
			"      Line numbers:\n" +
			"        [pc: 0, line: 14]\n" +
			"        [pc: 2, line: 15]\n" +
			"        [pc: 4, line: 16]\n" +
			"        [pc: 8, line: 17]\n" +
			"        [pc: 18, line: 18]\n" +
			"        [pc: 24, line: 19]\n" +
			"        [pc: 29, line: 20]\n" +
			"        [pc: 32, line: 22]\n" +
			"        [pc: 38, line: 23]\n" +
			"        [pc: 45, line: 17]\n" +
			"        [pc: 55, line: 25]\n" +
			"      Local variable table:\n" +
			"        [pc: 38, pc: 45] local: val index: 0 type: int\n" +
			"        [pc: 2, pc: 57] local: res index: 1 type: int\n" +
			"        [pc: 4, pc: 57] local: n index: 2 type: int\n" +
			"        [pc: 8, pc: 57] local: vals index: 3 type: X[]\n" +
			"        [pc: 11, pc: 55] local: i index: 4 type: int\n" +
			"        [pc: 15, pc: 55] local: max index: 5 type: int\n" +
			"        [pc: 24, pc: 45] local: e index: 6 type: X\n" +
			"      Stack map table: number of frames 4\n" +
			"        [pc: 18, full, stack: {}, locals: {_, int, int, X[], int, int}]\n" +
			"        [pc: 32, append: {X}]\n" +
			"        [pc: 45, chop 1 local(s)]\n" +
			"        [pc: 48, same]\n";

		int index = actualOutput.indexOf(expectedOutput);
		if (index == -1 || expectedOutput.length() == 0) {
			System.out.println(Util.displayString(actualOutput, 2));
		}
		if (index == -1) {
			assertEquals("Wrong contents", expectedOutput, actualOutput);
		}
	}

	public void test016() throws Exception {
		this.runConformTest(
            new String[] {
            		"X.java",
            		"public enum X {\n" +
            		"    a1(1), a2(5), a3(11);\n" +
            		"    int value;\n" +
            		"    X(int a) {\n" +
            		"        value = a;\n" +
            		"    }\n" +
            		"    int value () {\n" +
            		"    	return value;\n" +
            		"    }\n" +
            		"    public static void main(String argv[]) {\n" +
            		"    }\n" +
            		"    public static int foo() {\n" +
            		"        int val;\n" +
            		"        int res = 0;\n" +
            		"        int n = 0;\n" +
            		"        for (X e : X.values()) {\n" +
            		"            if ( n == 1) {\n" +
            		"                continue;\n" +
            		"            }\n" +
            		"            val = e.value();\n" +
            		"			 System.out.println(val);\n" +
            		"        }\n" +
            		"        return res;\n" +
            		"    }\n" +
            		"}",
            },
			"");

		ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
		byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
		String actualOutput =
			disassembler.disassemble(
                 classFileBytes,
                 "\n",
                 ClassFileBytesDisassembler.DETAILED);

		String expectedOutput =
			"  // Method descriptor #40 ()I\n" +
			"  // Stack: 2, Locals: 7\n" +
			"  public static int foo();\n" +
			"     0  iconst_0\n" +
			"     1  istore_1 [res]\n" +
			"     2  iconst_0\n" +
			"     3  istore_2 [n]\n" +
			"     4  invokestatic X.values() : X[] [46]\n" +
			"     7  dup\n" +
			"     8  astore 6\n" +
			"    10  arraylength\n" +
			"    11  istore 5\n" +
			"    13  iconst_0\n" +
			"    14  istore 4\n" +
			"    16  goto 48\n" +
			"    19  aload 6\n" +
			"    21  iload 4\n" +
			"    23  aaload\n" +
			"    24  astore_3 [e]\n" +
			"    25  iload_2 [n]\n" +
			"    26  iconst_1\n" +
			"    27  if_icmpne 33\n" +
			"    30  goto 45\n" +
			"    33  aload_3 [e]\n" +
			"    34  invokevirtual X.value() : int [50]\n" +
			"    37  istore_0 [val]\n" +
			"    38  getstatic java.lang.System.out : java.io.PrintStream [52]\n" +
			"    41  iload_0 [val]\n" +
			"    42  invokevirtual java.io.PrintStream.println(int) : void [58]\n" +
			"    45  iinc 4 1\n" +
			"    48  iload 4\n" +
			"    50  iload 5\n" +
			"    52  if_icmplt 19\n" +
			"    55  iload_1 [res]\n" +
			"    56  ireturn\n" +
			"      Line numbers:\n" +
			"        [pc: 0, line: 14]\n" +
			"        [pc: 2, line: 15]\n" +
			"        [pc: 4, line: 16]\n" +
			"        [pc: 25, line: 17]\n" +
			"        [pc: 30, line: 18]\n" +
			"        [pc: 33, line: 20]\n" +
			"        [pc: 38, line: 21]\n" +
			"        [pc: 45, line: 16]\n" +
			"        [pc: 55, line: 23]\n" +
			"      Local variable table:\n" +
			"        [pc: 38, pc: 45] local: val index: 0 type: int\n" +
			"        [pc: 2, pc: 57] local: res index: 1 type: int\n" +
			"        [pc: 4, pc: 57] local: n index: 2 type: int\n" +
			"        [pc: 25, pc: 45] local: e index: 3 type: X\n" +
			"      Stack map table: number of frames 4\n" +
			"        [pc: 19, full, stack: {}, locals: {_, int, int, _, int, int, X[]}]\n" +
			"        [pc: 33, full, stack: {}, locals: {_, int, int, X, int, int, X[]}]\n" +
			"        [pc: 45, full, stack: {}, locals: {_, int, int, _, int, int, X[]}]\n" +
			"        [pc: 48, same]\n";

		int index = actualOutput.indexOf(expectedOutput);
		if (index == -1 || expectedOutput.length() == 0) {
			System.out.println(Util.displayString(actualOutput, 2));
		}
		if (index == -1) {
			assertEquals("Wrong contents", expectedOutput, actualOutput);
		}
	}

	public void test017() throws Exception {
		this.runConformTest(
            new String[] {
            		"X.java",
            		"public class X {\n" +
            		"	public static void main(String argv[]) {\n" +
            		"		int i;\n" +
            		"		\n" +
            		"		switch (i = 0) {\n" +
            		"			case 0 :\n" +
            		"				i = 1;\n" +
            		"				break;\n" +
            		"			default :\n" +
            		"				;\n" +
            		"		}\n" +
            		"		System.out.print(i);\n" +
            		"	}\n" +
            		"}",
            },
			"1");

		ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
		byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
		String actualOutput =
			disassembler.disassemble(
                 classFileBytes,
                 "\n",
                 ClassFileBytesDisassembler.DETAILED);

		String expectedOutput =
			"  // Method descriptor #15 ([Ljava/lang/String;)V\n" +
			"  // Stack: 2, Locals: 2\n" +
			"  public static void main(java.lang.String[] argv);\n" +
			"     0  iconst_0\n" +
			"     1  dup\n" +
			"     2  istore_1 [i]\n" +
			"     3  tableswitch default: 22\n" +
			"          case 0: 20\n" +
			"    20  iconst_1\n" +
			"    21  istore_1 [i]\n" +
			"    22  getstatic java.lang.System.out : java.io.PrintStream [16]\n" +
			"    25  iload_1 [i]\n" +
			"    26  invokevirtual java.io.PrintStream.print(int) : void [22]\n" +
			"    29  return\n" +
			"      Line numbers:\n" +
			"        [pc: 0, line: 5]\n" +
			"        [pc: 20, line: 7]\n" +
			"        [pc: 22, line: 12]\n" +
			"        [pc: 29, line: 13]\n" +
			"      Local variable table:\n" +
			"        [pc: 0, pc: 30] local: argv index: 0 type: java.lang.String[]\n" +
			"        [pc: 3, pc: 30] local: i index: 1 type: int\n" +
			"      Stack map table: number of frames 2\n" +
			"        [pc: 20, append: {int}]\n" +
			"        [pc: 22, same]\n";

		int index = actualOutput.indexOf(expectedOutput);
		if (index == -1 || expectedOutput.length() == 0) {
			System.out.println(Util.displayString(actualOutput, 2));
		}
		if (index == -1) {
			assertEquals("Wrong contents", expectedOutput, actualOutput);
		}
	}

	public void test018() {
		this.runConformTest(
            new String[] {
            		"X.java",
            		"import java.util.*;\n" +
            		"\n" +
            		"interface Sequence<Value_Type> extends Iterable<Value_Type>{\n" +
            		"\n" +
            		"    Value_Type get(int i);\n" +
            		"    int length();\n" +
            		"    Value_Type set(int i, Value_Type value);\n" +
            		"}\n" +
            		"\n" +
            		"class ArraySequence<Value_Type> implements Sequence<Value_Type> {\n" +
            		"\n" +
            		"    public ArraySequence(int length) {}\n" +
            		"    public Value_Type get(int i) {\n" +
            		"        return null;\n" +
            		"    }\n" +
            		"    public int length() {\n" +
            		"        return 0;\n" +
            		"    }\n" +
            		"    public Value_Type set(int i, Value_Type value) {\n" +
            		"        return value;\n" +
            		"    }\n" +
            		"    public Iterator<Value_Type> iterator() {\n" +
            		"        return null;\n" +
            		"    }\n" +
            		"}\n" +
            		"\n" +
            		"class BirBlock {\n" +
            		"    void setRole(IrBlock.Role role) {}\n" +
            		"}\n" +
            		"\n" +
            		"class CatchChain {\n" +
            		"    int dispatcherAddress() {\n" +
            		"        return 0;\n" +
            		"    }\n" +
            		"}\n" +
            		"\n" +
            		"class ExceptionHandlerInfo {\n" +
            		"    int handlerProgramCounter() {\n" +
            		"        return 0;\n" +
            		"    }\n" +
            		"}\n" +
            		"\n" +
            		"interface IrBlock {\n" +
            		"    enum Role {\n" +
            		"        EXCEPTION_DISPATCHER\n" +
            		"    }\n" +
            		"}\n" +
            		"\n" +
            		"class ClassMethodActor {\n" +
            		"    Sequence<ExceptionHandlerInfo> exceptionHandlerInfos() {\n" +
            		"        return null;\n" +
            		"    }\n" +
            		"}\n" +
            		"\n" +
            		"public class X {\n" +
            		"\n" +
            		"    private Sequence<CatchChain> _catchChains;\n" +
            		"    private ClassMethodActor _classMethodActor;\n" +
            		"\n" +
            		"    public Sequence<BirBlock> getExceptionDispatchers(final BirBlock[] blockMap) {\n" +
            		"        final ArraySequence<BirBlock> dispatchers = new ArraySequence<BirBlock>(_catchChains.length());\n" +
            		"        for (int i = 0; i < _catchChains.length(); i++) {\n" +
            		"            final BirBlock dispatcher = blockMap[_catchChains.get(i).dispatcherAddress()];\n" +
            		"            dispatcher.setRole(IrBlock.Role.EXCEPTION_DISPATCHER);\n" +
            		"            dispatchers.set(i, dispatcher);\n" +
            		"        }\n" +
            		"        for (ExceptionHandlerInfo exceptionHandlerInfo : _classMethodActor.exceptionHandlerInfos()) {\n" +
            		"            blockMap[exceptionHandlerInfo.handlerProgramCounter()].setRole(IrBlock.Role.EXCEPTION_DISPATCHER);\n" +
            		"        }\n" +
            		"        return dispatchers;\n" +
            		"    }\n" +
            		"    public static void main(String[] args) {\n" +
            		"		System.out.print(\"SUCCESS\");\n" +
            		"	}\n" +
            		"}",
            },
			"SUCCESS");
	}

	public void test019() {
		this.runConformTest(
            new String[] {
        		"X.java",
        		"final public class X\n" +
        		"{\n" +
        		"    final class MyClass\n" +
        		"    {\n" +
        		"        void method1(final String s)\n" +
        		"        {\n" +
        		"        }\n" +
        		"    }\n" +
        		"\n" +
        		"    Object method1()\n" +
        		"    {\n" +
        		"        try\n" +
        		"        {\n" +
        		"            final MyClass myClass = null;\n" +
        		"\n" +
        		"            try\n" +
        		"            {\n" +
        		"                return null;\n" +
        		"            }\n" +
        		"            catch (final Throwable ex)\n" +
        		"            {\n" +
        		"                myClass.method1(this == null ? \"\" : \"\");\n" +
        		"            }\n" +
        		"\n" +
        		"            return null;\n" +
        		"        }\n" +
        		"        finally\n" +
        		"        {\n" +
        		"            {\n" +
        		"            }\n" +
        		"        }\n" +
        		"    }\n" +
        		"    public static void main(String[] args) {\n" +
        		"		System.out.print(\"SUCCESS\");\n" +
        		"	}\n" +
        		"}",
            },
			"SUCCESS");
	}
	public void test020() {
		this.runConformTest(
            new String[] {
        		"X.java",
        		"import java.util.*;\n" +
        		"public class X {\n" +
        		"    public static Map make(boolean sorted) {\n" +
        		"        return (sorted) ? new TreeMap() : new HashMap();\n" +
        		"    }\n" +
        		"    public static void main(String[] args) {\n" +
        		"       make(false);\n" +
        		"		System.out.print(\"SUCCESS\");\n" +
        		"    }\n" +
        		"}",
            },
			"SUCCESS");
	}
	// 155423
	public void test021() throws Exception {
		this.runConformTest(
            new String[] {
        		"X.java",
        		"public class X {\n" +
        		"   {\n" +
        		"      if (true) throw new NullPointerException();\n" +
        		"   }\n" +
        		"   X() {\n" +
        		"      System.out.println();\n" +
        		"   }\n" +
        		"}",
            },
			"");

		ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
		byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
		String actualOutput =
			disassembler.disassemble(
                 classFileBytes,
                 "\n",
                 ClassFileBytesDisassembler.DETAILED);

		String expectedOutput =
			"  // Method descriptor #6 ()V\n" +
			"  // Stack: 2, Locals: 1\n" +
			"  X();\n" +
			"     0  aload_0 [this]\n" +
			"     1  invokespecial java.lang.Object() [8]\n" +
			"     4  new java.lang.NullPointerException [10]\n" +
			"     7  dup\n" +
			"     8  invokespecial java.lang.NullPointerException() [12]\n" +
			"    11  athrow\n" +
			"      Line numbers:\n" +
			"        [pc: 0, line: 5]\n" +
			"        [pc: 4, line: 3]\n" +
			"      Local variable table:\n" +
			"        [pc: 0, pc: 12] local: this index: 0 type: X\n";

		int index = actualOutput.indexOf(expectedOutput);
		if (index == -1 || expectedOutput.length() == 0) {
			System.out.println(Util.displayString(actualOutput, 2));
		}
		if (index == -1) {
			assertEquals("Wrong contents", expectedOutput, actualOutput);
		}
	}

	// 157247
	public void test022() {
		this.runConformTest(
            new String[] {
        		"X.java",
        		"public class X {\n" +
        		"	public static void main(String[] args) {\n" +
        		"		String errorMessage;\n" +
        		"		try {\n" +
        		"			foo();\n" +
        		"			errorMessage = \"No exception thrown\";\n" +
        		"		} catch (Exception e) {\n" +
        		"			if (e instanceof NullPointerException) {\n" +
        		"				System.out.println(\"SUCCESS\");\n" +
        		"				return;\n" +
        		"			}\n" +
        		"			errorMessage = \"Exception thrown\" + e;\n" +
        		"		}\n" +
        		"		System.out.println(errorMessage);\n" +
        		"	}\n" +
        		"	public static void foo() {\n" +
        		"		throw new NullPointerException();\n" +
        		"	}\n" +
        		"}",
            },
			"SUCCESS");
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=162965
	public void test023() {
		this.runConformTest(
			new String[] {
				"X.java",
				"public class X {\n" +
				"	public static void main(String[] args) {\n" +
				"		boolean a = true, x;\n" +
				"		if (a ? false : (x = true))\n" +
				"			a = x;\n" +
				"		System.out.println(\"SUCCESS\");\n" +
				"	}\n" +
				"}",
			},
			"SUCCESS");
	}

	public void test024() {
		this.runConformTest(
            new String[] {
        		"X.java",
        		"public class X {\n" +
        		"	public static final int MAX_PROPERTIES = 25;\n" +
        		"	public C c = new C();\n" +
        		"	void foo(int i) {\n" +
        		"		final int len = c.foo2();\n" +
        		"		A f = new A(\" Test \", i, 1, MAX_PROPERTIES) {\n" +
        		"			@Override\n" +
        		"			public double bar() {\n" +
        		"				return len;\n" +
        		"			}\n" +
        		"			@Override\n" +
        		"			public String toString() {\n" +
        		"				return \"SUCCESS\";\n" +
        		"			}\n" +
        		"		};\n" +
        		"		System.out.println(f);\n" +
        		"	}\n" +
        		"	public static void main(String[] args) {\n" +
        		"		new X().foo(0);\n" +
        		"	}\n" +
        		"}",
        		"A.java",
        		"class A {\n" +
        		"	A(String s, double d, double d1, double d2) {}\n" +
        		"	public double bar() {\n" +
        		"		return 0.0;\n" +
        		"	}\n" +
        		"}",
        		"C.java",
        		"class C {\n" +
        		"	public int foo2() {\n" +
        		"		return 0;\n" +
        		"	}\n" +
        		"}",
            },
			"SUCCESS");
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=169596
	public void test025() {
		this.runConformTest(
	        new String[] {
	    		"X.java",
	    		"public class X {\n" +
	    		"	public static void main(String[] args) {\n" +
	    		"		System.out.println(\"SUCCESS\");\n" +
	    		"	}\n" +
	    		"	\n" +
	    		"	void foo(Object[] o) {}\n" +
	    		"\n" +
	    		"	void bar(boolean b) {\n" +
	    		"		foo(new Object[] {\"\", \"\", b ? \"\" : \"\"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ \n" +
	    		"	}\n" +
	    		"}"
	        },
			"SUCCESS");
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=169017
	public void test026() {
		this.runConformTest(
			new String[] {
				"X.java",
				"public class X {\n" +
				"\n" +
				"	public static final Object EXIT_OK = new Object();\n" +
				"	public static final Object EXIT_RELAUNCH = new Object();\n" +
				"	public static final Object EXIT_RESTART = new Object();\n" +
				"	public static final int RETURN_RESTART = 1;\n" +
				"	public static final String PROP_EXIT_CODE = \"\";\n" +
				"	public static void main(String[] args) {\n" +
				"		System.out.println(\"SUCCESS\");\n" +
				"	}\n" +
				"	private static int createAndRunWorkbench(Display display, IDEWorkbenchAdvisor advisor) {\n" +
				"		return 0;\n" +
				"	}\n" +
				" \n" +
				"    public Object run(Object args) throws Exception {\n" +
				"        Display display = createDisplay();\n" +
				"        try {\n" +
				"            Shell shell = new Shell(display, SWT.ON_TOP);\n" +
				"            try {\n" +
				"                if (!checkInstanceLocation(shell)) {\n" +
				"                    Platform.endSplash();\n" +
				"                    return EXIT_OK;\n" +
				"                }\n" +
				"            } finally {\n" +
				"                if (shell != null) {\n" +
				"					shell.dispose();\n" +
				"				}\n" +
				"            }\n" +
				"            int returnCode = X.createAndRunWorkbench(display,\n" +
				"                    new IDEWorkbenchAdvisor());\n" +
				"            if (returnCode != X.RETURN_RESTART) {\n" +
				"				return EXIT_OK;\n" +
				"			}\n" +
				"            return EXIT_RELAUNCH.equals(Integer.getInteger(PROP_EXIT_CODE)) ? EXIT_RELAUNCH\n" +
				"                    : EXIT_RESTART;\n" +
				"        } finally {\n" +
				"            if (display != null) {\n" +
				"				display.dispose();\n" +
				"			}\n" +
				"        }\n" +
				"    }\n" +
				"	private boolean checkInstanceLocation(Shell shell) {\n" +
				"		// TODO Auto-generated method stub\n" +
				"		return false;\n" +
				"	}\n" +
				"	private Display createDisplay() {\n" +
				"		// TODO Auto-generated method stub\n" +
				"		return null;\n" +
				"	}\n" +
				"}",
				"Display.java",
				"class Display {\n" +
				"\n" +
				"	public void dispose() {\n" +
				"		// TODO Auto-generated method stub\n" +
				"		\n" +
				"	}\n" +
				"}",
				"Shell.java",
				"class Shell {\n" +
				"	public Shell(Display display, int i) {\n" +
				"		// TODO Auto-generated constructor stub\n" +
				"	}\n" +
				"\n" +
				"	public void dispose() {\n" +
				"		// TODO Auto-generated method stub\n" +
				"		\n" +
				"	}\n" +
				"}",
				"Platform.java",
				"class Platform {\n" +
				"\n" +
				"	public static void endSplash() {\n" +
				"		// TODO Auto-generated method stub\n" +
				"		\n" +
				"	}\n" +
				"}",
				"SWT.java",
				"class SWT {\n" +
				"	public static final int ON_TOP = 1; \n" +
				"}",
				"IDEWorkbenchAdvisor.java",
				"class IDEWorkbenchAdvisor {\n" +
				"}"
    	},
		"SUCCESS");
	}

	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=169017
	public void test027() {
		this.runConformTest(
			new String[] {
				"X.java",
				"import java.io.IOException;\n" +
				"import java.io.InputStream;\n" +
				"public class X {\n" +
				"	private static final int BUF_SIZE = 8192;\n" +
				"	public static void main(String[] args) {\n" +
				"		System.out.println(\"SUCCESS\");\n" +
				"	}\n" +
				"	BundleActivator activator;\n" +
				"	BundleHost bundle;\n" +
				"	public byte[] getBytes() throws IOException {\n" +
				"		InputStream in = getInputStream();\n" +
				"		int length = (int) getSize();\n" +
				"		byte[] classbytes;\n" +
				"		int bytesread = 0;\n" +
				"		int readcount;\n" +
				"		if (Debug.DEBUG && Debug.DEBUG_LOADER)\n" +
				"			Debug.println(\"  about to read \" + length + \" bytes from \" + getName()); //$NON-NLS-1$ //$NON-NLS-2$\n" +
				"		try {\n" +
				"			if (length > 0) {\n" +
				"				classbytes = new byte[length];\n" +
				"				for (; bytesread < length; bytesread += readcount) {\n" +
				"					readcount = in.read(classbytes, bytesread, length - bytesread);\n" +
				"					if (readcount <= 0)\n" +
				"						break;\n" +
				"				}\n" +
				"			} else {\n" +
				"				length = BUF_SIZE;\n" +
				"				classbytes = new byte[length];\n" +
				"				readloop: while (true) {\n" +
				"					for (; bytesread < length; bytesread += readcount) {\n" +
				"						readcount = in.read(classbytes, bytesread, length - bytesread);\n" +
				"						if (readcount <= 0)\n" +
				"							break readloop;\n" +
				"					}\n" +
				"					byte[] oldbytes = classbytes;\n" +
				"					length += BUF_SIZE;\n" +
				"					classbytes = new byte[length];\n" +
				"					System.arraycopy(oldbytes, 0, classbytes, 0, bytesread);\n" +
				"				}\n" +
				"			}\n" +
				"			if (classbytes.length > bytesread) {\n" +
				"				byte[] oldbytes = classbytes;\n" +
				"				classbytes = new byte[bytesread];\n" +
				"				System.arraycopy(oldbytes, 0, classbytes, 0, bytesread);\n" +
				"			}\n" +
				"		} finally {\n" +
				"			try {\n" +
				"				in.close();\n" +
				"			} catch (IOException ee) {\n" +
				"				// ignore\n" +
				"			}\n" +
				"		}\n" +
				"		return classbytes;\n" +
				"	}\n" +
				"	protected void stop(Throwable t) throws BundleException {\n" +
				"			String clazz = \"\";//(activator == null) ? \"\" : activator.getClass().getName(); //$NON-NLS-1$\n" +
				"			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" +
				"	}\n" +
				"	private String getName() {\n" +
				"		// TODO Auto-generated method stub\n" +
				"		return null;\n" +
				"	}\n" +
				"	private int getSize() {\n" +
				"		// TODO Auto-generated method stub\n" +
				"		return 0;\n" +
				"	}\n" +
				"	private InputStream getInputStream() {\n" +
				"		// TODO Auto-generated method stub\n" +
				"		return null;\n" +
				"	}\n" +
				"}",
				"Debug.java",
				"class Debug {\n" +
				"	public static final boolean DEBUG = false;\n" +
				"	public static final boolean DEBUG_LOADER = false;\n" +
				"	public static final boolean DEBUG_GENERAL = false;\n" +
				"	public static void println(String string) {\n" +
				"		// TODO Auto-generated method stub\n" +
				"		\n" +
				"	}\n" +
				"	public static void printStackTrace(Throwable t) {\n" +
				"		// TODO Auto-generated method stub\n" +
				"		\n" +
				"	}\n" +
				"}",
				"AccessController.java",
				"class AccessController {\n" +
				"	static void doPrivileged(Object o) {\n" +
				"	}\n" +
				"}",
				"BundleException.java",
				"class BundleException extends Exception {\n" +
				"	private static final long serialVersionUID = 5758882959559471648L;\n" +
				"\n" +
				"	public BundleException(String bind, Throwable t) {\n" +
				"		// TODO Auto-generated constructor stub\n" +
				"	}\n" +
				"}",
				"PrivilegedExceptionAction.java",
				"class PrivilegedExceptionAction {\n" +
				"}",
				"BundleActivator.java",
				"class BundleActivator {\n" +
				"	public void stop(X x) {\n" +
				"		// TODO Auto-generated method stub\n" +
				"		\n" +
				"	}\n" +
				"}",
				"BundleHost.java",
				"class BundleHost {\n" +
				"	public Object getSymbolicName() {\n" +
				"		// TODO Auto-generated method stub\n" +
				"		return null;\n" +
				"	}\n" +
				"	public String getBundleId() {\n" +
				"		// TODO Auto-generated method stub\n" +
				"		return null;\n" +
				"	}\n" +
				"}",
				"NLS.java",
				"class NLS {\n" +
				"	public static String bind(String bundleActivatorException, Object[] objects) {\n" +
				"		// TODO Auto-generated method stub\n" +
				"		return null;\n" +
				"	}\n" +
				"}",
				"PrivilegedActionException.java",
				"class PrivilegedActionException extends Exception {\n" +
				"	private static final long serialVersionUID = 3919969055057660822L;\n" +
				"	public Throwable getException() {\n" +
				"		// TODO Auto-generated method stub\n" +
				"		return null;\n" +
				"	}\n" +
				"}",
				"Msg.java",
				"class Msg {\n" +
				"	public static final String BUNDLE_ACTIVATOR_EXCEPTION = \"\";\n" +
				"}"
    	},
		"SUCCESS");
	}

	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=169017
	public void test028() {
		this.runConformTest(
			new String[] {
				"X.java",
				"import java.io.StringReader;\n" +
				"\n" +
				"public class X {\n" +
				"	public void loadVariablesAndContainers() {\n" +
				"		// backward compatibility, consider persistent property	\n" +
				"		String qName = \"1\";\n" +
				"		String xmlString = \"2\";\n" +
				"		\n" +
				"		try {\n" +
				"			if (xmlString != null){\n" +
				"				StringReader reader = new StringReader(xmlString);\n" +
				"				Object o;\n" +
				"				try {\n" +
				"					StringBuffer buffer = null;\n" +
				"					o = new Object();\n" +
				"				} catch(RuntimeException e) {\n" +
				"					return;\n" +
				"				} catch(Exception e){\n" +
				"					return;\n" +
				"				} finally {\n" +
				"					reader.close();\n" +
				"				}\n" +
				"				System.out.println(reader);\n" +
				"			}\n" +
				"		} catch(Exception e){\n" +
				"			// problem loading xml file: nothing we can do\n" +
				"		} finally {\n" +
				"			if (xmlString != null){\n" +
				"				System.out.println(xmlString);\n" +
				"			}\n" +
				"		}\n" +
				"	}\n" +
				"\n" +
				"	public static void main(String[] args) {\n" +
				"		System.out.println(\"SUCCESS\");\n" +
				"	}\n" +
				"}"
		},
		"SUCCESS");
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=171472
	public void test029() {
		this.runConformTest(
			new String[] {
				"X.java",
				"public class X {\n" +
				"\n" +
				"	public Object foo() {\n" +
				"		Object status;\n" +
				"		try {\n" +
				"			status= bar();\n" +
				"		} catch (RuntimeException x) {\n" +
				"			status= foo2(x);\n" +
				"		} finally {\n" +
				"			System.out.println();\n" +
				"		}\n" +
				"		return status;\n" +
				"	}\n" +
				"	public Object bar() {\n" +
				"		return null;\n" +
				"	}\n" +
				"	public Object foo2(Exception e) {\n" +
				"		return null;\n" +
				"	}\n" +
				"	public static void main(String[] args) {\n" +
				"		System.out.println(\"SUCCESS\");\n" +
				"	}\n" +
				"}"
		},
		"SUCCESS");
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=171472
	public void test030() {
		this.runConformTest(
			new String[] {
				"X.java",
				"import java.util.Collections;\n" +
				"import java.util.List;\n" +
				"public class X {\n" +
				"\n" +
				"	private static final String COMPUTE_COMPLETION_PROPOSALS= \"computeCompletionProposals()\"; //$NON-NLS-1$\n" +
				"	private Object fLastError;\n" +
				"	private boolean fIsReportingDelay;\n" +
				"	private CompletionProposalComputerRegistry fRegistry;\n" +
				"	public List computeCompletionProposals(ContentAssistInvocationContext context, IProgressMonitor monitor) {\n" +
				"		if (!isEnabled())\n" +
				"			return Collections.EMPTY_LIST;\n" +
				"\n" +
				"		IStatus status;\n" +
				"		try {\n" +
				"			IJavaCompletionProposalComputer computer= getComputer();\n" +
				"			if (computer == null) // not active yet\n" +
				"				return Collections.EMPTY_LIST;\n" +
				"			\n" +
				"			try {\n" +
				"				PerformanceStats stats= startMeter(context, computer);\n" +
				"				List proposals= computer.computeCompletionProposals(context, monitor);\n" +
				"				stopMeter(stats, COMPUTE_COMPLETION_PROPOSALS);\n" +
				"				\n" +
				"				if (proposals != null) {\n" +
				"					fLastError= computer.getErrorMessage();\n" +
				"					return proposals;\n" +
				"				}\n" +
				"			} finally {\n" +
				"				fIsReportingDelay= true;\n" +
				"			}\n" +
				"			status= createAPIViolationStatus(COMPUTE_COMPLETION_PROPOSALS);\n" +
				"		} catch (InvalidRegistryObjectException x) {\n" +
				"			status= createExceptionStatus(x);\n" +
				"		} catch (CoreException x) {\n" +
				"			status= createExceptionStatus(x);\n" +
				"		} catch (RuntimeException x) {\n" +
				"			status= createExceptionStatus(x);\n" +
				"		} finally {\n" +
				"			monitor.done();\n" +
				"		}\n" +
				"\n" +
				"		fRegistry.informUser(this, status);\n" +
				"\n" +
				"		return Collections.EMPTY_LIST;\n" +
				"	}\n" +
				"\n" +
				"	private IStatus createExceptionStatus(Exception x) {\n" +
				"		// TODO Auto-generated method stub\n" +
				"		return null;\n" +
				"	}\n" +
				"\n" +
				"	private IStatus createAPIViolationStatus(String computeCompletionProposals) {\n" +
				"		// TODO Auto-generated method stub\n" +
				"		return null;\n" +
				"	}\n" +
				"\n" +
				"	private void stopMeter(PerformanceStats stats, String computeCompletionProposals) {\n" +
				"		// TODO Auto-generated method stub\n" +
				"		\n" +
				"	}\n" +
				"\n" +
				"	private PerformanceStats startMeter(ContentAssistInvocationContext context, IJavaCompletionProposalComputer computer) {\n" +
				"		// TODO Auto-generated method stub\n" +
				"		return null;\n" +
				"	}\n" +
				"\n" +
				"	private IJavaCompletionProposalComputer getComputer() throws CoreException, InvalidRegistryObjectException {\n" +
				"		// TODO Auto-generated method stub\n" +
				"		return null;\n" +
				"	}\n" +
				"\n" +
				"	private boolean isEnabled() {\n" +
				"		// TODO Auto-generated method stub\n" +
				"		return false;\n" +
				"	}\n" +
				"	\n" +
				"	public static void main(String[] args) {\n" +
				"		System.out.println(\"SUCCESS\");\n" +
				"	}\n" +
				"}",
				"IProgressMonitor.java",
				"interface IProgressMonitor {\n" +
				"	void done();\n" +
				"}",
				"ContentAssistInvocationContext.java",
				"class ContentAssistInvocationContext {\n" +
				"}",
				"IStatus.java",
				"interface IStatus {}",
				"IJavaCompletionProposalComputer.java",
				"import java.util.List;\n" +
				"interface IJavaCompletionProposalComputer {\n" +
				"	List computeCompletionProposals(ContentAssistInvocationContext context, IProgressMonitor monitor);\n" +
				"	Object getErrorMessage();\n" +
				"}",
				"PerformanceStats.java",
				"class PerformanceStats {}",
				"CompletionProposalComputerRegistry.java",
				"class CompletionProposalComputerRegistry {\n" +
				"	public void informUser(X x, IStatus status) {\n" +
				"	}\n" +
				"}",
				"InvalidRegistryObjectException.java",
				"class InvalidRegistryObjectException extends Exception {\n" +
				"	private static final long serialVersionUID = 8943194846421947853L;\n" +
				"}",
				"CoreException.java",
				"class CoreException extends Exception {\n" +
				"	private static final long serialVersionUID = 3996792687633449517L;\n" +
				"}"
		},
		"SUCCESS");
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=168665
	public void test031() {
		this.runConformTest(
			new String[] {
				"X.java",
				"public class X {\n" +
				"	String s;\n" +
				"	X() {\n" +
				"		this.s = \"\";\n" +
				"	}\n" +
				"	X(String s, double d, double d2, double i) {\n" +
				"		this.s = s;\n" +
				"	}\n" +
				"	public static final int CONST = 1;\n" +
				"	public int foo() {\n" +
				"		return 0;\n" +
				"	}\n" +
				"	public double value(double d1) {\n" +
				"		return d1;\n" +
				"	}\n" +
				"	public void bar(int start) {\n" +
				"		final int len = foo();\n" +
				"		X x = new X(\"SUCCESS\", start, 1, CONST) {\n" +
				"			@Override\n" +
				"			public double value(double newValue) {\n" +
				"				return len;\n" +
				"			}\n" +
				"		};\n" +
				"		System.out.println(x);\n" +
				"	}\n" +
				"	public static void main(String[] args) {\n" +
				"		new X().bar(1);\n" +
				"	}\n" +
				"	public String toString() {\n" +
				"		return this.s;\n" +
				"	}\n" +
				"}",
			},
			"SUCCESS");
	}
	public void test032() {
		this.runConformTest(
				new String[] {
						"X.java",
						"import java.util.*;\n" +
						"public class X {\n" +
						"    public static void main(String[] args) {\n" +
						"		int i = args.length;\n" +
						"       X[] array = new X[] { i == 0 ? null : null };\n" +
						"		System.out.print(\"SUCCESS\" + array.length);\n" +
						"    }\n" +
						"}",
				},
		"SUCCESS1");
	}

	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=184102
	public void test033() {
		this.runConformTest(
			new String[] {
				"X.java",
				"public enum X {\n" +
				"	C { @Override public boolean test() { return true; } };\n" +
				"	static {\n" +
				"		for (int i = 0; i < 1; i++) {}\n" +
				"	}\n" +
				"	public boolean test() {\n" +
				"	return false;\n" +
				"	}\n" +
				"	public static void main(String[] args) {\n" +
				"		System.out.print(\"SUCCESS\");\n" +
				"	}\n" +
				"}",
			},
		"SUCCESS");
	}

	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=184102
	public void test034() {
		this.runConformTest(
			new String[] {
				"X.java",
				"public enum X {\n" +
				"	C;\n" +
				"	static {\n" +
				"		for (int i = 0; i < 1; i++) {}\n" +
				"	}\n" +
				"	public boolean test() {\n" +
				"	return false;\n" +
				"	}\n" +
				"	public static void main(String[] args) {\n" +
				"		System.out.print(\"SUCCESS\");\n" +
				"	}\n" +
				"}",
			},
		"SUCCESS");
	}

	// add more bytecode coverage: fneg, lneg, dneg, dstore_0, f2l, fstore_0, fstore_2, lstore_0 and saload
	public void test035() {
		this.runConformTest(
			new String[] {
				"X.java",
				"public class X {\n" +
				"	static double foo() {\n" +
				"		double d = 3.0;\n" +
				"		d = -d;\n" +
				"		return d > 1.0 ? d : -d;\n" +
				"	}\n" +
				"\n" +
				"	static float foo2() {\n" +
				"		float f = 3.0f;\n" +
				"		int i = 0;\n" +
				"		float f2 = f+ i;\n" +
				"		long l = (long) f;\n" +
				"		l += f2;\n" +
				"		return i == 0 ? f : -f + (float) l;\n" +
				"	}\n" +
				"\n" +
				"	static long foo3() {\n" +
				"		long l = Long.MAX_VALUE - 3;\n" +
				"		boolean b = true;\n" +
				"		return b ? l : -l;\n" +
				"	}\n" +
				"	\n" +
				"	static short foo4() {\n" +
				"		short[] tab = new short[] { 1, 2, 3 };\n" +
				"		return tab.length == 3 ? tab[2] : (tab.length == 2 ? tab[1] : tab[0]);\n" +
				"	}\n" +
				"\n" +
				"	public static void main(String args[]) {\n" +
				"		foo();\n" +
				"		foo2();\n" +
				"		foo3();\n" +
				"		foo4();\n" +
				"		System.out.print(\"SUCCESS\");\n" +
				"	}\n" +
				"}",
			},
		"SUCCESS");
	}

	// fix verify error
	public void test036() {
		this.runConformTest(
			new String[] {
				"X.java",
				"import java.util.Map;\n" +
				"import java.util.Set;\n" +
				"\n" +
				"public class X {\n" +
				"	public static void main(String[] args) {\n" +
				"		System.out.print(\"SUCCESS\");\n" +
				"	}\n" +
				"	public void foo(Object o, boolean b) {\n" +
				"		String[] models = new String[] {};\n" +
				"		Map map = null;\n" +
				"		Set set  = null;\n" +
				"		for (int n = 0; n < models.length; n++) {	bar(models[n]); }\n" +
				"		foo2(new Object(),\n" +
				"				set,\n" +
				"				map,\n" +
				"				!b);\n" +
				"	}\n" +
				"	void bar(String s) {}\n" +
				"	void foo2(Object o, Object s, Object m, boolean b) {}\n" +
				"}",
			},
		"SUCCESS");
	}
	
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=236336
	public void test037() {
		this.runConformTest(
			new String[] {
				"X.java",
				"public class X {\n" + 
				"	public static void main(String[] args) {\n" + 
				"		System.out.print(\"SUCCESS\");\n" +
				"	}\n" + 
				"	String field;\n" + 
				"	String field2;\n" + 
				"	public void foo(int index, Object[] objs, Object[] objs2) {\n" + 
				"		String methodName = \"foo\";\n" + 
				"		int i = -1;\n" + 
				"		try {\n" + 
				"			switch (index) {\n" + 
				"				case 1130: {\n" + 
				"					int j = ((Integer) objs[0]).intValue();\n" + 
				"					int k = ((Integer) objs[0]).intValue();\n" + 
				"					{\n" + 
				"						String s = field;\n" + 
				"						String s2 = field2;\n" + 
				"						synchronized (s2) {\n" + 
				"							String s3 = s2;\n" + 
				"							try {\n" + 
				"								System.out.println(s);\n" + 
				"								System.out.println(s2);\n" + 
				"								System.out.println(s3);\n" + 
				"							} finally {\n" + 
				"								s2.toString();\n" + 
				"							}\n" + 
				"						}\n" + 
				"						}\n" + 
				"				}\n" + 
				"				break;\n" + 
				"				case 0 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 2 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 3 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 4 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 5 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 6 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 7 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 8 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 9 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 10 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 11 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 12 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 13 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 14 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 15 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 16 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 17 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 18 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 19 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 20 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 21 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 22 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 23 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 24 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 25 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 26 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 27 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 28 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 29 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 30 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 31 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 32 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 33 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 34 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 35 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 36 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 37 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 38 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 39 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 40 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 41 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 42 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 43 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 44 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 45 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 46 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 47 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 48 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 49 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 50 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 51 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 52 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 53 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 54 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 55 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 56 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 57 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 58 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 59 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 60 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 61 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 62 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 63 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 64 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 65 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 66 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 67 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 68 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 69 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 70 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 71 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 72 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 73 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 74 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 75 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 76 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 77 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 78 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 79 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 80 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 81 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 82 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 83 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 84 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 85 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 86 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 87 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 88 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 89 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 90 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 91 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 92 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 93 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 94 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 95 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 96 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 97 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 98 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 99 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 100 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 101 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 102 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 103 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 104 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 105 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 106 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 107 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 108 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 109 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 110 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 111 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 112 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 113 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 114 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 115 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 116 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 117 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 118 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 119 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 120 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 121 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 122 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 123 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 124 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 125 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 126 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 127 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 128 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 129 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 130 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 131 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 132 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 133 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 134 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 135 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 136 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 137 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 138 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 139 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 140 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 141 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 142 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 143 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 144 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 145 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 146 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 147 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 148 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 149 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 150 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 151 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 152 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 153 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 154 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 155 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 156 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 157 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 158 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 159 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 160 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 161 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 162 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 163 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 164 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 165 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 166 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 167 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 168 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 169 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 170 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 171 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 172 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 173 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 174 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 175 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 176 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 177 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 178 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 179 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 180 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 181 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 182 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 183 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 184 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 185 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 186 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 187 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 188 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 189 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 190 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 191 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 192 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 193 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 194 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 195 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 196 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 197 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 198 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 199 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 200 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 201 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 202 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 203 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 204 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 205 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 206 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 207 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 208 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 209 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 210 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 211 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 212 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 213 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 214 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 215 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 216 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 217 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 218 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 219 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 220 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 221 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 222 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 223 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 224 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 225 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 226 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 227 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 228 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 229 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 230 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 231 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 232 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 233 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 234 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 235 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 236 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 237 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 238 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 239 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 240 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 241 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 242 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 243 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 244 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 245 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 246 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 247 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 248 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 249 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 250 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 251 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 252 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 253 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 254 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 255 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 256 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 257 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 258 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 259 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 260 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 261 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 262 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 263 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 264 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 265 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 266 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 267 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 268 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 269 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 270 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 271 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 272 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 273 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 274 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 275 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 276 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 277 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 278 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 279 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 280 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 281 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 282 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 283 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 284 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 285 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 286 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 287 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 288 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 289 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 290 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 291 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 292 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 293 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 294 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 295 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 296 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 297 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 298 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 299 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 300 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 301 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 302 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 303 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 304 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 305 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 306 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 307 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 308 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 309 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 310 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 311 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 312 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 313 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 314 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 315 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 316 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 317 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 318 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 319 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 320 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 321 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 322 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 323 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 324 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 325 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 326 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 327 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 328 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 329 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 330 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 331 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 332 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 333 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 334 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 335 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 336 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 337 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 338 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 339 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 340 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 341 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 342 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 343 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 344 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 345 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 346 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 347 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 348 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 349 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 350 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 351 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 352 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 353 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 354 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 355 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 356 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 357 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 358 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 359 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 360 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 361 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 362 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 363 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 364 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 365 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 366 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 367 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 368 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 369 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 370 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 371 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 372 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 373 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 374 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 375 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 376 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 377 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 378 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 379 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 380 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 381 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 382 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 383 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 384 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 385 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 386 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 387 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 388 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 389 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 390 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 391 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 392 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 393 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 394 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 395 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 396 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 397 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 398 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 399 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 400 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 401 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 402 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 403 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 404 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 405 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 406 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 407 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 408 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 409 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 410 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 411 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 412 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 413 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 414 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 415 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 416 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 417 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 418 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 419 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 420 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 421 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 422 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 423 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 424 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 425 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 426 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 427 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 428 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 429 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 430 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 431 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 432 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 433 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 434 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 435 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 436 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 437 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 438 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 439 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 440 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 441 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 442 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 443 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 444 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 445 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 446 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 447 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 448 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 449 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 450 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 451 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 452 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 453 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 454 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 455 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 456 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 457 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 458 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 459 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 460 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 461 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 462 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 463 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 464 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 465 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 466 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 467 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 468 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 469 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 470 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 471 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 472 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 473 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 474 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 475 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 476 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 477 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 478 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 479 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 480 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 481 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 482 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 483 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 484 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 485 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 486 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 487 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 488 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 489 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 490 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 491 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 492 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 493 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 494 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 495 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 496 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 497 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 498 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 499 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 500 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 501 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 502 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 503 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 504 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 505 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 506 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 507 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 508 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 509 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 510 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 511 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 512 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 513 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 514 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 515 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 516 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 517 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 518 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 519 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 520 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 521 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 522 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 523 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 524 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 525 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 526 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 527 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 528 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 529 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 530 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 531 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 532 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 533 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 534 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 535 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 536 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 537 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 538 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 539 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 540 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 541 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 542 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 543 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 544 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 545 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 546 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 547 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 548 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 549 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 550 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 551 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 552 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 553 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 554 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 555 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 556 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 557 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 558 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 559 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 560 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 561 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 562 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 563 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 564 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 565 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 566 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 567 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 568 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 569 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 570 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 571 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 572 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 573 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 574 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 575 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 576 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 577 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 578 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 579 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 580 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 581 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 582 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 583 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 584 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 585 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 586 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 587 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 588 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 589 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 590 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 591 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 592 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 593 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 594 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 595 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 596 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 597 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 598 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 599 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 600 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 601 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 602 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 603 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 604 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 605 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 606 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 607 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 608 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 609 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 610 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 611 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 612 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 613 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 614 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 615 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 616 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 617 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 618 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 619 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 620 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 621 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 622 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 623 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 624 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 625 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 626 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 627 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 628 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 629 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 630 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 631 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 632 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 633 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 634 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 635 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 636 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 637 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 638 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 639 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 640 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 641 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 642 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 643 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 644 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 645 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 646 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 647 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 648 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 649 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 650 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 651 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 652 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 653 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 654 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 655 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 656 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 657 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 658 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 659 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 660 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 661 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 662 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 663 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 664 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 665 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 666 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 667 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 668 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 669 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 670 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 671 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 672 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 673 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 674 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 675 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 676 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 677 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 678 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 679 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 680 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 681 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 682 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 683 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 684 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 685 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 686 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 687 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 688 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 689 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 690 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 691 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 692 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 693 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 694 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 695 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 696 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 697 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 698 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 699 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 700 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 701 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 702 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 703 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 704 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 705 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 706 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 707 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 708 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 709 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 710 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 711 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 712 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 713 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 714 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 715 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 716 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 717 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 718 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 719 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 720 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 721 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 722 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 723 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 724 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 725 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 726 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 727 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 728 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 729 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 730 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 731 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 732 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 733 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 734 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 735 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 736 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 737 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 738 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 739 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 740 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 741 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 742 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 743 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 744 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 745 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 746 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 747 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 748 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 749 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 750 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 751 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 752 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 753 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 754 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 755 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 756 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 757 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 758 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 759 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 760 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 761 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 762 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 763 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 764 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 765 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 766 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 767 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 768 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 769 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 770 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 771 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 772 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 773 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 774 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 775 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 776 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 777 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 778 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 779 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 780 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 781 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 782 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 783 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 784 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 785 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 786 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 787 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 788 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 789 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 790 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 791 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 792 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 793 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 794 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 795 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 796 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 797 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 798 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 799 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 800 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 801 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 802 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 803 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 804 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 805 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 806 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 807 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 808 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 809 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 810 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 811 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 812 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 813 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 814 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 815 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 816 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 817 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 818 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 819 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 820 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 821 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 822 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 823 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 824 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 825 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 826 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 827 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 828 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 829 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 830 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 831 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 832 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 833 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 834 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 835 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 836 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 837 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 838 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 839 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 840 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 841 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 842 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 843 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 844 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 845 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 846 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 847 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 848 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 849 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 850 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 851 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 852 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 853 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 854 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 855 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 856 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 857 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 858 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 859 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 860 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 861 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 862 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 863 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 864 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 865 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 866 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 867 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 868 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 869 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 870 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 871 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 872 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 873 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 874 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 875 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 876 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 877 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 878 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 879 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 880 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 881 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 882 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 883 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 884 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 885 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 886 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 887 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 888 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 889 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 890 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 891 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 892 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 893 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 894 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 895 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 896 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 897 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 898 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 899 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 900 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 901 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 902 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 903 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 904 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 905 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 906 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 907 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 908 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 909 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 910 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 911 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 912 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 913 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 914 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 915 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 916 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 917 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 918 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 919 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 920 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 921 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 922 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 923 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 924 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 925 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 926 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 927 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 928 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 929 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 930 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 931 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 932 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 933 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 934 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 935 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 936 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 937 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 938 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 939 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 940 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 941 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 942 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 943 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 944 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 945 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 946 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 947 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 948 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 949 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 950 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 951 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 952 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 953 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 954 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 955 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 956 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 957 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 958 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 959 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 960 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 961 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 962 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 963 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 964 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 965 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 966 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 967 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 968 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 969 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 970 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 971 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 972 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 973 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 974 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 975 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 976 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 977 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 978 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 979 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 980 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 981 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 982 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 983 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 984 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 985 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 986 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 987 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 988 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 989 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 990 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 991 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 992 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 993 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 994 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 995 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 996 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 997 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 998 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 999 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1000 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1001 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1002 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1003 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1004 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1005 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1006 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1007 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1008 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1009 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1010 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1011 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1012 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1013 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1014 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1015 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1016 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1017 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1018 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1019 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1020 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1021 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1022 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1023 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1024 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1025 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1026 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1027 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1028 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1029 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1030 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1031 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1032 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1033 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1034 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1035 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1036 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1037 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1038 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1039 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1040 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1041 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1042 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1043 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1044 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1045 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1046 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1047 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1048 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1049 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1050 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1051 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1052 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1053 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1054 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1055 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1056 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1057 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1058 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1059 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1060 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1061 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1062 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1063 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1064 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1065 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1066 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1067 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1068 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1069 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1070 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1071 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1072 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1073 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1074 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1075 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1076 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1077 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1078 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1079 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1080 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1081 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1082 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1083 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1084 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1085 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1086 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1087 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1088 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1089 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1090 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1091 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1092 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1093 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1094 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1095 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1096 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1097 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1098 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1099 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1100 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1101 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1102 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1103 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1104 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1105 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1106 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1107 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1108 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1109 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1110 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1111 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1112 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1113 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1114 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1115 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1116 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1117 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1118 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1119 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1120 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1121 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1122 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1123 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1124 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1125 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1126 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1127 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1128 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" + 
				"				case 1129 :\n" + 
				"					System.out.println(methodName + i);\n" + 
				"				break;\n" +
				"			}\n" +
				"		} catch(Exception e) {\n" +
				"			e.printStackTrace();\n" +
				"		}\n" +
				"	}" +
				"}",
			},
		"SUCCESS");
	}

	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=238923
	public void test038() {
		this.runConformTest(
			new String[] {
				"X.java",
				"public class X {\n" + 
				"	{\n" + 
				"		for (boolean b : new boolean[] {}) {}\n" + 
				"	}\n" +
				"	public X() {}\n" +
				"	public X(boolean b) {}\n" +
				"	public static void main(String[] args) {\n" + 
				"		System.out.print(\"SUCCESS\");\n" +
				"	}\n" + 
				"}",
			},
		"SUCCESS");
	}

	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=237931
	public void test039() {
		this.runConformTest(
			new String[] {
				"X.java",
				"public class X {\n" + 
				"	public String[][] foo(String s) {\n" + 
				"		return\n" + 
				"			new String[][] { {\" \", s != null ? s : \"\" },\n" + 
				"				{\" \", s != null ? s : \"\" },\n" + 
				"				{\" \", s != null ? s : \"\" },\n" + 
				"				{\" \", s != null ? s : \"\" } };\n" + 
				"	}\n" + 
				"	public static void main(String[] args) {\n" + 
				"		System.out.println(\"SUCCESS\");\n" + 
				"	}\n" + 
				"}",
			},
		"SUCCESS");
	}

	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=251539
	public void test040() throws Exception {
		this.runConformTest(
			new String[] {
				"I.java",
				"public interface I {\n" + 
				"\n" + 
				"	public Object foo();\n" + 
				"\n" + 
				"	public static class B implements I {\n" + 
				"		public Object foo() {\n" + 
				"			return X.myI.foo();\n" + 
				"		}\n" + 
				"	}\n" + 
				"}",
				"X.java",
				"public class X {\n" + 
				"	public static final I myI = new I.B() {\n" + 
				"		int a = 0;\n" + 
				"		int b = 1;\n" + 
				"	};\n" + 
				"\n" + 
				"	private Object bar2() {\n" + 
				"		return null;\n" + 
				"	}\n" + 
				"	private Object bar() {\n" + 
				"		Object o = bar2();\n" + 
				"		if (o != null) {\n" + 
				"			o.toString();\n" + 
				"		}\n" + 
				"		return null;\n" + 
				"	}\n" + 
				"\n" + 
				"}",
			},
		"");
		String expectedOutput =
			"  // Method descriptor #23 ()Ljava/lang/Object;\n" + 
			"  // Stack: 1, Locals: 2\n" + 
			"  private java.lang.Object bar();\n" + 
			"     0  aload_0 [this]\n" + 
			"     1  invokespecial X.bar2() : java.lang.Object [25]\n" + 
			"     4  astore_1 [o]\n" + 
			"     5  aload_1 [o]\n" + 
			"     6  ifnull 14\n" + 
			"     9  aload_1 [o]\n" + 
			"    10  invokevirtual java.lang.Object.toString() : java.lang.String [27]\n" + 
			"    13  pop\n" + 
			"    14  aconst_null\n" + 
			"    15  areturn\n" + 
			"      Line numbers:\n" + 
			"        [pc: 0, line: 11]\n" + 
			"        [pc: 5, line: 12]\n" + 
			"        [pc: 9, line: 13]\n" + 
			"        [pc: 14, line: 15]\n" + 
			"      Local variable table:\n" + 
			"        [pc: 0, pc: 16] local: this index: 0 type: X\n" + 
			"        [pc: 5, pc: 16] local: o index: 1 type: java.lang.Object\n" + 
			"      Stack map table: number of frames 1\n" + 
			"        [pc: 14, append: {java.lang.Object}]\n";
		checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput);
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=251539
	public void test041() throws Exception {
		this.runConformTest(
			new String[] {
				"I.java",
				"public interface I {\n" + 
				"\n" + 
				"	public Object foo();\n" + 
				"\n" + 
				"	public static class B implements I {\n" + 
				"		public Object foo() {\n" + 
				"			return String.valueOf(X.myI.foo()) + String.valueOf(X.myU.foo());\n" + 
				"		}\n" + 
				"	}\n" + 
				"}",
				"X.java",
				"public class X {\n" + 
				"	public static final I myI = new I.B() {\n" + 
				"		int a = 0;\n" + 
				"		int b = 1;\n" + 
				"	};\n" + 
				"	public static final I myU = new I.B() {\n" + 
				"		int a = 0;\n" + 
				"		int b = 1;\n" + 
				"		int c = 2;\n" + 
				"	};\n" +
				"	private Object bar2() {\n" + 
				"		return null;\n" + 
				"	}\n" + 
				"	private Object bar() {\n" + 
				"		Object o = bar2();\n" + 
				"		if (o != null) {\n" + 
				"			o.toString();\n" + 
				"		}\n" + 
				"		return null;\n" + 
				"	}\n" + 
				"}",
			},
		"");
	
		String expectedOutput =
			"  // Method descriptor #29 ()Ljava/lang/Object;\n" + 
			"  // Stack: 1, Locals: 2\n" + 
			"  private java.lang.Object bar();\n" + 
			"     0  aload_0 [this]\n" + 
			"     1  invokespecial X.bar2() : java.lang.Object [31]\n" + 
			"     4  astore_1 [o]\n" + 
			"     5  aload_1 [o]\n" + 
			"     6  ifnull 14\n" + 
			"     9  aload_1 [o]\n" + 
			"    10  invokevirtual java.lang.Object.toString() : java.lang.String [33]\n" + 
			"    13  pop\n" + 
			"    14  aconst_null\n" + 
			"    15  areturn\n" + 
			"      Line numbers:\n" + 
			"        [pc: 0, line: 15]\n" + 
			"        [pc: 5, line: 16]\n" + 
			"        [pc: 9, line: 17]\n" + 
			"        [pc: 14, line: 19]\n" + 
			"      Local variable table:\n" + 
			"        [pc: 0, pc: 16] local: this index: 0 type: X\n" + 
			"        [pc: 5, pc: 16] local: o index: 1 type: java.lang.Object\n" + 
			"      Stack map table: number of frames 1\n" + 
			"        [pc: 14, append: {java.lang.Object}]\n";
		checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput);
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=260031
	public void test042() throws Exception {
		this.runConformTest(
			new String[] {
				"X.java",
				"public class X {\n" + 
				"	private static void foo(Class<?> c, int n) { }\n" + 
				"	public static void main(String... args) {\n" + 
				"		foo(Integer.class, (args == null ? -1 : 1));\n" + 
				"	}\n" + 
				"}",
			},
		"");
	
		String expectedOutput =
			"  // Stack: 2, Locals: 1\n" + 
			"  public static void main(java.lang.String... args);\n" + 
			"     0  ldc <Class java.lang.Integer> [26]\n" + 
			"     2  aload_0 [args]\n" + 
			"     3  ifnonnull 10\n" + 
			"     6  iconst_m1\n" + 
			"     7  goto 11\n" + 
			"    10  iconst_1\n" + 
			"    11  invokestatic X.foo(java.lang.Class, int) : void [28]\n" + 
			"    14  return\n" + 
			"      Line numbers:\n" + 
			"        [pc: 0, line: 4]\n" + 
			"        [pc: 14, line: 5]\n" + 
			"      Local variable table:\n" + 
			"        [pc: 0, pc: 15] local: args index: 0 type: java.lang.String[]\n" + 
			"      Stack map table: number of frames 2\n" + 
			"        [pc: 10, same_locals_1_stack_item, stack: {java.lang.Class}]\n" + 
			"        [pc: 11, full, stack: {java.lang.Class, int}, locals: {java.lang.String[]}]\n";
		checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput);
	}

	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=279183
	public void test043() throws Exception {
		this.runConformTest(
			new String[] {
				"X.java",
				"public class X {\n" + 
				"	public static void main(String[] args) {\n" + 
				"		System.out.println(\"ok\");\n" + 
				"	}\n" + 
				"	private static int willNotVerify() {\n" + 
				"		int limit = 100;\n" + 
				"		int match;\n" + 
				"		int result = 200;\n" + 
				"		do {\n" + 
				"			if (limit > 0) {\n" + 
				"				continue;\n" + 
				"			}\n" + 
				"			match = 0;\n" + 
				"			while (++match < 100) {\n" + 
				"				System.out.println();\n" + 
				"			}\n" + 
				"		} while (--limit != 0);\n" + 
				"		return result;\n" + 
				"	}\n" + 
				"}",
			},
		"ok");
	
		String expectedOutput =
			"  // Method descriptor #33 ()I\n" + 
			"  // Stack: 2, Locals: 3\n" + 
			"  private static int willNotVerify();\n" + 
			"     0  bipush 100\n" + 
			"     2  istore_0 [limit]\n" + 
			"     3  sipush 200\n" + 
			"     6  istore_2 [result]\n" + 
			"     7  iload_0 [limit]\n" + 
			"     8  ifle 14\n" + 
			"    11  goto 34\n" + 
			"    14  iconst_0\n" + 
			"    15  istore_1 [match]\n" + 
			"    16  goto 25\n" + 
			"    19  getstatic java.lang.System.out : java.io.PrintStream [16]\n" + 
			"    22  invokevirtual java.io.PrintStream.println() : void [34]\n" + 
			"    25  iinc 1 1 [match]\n" + 
			"    28  iload_1 [match]\n" + 
			"    29  bipush 100\n" + 
			"    31  if_icmplt 19\n" + 
			"    34  iinc 0 -1 [limit]\n" + 
			"    37  iload_0 [limit]\n" + 
			"    38  ifne 7\n" + 
			"    41  iload_2 [result]\n" + 
			"    42  ireturn\n" + 
			"      Line numbers:\n" + 
			"        [pc: 0, line: 6]\n" + 
			"        [pc: 3, line: 8]\n" + 
			"        [pc: 7, line: 10]\n" + 
			"        [pc: 11, line: 11]\n" + 
			"        [pc: 14, line: 13]\n" + 
			"        [pc: 16, line: 14]\n" + 
			"        [pc: 19, line: 15]\n" + 
			"        [pc: 25, line: 14]\n" + 
			"        [pc: 34, line: 17]\n" + 
			"        [pc: 41, line: 18]\n" + 
			"      Local variable table:\n" + 
			"        [pc: 3, pc: 43] local: limit index: 0 type: int\n" + 
			"        [pc: 16, pc: 34] local: match index: 1 type: int\n" + 
			"        [pc: 7, pc: 43] local: result index: 2 type: int\n" + 
			"      Stack map table: number of frames 5\n" + 
			"        [pc: 7, full, stack: {}, locals: {int, _, int}]\n" + 
			"        [pc: 14, same]\n" + 
			"        [pc: 19, full, stack: {}, locals: {int, int, int}]\n" + 
			"        [pc: 25, same]\n" + 
			"        [pc: 34, full, stack: {}, locals: {int, _, int}]\n";
		checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput);
	}
	
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=279183
	public void test044() throws Exception {
		this.runConformTest(
			new String[] {
				"X.java",
				"public class X {\n" + 
				"	public static void main(String[] args) {\n" + 
				"		System.out.println(\"ok\");\n" + 
				"	}\n" + 
				"	private static int willNotVerify() {\n" + 
				"		int limit = 100;\n" + 
				"		int match;\n" + 
				"		int result = 200;\n" + 
				"		do {\n" + 
				"			if (limit > 0) {\n" + 
				"				continue;\n" + 
				"			}\n" + 
				"			match = 0;\n" + 
				"			while (++match < 100) {\n" + 
				"				// empty\n" + 
				"			}\n" + 
				"		} while (--limit != 0);\n" + 
				"		return result;\n" + 
				"	}\n" + 
				"}",
			},
		"ok");
	
		String expectedOutput =
			"  // Method descriptor #33 ()I\n" + 
			"  // Stack: 2, Locals: 3\n" + 
			"  private static int willNotVerify();\n" + 
			"     0  bipush 100\n" + 
			"     2  istore_0 [limit]\n" + 
			"     3  sipush 200\n" + 
			"     6  istore_2 [result]\n" + 
			"     7  iload_0 [limit]\n" + 
			"     8  ifle 14\n" + 
			"    11  goto 25\n" + 
			"    14  iconst_0\n" + 
			"    15  istore_1 [match]\n" + 
			"    16  iinc 1 1 [match]\n" + 
			"    19  iload_1 [match]\n" + 
			"    20  bipush 100\n" + 
			"    22  if_icmplt 16\n" + 
			"    25  iinc 0 -1 [limit]\n" + 
			"    28  iload_0 [limit]\n" + 
			"    29  ifne 7\n" + 
			"    32  iload_2 [result]\n" + 
			"    33  ireturn\n" + 
			"      Line numbers:\n" + 
			"        [pc: 0, line: 6]\n" + 
			"        [pc: 3, line: 8]\n" + 
			"        [pc: 7, line: 10]\n" + 
			"        [pc: 11, line: 11]\n" + 
			"        [pc: 14, line: 13]\n" + 
			"        [pc: 16, line: 14]\n" + 
			"        [pc: 25, line: 17]\n" + 
			"        [pc: 32, line: 18]\n" + 
			"      Local variable table:\n" + 
			"        [pc: 3, pc: 34] local: limit index: 0 type: int\n" + 
			"        [pc: 16, pc: 25] local: match index: 1 type: int\n" + 
			"        [pc: 7, pc: 34] local: result index: 2 type: int\n" + 
			"      Stack map table: number of frames 4\n" + 
			"        [pc: 7, full, stack: {}, locals: {int, _, int}]\n" + 
			"        [pc: 14, same]\n" + 
			"        [pc: 16, full, stack: {}, locals: {int, int, int}]\n" + 
			"        [pc: 25, full, stack: {}, locals: {int, _, int}]\n";
		checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput);
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=279183
	public void test045() throws Exception {
		this.runConformTest(
			new String[] {
				"X.java",
				"public class X {\n" + 
				"	public static void main(String args[]) {\n" + 
				"		int i;\n" + 
				"		do {\n" + 
				"		} while ((i = 2) < 0);\n" + 
				"		if (i != 2) {\n" + 
				"			System.out.println(\"FAILED\");\n" + 
				"		} else {\n" + 
				"			System.out.println(\"SUCCESS\");\n" + 
				"		}\n" + 
				"	}\n" + 
				"}",
			},
		"SUCCESS");
	
		String expectedOutput =
			"  // Method descriptor #15 ([Ljava/lang/String;)V\n" + 
			"  // Stack: 2, Locals: 2\n" + 
			"  public static void main(java.lang.String[] args);\n" + 
			"     0  iconst_2\n" + 
			"     1  dup\n" + 
			"     2  istore_1 [i]\n" + 
			"     3  iflt 0\n" + 
			"     6  iload_1 [i]\n" + 
			"     7  iconst_2\n" + 
			"     8  if_icmpeq 22\n" + 
			"    11  getstatic java.lang.System.out : java.io.PrintStream [16]\n" + 
			"    14  ldc <String \"FAILED\"> [22]\n" + 
			"    16  invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + 
			"    19  goto 30\n" + 
			"    22  getstatic java.lang.System.out : java.io.PrintStream [16]\n" + 
			"    25  ldc <String \"SUCCESS\"> [30]\n" + 
			"    27  invokevirtual java.io.PrintStream.println(java.lang.String) : void [24]\n" + 
			"    30  return\n" + 
			"      Line numbers:\n" + 
			"        [pc: 0, line: 5]\n" + 
			"        [pc: 3, line: 4]\n" + 
			"        [pc: 6, line: 6]\n" + 
			"        [pc: 11, line: 7]\n" + 
			"        [pc: 19, line: 8]\n" + 
			"        [pc: 22, line: 9]\n" + 
			"        [pc: 30, line: 11]\n" + 
			"      Local variable table:\n" + 
			"        [pc: 0, pc: 31] local: args index: 0 type: java.lang.String[]\n" + 
			"        [pc: 3, pc: 31] local: i index: 1 type: int\n" + 
			"      Stack map table: number of frames 3\n" + 
			"        [pc: 0, same]\n" + 
			"        [pc: 22, append: {int}]\n" + 
			"        [pc: 30, same]\n";
		checkDisassembledClassFile(OUTPUT_DIR + File.separator + "X.class", "X", expectedOutput);
	}
	// 298250
	public void test046() {
		Map customOptions = getCompilerOptions();
		customOptions.put(JavaCore.COMPILER_PB_UNUSED_PRIVATE_MEMBER, JavaCore.IGNORE);
		this.runNegativeTest(
			new String[] {
				"X.java",
				"public class X {\n" + 
				"	class E1 extends RuntimeException {\n" + 
				"		private static final long serialVersionUID = 1L;\n" + 
				"	}\n" + 
				"	static Object bar() {\n" + 
				"		return new Object() {\n" + 
				"			public void foo() {\n" + 
				"				if (condition())\n" + 
				"					throw new E1();\n" + 
				"			}\n" + 
				"		};\n" + 
				"	}\n" + 
				"	static boolean condition() {\n" + 
				"		return false;\n" + 
				"	}\n" + 
				"	public static void main(String[] args) {\n" + 
				"	}\n" + 
				"}\n" + 
				"",
			},
			"----------\n" + 
			"1. ERROR in X.java (at line 9)\n" + 
			"	throw new E1();\n" + 
			"	      ^^^^^^^^\n" + 
			"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" + 
			"----------\n",
			null,
			true,
			customOptions);
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=324848
	public void test047() {
		this.runNegativeTest(
			new String[] {
				"X.java",
				"public class X {\n" + 
				"	public static void test() {\n" + 
				"		final boolean x = true;\n" + 
				"		new Runnable() {\n" + 
				"			@Override\n" + 
				"			public void run() {\n" + 
				"				synchronized (X.this) {\n" + 
				"					System.out.println(x);\n" + 
				"				}\n" + 
				"			}\n" + 
				"		};\n" + 
				"	}\n" + 
				"}"
			},
			"----------\n" + 
			"1. ERROR in X.java (at line 7)\n" + 
			"	synchronized (X.this) {\n" + 
			"	              ^^^^^^\n" + 
			"No enclosing instance of the type X is accessible in scope\n" + 
			"----------\n");
	}

	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=351653
	public void test048() {
		this.runConformTest(
			new String[] {
				"X.java",
				"public class X {\n" +
				"    public static void main(String[] p) {\n" +
				"        int i;\n" +
				"        try {\n" +
				"          if (p == null || p == null)\n" +
				"            return;\n" +
				"          i = 0;\n" +
				"        } finally {\n" +
				"            i = 0;\n" +
				"        }\n" +
				"    }\n" +
				"}\n"
			},
			"");
	}
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=351653
	public void test049() {
		this.runConformTest(
			new String[] {
				"X.java",
				"import java.io.IOException;\n" + 
				"import java.io.InputStream;\n" + 
				"\n" + 
				"public class X implements Runnable {\n" + 
				"\n" + 
				"	private boolean contentEquals(final String src, final String tar)\n" + 
				"			throws IOException {\n" + 
				"		if (src == null && tar == null) {\n" + 
				"			return true;\n" + 
				"		}\n" + 
				"		if (!isFile(src) || !isFile(tar))\n" + 
				"			throw new IOException(\"cannot compare non-files\");\n" + 
				"		if (size(src) != size(tar))\n" + 
				"			return false;\n" + 
				"		final byte[] baSrc = new byte[8192];\n" + 
				"		final byte[] baTar = new byte[baSrc.length];\n" + 
				"		int lrSrc;\n" + 
				"		int lrTar;\n" + 
				"		InputStream isSrc = null;\n" + 
				"		InputStream isTar = null;\n" + 
				"		try {\n" + 
				"			isSrc = newInputStream(src);\n" + 
				"			if (isSrc == null)\n" + 
				"				return false;\n" + 
				"			isTar = newInputStream(tar);\n" + 
				"			if (isTar == null)\n" + 
				"				return false;\n" + 
				"			do {\n" + 
				"				lrSrc = isSrc.read(baSrc);\n" + 
				"				lrTar = isTar.read(baTar);\n" + 
				"				if (lrSrc != lrTar)\n" + 
				"					return false;\n" + 
				"				for (int i = 0; i < lrSrc; i++)\n" + 
				"					if (baSrc[i] != baTar[i])\n" + 
				"						return false;\n" + 
				"			} while ((lrSrc >= 0) && (lrSrc == lrTar));\n" + 
				"		} finally {\n" + 
				"			try {\n" + 
				"				close(isSrc);\n" + 
				"			} finally {\n" + 
				"				close(isTar);\n" + 
				"			}\n" + 
				"		}\n" + 
				"		return true;\n" + 
				"	}\n" + 
				"	private void close(final InputStream isSrc) {\n" + 
				"	}\n" + 
				"	private boolean isFile(final String src) {\n" + 
				"		return false;\n" + 
				"	}\n" + 
				"	public void run() {\n" + 
				"		try {\n" + 
				"			System.out.println(contentEquals(null, null));\n" + 
				"		} catch (final IOException e) {\n" + 
				"			e.printStackTrace();\n" + 
				"		}\n" + 
				"	}\n" +
				"	static InputStream newInputStream(String path) {\n" +
				"		return null;\n" +
				"	}\n" + 
				"	static int size(String path) {\n" +
				"		return 0;\n" +
				"	}\n" + 
				"	public static void main(final String[] args) {\n" + 
				"		new X().run();\n" + 
				"	}\n" + 
				"}"
			},
			"true");
	}
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=352145
	public void test050() {
		this.runConformTest(
			new String[] {
				"X.java",
				"import java.io.File;\n" + 
				"import java.io.FileFilter;\n" + 
				"import java.io.FileNotFoundException;\n" + 
				"import java.io.IOException;\n" + 
				"import java.util.ArrayList;\n" + 
				"import java.util.List;\n" + 
				"\n" + 
				"public class X {\n" + 
				"\n" + 
				"	public static final List<File> copyDir(List<File> lf,\n" + 
				"			final boolean overwrite, final boolean recursive,\n" + 
				"			final boolean returnSrc, final File src, final File tar,\n" + 
				"			final FileFilter filter) throws IOException {\n" + 
				"		if (!src.isDirectory())\n" + 
				"			throw new FileNotFoundException(\"not a directory: \" + src);\n" + 
				"		if (!tar.isDirectory())\n" + 
				"			throw new FileNotFoundException(\"not a directory: \" + tar);\n" + 
				"		final File[] fa = src.listFiles();\n" + 
				"		if (fa == null)\n" + 
				"			throw new FileNotFoundException(\"directory not accessible: \" + src);\n" + 
				"		if (lf == null)\n" + 
				"			lf = new ArrayList<File>(fa.length);\n" + 
				"		for (final File f : fa) {\n" + 
				"			final File right = new File(tar, f.getName());\n" + 
				"			if (f.isDirectory()) {\n" + 
				"				if (recursive && filter.accept(f)) {\n" + 
				"					if (!right.exists())\n" + 
				"						right.mkdir();\n" + 
				"					copyDir(lf, overwrite, recursive, returnSrc, f, right,\n" + 
				"							filter);\n" + 
				"				}\n" + 
				"			} else {\n" + 
				"				if (overwrite || (!right.exists() && filter.accept(f))) {\n" + 
				"					lf.add(returnSrc ? f : right);\n" + 
				"				}\n" + 
				"			}\n" + 
				"		}\n" + 
				"		return lf;\n" + 
				"	}\n" + 
				"\n" + 
				"	public static void main(final String[] args) {\n" + 
				"		System.out.println(\"SUCCESS\");\n" + 
				"	}\n" + 
				"\n" + 
				"}"
			},
			"SUCCESS");
	}
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=352145
	public void test051() {
		this.runConformTest(
			new String[] {
				"X.java",
				"import java.io.File;\n" + 
				"import java.io.IOException;\n" + 
				"import java.util.List;\n" + 
				"\n" + 
				"public class X {\n" + 
				"\n" + 
				"	public static final List<File> copyDir(int j, List<File> lf,\n" + 
				"			final boolean returnSrc, final File[] fa) throws IOException {\n" + 
				"		if (lf == null)\n" + 
				"			lf = null;\n" + 
				"		for (int i = 0, max = fa.length; i < max; i++) {\n" + 
				"			final File f = fa[i];\n" + 
				"			final File right = new File(f.getName());\n" + 
				"			if (f.isDirectory()) {\n" + 
				"			} else {\n" + 
				"				lf.add(returnSrc ? f : right);\n" + 
				"			}\n" + 
				"		}\n" + 
				"		return lf;\n" + 
				"	}\n" + 
				"\n" + 
				"	public static void main(final String[] args) {\n" + 
				"		System.out.println(\"SUCCESS\");\n" + 
				"	}\n" + 
				"\n" + 
				"}"
			},
			"SUCCESS");
	}
	public void test052() throws Exception {
		this.runConformTest(
			new String[] {
				"X.java",
				"public class X {\n" +
				"	X(int i) {}\n" +
				"	void foo() {}\n" +
				"	public static void main(String[] args) {\n" +
				"		new X(args.length == 2 ? 1 : 2).foo();\n" +
				"		System.out.println(\"SUCCESS\");\n" +
				"	}\n" +
				"}",
			},
			"SUCCESS");
	}
	// 352665
	public void test053() {
		Map customOptions = getCompilerOptions();
		customOptions.put(JavaCore.COMPILER_PB_UNUSED_PRIVATE_MEMBER, JavaCore.IGNORE);
		customOptions.put(JavaCore.COMPILER_PB_SYNTHETIC_ACCESS_EMULATION, JavaCore.IGNORE);
		this.runNegativeTest(
			new String[] {
				"X.java",
				"public class X {\n" + 
				"	static {\n" + 
				"		for(int i = 0; i < 10; i++){\n" + 
				"			A a = new A();\n" + 
				"			a.foo();\n" + 
				"		}\n" + 
				"	}\n" + 
				"	private class A {\n" + 
				"		private A() {\n" + 
				"		}\n" + 
				"		void foo() {}\n" + 
				"	}\n" + 
				"}",
			},
			"----------\n" + 
			"1. ERROR in X.java (at line 4)\n" + 
			"	A a = new A();\n" + 
			"	      ^^^^^^^\n" + 
			"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" + 
			"----------\n",
			null,
			true,
			customOptions);
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=354052
	public void test054() throws Exception {
		this.runConformTest(
			new String[] {
				"X.java",
				"public class X {\n" +
				"public static void foo() {\n" +
			    "     X z;\n" +
			    "     while ((z = getObject()) != null) {\n" +
			    "         z.bar();\n" +
			    "     }\n" +
			    "	  System.out.println(\"SUCCESS\");\n" +
			    " }\n" +
			    " public void bar() {}\n" +
			    " public static X getObject() {\n" +
			    "     return null;\n" +
			    " }\n" +
				"   public static void main(String[] args) {\n"+
				"       new X().foo();\n"+
				"   }\n"+
				"}",
			},
			"SUCCESS");
	}
	
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=359495
	public void testBug359495a() throws Exception {
		this.runConformTest(
				new String[] {
					"X.java",
					"import java.util.List;\n" +
					"import java.util.concurrent.locks.Lock;\n" +
					"import java.util.Arrays;\n" +
					"import java.util.concurrent.locks.ReentrantLock;\n" +
					"public class X {\n" +
					"	public static void main(String[] args) {\n" +
					"		final Lock lock = new ReentrantLock();\n" +
					"		final List<String> strings = Arrays.asList(args);\n" +
					"		lock.lock();\n" +
					"		try{\n" +
					"			for (final String string:strings){\n" +
					"				return;\n" +
					"			}\n" +
					"			return;\n" +
					"		} finally {\n" +
					"			lock.unlock();\n" +
					"		}" +
					"	}\n" +
					"}",
				},
				"");

			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
			String actualOutput =
				disassembler.disassemble(
					classFileBytes,
					"\n",
					ClassFileBytesDisassembler.DETAILED);

			String expectedOutput =
					"  // Method descriptor #15 ([Ljava/lang/String;)V\n" + 
					"  // Stack: 2, Locals: 6\n" + 
					"  public static void main(java.lang.String[] args);\n" + 
					"     0  new java.util.concurrent.locks.ReentrantLock [16]\n" + 
					"     3  dup\n" + 
					"     4  invokespecial java.util.concurrent.locks.ReentrantLock() [18]\n" + 
					"     7  astore_1 [lock]\n" + 
					"     8  aload_0 [args]\n" + 
					"     9  invokestatic java.util.Arrays.asList(java.lang.Object[]) : java.util.List [19]\n" + 
					"    12  astore_2 [strings]\n" + 
					"    13  aload_1 [lock]\n" + 
					"    14  invokeinterface java.util.concurrent.locks.Lock.lock() : void [25] [nargs: 1]\n" + 
					"    19  aload_2 [strings]\n" + 
					"    20  invokeinterface java.util.List.iterator() : java.util.Iterator [30] [nargs: 1]\n" + 
					"    25  astore 4\n" + 
					"    27  aload 4\n" + 
					"    29  invokeinterface java.util.Iterator.hasNext() : boolean [36] [nargs: 1]\n" + 
					"    34  ifeq 55\n" + 
					"    37  aload 4\n" + 
					"    39  invokeinterface java.util.Iterator.next() : java.lang.Object [42] [nargs: 1]\n" + 
					"    44  checkcast java.lang.String [46]\n" + 
					"    47  astore_3 [string]\n" + 
					"    48  aload_1 [lock]\n" + 
					"    49  invokeinterface java.util.concurrent.locks.Lock.unlock() : void [48] [nargs: 1]\n" + 
					"    54  return\n" + 
					"    55  aload_1 [lock]\n" + 
					"    56  invokeinterface java.util.concurrent.locks.Lock.unlock() : void [48] [nargs: 1]\n" + 
					"    61  return\n" + 
					"    62  astore 5\n" + 
					"    64  aload_1 [lock]\n" + 
					"    65  invokeinterface java.util.concurrent.locks.Lock.unlock() : void [48] [nargs: 1]\n" + 
					"    70  aload 5\n" + 
					"    72  athrow\n" + 
					"      Exception Table:\n" + 
					"        [pc: 19, pc: 48] -> 62 when : any\n" + 
					"      Line numbers:\n" + 
					"        [pc: 0, line: 7]\n" + 
					"        [pc: 8, line: 8]\n" + 
					"        [pc: 13, line: 9]\n" + 
					"        [pc: 19, line: 11]\n" + 
					"        [pc: 48, line: 16]\n" + 
					"        [pc: 54, line: 12]\n" + 
					"        [pc: 55, line: 16]\n" + 
					"        [pc: 61, line: 14]\n" + 
					"        [pc: 62, line: 15]\n" + 
					"        [pc: 64, line: 16]\n" + 
					"        [pc: 70, line: 17]\n" + 
					"      Local variable table:\n" + 
					"        [pc: 0, pc: 73] local: args index: 0 type: java.lang.String[]\n" + 
					"        [pc: 8, pc: 73] local: lock index: 1 type: java.util.concurrent.locks.Lock\n" + 
					"        [pc: 13, pc: 73] local: strings index: 2 type: java.util.List\n" + 
					"        [pc: 48, pc: 55] local: string index: 3 type: java.lang.String\n" + 
					"      Local variable type table:\n" + 
					"        [pc: 13, pc: 73] local: strings index: 2 type: java.util.List<java.lang.String>\n" + 
					"      Stack map table: number of frames 2\n" + 
					"        [pc: 55, append: {java.util.concurrent.locks.Lock, java.util.List}]\n" + 
					"        [pc: 62, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" ;

			int index = actualOutput.indexOf(expectedOutput);
			if (index == -1 || expectedOutput.length() == 0) {
				System.out.println(Util.displayString(actualOutput, 2));
			}
			if (index == -1) {
				assertEquals("Wrong contents", expectedOutput, actualOutput);
			}
	}
	
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=359495
	public void testBug359495b() throws Exception {
		this.runConformTest(
				new String[] {
					"X.java",
					"import java.util.List;\n" +
					"import java.util.Iterator;\n" +
					"import java.util.concurrent.locks.Lock;\n" +
					"import java.util.Arrays;\n" +
					"import java.util.concurrent.locks.ReentrantLock;\n" +
					"public class X {\n" +
					"	public static void main(String[] args) {\n" +
					"		final Lock lock = new ReentrantLock();\n" +
					"		final List<String> strings = Arrays.asList(args);\n" +
					"		lock.lock();\n" +
					"		try{\n" +
					"			for (Iterator i = strings.iterator(); i.hasNext();){\n" +
					"				return;\n" +
					"			}\n" +
					"			return;\n" +
					"		} finally {\n" +
					"			lock.unlock();\n" +
					"		}" +
					"	}\n" +
					"}",
				},
				"");

			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
			String actualOutput =
				disassembler.disassemble(
					classFileBytes,
					"\n",
					ClassFileBytesDisassembler.DETAILED);

			String expectedOutput =
					"  // Method descriptor #15 ([Ljava/lang/String;)V\n" + 
					"  // Stack: 2, Locals: 5\n" + 
					"  public static void main(java.lang.String[] args);\n" + 
					"     0  new java.util.concurrent.locks.ReentrantLock [16]\n" + 
					"     3  dup\n" + 
					"     4  invokespecial java.util.concurrent.locks.ReentrantLock() [18]\n" + 
					"     7  astore_1 [lock]\n" + 
					"     8  aload_0 [args]\n" + 
					"     9  invokestatic java.util.Arrays.asList(java.lang.Object[]) : java.util.List [19]\n" + 
					"    12  astore_2 [strings]\n" + 
					"    13  aload_1 [lock]\n" + 
					"    14  invokeinterface java.util.concurrent.locks.Lock.lock() : void [25] [nargs: 1]\n" + 
					"    19  aload_2 [strings]\n" + 
					"    20  invokeinterface java.util.List.iterator() : java.util.Iterator [30] [nargs: 1]\n" + 
					"    25  astore_3 [i]\n" + 
					"    26  aload_3 [i]\n" + 
					"    27  invokeinterface java.util.Iterator.hasNext() : boolean [36] [nargs: 1]\n" + 
					"    32  ifeq 42\n" + 
					"    35  aload_1 [lock]\n" + 
					"    36  invokeinterface java.util.concurrent.locks.Lock.unlock() : void [42] [nargs: 1]\n" + 
					"    41  return\n" + 
					"    42  aload_1 [lock]\n" + 
					"    43  invokeinterface java.util.concurrent.locks.Lock.unlock() : void [42] [nargs: 1]\n" + 
					"    48  return\n" + 
					"    49  astore 4\n" + 
					"    51  aload_1 [lock]\n" + 
					"    52  invokeinterface java.util.concurrent.locks.Lock.unlock() : void [42] [nargs: 1]\n" + 
					"    57  aload 4\n" + 
					"    59  athrow\n" + 
					"      Exception Table:\n" + 
					"        [pc: 19, pc: 35] -> 49 when : any\n" + 
					"      Line numbers:\n" + 
					"        [pc: 0, line: 8]\n" + 
					"        [pc: 8, line: 9]\n" + 
					"        [pc: 13, line: 10]\n" + 
					"        [pc: 19, line: 12]\n" + 
					"        [pc: 35, line: 17]\n" + 
					"        [pc: 41, line: 13]\n" + 
					"        [pc: 42, line: 17]\n" + 
					"        [pc: 48, line: 15]\n" + 
					"        [pc: 49, line: 16]\n" + 
					"        [pc: 51, line: 17]\n" + 
					"        [pc: 57, line: 18]\n" + 
					"      Local variable table:\n" + 
					"        [pc: 0, pc: 60] local: args index: 0 type: java.lang.String[]\n" + 
					"        [pc: 8, pc: 60] local: lock index: 1 type: java.util.concurrent.locks.Lock\n" + 
					"        [pc: 13, pc: 60] local: strings index: 2 type: java.util.List\n" + 
					"        [pc: 26, pc: 42] local: i index: 3 type: java.util.Iterator\n" + 
					"      Local variable type table:\n" + 
					"        [pc: 13, pc: 60] local: strings index: 2 type: java.util.List<java.lang.String>\n" + 
					"      Stack map table: number of frames 2\n" + 
					"        [pc: 42, append: {java.util.concurrent.locks.Lock, java.util.List}]\n" + 
					"        [pc: 49, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n";

			int index = actualOutput.indexOf(expectedOutput);
			if (index == -1 || expectedOutput.length() == 0) {
				System.out.println(Util.displayString(actualOutput, 2));
			}
			if (index == -1) {
				assertEquals("Wrong contents", expectedOutput, actualOutput);
			}
	}

	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=362591
	public void test055() throws Exception {
		this.runConformTest(
				new String[] {
					"X.java",
					"public class X {\n" + 
					"	public static void main(String[] args) {\n" + 
					"		testError(3, 4, \"d\");\n" + 
					"	}\n" + 
					"	public static void testError(Number n0, Number n1, String refValue) {\n" + 
					"		Number result = refValue.equals(\"ttt\") ? n0 : (n1 == null ? null : n1.intValue());\n" + 
					"		System.out.println(String.valueOf(result));\n" + 
					"	}\n" + 
					"}",
				},
				"4");

			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
			String actualOutput =
				disassembler.disassemble(
					classFileBytes,
					"\n",
					ClassFileBytesDisassembler.DETAILED);

			String expectedOutput =
				"  // Method descriptor #27 (Ljava/lang/Number;Ljava/lang/Number;Ljava/lang/String;)V\n" + 
				"  // Stack: 2, Locals: 4\n" + 
				"  public static void testError(java.lang.Number n0, java.lang.Number n1, java.lang.String refValue);\n" + 
				"     0  aload_2 [refValue]\n" + 
				"     1  ldc <String \"ttt\"> [30]\n" + 
				"     3  invokevirtual java.lang.String.equals(java.lang.Object) : boolean [32]\n" + 
				"     6  ifeq 13\n" + 
				"     9  aload_0 [n0]\n" + 
				"    10  goto 28\n" + 
				"    13  aload_1 [n1]\n" + 
				"    14  ifnonnull 21\n" + 
				"    17  aconst_null\n" + 
				"    18  goto 28\n" + 
				"    21  aload_1 [n1]\n" + 
				"    22  invokevirtual java.lang.Number.intValue() : int [38]\n" + 
				"    25  invokestatic java.lang.Integer.valueOf(int) : java.lang.Integer [16]\n" + 
				"    28  astore_3 [result]\n" + 
				"    29  getstatic java.lang.System.out : java.io.PrintStream [44]\n" + 
				"    32  aload_3 [result]\n" + 
				"    33  invokestatic java.lang.String.valueOf(java.lang.Object) : java.lang.String [50]\n" + 
				"    36  invokevirtual java.io.PrintStream.println(java.lang.String) : void [53]\n" + 
				"    39  return\n" + 
				"      Line numbers:\n" + 
				"        [pc: 0, line: 6]\n" + 
				"        [pc: 29, line: 7]\n" + 
				"        [pc: 39, line: 8]\n" + 
				"      Local variable table:\n" + 
				"        [pc: 0, pc: 40] local: n0 index: 0 type: java.lang.Number\n" + 
				"        [pc: 0, pc: 40] local: n1 index: 1 type: java.lang.Number\n" + 
				"        [pc: 0, pc: 40] local: refValue index: 2 type: java.lang.String\n" + 
				"        [pc: 29, pc: 40] local: result index: 3 type: java.lang.Number\n" + 
				"      Stack map table: number of frames 3\n" + 
				"        [pc: 13, same]\n" + 
				"        [pc: 21, same]\n" + 
				"        [pc: 28, same_locals_1_stack_item, stack: {java.lang.Number}]\n";

			int index = actualOutput.indexOf(expectedOutput);
			if (index == -1 || expectedOutput.length() == 0) {
				System.out.println(Util.displayString(actualOutput, 2));
			}
			if (index == -1) {
				assertEquals("Wrong contents", expectedOutput, actualOutput);
			}
	}
	
	public void test055a() throws Exception {
		this.runConformTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"    public static void main(String[] args) {\n" +
					"        Object o = args != null ? args : (args == null ? null : args.length);\n" +
					"    }\n" +
					"}\n",
				},
				"");
	}
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=366999
	public void test056() throws Exception {
		if (this.complianceLevel < ClassFileConstants.JDK1_7) return;
		this.runConformTest(
				new String[] {
					"X.java",
					"import java.io.BufferedReader;\n" + 
					"import java.io.Closeable;\n" + 
					"import java.io.File;\n" + 
					"import java.io.FileReader;\n" + 
					"import java.io.IOException;\n" + 
					"\n" + 
					"public class X {\n" + 
					"\n" + 
					"	static class C implements Closeable {\n" + 
					"		@Override\n" + 
					"		public void close() throws IOException {\n" + 
					"			//\n" + 
					"		}\n" + 
					"	}\n" + 
					"\n" + 
					"	int run() throws IOException {\n" + 
					"		int lcnt = 0;\n" + 
					"		try (C c = new C();) {\n" + 
					"			try (final BufferedReader br = new BufferedReader(new FileReader(\n" + 
					"					new File(\"logging.properties\")))) {\n" + 
					"				String s = null;\n" + 
					"				while ((s = br.readLine()) != null)\n" + 
					"					lcnt++;\n" + 
					"				return lcnt;\n" + 
					"			}\n" + 
					"		} finally {\n" + 
					"			System.out.println(\"read \" + lcnt + \" lines\");\n" + 
					"		}\n" + 
					"	}\n" + 
					"\n" + 
					"	public static void main(final String[] args) throws IOException {\n" + 
					"		System.out.println(\"SUCCESS\");\n" + 
					"	}\n" + 
					"}",
				},
				"SUCCESS");
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
	public void test057() throws Exception {
		this.runConformTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"    public void run() {\n" +
					"        String s;\n" +
					"        label1: do {\n" +
					"            for (;;) {\n" +
					"                s = \"\";\n" +
					"                if (s == null) \n" +
					"                    continue label1;\n" +
					"            }\n" +
					"        } while (s != null);\n" +
					"}\n" +
					"    public static void main(String [] args) {\n" +
					"		System.out.println(\"SUCCESS\");\n" +
					"    }\n" +
					"}\n",
				},
				"SUCCESS");
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
	public void test058() throws Exception {
		this.runConformTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"    public void run() {\n" +
					"        String s;\n" +
					"        label1: do {\n" +
					"            for (;true;) {\n" +
					"                s = \"\";\n" +
					"                if (s == null) \n" +
					"                    continue label1;\n" +
					"            }\n" +
					"        } while (s != null);\n" +
					"}\n" +
					"    public static void main(String [] args) {\n" +
					"		System.out.println(\"SUCCESS\");\n" +
					"    }\n" +
					"}\n"				},
				"SUCCESS");
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
	public void test059() throws Exception {
		this.runNegativeTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"    public void run() {\n" +
					"        String s;\n" +
					"        label1: do {\n" +
					"            for (;false;) {\n" +
					"                s = \"\";\n" +
					"                if (s == null) \n" +
					"                    continue label1;\n" +
					"            }\n" +
					"        } while (s != null);\n" +
					"}\n" +
					"    public static void main(String [] args) {\n" +
					"		System.out.println(\"SUCCESS\");\n" +
					"    }\n" +
					"}\n"				},
					"----------\n" + 
					"1. WARNING in X.java (at line 4)\n" + 
					"	label1: do {\n" + 
					"	^^^^^^\n" + 
					"The label label1 is never explicitly referenced\n" + 
					"----------\n" + 
					"2. ERROR in X.java (at line 5)\n" + 
					"	for (;false;) {\n" + 
					"                s = \"\";\n" + 
					"                if (s == null) \n" + 
					"                    continue label1;\n" + 
					"            }\n" + 
					"	              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + 
					"Unreachable code\n" + 
					"----------\n" + 
					"3. ERROR in X.java (at line 10)\n" + 
					"	} while (s != null);\n" + 
					"	         ^\n" + 
					"The local variable s may not have been initialized\n" + 
						"----------\n");
	}	
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
	public void test060() throws Exception {
		this.runConformTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"    public void run() {\n" +
					"        String s;\n" +
					"        label1: do {\n" +
					"            for (; 5 < 10;) {\n" +
					"                s = \"\";\n" +
					"                if (s == null) \n" +
					"                    continue label1;\n" +
					"            }\n" +
					"        } while (s != null);\n" +
					"}\n" +
					"    public static void main(String [] args) {\n" +
					"		System.out.println(\"SUCCESS\");\n" +
					"    }\n" +
					"}\n"				},
				"SUCCESS");
	}	
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
	public void test061() throws Exception {
		this.runNegativeTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"    public void run() {\n" +
					"        int five = 5, ten = 10;\n" +
					"        String s;\n" +
					"        label1: do {\n" +
					"            for (; five < ten;) {\n" +
					"                s = \"\";\n" +
					"                if (s == null) \n" +
					"                    continue label1;\n" +
					"            }\n" +
					"        } while (s != null);\n" +
					"}\n" +
					"    public static void main(String [] args) {\n" +
					"		System.out.println(\"SUCCESS\");\n" +
					"    }\n" +
					"}\n"				},
					"----------\n" + 
					"1. WARNING in X.java (at line 9)\n" + 
					"	continue label1;\n" + 
					"	^^^^^^^^^^^^^^^^\n" + 
					"Dead code\n" + 
					"----------\n" + 
					"2. ERROR in X.java (at line 11)\n" + 
					"	} while (s != null);\n" + 
					"	         ^\n" + 
					"The local variable s may not have been initialized\n" + 
					"----------\n");
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
	public void test062() throws Exception {
		this.runConformTest(
			new String[] {
				"X.java",
				"public class X {\n" +
				"    public void run() {\n" +
				"        final int five = 5, ten = 10;\n" +
				"        String s;\n" +
				"        label1: do {\n" +
				"            for (; five < ten;) {\n" +
				"                s = \"\";\n" +
				"                if (s == null) \n" +
				"                    continue label1;\n" +
				"            }\n" +
				"        } while (s != null);\n" +
				"}\n" +
				"    public static void main(String [] args) {\n" +
				"		System.out.println(\"SUCCESS\");\n" +
				"    }\n" +
				"}\n"				},
			"SUCCESS");
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
	public void test063() throws Exception {
		this.runNegativeTest(
			new String[] {
				"X.java",
				"public class X {\n" +
				"    public void run() {\n" +
				"        final int five = 5, ten = 10;\n" +
				"        String s;\n" +
				"        label1: do {\n" +
				"            for (; five > ten;) {\n" +
				"                s = \"\";\n" +
				"                if (s == null) \n" +
				"                    continue label1;\n" +
				"            }\n" +
				"        } while (s != null);\n" +
				"}\n" +
				"    public static void main(String [] args) {\n" +
				"		System.out.println(\"SUCCESS\");\n" +
				"    }\n" +
				"}\n"				},
				"----------\n" + 
				"1. WARNING in X.java (at line 5)\n" + 
				"	label1: do {\n" + 
				"	^^^^^^\n" + 
				"The label label1 is never explicitly referenced\n" + 
				"----------\n" + 
				"2. ERROR in X.java (at line 6)\n" + 
				"	for (; five > ten;) {\n" + 
				"                s = \"\";\n" + 
				"                if (s == null) \n" + 
				"                    continue label1;\n" + 
				"            }\n" + 
				"	                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + 
				"Unreachable code\n" + 
				"----------\n" + 
				"3. ERROR in X.java (at line 11)\n" + 
				"	} while (s != null);\n" + 
				"	         ^\n" + 
				"The local variable s may not have been initialized\n" + 
				"----------\n");
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
	public void test064() throws Exception {
		this.runConformTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"    public void run() {\n" +
					"        String s;\n" +
					"        label1: do {\n" +
					"            while (true) {\n" +
					"                s = \"\";\n" +
					"                if (s == null) \n" +
					"                    continue label1;\n" +
					"            }\n" +
					"        } while (s != null);\n" +
					"}\n" +
					"    public static void main(String [] args) {\n" +
					"		System.out.println(\"SUCCESS\");\n" +
					"    }\n" +
					"}\n",
				},
				"SUCCESS");
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
	public void test065() throws Exception {
		this.runNegativeTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"    public void run() {\n" +
					"        String s;\n" +
					"        label1: do {\n" +
					"            while (false) {\n" +
					"                s = \"\";\n" +
					"                if (s == null) \n" +
					"                    continue label1;\n" +
					"            }\n" +
					"        } while (s != null);\n" +
					"}\n" +
					"    public static void main(String [] args) {\n" +
					"		System.out.println(\"SUCCESS\");\n" +
					"    }\n" +
					"}\n"				},
					"----------\n" + 
					"1. WARNING in X.java (at line 4)\n" + 
					"	label1: do {\n" + 
					"	^^^^^^\n" + 
					"The label label1 is never explicitly referenced\n" + 
					"----------\n" + 
					"2. ERROR in X.java (at line 5)\n" + 
					"	while (false) {\n" + 
					"                s = \"\";\n" + 
					"                if (s == null) \n" + 
					"                    continue label1;\n" + 
					"            }\n" + 
					"	              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + 
					"Unreachable code\n" + 
					"----------\n" + 
					"3. ERROR in X.java (at line 10)\n" + 
					"	} while (s != null);\n" + 
					"	         ^\n" + 
					"The local variable s may not have been initialized\n" + 
					"----------\n");
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
	public void test066() throws Exception {
		this.runConformTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"    public void run() {\n" +
					"        String s;\n" +
					"        label1: do {\n" +
					"            while(5 < 10) {\n" +
					"                s = \"\";\n" +
					"                if (s == null) \n" +
					"                    continue label1;\n" +
					"            }\n" +
					"        } while (s != null);\n" +
					"}\n" +
					"    public static void main(String [] args) {\n" +
					"		System.out.println(\"SUCCESS\");\n" +
					"    }\n" +
					"}\n"				},
				"SUCCESS");
	}	
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
	public void test067() throws Exception {
		this.runNegativeTest(
				new String[] {
					"X.java",
					"public class X {\n" +
					"    public void run() {\n" +
					"        int five = 5, ten = 10;\n" +
					"        String s;\n" +
					"        label1: do {\n" +
					"            while (five < ten) {\n" +
					"                s = \"\";\n" +
					"                if (s == null) \n" +
					"                    continue label1;\n" +
					"            }\n" +
					"        } while (s != null);\n" +
					"}\n" +
					"    public static void main(String [] args) {\n" +
					"		System.out.println(\"SUCCESS\");\n" +
					"    }\n" +
					"}\n"				},
					"----------\n" + 
					"1. WARNING in X.java (at line 9)\n" + 
					"	continue label1;\n" + 
					"	^^^^^^^^^^^^^^^^\n" + 
					"Dead code\n" + 
					"----------\n" + 
					"2. ERROR in X.java (at line 11)\n" + 
					"	} while (s != null);\n" + 
					"	         ^\n" + 
					"The local variable s may not have been initialized\n" + 
					"----------\n");
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
	public void test068() throws Exception {
		this.runConformTest(
			new String[] {
				"X.java",
				"public class X {\n" +
				"    public void run() {\n" +
				"        final int five = 5, ten = 10;\n" +
				"        String s;\n" +
				"        label1: do {\n" +
				"            while (five < ten) {\n" +
				"                s = \"\";\n" +
				"                if (s == null) \n" +
				"                    continue label1;\n" +
				"            }\n" +
				"        } while (s != null);\n" +
				"}\n" +
				"    public static void main(String [] args) {\n" +
				"		System.out.println(\"SUCCESS\");\n" +
				"    }\n" +
				"}\n"				},
			"SUCCESS");
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
	public void test069() throws Exception {
		this.runNegativeTest(
			new String[] {
				"X.java",
				"public class X {\n" +
				"    public void run() {\n" +
				"        final int five = 5, ten = 10;\n" +
				"        String s;\n" +
				"        label1: do {\n" +
				"            while (five > ten) {\n" +
				"                s = \"\";\n" +
				"                if (s == null) \n" +
				"                    continue label1;\n" +
				"            }\n" +
				"        } while (s != null);\n" +
				"}\n" +
				"    public static void main(String [] args) {\n" +
				"		System.out.println(\"SUCCESS\");\n" +
				"    }\n" +
				"}\n"				},
				"----------\n" + 
				"1. WARNING in X.java (at line 5)\n" + 
				"	label1: do {\n" + 
				"	^^^^^^\n" + 
				"The label label1 is never explicitly referenced\n" + 
				"----------\n" + 
				"2. ERROR in X.java (at line 6)\n" + 
				"	while (five > ten) {\n" + 
				"                s = \"\";\n" + 
				"                if (s == null) \n" + 
				"                    continue label1;\n" + 
				"            }\n" + 
				"	                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + 
				"Unreachable code\n" + 
				"----------\n" + 
				"3. ERROR in X.java (at line 11)\n" + 
				"	} while (s != null);\n" + 
				"	         ^\n" + 
				"The local variable s may not have been initialized\n" + 
				"----------\n");
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=367023
	public void test070() throws Exception {
		this.runConformTest(
			new String[] {
				"X.java",
				"import java.util.ArrayList;\n" +
				"import java.util.Arrays;\n" +
				"import java.util.Iterator;\n" +
				"import java.util.List;\n" +
				"import java.util.Properties;\n" +
				"import org.w3c.dom.*;\n" +
				"public class X extends Object {\n" +
				"        public static void main(String [] args) {\n" +
				"            System.out.println (\"SUCCESS\");\n" +
				"        }\n" +
				"	private static class Handler extends Object {\n" +
				"		public int getStuff() {\n" +
				"			return 1;\n" +
				"		}\n" +
				"		public void handle(Element element) {\n" +
				"			Properties properties = new Properties();\n" +
				"			NamedNodeMap atts = element.getAttributes();\n" +
				"			if (atts != null) {\n" +
				"				for (int a = 0; a < atts.getLength(); a++) {\n" +
				"					Node att = atts.item(a);\n" +
				"					String name = att.getNodeName();\n" +
				"					String value = att.getNodeValue();\n" +
				"					if (\"foo\".equals(name)) {\n" +
				"						name = value;\n" +
				"					} else {\n" +
				"						if (!\"bar\".equals(name))\n" +
				"							continue;\n" +
				"						name = value;\n" +
				"					}\n" +
				"					properties.put(name, value);\n" +
				"				}\n" +
				"			}\n" +
				"			label0: do {\n" +
				"				Node node;\n" +
				"				String nodeName;\n" +
				"				label1: do {\n" +
				"					for (Iterator i = (new ArrayList(1)).iterator(); i\n" +
				"							.hasNext(); members.add(equals(node))) {\n" +
				"						node = (Node) i.next();\n" +
				"						nodeName = \"\" + equals(node.getNodeName());\n" +
				"						if (!\"foo\".equals(nodeName))\n" +
				"							continue label1;\n" +
				"					}\n" +
				"					break label0;\n" +
				"				} while (!\"bar\".equals(nodeName));\n" +
				"				Iterator i = (new ArrayList(1)).iterator();\n" +
				"				while (i.hasNext()) {\n" +
				"					Node n = (Node) i.next();\n" +
				"					String name = toString() + n.getNodeName();\n" +
				"					if (\"wtf\".equals(name)) {\n" +
				"						String propertyName = (toString() + n.getAttributes()\n" +
				"								.getNamedItem(\"broken\")).trim();\n" +
				"						String value = toString() + n;\n" +
				"						properties.put(propertyName, value);\n" +
				"					}\n" +
				"				}\n" +
				"			} while (true);\n" +
				"			propertiesBuilder.equals(properties);\n" +
				"			builder.equals(propertiesBuilder.hashCode());\n" +
				"			builder.equals(members);\n" +
				"		}\n" +
				"		private final Object c;\n" +
				"		private Object builder;\n" +
				"		private List members;\n" +
				"		private Object propertiesBuilder;\n" +
				"		public Handler(Object c) {\n" +
				"			this.c = c;\n" +
				"			builder = Arrays.asList(Object.class);\n" +
				"			builder.equals(\"foo\");\n" +
				"			builder.equals(\"bar\");\n" +
				"			members = new ArrayList();\n" +
				"			propertiesBuilder = Arrays.asList(Object.class);\n" +
				"			Object beanDefinition = propertiesBuilder.toString();\n" +
				"			Object holder = new String(\"stirng\");\n" +
				"			Arrays.asList(holder, c.toString());\n" +
				"		}\n" +
				"	}\n" +
				"	public X() {\n" +
				"	}\n" +
				"	protected Object parseInternal(Element element, Object c) {\n" +
				"		Handler h = new Handler(c);\n" +
				"		h.handle(element);\n" +
				"		return h.getStuff();\n" +
				"	}\n" +
				"}\n"
				},
				"SUCCESS");
	}
	
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=380313
	// Verify the generated code does not have same branch target for the 2 return statements
	public void testBug380313() throws Exception {
		this.runConformTest(
				new String[] {
						"X.java",
						"public class X {\n" +
						"public void foo() throws Exception {\n" + 
						"        int i = 1;\n" + 
						"        try {\n" + 
						"            if (i == 1) {\n" + 
						"                int n = bar();\n" + 
						"                if (n == 35)\n" + 
						"                   return;\n" + 
						"            } else {\n" + 
						"                throw new Exception();\n" + 
						"            }\n" + 
						"            if (i == 0)\n" + 
						"               return;\n" + 
						"        } finally {\n" + 
						"            bar();\n" + 
						"        }\n" + 
						"    }\n" + 
						"\n" + 
						"    private int bar() {\n" + 
						"        return 0;\n" + 
						"    }\n" + 
						"\n" + 
						"    public static void main(String[] args) {\n" +
						"		System.out.println(\"SUCCESS\");\n" + 
						"    }\n" +
						"}\n"
				},
				"SUCCESS");

			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
			String actualOutput =
				disassembler.disassemble(
					classFileBytes,
					"\n",
					ClassFileBytesDisassembler.DETAILED);

			String expectedOutput =
					"  // Method descriptor #6 ()V\n" + 
					"  // Stack: 2, Locals: 4\n" + 
					"  public void foo() throws java.lang.Exception;\n" + 
					"     0  iconst_1\n" + 
					"     1  istore_1 [i]\n" + 
					"     2  iload_1 [i]\n" + 
					"     3  iconst_1\n" + 
					"     4  if_icmpne 24\n" + 
					"     7  aload_0 [this]\n" + 
					"     8  invokespecial X.bar() : int [18]\n" + 
					"    11  istore_2 [n]\n" + 
					"    12  iload_2 [n]\n" + 
					"    13  bipush 35\n" + 
					"    15  if_icmpne 32\n" + 
					"    18  aload_0 [this]\n" + 
					"    19  invokespecial X.bar() : int [18]\n" + 
					"    22  pop\n" + 
					"    23  return\n" + 
					"    24  new java.lang.Exception [16]\n" + 
					"    27  dup\n" + 
					"    28  invokespecial java.lang.Exception() [22]\n" + 
					"    31  athrow\n" + 
					"    32  iload_1 [i]\n" + 
					"    33  ifne 50\n" + 
					"    36  aload_0 [this]\n" + 
					"    37  invokespecial X.bar() : int [18]\n" + 
					"    40  pop\n" + 
					"    41  return\n" + 
					"    42  astore_3\n" + 
					"    43  aload_0 [this]\n" + 
					"    44  invokespecial X.bar() : int [18]\n" + 
					"    47  pop\n" + 
					"    48  aload_3\n" + 
					"    49  athrow\n" + 
					"    50  aload_0 [this]\n" + 
					"    51  invokespecial X.bar() : int [18]\n" + 
					"    54  pop\n" + 
					"    55  return\n" + 
					"      Exception Table:\n" + 
					"        [pc: 2, pc: 18] -> 42 when : any\n" + 
					"        [pc: 24, pc: 36] -> 42 when : any\n" + 
					"      Line numbers:\n" + 
					"        [pc: 0, line: 3]\n" + 
					"        [pc: 2, line: 5]\n" + 
					"        [pc: 7, line: 6]\n" + 
					"        [pc: 12, line: 7]\n" + 
					"        [pc: 18, line: 15]\n" + 
					"        [pc: 23, line: 8]\n" + 
					"        [pc: 24, line: 10]\n" + 
					"        [pc: 32, line: 12]\n" + 
					"        [pc: 36, line: 15]\n" + 
					"        [pc: 41, line: 13]\n" + 
					"        [pc: 42, line: 14]\n" + 
					"        [pc: 43, line: 15]\n" + 
					"        [pc: 48, line: 16]\n" + 
					"        [pc: 50, line: 15]\n" + 
					"        [pc: 55, line: 17]\n" + 
					"      Local variable table:\n" + 
					"        [pc: 0, pc: 56] local: this index: 0 type: X\n" + 
					"        [pc: 2, pc: 56] local: i index: 1 type: int\n" + 
					"        [pc: 12, pc: 24] local: n index: 2 type: int\n" + 
					"      Stack map table: number of frames 4\n" + 
					"        [pc: 24, append: {int}]\n" + 
					"        [pc: 32, same]\n" + 
					"        [pc: 42, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + 
					"        [pc: 50, same]\n";
			int index = actualOutput.indexOf(expectedOutput);
			if (index == -1 || expectedOutput.length() == 0) {
				System.out.println(Util.displayString(actualOutput, 2));
			}
			if (index == -1) {
				assertEquals("Wrong contents", expectedOutput, actualOutput);
			}
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=380313
	// Verify the generated code does not have same branch target for the 2 return statements
	public void testBug380313b() throws Exception {
		if (this.complianceLevel < ClassFileConstants.JDK1_7)
			return;
		this.runConformTest(
				new String[] {
						"X.java",
						"import java.io.FileInputStream;\n" +
						"import java.io.IOException;\n" +
						"public class X {\n" +
						"public void foo() throws Exception {\n" + 
						"        int i = 1;\n" + 
						"        try {\n" + 
						"            try (FileInputStream fis = new FileInputStream(\"\")) {\n" +
						"				 if (i == 2)" + 
						"                	return;\n" + 
						" 			 }\n" + 
						"            if (i == 35) \n" + 
						"                return;\n" + 
						"        } catch(IOException e) {\n" + 
						"            bar();\n" + 
						"        } finally {\n" + 
						"            bar();\n" + 
						"        }\n" + 
						"    }\n" + 
						"\n" + 
						"    private int bar() {\n" + 
						"        return 0;\n" + 
						"    }\n" + 
						"\n" + 
						"    public static void main(String[] args) {\n" +
						"		System.out.println(\"SUCCESS\");\n" + 
						"    }\n" +
						"}\n"
					}, 
				"SUCCESS");

			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
			String actualOutput =
				disassembler.disassemble(
					classFileBytes,
					"\n",
					ClassFileBytesDisassembler.DETAILED);

			String expectedOutput =
					"  // Method descriptor #6 ()V\n" + 
					"  // Stack: 3, Locals: 6\n" + 
					"  public void foo() throws java.lang.Exception;\n" + 
					"      0  iconst_1\n" + 
					"      1  istore_1 [i]\n" + 
					"      2  aconst_null\n" + 
					"      3  astore_2\n" + 
					"      4  aconst_null\n" + 
					"      5  astore_3\n" + 
					"      6  new java.io.FileInputStream [18]\n" + 
					"      9  dup\n" + 
					"     10  ldc <String \"\"> [20]\n" + 
					"     12  invokespecial java.io.FileInputStream(java.lang.String) [22]\n" + 
					"     15  astore 4 [fis]\n" + 
					"     17  iload_1 [i]\n" + 
					"     18  iconst_2\n" + 
					"     19  if_icmpne 38\n" + 
					"     22  aload 4 [fis]\n" + 
					"     24  ifnull 32\n" + 
					"     27  aload 4 [fis]\n" + 
					"     29  invokevirtual java.io.FileInputStream.close() : void [25]\n" + 
					"     32  aload_0 [this]\n" + // return 1
					"     33  invokespecial X.bar() : int [28]\n" + 
					"     36  pop\n" + 
					"     37  return\n" + 
					"     38  aload 4 [fis]\n" + 
					"     40  ifnull 86\n" + 
					"     43  aload 4 [fis]\n" + 
					"     45  invokevirtual java.io.FileInputStream.close() : void [25]\n" + 
					"     48  goto 86\n" + 
					"     51  astore_2\n" + 
					"     52  aload 4 [fis]\n" + 
					"     54  ifnull 62\n" + 
					"     57  aload 4 [fis]\n" + 
					"     59  invokevirtual java.io.FileInputStream.close() : void [25]\n" + 
					"     62  aload_2\n" + 
					"     63  athrow\n" + 
					"     64  astore_3\n" + 
					"     65  aload_2\n" + 
					"     66  ifnonnull 74\n" + 
					"     69  aload_3\n" + 
					"     70  astore_2\n" + 
					"     71  goto 84\n" + 
					"     74  aload_2\n" + 
					"     75  aload_3\n" + 
					"     76  if_acmpeq 84\n" + 
					"     79  aload_2\n" + 
					"     80  aload_3\n" + 
					"     81  invokevirtual java.lang.Throwable.addSuppressed(java.lang.Throwable) : void [32]\n" + 
					"     84  aload_2\n" + 
					"     85  athrow\n" + 
					"     86  iload_1 [i]\n" + 
					"     87  bipush 35\n" + 
					"     89  if_icmpne 122\n" + 
					"     92  aload_0 [this]\n" + 	// return 2
					"     93  invokespecial X.bar() : int [28]\n" + 
					"     96  pop\n" + 
					"     97  return\n" + 
					"     98  astore_2 [e]\n" + 
					"     99  aload_0 [this]\n" + 
					"    100  invokespecial X.bar() : int [28]\n" + 
					"    103  pop\n" + 
					"    104  aload_0 [this]\n" + 
					"    105  invokespecial X.bar() : int [28]\n" + 
					"    108  pop\n" + 
					"    109  goto 127\n" + 
					"    112  astore 5\n" + 
					"    114  aload_0 [this]\n" + 
					"    115  invokespecial X.bar() : int [28]\n" + 
					"    118  pop\n" + 
					"    119  aload 5\n" + 
					"    121  athrow\n" + 
					"    122  aload_0 [this]\n" + 
					"    123  invokespecial X.bar() : int [28]\n" + 
					"    126  pop\n" + 
					"    127  return\n" + 
					"      Exception Table:\n" + 
					"        [pc: 17, pc: 22] -> 51 when : any\n" + 
					"        [pc: 32, pc: 38] -> 51 when : any\n" + 
					"        [pc: 6, pc: 64] -> 64 when : any\n" + 
					"        [pc: 2, pc: 32] -> 98 when : java.io.IOException\n" + 
					"        [pc: 38, pc: 92] -> 98 when : java.io.IOException\n" + 
					"        [pc: 2, pc: 32] -> 112 when : any\n" + 
					"        [pc: 38, pc: 92] -> 112 when : any\n" + 
					"        [pc: 98, pc: 104] -> 112 when : any\n" + 
					"      Line numbers:\n" + 
					"        [pc: 0, line: 5]\n" + 
					"        [pc: 2, line: 7]\n" + 
					"        [pc: 17, line: 8]\n" + 
					"        [pc: 22, line: 9]\n" + 
					"        [pc: 32, line: 15]\n" + 
					"        [pc: 37, line: 8]\n" + 
					"        [pc: 38, line: 9]\n" + 
					"        [pc: 86, line: 10]\n" + 
					"        [pc: 92, line: 15]\n" + 
					"        [pc: 97, line: 11]\n" + 
					"        [pc: 98, line: 12]\n" + 
					"        [pc: 99, line: 13]\n" + 
					"        [pc: 104, line: 15]\n" + 
					"        [pc: 112, line: 14]\n" + 
					"        [pc: 114, line: 15]\n" + 
					"        [pc: 119, line: 16]\n" + 
					"        [pc: 122, line: 15]\n" + 
					"        [pc: 127, line: 17]\n" + 
					"      Local variable table:\n" + 
					"        [pc: 0, pc: 128] local: this index: 0 type: X\n" + 
					"        [pc: 2, pc: 128] local: i index: 1 type: int\n" + 
					"        [pc: 17, pc: 62] local: fis index: 4 type: java.io.FileInputStream\n" + 
					"        [pc: 99, pc: 104] local: e index: 2 type: java.io.IOException\n" + 
					"      Stack map table: number of frames 12\n" + 
					"        [pc: 32, full, stack: {}, locals: {X, int, java.lang.Throwable, java.lang.Throwable, java.io.FileInputStream}]\n" + 
					"        [pc: 38, same]\n" + 
					"        [pc: 51, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + 
					"        [pc: 62, chop 1 local(s)]\n" + 
					"        [pc: 64, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + 
					"        [pc: 74, same]\n" + 
					"        [pc: 84, same]\n" + 
					"        [pc: 86, chop 2 local(s)]\n" + 
					"        [pc: 98, same_locals_1_stack_item, stack: {java.io.IOException}]\n" + 
					"        [pc: 112, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + 
					"        [pc: 122, same]\n" + 
					"        [pc: 127, same]\n";
			int index = actualOutput.indexOf(expectedOutput);
			if (index == -1 || expectedOutput.length() == 0) {
				System.out.println(Util.displayString(actualOutput, 2));
			}
			if (index == -1) {
				assertEquals("Wrong contents", expectedOutput, actualOutput);
			}
	}
	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=380927
	// Verify the reduced range of locals.
	public void testBug380927() throws Exception {
		this.runConformTest(
				new String[] {
						"X.java",
						"public class X {\n" +
						"    public final static Object f() {\n" +
						"        final Object a = null;\n" +
						"        Object b;\n" +
						"        label: do {\n" +
						"            switch (0) {\n" +
						"            case 1: {\n" +
						"                b = a;\n" +
						"            }\n" +
						"                break;\n" +
						"            default:\n" +
						"                break label;\n" +
						"            }\n" +
						"        } while (true);\n" +
						"        return a;\n" +
						"    }\n" +
						"    public static void main(final String[] args) {\n" +
						"        f();\n" +
						"        System.out.println(\"SUCCESS\");\n" +
						"    }\n" +
						"}\n"
				},
				"SUCCESS");

			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X.class"));
			String actualOutput =
				disassembler.disassemble(
					classFileBytes,
					"\n",
					ClassFileBytesDisassembler.DETAILED);

			String expectedOutput =
					"  // Method descriptor #15 ()Ljava/lang/Object;\n" + 
					"  // Stack: 1, Locals: 2\n" + 
					"  public static final java.lang.Object f();\n" + 
					"     0  aconst_null\n" + 
					"     1  astore_0 [a]\n" + 
					"     2  iconst_0\n" + 
					"     3  tableswitch default: 25\n" + 
					"          case 1: 20\n" + 
					"    20  aload_0 [a]\n" + 
					"    21  astore_1 [b]\n" + 
					"    22  goto 2\n" + 
					"    25  aload_0 [a]\n" + 
					"    26  areturn\n" + 
					"      Line numbers:\n" + 
					"        [pc: 0, line: 3]\n" + 
					"        [pc: 2, line: 6]\n" + 
					"        [pc: 20, line: 8]\n" + 
					"        [pc: 22, line: 10]\n" + 
					"        [pc: 25, line: 15]\n" + 
					"      Local variable table:\n" + 
					"        [pc: 2, pc: 27] local: a index: 0 type: java.lang.Object\n" + 
					"        [pc: 22, pc: 25] local: b index: 1 type: java.lang.Object\n" + 
					"      Stack map table: number of frames 3\n" + 
					"        [pc: 2, append: {java.lang.Object}]\n" + 
					"        [pc: 20, same]\n" + 
					"        [pc: 25, same]\n" + 
					"  \n"; 
			int index = actualOutput.indexOf(expectedOutput);
			if (index == -1 || expectedOutput.length() == 0) {
				System.out.println(Util.displayString(actualOutput, 2));
			}
			if (index == -1) {
				assertEquals("Wrong contents", expectedOutput, actualOutput);
			}
	}

	// from https://bugs.eclipse.org/bugs/show_bug.cgi?id=385593#c1
	public void test385593_1() throws Exception {
		this.runConformTest(
			new String[] {
					"stackmap/StackMapTableFormatError.java",
					"package stackmap;\n" + 
					"\n" + 
					"import java.util.Collection;\n" + 
					"import java.util.Collections;\n" + 
					"\n" + 
					"/**\n" + 
					" * If compiled with Eclipse (compiler target >= 1.6) this snippet causes the\n" + 
					" * error \"java.lang.ClassFormatError: StackMapTable format error: bad\n" + 
					" * verification type\" when executed with JaCoCo code coverage. JaCoCo seems to\n" + 
					" * get confused by unexpected stackmap frames generated by ECJ.\n" + 
					" */\n" + 
					"public class StackMapTableFormatError {\n" + 
					"\n" + 
					"	public static Object exec(Collection<Object> set, Object a,\n" + 
					"			boolean b) {\n" + 
					"		for (Object e : set) {\n" + 
					"			if (a != null && (e == null || b)) {\n" + 
					"				continue;\n" + 
					"			}\n" + 
					"			return null;\n" + 
					"		}\n" + 
					"		return null;\n" + 
					"	}\n" + 
					"	\n" + 
					"	public static void main(String[] args) {\n" + 
					"		exec(Collections.emptySet(), null, false);\n" + 
					"	}\n" + 
					"\n" + 
					"}\n"
			});

		ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
		byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR+File.separator+"stackmap"+File.separator+"StackMapTableFormatError.class"));
		String actualOutput =
			disassembler.disassemble(
				classFileBytes,
				"\n",
				ClassFileBytesDisassembler.DETAILED);

		String expectedOutput =
				"  // Method descriptor #15 (Ljava/util/Collection;Ljava/lang/Object;Z)Ljava/lang/Object;\n" + 
				"  // Signature: (Ljava/util/Collection<Ljava/lang/Object;>;Ljava/lang/Object;Z)Ljava/lang/Object;\n" + 
				"  // Stack: 1, Locals: 5\n" + 
				"  public static java.lang.Object exec(java.util.Collection set, java.lang.Object a, boolean b);\n" + 
				"     0  aload_0 [set]\n" + 
				"     1  invokeinterface java.util.Collection.iterator() : java.util.Iterator [18] [nargs: 1]\n" + 
				"     6  astore 4\n" + 
				"     8  goto 36\n" + 
				"    11  aload 4\n" + 
				"    13  invokeinterface java.util.Iterator.next() : java.lang.Object [24] [nargs: 1]\n" + 
				"    18  astore_3 [e]\n" + 
				"    19  aload_1 [a]\n" + 
				"    20  ifnull 34\n" + 
				"    23  aload_3 [e]\n" + 
				"    24  ifnull 36\n" + 
				"    27  iload_2 [b]\n" + 
				"    28  ifeq 34\n" + 
				"    31  goto 36\n" + 
				"    34  aconst_null\n" + 
				"    35  areturn\n" + 
				"    36  aload 4\n" + 
				"    38  invokeinterface java.util.Iterator.hasNext() : boolean [30] [nargs: 1]\n" + 
				"    43  ifne 11\n" + 
				"    46  aconst_null\n" + 
				"    47  areturn\n" + 
				"      Line numbers:\n" + 
				"        [pc: 0, line: 16]\n" + 
				"        [pc: 19, line: 17]\n" + 
				"        [pc: 31, line: 18]\n" + 
				"        [pc: 34, line: 20]\n" + 
				"        [pc: 36, line: 16]\n" + 
				"        [pc: 46, line: 22]\n" + 
				"      Local variable table:\n" + 
				"        [pc: 0, pc: 48] local: set index: 0 type: java.util.Collection\n" + 
				"        [pc: 0, pc: 48] local: a index: 1 type: java.lang.Object\n" + 
				"        [pc: 0, pc: 48] local: b index: 2 type: boolean\n" + 
				"        [pc: 19, pc: 36] local: e index: 3 type: java.lang.Object\n" + 
				"      Local variable type table:\n" + 
				"        [pc: 0, pc: 48] local: set index: 0 type: java.util.Collection<java.lang.Object>\n" + 
				"      Stack map table: number of frames 3\n" + 
				"        [pc: 11, full, stack: {}, locals: {java.util.Collection, java.lang.Object, int, _, java.util.Iterator}]\n" + 
				"        [pc: 34, full, stack: {}, locals: {java.util.Collection, java.lang.Object, int, java.lang.Object, java.util.Iterator}]\n" + 
				"        [pc: 36, full, stack: {}, locals: {java.util.Collection, java.lang.Object, int, _, java.util.Iterator}]"; 
		int index = actualOutput.indexOf(expectedOutput);
		if (index == -1 || expectedOutput.length() == 0) {
			System.out.println(Util.displayString(actualOutput, 2));
		}
		if (index == -1) {
			assertEquals("Wrong contents", expectedOutput, actualOutput);
		}
	}

	// from https://bugs.eclipse.org/bugs/show_bug.cgi?id=385593#c11
	public void test385593_2() throws Exception {
		this.runConformTest(
			new String[] {
					"snippet/X.java",
					"package snippet;\n" + 
					"\n" + 
					"\n" + 
					"public class X { \n" + 
					"	private void foo(boolean delete) { \n" + 
					"		 \n" + 
					"		String s = bar(); \n" + 
					"		StringBuffer buffer =new StringBuffer(); \n" + 
					"		 \n" + 
					"		try { \n" + 
					"			 \n" + 
					"			String[] datas = new String[] { \"\" }; \n" + 
					"			Object[] data= new Object[] { s }; \n" + 
					"			try { \n" + 
					"				buffer.append(datas).append(data); \n" + 
					"			} catch (Exception e) { \n" + 
					"				if (e != null) \n" + 
					"					throw e; \n" + 
					"				return; \n" + 
					"			} \n" + 
					"				 \n" + 
					"			if (delete) \n" + 
					"				buffer.delete(0, buffer.length()); \n" + 
					"			 \n" + 
					"		} catch (Exception x) { \n" + 
					"		} finally { \n" + 
					"			buffer = null; \n" + 
					"		} \n" + 
					"	} \n" + 
					"	 \n" + 
					"	String bar() { \n" + 
					"		return \"\"; \n" + 
					"	} \n" + 
					"	 \n" + 
					"	public static void main(String[] args) { \n" + 
					"		new X().foo(false); \n" + 
					"		System.out.println(\"SUCCESS\"); \n" + 
					"	} \n" + 
					"}\n"
			});

		ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
		byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR+File.separator+"snippet"+File.separator+"X.class"));
		String actualOutput =
			disassembler.disassemble(
				classFileBytes,
				"\n",
				ClassFileBytesDisassembler.DETAILED);

		String expectedOutput =
				"Stack map table: number of frames 7\n" + 
				"        [pc: 49, full, stack: {java.lang.Exception}, locals: {snippet.X, int, java.lang.String, java.lang.StringBuffer, java.lang.String[], java.lang.Object[]}]\n" + 
				"        [pc: 59, append: {java.lang.Exception}]\n" + 
				"        [pc: 62, chop 1 local(s)]\n" + 
				"        [pc: 79, full, stack: {java.lang.Exception}, locals: {snippet.X, int, java.lang.String, java.lang.StringBuffer}]\n" + 
				"        [pc: 86, same_locals_1_stack_item, stack: {java.lang.Throwable}]\n" + 
				"        [pc: 93, same]\n" + 
				"        [pc: 95, same]\n"; 
		
		int index = actualOutput.indexOf(expectedOutput);
		if (index == -1 || expectedOutput.length() == 0) {
			System.out.println(Util.displayString(actualOutput, 2));
		}
		if (index == -1) {
			assertEquals("Wrong contents", expectedOutput, actualOutput);
		}
	}
	// from https://bugs.eclipse.org/bugs/show_bug.cgi?id=394718
	public void test394718() throws Exception {
		this.runConformTest(
			new String[] {
					"X.java",
					"public class X\n" + 
					"{\n" + 
					"	public static Boolean test() throws Exception\n" + 
					"	{\n" + 
					"		try\n" + 
					"		{\n" + 
					"			for (int i = 0; i < 1; i++)\n" + 
					"			{\n" + 
					"				long status = System.currentTimeMillis();\n" + 
					"				if (status < 0)\n" + 
					"					return false;\n" + 
					"				if (status == 1)\n" + 
					"					return false;\n" + 
					"			}\n" + 
					"			\n" + 
					"			return false;\n" + 
					"		}\n" + 
					"		finally\n" + 
					"		{\n" + 
					"			System.currentTimeMillis();\n" + 
					"		}\n" + 
					"	}\n" + 
					"	\n" + 
					"	public static void main(String[] args) throws Exception\n" + 
					"	{\n" + 
					"		System.out.print(\"Starting\");\n" + 
					"		test();\n" + 
					"		System.out.println(\"Done\");\n" + 
					"	}\n" + 
					"}"
			},
			"StartingDone");
	}
	
	// https://bugs.eclipse.org/412203
	public void testBug412203_a() throws Exception {
		if (this.complianceLevel < ClassFileConstants.JDK1_7) return; // using <>
		Map options = getCompilerOptions();
		options.put(JavaCore.COMPILER_ANNOTATION_NULL_ANALYSIS, JavaCore.ENABLED);
		options.put(JavaCore.COMPILER_PB_NULL_REFERENCE, JavaCore.ERROR);
		options.put(JavaCore.COMPILER_PB_NULL_SPECIFICATION_VIOLATION, JavaCore.ERROR);
		options.put(JavaCore.COMPILER_PB_POTENTIAL_NULL_REFERENCE, JavaCore.WARNING);
		options.put(JavaCore.COMPILER_PB_SUPPRESS_OPTIONAL_ERRORS, JavaCore.ENABLED);
		this.runConformTest(
				new String[] {
					"X2.java",
					"import java.util.*;\n" + 
					"\n" + 
					"import org.eclipse.jdt.annotation.NonNullByDefault;\n" + 
					"\n" + 
					"class Y {\n" + 
					"	public Y() { }\n" + 
					"}\n" + 
					"\n" + 
					"@NonNullByDefault\n" + 
					"abstract class X1 {\n" + 
					"\n" + 
					"	private Object a;\n" + 
					"	private Object b;\n" + 
					"	private Object c;\n" + 
					"	private Object d;\n" + 
					"	private Object e;\n" + 
					"	private Object f;\n" + 
					"\n" + 
					"	protected Object name;\n" + 
					"\n" + 
					"	@SuppressWarnings(\"null\")\n" + 
					"	protected X1() {\n" + 
					"		super ();\n" + 
					"	}\n" + 
					"\n" + 
					"}\n" + 
					"public class X2 extends X1 {\n" + 
					"\n" + 
					"\n" + 
					"	public static final int ID = 4711;\n" + 
					"\n" + 
					"	private Object x;\n" + 
					"	private Object y;\n" + 
					"	private Object z;\n" + 
					"\n" + 
					"	private Runnable runable = new Runnable () {\n" + 
					"		@Override\n" + 
					"		public void run () {\n" + 
					"			// whatever\n" + 
					"		}\n" + 
					"	};\n" + 
					"\n" + 
					"	private void init () {\n" + 
					"		final Object selector = new Object ();\n" + 
					"		this.name = new Object ();\n" + 
					"		LinkedList<Character> invalidCharactersList = new LinkedList<> ();\n" + 
					"		char[] invalidCharacters = new char[invalidCharactersList.size ()];\n" + 
					"		for (int i = 0; i < invalidCharacters.length; i++) {\n" + 
					"			invalidCharacters[i] = invalidCharactersList.get (i).charValue ();\n" + 
					"		}\n" + 
					"		Y inputVerifier = new Y();\n" + 
					"	}\n" + 
					"\n" + 
					"}\n",
				},
				"",
				getLibsWithNullAnnotations(ClassFileConstants.JDK1_7),
				true/*flush*/,
				null/*vmArgs*/,
				options,
				null/*requestor*/,
				true/*skipJavac*/);

			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X2.class"));
			String actualOutput =
				disassembler.disassemble(
					classFileBytes,
					"\n",
					ClassFileBytesDisassembler.DETAILED);

			String expectedOutput =
					"  // Method descriptor #16 ()V\n" + 
					"  // Stack: 4, Locals: 5\n" + 
					"  private void init();\n" + 
					"     0  new java.lang.Object [32]\n" + 
					"     3  dup\n" + 
					"     4  invokespecial java.lang.Object() [34]\n" + 
					"     7  astore_1 [selector]\n" + 
					"     8  aload_0 [this]\n" + 
					"     9  new java.lang.Object [32]\n" + 
					"    12  dup\n" + 
					"    13  invokespecial java.lang.Object() [34]\n" + 
					"    16  putfield X2.name : java.lang.Object [35]\n" + 
					"    19  new java.util.LinkedList [38]\n" + 
					"    22  dup\n" + 
					"    23  invokespecial java.util.LinkedList() [40]\n" + 
					"    26  astore_2 [invalidCharactersList]\n" + 
					"    27  aload_2 [invalidCharactersList]\n" + 
					"    28  invokevirtual java.util.LinkedList.size() : int [41]\n" + 
					"    31  newarray char [5]\n" + 
					"    33  astore_3 [invalidCharacters]\n" + 
					"    34  iconst_0\n" + 
					"    35  istore 4 [i]\n" + 
					"    37  goto 59\n" + 
					"    40  aload_3 [invalidCharacters]\n" + 
					"    41  iload 4 [i]\n" + 
					"    43  aload_2 [invalidCharactersList]\n" + 
					"    44  iload 4 [i]\n" + 
					"    46  invokevirtual java.util.LinkedList.get(int) : java.lang.Object [45]\n" + 
					"    49  checkcast java.lang.Character [49]\n" + 
					"    52  invokevirtual java.lang.Character.charValue() : char [51]\n" + 
					"    55  castore\n" + 
					"    56  iinc 4 1 [i]\n" + 
					"    59  iload 4 [i]\n" + 
					"    61  aload_3 [invalidCharacters]\n" + 
					"    62  arraylength\n" + 
					"    63  if_icmplt 40\n" + 
					"    66  new Y [55]\n" + 
					"    69  dup\n" + 
					"    70  invokespecial Y() [57]\n" + 
					"    73  astore 4 [inputVerifier]\n" + 
					"    75  return\n" + 
					"      Line numbers:\n" + 
					"        [pc: 0, line: 44]\n" + 
					"        [pc: 8, line: 45]\n" + 
					"        [pc: 19, line: 46]\n" + 
					"        [pc: 27, line: 47]\n" + 
					"        [pc: 34, line: 48]\n" + 
					"        [pc: 40, line: 49]\n" + 
					"        [pc: 56, line: 48]\n" + 
					"        [pc: 66, line: 51]\n" + 
					"        [pc: 75, line: 52]\n" + 
					"      Local variable table:\n" + 
					"        [pc: 0, pc: 76] local: this index: 0 type: X2\n" + 
					"        [pc: 8, pc: 76] local: selector index: 1 type: java.lang.Object\n" + 
					"        [pc: 27, pc: 76] local: invalidCharactersList index: 2 type: java.util.LinkedList\n" + 
					"        [pc: 34, pc: 76] local: invalidCharacters index: 3 type: char[]\n" + 
					"        [pc: 37, pc: 66] local: i index: 4 type: int\n" + 
					"        [pc: 75, pc: 76] local: inputVerifier index: 4 type: Y\n" + 
					"      Local variable type table:\n" + 
					"        [pc: 27, pc: 76] local: invalidCharactersList index: 2 type: java.util.LinkedList<java.lang.Character>\n" + 
					"      Stack map table: number of frames 2\n" + 
					"        [pc: 40, full, stack: {}, locals: {X2, java.lang.Object, java.util.LinkedList, char[], int}]\n" + 
					"        [pc: 59, same]\n";

			int index = actualOutput.indexOf(expectedOutput);
			if (index == -1 || expectedOutput.length() == 0) {
				System.out.println(Util.displayString(actualOutput, 2));
			}
			if (index == -1) {
				assertEquals("Wrong contents", expectedOutput, actualOutput);
			}
	}

	// https://bugs.eclipse.org/412203
	// yet simplified version - using FieldReference
	public void testBug412203_b() throws Exception {
		Map options = getCompilerOptions();
		options.put(JavaCore.COMPILER_ANNOTATION_NULL_ANALYSIS, JavaCore.ENABLED);
		options.put(JavaCore.COMPILER_PB_NULL_REFERENCE, JavaCore.ERROR);
		options.put(JavaCore.COMPILER_PB_NULL_SPECIFICATION_VIOLATION, JavaCore.ERROR);
		options.put(JavaCore.COMPILER_PB_POTENTIAL_NULL_REFERENCE, JavaCore.WARNING);
		options.put(JavaCore.COMPILER_PB_SUPPRESS_OPTIONAL_ERRORS, JavaCore.ENABLED);
		this.runConformTest(
				new String[] {
					"X2.java",
					"import java.util.LinkedList;\n" + 
					"\n" + 
					"import org.eclipse.jdt.annotation.NonNull;\n" + 
					"\n" + 
					"abstract class X1 {\n" + 
					"	protected @NonNull Object name = new Object();\n" + 
					"}\n" + 
					"\n" + 
					"public class X2 extends X1 {\n" + 
					"	void init () {\n" + 
					"		this.name = new Object ();\n" + 
					"		LinkedList<Character> l = new LinkedList<Character> ();\n" + 
					"		char[] cs = new char[l.size ()];\n" + 
					"		for (int i = 0; i < cs.length; i++) {\n" + 
					"			cs[i] = l.get (i).charValue ();\n" + 
					"		}\n" + 
					"		Object o2 = new Object();\n" + 
					"	}\n" + 
					"}\n",
				},
				"",
				getLibsWithNullAnnotations(ClassFileConstants.JDK1_7),
				true/*flush*/,
				null/*vmArgs*/,
				options,
				null/*requestor*/,
				true/*skipJavac*/);

			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X2.class"));
			String actualOutput =
				disassembler.disassemble(
					classFileBytes,
					"\n",
					ClassFileBytesDisassembler.DETAILED);

			String expectedOutput =
					"  // Method descriptor #6 ()V\n" + 
					"  // Stack: 4, Locals: 4\n" + 
					"  void init();\n" + 
					"     0  aload_0 [this]\n" + 
					"     1  new java.lang.Object [15]\n" + 
					"     4  dup\n" + 
					"     5  invokespecial java.lang.Object() [17]\n" + 
					"     8  putfield X2.name : java.lang.Object [18]\n" + 
					"    11  new java.util.LinkedList [22]\n" + 
					"    14  dup\n" + 
					"    15  invokespecial java.util.LinkedList() [24]\n" + 
					"    18  astore_1 [l]\n" + 
					"    19  aload_1 [l]\n" + 
					"    20  invokevirtual java.util.LinkedList.size() : int [25]\n" + 
					"    23  newarray char [5]\n" + 
					"    25  astore_2 [cs]\n" + 
					"    26  iconst_0\n" + 
					"    27  istore_3 [i]\n" + 
					"    28  goto 48\n" + 
					"    31  aload_2 [cs]\n" + 
					"    32  iload_3 [i]\n" + 
					"    33  aload_1 [l]\n" + 
					"    34  iload_3 [i]\n" + 
					"    35  invokevirtual java.util.LinkedList.get(int) : java.lang.Object [29]\n" + 
					"    38  checkcast java.lang.Character [33]\n" + 
					"    41  invokevirtual java.lang.Character.charValue() : char [35]\n" + 
					"    44  castore\n" + 
					"    45  iinc 3 1 [i]\n" + 
					"    48  iload_3 [i]\n" + 
					"    49  aload_2 [cs]\n" + 
					"    50  arraylength\n" + 
					"    51  if_icmplt 31\n" + 
					"    54  new java.lang.Object [15]\n" + 
					"    57  dup\n" + 
					"    58  invokespecial java.lang.Object() [17]\n" + 
					"    61  astore_3 [o2]\n" + 
					"    62  return\n" + 
					"      Line numbers:\n" + 
					"        [pc: 0, line: 11]\n" + 
					"        [pc: 11, line: 12]\n" + 
					"        [pc: 19, line: 13]\n" + 
					"        [pc: 26, line: 14]\n" + 
					"        [pc: 31, line: 15]\n" + 
					"        [pc: 45, line: 14]\n" + 
					"        [pc: 54, line: 17]\n" + 
					"        [pc: 62, line: 18]\n" + 
					"      Local variable table:\n" + 
					"        [pc: 0, pc: 63] local: this index: 0 type: X2\n" + 
					"        [pc: 19, pc: 63] local: l index: 1 type: java.util.LinkedList\n" + 
					"        [pc: 26, pc: 63] local: cs index: 2 type: char[]\n" + 
					"        [pc: 28, pc: 54] local: i index: 3 type: int\n" + 
					"        [pc: 62, pc: 63] local: o2 index: 3 type: java.lang.Object\n" + 
					"      Local variable type table:\n" + 
					"        [pc: 19, pc: 63] local: l index: 1 type: java.util.LinkedList<java.lang.Character>\n" + 
					"      Stack map table: number of frames 2\n" + 
					"        [pc: 31, append: {java.util.LinkedList, char[], int}]\n" + 
					"        [pc: 48, same]\n" + 
					"}";

			int index = actualOutput.indexOf(expectedOutput);
			if (index == -1 || expectedOutput.length() == 0) {
				System.out.println(Util.displayString(actualOutput, 2));
			}
			if (index == -1) {
				assertEquals("Wrong contents", expectedOutput, actualOutput);
			}
	}

	// https://bugs.eclipse.org/412203
	// yet simplified version - using SingleNameReference
	public void testBug412203_c() throws Exception {
		Map options = getCompilerOptions();
		options.put(JavaCore.COMPILER_ANNOTATION_NULL_ANALYSIS, JavaCore.ENABLED);
		options.put(JavaCore.COMPILER_PB_NULL_REFERENCE, JavaCore.ERROR);
		options.put(JavaCore.COMPILER_PB_NULL_SPECIFICATION_VIOLATION, JavaCore.ERROR);
		options.put(JavaCore.COMPILER_PB_POTENTIAL_NULL_REFERENCE, JavaCore.WARNING);
		options.put(JavaCore.COMPILER_PB_SUPPRESS_OPTIONAL_ERRORS, JavaCore.ENABLED);
		this.runConformTest(
				new String[] {
					"X2.java",
					"import java.util.LinkedList;\n" + 
					"\n" + 
					"import org.eclipse.jdt.annotation.NonNull;\n" + 
					"\n" + 
					"abstract class X1 {\n" + 
					"	protected @NonNull Object name = new Object();\n" + 
					"}\n" + 
					"\n" + 
					"public class X2 extends X1 {\n" + 
					"	void init () {\n" + 
					"		name = new Object ();\n" + 
					"		LinkedList<Character> l = new LinkedList<Character> ();\n" + 
					"		char[] cs = new char[l.size ()];\n" + 
					"		for (int i = 0; i < cs.length; i++) {\n" + 
					"			cs[i] = l.get (i).charValue ();\n" + 
					"		}\n" + 
					"		Object o2 = new Object();\n" + 
					"	}\n" + 
					"}\n",
				},
				"",
				getLibsWithNullAnnotations(ClassFileConstants.JDK1_7),
				true/*flush*/,
				null/*vmArgs*/,
				options,
				null/*requestor*/,
				true/*skipJavac*/);

			ClassFileBytesDisassembler disassembler = ToolFactory.createDefaultClassFileBytesDisassembler();
			byte[] classFileBytes = org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(new File(OUTPUT_DIR + File.separator  +"X2.class"));
			String actualOutput =
				disassembler.disassemble(
					classFileBytes,
					"\n",
					ClassFileBytesDisassembler.DETAILED);

			String expectedOutput =
					"  // Method descriptor #6 ()V\n" + 
					"  // Stack: 4, Locals: 4\n" + 
					"  void init();\n" + 
					"     0  aload_0 [this]\n" + 
					"     1  new java.lang.Object [15]\n" + 
					"     4  dup\n" + 
					"     5  invokespecial java.lang.Object() [17]\n" + 
					"     8  putfield X2.name : java.lang.Object [18]\n" + 
					"    11  new java.util.LinkedList [22]\n" + 
					"    14  dup\n" + 
					"    15  invokespecial java.util.LinkedList() [24]\n" + 
					"    18  astore_1 [l]\n" + 
					"    19  aload_1 [l]\n" + 
					"    20  invokevirtual java.util.LinkedList.size() : int [25]\n" + 
					"    23  newarray char [5]\n" + 
					"    25  astore_2 [cs]\n" + 
					"    26  iconst_0\n" + 
					"    27  istore_3 [i]\n" + 
					"    28  goto 48\n" + 
					"    31  aload_2 [cs]\n" + 
					"    32  iload_3 [i]\n" + 
					"    33  aload_1 [l]\n" + 
					"    34  iload_3 [i]\n" + 
					"    35  invokevirtual java.util.LinkedList.get(int) : java.lang.Object [29]\n" + 
					"    38  checkcast java.lang.Character [33]\n" + 
					"    41  invokevirtual java.lang.Character.charValue() : char [35]\n" + 
					"    44  castore\n" + 
					"    45  iinc 3 1 [i]\n" + 
					"    48  iload_3 [i]\n" + 
					"    49  aload_2 [cs]\n" + 
					"    50  arraylength\n" + 
					"    51  if_icmplt 31\n" + 
					"    54  new java.lang.Object [15]\n" + 
					"    57  dup\n" + 
					"    58  invokespecial java.lang.Object() [17]\n" + 
					"    61  astore_3 [o2]\n" + 
					"    62  return\n" + 
					"      Line numbers:\n" + 
					"        [pc: 0, line: 11]\n" + 
					"        [pc: 11, line: 12]\n" + 
					"        [pc: 19, line: 13]\n" + 
					"        [pc: 26, line: 14]\n" + 
					"        [pc: 31, line: 15]\n" + 
					"        [pc: 45, line: 14]\n" + 
					"        [pc: 54, line: 17]\n" + 
					"        [pc: 62, line: 18]\n" + 
					"      Local variable table:\n" + 
					"        [pc: 0, pc: 63] local: this index: 0 type: X2\n" + 
					"        [pc: 19, pc: 63] local: l index: 1 type: java.util.LinkedList\n" + 
					"        [pc: 26, pc: 63] local: cs index: 2 type: char[]\n" + 
					"        [pc: 28, pc: 54] local: i index: 3 type: int\n" + 
					"        [pc: 62, pc: 63] local: o2 index: 3 type: java.lang.Object\n" + 
					"      Local variable type table:\n" + 
					"        [pc: 19, pc: 63] local: l index: 1 type: java.util.LinkedList<java.lang.Character>\n" + 
					"      Stack map table: number of frames 2\n" + 
					"        [pc: 31, append: {java.util.LinkedList, char[], int}]\n" + 
					"        [pc: 48, same]\n" + 
					"}";

			int index = actualOutput.indexOf(expectedOutput);
			if (index == -1 || expectedOutput.length() == 0) {
				System.out.println(Util.displayString(actualOutput, 2));
			}
			if (index == -1) {
				assertEquals("Wrong contents", expectedOutput, actualOutput);
			}
	}
}
