// 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/HasObjectId.java
// public interface HasObjectId {
// 
//     /**
//      * Gets the full SHA-256 commit hash for this object.
//      * @return the full commit hash
//      */
//     @Nonnull
//     String getId();
// 
//     /**
//      * Gets an abbreviated SHA-256 commit hash for this object.
//      * @param length the maximum length of the abbreviated ID
//      * @return the abbreviated commit hash
//      */
//     @Nonnull
//     default String id(int length) {
//         return getId().substring(0, length);
//     }
// }


import org.unbrokendome.gradle.plugins.gitversion.model.GitCommit;
import org.unbrokendome.gradle.plugins.gitversion.model.GitTag;
import org.unbrokendome.gradle.plugins.gitversion.model.HasObjectId;
import javax.annotation.Nonnull;
package org.unbrokendome.gradle.plugins.gitversion.core;




public interface TaggedCommit extends HasObjectId {

    @Nonnull
    GitTag getTag();

    @Nonnull
    default String getTagName() {
        return getTag().getName();
    }

    @Nonnull
// 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/HasObjectId.java
// public interface HasObjectId {
// 
//     /**
//      * Gets the full SHA-256 commit hash for this object.
//      * @return the full commit hash
//      */
//     @Nonnull
//     String getId();
// 
//     /**
//      * Gets an abbreviated SHA-256 commit hash for this object.
//      * @param length the maximum length of the abbreviated ID
//      * @return the abbreviated commit hash
//      */
//     @Nonnull
//     default String id(int length) {
//         return getId().substring(0, length);
//     }
// }


// Path: src/main/java/org/unbrokendome/gradle/plugins/gitversion/core/TaggedCommit.java
import org.unbrokendome.gradle.plugins.gitversion.model.GitCommit;
import org.unbrokendome.gradle.plugins.gitversion.model.GitTag;
import org.unbrokendome.gradle.plugins.gitversion.model.HasObjectId;
import javax.annotation.Nonnull;

package org.unbrokendome.gradle.plugins.gitversion.core;




public interface TaggedCommit extends HasObjectId {

    @Nonnull
    GitTag getTag();

    @Nonnull
    default String getTagName() {
        return getTag().getName();
    }

    @Nonnull
    default GitCommit getCommit() {