docs: private static void convertMsgPartsHelper(
        ImmutableList.Builder<SoyMsgPart> newMsgPartsBuilder,
        StringBuilder currRawTextSb,
        List<SoyMsgPart> origMsgParts,
        boolean isInPlrselPart) {
  
      for (SoyMsgPart origMsgPart : origMsgParts) {
  
        if (origMsgPart instanceof SoyMsgRawTextPart) {
          String rawText = ((SoyMsgRawTextPart) origMsgPart).getRawText();
          if (isInPlrselPart) {
            rawText = icuEscape(rawText);
          }
          currRawTextSb.append(rawText);
  
        } else if (origMsgPart instanceof SoyMsgPlaceholderPart) {
          // A placeholder ends the curr raw text, so if the collected curr raw text is nonempty, add
          // a msg part for it and clear the collector.
          if (currRawTextSb.length() > 0) {
            newMsgPartsBuilder.add(SoyMsgRawTextPart.of(currRawTextSb.toString()));
            currRawTextSb.setLength(0);
          }
          // Reuse the msg part for the placeholder since it's immutable.
          newMsgPartsBuilder.add(origMsgPart);
  
        } else if (origMsgPart instanceof SoyMsgPluralRemainderPart) {
          currRawTextSb.append(getPluralRemainderString());
  
        } else if (origMsgPart instanceof SoyMsgPluralPart) {
          convertPluralPartHelper(newMsgPartsBuilder, currRawTextSb, (SoyMsgPluralPart) origMsgPart);
  
        } else if (origMsgPart instanceof SoyMsgSelectPart) {
          convertSelectPartHelper(newMsgPartsBuilder, currRawTextSb, (SoyMsgSelectPart) origMsgPart);
        }
      }
    }