// Path: src/main/java/org/unbrokendome/gradle/plugins/gitversion/model/GitCommit.java
// public interface GitCommit extends HasObjectId {
// 
//     @Nonnull
//     String getMessage();
// 
//     /**
//      * Gets a collection of all tags in the repository that point to this commit.
//      *
//      * @return a collection of {@link GitTag} objects (may be empty)
//      */
//     @Nonnull
//     Collection<? extends GitTag> getTags();
// 
//     /**
//      * Gets a list of the parent commits.
//      *
//      * <p>If a commit has more than one parent, the commit is a merge commit, and the second and any further
//      * parents refer to the merged branch(es).</p>
//      *
//      * @return the list of parent commits; may be empty
//      */
//     @Nonnull
//     List<? extends GitCommit> getParents();
// }
// 
// Path: src/main/java/org/unbrokendome/gradle/plugins/gitversion/model/GitTag.java
// public interface GitTag {
// 
//     @Nonnull
//     String getName();
// 
//     @Nonnull
//     GitCommit getTarget();
// }


import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Ref;
import org.unbrokendome.gradle.plugins.gitversion.model.GitCommit;
import org.unbrokendome.gradle.plugins.gitversion.model.GitTag;
import java.util.Objects;
import javax.annotation.Nonnull;
package org.unbrokendome.gradle.plugins.gitversion.model.jgit;





public class JGitTag implements GitTag {

    private final JGitRepository repository;
    private final String name;
    private final Ref ref;


    JGitTag(JGitRepository repository, String name, Ref ref) {
        this.repository = repository;
        this.name = name;
        this.ref = ref;
    }


    @Nonnull
    @Override
    public String getName() {
        return name;
    }


    @Nonnull
    @Override
// Path: src/main/java/org/unbrokendome/gradle/plugins/gitversion/model/GitCommit.java
// public interface GitCommit extends HasObjectId {
// 
//     @Nonnull
//     String getMessage();
// 
//     /**
//      * Gets a collection of all tags in the repository that point to this commit.
//      *
//      * @return a collection of {@link GitTag} objects (may be empty)
//      */
//     @Nonnull
//     Collection<? extends GitTag> getTags();
// 
//     /**
//      * Gets a list of the parent commits.
//      *
//      * <p>If a commit has more than one parent, the commit is a merge commit, and the second and any further
//      * parents refer to the merged branch(es).</p>
//      *
//      * @return the list of parent commits; may be empty
//      */
//     @Nonnull
//     List<? extends GitCommit> getParents();
// }
// 
// Path: src/main/java/org/unbrokendome/gradle/plugins/gitversion/model/GitTag.java
// public interface GitTag {
// 
//     @Nonnull
//     String getName();
// 
//     @Nonnull
//     GitCommit getTarget();
// }


// Path: src/main/java/org/unbrokendome/gradle/plugins/gitversion/model/jgit/JGitTag.java
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Ref;
import org.unbrokendome.gradle.plugins.gitversion.model.GitCommit;
import org.unbrokendome.gradle.plugins.gitversion.model.GitTag;
import java.util.Objects;
import javax.annotation.Nonnull;

package org.unbrokendome.gradle.plugins.gitversion.model.jgit;





public class JGitTag implements GitTag {

    private final JGitRepository repository;
    private final String name;
    private final Ref ref;


    JGitTag(JGitRepository repository, String name, Ref ref) {
        this.repository = repository;
        this.name = name;
        this.ref = ref;
    }


    @Nonnull
    @Override
    public String getName() {
        return name;
    }


    @Nonnull
    @Override
    public GitCommit getTarget() {