List<PyClassLikeType> (@NotNull final TypeEvalContext context) { final List<PyClassLikeType> result = new ArrayList<>(); final Deque<PsiClass> deque = new LinkedList<>(); final Set<PsiClass> visited = new HashSet<>(); deque.addAll(Arrays.asList(myClass.getSupers())); while (!deque.isEmpty()) { final PsiClass current = deque.pollFirst(); if (current == null || !visited.add(current)) { continue; } result.add(new PyJavaClassType(current, myDefinition)); deque.addAll(Arrays.asList(current.getSupers())); } return result; }