in src/java/org/jetbrains/plugins/clojure/psi/impl/ClojureFileImpl.java [206:229]
public List<ClDef> getFileDefinitions() {
final List<ClDef> result = new ArrayList<ClDef>();
StubTree stubTree = getStubTree();
if (stubTree != null) {
for (StubElement<?> element : stubTree.getPlainList()) {
if (element.getStubType() == ClojureElementTypes.DEF || element.getStubType() == ClojureElementTypes.DEFMETHOD) {
PsiElement psi = element.getPsi();
if (psi instanceof ClDef) {
result.add((ClDef) psi);
}
}
}
} else {
PsiTreeUtil.processElements(this, new PsiElementProcessor() {
public boolean execute(@NotNull PsiElement element) {
if (element instanceof ClDef) {
result.add((ClDef) element);
}
return true;
}
});
}
return result;
}