// TODO: Skip array fields
    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        foreach (string propertyToCheck in PropertiesToCheck)
        {
            if (!string.IsNullOrEmpty(propertyToCheck))
            {
                var conditionProperty = FindPropertyRelative(property, propertyToCheck);
                if (conditionProperty != null)
                {
                    bool   isBoolMatch        = conditionProperty.propertyType == SerializedPropertyType.Boolean && conditionProperty.boolValue;
                    string compareStringValue = CompareValue?.ToString().ToUpper() ?? "NULL";
                    if (isBoolMatch && compareStringValue == "FALSE")
                    {
                        isBoolMatch = false;
                    }

                    string conditionPropertyStringValue = EditorUtils.AsStringValue(conditionProperty).ToUpper();
                    bool   objectMatch = compareStringValue == conditionPropertyStringValue;

                    if (!isBoolMatch && !objectMatch)
                    {
                        _toShow = false;
                        return;
                    }
                }
            }
        }

        _toShow = true;
        EditorGUI.PropertyField(position, property, label, true);
    }