public static bool AnalyzeFragmentVisitorBase(string tSql, string sqlHash, SqlFragmentVisitorBase visitor)
        {
            var typeName = visitor.GetType().Name;
            List<VisitorBaseResult> result;
            if (_sqlFragmentVisitorsCache.TryGetValue(sqlHash, out result))
            {
                var visitorBaseResult = result.FirstOrDefault(x => x.Name == typeName);
                if (visitorBaseResult != null)
                {
                    return visitorBaseResult.Result;
                }
            }

            AnalyzeFragmentVisitor(tSql, sqlHash, visitor);

            var baseResult = new VisitorBaseResult
            {
                Name = typeName,
                Result = visitor.IsSuspected
            };

            if (result != null)
            {
                result.Add(baseResult);
                _sqlFragmentVisitorsCache[sqlHash] = result;
            }
            else
            {
                _sqlFragmentVisitorsCache.TryAdd(sqlHash, new List<VisitorBaseResult> { baseResult });
            }

            return visitor.IsSuspected;
        }
        public static bool AnalyzeFragmentVisitorBase(string tSql, string sqlHash, SqlFragmentVisitorBase visitor)
        {
            var typeName = visitor.GetType().Name;
            List <VisitorBaseResult> result;

            if (_sqlFragmentVisitorsCache.TryGetValue(sqlHash, out result))
            {
                var visitorBaseResult = result.FirstOrDefault(x => x.Name == typeName);
                if (visitorBaseResult != null)
                {
                    return(visitorBaseResult.Result);
                }
            }

            AnalyzeFragmentVisitor(tSql, sqlHash, visitor);

            var baseResult = new VisitorBaseResult
            {
                Name   = typeName,
                Result = visitor.IsSuspected
            };

            if (result != null)
            {
                result.Add(baseResult);
                _sqlFragmentVisitorsCache[sqlHash] = result;
            }
            else
            {
                _sqlFragmentVisitorsCache.TryAdd(sqlHash, new List <VisitorBaseResult> {
                    baseResult
                });
            }

            return(visitor.IsSuspected);
        }