protected bool Equals(ProductPriceChanged other) => base.Equals(other) && Price == other.Price && OccurredOn.Equals(other.OccurredOn) && Version == other.Version;
protected bool Equals(ProductDescriptionChanged other) => base.Equals(other) && Description == other.Description && OccurredOn.Equals(other.OccurredOn) && Version == other.Version;
protected bool Equals(ProductNameChanged other) => base.Equals(other) && Name == other.Name && OccurredOn.Equals(other.OccurredOn) && Version == other.Version;
protected bool Equals(ProductDefined other) => base.Equals(other) && Description == other.Description && Name == other.Name && OccurredOn.Equals(other.OccurredOn) && Price == other.Price && Version == other.Version;