    } else if (included) {
              included.push(neighbor);
            }
          }
          if (included) { neighbors = included; }
        }
        return neighbors;
      }
      var result = breadthFirstSearch(elementName, end, eq, neighbors) || null;
      memoTable[memoKey] = result;
      return result ? result.slice() : null;
    };
  }

  function run(result) {

    function makeContainerHtmlString(outer, inner) {
      if (neededSet[outer] !== neededSet) { return null; }
      // We try 