List<Location> (@NotNull String protocol, @NotNull String path, @Nullable String metainfo, @NotNull Project project, @NotNull GlobalSearchScope scope) { List<Location> locations = getLocation(protocol, path, project, scope); if (metainfo != null) { for (Location location : locations) { PsiElement element = location.getPsiElement(); if (element instanceof PsiMethod) { if (StringUtil.equalsIgnoreWhitespaces(metainfo, ClassUtil.getVMParametersMethodSignature((PsiMethod)element))) { return Collections.singletonList(location); } } else if (element instanceof PsiClass) { String[] lineColumn = metainfo.split(":"); if (lineColumn.length == 2) { try { int line = Integer.parseInt(lineColumn[0]); int col = Integer.parseInt(lineColumn[1]); return Collections.singletonList(new PsiLocation<>(project, element) { @Override public OpenFileDescriptor getOpenFileDescriptor() { VirtualFile file = getVirtualFile(); return file != null ? new OpenFileDescriptor(project, file, line, col) : null; } }); } catch (NumberFormatException ignored) { } } } } } return locations; }