public Person Take(EmailAddressUpdateCommand command)
        {
            var mail = EmailAddresses.First(e => e.Id == command.Id);

            mail.CopyPropertiesFrom(command);

            base.AddEvent(new PersonEmailAddressUpdateDomainEvent
            {
                AggregateRootId = Id,
                CommandJson     = JsonConvert.SerializeObject(command),
                UserId          = command.UserId
            });

            return(this);
        }
        public Person Take(EmailAddressDeleteCommand command)
        {
            var mail = EmailAddresses.First(e => e.Id == command.MailAddressId);

            this.EmailAddresses.Remove(mail);

            base.AddEvent(new PersonEmailAddressDeletedDomainEvent
            {
                AggregateRootId = Id,
                CommandJson     = JsonConvert.SerializeObject(command),
                UserId          = command.UserId
            });

            return(this);
        }