public void ExtractSnippets()
        {
            const int snippetTokensCount = 12;

            var syntaxTree     = CSharpSyntaxTree.ParseText(CommonTestData.SimpleProgramWithMethodAndProperty);
            var syntaxTreeRoot = syntaxTree.GetRoot();
            var tokens         = syntaxTreeRoot.GetTokens().Select(t => new CSharpToken(t)).ToList();

            var extractor = new SnippetsExtractor();
            var converter = new TokensKindsConverter();
            var snippets  = extractor.GetSnippets(tokens, snippetTokensCount, converter).ToList();

            Assert.AreEqual(tokens.Count - snippetTokensCount + 1, snippets.Count);
            foreach (var snippet in snippets)
            {
                Assert.AreEqual(SnippetType.TokensKinds, snippet.SnippetType);
                Assert.AreEqual(snippetTokensCount, snippet.TokensCount);
                Console.WriteLine(snippet);
            }

            var lastTokens = tokens.TakeLast(snippetTokensCount).ToList();
            var hasher     = SnippetsExtractorOptions.Default.SequenceHasher;

            foreach (var token in lastTokens)
            {
                hasher.Enqueue(converter.Convert(token));
            }

            Assert.AreEqual(hasher.GetCurrentHash(), snippets.Last().Hash);
        }