List<ComponentTraceNode>result = new ArrayList();
ComponentTraceNode treeNode = root;
result.add(root);
for (int i = path.size()-1; i >= 0; i--) {
ComponentTraceNode pathNode = path.get(i);
AWBindableElement element = pathNode.element();
for (ComponentTraceNode child : treeNode.children()) {
if (child.element() == element
&& eq(child.associatedMetadataProvider(), pathNode.associatedMetadataProvider())) {
result.add(child);
treeNode = child;