private void pushInt(final int value) {
        if (value >= -1 && value <= 5) {
            getMv().visitInsn(Opcodes.ICONST_0 + value);
        } else if (value >= Byte.MIN_VALUE && value <= Byte.MAX_VALUE) {
            getMv().visitIntInsn(Opcodes.BIPUSH, value);
        } else if (value >= Short.MIN_VALUE && value <= Short.MAX_VALUE) {
            getMv().visitIntInsn(Opcodes.SIPUSH, value);
        } else {
            getMv().visitLdcInsn(new Integer(value));
        }
    }