public static UseSpacesInsteadOfTabWalker GetInstance()
            {
                UseSpacesInsteadOfTabWalker walker = _cachedInstance;

                if (walker != null)
                {
                    Debug.Assert(walker.AnalysisContext.Tree == null);
                    Debug.Assert(walker.AnalysisContext.CancellationToken == default);

                    _cachedInstance = null;
                    return(walker);
                }

                return(new UseSpacesInsteadOfTabWalker());
            }
        private static void AnalyzeSyntaxTree(SyntaxTreeAnalysisContext context)
        {
            SyntaxTree tree = context.Tree;

            if (!tree.TryGetRoot(out SyntaxNode root))
            {
                return;
            }

            UseSpacesInsteadOfTabWalker walker = UseSpacesInsteadOfTabWalker.GetInstance();

            walker.AnalysisContext = context;
            walker.Visit(root);

            UseSpacesInsteadOfTabWalker.Free(walker);
        }
            public static void Free(UseSpacesInsteadOfTabWalker walker)
            {
                walker.AnalysisContext = default;

                _cachedInstance = walker;
            }