// Path: src/main/java/org/unbrokendome/gradle/plugins/gitversion/model/GitRepository.java
// public interface GitRepository extends AutoCloseable {
// 
//     File getWorkingDir();
// 
//     @Nullable
//     GitCommit getHead();
// 
//     @Nullable
//     GitBranch getCurrentBranch();
// 
//     @Nullable
//     GitBranch getBranch(String name);
// 
//     @Nonnull
//     Collection<? extends GitBranch> getBranches();
// 
//     @Nonnull
//     Collection<? extends GitTag> getTags();
// 
//     @Nonnull
//     Set<String> getRemoteNames();
// 
//     @Nonnull
//     CloseableIterator<GitCommit> walk(GitCommit startCommit, WalkMode mode);
// 
//     default CloseableIterator<GitCommit> walk(GitCommit startCommit) {
//         return walk(startCommit, WalkMode.ALL);
//     }
// 
//     default CloseableIterator<GitCommit> walk(WalkMode walkMode) {
//         GitCommit head = getHead();
//         if (head == null) {
//             return CloseableIterator.emptyIterator();
//         }
//         return walk(getHead(), walkMode);
//     }
// 
//     default CloseableIterator<GitCommit> walk() {
//         return walk(WalkMode.ALL);
//     }
// 
//     default CloseableIterator<GitCommit> firstParentWalk(GitCommit startCommit) {
//         return walk(startCommit, WalkMode.FIRST_PARENT_ONLY);
//     }
// 
//     default CloseableIterator<GitCommit> firstParentWalk() {
//         return walk(WalkMode.FIRST_PARENT_ONLY);
//     }
// 
//     enum WalkMode {
//         ALL,
//         FIRST_PARENT_ONLY
//     }
// }
// 
// Path: src/main/java/org/unbrokendome/gradle/plugins/gitversion/version/MutableSemVersion.java
// public interface MutableSemVersion extends SemVersion {
// 
//     @Nonnull
//     MutableSemVersion setMajor(int major);
// 
// 
//     @Nonnull
//     MutableSemVersion addMajor(int delta);
// 
// 
//     @Nonnull
//     default MutableSemVersion incrementMajor() {
//         return addMajor(1);
//     }
// 
// 
//     @Nonnull
//     MutableSemVersion setMinor(int minor);
// 
// 
//     @Nonnull
//     MutableSemVersion addMinor(int delta);
// 
// 
//     @Nonnull
//     default MutableSemVersion incrementMinor() {
//         return addMinor(1);
//     }
// 
// 
//     @Nonnull
//     MutableSemVersion setPatch(int patch);
// 
// 
//     @Nonnull
//     MutableSemVersion addPatch(int delta);
// 
// 
//     @Nonnull
//     default MutableSemVersion incrementPatch() {
//         return addPatch(1);
//     }
// 
// 
//     @Nonnull
//     MutableSemVersion setPrereleaseTag(String prereleaseTag);
// 
// 
//     @Nonnull
//     MutableSemVersion setBuildMetadata(String buildMetadata);
// 
// 
//     @Nonnull
//     MutableSemVersion set(int major, int minor, int patch,
//                           @Nullable String prereleaseTag,
//                           @Nullable String buildMetadata);
// 
// 
//     @Nonnull
//     default MutableSemVersion set(int major, int minor, int patch,
//                                   @Nullable String prereleaseTag) {
//         return set(major, minor, patch, prereleaseTag, null);
//     }
// 
// 
//     @Nonnull
//     default MutableSemVersion set(int major, int minor, int patch) {
//         return set(major, minor, patch, null, null);
//     }
// 
// 
//     @Nonnull
//     default MutableSemVersion setFrom(SemVersion version) {
//         return set(version.getMajor(), version.getMinor(), version.getPatch(),
//                 version.getPrereleaseTag(), version.getBuildMetadata());
//     }
// 
// 
//     @Nonnull
//     default MutableSemVersion setFrom(String versionString) {
//         return setFrom(SemVersion.parse(versionString));
//     }
// 
// 
//     @Nonnull
//     default SemVersion toImmutable() {
//         return new ImmutableSemVersionImpl(
//                 getMajor(), getMinor(), getPatch(), getPrereleaseTag(), getBuildMetadata());
//     }
// }


import org.gradle.api.Project;
import org.unbrokendome.gradle.plugins.gitversion.model.GitRepository;
import org.unbrokendome.gradle.plugins.gitversion.version.MutableSemVersion;
import javax.annotation.Nonnull;
package org.unbrokendome.gradle.plugins.gitversion.internal;




class RuleEvaluationContextImpl implements RuleEvaluationContext {

