StructureViewTreeElement (@NotNull PsiFile file, @NotNull List<? extends StructureViewComposite.StructureViewDescriptor> views) { JBIterable<TreeElement> children = JBIterable.from(views).map(o -> createTreeElementFromView(file, o)); return new StructureViewTreeElement() { @Override public Object getValue() { return file; } @Override public void navigate(boolean requestFocus) { file.navigate(requestFocus); } @Override public boolean canNavigate() { return file.canNavigate(); } @Override public boolean canNavigateToSource() { return file.canNavigateToSource(); } @Override public @NotNull ItemPresentation getPresentation() { return file.getPresentation(); } @Override public TreeElement @NotNull [] getChildren() { List<TreeElement> elements = children.toList(); return elements.toArray(TreeElement.EMPTY_ARRAY); } }; }