function go(segment, parent, ix0) {
    const ix = typeof ix0 === "number" ? ix0 : undefined;
    if (!segment) return;
    if (segment.above) {
      segment.above.forEach((child) => {
        if (child) go(child, parent);
      });
    } else if (segment.besides && !segment.list_columns) {
      const node = query
        .parseReactElement(
          <Columns
            widths={getColWidths(segment)}
            breakpoints={segment.breakpoints || default_breakpoints(segment)}
            ncols={segment.besides.length}
            style={segment.style || {}}
            gx={segment.gx}
            gy={segment.gy}
            customClass={segment.customClass}
            vAligns={segment.vAligns}
            colClasses={segment.colClasses}
            colStyles={segment.colStyles}
            aligns={segment.aligns}
            setting_col_n={1}
            contents={segment.besides.map(toTag)}
          />
        )
        .toNodeTree();
      actions.addNodeTree(node, parent, ix);
    } else {
      const tag = toTag(segment);
      if (Array.isArray(tag)) {
        tag.forEach((t) => {
          const node = query.parseReactElement(t).toNodeTree();
          //console.log("other", node);
          actions.addNodeTree(node, parent, ix);
        });
      } else if (tag) {
        const node = query.parseReactElement(tag).toNodeTree();
        //console.log("other", node);
        actions.addNodeTree(node, parent, ix);
      }
    }
  }
@param {object} segment
@param {object} parent
@returns {void}