@Override
                                       public boolean process(@NotNull PackagingElement<?> element,
                                                              @NotNull PackagingElementPath elementPath) {
                                         //todo replace by method findSourceFile() in PackagingElement
                                         if (element instanceof CompositePackagingElement<?> compositeElement) {
                                           if (firstName.equals(compositeElement.getName())) {
                                             result.addAll(findSourceFilesByOutputPath(compositeElement, tail, context, artifactType));
                                           }
                                         }
                                         else if (element instanceof FileCopyPackagingElement fileCopyElement) {
                                           if (firstName.equals(fileCopyElement.getOutputFileName()) && tail.isEmpty()) {
                                             ContainerUtil.addIfNotNull(result, fileCopyElement.findFile());
                                           }
                                         }
                                         else if (element instanceof DirectoryCopyPackagingElement ||
                                                  element instanceof ExtractedDirectoryPackagingElement) {
                                           final VirtualFile sourceRoot = ((FileOrDirectoryCopyPackagingElement<?>)element).findFile();
                                           if (sourceRoot != null) {
                                             ContainerUtil.addIfNotNull(result, sourceRoot.findFileByRelativePath(path));
                                           }
                                         }
                                         else if (element instanceof ModulePackagingElement modulePackaging) {
                                           ContainerUtil.addIfNotNull(result, findResourceFile(modulePackaging, context, path));
                                         }
                                         return true;
                                       }
@Override
                                       public boolean process(@NotNull PackagingElement<?> element,
                                                              @NotNull PackagingElementPath elementPath)