private void LoopThroughProperties(string pathToContainer, IComparableObject before, IComparableObject after, List<Difference> differences, List<AttributeChange> attributeChanges)
        {
            var propertyInfos = before.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public);

            foreach (var propertyInfo in propertyInfos)
            {
                PropertyInfo info = propertyInfo;
                CompareOne(x => info.GetValue(x, null), pathToContainer, before, after, differences, attributeChanges, propertyInfo.Name);
            }
        }
        private void LoopThroughFields(string pathToContainer, IComparableObject before, IComparableObject after, List<Difference> differences,
                                       List<AttributeChange> attributeChanges)
        {
            var fieldInfos = before.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public);

            foreach (var fieldInfo in fieldInfos)
            {
                FieldInfo info = fieldInfo;
                CompareOne(x => info.GetValue(x), pathToContainer, before, after, differences, attributeChanges, fieldInfo.Name);
            }
        }