traverse(fn, thisArg) {
    fn.call(thisArg, this)
    const keys = this._orderedChildKeys
    const dict = this._childrenDict
    for (let i = 0, len = keys.length; i < len; i++) {
      dict[keys[i]].traverse(fn, thisArg)
    }
  }
Walk this facade's descendant tree, invoking a function for it and each descendant.
The iteration order will match the order in which the `children` were declared. It may
also include items that have been queued for removal but not yet removed, e.g. facades
in the process of an `exitAnimation`.
@param {Function} fn
@param {Object} [thisArg]