// Path: stecker-plugin-loader/src/main/java/org/meridor/stecker/PluginException.java
// public class PluginException extends Exception {
// 
//     private Optional<DependencyProblem> dependencyProblem = Optional.empty();
// 
//     private Optional<PluginMetadata> pluginMetadata = Optional.empty();
// 
//     public PluginException(Exception e) {
//         super(e);
//     }
// 
//     public PluginException(String message) {
//         super(message);
//     }
// 
//     public PluginException(String message, Exception e) {
//         super(message, e);
//     }
// 
//     public PluginException withDependencyProblem(DependencyProblem dependencyProblem) {
//         this.dependencyProblem = Optional.ofNullable(dependencyProblem);
//         return this;
//     }
// 
//     public PluginException withPlugin(PluginMetadata pluginMetadata) {
//         this.pluginMetadata = Optional.ofNullable(pluginMetadata);
//         return this;
//     }
// 
//     /**
//      * Returns dependency problem if any
//      *
//      * @return dependency problem
//      */
//     public Optional<DependencyProblem> getDependencyProblem() {
//         return dependencyProblem;
//     }
// 
//     /**
//      * Returns plugin affected
//      *
//      * @return plugin metadata
//      */
//     public Optional<PluginMetadata> getPluginMetadata() {
//         return pluginMetadata;
//     }
// 
// }
// 
// Path: stecker-plugin-loader/src/main/java/org/meridor/stecker/interfaces/PluginsProvider.java
// public interface PluginsProvider {
// 
//     /**
//      * Provides a list of plugins paths
//      *
//      * @param baseDirectory root directory to scan for plugins
//      * @return list of paths that seems to be plugins
//      * @throws org.meridor.stecker.PluginException when something goes wrong during base directory scanning
//      */
//     List<Path> provide(Path baseDirectory) throws PluginException;
// 
// }


import org.meridor.stecker.PluginException;
import org.meridor.stecker.interfaces.PluginsProvider;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.PathMatcher;
import java.util.List;
import java.util.stream.Collectors;
package org.meridor.stecker.impl;



public class DefaultPluginsProvider implements PluginsProvider {

    private final String fileGlob;

    public DefaultPluginsProvider(String fileGlob) {
        this.fileGlob = fileGlob;
    }


    @Override
// Path: stecker-plugin-loader/src/main/java/org/meridor/stecker/PluginException.java
// public class PluginException extends Exception {
// 
//     private Optional<DependencyProblem> dependencyProblem = Optional.empty();
// 
//     private Optional<PluginMetadata> pluginMetadata = Optional.empty();
// 
//     public PluginException(Exception e) {
//         super(e);
//     }
// 
//     public PluginException(String message) {
//         super(message);
//     }
// 
//     public PluginException(String message, Exception e) {
//         super(message, e);
//     }
// 
//     public PluginException withDependencyProblem(DependencyProblem dependencyProblem) {
//         this.dependencyProblem = Optional.ofNullable(dependencyProblem);
//         return this;
//     }
// 
//     public PluginException withPlugin(PluginMetadata pluginMetadata) {
//         this.pluginMetadata = Optional.ofNullable(pluginMetadata);
//         return this;
//     }
// 
//     /**
//      * Returns dependency problem if any
//      *
//      * @return dependency problem
//      */
//     public Optional<DependencyProblem> getDependencyProblem() {
//         return dependencyProblem;
//     }
// 
//     /**
//      * Returns plugin affected
//      *
//      * @return plugin metadata
//      */
//     public Optional<PluginMetadata> getPluginMetadata() {
//         return pluginMetadata;
//     }
// 
// }
// 
// Path: stecker-plugin-loader/src/main/java/org/meridor/stecker/interfaces/PluginsProvider.java
// public interface PluginsProvider {
// 
//     /**
//      * Provides a list of plugins paths
//      *
//      * @param baseDirectory root directory to scan for plugins
//      * @return list of paths that seems to be plugins
//      * @throws org.meridor.stecker.PluginException when something goes wrong during base directory scanning
//      */
//     List<Path> provide(Path baseDirectory) throws PluginException;
// 
// }


// Path: stecker-plugin-loader/src/main/java/org/meridor/stecker/impl/DefaultPluginsProvider.java
import org.meridor.stecker.PluginException;
import org.meridor.stecker.interfaces.PluginsProvider;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.PathMatcher;
import java.util.List;
import java.util.stream.Collectors;

package org.meridor.stecker.impl;



public class DefaultPluginsProvider implements PluginsProvider {

    private final String fileGlob;

    public DefaultPluginsProvider(String fileGlob) {
        this.fileGlob = fileGlob;
    }


    @Override
    public List<Path> provide(Path pluginsDirectory) throws PluginException {