in src/java/org/jetbrains/plugins/clojure/psi/util/ClojurePsiElementFactoryImpl.java [90:129]
public ClListLike findOrCreateJavaImportForClass(PsiClass clazz, ClList importClause) {
final String name = clazz.getQualifiedName();
if (name == null) return null;
final int lastDot = name.lastIndexOf('.');
if (lastDot <= 0) return null;
final String prefix = name.substring(0, lastDot);
final String suffix = name.substring(lastDot + 1);
final ClListLike[] imported = PsiTreeUtil.getChildrenOfType(importClause, ClListLike.class);
// Find or create an import member
ClListLike importMember = null;
if (imported == null) {
importMember = addFreshImportToMember(importClause, prefix);
} else {
importMember = ContainerUtil.find(imported, new Condition<ClListLike>() {
public boolean value(ClListLike elem) {
return prefix.equals(elem.getHeadText());
}
});
if (importMember == null) {
importMember = addFreshImportToMember(importClause, prefix);
}
}
assert importMember != null;
// Insert a new class into it
final PsiElement lastChild = importMember.getLastChild();
final PsiElement newClass = createSymbolNodeFromText(suffix).getPsi();
assert newClass != null;
if (lastChild instanceof LeafPsiElement) {
importMember.addBefore(newClass, lastChild);
} else {
importMember.add(newClass);
}
return importMember;
}