private static FieldInfo[] ConcatInheritedFields(FieldInfo[] fields, Type objType, int maxRecursionDepth = 0)
        {
            if (maxRecursionDepth > 2)
                return fields;
            
            Type baseType = objType.BaseType;

            if (baseType == null)
                return fields;

            FieldInfo[] inheritedFields = baseType.GetFields(_bindingFlags);
            fields = fields.Concat(inheritedFields).ToArray();
            return ConcatInheritedFields(fields, baseType, maxRecursionDepth + 1);
        }