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);
		}
}