public BytesPayloadLinkedResource DeepCloneWithResourceKind(BytesPayloadLinkedResourceKind resourceKind)
        {
            var result = new BytesPayloadLinkedResource(
                this.Bytes?.DeepClone(),
                resourceKind);

            return(result);
        }
        public BytesPayloadLinkedResource(
            byte[] bytes,
            BytesPayloadLinkedResourceKind resourceKind)
        {
            if (bytes == null)
            {
                throw new ArgumentNullException(nameof(bytes));
            }

            if (!bytes.Any())
            {
                throw new ArgumentException(Invariant($"{nameof(bytes)} is an empty enumerable."));
            }

            if (resourceKind == BytesPayloadLinkedResourceKind.Unknown)
            {
                throw new ArgumentOutOfRangeException(Invariant($"{nameof(resourceKind)} is {nameof(BytesPayloadLinkedResourceKind.Unknown)}."));
            }

            this.Bytes        = bytes;
            this.ResourceKind = resourceKind;
        }