agName(outer);
      if (outerEls.length) {
        var containees = getOwn(canContain, outer) || [];
        canContain[outer] = containees;
        var outerEl = outerEls[0];
        var firstChild = outerEl.firstChild;
        if (((firstChild && firstChild.nodeName.toLowerCase() === inner)
             || outerEl.getElementsByTagName(inner).length)
            && containees.indexOf(inner) < 0) {
          containees.push(inner);
        }
      }
      return canContain;
    }

    var elementNamesNeede