public static TrackersHolder Create(Compilation compilation, INetFrameworkVersionProvider versionProvider)
            {
                var netFrameworkVersion = versionProvider.GetDotNetFrameworkVersion(compilation);
                var constructorIsSafe   = ConstructorIsSafe(netFrameworkVersion);

                var xmlDocumentTracker = new CSharpObjectInitializationTracker(
                    // we do not expect any constant values for XmlResolver
                    isAllowedConstantValue: constantValue => false,
                    trackedTypes: XmlDocumentTrackedTypes,
                    isTrackedPropertyName: propertyName => "XmlResolver" == propertyName,
                    isAllowedObject: (symbol, _, __) => IsAllowedObject(symbol),
                    constructorIsSafe: constructorIsSafe
                    );

                var xmlTextReaderTracker = new CSharpObjectInitializationTracker(
                    isAllowedConstantValue: IsAllowedValueForXmlTextReader,
                    trackedTypes: ImmutableArray.Create(KnownType.System_Xml_XmlTextReader),
                    isTrackedPropertyName: XmlTextReaderTrackedProperties.Contains,
                    isAllowedObject: (symbol, _, __) => IsAllowedObject(symbol),
                    constructorIsSafe: constructorIsSafe
                    );

                return(new TrackersHolder(xmlDocumentTracker, xmlTextReaderTracker));
            }
        private void VerifyXmlReaderInvocations(SyntaxNodeAnalysisContext context)
        {
            var invocation = (InvocationExpressionSyntax)context.Node;

            if (!invocation.IsMemberAccessOnKnownType("Create", KnownType.System_Xml_XmlReader, context.SemanticModel))
            {
                return;
            }

            var settings = invocation.GetArgumentSymbolsOfKnownType(KnownType.System_Xml_XmlReaderSettings, context.SemanticModel).FirstOrDefault();

            if (settings == null)
            {
                return; // safe by default
            }

            var xmlReaderSettingsValidator = new XmlReaderSettingsValidator(context.SemanticModel, VersionProvider.GetDotNetFrameworkVersion(context.Compilation));

            if (xmlReaderSettingsValidator.IsUnsafe(invocation, settings))
            {
                context.ReportDiagnosticWhenActive(Diagnostic.Create(rule, invocation.GetLocation()));
            }
        }