private Image(Id id, uint rowVersion, Instant uploadedAt, Option <byte[]> meta, Color fillColor, Color edgeColor, Md5 md5, IReadOnlyCollection <ImageSize> sizes)
 {
     Id         = id;
     RowVersion = rowVersion;
     UploadedAt = uploadedAt;
     Meta       = meta;
     FillColor  = fillColor;
     EdgeColor  = edgeColor;
     Md5        = md5;
     Sizes      = sizes;
 }
        public static Result <Image, Error> New(Id id, uint rowVersion, Instant uploadedAt, Option <byte[]> meta, Color fillColor, Color edgeColor, Md5 md5, IReadOnlyCollection <ImageSize> sizes)
        {
            if (rowVersion < 1u)
            {
                return(Result.Failure(Error.ValidationError("Row version must be greater than 0")));
            }

            if (sizes.Select(s => s.Tag).Distinct().Count() < sizes.Count)
            {
                return(Result.Failure(Error.ValidationError("Sizes must have unique tags")));
            }

            return(Result.Success(new Image(id, rowVersion, uploadedAt, meta, fillColor, edgeColor, md5, sizes)));
        }