/// <summary>
        /// Decorates create request for Create method.
        /// Returns non decorated id.
        /// </summary>
        /// <param name="entity">Entity.</param>
        /// <returns>Non decorated id.</returns>
        public Guid Create(StorableStreamEntity entity)
        {
            entity.CheckArgumentNull("StreamRedisRepositorySecurityDecorator.Create entity");
            UserConnection.CurrentUser.CheckArgumentNull("StreamRedisRepositorySecurityDecorator.Create UserConnection.CurrentUser");
            var entityId    = entity.Id;
            var decoratedId = entityId.Xor(UserConnection.CurrentUser.Id);

            entity.Id = decoratedId;
            StreamRedisRepository.Create(entity);
            return(entityId);
        }
        /// <summary>
        /// Decorates find request for Find method.
        /// </summary>
        /// <param name="id">Entity id.</param>
        /// <returns>Entity.</returns>
        public StorableStreamEntity Find(Guid id)
        {
            var decoratedId = id.Xor(UserConnection.CurrentUser.Id);

            return(StreamRedisRepository.Find(decoratedId));
        }
        /// <summary>
        /// Decorates remove request for Remove method.
        /// </summary>
        /// <param name="id">Entity id.</param>
        /// <returns>Removal result.</returns>
        public void Remove(Guid id)
        {
            var decoratedId = id.Xor(UserConnection.CurrentUser.Id);

            StreamRedisRepository.Remove(decoratedId);
        }