void () { if (nextObtained) return; nextObtained = true; while (!superTypesStack.empty()) { assert !indices.isEmpty(); int i = indices.popInt(); PsiClassType[] superTypes = superTypesStack.peek(); while (i < superTypes.length) { PsiClass clazz = superTypes[i].resolve(); if (clazz != null && !visited.contains(clazz)) { current = clazz; visited.add(clazz); indices.push(i + 1); pushSuper(clazz); return; } i++; } superTypesStack.pop(); } current = null; }