boolean (String name, VirtualFile parent, Ref<String> parentRef, CompiledPattern pair) { if (!matches(name, pair.fileName)) { return false; } if (parent != null && (pair.dir != null || pair.srcRoot != null)) { VirtualFile srcRoot = ProjectRootManager.getInstance(myProject).getFileIndex().getSourceRootForFile(parent); if (pair.dir != null) { String parentPath = parentRef.get(); if (parentPath == null) { parentRef.set(parentPath = srcRoot == null ? parent.getPath() : VfsUtilCore.getRelativePath(parent, srcRoot, '/')); } if (parentPath == null || !matches("/" + parentPath, pair.dir)) { return false; } } if (pair.srcRoot != null) { String srcRootName = srcRoot == null ? null : srcRoot.getName(); if (srcRootName == null || !matches(srcRootName, pair.srcRoot)) { return false; } } } return true; }