private void writeOutLiteralWrapped(Object lit) {
    if (lit instanceof Integer) {
      intPush((Integer) lit);
      wrapPrimitive(int.class);
      return;
    }

    assert debug("LDC " + lit);
    if (lit instanceof String) {
      mv.visitLdcInsn(lit);
    }
    else if (lit instanceof Long) {
      mv.visitLdcInsn(lit);
      wrapPrimitive(long.class);
    }
    else if (lit instanceof Float) {
      mv.visitLdcInsn(lit);
      wrapPrimitive(float.class);
    }
    else if (lit instanceof Double) {
      mv.visitLdcInsn(lit);
      wrapPrimitive(double.class);
    }
    else if (lit instanceof Short) {
      mv.visitLdcInsn(lit);
      wrapPrimitive(short.class);
    }
    else if (lit instanceof Character) {
      mv.visitLdcInsn(lit);
      wrapPrimitive(char.class);
    }
    else if (lit instanceof Boolean) {
      mv.visitLdcInsn(lit);
      wrapPrimitive(boolean.class);
    }
    else if (lit instanceof Byte) {
      mv.visitLdcInsn(lit);
      wrapPrimitive(byte.class);
    }
  }