// Path: src/main/java/org/echocat/gradle/plugins/golang/vcs/VcsType.java
// public enum VcsType {
//     git(".git"),
//     bzr(".bzr"),
//     hg(".hg"),
//     svn(".svn"),
//     manual("");
// 
//     @Nonnull
//     private final String _uriSuffix;
//     @Nonnull
//     private final Set<String> _schemes;
// 
//     VcsType(@Nonnull String uriSuffix, @Nullable String... plainSchemes) {
//         _uriSuffix = uriSuffix;
//         final Set<String> schemes = new LinkedHashSet<>();
//         if (plainSchemes != null) {
//             addAll(schemes, plainSchemes);
//         }
//         _schemes = unmodifiableSet(schemes);
//     }
// 
//     @Nonnull
//     public String getUriSuffix() {
//         return _uriSuffix;
//     }
// 
//     @Nonnull
//     public Set<String> getSchemes() {
//         return _schemes;
//     }
// 
//     @Nonnull
//     public String getName() {
//         return name();
//     }
// 
//     @Override
//     public String toString() {
//         return getName();
//     }
// 
// }


import groovy.lang.Closure;
import groovy.lang.MissingMethodException;
import org.echocat.gradle.plugins.golang.vcs.VcsType;
import org.gradle.api.Project;
import org.gradle.api.artifacts.Configuration;
import org.gradle.api.artifacts.Dependency;
import org.gradle.util.CollectionUtils;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.inject.Inject;
import java.net.URI;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static org.echocat.gradle.plugins.golang.Constants.VENDOR_DIRECTORY_NAME;
import static org.echocat.gradle.plugins.golang.vcs.VcsType.git;
import static org.gradle.util.ConfigureUtil.configure;
    }

    public Path getDependencyCache() {
        return _dependencyCache;
    }

    public void setDependencyCache(Path dependencyCache) {
        _dependencyCache = dependencyCache;
    }

    public Collection<VcsRepositoryProvider> getVcsRepositoryProviders() {
        return _vcsRepositoryProviders;
    }

    public void setVcsRepositoryProviders(Collection<VcsRepositoryProvider> vcsRepositoryProviders) {
        _vcsRepositoryProviders = vcsRepositoryProviders;
    }

    @Nonnull
    public VcsRepositoryProvider vcsRepositoryProvider(@Nonnull String prefix, @Nonnull String name, @Nonnull String dependencyPattern) {
        return vcsRepositoryProvider(prefix, name, Pattern.compile(dependencyPattern));
    }

    @Nonnull
    public VcsRepositoryProvider vcsRepositoryProvider(@Nonnull String prefix, @Nonnull String name, @Nonnull Pattern dependencyPattern) {
        return vcsRepositoryProvider(git, prefix, name, dependencyPattern);
    }

    @Nonnull
    public VcsRepositoryProvider vcsRepositoryProvider(@Nonnull String type, @Nonnull String prefix, @Nonnull String name, @Nonnull String dependencyPattern) {
// Path: src/main/java/org/echocat/gradle/plugins/golang/vcs/VcsType.java
// public enum VcsType {
//     git(".git"),
//     bzr(".bzr"),
//     hg(".hg"),
//     svn(".svn"),
//     manual("");
// 
//     @Nonnull
//     private final String _uriSuffix;
//     @Nonnull
//     private final Set<String> _schemes;
// 
//     VcsType(@Nonnull String uriSuffix, @Nullable String... plainSchemes) {
//         _uriSuffix = uriSuffix;
//         final Set<String> schemes = new LinkedHashSet<>();
//         if (plainSchemes != null) {
//             addAll(schemes, plainSchemes);
//         }
//         _schemes = unmodifiableSet(schemes);
//     }
// 
//     @Nonnull
//     public String getUriSuffix() {
//         return _uriSuffix;
//     }
// 
//     @Nonnull
//     public Set<String> getSchemes() {
//         return _schemes;
//     }
// 
//     @Nonnull
//     public String getName() {
//         return name();
//     }
// 
//     @Override
//     public String toString() {
//         return getName();
//     }
// 
// }


// Path: src/main/java/org/echocat/gradle/plugins/golang/model/DependenciesSettings.java
import groovy.lang.Closure;
import groovy.lang.MissingMethodException;
import org.echocat.gradle.plugins.golang.vcs.VcsType;
import org.gradle.api.Project;
import org.gradle.api.artifacts.Configuration;
import org.gradle.api.artifacts.Dependency;
import org.gradle.util.CollectionUtils;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.inject.Inject;
import java.net.URI;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static org.echocat.gradle.plugins.golang.Constants.VENDOR_DIRECTORY_NAME;
import static org.echocat.gradle.plugins.golang.vcs.VcsType.git;
import static org.gradle.util.ConfigureUtil.configure;

    }

    public Path getDependencyCache() {
        return _dependencyCache;
    }

    public void setDependencyCache(Path dependencyCache) {
        _dependencyCache = dependencyCache;
    }

    public Collection<VcsRepositoryProvider> getVcsRepositoryProviders() {
        return _vcsRepositoryProviders;
    }

    public void setVcsRepositoryProviders(Collection<VcsRepositoryProvider> vcsRepositoryProviders) {
        _vcsRepositoryProviders = vcsRepositoryProviders;
    }

    @Nonnull
    public VcsRepositoryProvider vcsRepositoryProvider(@Nonnull String prefix, @Nonnull String name, @Nonnull String dependencyPattern) {
        return vcsRepositoryProvider(prefix, name, Pattern.compile(dependencyPattern));
    }

    @Nonnull
    public VcsRepositoryProvider vcsRepositoryProvider(@Nonnull String prefix, @Nonnull String name, @Nonnull Pattern dependencyPattern) {
        return vcsRepositoryProvider(git, prefix, name, dependencyPattern);
    }

    @Nonnull
    public VcsRepositoryProvider vcsRepositoryProvider(@Nonnull String type, @Nonnull String prefix, @Nonnull String name, @Nonnull String dependencyPattern) {
        return vcsRepositoryProvider(VcsType.valueOf(type), prefix, name, Pattern.compile(dependencyPattern));