private MemberInfo GetFirstMember(string memberName, Type type)
        {
            var          flags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.FlattenHierarchy;
            PropertyInfo prop  = _reflectionHelper.TryGetProperty(type, memberName, flags);

            if (prop != null)
            {
                return(prop);
            }

            FieldInfo field = _reflectionHelper.TryGetField(type, memberName, flags);

            if (field != null)
            {
                return(field);
            }

            throw new MemberNotFoundException($"Cannot find property or field \"{memberName}\" in class \"{type.Name}\" and all its parents. BindingFlags = {flags}");
        }