docs: @Override
    protected void visitMsgNode(MsgNode node) {
      MsgPartsAndIds msgPartsAndIds = MsgUtils.buildMsgPartsAndComputeMsgIdForDualFormat(node);
      SoyMsg.Builder builder = SoyMsg.builder().setId(msgPartsAndIds.id);
      if (node.getMeaning() != null) {
        builder.setMeaning(node.getMeaning());
      }
      SoyMsg msg =
          builder
              .setDesc(node.getDesc())
              .setIsHidden(node.isHidden())
              .setContentType(node.getContentType())
              .addSourceLocation(node.getSourceLocation())
              .setIsPlrselMsg(node.isPlrselMsg())
              .setParts(msgPartsAndIds.parts)
              .build();
      msgs.add(msg);
    }