@Override
 public void visitInsn(final int opcode) {
   if (opcode == Opcodes.DUP) {
     machine.gotDup();
     if (machine.skipInstruction()) return;
   }
   super.visitInsn(opcode);
 }
 @Override
 public void visitTypeInsn(final int opcode, final String desc) {
   System.out.println(desc);
   if (opcode == Opcodes.NEW) {
     machine.gotNew(desc);
     if (machine.skipInstruction()) return;
   }
   super.visitTypeInsn(opcode, desc);
 }
 @Override
 public void visitMethodInsn(
     final int opcode, final String owner, final String name, final String desc) {
   if (opcode == Opcodes.INVOKESPECIAL) {
     machine.gotInvokeSpecial(owner);
     if (machine.skipInstruction()) return;
   }
   super.visitMethodInsn(opcode, owner, name, desc);
 }
 @Override
 public void visitFieldInsn(
     final int opcode, final String owner, final String name, final String desc) {
   if (opcode == Opcodes.PUTSTATIC) {
     machine.gotPutStatic(owner);
     if (machine.skipInstruction()) return;
   }
   super.visitFieldInsn(opcode, owner, name, desc);
 }
 @Override
 public void visitMultiANewArrayInsn(final String desc, final int dims) {
   machine.gotSomethingWrong();
   super.visitMultiANewArrayInsn(desc, dims);
 }
 @Override
 public void visitLookupSwitchInsn(final Label dflt, final int[] keys, final Label[] labels) {
   machine.gotSomethingWrong();
   super.visitLookupSwitchInsn(dflt, keys, labels);
 }
 @Override
 public void visitTableSwitchInsn(
     final int min, final int max, final Label dflt, final Label[] labels) {
   machine.gotSomethingWrong();
   super.visitTableSwitchInsn(min, max, dflt, labels);
 }
 @Override
 public void visitIincInsn(final int var, final int increment) {
   machine.gotSomethingWrong();
   super.visitIincInsn(var, increment);
 }
 @Override
 public void visitLdcInsn(final Object cst) {
   machine.gotSomethingWrong();
   super.visitLdcInsn(cst);
 }
 @Override
 public void visitJumpInsn(final int opcode, final Label label) {
   machine.gotSomethingWrong();
   super.visitJumpInsn(opcode, label);
 }
 @Override
 public void visitVarInsn(final int opcode, final int var) {
   machine.gotSomethingWrong();
   super.visitVarInsn(opcode, var);
 }
 @Override
 public void visitIntInsn(final int opcode, final int operand) {
   machine.gotSomethingWrong();
   super.visitIntInsn(opcode, operand);
 }