private PropertyModel[] GeneratePropertyModels(ITypeSymbol typeSymbol)
        {
            var classInformation              = new ClassInformation(typeSymbol);
            List <IFieldSymbol>    fields     = classInformation.GetFields().ToList();
            List <IPropertySymbol> properties = classInformation.GetProperties().ToList();

            PropertyModel[] propertyModels = new PropertyModel[fields.Count + properties.Count];
            for (int i = 0; i < fields.Count; i++)
            {
                propertyModels[i] = new PropertyModel()
                {
                    Name       = fields[i].Name,
                    Type       = TypeName(fields[i].Type),
                    Visibility = GetAccessibilityName(fields[i].DeclaredAccessibility)
                };
            }
            for (int i = 0; i < properties.Count; i++)
            {
                propertyModels[fields.Count + i] = new PropertyModel()
                {
                    Name       = properties[i].Name,
                    Type       = TypeName(properties[i].Type),
                    Visibility = GetAccessibilityName(properties[i].DeclaredAccessibility)
                };
            }
            return(propertyModels);
        }