String (@NotNull PsiElement symbol, @NotNull PsiSubstitutor substitutor, int parameterOptions) { String symbolName = null; if (symbol instanceof PsiClass) { if (symbol instanceof PsiAnonymousClass) { symbolName = JavaElementKind.ANONYMOUS_CLASS.subject(); } else { symbolName = ((PsiClass)symbol).getQualifiedName(); if (symbolName == null) { symbolName = ((PsiClass)symbol).getName(); } } } else if (symbol instanceof PsiMethod) { int options = PsiFormatUtilBase.SHOW_NAME | PsiFormatUtilBase.SHOW_PARAMETERS; symbolName = PsiFormatUtil.formatMethod((PsiMethod)symbol, substitutor, options, parameterOptions); } else if (symbol instanceof PsiVariable) { symbolName = ((PsiVariable)symbol).getName(); } else if (symbol instanceof PsiPackage) { symbolName = ((PsiPackage)symbol).getQualifiedName(); } else if (symbol instanceof PsiFile) { PsiDirectory directory = ((PsiFile)symbol).getContainingDirectory(); PsiPackage aPackage = directory == null ? null : JavaDirectoryService.getInstance().getPackage(directory); symbolName = aPackage == null ? null : aPackage.getQualifiedName(); } else if (symbol instanceof PsiDirectory) { symbolName = ((PsiDirectory)symbol).getName(); } else if (symbol instanceof PsiJavaModule) { symbolName = ((PsiJavaModule)symbol).getName(); } return symbolName; }