static textContent(xfa) {
    const items = [];
    const output = {
      items,
      styles: Object.create(null),
    };
    function walk(node) {
      if (!node) {
        return;
      }
      let str = null;
      const name = node.name;
      if (name === "#text") {
        str = node.value;
      } else if (!XfaText.shouldBuildText(name)) {
        return;
      } else if (node?.attributes?.textContent) {
        str = node.attributes.textContent;
      } else if (node.value) {
        str = node.value;
      }
      if (str !== null) {
        items.push({
          str,
        });
      }
      if (!node.children) {
        return;
      }
      for (const child of node.children) {
        walk(child);
      }
    }
    walk(xfa);
    return output;
  }
Walk an XFA tree and create an array of text nodes that is compatible
with a regular PDFs TextContent. Currently, only TextItem.str is supported,
all other fields and styles haven't been implemented.

@param {Object} xfa - An XFA fake DOM object.

@returns {TextContent}