protected ImmutableArray <TMatch>?AnalyzeWorker()
        {
            if (_syntaxFacts.GetObjectCreationInitializer(_objectCreationExpression) != null)
            {
                // Don't bother if this already has an initializer.
                return(null);
            }

            if (!ShouldAnalyze())
            {
                return(null);
            }

            _containingStatement = _objectCreationExpression.FirstAncestorOrSelf <TStatementSyntax>();
            if (_containingStatement == null)
            {
                return(null);
            }

            if (!TryInitializeVariableDeclarationCase() &&
                !TryInitializeAssignmentCase())
            {
                return(null);
            }

            var matches = ArrayBuilder <TMatch> .GetInstance();

            AddMatches(matches);
            return(matches.ToImmutableAndFree());
        }