public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        CustomDisplayAttribute customDisplay = attribute as CustomDisplayAttribute;

        property.isExpanded = true;

        SerializedProperty endProperty = property.GetEndProperty();

        switch (customDisplay.displayMode)
        {
        case CustomDisplayMode.NoLabel:
            break;

        case CustomDisplayMode.LabelAsHeader:
            position = PropertyDrawerUtil.DrawLabel(label, position, EditorStyles.boldLabel);
            break;

        case CustomDisplayMode.NoDropdown:
            position = PropertyDrawerUtil.DrawLabel(label, position);
            break;
        }

        property.NextVisible(true);

        do
        {
            position = PropertyDrawerUtil.DrawProperty(property, position, true);

            property.NextVisible(false);
        } while (!SerializedProperty.EqualContents(property, endProperty));
    }
    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        ConditionalHideIntCustomDisplayAttribute condHAtt = (ConditionalHideIntCustomDisplayAttribute)attribute;
        bool enabled = GetConditionalHideAttributeResult(condHAtt, property);

        bool wasEnabled = GUI.enabled;

        GUI.enabled = enabled;
        //if (!condHAtt.HideInInspector || enabled)
        if (condHAtt.Behavior != ConditionalHideBehavior.Hide || enabled)
        {
            property.isExpanded = true;

            SerializedProperty endProperty = property.GetEndProperty();

            switch (condHAtt.DisplayMode)
            {
            case CustomDisplayMode.NoLabel:
                break;

            case CustomDisplayMode.LabelAsHeader:
                position = PropertyDrawerUtil.DrawLabel(label, position, EditorStyles.boldLabel);
                break;

            case CustomDisplayMode.NoDropdown:
                position = PropertyDrawerUtil.DrawLabel(label, position);
                break;
            }

            property.NextVisible(true);

            do
            {
                position = PropertyDrawerUtil.DrawProperty(property, position, true);

                property.NextVisible(false);
            } while (!SerializedProperty.EqualContents(property, endProperty));
        }

        GUI.enabled = wasEnabled;
    }