public Task <Person> CreatePerson(EditPersonParameters parameters)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException(nameof(parameters));
            }

            var person = new Person
            {
                Id = Guid.NewGuid()
            };

            parameters.Patch(person);
            People.AddOrUpdate(person.Id, person, (key, value) => person);

            return(Task.FromResult(person));
        }
        public Task <Person> EditPerson(Guid id, EditPersonParameters parameters)
        {
            if (id == Guid.Empty)
            {
                throw new EmptyGuidException(nameof(id));
            }

            if (parameters == null)
            {
                throw new ArgumentNullException(nameof(parameters));
            }

            if (!People.TryGetValue(id, out Person person))
            {
                throw new ArgumentException($"No person found with id {id}!", nameof(id));
            }

            parameters.Patch(person);
            People.AddOrUpdate(id, person, (key, value) => person);
            return(Task.FromResult(person));
        }