String (@NotNull PsiType type) { if (type instanceof PsiClassType) { PsiClass aClass = ((PsiClassType)type).resolve(); if (aClass == null) { return null; } else if (aClass instanceof PsiAnonymousClass) { PsiClass baseClass = ((PsiAnonymousClass)aClass).getBaseClassType().resolve(); return baseClass != null ? baseClass.getQualifiedName() : null; } else { return aClass.getQualifiedName(); } } else if (type instanceof PsiArrayType) { return getLongTypeName(((PsiArrayType)type).getComponentType()) + "[]"; } else if (type instanceof PsiPrimitiveType) { return type.getPresentableText(); } else if (type instanceof PsiWildcardType) { final PsiType bound = ((PsiWildcardType)type).getBound(); return bound != null ? getLongTypeName(bound) : CommonClassNames.JAVA_LANG_OBJECT; } else if (type instanceof PsiCapturedWildcardType) { final PsiType bound = ((PsiCapturedWildcardType)type).getWildcard().getBound(); return bound != null ? getLongTypeName(bound) : CommonClassNames.JAVA_LANG_OBJECT; } else if (type instanceof PsiIntersectionType) { return getLongTypeName(((PsiIntersectionType)type).getRepresentative()); } else if (type instanceof PsiDisjunctionType) { return getLongTypeName(((PsiDisjunctionType)type).getLeastUpperBound()); } else { return null; } }