private PatternSearchResult(PatternSearch search, Document document, SyntaxNodeOrToken nodeOrToken,  ImmutableArray<PatternCapture> captures)
 {
     Search = search;
     Document = document;
     NodeOrToken = nodeOrToken;
     Captures = captures;
 }
 private static ImmutableArray<PatternSearchResult> RunAsync(Document document, SemanticModel semanticModel, PatternSearch search)
 {
     var syntaxTree = semanticModel.SyntaxTree;
     var matcher = Matcher.Create(semanticModel, search);
     var matches = matcher.Run(syntaxTree);
     var results = matches.Select(m => PatternSearchResult.Create(search, document, m.NodeOrToken, m.Captures));
     return results.ToImmutableArray();
 }
        public static PatternReplacement Create(PatternSearch search, string newText)
        {
            if (search == null)
                throw new ArgumentNullException(nameof(search));

            if (newText == null)
                throw new ArgumentNullException(nameof(newText));

            return new PatternReplacement(search, newText);
        }
        public static PatternSearchResult Create(PatternSearch search, Document document, SyntaxNodeOrToken nodeOrToken, ImmutableArray<PatternCapture> captures)
        {
            if (search == null)
                throw new ArgumentNullException(nameof(search));

            if (document == null)
                throw new ArgumentNullException(nameof(document));

            return new PatternSearchResult(search, document, nodeOrToken, captures);
        }
 private PatternReplacement(PatternSearch search, string newText)
 {
     Search = search;
     NewText = newText;
 }