// Path: src/main/java/org/unbrokendome/gradle/plugins/gitversion/core/BranchPoint.java
// public interface BranchPoint extends HasObjectId {
// 
//     /**
//      * Gets the commit from which the branch was created.
//      * @return the Git commit
//      */
//     @Nonnull
//     GitCommit getCommit();
// 
//     /**
//      * Gets the other branch which was forked off here.
//      * @return the other branch
//      */
//     @Nonnull
//     GitBranch getOtherBranch();
// 
//     /**
//      * Gets the name of the other branch which was forked off here.
//      * @return the (short) name of the other branch
//      */
//     @Nonnull
//     default String getOtherBranchName() {
//         return getOtherBranch().getShortName();
//     }
// 
//     /**
//      * If a regular expression pattern was used to find this branch point, gets the matches
//      * from the branch name.
//      * @return the matches
//      */
//     @Nonnull
//     MatcherFacade getMatches();
// 
//     /**
//      * Gets the commit ID.
//      * @return the commit ID
//      */
//     @Nonnull
//     @Override
//     default String getId() {
//         return getCommit().getId();
//     }
// }
// 
// Path: src/main/java/org/unbrokendome/gradle/plugins/gitversion/core/MatcherFacade.java
// public interface MatcherFacade extends Iterable<String> {
// 
//     /**
//      * Gets the number of matches.
//      * @return the number of matches
//      */
//     int size();
// 
//     /**
//      * Gets the input subsequence captured by the given group during the match operation.
//      *
//      * Capturing groups start at index one. The match at index 0 contains the entire input sequence
//      * that was matched.
//      *
//      * @param groupIndex the index of the capturing group
//      * @return the input subsequence captured by the given group
//      * @see java.util.regex.Matcher#group(int)
//      */
//     @Nonnull
//     String getAt(int groupIndex);
// 
//     /**
//      * Gets the input subsequence captured by the given named group during the match operation.
//      *
//      * @param groupName the name of a capturing group
//      * @return the input subsequence of the given group
//      * @see java.util.regex.Matcher#group(String)
//      */
//     @Nonnull
//     String getAt(String groupName);
// 
//     /**
//      * Returns a list containing all capturing results.
//      *
//      * @return a list containing the group capture results, as if returned by {@link #getAt(int)}
//      */
//     @Nonnull
//     default List<String> toList() {
//         int size = size();
//         ImmutableList.Builder<String> items = ImmutableList.builder();
//         for (int i = 0; i < size; i++) {
//             items.add(getAt(i));
//         }
//         return items.build();
//     }
// 
// 
//     @Override
//     @Nonnull
//     default Iterator<String> iterator() {
//         return toList().iterator();
//     }
// }
// 
// Path: src/main/java/org/unbrokendome/gradle/plugins/gitversion/model/GitBranch.java
// public interface GitBranch {
// 
//     @Nonnull
//     String getShortName();
// 
//     @Nonnull
//     String getFullName();
// 
//     @Nonnull
//     GitCommit getHead();
// }
// 
// 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();
// }


import javax.annotation.Nonnull;
import org.unbrokendome.gradle.plugins.gitversion.core.BranchPoint;
import org.unbrokendome.gradle.plugins.gitversion.core.MatcherFacade;
import org.unbrokendome.gradle.plugins.gitversion.model.GitBranch;
import org.unbrokendome.gradle.plugins.gitversion.model.GitCommit;
package org.unbrokendome.gradle.plugins.gitversion.internal;




public class BranchPointImpl implements BranchPoint {

    private final GitCommit commit;
// Path: src/main/java/org/unbrokendome/gradle/plugins/gitversion/core/BranchPoint.java
// public interface BranchPoint extends HasObjectId {
// 
//     /**
//      * Gets the commit from which the branch was created.
//      * @return the Git commit
//      */
//     @Nonnull
//     GitCommit getCommit();
// 
//     /**
//      * Gets the other branch which was forked off here.
//      * @return the other branch
//      */
//     @Nonnull
//     GitBranch getOtherBranch();
// 
//     /**
//      * Gets the name of the other branch which was forked off here.
//      * @return the (short) name of the other branch
//      */
//     @Nonnull
//     default String getOtherBranchName() {
//         return getOtherBranch().getShortName();
//     }
// 
//     /**
//      * If a regular expression pattern was used to find this branch point, gets the matches
//      * from the branch name.
//      * @return the matches
//      */
//     @Nonnull
//     MatcherFacade getMatches();
// 
//     /**
//      * Gets the commit ID.
//      * @return the commit ID
//      */
//     @Nonnull
//     @Override
//     default String getId() {
//         return getCommit().getId();
//     }
// }
// 
// Path: src/main/java/org/unbrokendome/gradle/plugins/gitversion/core/MatcherFacade.java
// public interface MatcherFacade extends Iterable<String> {
// 
//     /**
//      * Gets the number of matches.
//      * @return the number of matches
//      */
//     int size();
// 
//     /**
//      * Gets the input subsequence captured by the given group during the match operation.
//      *
//      * Capturing groups start at index one. The match at index 0 contains the entire input sequence
//      * that was matched.
//      *
//      * @param groupIndex the index of the capturing group
//      * @return the input subsequence captured by the given group
//      * @see java.util.regex.Matcher#group(int)
//      */
//     @Nonnull
//     String getAt(int groupIndex);
// 
//     /**
//      * Gets the input subsequence captured by the given named group during the match operation.
//      *
//      * @param groupName the name of a capturing group
//      * @return the input subsequence of the given group
//      * @see java.util.regex.Matcher#group(String)
//      */
//     @Nonnull
//     String getAt(String groupName);
// 
//     /**
//      * Returns a list containing all capturing results.
//      *
//      * @return a list containing the group capture results, as if returned by {@link #getAt(int)}
//      */
//     @Nonnull
//     default List<String> toList() {
//         int size = size();
//         ImmutableList.Builder<String> items = ImmutableList.builder();
//         for (int i = 0; i < size; i++) {
//             items.add(getAt(i));
//         }
//         return items.build();
//     }
// 
// 
//     @Override
//     @Nonnull
//     default Iterator<String> iterator() {
//         return toList().iterator();
//     }
// }
// 
// Path: src/main/java/org/unbrokendome/gradle/plugins/gitversion/model/GitBranch.java
// public interface GitBranch {
// 
//     @Nonnull
//     String getShortName();
// 
//     @Nonnull
//     String getFullName();
// 
//     @Nonnull
//     GitCommit getHead();
// }
// 
// 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/internal/BranchPointImpl.java
import javax.annotation.Nonnull;
import org.unbrokendome.gradle.plugins.gitversion.core.BranchPoint;
import org.unbrokendome.gradle.plugins.gitversion.core.MatcherFacade;
import org.unbrokendome.gradle.plugins.gitversion.model.GitBranch;
import org.unbrokendome.gradle.plugins.gitversion.model.GitCommit;

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




public class BranchPointImpl implements BranchPoint {

    private final GitCommit commit;
    private final GitBranch otherBranch;