protected void DrawProperties(ref Rect position, SerializedProperty property, ref GUIContent label)
    {
        if (extraLabelLine)
        {
            MoveElements(ref position, property, ref label);
        }

        if (textAreaAttribute.IsNotNull())
        {
            EditorGUI.indentLevel = 0;
            EditorGUI.LabelField(position, "TextArea not supported by DisplayModifier");
            //EditorGUI.PropertyField(position, property, false);
        }
        else
        {
            if (noChildrenFolder && property.hasVisibleChildren)
            {
                //GUI.BeginGroup(position, label);
                GUIStyle groupStyle = new GUIStyle(EditorStyles.helpBox);

                //groupStyle.padding = new RectOffset(-30, -30, -30, -30);
                //groupStyle.margin = new RectOffset(-3,- 3,- 3, -3);
                //groupStyle.border = new RectOffset(100, 100, 100, 100);
                var pos = position;
                if (decorationFlags.ContainsFlag(DM_Decorations.BoxChildren))
                {
                    const float _padding = 5f;
                    pos.x                  -= _padding;
                    pos.width              += _padding * 1.5f;
                    pos.height              = children.GetExpandedPropertyHeight(property, label);
                    groupStyle.padding      = new RectOffset((int)_padding, (int)_padding, (int)_padding, (int)_padding);
                    groupStyle.stretchWidth = true;

                    GUI.Box(pos, GUIContent.none, groupStyle);
                }

                DrawChildren(ref position, property, ref label);

                //GUI.EndGroup();
            }
            else
            {
                EditorGUI.PropertyField(position, property, label, property.hasVisibleChildren);
            }
        }
    }
    public DisplayModifierAttribute(
        HidingMode hidingMode   = HidingMode.Default, string[] hidingConditionVars = null, HidingCondition hidingConditions = HidingCondition.None,
        FoldingMode foldingMode = FoldingMode.Default, DM_Decorations decorations  = DM_Decorations.None)
    {
        extraLabelLine       = decorations.ContainsFlag(DM_Decorations.MoveLabel);
        this.hidingMode      = hidingMode;
        this.hidingCondition = hidingConditions;
        conditionVars        = hidingConditionVars;
        if (hidingConditionVars != null && hidingConditionVars.Length > 0)
        {
            if (this.hidingMode == HidingMode.Default)
            {
                this.hidingMode = HidingMode.GreyedOut;
            }
            if (hidingCondition == HidingCondition.None)
            {
                hidingCondition = HidingCondition.FalseOrNull;
            }
        }

        this.foldingMode = foldingMode;
        decorationFlags  = decorations;
    }