DomInvocationHandler (final Pair<? extends FixedChildDescriptionImpl, Integer> info) { final FixedChildDescriptionImpl description = info.first; XmlName xmlName = description.getXmlName(); final EvaluatedXmlName evaluatedXmlName = createEvaluatedXmlName(xmlName); if (myStub != null && description.isStubbed()) { List<DomStub> stubs = myStub.getChildrenByName(xmlName); DomStub stub = stubs.isEmpty() ? null : stubs.get(0); DomParentStrategy strategy = stub == null ? new StubParentStrategy.Empty(myStub) : new StubParentStrategy(stub); return new IndexedElementInvocationHandler(evaluatedXmlName, description, 0, strategy, myManager, (ElementStub)stub); } final XmlTag tag = getXmlTag(); final int index = info.second; if (tag != null) { List<XmlTag> tags = DomImplUtil.findSubTags(tag.getSubTags(), evaluatedXmlName, getFile()); if (tags.size() > index) { final XmlTag child = tags.get(index); DomInvocationHandler handler = myManager.getDomHandler(child); if (!(handler instanceof IndexedElementInvocationHandler)) { DomInvocationHandler take2 = myManager.getDomHandler(child); throw new AssertionError("Expected indexed DOM, but got " + handler + ". Parent=" + tag + "; child=" + child + "; index=" + index+ "; second attempt=" + take2); } return handler; } } return new IndexedElementInvocationHandler(evaluatedXmlName, description, index, new VirtualDomParentStrategy(this), myManager, null); }