boolean (@NotNull ChooseByNameViewModel base, @NotNull FindSymbolParameters parameters, @NotNull ProgressIndicator indicator, @NotNull Processor<? super FoundItemDescriptor<?>> consumer) { long start = System.currentTimeMillis(); try { String pattern = parameters.getCompletePattern(); PsiFileSystemItem absolute = getFileByAbsolutePath(pattern); if (absolute != null && !consumer.process(new FoundItemDescriptor<>(absolute, EXACT_MATCH_DEGREE))) { return true; } if (pattern.startsWith("./") || pattern.startsWith(".\\")) { parameters = parameters.withCompletePattern(pattern.substring(1)); } if (!processItemsForPattern(base, parameters, consumer, indicator)) { return false; } String fixedPattern = FixingLayoutMatcher.fixLayout(pattern); return fixedPattern == null || processItemsForPattern(base, parameters.withCompletePattern(fixedPattern), consumer, indicator); } finally { if (LOG.isDebugEnabled()) { LOG.debug("Goto File \"" + parameters.getCompletePattern() + "\" took " + (System.currentTimeMillis() - start) + " ms"); } } }