protected virtual void AddAccessAttribute(ContentType contentType, CodeTypeDeclaration typeDeclaration)
        {
            if (contentType.ACL == null)
                return;

            var accessEntries = contentType.ACL.Entries.Where(acl => !acl.Name.Equals("Everyone"));

            if (!accessEntries.Any())
                return;

            var accessAttribute = new CodeAttributeDeclaration("Access");

            var users = string.Join(", ", accessEntries.Where(acl => acl.EntityType == SecurityEntityType.User).Select(acl => acl.Name));
            if (!string.IsNullOrEmpty(users))
            {
                accessAttribute.AddArgument("Users", users);
            }

            var roles = string.Join(", ", accessEntries.Where(acl => acl.EntityType == SecurityEntityType.Role).Select(acl => acl.Name));
            if (!string.IsNullOrEmpty(users))
            {
                accessAttribute.AddArgument("Roles", roles);
            }

            typeDeclaration.CustomAttributes.Add(accessAttribute);
        }
        protected virtual void AddContentTypeAttribute(ContentType contentType, CodeTypeDeclaration typeDeclaration)
        {
            var contentTypeAttribute = new CodeAttributeDeclaration("ContentType");

            if (contentType.GUID != Guid.Empty)
            {
                contentTypeAttribute.AddArgument("GUID", contentType.GUID.ToString());
            }
            if (!string.IsNullOrWhiteSpace(contentType.DisplayName))
            {
                contentTypeAttribute.AddArgument("DisplayName", contentType.DisplayName);
            }
            if (contentType.SortOrder != 0)
            {
                contentTypeAttribute.AddArgument("Order", contentType.SortOrder);
            }
            if (!contentType.IsAvailable)
            {
                contentTypeAttribute.AddArgument("AvailableInEditMode", contentType.IsAvailable);
            }
            if (!string.IsNullOrWhiteSpace(contentType.Description))
            {
                contentTypeAttribute.AddArgument("Description", contentType.Description);
            }
            // We will not add the group name as it is included in the DisplayName
            //if (!string.IsNullOrWhiteSpace(contentType.GroupName))
            //{
            //    contentTypeAttribute.AddArgument("GroupName", contentType.GroupName);
            //}

            typeDeclaration.CustomAttributes.Add(contentTypeAttribute);
        }