protected override bool IsFieldExcluded(SPField field)
        {
            if (!HttpContext.Current.Request[SPConstants.AdminModeUrlParameter].IsNullOrEmpty() && field.ParentList.DoesUserHavePermissions(SPBasePermissions.ManageWeb))
            {
                _controlsToRenderCount++;
                return false;
            }

            var isExcluded = base.IsFieldExcluded(field);

            // This properties are null by default. If they won't be set in content type, field won't be shown in corresponding form
            if ((base.ControlMode == SPControlMode.Display && !field.ShowInDisplayForm.HasValue) ||
                (base.ControlMode == SPControlMode.Edit && !field.ShowInEditForm.HasValue) ||
                (base.ControlMode == SPControlMode.New && !field.ShowInNewForm.HasValue))
                return true;

            if (field.ReadOnlyField)
            {
                // Because it's not posible to override IsFieldExcluded (becouse of many internal fields) I'm checking if field is excluded becouse of Readonly property.
                field.ReadOnlyField = false;
                isExcluded = base.IsFieldExcluded(field) && isExcluded;
                field.ReadOnlyField = true;
            }

            // ContentType selection
            if (field.Type == SPFieldType.Computed && field.InternalName == SPConstants.ContentType)
            {
                var changeContentType = new FPSChangeContentType();
                changeContentType.DisplayName = field.Title;
                var filterItems = field.GetCustomizationValues<string>(CustomPropertyType.Filter) ?? new List<string>();
                var allowedContentTypes = new Dictionary<string, string>();

                foreach (var item in filterItems)
                {
                    var nameValuePair = item.Split('_');
                    if (!allowedContentTypes.ContainsKey(nameValuePair[0]))
                        allowedContentTypes.Add(nameValuePair[0], nameValuePair.Length > 1 ? nameValuePair[1] : null);
                }

                changeContentType.AllowedContentTypes = allowedContentTypes;

                if (!ContentTypeTemplateName.IsNullOrEmpty())
                    changeContentType.TemplateName = ContentTypeTemplateName;

                Controls.Add(changeContentType);
            }

            if (!isExcluded)
                _controlsToRenderCount++;

            return isExcluded;
        }