@Override
      public PsiType visitClassType(@NotNull PsiClassType classType) {
        if (!myVisited.add(classType)) return classType;

        PsiClassType.ClassResolveResult classResolveResult = classType.resolveGenerics();
        PsiClass psiClass = classResolveResult.getElement();
        PsiSubstitutor substitutor = classResolveResult.getSubstitutor();
        if (psiClass == null) return classType;

        return new PsiImmediateClassType(CompletionUtil.getOriginalOrSelf(psiClass), originalizeSubstitutor(substitutor));
      }
@Override
      public PsiType visitClassType(@NotNull PsiClassType classType)