public void visitLdcInsn(final Object cst) {
		Item i = cw.newConstItem(cst);
		// Label currentBlock = this.currentBlock;
		if (currentBlock != null) {
			if (compute == FRAMES) {
				currentBlock.frame.execute(Opcodes.LDC, 0, cw, i);
			} else {
				int size;
				// computes the stack size variation
				if (i.type == ClassWriter.LONG || i.type == ClassWriter.DOUBLE) {
					size = stackSize + 2;
				} else {
					size = stackSize + 1;
				}
				// updates current and max stack sizes
				if (size > maxStackSize) {
					maxStackSize = size;
				}
				stackSize = size;
			}
		}
		// adds the instruction to the bytecode of the method
		int index = i.index;
		if (i.type == ClassWriter.LONG || i.type == ClassWriter.DOUBLE) {
			code.put12(20 /* LDC2_W */, index);
		} else if (index >= 256) {
			code.put12(19 /* LDC_W */, index);
		} else {
			code.put11(Opcodes.LDC, index);
		}
	}