code: private void genGoogMsgCodeForChildren(
        ImmutableList<SoyMsgPart> parts, MsgNode msgNode, GoogMsgPlaceholderCodeGenInfo codeGenInfo) {
  
      for (SoyMsgPart child : parts) {
        if (child instanceof SoyMsgRawTextPart || child instanceof SoyMsgPluralRemainderPart) {
          // raw text doesn't have placeholders and remainders use the same placeholder as plural they
          // are a member of.
          // nothing to do
        } else if (child instanceof SoyMsgSelectPart) {
          genGoogMsgCodeForSelectNode((SoyMsgSelectPart) child, msgNode, codeGenInfo);
        } else if (child instanceof SoyMsgPlaceholderPart) {
          genGoogMsgCodeForPlaceholder((SoyMsgPlaceholderPart) child, msgNode, codeGenInfo);
        } else if (child instanceof SoyMsgPluralPart) {
          genGoogMsgCodeForPluralNode((SoyMsgPluralPart) child, msgNode, codeGenInfo);
        } else {
          throw new AssertionError("unexpected child: " + child);
        }
      }
    }
docs: Generates {@code goog.getMsg()} calls for a given parent node and its children.
  
  @param parts the msg parts
  @param msgNode The enclosing MsgNode.
  @param codeGenInfo Data structure holding information on placeholder names, plural variable
  names, and select variable names to be used for message code generation.