@Override protected void doInit() { DependencyTree tree = (DependencyTree) getTree(); for (DepPath c : Sequence.fromIterable(myCycles).distinct()) { Iterator<DepLink> itr = Sequence.fromIterable(c.elements()).iterator(); // skip first path element, which is always the one from my getCapturedDependencies() itr.next(); MPSTreeNode parent = this; while (itr.hasNext()) { DependencyTreeNode dtn = new DependencyTreeNode(tree.getProject(), itr.next()); parent.add(dtn); parent = dtn; } } myInitialized = true; }