// Path: src/main/java/org/echocat/gradle/plugins/golang/vcs/RawVcsReference.java
// public class RawVcsReference extends BaseVcsReference {
// 
//     public RawVcsReference(@Nullable VcsType type, @Nonnull String id, @Nullable URI plain, @Nullable String ref, UpdatePolicy updatePolicy) {
//         super(type, id, plain, ref, updatePolicy);
//     }
// 
// }
// 
// Path: src/main/java/org/echocat/gradle/plugins/golang/vcs/VcsException.java
// public class VcsException extends IOException {
// 
//     public VcsException(String message) {
//         super(message);
//     }
// 
//     public VcsException(String message, Throwable cause) {
//         super(messageFor(message, cause), cause);
//     }
// 
//     public VcsException(Throwable cause) {
//         this(null, cause);
//     }
// 
//     protected static String messageFor(String message, Throwable cause) {
//         if (isNotEmpty(message)) {
//             return message;
//         }
//         if (cause != null) {
//             final String causeMessage = cause.getMessage();
//             if (isNotEmpty(causeMessage)) {
//                 return causeMessage;
//             }
//         }
//         return null;
//     }
// 
// }
// 
// 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 org.echocat.gradle.plugins.golang.vcs.RawVcsReference;
import org.echocat.gradle.plugins.golang.vcs.VcsException;
import org.echocat.gradle.plugins.golang.vcs.VcsType;
import javax.annotation.Nonnull;
import java.util.regex.Pattern;
package org.echocat.gradle.plugins.golang.vcs.isps;



public class DefaultVcsRepositoryProvider extends IspBasedVcsRepositoryProviderSupport {

    @Nonnull
    private final VcsType _type;
    @Nonnull
    private final String _name;

    public DefaultVcsRepositoryProvider(@Nonnull VcsType type, @Nonnull String prefix, @Nonnull String name, @Nonnull Pattern dependencyPattern) {
        super(prefix, dependencyPattern);
        _type = type;
        _name = name;
    }

    @Nonnull
    @Override
// Path: src/main/java/org/echocat/gradle/plugins/golang/vcs/RawVcsReference.java
// public class RawVcsReference extends BaseVcsReference {
// 
//     public RawVcsReference(@Nullable VcsType type, @Nonnull String id, @Nullable URI plain, @Nullable String ref, UpdatePolicy updatePolicy) {
//         super(type, id, plain, ref, updatePolicy);
//     }
// 
// }
// 
// Path: src/main/java/org/echocat/gradle/plugins/golang/vcs/VcsException.java
// public class VcsException extends IOException {
// 
//     public VcsException(String message) {
//         super(message);
//     }
// 
//     public VcsException(String message, Throwable cause) {
//         super(messageFor(message, cause), cause);
//     }
// 
//     public VcsException(Throwable cause) {
//         this(null, cause);
//     }
// 
//     protected static String messageFor(String message, Throwable cause) {
//         if (isNotEmpty(message)) {
//             return message;
//         }
//         if (cause != null) {
//             final String causeMessage = cause.getMessage();
//             if (isNotEmpty(causeMessage)) {
//                 return causeMessage;
//             }
//         }
//         return null;
//     }
// 
// }
// 
// 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/vcs/isps/DefaultVcsRepositoryProvider.java
import org.echocat.gradle.plugins.golang.vcs.RawVcsReference;
import org.echocat.gradle.plugins.golang.vcs.VcsException;
import org.echocat.gradle.plugins.golang.vcs.VcsType;
import javax.annotation.Nonnull;
import java.util.regex.Pattern;

package org.echocat.gradle.plugins.golang.vcs.isps;



public class DefaultVcsRepositoryProvider extends IspBasedVcsRepositoryProviderSupport {

    @Nonnull
    private final VcsType _type;
    @Nonnull
    private final String _name;

    public DefaultVcsRepositoryProvider(@Nonnull VcsType type, @Nonnull String prefix, @Nonnull String name, @Nonnull Pattern dependencyPattern) {
        super(prefix, dependencyPattern);
        _type = type;
        _name = name;
    }

    @Nonnull
    @Override
    protected VcsType detectVcsTypeOf(@Nonnull RawVcsReference rawReference) throws VcsException {