__reflectAriaAttr(attrName, nodes, reorder) {
      if (this._inputNode) {
        if (reorder) {
          const insideNodes = nodes.filter(n => this.contains(n));
          const outsideNodes = nodes.filter(n => !this.contains(n));

          const insideSlots = insideNodes.map(n => n.assignedSlot || n);
          const orderedInsideSlots = [...getAriaElementsInRightDomOrder(insideSlots)];
          /** @type {Element[]} */
          const orderedInsideNodes = [];
          orderedInsideSlots.forEach(assignedNode => {
            insideNodes.forEach(node => {
              // @ts-ignore
              if (assignedNode.name === node.slot) {
                orderedInsideNodes.push(node);
              }
            });
          });
          // eslint-disable-next-line no-param-reassign
          nodes = [...orderedInsideNodes, ...outsideNodes];
        }
        const string = nodes.map(n => n.id).join(' ');
        this._inputNode.setAttribute(attrName, string);
      }
    }
Will handle help text, validation feedback and character counter,
prefix/suffix/before/after (if they contain data-description flag attr).
Also, contents of id references that will be put in the <lion-field>._ariaDescribedby property
from an external context, will be read by a screen reader.
@param {string} attrName
@param {Element[]} nodes
@param {boolean|undefined} reorder