// 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/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/VcsValidationException.java
// public class VcsValidationException extends VcsException {
// 
//     public VcsValidationException(String message) {
//         super(message);
//     }
// 
//     public VcsValidationException(String message, Throwable cause) {
//         super(message, cause);
//     }
// 
//     public VcsValidationException(Throwable cause) {
//         super(cause);
//     }
// 
// }
// 
// Path: src/main/java/org/echocat/gradle/plugins/golang/model/UpdatePolicy.java
// @Nonnull
// public static UpdatePolicy defaultUpdatePolicy() {
//     return never();
// }


import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.echocat.gradle.plugins.golang.vcs.RawVcsReference;
import org.echocat.gradle.plugins.golang.vcs.VcsType;
import org.echocat.gradle.plugins.golang.vcs.VcsValidationException;
import org.gradle.api.artifacts.Dependency;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.net.URI;
import java.nio.file.Path;
import java.util.Objects;
import static org.apache.commons.lang3.StringUtils.isEmpty;
import static org.echocat.gradle.plugins.golang.model.GolangDependency.Type.explicit;
import static org.echocat.gradle.plugins.golang.model.UpdatePolicy.defaultUpdatePolicy;
package org.echocat.gradle.plugins.golang.model;




public class GolangDependency implements Dependency, Comparable<GolangDependency> {

    @Nonnull
    private String _group = "<unknown>";
    @Nullable
    private String _version;
    @Nullable
    private URI _repositoryUri;
    @Nullable
// 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/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/VcsValidationException.java
// public class VcsValidationException extends VcsException {
// 
//     public VcsValidationException(String message) {
//         super(message);
//     }
// 
//     public VcsValidationException(String message, Throwable cause) {
//         super(message, cause);
//     }
// 
//     public VcsValidationException(Throwable cause) {
//         super(cause);
//     }
// 
// }
// 
// Path: src/main/java/org/echocat/gradle/plugins/golang/model/UpdatePolicy.java
// @Nonnull
// public static UpdatePolicy defaultUpdatePolicy() {
//     return never();
// }


// Path: src/main/java/org/echocat/gradle/plugins/golang/model/GolangDependency.java
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.echocat.gradle.plugins.golang.vcs.RawVcsReference;
import org.echocat.gradle.plugins.golang.vcs.VcsType;
import org.echocat.gradle.plugins.golang.vcs.VcsValidationException;
import org.gradle.api.artifacts.Dependency;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.net.URI;
import java.nio.file.Path;
import java.util.Objects;
import static org.apache.commons.lang3.StringUtils.isEmpty;
import static org.echocat.gradle.plugins.golang.model.GolangDependency.Type.explicit;
import static org.echocat.gradle.plugins.golang.model.UpdatePolicy.defaultUpdatePolicy;

package org.echocat.gradle.plugins.golang.model;




public class GolangDependency implements Dependency, Comparable<GolangDependency> {

    @Nonnull
    private String _group = "<unknown>";
    @Nullable
    private String _version;
    @Nullable
    private URI _repositoryUri;
    @Nullable
    private VcsType _repositoryType;