//package asm.vm.runtime.defmeth.direct.BasicTest.testNonPublicOverride;
import java.io.FileOutputStream;
import java.util.*;

import org.objectweb.asm.*;
public class Test1_I_C_mDump implements Opcodes {

	public static byte[] dump () throws Exception {

		ClassWriter cw = new ClassWriter(0);
		FieldVisitor fv;
		MethodVisitor mv;
		AnnotationVisitor av0;

		cw.visit(52, ACC_PUBLIC + ACC_SUPER, "vm/runtime/defmeth/direct/BasicTest/testNonPublicOverride/Test1_I_C_m", null, "java/lang/Object", null);

		{
			mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
			mv.visitCode();
			mv.visitVarInsn(ALOAD, 0);
			mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false);
			mv.visitInsn(RETURN);
			mv.visitMaxs(1, 1);
			mv.visitEnd();
		}
		{
			mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "test", "()V", null, null);
			mv.visitCode();
			Label l0 = new Label();
			Label l1 = new Label();
			mv.visitTryCatchBlock(l0, l1, l1, "java/lang/IllegalAccessError");
			Label l2 = new Label();
			mv.visitTryCatchBlock(l0, l1, l2, "java/lang/Throwable");
			mv.visitLabel(l0);
			mv.visitTypeInsn(NEW, "vm/runtime/defmeth/direct/BasicTest/testNonPublicOverride/C");
			mv.visitInsn(DUP);
			mv.visitMethodInsn(INVOKESPECIAL, "vm/runtime/defmeth/direct/BasicTest/testNonPublicOverride/C", "<init>", "()V", false);
			mv.visitVarInsn(ASTORE, 1);
			mv.visitVarInsn(ALOAD, 1);
			mv.visitMethodInsn(INVOKEINTERFACE, "vm/runtime/defmeth/direct/BasicTest/testNonPublicOverride/I", "m", "()V", true);
			mv.visitTypeInsn(NEW, "nsk/share/TestFailure");
			mv.visitInsn(DUP);
			mv.visitLdcInsn("No exception was thrown");
			mv.visitMethodInsn(INVOKESPECIAL, "nsk/share/TestFailure", "<init>", "(Ljava/lang/String;)V", false);
			mv.visitInsn(ATHROW);
			mv.visitLabel(l1);
			mv.visitFrame(Opcodes.F_FULL, 0, new Object[] {}, 1, new Object[] {"java/lang/IllegalAccessError"});
			mv.visitVarInsn(ASTORE, 1);
			mv.visitInsn(RETURN);
			mv.visitLabel(l2);
			mv.visitFrame(Opcodes.F_SAME1, 0, null, 1, new Object[] {"java/lang/Throwable"});
			mv.visitVarInsn(ASTORE, 1);
			mv.visitTypeInsn(NEW, "nsk/share/TestFailure");
			mv.visitInsn(DUP);
			mv.visitLdcInsn("Expected exception java.lang.IllegalAccessError, got: %s: %s");
			mv.visitInsn(ICONST_2);
			mv.visitTypeInsn(ANEWARRAY, "java/lang/Object");
			mv.visitInsn(DUP);
			mv.visitInsn(ICONST_0);
			mv.visitVarInsn(ALOAD, 1);
			mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "getClass", "()Ljava/lang/Class;", false);
			mv.visitInsn(AASTORE);
			mv.visitInsn(DUP);
			mv.visitInsn(ICONST_1);
			mv.visitVarInsn(ALOAD, 1);
			mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Throwable", "getMessage", "()Ljava/lang/String;", false);
			mv.visitInsn(AASTORE);
			mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "format", "(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;", false);
			mv.visitVarInsn(ALOAD, 1);
			mv.visitMethodInsn(INVOKESPECIAL, "nsk/share/TestFailure", "<init>", "(Ljava/lang/String;Ljava/lang/Throwable;)V", false);
			mv.visitInsn(ATHROW);
			mv.visitMaxs(7, 2);
			mv.visitEnd();
		}		
		{
			mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "test2", "()V", null, null);
			mv.visitCode();
			Label l0 = new Label();
			Label l1 = new Label();
			mv.visitTryCatchBlock(l0, l1, l1, "java/lang/IllegalAccessError");
			Label l2 = new Label();
			mv.visitTryCatchBlock(l0, l1, l2, "java/lang/Throwable");
			mv.visitLabel(l0);
			mv.visitTypeInsn(NEW, "vm/runtime/defmeth/direct/BasicTest/testNonPublicOverride/C");
			mv.visitInsn(DUP);
			mv.visitMethodInsn(INVOKESPECIAL, "vm/runtime/defmeth/direct/BasicTest/testNonPublicOverride/C", "<init>", "()V", false);
			mv.visitVarInsn(ASTORE, 1);
			mv.visitVarInsn(ALOAD, 1);
			mv.visitMethodInsn(INVOKEINTERFACE, "vm/runtime/defmeth/direct/BasicTest/testNonPublicOverride/I", "m", "()V", true);
			mv.visitTypeInsn(NEW, "nsk/share/TestFailure");
			mv.visitInsn(DUP);
			mv.visitLdcInsn("No exception was thrown");
			mv.visitMethodInsn(INVOKESPECIAL, "nsk/share/TestFailure", "<init>", "(Ljava/lang/String;)V", false);
			mv.visitInsn(ATHROW);
			mv.visitLabel(l1);
			mv.visitFrame(Opcodes.F_FULL, 0, new Object[] {}, 1, new Object[] {"java/lang/IllegalAccessError"});
			mv.visitVarInsn(ASTORE, 1);
			mv.visitInsn(RETURN);
			mv.visitLabel(l2);
			mv.visitFrame(Opcodes.F_SAME1, 0, null, 1, new Object[] {"java/lang/Throwable"});
			mv.visitVarInsn(ASTORE, 1);
			mv.visitTypeInsn(NEW, "nsk/share/TestFailure");
			mv.visitInsn(DUP);
			mv.visitLdcInsn("Expected exception java.lang.IllegalAccessError, got: %s: %s");
			mv.visitInsn(ICONST_2);
			mv.visitTypeInsn(ANEWARRAY, "java/lang/Object");
			mv.visitInsn(DUP);
			mv.visitInsn(ICONST_0);
			mv.visitVarInsn(ALOAD, 1);
			mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "getClass", "()Ljava/lang/Class;", false);
			mv.visitInsn(AASTORE);
			mv.visitInsn(DUP);
			mv.visitInsn(ICONST_1);
			mv.visitVarInsn(ALOAD, 1);
			mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Throwable", "getMessage", "()Ljava/lang/String;", false);
			mv.visitInsn(AASTORE);
			mv.visitMethodInsn(INVOKESTATIC, "java/lang/String", "format", "(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;", false);
			mv.visitVarInsn(ALOAD, 1);
			mv.visitMethodInsn(INVOKESPECIAL, "nsk/share/TestFailure", "<init>", "(Ljava/lang/String;Ljava/lang/Throwable;)V", false);
			mv.visitInsn(ATHROW);
			mv.visitMaxs(7, 2);
			mv.visitEnd();
		}
		{
			mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "main", "([Ljava/lang/String;)V", null, null);
			mv.visitCode();
                        // Force resolution of TestFailure
			mv.visitTypeInsn(NEW, "nsk/share/TestFailure");
			mv.visitLdcInsn("No exception was thrown");
			mv.visitMethodInsn(INVOKESPECIAL, "nsk/share/TestFailure", "<init>", "(Ljava/lang/String;)V", false);
                        
			mv.visitMethodInsn(INVOKESTATIC, "vm/runtime/defmeth/direct/BasicTest/testNonPublicOverride/Test1_I_C_m", "test", "()V", false);
			mv.visitMethodInsn(INVOKESTATIC, "vm/runtime/defmeth/direct/BasicTest/testNonPublicOverride/Test1_I_C_m", "test2", "()V", false);
			mv.visitInsn(RETURN);
			mv.visitMaxs(2, 2);
			mv.visitEnd();
		}
		cw.visitEnd();

		return cw.toByteArray();
	}

	public static void main(String[] args) throws Exception {
		FileOutputStream fos = new FileOutputStream(args[0]);
		fos.write(dump());
		fos.close();
	}
}
