public static bool Verify(RevOrderCode a, RevisionFilters.Criteria c)
        {
            string ax;

            if (c.SubDataEnum != null)
            {
                ax = a?[c.SubDataEnum.SubDataIdx] ?? "";
                return(Verify(ax, c));
            }

            ax = a?.ToString() ?? "";
            return(Verify(ax, c));
        }
        public static bool Verify(RevisionVisibility a, RevisionFilters.Criteria c)
        {
            bool result = false;

            RevisionFilters.ICompRoot opr = c.CompareOpr;

            if (c.CompareOpr == ANY)
            {
                result = true;
            }
            else if (opr == EQUAL ||
                     opr == NOT_EQUAL)
            {
                result = (a == c.TestValue.AsVisibility) == (opr == EQUAL);
            }

            return(result);
        }
        public static bool Verify(bool a, RevisionFilters.Criteria c)
        {
            bool result = false;

            RevisionFilters.ICompRoot opr = c.CompareOpr;

            if (c.CompareOpr == ANY)
            {
                result = true;
            }
            else if (opr == TRUE ||
                     opr == FALSE)
            {
                result = (a == true) == (opr == TRUE);
            }

            return(result);
        }
        public static bool Verify(int a, RevisionFilters.Criteria c)
        {
            bool result = false;

            RevisionFilters.ICompRoot opr = c.CompareOpr;
            int b = c.TestValue?.AsInt ?? 0;

            switch (c.CompareOpr.Type)
            {
            case RevisionFilters.CompareType.ANY:
                {
                    result = true;
                    break;
                }

            case RevisionFilters.CompareType.EQUAL:
            case RevisionFilters.CompareType.NOT_EQUAL:
            {
                result = (a == b) == (opr == EQUAL);
                break;
            }

            case RevisionFilters.CompareType.LESS_THEN:
            case RevisionFilters.CompareType.LESS_THEN_OR_EQUAL:
            {
                result = a < b ||
                         ((a == b) && (opr == LESS_THEN_OR_EQUAL));
                break;
            }

            case RevisionFilters.CompareType.GREATER_THEN:
            case RevisionFilters.CompareType.GREATER_THEN_OR_EQUAL:
            {
                result = a > b ||
                         ((a == b) && (opr == GREATER_THEN_OR_EQUAL));
                break;
            }
            }

            return(result);
        }
        public static bool Verify(ElementId a, RevisionFilters.Criteria c)
        {
            bool result = false;

            RevisionFilters.ICompRoot opr = c.CompareOpr;

            ElementId b = c.TestValue?.AsElementId;

            if (c.CompareOpr == ANY)
            {
                result = true;
            }
            else if (a == null || b == null)
            {
                result = false;
            }
            else if (opr == EQUAL || opr == NOT_EQUAL)
            {
                result = (a.Value == b.Value) == (opr == EQUAL);
            }

            return(result);
        }
        public static bool Verify(string a, RevisionFilters.Criteria c)
        {
            bool result = false;

            RevisionFilters.ICompRoot opr        = c.CompareOpr;
            StringComparison          ignorecase = StringComparison.OrdinalIgnoreCase;

            if (!c.IgnoreCase)
            {
                ignorecase = StringComparison.Ordinal;
            }

            string b = c.TestValue?.AsString;

            if (c.CompareOpr.Type == RevisionFilters.CompareType.ANY)
            {
                result = true;
            }
            else if (a == null)
            {
                result = false;
            }
            else if (opr == IS_EMPTY ||
                     opr == IS_NOT_EMPTY)
            {
                bool ans = string.IsNullOrEmpty(a);
                result = (opr == IS_EMPTY) == ans;
            }
            else if (b == null)
            {
                result = false;
            }
            else
            {
                switch (c.CompareOpr.Type)
                {
                case RevisionFilters.CompareType.EQUAL:
                case RevisionFilters.CompareType.NOT_EQUAL:
                {
                    result = a.Equals(b) == (opr == EQUAL);
                    break;
                }

                case RevisionFilters.CompareType.LESS_THEN:
                case RevisionFilters.CompareType.LESS_THEN_OR_EQUAL:
                {
                    int ans = String.Compare(a, b, ignorecase);
                    result = ans < 0 ||
                             ((a.Equals(b)) && (opr == LESS_THEN_OR_EQUAL));
                    break;
                }

                case RevisionFilters.CompareType.GREATER_THEN:
                case RevisionFilters.CompareType.GREATER_THEN_OR_EQUAL:
                {
                    int ans = String.Compare(a, b, ignorecase);
                    result = ans > 0 ||
                             ((a.Equals(b)) && (opr == GREATER_THEN_OR_EQUAL));
                    break;
                }

                case RevisionFilters.CompareType.STARTS_WITH:
                case RevisionFilters.CompareType.DOES_NOT_START_WITH:
                {
                    bool ans = a.StartsWith(b, ignorecase);
                    result = (opr == STARTS_WITH) == ans;
                    break;
                }

                case RevisionFilters.CompareType.CONTAINS:
                case RevisionFilters.CompareType.DOES_NOT_CONTAIN:
                {
                    bool ans = a.IndexOf(b, ignorecase) > 0;
                    result = (opr == CONTAINS) == ans;
                    break;
                }
                }
            }

            return(result);
        }