PsiFile[] (PsiFile file, FileType... fileTypes) { final VirtualFile virtualFile = file.getVirtualFile(); if (virtualFile == null) return PsiFile.EMPTY_ARRAY; for (VirtualFilePointer pointer : myAssociations.keySet()) { if (pointer.isValid() && pointer.getUrl().equals(virtualFile.getUrl())) { final VirtualFilePointerContainer container = myAssociations.get(pointer); if (container != null) { final VirtualFile[] files = container.getFiles(); final Set<PsiFile> list = new HashSet<>(); final PsiManager psiManager = PsiManager.getInstance(myProject); for (VirtualFile assoc : files) { final PsiFile psiFile = psiManager.findFile(assoc); if (psiFile != null && (fileTypes.length == 0 || matchesFileType(psiFile, fileTypes))) { list.add(psiFile); } } return PsiUtilCore.toPsiFileArray(list); } else { return PsiFile.EMPTY_ARRAY; } } } return PsiFile.EMPTY_ARRAY; }