import org.objectweb.asm.*;
import java.io.*;

public class GenMirror {
    public static void main(String[] args) throws Exception {
        ClassWriter cw = new ClassWriter(true);
        cw.visit(Constants.ACC_PUBLIC,
                 "ThrowerImpl",
                 "java/lang/Object",
                 new String[]{ "Thrower$Mirror" },
                 "<generated>");
        CodeVisitor cv;

        // constructor
        cv = cw.visitMethod(Constants.ACC_PUBLIC,
                            "<init>",
                            "()V",
                            null,
                            null);
        cv.visitVarInsn(Constants.ALOAD, 0);
        cv.visitMethodInsn(Constants.INVOKESPECIAL,
                           "java/lang/Object",
                           "<init>",
                           "()V");
        cv.visitInsn(Constants.RETURN);
        cv.visitMaxs(0, 0);

        // "void reflect(Throwable t)"
        cv = cw.visitMethod(Constants.ACC_PUBLIC,
                            "reflect",
                            "(Ljava/lang/Throwable;)V",
                            null,
                            null);
        cv.visitVarInsn(Constants.ALOAD, 1);
        cv.visitInsn(Constants.ATHROW);
        cv.visitInsn(Constants.RETURN);
        cv.visitMaxs(0, 0);

        byte[] bytes = cw.toByteArray();
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < bytes.length; i++) {
            sb.append(String.valueOf(bytes[i]));
            sb.append(",");
        }
        System.out.println(sb);
    }
}
