public PropertyParameter Merge(PropertyParameter mergee, PropertyParameter original)
        {
            switch (original.Property)
            {
            case ObjectProperty.Location:
                return(MergeLocation(mergee, original));

            default:
                throw new NotImplementedException($"Don't know how to merge property {original.Property} with {mergee.Property}.");
            }
        }
        private PropertyParameter MergeLocation(PropertyParameter mergee, PropertyParameter original)
        {
            switch (mergee.Property)
            {
            case ObjectProperty.LocationName:
                ((Location)original.Value).Label = mergee.Value?.ToString();

                return(original);

            default:
                throw new NotImplementedException($"Don't know how to merge property {original.Property} with {mergee.Property}.");
            }
        }