class InstructionAdapter extends MethodVisitor {

  @Override
  public void visitIntInsn(final int opcode, final int operand) {
    switch (opcode) {
      case Opcodes.BIPUSH:
        iconst(operand);
        break;
      case Opcodes.SIPUSH:
        iconst(operand);
        break;
      case Opcodes.NEWARRAY:
        switch (operand) {
          case Opcodes.T_BOOLEAN:
            newarray(Type.BOOLEAN_TYPE);
            break;
          case Opcodes.T_CHAR:
            newarray(Type.CHAR_TYPE);
            break;
          case Opcodes.T_BYTE:
            newarray(Type.BYTE_TYPE);
            break;
          case Opcodes.T_SHORT:
            newarray(Type.SHORT_TYPE);
            break;
          case Opcodes.T_INT:
            newarray(Type.INT_TYPE);
            break;
          case Opcodes.T_FLOAT:
            newarray(Type.FLOAT_TYPE);
            break;
          case Opcodes.T_LONG:
            newarray(Type.LONG_TYPE);
            break;
          case Opcodes.T_DOUBLE:
            newarray(Type.DOUBLE_TYPE);
            break;
          default:
            throw new IllegalArgumentException();
        }
        break;
      default:
        throw new IllegalArgumentException();
    }
  }

  public  InstructionAdapter(final MethodVisitor methodVisitor);
  protected  InstructionAdapter(final int api, final MethodVisitor methodVisitor);

}