/// <summary>
 /// Registers a new <see cref="Improvable" />
 /// </summary>
 /// <param name="name">The name of the new improvable</param>
 /// <param name="recipe">The recipe type to associate with the new improvable</param>
 /// <param name="repository">The source control repository associated with the improvable</param>
 /// <param name="path">The path within the Source Control repository to the building artifact</param>
 public void Register(ImprovableName name, RecipeType recipe, RepositoryFullName repository, Path path)
 {
     if (_registered)
     {
         throw new ImprovableAlreadyRegistered($"An improvable with the Id '{this.EventSourceId.Value}' has already been registered");
     }
     Apply(new ImprovableRegistered(this.EventSourceId, name, recipe, repository, path));
 }
 bool BeAnExistingRepository(RepositoryFullName repo)
 {
     return(_repoExists(repo));
 }