@Override
  public @NotNull Collection<AbstractTreeNode<?>> getChildrenImpl() {
    PsiClass parent = getPsiClass();
    List<AbstractTreeNode<?>> treeNodes = new ArrayList<>();

    if (getSettings().isShowMembers()) {
      List<PsiElement> result = new ArrayList<>();
      PsiClassChildrenSource.DEFAULT_CHILDREN.addChildren(parent, result);
      for (PsiElement psiElement : result) {
        psiElement.accept(new JavaElementVisitor() {
          @Override public void visitClass(@NotNull PsiClass aClass) {
            treeNodes.add(new ClassSmartPointerNode(getProject(), aClass, getSettings()));
          }

          @Override public void visitMethod(@NotNull PsiMethod method) {
            treeNodes.add(new MethodSmartPointerNode(getProject(), method, getSettings()));
          }

          @Override public void visitField(@NotNull PsiField field) {
            treeNodes.add(new FieldSmartPointerNode(getProject(), field, getSettings()));
          }

          @Override public void visitReferenceExpression(@NotNull PsiReferenceExpression expression) {
            visitExpression(expression);
          }
        });
      }
    }
    return treeNodes;
  }
@Override
  public @NotNull Collection<AbstractTreeNode<?>> getChildrenImpl()