    private final Project project;
// Path: src/main/java/org/unbrokendome/gradle/plugins/gitversion/model/GitRepository.java
// public interface GitRepository extends AutoCloseable {
// 
//     File getWorkingDir();
// 
//     @Nullable
//     GitCommit getHead();
// 
//     @Nullable
//     GitBranch getCurrentBranch();
// 
//     @Nullable
//     GitBranch getBranch(String name);
// 
//     @Nonnull
//     Collection<? extends GitBranch> getBranches();
// 
//     @Nonnull
//     Collection<? extends GitTag> getTags();
// 
//     @Nonnull
//     Set<String> getRemoteNames();
// 
//     @Nonnull
//     CloseableIterator<GitCommit> walk(GitCommit startCommit, WalkMode mode);
// 
//     default CloseableIterator<GitCommit> walk(GitCommit startCommit) {
//         return walk(startCommit, WalkMode.ALL);
//     }
// 
//     default CloseableIterator<GitCommit> walk(WalkMode walkMode) {
//         GitCommit head = getHead();
//         if (head == null) {
//             return CloseableIterator.emptyIterator();
//         }
//         return walk(getHead(), walkMode);
//     }
// 
//     default CloseableIterator<GitCommit> walk() {
//         return walk(WalkMode.ALL);
//     }
// 
//     default CloseableIterator<GitCommit> firstParentWalk(GitCommit startCommit) {
//         return walk(startCommit, WalkMode.FIRST_PARENT_ONLY);
//     }
// 
//     default CloseableIterator<GitCommit> firstParentWalk() {
//         return walk(WalkMode.FIRST_PARENT_ONLY);
//     }
// 
//     enum WalkMode {
//         ALL,
//         FIRST_PARENT_ONLY
//     }
// }
// 
// Path: src/main/java/org/unbrokendome/gradle/plugins/gitversion/version/MutableSemVersion.java
// public interface MutableSemVersion extends SemVersion {
// 
//     @Nonnull
//     MutableSemVersion setMajor(int major);
// 
// 
//     @Nonnull
//     MutableSemVersion addMajor(int delta);
// 
// 
//     @Nonnull
//     default MutableSemVersion incrementMajor() {
//         return addMajor(1);
//     }
// 
// 
//     @Nonnull
//     MutableSemVersion setMinor(int minor);
// 
// 
//     @Nonnull
//     MutableSemVersion addMinor(int delta);
// 
// 
//     @Nonnull
//     default MutableSemVersion incrementMinor() {
//         return addMinor(1);
//     }
// 
// 
//     @Nonnull
//     MutableSemVersion setPatch(int patch);
// 
// 
//     @Nonnull
//     MutableSemVersion addPatch(int delta);
// 
// 
//     @Nonnull
//     default MutableSemVersion incrementPatch() {
//         return addPatch(1);
//     }
// 
// 
//     @Nonnull
//     MutableSemVersion setPrereleaseTag(String prereleaseTag);
// 
// 
//     @Nonnull
//     MutableSemVersion setBuildMetadata(String buildMetadata);
// 
// 
//     @Nonnull
//     MutableSemVersion set(int major, int minor, int patch,
//                           @Nullable String prereleaseTag,
//                           @Nullable String buildMetadata);
// 
// 
//     @Nonnull
//     default MutableSemVersion set(int major, int minor, int patch,
//                                   @Nullable String prereleaseTag) {
//         return set(major, minor, patch, prereleaseTag, null);
//     }
// 
// 
//     @Nonnull
//     default MutableSemVersion set(int major, int minor, int patch) {
//         return set(major, minor, patch, null, null);
//     }
// 
// 
//     @Nonnull
//     default MutableSemVersion setFrom(SemVersion version) {
//         return set(version.getMajor(), version.getMinor(), version.getPatch(),
//                 version.getPrereleaseTag(), version.getBuildMetadata());
//     }
// 
// 
//     @Nonnull
//     default MutableSemVersion setFrom(String versionString) {
//         return setFrom(SemVersion.parse(versionString));
//     }
// 
// 
//     @Nonnull
//     default SemVersion toImmutable() {
//         return new ImmutableSemVersionImpl(
//                 getMajor(), getMinor(), getPatch(), getPrereleaseTag(), getBuildMetadata());
//     }
// }


// Path: src/main/java/org/unbrokendome/gradle/plugins/gitversion/internal/RuleEvaluationContextImpl.java
import org.gradle.api.Project;
import org.unbrokendome.gradle.plugins.gitversion.model.GitRepository;
import org.unbrokendome.gradle.plugins.gitversion.version.MutableSemVersion;
import javax.annotation.Nonnull;

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




class RuleEvaluationContextImpl implements RuleEvaluationContext {

    private final Project project;
    private final GitRepository repository;