You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by ni...@apache.org on 2022/11/21 01:41:04 UTC

[lucenenet] branch benchmarkdotnet updated (9cd340871 -> 549070d7a)

This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a change to branch benchmarkdotnet
in repository https://gitbox.apache.org/repos/asf/lucenenet.git


    omit 9cd340871 BenchmarkDotNet: added NamespacePatch.cs file to define namespaces that didn't exist in old versions of Lucene.NET
    omit 81fbc8719 BenchmarkDotNet: Centralized build configuration logic so we can add a new version in just one place. Also, include a LocalBuild in the benchmarks so we can compare to the current source code.
    omit 3b492e46e Added benchmarks for 4.8.0-beta00014
    omit efaea5360 Added benchmarks for 4.8.0-beta00013
    omit 1b2695e48 Lucene.Net.Tests.BenchmarkDotNet.SearchFilesBenchmarks: Increased number of iterations from 1000 to 2000 for better accuracy
    omit 9d54f2021 Lucene.Net.Tests.BenchmarkDotNet: Added benchmarks for 4.8.0-beta00012
    omit fbdface6f Added benchmarks for facet operations using Lucene.Net.Demo.Facet classes as a basis
    omit 5499af945 Lucene.Net.Tests.BenchmarkDotNet: Added jobs for 4.8.0-beta00011
    omit d55e8289c Lucene.Net.Tests.BenchmarkDotNet: Added benchmarks for IndexFiles and SearchFiles
    omit 3abbc6a80 Lucene.Net.Tests.BenchmarkDotNet: Updated HomePageScripBenchmarks to include beta 5, beta 6, and beta 10
    omit c994bf7c4 Adds simple benchmark between nuget versions
     add 89ef8e4c5 Dependencies.props: Updated J2N to 2.0.0-beta-0013 and RandomizedTesting.Generators to 2.7.8-beta-0001
     add d10bc9055 Lucene.Net.TestFramework: Removed random generation code from TestUtil in favor of using RandomizedTesting.Generators
     add 39a7bc70e Lucene.Net.TestFramework: Removed RandomizedTest stub class and move the methods into LuceneTestCase
     add 356ff151f Lucene.Net.TestFramework: Removed FEATURE_RANDOMIZEDCONTEXT and deleted all files related to randomizedtesting
     add 6bc648c3e Lucene.Net.TestFramework.Util.TestUtil: Renamed random method parameters, added aggressive inlining, added documentation
     add 4156f7a03 Lucene.Net.TestFramework: Changed references of RandomGaussian() to use RandomizedTesting.Generators. Also changed incorrect references to NextDouble() to use NextGaussian() where appropriate.
     add 227fc923f .github/workflows/Lucene-Net-Website.yml: Don't run action when adding/updating this YAML file
     add 92f4aefb2 .github/workflows/Lucene-Net-Website.yml: Run action whenever any nested file below websites/site is added/edited
     add 7d8383658 .github/workflows/Lucene-Net-Website.yml: Run job only if we are pushing to the main fork. All other forks will ignore this action.
     add 6d3301b44 Lucene.Net.TestFramework: Added Assert.Pass() method overloads
     add 50d22257c Lucene.Net.TestFramework, Lucene.Net.Support: Added [DebuggerStepThrough] attribute to all assertion methods so the debugger stops in the code that fails the assert not inside of the assert method
     add 27a390fe7 BREAKING: Marked public exception constructors that were meant only for testing internal (affects only .NET Framework)
     add 150f416f6 Added ExceptionExtensions class to Support to map catching and throwing Java exception types to their closest .NET equivalent. See #446.
     add 9eeb55bd4 Fixed test failures due to exception types and aliases being subsumed by the new exception types (much of this is just to keep tests green but will be removed again after the transition to the new exception handling).
     add cf7832321 Added Lucene.Net.Tests.AllProjects project so we can put the assembly scanning code in one place.
     add 920a31b2b publish-tests-results-for-test-projects: Added Lucene.Net.Tests.AllProjects
     add 79f37883e Lucene.Net.Store.AlreadyClosedException: For parity with Lucene, resurrected this exception type, but marked it internal, since we only want users to catch ObjectDisposedException
     add 6bbacc83c SWEEP: Reviewed all catch blocks where Lucene uses Throwable and converted them to use our IsThrowable() extension method (see #446).
     add e266fcf65 SWEEP: Reviewed all catch blocks where Lucene uses Error and converted them to use our IsError() extension method (see #446).
     add 7e41bbcac SWEEP: Reviewed all catch blocks where Lucene uses Exception and converted them to use our IsException() extension method (see #446). Added overload for printStackTrace() that accepts a TextWriter so we can specify another output.
     add 1e17e3ff0 SWEEP: Reviewed all catch blocks where Lucene uses IOException and converted them to use our IsIOException() extension method (see #446).
     add b159c16e8 BUG: Lucene.Net.Analysis.Common: Fixed jflex-generated tokenizers to use defensive checks to avoid IndexOutOfRangeException for control flow
     add dc0f6c5a1 Lucene.Net.Tests.Analysis.Common/Analysis/Miscellaneous/PatternAnalyzerTest: Added comment about removal of several lines of code that were there to work around JRE bugs.
     add 6e7518e9e Lucene.Net.Codecs.Memory.DirectPostingsFormat.LowFreqDocsEnumNoTF::NextDoc(): Added comment about refactoring the method to avoid IndexOutOfRangeException
     add 5b0b37d57 BREAKING: Lucene.Net.Facet.Taxonomy.Directory.DirectoryTaxonomyWriter:GetParent(): Changed logic to use proper guard clauses and changed exception type from IndexOutOfRangeException to ArgumentOutOfRangeException to be consistent with .NET.
     add 7f71d41c3 Lucene.Net.Store.ByteBufferIndexInput: Fixed some issues with our implementation of EnsureOpen() and refactored guard clauses to throw .NET argument exceptions and defensively check for out of range issues instead of catching exceptions and re-throwing them as a different exception.
     add 943a79b69 Lucene.Net.Analysis.Common.Analysis.Util.CharacterUtils: Corrected documentation and changed implementation to correctly throw ArgumentOutOfRangeException in cases where it is pertinent.
     add 148dac4bf Lucene.Net.Benchmark.ByTask.Feeds.SpatialDocMaker: Corrected comments about SpatialContextFactory throwing ArgumentNullException rather than NullReferenceException
     add d4b6dc000 Lucene.Net.Analysis.Common.Analysis.Util.BufferedCharFilter: Changed to use ArgumentNullException instead of NullReferenceException and fixed other guard clauses that throw ArgumentOutOfRangeException to show the correct messages.
     add 5a2e2e7c8 Lucene.Net.QueryParser.Classic.QueryParserBase::Escape(): Added guard clause and throw ArgumentNullException
     add 6b06b262d Lucene.Net.Search.ConstantScoreQuery: Changed guard clauses to throw ArgumentNullException rather than NullReferenceException
     add f78d28594 Lucene.Net.Search.Similarities.DFRSimilarity: Changed guard clauses to throw ArgumentNullException rather than NullReferenceException
     add 131cf4e67 BREAKING: Lucene.Net.Search.Weight.DefaultBulkScorer: Changed guard clause to throw an ArgumentNullException rather than a NullReferenceException
     add e83ccba4b BREAKING: Lucene.Net.Suggest.Jaspell.JaspellTernarySearchTrie.GetOrCreateNode(): Changed guard clause to throw ArgumentNullException instead of NullReferenceException
     add f0f102535 BREAKING: Lucene.Net.QueryParser.Flexible.Standard.Parser.EscapeQuerySyntaxImpl::ReplaceIgnoreCase(): Changed guard clause to throw ArgumentNullException rather than NullReferenceException
     add 9858ec1cf Lucene.Net.Codecs.BlockTerms.VariableGapTermsIndexReader: Changed exception messages to match the variable name they refer to, since it had been renamed previously
     add cc1682867 Lucene.Net.QueryParser.Flexible.Core.Processors.QueryNodeProcessor: Throw InvalidOperationException instead of NullReferenceException when QueryNodeProcessor.PostProcessNode returns null
     add 146365e0c Lucene.Net.Highlighter.PostingsHighlight.PostingsHighlighter: Throw InvalidOperationException rather than NullReferenceException when either GetFormatter() or GetScorer() return null.
     add 0e252fb71 Lucene.Net.Index.ConcurrentMergeScheduler::SetThreadPriority(): Commented out catch blocks that were only used to work around Java issues that don't exist in .NET.
     add 5e74eaed7 BREAKING: Lucene.Net.Util.ArrayUtil: Factored out ToInt32Array() method and marked Obsolete. It was only used in Lucene to convert Integer reference type wrapper classes to int[] arrays.
     add a571fff0e SWEEP: Reviewed all catch blocks where Lucene uses IllegalArgumentException and converted them to use our IsIllegalArgumentException() extension method (see #446).
     add 9935b2812 SWEEP: Fixed failing tests due to more strict checking on ArgumentException type and commented all places where we diverged to ArgumentNullException or ArgumentOutOfRangeException
     add 5a7ecb627 SWEEP: Reviewed all catch blocks where Lucene uses UnsupportedEncodingException and converted them to use our IsUnsupportedEncodingException() extension method (see #446).
     add 92f52d6cd SWEEP: Lucene.Net.Analysis.Common: Changed all guard clauses to use ArgumentOutOfRangeException and ArgumentNullException where appropriate
     add a0d174c84 SWEEP: Changed all guard clauses to use ArgumentOutOfRangeException and ArgumentNullException where appropriate
     add 17d967d0a SWEEP: Fixed failing tests due to more strict checking on ArgumentNullException type and commented all places where we diverged to ArgumentNullException or ArgumentOutOfRangeException
     add 0dee2d04f SWEEP: Reviewed all catch blocks where Lucene uses IllegalStateException and converted them to use our IsIllegalStateException() extension method (see #446).
     add 8fad824cd SWEEP: Reviewed all catch blocks where Lucene uses ParseException and converted them to use our IsParseException() extension method (see #446).
     add c539ab768 SWEEP: Reviewed all catch blocks where Lucene uses NumberFormatException and converted them to use our IsNumberFormatException() extension method (see #446).
     add 766303db2 SWEEP: Reviewed all catch blocks where Lucene uses NoSuchFileException || FileNotFoundException and converted them to use our IsNoSuchFileExceptionOrFileNotFoundException() extension method (see #446).
     add 8e6cd24a1 SWEEP: Reviewed all catch blocks where Lucene uses UnsupportedOperationException and converted them to use our IsUnsupportedOperationException() extension method (see #446).
     add 125e67c98 SWEEP: Reviewed all catch blocks where Lucene uses EOFException and converted them to use our IsEOFException() extension method (see #446).
     add 94f19e5a0 SWEEP: Reviewed all catch blocks where Lucene uses MissingResourceException and converted them to use our IsMissingResourceException() extension method (see #446).
     add d2ac7c41c SWEEP: Reviewed all catch blocks where Lucene uses NoClassDefFoundError and converted them to use our IsNoClassDefFoundError() extension method (see #446). Also, changed some catch blocks that were using TypeLoadException to use IsClassNotFoundException(), as there are places where they overlap.
     add 7a0a3940c SWEEP: Reviewed all catch blocks where Lucene uses ArithmeticException and converted them to use our IsArithmeticException() extension method (see #446).
     add 34f2a4f73 SWEEP: Reviewed all new instances of AssertionError in Lucene and replaced the exception that is thrown in Lucene.NET with Lucene.Net.Diagnostics.AssertionException (see #446).
     add 6740ceb08 SWEEP: Reviewed all catch blocks where Lucene uses AssertionError and converted them to use our IsAssertionError() extension method (see #446).
     add 28f74d356 SWEEP: Reviewed all catch blocks where Lucene uses IndexOutOfBoundException and converted them to use our IsIndexOutOfBoundsException() extension method (see #446).
     add 501d9ffc0 SWEEP: Reviewed all catch blocks where Lucene uses ArrayIndexOutOfBoundException and converted them to use our IsArrayIndexOutOfBoundsException() extension method (see #446).
     add a7e63af1b SWEEP: Reviewed all catch blocks where Lucene uses AlreadyClosedException and converted them to use our IsAlreadyClosedException() extension method (see #446).
     add 686cbf1e3 SWEEP: Reviewed all catch blocks where Lucene uses OutOfMemoryError and converted them to use our IsOutOfMemoryError() extension method (see #446).
     add 817bf7cf9 SWEEP: Reviewed all catch blocks where Lucene uses NoSuchDirectoryException and converted them to use our IsNoSuchDirectoryException() extension method (see #446).
     add 913124f56 SWEEP: Reviewed all catch blocks where Lucene uses NoSuchMethodException and converted them to use our IsNoSuchMethodException() extension method (see #446).
     add 7a59183e5 SWEEP: Reviewed all catch blocks where Lucene uses IllegalAccessException, InstantiationException, and InvocationTargetException and converted them to use our IsIllegalAccessException(), IsInstantiationException(), and IsInvocationTargetException() extension methods (see #446).
     add cc3b42918 Lucene.Net.Util.SPIClassIterator: Removed dead commented code
     add 6a4ea6641 SWEEP: Reviewed all catch blocks where Lucene uses ClassCastException and converted them to use our IsClassCastException() extension method (see #446).
     add 07fb2f4c0 Lucene.Net.Util.IOUtils: Removed dead commented code
     add 76f05cda9 SWEEP: Reviewed all catch blocks where Lucene uses InterruptedException and converted them to use our IsInterruptedException() extension method (see #446).
     add 0e1c8c25d Lucene.Net.Index.IndexWriterConfig: Removed try/catch for InvalidCastException since we have brought over the DocumentsWriterThreadPool from 4.8.1 and the cast is no longer required, thus cannot throw.
     add b2989c023 SWEEP: Reviewed all catch blocks where Lucene uses StackOverflowError and converted them to use our IsStackOverflowError() extension method (see #446).
     add 40eb84a45 SWEEP: Reviewed all catch blocks where Lucene uses AccessDeniedException and converted them to use our IsAccessDeniedException() extension method (see #446). Note that this exception was found only in Lucene 8.2.0 ported code.
     add df09a75e7 SWEEP: Reviewed all catch blocks where Lucene uses RuntimeException and converted them to use our IsRuntimeException() extension method (see #446).
     add be2c6e478 SWEEP: Updated all AssertionError and AssertionException creation references to call AssertionError.Create()
     add 361ae338a BUG: Lucene.Net.Codecs.Lucene41.Lucene41PostingsWriter: Throw CorruptIndexException instead of Exception (see #446).
     add 6fae529fb BUG: Lucene.Net.Codecs.Lucene45.Lucene45DocValuesProducer: Throw CorruptIndexException rather than Exception when format versions mismatch (see #446).
     add 9c7b65768 BUG: Lucene.Net.Codecs.Lucene45.Lucene45DocValuesProducer: Throw CorruptIndexException rather than Exception when there is index corruption (see #446).
     add a39b63b45 BUG: Lucene.Net.Index.IndexReader + Lucene.Net.IndexReaderContext: Throw AssertionError when subclassed directly by the wrong types (cannot happen without editing the source, but if it does these exceptions should not be swallowed) (see #446).
     add b49361f4c Lucene.Net.Search.BooleanClause: Changed exception to ArgumentOutOfRangeException if an invalid enum value is passed (see #446).
     add d1f384163 BUG: Lucene.Net.Store.Directory.SlicedIndexInput::ReadInternal(): Throw EndOfStreamException instead of Exception (see #446).
     add dbe8f7471 BUG: Lucene.Net.Store.NIOFSDirectory.NIOFSIndexInput::ReadInternal(): Throw EndOfStreamException instead of Exception (see #446).
     add 5fc0c358c BUG: Lucene.Net.Util.Packed.AbstractAppendingInt64Buffer: Throw InvalidOperationException rather than Exception when pending is null (see #446).
     add e4a89fd1f Lucene.Net.Util.Packed.BlockPackedReader::ctor(): Throw IOExeption rather than Exception when input is corrupted (see #446).
     add 41435a0d2 BUG: Lucene.Net.Util.Packed.MonotonicBlockPackedReader::ctor(): Throw IOException rather than Exception when input is corrupted (see #446).
     add 4e27e13f5 Lucene.Net.Util.IOUtils: Reverted ReThrow() and ReThrowUnchecked() to original implementation using our exception extension methods (see #446).
     add d0814fa85 BUG: Lucene.Net.Codecs.Compressing.CompressingStoredFieldsReader.DataInputAnonymousClass::FillBuffer(): Throw EndOfStreamException instead of Exception (see #446).
     add 627fb4842 Lucene.Net.Tests.Suggest.Analyzing.AnalyzingInfixSuggesterTest: Reverted LookupThread back to the original implementation, since ThreadJob handles propagating the error to the calling thread.
     add 731c0471a BUG: Lucene.Net.TestFramework.Analysis.ValidatingTokenFilter: Throw InvalidOperationException instead of Exception (see #446).
     add db40245af SWEEP: Changed all applicable Exception creation statements to RuntimeException.Create() (see #446).
     add 0bb6eb8c3 SWEEP: Changed all applicable ParseException creation statements to ParseException.Create() (see #446).
     add 025700327 SWEEP: Changed all applicable Error creation statements to Error.Create() (see #446)
     add 68c3f8f15 SWEEP: Changed all applicable EndOfStream creation statements to EOFException.Create() (see #446)
     add 11cb7ea36 SWEEP: Changed all applicable InvalidOperationException creation statements to ServiceConfigurationError.Create() (see #446)
     add 3a6020381 BUG: Lucene.Net.Analysis.Common.Util.CharArraySet: Throw NotSupportedException when the set is readonly, not InvalidOperationException to match .NET collection behavior (see #446).
     add a1da7e13b BUG: Lucene.Net.Codecs.Bloom.BloomFilteringPostingsFormat::FieldsConsumer(): Throw NotSupportedException rather than InvalidOperationException (see #446).
     add 69ddeae0a BUG: Lucene.Net.Codecs.Lucene42.Lucene42DocValuesProducer::LoadNumeric(): Throw AssertionError rather than InvalidOperationException (see #446).
     add a7ddb447a BUG: Lucene.Net.Store.CompoundFileDirectory::ReadEntries(): throw AssertionError rather than InvalidOperationException (see #446).
     add 3e348a393 BUG: Lucene.Net.Util.Packed.DirectPackedReader::Get(): Throw AssertionError rather than InvalidOperationException (see #446).
     add 1df867859 SWEEP: Changed all applicable InvalidOperationException creation statements to IllegalStateException.Create() (see #446).
     add 5fa8ebd46 BUG: Lucene.Net.Facet: Throw InvalidOperationException rather than ThreadStateException (see #446).
     add f35f41086 SWEEP: Changed all applicable NotSupportedException creation statements to UnsupportedOperationException.Create() (see #446)
     add 008b94ccf BUG: Lucene.Net.Grouping.BlockGroupingCollector: Throw NotSupportedException rather than InvalidOperationException (see #446)
     add 11ec19ae8 BUG: Lucene.Net.Tests.Index.TestUniqueTermCount: Throw NotSupportedException rather than InvalidOperationException (see #446)
     add 689f0fadd SWEEP: Changed all applicable TypeLoadException creation statements into ClassNotFoundException.Create() (see #446)
     add e0505c8ec Updated NoSuchMethodException with static factory methods and marked constructors Obsolete with instructions how to convert (see #446).
     add 5beb737d4 Updated NullPointerException with static factory methods and added documentation to explain how to convert (see #446).
     add 063eaa81c Updated IllegalArgumentException with static factory methods and added documentation to explain how to convert (see #446).
     add 7eb7d74d5 Updated IndexOutOfBoundsException, ArrayIndexOutOfBoundsException, and StringIndexOutOfBoundsException with static factory methods and added documentation to explain how to convert (see #446)
     add f692ac5b0 SWEEP: Changed all applicable ObjectDisposedException creation statements into AlreadyClosedException.Create() (see #446)
     add af335ffb8 SWEEP: Changed all applicable FormatException creation statements into NumberFormatException.Create() (see #446)
     add 48cdfa8af SWEEP: Changed all applicable OutOfMemoryException creation statements into OutOfMemoryError.Create() (see #446)
     add 55589e166 Updated NoClassDefFoundError with static factory methods and obsolete constructors (see #446).
     add 88cabada5 Updated StackOverflowError with static factory methods and obsolete constructors (see #446)
     add cce3a1ea6 SWEEP: Use ExeptionDispatchInfo to preserve stack trace details when we are not rethrowing inside of the catch block.
     add ac497f468 Lucene.Net.Util: Added LuceneSystemException to use as a general exception type.
     add 09d9899ed RuntimeException.Create(): Changed to return LuceneSystemException instead of Exception
     add 5a463000e build/Dependencies.props: Upgraded J2N to 2.0.0-beta-0015
     add f52fbe0d3 Fixed build warnings about ThreadJob.IsDebug being obsolete
     add bd0518738 Lucene.Net.Tests.Analysis.Common: Added missing System.Text.Encoding.CodePages dependency for .NET Core 2.1, as it is no longer a dependency of J2N.
     add f032f22a0 SWEEP: Changed all but the spatial module to throw J2N.Text.ParseException whereever Lucene thorws ParseException (see #446)
     add 0a3ceed55 ExceptionExtensions: Added support and tests for filtering types that correspond to RuntimeException in Java (see #446).
     add f308f49c8 Lucene.Net.Tests.Index.TestIndexWriterExceptions: Changed IndexerThread catch block to catch types that correspond to RuntimeException using our IsRuntimeException() extension method.
     add 5fb4f9aab ExceptionExtensions: Reviewed and removed some TODOs.
     add 2f86d953b TestExceptionExtentensions: Fixed issues with different target framworks that we test on.
     add 112623da2 .github/workflows: Geneated the file to run the tests in Lucene.Net.Tests.AllProjects.csproj
     add f7eac9d2d Lucene.Net.Analysis.Common.Analysis.Synonym.WordNetSynonymParser: Fixed line number in ParseException
     add 2b278b306 Lucene.Net.QueryParser.Flexible.Standard.Processors: Changed numeric processors back to using FormatException, because that is the expected parse error in .NET (see #446)
     add bf29f494e Lucene.Net.Spatial.Query.SpatialArgs: Fixed null guard clauses to throw ArgumentNullException (see #446)
     add e3c451a92 Lucene.Net.Search.TimeLimitingCollector: Removed invalid comment
     add 6747c408c Lucene.Net.Store.AlreadyClosedException: Restored header comment explaining why the code is commented and updated it with information about ExceptionExtensions
     add 29381d5d6 Lucene.Net.Util.LuceneSystemException: Use Message rather than ToString() to build wrapped exception to prevent unnecessary stack trace overhead
     add da70e1e4d Lucene.Net.Join: Moved entire namespace to Lucene.Net.Search.Join to match Lucene. Added duplicates of the public types in Lucene.Net.Join and marked them Obsolete and hidden from Intellisense so this is not a breaking change.
     add 2b1fff5fe BREAKING: Changed all Cardinality() methods into properties named Cardinality. Types affected: FixedBitSet, Int64BitSet, OpenBitSet, PForDeltaDocIdSet, RandomAccessOrds, WAH8DocIdSet. Added obsolete extension methods for each type in the same namespace as each type, but do note this only works if the namespace is imported at the top of the file.
     add 807ce0bed Lucene.Net.Support: Factored out BitArrayExtensions and replaced all occurrences of BitArray with BitSet. Removed FEATURE_BITARRAY_COPYTO.
     add 7582412be Improved GroupingSearch Search API and added GroupByField and GroupByFunction methods.
     add d00f94857 Added 8 more grouping tests and improved existing grouping tests.
     add 208cc218f Fixed XML comment with unresolvable cref attribute i FunctionAllGroupsCollector
     add 6f251db29 Removed a stray line of code from several recently submitted Grouping Tests
     add f84da4e1c Merge branch 'master' into Grouping_improvements__2
     add c2efce7a8 Lucene.Net.Tests.Grouping.TestGroupingExtra: Use TEST_VERSION_CURRENT instead of LuceneVersion.LUCENE_48
     add ae6f60996 Lucene.Net.Grouping.GroupingSearch::Search(): Fixed typo in error message and throw InvalidOperationException
     add c1ed9275d Lucene.Net.Grouping: Replaced LUCENET with LUCENENET in comments
     add 221fa4ae4 Merge pull request #475 from rclabo/Grouping_improvements__2
     add 36dcd7ecc BREAKING: Lucene.Net.Index.Term: Changed Text() method into Text property. Added an obsolete Text() extension method to Lucene.Net.Index for backward compatibility.
     add ad573c667 Lucene.Net.Documents.FieldType::Freeze(): Changed from void return to return this FieldType. Chained the Freeze() method in all static field initializers of Field subclasses to eliminate extra helper load methods. Marked BinaryDocValuesField.fType static field obsolete and added TYPE static field as it was in Lucene.
     add 26c8c6cf0 Lucene.Net.Index.ReadersAndUpdates: Changed to use BinaryDocValuesField.TYPE instead of BinaryDocValuesField.fType.
     add fb047407d BREAKING: Changed all GetFilePointer() methods into properties named Position to match FileStream. Types affected: IndexInput, IndexOutput. Added obsolete extension methods for each type in Lucene.Net.Store, but do note this only works if the Lucene.Net.Store namespace is imported at the top of the file.
     add 528f26234 BREAKING: Lucene.Net.QueryParser: Factored out NLS/IMessage/Message support and changed exceptions to use string messages so end users can elect whether to use .NET localization or not
     add 60d1b8283 BREAKING: Lucene.Net.QueryParsers.Flexible.Messages: Removed entire namespace, as we have refactored to use .NET localization rather than NLS
     add b8f9d05d5 BREAKING: Lucene.Net.Util: Removed BundleResourceManagerFactory and IResourceManagerFactory, as these were only to support NLS
     add c15328f68 Lucene.Net.QueryParsers.Flexible.Core.Messages: Redesigned QueryParserMessages.cs so that it is just a facade around a IResourceProvider implementation that provides the actual fallback logic. Added a QueryParserResourceProvider implementation that can be passed zero to many ResourceProvider instances to override and optionally localize the default resource messages.
     add 07f9e29a8 BUG: Changed all references that were float.MinValue and double.MinValue to float.Epsilon and double.Epsilon because those are the .NET equivalent constants to Float.MIN_VALUE and Double.MIN_VALUE in Java
     add d324a3684 Improved debugger experience for BytesRef.  In addition to the decimal bytes values it now shows the BytesRef as a Utf8String.  If the BytesRef is not a Utf8 string that representation will just be gibberish.
     add 67c0c6ba9 Added needed using statement.
     add a525c9b8d Fix SonarQube's "Any() should be used to test for emptiness" / Code Smell
     add b03b93683 Lucene.Net.Grouping: Added comments to change !Any() to .Count when IEnumerable<T> is factored out
     add 0446f8e4c build/Dependencies.props: Upgraded J2N package dependency to 2.0.0-beta-0016
     add ddddf53d4 Lucene.Net.Highligher.VectorHighlight.FieldPharseList: Fixed ambiguous Number reference.
     add 40ca6f8cd Lucene.Net.Support: Factored out Number class in favor of using J2N's parsers and formatters
     add d50da0e52 Lucene.Net.Highlighter: Implemented IFormattable and added culture-aware ToString() overload to WeightedPhraseInfo and WeightedFragInfo
     add 9de7ffc14 BREAKING: Lucene.Net.Highlighter.VectorHiglight.ScoreOrderFragmentsBuilder.ScoreComparer: Implemented singleton pattern so the class can only be used via the Default property.
     add a13010517 PERFORMANCE: Lucene.Net.Highlighter: Use RemoveAll() extension method rather than allocating separate collections to track which enumerated items to remove.
     add 1da0c5fb0 SWEEP: Factored out Lucene.Net.Support.Time in favor of J2N.Time. Replaced all calls (except Lucene.Net.Tests.Search.TestDateFilter) to Environment.TickCount and Time.CurrentTimeMilliseconds() to use Time.NanoTime() / Time.MillisecondsPerNanosecond for more accurate results. (fixes #492)
     add c73ffd12b PERFORMANCE: SWEEP: Replaced Substring method where appropriate with the overloads of number class Parse/TryParse that accept startIndex and length
     add 0e4795f23 Lucene.Net.Analysis.Phonetic, Lucene.Net.TestFramework: Reduced dependency on Lucene.Net.Support.CollectionExtensions by calling ExceptWith instead of CollectionExtensions.RemoveAll()
     add 0d9abf64c Lucene.Net.Support.CollectionExtensions: Made more efficient RemoveAll() method and added RetainAll() for use in rare circumstances when we want to do set actions on ICollection<T>
     add a147f676a Lucene.Net.Benchmark: Use RetainAll() for better efficiency
     add d58ed592d Lucene.Net.Support.ListExtensions::SubList(): Factored out in favor of J2N's GetView() method
     add 68e8e48dd BREAKING: Lucene.Net.QueryParser.Flexible.Core.Nodes.IQueryNode: Added RemoveChildren() method from Lucene 8.8.1 to fix broken RemoveFromParent() method behavior (applies patch LUCENE-5805).
     add 15549f854 BREAKING: Lucene.Net.QueryParser.Flexible.Core.Nodes.IQueryNode: Added TryGetTag() method to simplify looking up a tag by name.
     add a9ada86f2 PERFORMANCE: Lucene.Net.Util.UnicodeUtil::ToString(): Updated to cascade the call to Character.ToString()
     add 4641653b8 BUG: Lucene.Net.Tests.Search.TestMultiThreadTermVectors: Removed stray [Test] attribute that was causing extra overhead with no benefit
     add bd31fa50f BUG: Fixed several tests that were still using Environment.TickCount. TestSearcherManager was using it in combination with Time.NanoTime() / Time.MillisecondsPerNanosecond which caused the test to run forever.
     add 0dadd00d2 Addeded additional "Building and Testing" info to the repo's readme file.
     add 0d8d6c839 Merge pull request #508 from rclabo/ReadMe.md_improvements
     add 5dda3cfc9 azure-pipelines.yml: Updated to use latest version of macOS and Linux for tests
     add 2b344a86f build.ps1: Added --blame-hang-timeout of 15 minutes to help detect deadlocks
     add c2898caf2 Upgraded all build scripts (Azure DevOps, GitHub Actions, local) to use .NET 5.0 SDK 5.0.400, .NET 3.1 SDK 3.1.412 and .NET 2.1 SDK 2.1.817
     add 86245be59 Two additional ControlledRealTimeReopenThread tests Added two additional demonstration tests for ControlledRealTimeReopenThread that make it easier to see how to use the class.  One of the tests, TestMultithreadedWaitForGeneration, demonstrates that the current implemention of the ControlledRealTimeReopenThread class is flawed when used in multi-thread situations. This test will fail currently but I will then add another commit that improves the ControlledRealTimeReopen [...]
     add 0219868b8 Minor tweak to fix a change I didn't mean to commit
     add 289c5858c Updated two new tests to use TEST_VERSION_CURRENT
     add 564792c0f Trivial change to trigger github action for PR
     add f7ad34fed Trivial change to non test to run github action
     add 196192824 Re-ported ControlledRealTimeReopenThread to fix The exising port of ControlledRealTimeReopenThread exhibited threading issues.  I constructed a test TestMultithreadedWaitForGeneration which demonstrated the threading issue and falls with the curent port class. To make this test pass I re-ported the ControlledRealTimeReopenThread to more faithly follow the java implementation.
     add ca9850e05 Added Dispose(b) to ControlledRealTimeReopenThread Added back a Dispose(bool) method to the ControlledRealTimeReopenThread class since it's a non-sealed class.
     add 4457227f8 Merge pull request #513 from rclabo/ControlledRealTimeReopenThread_Work
     add 57bd82bf6 BUG: README.md - fixed broken example Fixed an example that perviously worked but no longer does.  The improved example works without error.
     add 1cd39433d Merge pull request #517 from rclabo/2021_08_Improved_README_md
     add 58c93bbcd SWEEP: Optimized embedded resource references using glob patterns
     add 265ab1b44 .github/workflows/Generate-TestWorkflows.ps1: Fixed trigger for GitHub Action paths to include all externally referenced CS and embedded resource files
     add 96b9b7b30 Lucene.Net.Tests.Search.TestControlledRealTimeReopenThread: Added Ignore and AwaitsFix attributes to TestStraightForwardDemonstration() and TestMultithreadedWaitForGeneration(), since they are failing on macOS
     add 1c1f53266 Revert "Lucene.Net.Tests.Search.TestControlledRealTimeReopenThread: Added Ignore and AwaitsFix attributes to TestStraightForwardDemonstration() and TestMultithreadedWaitForGeneration(), since they are failing on macOS"
     add a3ef85c0c Revert "Bug Fix: Re-ported ControlledRealTimeReopenThread and added 2 new tests"
     add 0d223f204 SWEEP: Changed test framework for .NET Standard 2.0 from netcoreapp2.1 to net461
     add b446f84d5 BUG: Lucnene.Net.Tests.Index.TestDocumentsWriterStallControl: Changed to use Thread.Yield() instead of Thread.Sleep(0) to match Lucene. This was a workaround for .NET Standard 1.x that is no longer applicable.
     add 4d13c36c8 SWEEP: Removed FEATURE_THREAD_YIELD and changed all calls to use Thread.Yield() instead of Thread.Sleep(0)
     add beb697ca2 SWEEP: Removed FEATURE_THREAD_PRIORITY, since it only applied to .NET Standard 1.x
     add 2dc1c372a BUG: Lucene.Net.Tests.Index.TestIndexWriterWithThreads::TestRollbackAndCommitWithThreads(): Restored original NullReferenceException catch blocks that were in Lucene due to random test failures.
     add fe3128c05 Lucene.Net.Tests.Index.TestAddIndexes: Updated error handling to use our extension methods and use printStackTrace() to log errors
     add 70cd8b87a Lucene.Net.Tests.Index.TestIndexWriter: Added Timeout and Deadlock attributes to TestThreadInterruptDeadlock() and TestTwoThreadsInterruptDeadlock(), since they sometimes hang
     add 1fe3b485e Lucene.Net.Support.WeakDictionary: Changed WeakKey to use WeakReference<T> instead of WeakReference to avoid problems with garbage collection (see #506).
     add ddfb7b210 Lucene.Net.Support.WeakDictionary: Changed backing collection from J2N.Collections.Generic.Dictionary<TKey, TValue> to ConcurrentDictionary<TKey, TValue> to allow reap to function while doing a forward iteration through the collection.
     add 89bad64c3 BUG: Lucene.Net.Index.IndexReader: Use ConditionalWeakTable/WeakDictionary to ensure dead elements are pruned and garbage collected (fixes #506).
     add 69fc48ebd SWEEP: Added tests for net6.0
     add c95da24b3 SWEEP: Added target for net6.0
     add ecbe43735 README.md, websites/site/index.md: Updated docs to include .NET 6.0
     add ce244dd10 Lucene.Net.Tests.Index.TestAddIndexes: Updated NullReferenceException error checking to use IsNullPointerException() instead (which covers the expected ArgumentNullException case)
     add 8ebd83090 Removed .NET Standard 1.x Features (#523)
     add d7a68e4ef Lucene.Net.Index.IndexWriter: Removed call to ThreadJob.Interrupted() which internally calls Thread.Sleep(0) which was causing performance issues and deadlocks during IndexWriter.Dispose()
     add 3144ba76a Removed [Deadlock] attribute from tests that were deadlocking due to extra Thread.Sleep(0) call in IndexWriter.Dispose().
     add b1e0eec67 SWEEP: Added Lucene.Net.Util.ThreadInterruptedException and re-throw it in all of the places that Lucene does.
     add dd89a4fcf Lucene.Net.Support.Threading: Created UninterruptableMonitor class to handle entering locks without throwing System.Threading.ThreadInterruptedException (which is what happens in Java)
     add 19cb0c1d8 SWEEP: Lucene.Net: Changed all lock statements to UninterruptableMonitor.Enter and UninterruptableMonitor.Exit to prevent ThreadInterruptedException from occurring when entering a lock.
     add 152ffe658 SWEEP: Lucene.Net.TestFramework: Changed all lock statements to UninterruptableMonitor.Enter and UninterruptableMonitor.Exit to prevent ThreadInterruptedException from occurring when entering a lock.
     add 7c357e78a SWEEP: Changed all lock statements to UninterruptableMonitor.Enter and UninterruptableMonitor.Exit to prevent ThreadInterruptedException from occurring when entering a lock.
     add b5ce51104 Lucene.Net.Index.DocumentsWriter::UnlockAllAfterAbortAll() Added missing when clause on catch block
     add 3dcffb292 Lucene.Net.Tests.Index.TestIndexWriter: Removed [AwaitsFix] attribute from TestThreadInterruptDeadlock() and TestTwoThreadsInterruptDeadlock(), since they now are passing
     add 5736c97b8 BREAKING: Lucene.Net.Analysis.Stempel.Egothor.Stemmer.MultiTrie: Changed protected m_tries field from List<Trie> to IList<Trie>
     add 796aa12e0 BREAKING: Lucene.Net.Search.BooleanQuery: Changed protected m_weights field from List<Weight> to IList<Weight>
     add 74a574f8f BREAKING: Lucene.Net.Search.DisjunctionMaxQuery: Changed protected m_weights field from List<Weight> to IList<Weight>
     add 972d1f50d SWEEP: Changed all instances of System.Collections.Generic.List<T> to J2N.Collections.Generic.List<T>, which is structurally equatable and structurally formattable.
     add 2e8fb68a1 Lucene.Net.Util.ListExtensions: Added optimized path for J2N.Collections.Generic.List<T> in AddRange and Sort methods
     add dd7ed62e9 BUG: Lucene.Net.Tests.Suggest.Suggest.Analyzing.TestFreeTextSuggester::TestRandom(): LookupResult calculation in the test was using different order of parentheses than the production code. This bug existed in Java, but apparently the order makes no difference on that platform. This test was getting a false positive because it was using List<T>.ToString() to make the result comparison, which J2N's List<T> corrects.
     add b02fb28d3 BUG: Lucene.Net.Search.TestBooleanQuery::TestBS2DisjunctionNextVsAdvance(): Use Assert.AreEqual instead of Asssert.IsTrue with == to fix floating point comparison on x86 .NET Framework with optimizations enabled.
     add 8e5ecafa4 BUG: Lucene.Net.Search.FuzzyTermsEnum: Compare using Lucene.Net.Util.NumericUtils.SingleToSortableInt32() to prevent test failures on x86 .NET Framework. This fixes Lucene.Net.Search.TestBooleanQuery.TestBS2DisjunctionNextVsAdvance(), Lucene.Net.Search.TestFuzzyQuery.TestTieBreaker(), and Lucene.Net.Sandbox.Queries.TestSlowFuzzyQuery.TestTieBreaker(). See #269.
     add 266afb355 BUG: Lucene.Net.Search.TopScoreDocCollector: Compare using Lucene.Net.Util.NumericUtils.SingleToSortableInt32() to prevent test failures on x86 .NET Framework. This fixes Lucene.Net.Search.TestTopDocsMerge::TestSort_1(), Lucene.Net.Search.TestTopDocsMerge::TestSort_2(), and Lucene.Net.Search.TestSearchAfter.TestQueries(). See #269.
     add f6c668d56 BUG: Lucene.Net.Sandbox.Queries.SlowFuzzyTermsEnum::Accept(): Compare using Lucene.Net.Util.NumericUtils.SingleToSortableInt32() to prevent test failures on x86 .NET Framework. This fixes Lucene.Net.Sandbox.Queries.TestSlowFuzzyQuery.TestTokenLengthOpt(). See #269.
     add 96403bc70 Lucene.Net.Sandbox.Queries.FuzzyLikeThisQuery: Compare using NumericUtils.SingleToSortableInt32() to prevent test failures on x86 .NET Framework. See #269.
     add cb4bc0c5a SWEEP: Lucene.Net: Use NumericUtils.SingleToSortableInt32() to compare floating point numbers (except in cases where we are testing for whole numbers).
     add bfa4c6856 BUG: Lucene.Net.Expressions.ScoreFunctionValues::DoubleVal(): Assigning float to double loses precision in x86 .NET Framework. Do an intermediate cast to decimal to fix Lucene.Net.Expressions.TestExpressionSorts::TestQueries(). See #269.
     add d89d02af6 Lucene.Net.Expressions.ExpressionComparer: Use J2N.Collections.Generic.Comparer<double> to ensure we use the same comparison logic as in Java.
     add 6632a68d2 azure-pipelines.yml: Decreased maximum allowed failures to 2 on all test jobs
     add af5dd2d45 build/Dependencies.props: Downgraded minimum dependency requirement of Microsoft.Extensions.Configuration components on .NET 6 to 2.0.0.
     add ff4f6e0a7 build/Dependencies.props: Changed SystemTextEncodingPagesPackageVersion_NET4_6_1 MSBuild property to SystemTextEncodingPagesPackageVersion with a condition
     add 4ca983b2b azure-pipelines.yml, run-tests-on-os.yml: Upgraded to use .NET 6 RC2 SDK for building and testing
     add 11cb068d3 build/Dependencies.props: Upgraded ICU4N to 60.1.0-alpha.355, J2N to 2.0.0-beta-0017, Morfologik to 2.1.7-beta-0004, and RandomizedTesting.Generators to 2.7.8-beta-0002
     add 942e2abcf README.md: Corrected the build.bat filename.
     add 8bca375b0 SWEEP: Added missing license headers
     add f68cbb3ef Revert "Lucene.Net.Support.WeakDictionary: Changed backing collection from J2N.Collections.Generic.Dictionary<TKey, TValue> to ConcurrentDictionary<TKey, TValue> to allow reap to function while doing a forward iteration through the collection."
     add fa50988c5 BUG: build/build.ps1: Added special case for running Lucene.Net.Tests.CodeAnalysis only on .NET 5.
     add 73b1de17c BUG: build/build.ps1: Fixed special case to only test on .NET Framework 4.8 and not on .NET Framework 4.6.1 (which is just to test .NET Standard 2.0 support)
     add 671cb83b3 README.md: Added recommendation to close Visual Studio before running a command line build
     add 2023eda90 website: Added release notes for 4.8.0-beta00015
     add 9e8477215 run-tests-on-os.yml: Added JobId so to the artifact name so re-running a failed test job will succeed if the artifact exists
     add 2f67981c4 azure-pipelines.yml: Use macOS-10.14 instead of macOS-latest to prevent PlatformNotSupported and FileNotFoundException that appear to be related to the test fixture (we get no failed tests and they complete, but the run crashes)
     add f819eb92c Website build automation (#533)
     add ae7d8444f website: Updated release notes for 4.8.0-beta00015
     add 9bc250c83 website: Updated release procedure to include putting the release notes on the website and made several improvements
     add 96dc74cbd website: Added download page for 4.8.0-beta00015
     add 3ed43dc99 src/docs/LuceneDocsPlugins/LuceneNoteTokenRendererPart.cs: Changed internal/experimental messages to match Lucene
     add f5792a0d8 docs: Updated version-specific files to 4.8.0-beta00015
     add eb2ab5d5d Lucene.Net.sln: Added websites project to the solution and removed broken apidocs project
     add 7ee09cf8a website: Added API docs link for 4.8.0-beta00015
     add 3dfbc18ab README.md: Updated version numbers to 4.8.0-beta00015
     add eedd4dd25 Lucene.Net.Replicator.Http.HttpClientBase: Updated to include 4.8.1 changes
     add 302a3c65f BREAKING: Lucene.Net.Replicator.Http.HttpClientBase: Increased timeout from 1000 ms to 100 s. Renamed DEFAULT_CONNECTION_TIMEOUT to DEFAULT_TIMEOUT and ConnectionTimeout property to Timeout to match HttpClient. Fixes #363.
     add 594d6b6df Lucene.Net.Replicator.HttpClientBase: Use a stream wrapper to consume and dispose the stream when there are no more bytes to read.
     add 59caa862a Lucene.Net.Replicator.HttpClientBase: Factored out Execute() into a separate shared method.
     add e58266ae6 SWEEP: Lucene.Net.Replicator: Reviewed and updated exception catch and throw statements to match Lucene
     add 65ab43cdf Lucene.Net.Tests.Replicator.Http.HttpReplicatorTest: Added TestServerErrors() test from 4.8.1
     add 2bd1f2c2e Lucene.Net.Replicator.ReplicationClient: Refactored to use ThreadJob so exceptions are re-thrown on the calling thread. Added missing locks.
     add be44d86a3 BREAKING: Lucene.Net.Replicator.Http:HttpClientBase: Renamed ResponseInputStream() overloads GetResponseStream() per .NET conventions.
     add 03bc03bb5 Lucene.Net.Tests.Replicator: Removed all Timeout and Deadlock attributes, since changing to a ThreadJob implementation in ReplicationClient has resolved the issues with both TestConsistencyOnExceptions() tests
     add 7a1d7390f azure-pipelines.yml: Upgraded from macOS-10.14 to macOS-10.15
     add 465848686 BUG: Lucene.Net.Tests.TestFramework.DependencyInjection: Suppress all codecs that the test framework instantiates using Codec.ForName() because these are not available in the dependency injection example.
     add 89a4e0a76 BUG: Lucene.Net.Tests.Grouping.TestGroupingExtra: Added [SuppressCodecs] attribute for Lucene3x because the tests write doc values, which aren't supported.
     add dc4958f06 BUG: Modified all TermsEnum.MoveNext() methods to return a check for null term rather than simply returning true, which is invalid if the term is null
     add 0b1dfc8bf BUG: Lucene.Net.TestFramework.Index.BasePostingsFormatTestCase: Removed IndexOptions.NONE from the list of available options, since this option is not valid for the tests (it was added as a placeholder for null).
     add 7308bc107 Lucene.Net.TestFramework.Search.CheckHits::CheckHitCollector(): Removed unnecessary call to Convert.ToInt32 and simplified collection initialization.
     add 206affcae BUG: Lucene.Net.Grouping.Term.TermAllGroupHeadsCollector: Use NumericUtils.SingleToSortableInt32() to compare floating point numbers (fixes AllGroupHeadCollectorTest.TestRandom() on .NET Framework x86)
     add cf727f421 BUG: Lucene.Net.Tests.Util.TestPriorityQueue: Fixed issues with comparers after introducing J2N.Randomizer, which produces negative random numbers.
     add 1383437a6 BUG: Lucene.Net.Codecs.SimpleText.SimpleTextFieldsReader::NextDoc(): Assert was using BytesRef.Utf8ToString(), which was causing exceptions when the BytesRef didn't contain valid UTF8. Changed to use BytesRefFormatter, which defers the call to convert the BytesRef until after the assert fails.
     add cc7691807 BUG: Lucene.Net.Util.Automation.MinimizationOperations::MinimizeHopcroft(): Fixed call to OpenBitSet.Clear() to specify one past the end index as per the docs. This was causing Lucene.Net.Codecs.Lucene41.TestBlockPostingsFormat3.Test() to fail randomly.
     add c296087c4 Lucene.Net.Util: Added TODOs about fixing the APIs of OpenBitSet and FixedBitSet to use index and length rather than startIndex and endIndex.
     add 9a39013ba BUG: Lucene.Net.Tests.QueryParser.Flexible.Standard.TestQPHelper: Use ParseExact to specify the date format to parse, so it works across cultures. See: https://github.com/dotnet/runtime/issues/61708#issuecomment-971116350
     add c14848be0 BUG: Lucene.Net.Util.Fst.TestFSTs::TestExpandedCloseToRoot(): Use StringComparer.Ordinal to sort in the strings without culture sensitivity.
     add cf4d49be5 BUG: Added StringComparer.Ordinal to all Sort() calls on string arrays and lists to override culture-sensitive sorting when it isn't needed.
     add 1835a8ee7 BUG: Lucene.Net.Suggest.Jaspell.JaspellTernarySearchTree: Lazy initialize a J2N.Randomizer() instance so we hit both paths approximately evenly instead of one path when deleting nodes recursively.
     add 50d8357e5 SWEEP: Exclude System.Runtime.CompilerServices from API scan globally
     add ba1d70bfa BUG: Lucene.Net.TestFramework.Util.TestUtil::RandomAnalysisString() J2N.Randomizer.Next(int) throws ArgumentOutOfRangeException when the argument is 0 (confirmed this is how it works in Java). So, we need to skip the method in that case and pass 0 through.
     add 485d53ed1 SWEEP: Made stateless private sealed comparers into singletons (unless they already have a static property)
     add 558e040f7 BREAKING: Lucene.Net.Misc: Made DocFreqComparer and TotalTermFreqComparer into static singletons, only accessible by the Default property.
     add fe55bd1b7 build/TestRefereneces.Common.targets: Added Microsoft.Extensions.Configuration packages for netcoreapp3.1
     add fcf001913 build/Dependencies.props: Upgraded Microsoft.Extensions.Configuration to 3.0.0
     add 6f1ea7022 Lucene.Net.TestFramework: Fixed random seed functionality so it is repeatable (Fixes #288) (#547)
     add 54c9a76ea Patch for BlendedInfixSuggester to solve ArgumentNullException (#548) (fixes #527)
     add b613ad427 Cleaned up calls to UninterruptableMonitor.RestoreInterrupt(), which has already been removed.
     add 7097cb318 Lucene.Net.Index.TestIndexWriter, Lucene.Net.Support.Threading.TestUninterruptableMonitor: Ignore tests that call Thread.Interrupt(), as this is not supportable in .NET. Closes #544.
     add a7725fc9b docs: Changed info about Thread.Interrupt() to indicate it is not supported in Lucene.NET due to the high likelihood it could break a Commit() or cause a deadlock. Closes #526.
     add d6f10f7e7 Lucene.Net.Replicator.IndexAndTaxonomyRevision: Updated documentation.
     add d6f9f3ca7 BUG: Lucene.Net.Search.DisjunctionMaxScorer: .NET Framework x86 requires an explicit cast to float to prevent it from losing precision. Fixes #546.
     add fa40d1a44 BUG: Lucene.Net.Expressions.ScoreFunctionValues: Changed to explicit cast to (float) to prevent JIT from losing precision when assigning the value to double. Fixes Lucene.Net.Expressions.TestExpressionSorts::TestQueries().
     add a83654eec Lucene.Net.Spatial.Prefix.SpatialOpRecursivePrefixTreeTest::TestContains(): Added [AwaitsFix] attribute (see #559)
     add 34d40e00f Lucene.Net.Spatial.Prefix.SpatialOpRecursivePrefixTreeTest::TestContains(): Fixed [AwaitsFix] attribute declaration
     add e35e814c1 Lucene.Net.Index.Test4GBStoredFields::Test(): Increased timeout from 20 to 25 min to allow nightly to complete the run
     add 586478073 BUG: Lucene.Net.QueryParser.Flexible.Standard: Fixed calendar and time zone handling on .NET Core (#551)
     add a7537bb69 BUG: Lucene.Net.Spatial.Prefix.SpatialOpRecursivePrefixTreeTest: Ported over patch from https://github.com/apache/lucene/commit/e9906a334b8e123e93b917c3feb6e55fed0a8c57 (from 4.9.0) (fixes #559).
     add ed8be60e8 Lucene.Net.Spatial.Prefix.SpatialOpRecursivePrefixTreeTest::TestContains(): Removed [AwaitsFix] attribute (see #559)
     add 494cdb4a9 build: Upgraded all automated tests to use 6.0.100 SDK
     add d576e0269 Lucene.Net.Index.TestDuelingCodecs::TestEquals(): removed [AwaitsFix] attribute
     add c7fbc2da1 Lucene.Net.Codecs.SimpleText.SimpleTextFieldsReader: Re-ported to rule out any logic problems that were introduced by rearranging the statements
     add 617ba9774 Lucene.Net.Codecs.SimpleText.SimpleTextFieldsWriter: Re-ported to rule out any logic problems that were introduced by rearranging the statements
     add 17ba5d33b Lucene.Net.TestFramework.Analysis.MockAnalyzer: Removed unnecessary nullable dictionary value
     add a80eaeb53 BUG: Lucene.Net.Codecs.BlockTreeTermsReader.IntersectEnum.Frame::Load(): Fixed issue with inverted logic on RunAutomaton.IsAccept() call that was causing random failures. Added a nightly regression test. (fixes #545)
     add 1458fe296 BUG: Lucene.Net.Search.TermScorer: Added cast to fix calculation in .NET Framework x86 with optimizations enabled (fixes #549 / Lucene.Net.Search.TestJoinUtil::TestMultiValueRandomJoin())
     add bef69cf0a BREAKING: Removed serializable support for most types. Commented old patch tests for LUCENENET-170 and LUCENENET-338, since they are no longer applicable. Added tests for serialization. Closes #275, closes LUCENENET-574.
     add 6d4495b42 Directory.Build.targets: Enabled FEATURE_SERIALIZABLE_EXCEPTIONS for all target frameworks
     add 6f9e42a44 SWEEP: Migrated all exception serialization tests to Lucene.Net.AllProjects and refactored to provide base classes for additional assembly scanning tests
     add 2f981ce10 Directory.Build.targets: Renamed FEATURE_SECURITYPERMISSIONS_HOSTPROTECTION to FEATURE_CODE_ACCESS_SECURITY to make it more generalize for SecurityPermissionAttribute and HostProtectionAttribute
     add 425c9d3ec Lucene.Net.Support.Threading.LimitedConcurrencyLevelTaskScheduler: Added Shutdown() method to prevent new work from being queued.
     add 00caabd8f BUG: Lucene.Net.Tests.Suggest.Spell.TestSpellChecker::TestConcurrentAccess(): Fixed hanging test issue due to timeouts on each thread rather than using a single timeout for the entire batch. Also fail the test if we go over 5 minutes, which will prevent us from hanging the test runner, but still give us a failure to investigate.
     add 17d1f49a6 Lucene.Net.Util.LuceneTestCase::NewSearcher(): Added missing event handler to stop the TaskScheduler service from accepting new work
     add f0ec41119 Lucene.Net.Support: Factored out ICallable<V> and ICompletionService<V> interfaces, as they are not needed
     add 142035c6c Lucene.Net.Field: Factored out protected number classes in favor of J2N's numbers classes. Changed the formatting of GetTokenStream() for numeric types to "J" format, which is faster to generate than "R" format, but will still round-trip.
     add 0f44778df BREAKING: Lucene.Net.Search.FieldComparer: Redesigned implementation to use reference types for numerics (from J2N) to avoid boxing (fixes #429)
     add 44196dbe4 PERFORMANCE: Lucene.Net.Search.NumericRangeQuery: Eliminated boxing when converting from T to the numeric type and when comparing equality
     add e5435e745 Lucene.Net.QueryParsers.Xml.Builders: Use J2N parsers for numeric types
     add ad64c0bfa Lucene.Net.Codecs.SimpleText.SimpleTextStoredFieldsReader: Use J2N numeric parsers
     add 2b4e8d1a9 Lucene.Net.Suggest.Jaspell.JaspellTernarySearchTrie: Use J2N numeric parser
     add eee32d056 PERFORMANCE: Lucene.Net.Suggest.Jaspell: Use J2N numeric types to eliminate boxing
     add c21786a46 PERFORMANCE: Lucene.Net.Search.FieldCache: Use J2N parsers and formatters
     add 5319120b3 PERFORMANCE: Lucene.Net.Classification.Utils.DatasetSplitter: Removed duplicate calls to field methods and stored values in local variables. Use default round-trip format from J2N.
     add b3fbb67f9 Lucene.Net.Codecs.SimpleText.SimpleTextStoredFieldsWriter: Use default round-trip format from J2N
     add b4942c8dc Lucene.Net.Queries: Changed all ObjectVal() methods to return J2N numeric types (fixes #428). Use J2N parsers and formatters.
     add 22eb29d7b Lucene.Net.Queries.Function: Compare floating point numbers for equality using raw bits.
     add 5c1310a50 BREAKING: Lucene.Net.Search.FieldCache.IParser: Renamed method from TermsEnum() to GetTermsEnum() to match other APIs
     add b42a9a6b6 Lucene.Net.Search.FieldCacheRangeFilter: Renamed anonymous class implementations to use the "AnonymousClass" suffix
     add be977b8be PERFORMANCE: Lucene.Net.Search.FieldCacheRangeFilter: Use HasValue and Value for nullable types rather casting and comparing to null
     add 285ae36d1 BREAKING: Removed unnecessary nullable value types (#574)
     add 4c5b94c83 BUG: Fixes #573. Changed segment names to match Lucene and Lucene.NET 3.x. This is a breaking change. Added a SegmentInfos.UseLegacySegmentNames to read 4.8.0-beta00001 thru 4.8.0-beta00015 indexes, which is false by default.
     add dd58a1ce8 BREAKING: Lucene.Net.Index.DocValuesFieldUpdates: Refactored so the subclasses will handle getting the values from DocValuesFieldUpdatesIterator or DocValuesUpdate via a cast rather than boxing the value. Also marked internal (as well as all members of BufferedUpdates), since this was not supposed to be part of the public API.
     add d29d0e50a Lucene.Net.Search.Join.ToParentBlockJoinCollector: Fixed nullable conversion issue - null was converted to -1 in Java, so we must use -1 when the item is not in the collection
     add afa60a058 BREAKING: Lucene.Net.Index.SegmentInfos: Changed Info() method into an indexer for the class to make it simpler to understand (we had Infos.Info(x).Info.Name, it is now Infos[x].Info.Name). Marked Info() obsolete.
     add 7d16fb7f0 Lucene.Net.Facet: Added culture-sensitve ToString() overload on FacetResult and LabelAndValue (#578)
     add 9e356b552 Lucene.Net.Index.TestIndexReaderClose::TestCloseUnderException(): Removed unused allocation from test loop
     add 6c322bca5 Lucene.Net.Support.Threading.ReaderWriterLockSlimExtensions: Deprecated, since this was only to support TaskMergeScheduler and allocating memory to eliminate a try/finally block is wasteful.
     add 787ac8944 BUG: Lucene.Net.Support.Collections.ReverseComparer<T>: Replaced CaseInsensitiveComparer with J2N.Collections.Generic.Comparer<T>. This only affects tests.
     add 0817ee98d Lucene.Net.Search.ControlledRealTimeReopenThread: Refactor to integrate changes from #513 (#572)
     add 3effcd5b8 Lucene.Net.Facet.DrillDownQuery: Added collection initializer so query can be populated in one statement and enumerated to get both its query clauses and dimensions
     add 46e243716 BREAKING: Lucene.Net.Documents.DateTools/Lucene.Net.QueryParser Updates (#580)
     add 8b8ec3ba6 BREAKING: Lucene.Net.Util.Fst: Added class constraint on all generics (#581)
     add 18e84c167 PERFORAMANCE: Lucene.Net.Search.FieldCacheRangeFilter: Added protected Equals(x, y) method to allow subclasses to compare equality for value types without boxing
     add 55ebd1ecb Lucene.Net.Expressions.SimpleBindings: Added collection initializer and updated DistanceFacetsExample and ExpressionAggregationFacetsExample to demonstrate usage.
     add 93cd1e99b BREAKING: Removed (more) unnecessary nullable value types (see #574 and #581) (#583)
     add 8ae11fd92 Lucene.Net.Util.RandomizedContext: Use an underscore to prefix the property name to hide it from Test Explorer
     add afc94c652 Lucene.Net.TestFramework: Changed RandomSeedAttribute to accept a string and adjusted LuceneRandomSeedInitializer to ignore any value after a colon, to allow future strings to have multiple seed values (as Lucene does) without breaking compatibility.
     add d3cf3de07 SWEEP: Removed TESTFRAMEWORK_MSTEST, TESTFRAMEWORK_NUNIT, TESTFRAMEWORK_XUNIT, FEATURE_INSTANCE_TESTDATA_INITIALIZATION, and FEATURE_INSTANCE_CODEC_IMPERSONATION compilation options
     add 4c65db129 Lucene.Net.TestFramework: Removed files and folders for Lucene.Net.TestFramework.NUnit, Lucene.Net.TestFramework.MSTest, and Lucene.Net.TestFramework.xUnit and moved NUnit Assert class into Lucene.Net.TestFramework project.
     add e3c7e053c BREAKING: Lucene.Net.TestFramework.Store.MockDirectoryWrapper: Renamed AssertNoUnreferencedFilesOnClose to AssertNoUnreferencedFilesOnDispose
     add 5f1b653f5 Lucene.Net.TestFramework.Util.LuceneTestCase: Updated XML doc comments on how to configure the random seed and culture via file, attribute, or environment variable.
     add 279fbb179 Lucene.Net.TestFramework.Store.MockIndexOutputWrapper::CheckDiskFull(): Completed implementation to write thread name and stack trace in Verbose mode.
     add dd7dc1822 Lucene.Net.TestFramework: Reviewed and removed some TODOs
     add 863410a20 LICENSE.txt, NOTICE.txt: Updated copyright date
     add 6e36a9dd5 lucene-cli: Upgraded from netcoreapp3.1 to net6.0
     add b1f3c6572 lucene-cli: Added embedded readme to NuGet package
     add 51d974014 build/build.ps1: Added function to update version info in docs/index.md using regex replace prior to packing
     add 11c6b8202 lucene-cli/docs/index.md: Updated prerequisites for lucene-cli to .NET 6.0 Runtime
     add e490e799d SWEEP: Updated NuGet packages with URLs for documentation, release notes, and a link back to the main Lucene.Net NuGet package.
     add 015c53789 Lucene.Net: Added embedded readme file for NuGet package
     add fe4c0ffdf Directory.Build.props: Added SourceLink support and deterministic builds: https://github.com/dotnet/sourcelink/blob/main/README.md
     add 17ccff2a9 website: Added source-stepping.md to describe how to allow the debugger to step into Lucene.NET code
     add ba899ccd4 Changed adjective describing 3.0.3
     add de419c7e5 Improved content of /contributing/source web page
     add 667131c52 Directory.Build.props: Migrated Dependencies.props reference here so it can conditionally select package reference versions based on target framework. Moved Source Link references here, too so the version numbers can be resolved.
     add 0a2c26638 Directory.Build.targets: Added private NuGet dependency on Microsoft.NETFramework.ReferenceAssemblies, which removes the prerequisite of .NET Framework 4.8 Developer Pack to run builds.
     add a3852df9c Add How to Setup Java Debugging page
     add 11e4c06a1 Moved build directory to .build, release to _artifacts, renamed build.ps1 > runbuild.ps1
     add ba1052ece .build: Upgraded psake build automation to 4.9.0
     add 9a25492ce .build/runbuild.ps1: Removed dependency on dotnet-install.ps1 and simply throw an exception if the .NET SDK doesn't meet the minimum version
     add 329c90add .gitattributes: Never checkout BASH scripts with Widows line endings
     add 0c56b7a88 Added bash script, build.ps1 script to process command arguments, and modified build.bat to only pass the arguments to build.ps1 without doing any processing, only checking for the existence of Powershell. Fixes #364.
     add ec80a8b46 Lucene.Net.sln: Added .rat-excludes to Solution Items
     add f990bd3d8 azure-pipelines.yml: Updated to correctly case version.props file for packaging, and to ignore build.bat because we no longer modify it during release
     add f1d4b46e1 run-tests-on-os.yml: Changed references from dotnet vstest to dotnet test in comments, log files, and display names
     add 71b981fc2 show-all-files.yml: Removed invalid doc comment
     add c47dd666d .build/runbuild.ps1: Track added files so they can be reverted if the build is cancelled
     add 9668f5aa9 .github/workflows/Generate-TestWorkflows.ps1: Updated to use .NET 6 SDK for all testing
     add 9d5cf50db .github/workflows/Generate-TestWorkflows.ps1: Removed special case code for projects that only have one test target framework
     add b489eb57b Revert ".github/workflows/Generate-TestWorkflows.ps1: Updated to use .NET 6 SDK for all testing"
     add 358d9cfbb run-tests-on-os.yml: Install SDKs for legacy targets, if necessary, but do so after we disable telemetry
     add bc6f14f31 .github/workflows: Regenerated workflows with original legacy SDK settings
     add 6aed19b42 .github/workflows: Updated website/documentation configs to use subdirectory glob patterns for paths.
     add 4ab69b8f2 website: Fixed codeclimber article broken links
     add 8935c26b0 Added gray boxes around images on "Setup Java Debugging" page.
     add 3d26ab8a3 Fixed "lines of code" indicated on source code page and linked to related image.
     add b00fb7337 Added welcome and more overview content, plus minor edits
     add 2fe5d3651 Fixed PR based on feedback
     add de810eac9 Fixed broken book link for Instant Lucene.NET
     add 27d08cb27 .build/dependencies.props: Upgraded J2N to 2.0.0
     add 33a2f2fba .build/dependencies.props: Upgraded ICU4N to 60.1.0-alpha.356
     add 4e0f81f00 .build/dependencies.props: Upgraded RandomizedTesting.Generators to 2.7.8
     add bd0394f10 .build/dependencies.props: Upgraded Morfologik to 2.1.7
     add 4a1dbd765 Lucene.Net.Tests (_E-I, _I-J): Shifted IndexWriter tests to I-J to balance the amount of time each test assembly takes to between 1 and 2 minutes
     add b030c4072 .github/workflows: Regenerated test templates for Lucene.Net.Tests._E-I and Lucene.Net.Tests._I-J
     add 7831b4ff0 BUG: Lucene.Net.TestFramework.Util.TestUtil::RandomAnalysisString(): Protect Randomizer.Next(int) overload from being called with 0, since it requires at least 1
     add fe6801296 BUG: Lucene.Net.Search.FieldCacheImpl.Cache<TKey, TValue>::Put(): Logic was inverted on innerCache so the value was being updated if exists, when it should not be updated in this case
     add e41e2a3db BUG: Lucene.Net.Search.FieldCacheImpl::Cache<TKey, TValue> (Put + Get): Fixed issue with InitReader() being called prior to adding the item to the cache when it should be called after
     add 5a2353093 PERFORMANCE: Lucene.Net.Support.IO.StreamExtensions::Read(Stream, ByteBuffer, long): Use a lock per stream so instances of NIOFSDirectory can run independently on separate threads without competing for a lock.
     add 32299570a Lucene.Net.Store: Changed documentation on FSDirectory implementations to pertain to .NET and removed the irrelevant Java-centric information.
     add 79c2729c7 lucene-cli + tests: added multi-targets for net6.0, net5.0, and netcoreapp3.1
     add 41ffbc7b5 .github/workflows: Regenerated workflows for lucene-cli tests
     add 52be291e6 Directory.Build.targets: Fixed project import references so they will work from nested solutions
     add 88f7953c1 src/docs/LuceneDocsPlugins: Upgraded to use new .csproj format and build tools (see #601)
     add 4de6ace49 websites/apidocs/docs.ps1: Upgraded project to use new .csproj format and .NET Core SDK build chain (see #601)
     add 8bcd2101f azure-pipelines.yml: Upgraded docs and website to use windows-latest (fixes #601)
     add 5900b3d08 .github/workflows/Lucene-Net-Documentation.yml: Added .NET 6 SDK setup prior to running docs.ps1
     add b7f8a501f Factored out WeakDictionary in favor of weak events using Prism.Core (#613)
     add 11806edbd SWEEP: Changed "== null" to "is null"
     add 9a6ebb582 .build/nuget.props: Updated release notes URL
     add ef70977f2 Lucene.Net.csproj: Exclude readme.md so we can edit the data manually in the NuGet.org portal
     add d0d1d5432 BREAKING: Lucene.Net.Spatial Updates (#619)
     add 72cf96e48 Lucene.Net.Expressions.JS.JavascriptCompiler: fixed doc comment code example (removed Put() and PutAll() references, which are internal)
     add cc1094e85 Lucene.Net.Documents.DateTools::StringToTime(string, NumericRepresentation): Updated doc comments to indicate upgrade path for prior Lucene.NET versions.
     add e6ca4a775 website: Added release notes for 4.8.0-beta00016
     add cd55e6ed3 Lucene.Net.Support.ExceptionHandling.Exceptions.ServletException: Added license header
     add 46673f9e1 .rat-excludes: Added exception for DateTimeOffsetUtil because it falls under a different license
     add bed207a81 LICENSE.txt: Added license info for 3rd party code and removed licenses for items that have been deleted from the Support folder
     add 5d81e4687 websites/site/contributing/make-release.md: Fixed build command, added step to review the LICENSE.txt file to ensure licenses are all included and authorized for use by Apache.
     add 9692a5b55 BUG: .build/runbuild.ps1: Add SYSTEM_DEFAULTWORKINGDIRECTORY environment variable if it doesn't exist to let the lucene-cli installation tests know where to scan for the NuGet package so it doesn't need to rebuild it.
     add f4280e61a BUG: build.ps1: Added missing prepareForBuild and backupFiles properties, which must be set to false when doing a distribution build (i.e. when the version.props file exists)
     add f1eefd8d9 website: Added download page for 4.8.0-beta00016
     add 2cfe0d7b2 Lucene.Net.Classification: Fixed hyperlinks in doc comments
     add 3b69393d4 lucene-cli docs: Updated version to 4.8.0-beta00016
     add 243976ce8 website: Added link for 4.8.0-beta00016 API docs
     add e0c9eaead website: Updated Lucene.Net.Codecs namespace documentation to demonstrate the registration using the Initialize() method rather than TestFrameworkSetUp() method.
     add e0c394bca docs: Lucene_Net_Codecs.md: Updated version in example to 4.8.0-beta00016
     add 72e55442f docs: Updated docs.ps1 and plugins to update the Changes link on the docs home page to point to the correct tag in the GitHub repository (fixes #621).
     add 11c10bd23 Docs: Updated View Source link to use current version tag rather than master branch
     add e75b86ecc BUG: Lucene.Net.Search.package.md: Corrected link to TooManyClausesException
     add 50dd72e23 PERFORMANCE: Lucene.Net.Index.BaseCompositeReader: Removed unnecessary list allocation
     add 74a7e2aef Update migration-guide.md
     add 67b28e4df BREAKING: Lucene.Net.IndexWriter.IEvent: Marked internal (as it was in Java). This interface is only used in non-public contexts by Lucene.
     add 2f285a89e Update StandardQueryParser.cs
     add d6f3c3e7a Update StandardQueryParser doc string
     add f60501728 SWEEP: Increased timeouts on tests to keep them from intermittently failing during nightly builds.
     add 101a15820 website: updated copyright in footer
     add b83d07c2a website: updated home page includig title, meta title, hero text, and install command.
     add d39b92b1d website: fixed home page responsive bug at 751px
     add 82774e35e website: bug fix so that Improve this Doc is always clickable.
     add 1132c8839 website: home page books are smaller now and fixed one books link so it's not just the kindle version.
     add 1ffe4f95a website: body font larger. Hyperlinks now brighter and provide better hover feedback. Body Hyperlinks now not same styles as main nav.
     add fe4da0020 website: New Quick Start area. Contains Index, Introduction, Tutorial & Learning Resources pages.
     add 3f9166913 Website: Converted smart quotes to regular quotes and other small tweaks related to code review.
     add 95520cb8a Fixed dotnet --info syntax error
     add a5c0b995c website: fixed horizontal rule
     add c7ab459bd Added PersianStemmer (#571)
     add 5a89b321a Add DebuggerDisplay for SegToken (#634)
     add dd54e578a .build.runbuild.ps1: Specify to roll forward if another SDK version is installed
     add 9d85aa5d8 azure-pipelines.yml: Removed x86 tests for .NET Core on Linux/macOS, as they are not supported
     add b5ea527c5 install-dotnet-sdk.yml, run-tests-on-os.yml: Added performMultiLevelLookup parameter for x86 tests
     add 4b175416c chore(deps): Update Newtonsoft.Json to 13.0.1 to avoid vulnerability (#647)
     add edc85aff6 Remove NET45, NET451, NET452 Support & update website framework ver (#650)
     add 5988c7733 fix: Fixed use of insecure 'Path.GetTempFileName' in ExternalRefSorter.cs (#651)
     add 9c3ccb0ad fix: Fixed throw statement in BinaryDictionary
     add 04ac9c460 .asf.yaml: Added hacktoberfest label
     add f876e2c6b fix: Fixed Infinite lopp in HttpClientBase
     add 3dca1619c fix: Order of precedence for translation of Remove() method args in FrenchStemmer.cs  (#654)
     add b708036cf Spellchecking on markdown and text files (#646)
     add 6fc56616a .editorconfig: Added suppression for CA2249: Consider using String.Contains instead of String.IndexOf
     add 4b306ba91 Lucene.Net.Tests.Analysis.SmartCn.TestHMMChineseTokenizerFactory: Added LuceneNetSpecificAttribute to TestHHMMSegmenter() and renamed TestHHMMSegmenterInitialization(), since this is a smoke test that was added to test initialization of HHMMSegmenter.
     add 089a439d8 Lucene.Net.Analysis.Cn.Smart.Utility: Changed SPACES to use an encoded character for '\u3000' so it is visible in the designer. Fixes #680.
     add 8a22620a0 fix: Fixed '&' to '&&'
     add 7b33bbb50 SWEEP: Fixed ArgumentOutOfRange parameters so the message is passed into the 2nd parameter, not the first (which is for argumentName). Fixes #665. Also addressed potential int overflow issues when checking for "index + length must be <= array length".
     add 86052e5c4 SWEEP: Prefer 'AsSpan' over 'Substring' when span-based overloads are available. Fixes #675.
     add 878dc64ef Review for CA1822: Mark members as static (#690)
     add fef018190 SWEEP: Lucene.Net.Benchmark.Support.TagSoup: Reviewed API for accessibility issues. Fixed error handling and guard clauses. Changed to generic collections. Renamed method arguments.
     add b5802f870 SWEEP: Add a nested comment explaining why this method is empty. Fixes #681.
     add c18b9f1eb publish-test-results.yml: Added check for assembly binding failure to detect crashed runs. See #699.
     add e2ae17398 .github/workflows: Added Lucene-Net-Dependency-Conflict-Warning.yml to post a message to post a reminder comment to a PR to run the tests in Azure DevOps if it contains changes to dependences.props or any .csproj file. See #699.
     add 8367304fa PERFORMANCE: Lucene.Net.Util.MergedEnumerator: Changed from using inline string conversions when the generic type is string to J2N.Collections.Generic.Comparer<T>, which is statically initialized with the optimal comparer that matches Java behaviors.
     add 80d8cacc5 SWEEP: Renamed classes from using Iterable and Iterator to Enumerable and Enumerator, where appropropriate. See #279.
     add 9656877e0 Lucene.Net.Util.Fst.BytesStore: Suffix anonymous classes with "AnonymousClass". See #666.
     add ebcd9ea98 SWEEP: Normalize anonymous class names/accessibility. Fixes #666.
     add dac2a8c85 SWEEP: Renamed classes from using Iterable and Iterator to Enumerable and Enumerator, where appropriate - some were missed in #698.
     add 44c53364a BUG: Lucene.Net.Analysis.Cjk.CJKBigramFilter: Changed the value of ALL to set all flags (was 0xff instead of 0xffff). Fixes #657.
     add c2809e9fd SWEEP: Marked all singleton "Holder" classes static. Fixes #659.
     add a445bd254 BUG: Lucene.Net.Benchmark.Support.TagSoup.Parser::SetProperty(): Removed duplicate guard clause
     add 36527a061 Lucene.Net.Benchmark.Support.TagSoup.HTMLScanner: Reworked initialization to return statetableIndexMaxChar and set statetableIndex via out parameter.
     add 8213e9310 SWEEP: Removed call to ToString() for StringBuilder.Append() methods, so strongly typed StringBuilder overloads can be used on target frameworks that support it. Fixes #668.
     add bc1dd42ff BUG: Lucene.Net.Tests.Index.TestIndexWriter: Finished port of RandomFailingFieldEnumerable. Fixes #695.
     add 74917461a Fix for net461 dependency conflict after upgrading Newtonsoft.Json. Fixes #699.
     add 5aa18af58 PERFORMANCE: Use 'StringBuilder.Append(char)' instead of 'StringBuilder.Append(string)' when the input is a constant unit string. (#708)
     add 1fddf617a .editorconfig: Suppressed IDE0090: Simplify new expression
     add 5145ea78a Lucene.Net.Analysis.Common.Analysis.Util (CharArrayMap + CharArraySet): Added AsReadOnly() instance methods to match .NET conventions and marked UnmodifiableMap/UnmodifiableSet obsolete.
     add e4310de17 SWEEP: Migrated all callers of CharArraySet.UnmodifiableSet() and CharArrayMap.UnmodifiableMap() to the AsReadOnly() instance methods
     add 0ab704e34 SWEEP: Added SuppressMessage attribute for S3887 and S2386 (SonarCloud) for all immutable collections (excluding arrays) that it cannot detect.
     add 37588c7a3 SWEEP: Fixed a bug where the CharArraySet returned from DefaultStopSet in all analyzers was returning a static writable instance instead of a readonly instance as per the docs.
     add c9914866d Lucene.Net.Analysis.Kuromoji.JapaneseAnalyzer: Changed GetDefaultStopSet() and GetDefaultStopTags() to DefaultStopSet and DefaultStopTags, respectively. Marked the old methods obsolete.
     add 2161cdcbb Lucene.Net.Analysis.SmartCn.SmartChineseAnalyzer: Changed GetDefaultStopSet() to DefaultStopSet. Marked GetDefaultStopSet() obsolete.
     add 740144c4c chore: Added suppression attributes to CA1822 (#693)
     add 599f3b7f8 Lucene.Net.Analysis.Fa/PersianAnalyzer: Reverted changes from #571 as was done in apache/lucene#904. Changed TestPersianStemFilter to use mocks.
     add 789785d2a Merge branch 'master' into fix/immutable-collection-warnings
     add 84e379e09 Merge pull request #710 from NightOwl888/fix/immutable-collection-warnings
     add f27cc0348 Lucene.Net.Search.Similarities: Statically imported SimilarityBase where appropriate so the Log2 method doesn't have to be qualified (like in Lucene). Fixes #694.
     add e8c49dc51 Lucene.Net.Analysis.Kuromoji.Util.CSVUtil: Applied SOLR-9413 patch to fix the QuoteEscape() method and add tests. Fixes #660.
     add b53d38b99 Removed 2 private nested classes that were not in use (#713)
     add b6cf28b78 sweep: Review for CA1822: Mark members as static
     add 30cf373cf sweep: Review for CA1822: Mark members as static
     add e281a0d3a Lucene.Net.Analysis.Token: Removed extra code in default constructor
     add a1ae345de .github/workflows/Generate-TestWorkflows.ps1: Disabled slow tests for PR test runs
     add 3f54dce14 Disabled Json Source Generator.  (#727)
     add 22cac2587 changes made for Redundant jump statements #684 (#724)
     add 4f8b1db95 Updated Azure DevOps Mac OS used for Net3.1 Testing (#728)
     add 31ac9f6b7 Sonar changes required for #671 (#730)
     add e8c34943e PERFORMANCE: Lucene.Net.Document.CompressionTools::CompressString(): Eliminated unnecessary ToCharArray() allocation
     add eea43d74b PERFORMANCE: Lucene.Net.Codecs.SimpleText.SimpleTextUtil::Write(): Removed unnecessary ToCharArray() allocation
     add e8d9d7b94 PERFORMANCE: Lucene.Net.Analysis.CharFilters.HTMLStripCharFilter: Removed allocation during parse of hexadecimal number by using J2N.Numerics.Int32 to specify index and length. Also added a CharArrayFormatter struct to defer the allocation of constructing a string until after an assertion failure.
     add 98c52a864 PERFORMANCE: Lucene.Net.Analysis.Util.CharacterUtils: Use spans and stackalloc to reduce heap allocations when lowercasing. Added system property named "maxStackLimit" that defaults to 2048 bytes.
     add 3abf2dbfe PERFORMANCE: Lucene.Net.Analysis.Miscellaneous.StemmerOverrideFilter: Added overloads to Add for ICharSequence and char[] to reduce allocations. Added guard clauses.
     add 31bbe9f35 Lucene.Net.Util.TestUnicodeUtil::TestUTF8toUTF32(): Added additional tests for ICharSequence and char[] overloads, changed the original test to test string.
     add e3606755c PERFORMANCE: Lucene.Net.Analysis.Util.SegmentingTokenizerBase: Removed unnecessary string allocations that were added during the port due to missing APIs.
     add 3e63d1529 PERFORMANCE: Lucene.Net.Analysis.Ja.GraphvizFormatter: Removed unnecessary surfaceForm string allocation.
     add fca99681e PERFORMANCE: Lucene.Net.Analysis.In.IndicNormalizer: Replaced static constructor with inline LoadScripts() method. Moved location of scripts field to ensure decompositions is initialized first.
     add d660b9d51 PERFORMANCE: Lucene.Net.Analysis.In.IndicNormalizer: Refactored ScriptData to change Dictionary<Regex, ScriptData> to List<ScriptData> and eliminated unnecessary hashtable lookup. Use static fields for unknownScript and [ThreadStatic] previousScriptData to optimize character script matching.
     add e72315a75 PERFORMANCE: Lucene.Net.Analysis.Th.ThaiWordBreaker: Removed unnecessary string allocations and concatenation. Use CharsRef to reuse the same memory. Removed Regex and replaced with UnicodeSet to detect Thai code points.
     add 56c8e08e0 PERFORAMANCE: Lucene.Net.Analysis.Ga.IrishLowerCaseFilter: Use stack and spans to reduce allocations and improve throughput.
     add 1d74f980a PERFORMANCE: Lucene.Net.Analysis.Util.OpenStringBuilder: Added overloads of UnsafeWrite() for string an ICharSequence. Optimized Append() methods to call UnsafeWrite with index and count to optimize the operation depending on the type of object passed.
     add 3fbee37ed PERFORMANCE: Lucene.Net.Analsis.Util.HTMLStripCharFilter: Refactored to remove YyText property (method) which allocates a string every time it is called. Instead, we pass the underlying array to J2N.Numerics.TryParse() and OpenStringBuilder.Append() with the calculated startIndex and length to directly copy the characters without allocating substrings.
     add 36fbd60d7 Update SlowSynonymFilter.cs
     add 7edfa94b3 BUG: Lucene.Net.Util.OfflineSorter: Fixed the Sort() and SortPartition() methods so they use the tempDirectory parameter that is passed through the constructor, as was the case in Lucene. Added a constructor overload to specify the directory as a string (a .NET convention).
     add 33ac7ed3b BREAKING: Lucene.Net.Util.OfflineSorter: Changed DefaultTempDir() > GetDefaultTempDir().
     add 244ee24c5 Lucene.Net.Util.OfflineSorter: Added guard clauses (and removed asserts). Enabled nullable reference type support. Added disposed flag to ensure dispose only happens once.
     add a2b4c3119 Lucene.Net.Util.OfflineSorter (ByteSequencesReader + ByteSequencesWriter): Added constructor overloads to pass the file name as a string (.NET convention)
     add ada899027 Removed .NET Core 3.1 tests and lucene-cli support for it.  (#735)
     add 4166765d3 Lucene.Net.Support.IO.FileSupport::GetFileIOExceptionHResult(): Avoid Path.GetTempFileName() because it is not secure. https://rules.sonarsource.com/csharp/RSPEC-5445
     add c076e40b1 Lucene.Net.Search.Suggest.Fst.ExternalRefSorter: Changed temp path generation to use FileSupport.CreateTempFile() with named prefix and extension because it more closely matches Lucene and makes the files more easily identifiable.
     add 10c24f293 ci: Added sonar workflow (#709)
     add fdf6f34f0 Deleted src/Lucene.Net.Spatial.Overview.html (legacy doc)
     add 58ca43bf8 BREAKING: Lucene.Net.Search.FieldCacheRangeFilter<T>: Changed accessibility from protected internal to private protected. This class was not intended to be subclassed by users. (see #677)
     add 568e4e45c SWEEP: Changed all public constructors of abstract classes to protected, except where it would be a problem for Reflection calls. (fixes #677)
     add e46686920 SWEEP: Changed all protected internal constructors of abstract classes to protected.  (fixes #677)
     add dfae964ce SWEEP: Changed all internal constructors of abstract classes to private protected. (fixes #677)
     add 649e178ef BREAKING: Lucene.Net.Index.IndexWriter: Fixed Dispose() overloads so there is no method signature conflict between the public Dispose(waitForMerges) method and the protected Dispose(disposing) method that can be overridden and called from a finalizer. See #265.
     add 3a1ced448 BREAKING: Lucene.Net.Index.IndexReader: De-nested IReaderClosedListener and renamed to IReaderDisposedListener.
     add 694b51846 PERFORMANCE: Lucene.Net.Analysis.Sinks.DateRecognizerSinkFilter: Prefer ReadOnlySpan<char> overloads of DateTime.TryParse() and DateTime.TryParseExact(), when available.
     add 76004096b BUG: Changed TokenAttribute usage from concrete implementation type to interface type to align with Lucene 4.8.0. We were using the concrete type in several places where it shouldn't have been.
     add d813d2c3d SWEEP: Renamed concrete TokenAttribute type file names to be suffixed with "Impl" so the file it was ported from is clear.
     add 97c252784 SWEEP: Renamed interface TokenAttribute type file names removing the prefix "I" so the file it was ported from is clear.
     add 98825e468 SWEEP: Added guard clauses for all TokenAttribute members
     add e27faab50 BREAKING: Lucene.Net.Analysis.Kuromoji.Token: Renamed IsKnown() > IsKnown, IsUnknown() > IsUnknown, IsUser() > IsUser.
     add 6e341886d Use null propagation
     add c460883f2 Remove unused using statements
     add 4b09c0a41 Lucene.Net.Queries.Mlt.MoreLikeThis: Use 'StringBuilder.Append(char)' instead of 'StringBuilder.Append(string)' when the input is a constant unit string (see #674)
     add cf259c918 fix: Aligned disposable patterns (#746)
     add eb85c679d Lucene.Net.Analysis.Util.BufferedCharFilter: Use UninterruptableMonitor for consistency (missed a couple)
     add ceafc83ad Lucene.Net.Analysis.Util.BufferedCharFilter: Check for CharFilter type inline
     add dc2955699 Lucene.Net.Analysis.Util.BufferedCharFilter: Implemented Peek() method. Added overrides for Span<T> and Memory<T> based methods to throw NotSupportedException. Added doc comments.
     add 0e3eb6358 TestTargetFramework.props: Disabled EoL warnings in test projects so we don't get false flags for testing with net5.0. We use net5.0 to test the netstandard2.1 target framework.
     add 71adb4df6 sonar.yml: Don't run on forks, only run on the main repository
     add 987274e99 BREAKING: Refactored CharArraySet and CharArrayMap (now CharArrayDictionary) (#762)
     add b460a7a8f Lucene.Net.Support.DictionaryExtensions: Reduced dependency on the Put() method and added documentation to indicate that it doesn't work with non-nullable value types. Also documented the PutAll() method and added guard clause.
     new c47729795 Adds simple benchmark between nuget versions
     new a1090edc2 Lucene.Net.Tests.BenchmarkDotNet: Updated HomePageScripBenchmarks to include beta 5, beta 6, and beta 10
     new ed2918a11 Lucene.Net.Tests.BenchmarkDotNet: Added benchmarks for IndexFiles and SearchFiles
     new e4fdbccea Lucene.Net.Tests.BenchmarkDotNet: Added jobs for 4.8.0-beta00011
     new 394304b11 Added benchmarks for facet operations using Lucene.Net.Demo.Facet classes as a basis
     new f36ec8477 Lucene.Net.Tests.BenchmarkDotNet: Added benchmarks for 4.8.0-beta00012
     new d69007582 Lucene.Net.Tests.BenchmarkDotNet.SearchFilesBenchmarks: Increased number of iterations from 1000 to 2000 for better accuracy
     new babf5d459 Added benchmarks for 4.8.0-beta00013
     new c56de5629 Added benchmarks for 4.8.0-beta00014
     new 1aca8539d BenchmarkDotNet: Centralized build configuration logic so we can add a new version in just one place. Also, include a LocalBuild in the benchmarks so we can compare to the current source code.
     new 88f863340 BenchmarkDotNet: added NamespacePatch.cs file to define namespaces that didn't exist in old versions of Lucene.NET
     new f4ef5cd13 Lucene.Net.Tests.BenchmarkDotNet: Updated to net6.0
     new 549070d7a Lucene.Net.Tests.BenchmarkDotNet.BuildConfigurations: Updated list of active build configurations to include beta00014, beta-00015, and beta00016

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (9cd340871)
            \
             N -- N -- N   refs/heads/benchmarkdotnet (549070d7a)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 13 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .asf.yaml                                          |    1 +
 .build/TestReferences.Common.targets               |   32 +
 .build/azure-templates/install-dotnet-sdk.yml      |   44 +
 .../azure-templates/publish-nuget-packages.yml     |    0
 .../azure-templates/publish-test-binaries.yml      |    0
 .../publish-test-results-for-test-projects.yml     |  445 ++
 .build/azure-templates/publish-test-results.yml    |  107 +
 .build/azure-templates/run-tests-on-os.yml         |  265 ++
 .../show-all-environment-variables.yml             |    0
 .build/azure-templates/show-all-files.yml          |   22 +
 .build/dependencies.props                          |   87 +
 .build/nuget.props                                 |   51 +
 .build/psake/LICENSE                               |   21 +
 .build/psake/en-US/psake.psm1-help.xml.old         | 2265 +++++++++++
 .build/psake/private/CleanupEnvironment.ps1        |   12 +
 .build/psake/private/ConfigureBuildEnvironment.ps1 |  202 +
 .../private/CreateConfigurationForNewContext.ps1   |   28 +
 .build/psake/private/ExecuteInBuildFileScope.ps1   |   58 +
 .build/psake/private/FormatErrorMessage.ps1        |   26 +
 .build/psake/private/Get-DefaultBuildFile.ps1      |   17 +
 .../private/GetCurrentConfigurationOrDefault.ps1   |    7 +
 .build/psake/private/GetTasksFromContext.ps1       |   15 +
 .build/psake/private/LoadConfiguration.ps1         |   31 +
 .build/psake/private/LoadModules.ps1               |   21 +
 .build/psake/private/ResolveError.ps1              |   62 +
 .build/psake/private/SelectObjectWithDefault.ps1   |   23 +
 .build/psake/private/Test-ModuleVersion.ps1        |  107 +
 .build/psake/private/WriteColoredOutput.ps1        |   20 +
 .build/psake/private/WriteDocumentation.ps1        |   26 +
 .build/psake/private/WriteTaskTimeSummary.ps1      |   34 +
 .build/psake/psake                                 |   12 +
 .build/psake/psake-config.ps1                      |   22 +
 .build/psake/psake.cmd                             |   14 +
 .build/psake/psake.ps1                             |   71 +
 .build/psake/psake.psd1                            |   33 +
 .build/psake/psake.psm1                            |  112 +
 .build/psake/public/Assert.ps1                     |   71 +
 .build/psake/public/BuildSetup.ps1                 |   55 +
 .build/psake/public/BuildTearDown.ps1              |   75 +
 .build/psake/public/Exec.ps1                       |  110 +
 .build/psake/public/FormatTaskName.ps1             |   95 +
 .build/psake/public/Framework.ps1                  |   55 +
 .build/psake/public/Get-PSakeScriptTasks.ps1       |   45 +
 .build/psake/public/Include.ps1                    |   64 +
 .build/psake/public/Invoke-Task.ps1                |  158 +
 .build/psake/public/Invoke-psake.ps1               |  343 ++
 .build/psake/public/Properties.ps1                 |   61 +
 .build/psake/public/Task.ps1                       |  331 ++
 .build/psake/public/TaskSetup.ps1                  |  102 +
 .build/psake/public/TaskTearDown.ps1               |  107 +
 .build/psake/readme.md                             |   13 +
 .build/release.targets                             |  216 +
 .build/runbuild.ps1                                |  751 ++++
 .editorconfig                                      |    9 +
 .gitattributes                                     |   10 +-
 .github/workflows/Generate-TestWorkflows.ps1       |  163 +-
 .../Lucene-Net-Dependency-Conflict-Warning.yml     |   45 +
 .github/workflows/Lucene-Net-Documentation.yml     |  164 +
 .github/workflows/Lucene-Net-Tests-AllProjects.yml |  139 +
 .../workflows/Lucene-Net-Tests-Analysis-Common.yml |   51 +-
 .../Lucene-Net-Tests-Analysis-Kuromoji.yml         |   47 +-
 .../Lucene-Net-Tests-Analysis-Morfologik.yml       |   47 +-
 .../Lucene-Net-Tests-Analysis-OpenNLP.yml          |   44 +-
 .../Lucene-Net-Tests-Analysis-Phonetic.yml         |   44 +-
 .../Lucene-Net-Tests-Analysis-SmartCn.yml          |   44 +-
 .../Lucene-Net-Tests-Analysis-Stempel.yml          |   45 +-
 .github/workflows/Lucene-Net-Tests-Benchmark.yml   |   47 +-
 .../workflows/Lucene-Net-Tests-Classification.yml  |   44 +-
 .github/workflows/Lucene-Net-Tests-Cli.yml         |   48 +-
 .../workflows/Lucene-Net-Tests-CodeAnalysis.yml    |   44 +-
 .github/workflows/Lucene-Net-Tests-Codecs.yml      |   44 +-
 .github/workflows/Lucene-Net-Tests-Demo.yml        |   47 +-
 .github/workflows/Lucene-Net-Tests-Expressions.yml |   48 +-
 .github/workflows/Lucene-Net-Tests-Facet.yml       |   48 +-
 .github/workflows/Lucene-Net-Tests-Grouping.yml    |   48 +-
 .github/workflows/Lucene-Net-Tests-Highlighter.yml |   49 +-
 .github/workflows/Lucene-Net-Tests-ICU.yml         |   59 +-
 .github/workflows/Lucene-Net-Tests-Join.yml        |   48 +-
 .github/workflows/Lucene-Net-Tests-Memory.yml      |   49 +-
 .github/workflows/Lucene-Net-Tests-Misc.yml        |   46 +-
 .github/workflows/Lucene-Net-Tests-Queries.yml     |   46 +-
 .github/workflows/Lucene-Net-Tests-QueryParser.yml |   50 +-
 .github/workflows/Lucene-Net-Tests-Replicator.yml  |   48 +-
 .github/workflows/Lucene-Net-Tests-Sandbox.yml     |   47 +-
 .github/workflows/Lucene-Net-Tests-Spatial.yml     |   49 +-
 .github/workflows/Lucene-Net-Tests-Suggest.yml     |   49 +-
 ...Net-Tests-TestFramework-DependencyInjection.yml |   44 +-
 .../workflows/Lucene-Net-Tests-TestFramework.yml   |   46 +-
 .github/workflows/Lucene-Net-Tests-_A-D.yml        |   51 +-
 .github/workflows/Lucene-Net-Tests-_E-I.yml        |   61 +-
 .github/workflows/Lucene-Net-Tests-_I-J.yml        |   66 +-
 .github/workflows/Lucene-Net-Tests-_J-S.yml        |   53 +-
 .github/workflows/Lucene-Net-Tests-_T-Z.yml        |   48 +-
 .github/workflows/Lucene-Net-Website.yml           |   86 +-
 .github/workflows/sonar.yml                        |   65 +
 .gitignore                                         |    3 +-
 .rat-excludes                                      |    8 +-
 ACKNOWLEDGEMENTS.txt                               |    6 +-
 CONTRIBUTING.md                                    |    4 +-
 Directory.Build.props                              |   27 +-
 Directory.Build.targets                            |  133 +-
 LICENSE.txt                                        |  147 +-
 Lucene.Net.sln                                     |  118 +-
 NOTICE.txt                                         |    2 +-
 README.md                                          |  100 +-
 TestTargetFramework.props                          |   24 +-
 azure-pipelines.yml                                |  218 +-
 build                                              |   55 +
 build.bat                                          |  109 +-
 build.ps1                                          |  102 +
 build/Dependencies.props                           |   89 -
 build/NuGet.props                                  |   37 -
 build/Release.targets                              |  216 -
 build/TestReferences.Common.targets                |   42 -
 .../publish-test-results-for-test-projects.yml     |  415 --
 build/azure-templates/publish-test-results.yml     |  103 -
 build/azure-templates/run-tests-on-os.yml          |  250 --
 build/azure-templates/show-all-files.yml           |   26 -
 build/build.ps1                                    |  808 ----
 build/dotnet-install.ps1                           |  686 ----
 build/psake.cmd                                    |   29 -
 build/psake.ps1                                    |   53 -
 build/psake.psd1                                   |   31 -
 build/psake.psm1                                   |  925 -----
 src/Directory.Build.targets                        |   23 +
 .../Analysis/Ar/ArabicAnalyzer.cs                  |   14 +-
 .../Analysis/Ar/ArabicStemFilter.cs                |    4 +-
 .../Analysis/Ar/ArabicStemmer.cs                   |    7 +-
 .../Analysis/Bg/BulgarianAnalyzer.cs               |   14 +-
 .../Analysis/Bg/BulgarianStemFilter.cs             |    4 +-
 .../Analysis/Bg/BulgarianStemmer.cs                |    4 +-
 .../Analysis/Br/BrazilianAnalyzer.cs               |   14 +-
 .../Analysis/Br/BrazilianStemFilter.cs             |    6 +-
 .../Analysis/Br/BrazilianStemmer.cs                |   48 +-
 .../Analysis/Ca/CatalanAnalyzer.cs                 |   18 +-
 .../Analysis/CharFilter/BaseCharFilter.cs          |   10 +-
 .../Analysis/CharFilter/HTMLStripCharFilter.cs     |  257 +-
 .../Analysis/CharFilter/MappingCharFilter.cs       |    2 +-
 .../CharFilter/MappingCharFilterFactory.cs         |   16 +-
 .../Analysis/CharFilter/NormalizeCharMap.cs        |   10 +-
 .../Analysis/Cjk/CJKAnalyzer.cs                    |   10 +-
 .../Analysis/Cjk/CJKBigramFilter.cs                |    4 +-
 .../Analysis/Ckb/SoraniAnalyzer.cs                 |   14 +-
 .../Analysis/Ckb/SoraniStemFilter.cs               |    4 +-
 .../Analysis/CommonGrams/CommonGramsFilter.cs      |    4 +-
 .../Analysis/CommonGrams/CommonGramsQueryFilter.cs |    2 +-
 .../Compound/CompoundWordTokenFilterBase.cs        |    8 +-
 .../Compound/DictionaryCompoundWordTokenFilter.cs  |   10 +-
 .../DictionaryCompoundWordTokenFilterFactory.cs    |    2 +-
 .../Analysis/Compound/Hyphenation/Hyphen.cs        |    2 +-
 .../Compound/Hyphenation/HyphenationTree.cs        |   14 +-
 .../Analysis/Compound/Hyphenation/PatternParser.cs |   26 +-
 .../Analysis/Compound/Hyphenation/TernaryTree.cs   |    2 +-
 .../Compound/HyphenationCompoundWordTokenFilter.cs |    6 +-
 .../Analysis/Core/KeywordTokenizer.cs              |    6 +-
 .../Analysis/Core/StopAnalyzer.cs                  |    8 +-
 .../Analysis/Core/StopFilter.cs                    |   16 +-
 .../Analysis/Cz/CzechAnalyzer.cs                   |   14 +-
 .../Analysis/Cz/CzechStemFilter.cs                 |    4 +-
 .../Analysis/Cz/CzechStemmer.cs                    |    6 +-
 .../Analysis/Da/DanishAnalyzer.cs                  |   14 +-
 .../Analysis/De/GermanAnalyzer.cs                  |   16 +-
 .../Analysis/De/GermanLightStemFilter.cs           |    4 +-
 .../Analysis/De/GermanLightStemmer.cs              |    6 +-
 .../Analysis/De/GermanMinimalStemFilter.cs         |    4 +-
 .../Analysis/De/GermanStemFilter.cs                |    4 +-
 .../Analysis/De/GermanStemmer.cs                   |    6 +-
 .../Analysis/El/GreekAnalyzer.cs                   |   10 +-
 .../Analysis/El/GreekLowerCaseFilter.cs            |    2 +-
 .../Analysis/El/GreekStemFilter.cs                 |    4 +-
 .../Analysis/El/GreekStemmer.cs                    |   52 +-
 .../Analysis/En/EnglishAnalyzer.cs                 |    8 +-
 .../Analysis/En/EnglishMinimalStemFilter.cs        |    4 +-
 .../Analysis/En/KStemFilter.cs                     |    6 +-
 .../Analysis/En/KStemmer.cs                        |  113 +-
 .../Analysis/En/PorterStemFilter.cs                |    6 +-
 .../Analysis/En/PorterStemmer.cs                   |    4 +-
 .../Analysis/Es/SpanishAnalyzer.cs                 |   14 +-
 .../Analysis/Es/SpanishLightStemFilter.cs          |    4 +-
 .../Analysis/Eu/BasqueAnalyzer.cs                  |   14 +-
 .../Analysis/Fa/PersianAnalyzer.cs                 |   14 +-
 .../Analysis/Fa/PersianStemFilter.cs               |   61 +
 .../Analysis/Fa/PersianStemFilterFactory.cs        |   56 +
 .../Analysis/Fa/PersianStemmer.cs                  |  118 +
 .../Analysis/Fi/FinnishAnalyzer.cs                 |   14 +-
 .../Analysis/Fi/FinnishLightStemFilter.cs          |    4 +-
 .../Analysis/Fi/FinnishLightStemmer.cs             |   10 +-
 .../Analysis/Fr/FrenchAnalyzer.cs                  |   24 +-
 .../Analysis/Fr/FrenchLightStemFilter.cs           |    4 +-
 .../Analysis/Fr/FrenchLightStemmer.cs              |    2 +-
 .../Analysis/Fr/FrenchMinimalStemFilter.cs         |    4 +-
 .../Analysis/Fr/FrenchStemFilter.cs                |    4 +-
 .../Analysis/Fr/FrenchStemmer.cs                   |   10 +-
 .../Analysis/Ga/IrishAnalyzer.cs                   |   22 +-
 .../Analysis/Ga/IrishLowerCaseFilter.cs            |   17 +-
 .../Analysis/Gl/GalicianAnalyzer.cs                |   14 +-
 .../Analysis/Gl/GalicianMinimalStemFilter.cs       |    4 +-
 .../Analysis/Gl/GalicianStemFilter.cs              |    4 +-
 .../Analysis/Hi/HindiAnalyzer.cs                   |   14 +-
 .../Analysis/Hi/HindiNormalizationFilter.cs        |    4 +-
 .../Analysis/Hu/HungarianAnalyzer.cs               |   14 +-
 .../Analysis/Hu/HungarianLightStemFilter.cs        |    4 +-
 .../Analysis/Hu/HungarianLightStemmer.cs           |   10 +-
 .../Analysis/Hunspell/Dictionary.cs                |  107 +-
 .../Analysis/Hunspell/HunspellStemFilter.cs        |    9 +-
 .../Analysis/Hunspell/HunspellStemFilterFactory.cs |    7 +-
 .../Analysis/Hunspell/Stemmer.cs                   |   29 +-
 .../Analysis/Hy/ArmenianAnalyzer.cs                |   14 +-
 .../Analysis/Id/IndonesianAnalyzer.cs              |   14 +-
 .../Analysis/Id/IndonesianStemmer.cs               |    2 +-
 .../Analysis/In/IndicNormalizer.cs                 |  123 +-
 .../Analysis/It/ItalianAnalyzer.cs                 |   18 +-
 .../Analysis/It/ItalianLightStemFilter.cs          |    4 +-
 .../Analysis/Lv/LatvianAnalyzer.cs                 |   14 +-
 .../Analysis/Lv/LatvianStemFilter.cs               |    4 +-
 .../Analysis/Lv/LatvianStemmer.cs                  |    4 +-
 .../Analysis/Miscellaneous/CapitalizationFilter.cs |    8 +-
 .../Miscellaneous/CapitalizationFilterFactory.cs   |    5 +-
 .../Analysis/Miscellaneous/CodepointCountFilter.cs |   11 +-
 .../Miscellaneous/HyphenatedWordsFilter.cs         |    4 +-
 .../Miscellaneous/KeepWordFilterFactory.cs         |    2 +-
 .../Analysis/Miscellaneous/KeywordMarkerFilter.cs  |    6 +-
 .../Analysis/Miscellaneous/KeywordRepeatFilter.cs  |    6 +-
 .../Analysis/Miscellaneous/LengthFilter.cs         |   12 +-
 .../Miscellaneous/LimitTokenCountFilter.cs         |    4 +-
 .../Miscellaneous/LimitTokenPositionFilter.cs      |    4 +-
 .../Analysis/Miscellaneous/PatternAnalyzer.cs      |   22 +-
 .../Miscellaneous/PatternKeywordMarkerFilter.cs    |    8 +-
 .../PrefixAndSuffixAwareTokenFilter.cs             |    3 +-
 .../Miscellaneous/PrefixAwareTokenFilter.cs        |    9 +-
 .../Miscellaneous/SetKeywordMarkerFilter.cs        |    8 +-
 .../Miscellaneous/StemmerOverrideFilter.cs         |  131 +-
 .../Miscellaneous/StemmerOverrideFilterFactory.cs  |    2 +-
 .../Analysis/Miscellaneous/TruncateTokenFilter.cs  |    4 +-
 .../Miscellaneous/WordDelimiterFilterFactory.cs    |   12 +-
 .../Analysis/NGram/EdgeNGramTokenFilter.cs         |   28 +-
 .../Analysis/NGram/Lucene43EdgeNGramTokenizer.cs   |   26 +-
 .../Analysis/NGram/Lucene43NGramTokenizer.cs       |    4 +-
 .../Analysis/NGram/NGramTokenFilter.cs             |   24 +-
 .../Analysis/NGram/NGramTokenizer.cs               |    4 +-
 .../Analysis/Nl/DutchAnalyzer.cs                   |   56 +-
 .../Analysis/Nl/DutchStemFilter.cs                 |    8 +-
 .../Analysis/Nl/DutchStemmer.cs                    |    4 +-
 .../Analysis/No/NorwegianAnalyzer.cs               |   14 +-
 .../Analysis/No/NorwegianLightStemFilter.cs        |    4 +-
 .../Analysis/No/NorwegianLightStemFilterFactory.cs |    2 +-
 .../Analysis/No/NorwegianMinimalStemFilter.cs      |    4 +-
 .../No/NorwegianMinimalStemFilterFactory.cs        |    2 +-
 .../Analysis/Path/PathHierarchyTokenizer.cs        |    6 +-
 .../Analysis/Path/ReversePathHierarchyTokenizer.cs |    9 +-
 .../Pattern/PatternCaptureGroupTokenFilter.cs      |    2 +-
 .../Analysis/Pattern/PatternReplaceCharFilter.cs   |   20 +-
 .../Analysis/Payloads/NumericPayloadTokenFilter.cs |    6 +-
 .../Payloads/TokenOffsetPayloadTokenFilter.cs      |    6 +-
 .../Analysis/Position/PositionFilter.cs            |    4 +-
 .../Analysis/Pt/PortugueseAnalyzer.cs              |   14 +-
 .../Analysis/Pt/PortugueseLightStemFilter.cs       |    4 +-
 .../Analysis/Pt/PortugueseLightStemmer.cs          |    4 +-
 .../Analysis/Pt/PortugueseMinimalStemFilter.cs     |    4 +-
 .../Analysis/Pt/PortugueseStemFilter.cs            |    4 +-
 .../Analysis/Pt/RSLPStemmerBase.cs                 |   38 +-
 .../Analysis/Query/QueryAutoStopWordAnalyzer.cs    |    6 +-
 .../Analysis/Ro/RomanianAnalyzer.cs                |   14 +-
 .../Analysis/Ru/RussianAnalyzer.cs                 |   16 +-
 .../Analysis/Ru/RussianLightStemFilter.cs          |    4 +-
 .../Analysis/Ru/RussianLightStemmer.cs             |    4 +-
 .../Analysis/Shingle/ShingleAnalyzerWrapper.cs     |   10 +-
 .../Analysis/Shingle/ShingleFilter.cs              |    6 +-
 .../Analysis/Shingle/ShingleFilterFactory.cs       |    8 +-
 .../Analysis/Sinks/DateRecognizerSinkFilter.cs     |   37 +-
 .../Analysis/Sinks/TeeSinkTokenFilter.cs           |   15 +-
 .../Analysis/Sinks/TokenRangeSinkFilter.cs         |    6 +-
 .../Analysis/Sinks/TokenTypeSinkFilter.cs          |    2 +-
 .../Analysis/Snowball/SnowballAnalyzer.cs          |    4 +-
 .../Analysis/Snowball/SnowballFilter.cs            |    8 +-
 .../Snowball/SnowballPorterFilterFactory.cs        |    6 +-
 .../Analysis/Standard/ClassicAnalyzer.cs           |    2 +-
 .../Analysis/Standard/ClassicTokenizer.cs          |    4 +-
 .../Analysis/Standard/ClassicTokenizerImpl.cs      |    9 +-
 .../Analysis/Standard/StandardAnalyzer.cs          |    2 +-
 .../Analysis/Standard/StandardTokenizerImpl.cs     |   13 +-
 .../Standard/Std31/StandardTokenizerImpl31.cs      |    9 +-
 .../Standard/Std31/UAX29URLEmailTokenizerImpl31.cs |   13 +-
 .../Standard/Std34/StandardTokenizerImpl34.cs      |    9 +-
 .../Standard/Std34/UAX29URLEmailTokenizerImpl34.cs |    9 +-
 .../Standard/Std36/UAX29URLEmailTokenizerImpl36.cs |    9 +-
 .../Standard/Std40/StandardTokenizerImpl40.cs      |    9 +-
 .../Standard/Std40/UAX29URLEmailTokenizerImpl40.cs |    9 +-
 .../Analysis/Standard/UAX29URLEmailAnalyzer.cs     |    2 +-
 .../Analysis/Standard/UAX29URLEmailTokenizer.cs    |    4 +-
 .../Standard/UAX29URLEmailTokenizerImpl.cs         |   11 +-
 .../Analysis/Sv/SwedishAnalyzer.cs                 |   14 +-
 .../Analysis/Sv/SwedishLightStemFilter.cs          |    4 +-
 .../Analysis/Synonym/FSTSynonymFilterFactory.cs    |   19 +-
 .../Analysis/Synonym/SlowSynonymFilter.cs          |   23 +-
 .../Analysis/Synonym/SlowSynonymFilterFactory.cs   |   25 +-
 .../Analysis/Synonym/SlowSynonymMap.cs             |   32 +-
 .../Analysis/Synonym/SolrSynonymParser.cs          |   13 +-
 .../Analysis/Synonym/SynonymFilter.cs              |   12 +-
 .../Analysis/Synonym/SynonymMap.cs                 |   37 +-
 .../Analysis/Synonym/WordnetSynonymParser.cs       |    9 +-
 .../Analysis/Th/ThaiAnalyzer.cs                    |   10 +-
 .../Analysis/Th/ThaiTokenizer.cs                   |   95 +-
 .../Analysis/Th/ThaiWordFilter.cs                  |    6 +-
 .../Analysis/Tr/TurkishAnalyzer.cs                 |   14 +-
 .../Analysis/Tr/TurkishLowerCaseFilter.cs          |    4 +-
 .../Analysis/Util/AbstractAnalysisFactory.cs       |   19 +-
 .../Analysis/Util/AnalysisSPILoader.cs             |   18 +-
 .../Analysis/Util/BufferedCharFilter.cs            |  218 +-
 .../Analysis/Util/CharArrayIterator.cs             |    4 +-
 .../Analysis/Util/CharArrayMap.cs                  | 4277 ++++++++++++--------
 .../Analysis/Util/CharArraySet.cs                  | 2214 ++++++----
 .../Analysis/Util/CharTokenizer.cs                 |    6 +-
 .../Analysis/Util/CharacterUtils.cs                |  106 +-
 .../Analysis/Util/ClasspathResourceLoader.cs       |   12 +-
 .../Analysis/Util/ElisionFilter.cs                 |    4 +-
 .../Analysis/Util/ElisionFilterFactory.cs          |    2 +-
 .../Analysis/Util/FilesystemResourceLoader.cs      |   10 +-
 .../Analysis/Util/OpenStringBuilder.cs             |   64 +-
 .../Analysis/Util/SegmentingTokenizerBase.cs       |    6 +-
 .../Analysis/Util/StopwordAnalyzerBase.cs          |    4 +-
 .../Analysis/Util/WordlistLoader.cs                |    9 +-
 .../Analysis/Wikipedia/WikipediaTokenizer.cs       |    7 +-
 .../Analysis/Wikipedia/WikipediaTokenizerImpl.cs   |   11 +-
 .../Collation/CollationKeyFilterFactory.cs         |    6 +-
 .../Lucene.Net.Analysis.Common.csproj              |   29 +-
 .../Tartarus/Snowball/Ext/BasqueStemmer.cs         |    4 +-
 .../Tartarus/Snowball/Ext/CatalanStemmer.cs        |    2 +-
 .../Tartarus/Snowball/Ext/EnglishStemmer.cs        |    4 +-
 .../Tartarus/Snowball/Ext/FrenchStemmer.cs         |   10 +-
 .../Tartarus/Snowball/Ext/ItalianStemmer.cs        |    6 +-
 .../Tartarus/Snowball/Ext/KpStemmer.cs             |    4 +-
 .../Tartarus/Snowball/Ext/PorterStemmer.cs         |    4 +-
 .../Tartarus/Snowball/Ext/PortugueseStemmer.cs     |    6 +-
 .../Tartarus/Snowball/Ext/RomanianStemmer.cs       |    6 +-
 .../Tartarus/Snowball/Ext/RussianStemmer.cs        |    4 +-
 .../Tartarus/Snowball/Ext/SpanishStemmer.cs        |    6 +-
 .../Tartarus/Snowball/Ext/TurkishStemmer.cs        |   22 +-
 .../Tartarus/Snowball/SnowballProgram.cs           |    4 +-
 .../Analysis/Icu/ICUNormalizer2CharFilter.cs       |   10 +-
 .../Analysis/Icu/ICUTransformFilter.cs             |    2 +-
 .../Icu/Segmentation/DefaultICUTokenizerConfig.cs  |    4 +-
 .../Analysis/Icu/Segmentation/ICUTokenizer.cs      |   26 +-
 .../Icu/Segmentation/ICUTokenizerFactory.cs        |    4 +-
 .../Icu/TokenAttributes/ScriptAttributeImpl.cs     |   14 +-
 .../Collation/ICUCollationKeyFilterFactory.cs      |    8 +-
 .../Dict/BinaryDictionary.cs                       |   14 +-
 .../Dict/CharacterDefinition.cs                    |    6 +-
 .../Dict/ConnectionCosts.cs                        |    6 +-
 .../Dict/TokenInfoDictionary.cs                    |   11 +-
 .../Dict/TokenInfoFST.cs                           |   31 +-
 .../Dict/UnknownDictionary.cs                      |    6 +-
 .../Dict/UserDictionary.cs                         |   27 +-
 .../GraphvizFormatter.cs                           |   13 +-
 .../JapaneseAnalyzer.cs                            |   31 +-
 .../JapaneseKatakanaStemFilterFactory.cs           |    2 +-
 .../JapanesePartOfSpeechStopFilter.cs              |    2 +-
 .../JapaneseReadingFormFilter.cs                   |    2 +-
 .../JapaneseTokenizer.cs                           |   17 +-
 .../JapaneseTokenizerFactory.cs                    |    2 +-
 .../Lucene.Net.Analysis.Kuromoji.csproj            |   17 +-
 src/Lucene.Net.Analysis.Kuromoji/Token.cs          |   15 +-
 .../TokenAttributes/BaseFormAttributeImpl.cs       |   14 +-
 .../TokenAttributes/InflectionAttributeImpl.cs     |   18 +-
 .../TokenAttributes/PartOfSpeechAttributeImpl.cs   |   16 +-
 .../TokenAttributes/ReadingAttributeImpl.cs        |   18 +-
 .../Tools/BinaryDictionaryWriter.cs                |   11 +-
 .../Tools/TokenInfoDictionaryBuilder.cs            |   12 +-
 .../Tools/TokenInfoDictionaryWriter.cs             |    5 +-
 .../Tools/UnknownDictionaryBuilder.cs              |    3 +-
 src/Lucene.Net.Analysis.Kuromoji/Util/CSVUtil.cs   |    6 +-
 .../Util/ToStringUtil.cs                           |   12 +-
 .../Lucene.Net.Analysis.Morfologik.csproj          |   32 +-
 .../Morfologik/MorfologikFilter.cs                 |    9 +-
 .../Morfologik/MorfologikFilterFactory.cs          |    4 +-
 .../IMorphosyntacticTagsAttribute.cs               |   44 -
 .../MorphosyntacticTagsAttribute.cs                |   83 +-
 .../MorphosyntacticTagsAttributeImpl.cs            |  116 +
 .../Uk/UkrainianMorfologikAnalyzer.cs              |   14 +-
 .../Lucene.Net.Analysis.OpenNLP.csproj             |   16 +-
 .../OpenNLPChunkerFilter.cs                        |   11 +-
 .../OpenNLPChunkerFilterFactory.cs                 |    4 +-
 .../OpenNLPLemmatizerFilter.cs                     |   11 +-
 .../OpenNLPLemmatizerFilterFactory.cs              |    6 +-
 .../OpenNLPPOSFilter.cs                            |    7 +-
 .../OpenNLPPOSFilterFactory.cs                     |    4 +-
 .../OpenNLPSentenceBreakIterator.cs                |    4 +-
 .../OpenNLPTokenizer.cs                            |   11 +-
 .../OpenNLPTokenizerFactory.cs                     |    4 +-
 .../Tools/NLPChunkerOp.cs                          |    8 +-
 .../Tools/NLPLemmatizerOp.cs                       |    6 +-
 .../Tools/NLPNERTaggerOp.cs                        |    8 +-
 .../Tools/NLPPOSTaggerOp.cs                        |    8 +-
 .../Tools/NLPSentenceDetectorOp.cs                 |    8 +-
 .../Tools/NLPTokenizerOp.cs                        |   10 +-
 .../Tools/OpenNLPOpsFactory.cs                     |    4 +-
 .../BeiderMorseFilter.cs                           |    2 +-
 .../Language/Bm/BeiderMorseEncoder.cs              |    2 +-
 .../Language/Bm/Lang.cs                            |    6 +-
 .../Language/Bm/Languages.cs                       |    2 +-
 .../Language/Bm/PhoneticEngine.cs                  |   20 +-
 .../Language/Bm/Rule.cs                            |   29 +-
 .../Language/Caverphone1.cs                        |    2 +-
 .../Language/Caverphone2.cs                        |    2 +-
 .../Language/ColognePhonetic.cs                    |    8 +-
 .../Language/DaitchMokotoffSoundex.cs              |   29 +-
 .../Language/DoubleMetaphone.cs                    |   26 +-
 .../Language/MatchRatingApproachEncoder.cs         |   15 +-
 .../Language/Metaphone.cs                          |   12 +-
 .../Language/Nysiis.cs                             |    2 +-
 .../Language/RefinedSoundex.cs                     |    2 +-
 .../Language/Soundex.cs                            |    4 +-
 .../Language/SoundexUtils.cs                       |    4 +-
 .../Lucene.Net.Analysis.Phonetic.csproj            |   18 +-
 src/Lucene.Net.Analysis.Phonetic/PhoneticFilter.cs |    4 +-
 .../PhoneticFilterFactory.cs                       |   10 +-
 src/Lucene.Net.Analysis.SmartCn/AnalyzerProfile.cs |    4 -
 .../HMMChineseTokenizer.cs                         |    2 +-
 .../Hhmm/AbstractDictionary.cs                     |    6 +-
 src/Lucene.Net.Analysis.SmartCn/Hhmm/BiSegGraph.cs |   11 +-
 .../Hhmm/BigramDictionary.cs                       |   22 +-
 .../Hhmm/HHMMSegmenter.cs                          |    2 +-
 src/Lucene.Net.Analysis.SmartCn/Hhmm/PathNode.cs   |    2 +-
 src/Lucene.Net.Analysis.SmartCn/Hhmm/SegGraph.cs   |    7 +-
 src/Lucene.Net.Analysis.SmartCn/Hhmm/SegToken.cs   |    3 +-
 .../Hhmm/SegTokenPair.cs                           |    2 +-
 .../Hhmm/WordDictionary.cs                         |   34 +-
 .../Lucene.Net.Analysis.SmartCn.csproj             |   20 +-
 .../SmartChineseAnalyzer.cs                        |   22 +-
 src/Lucene.Net.Analysis.SmartCn/Utility.cs         |   12 +-
 src/Lucene.Net.Analysis.SmartCn/WordSegmenter.cs   |    3 +-
 src/Lucene.Net.Analysis.SmartCn/WordTokenFilter.cs |    2 +-
 .../Egothor.Stemmer/Compile.cs                     |   12 +-
 .../Egothor.Stemmer/Diff.cs                        |   11 +-
 .../Egothor.Stemmer/DiffIt.cs                      |   18 +-
 .../Egothor.Stemmer/Gener.cs                       |    3 +-
 .../Egothor.Stemmer/Lift.cs                        |    3 +-
 .../Egothor.Stemmer/MultiTrie.cs                   |    9 +-
 .../Egothor.Stemmer/MultiTrie2.cs                  |   22 +-
 .../Egothor.Stemmer/Optimizer.cs                   |    9 +-
 .../Egothor.Stemmer/Reduce.cs                      |    5 +-
 .../Egothor.Stemmer/Row.cs                         |   10 +-
 .../Egothor.Stemmer/Trie.cs                        |    9 +-
 .../Lucene.Net.Analysis.Stempel.csproj             |   16 +-
 .../Pl/PolishAnalyzer.cs                           |   18 +-
 .../Stempel/StempelStemmer.cs                      |    2 +-
 src/Lucene.Net.Benchmark/ByTask/Benchmark.cs       |   25 +-
 .../ByTask/Feeds/AbstractQueryMaker.cs             |    8 +-
 .../ByTask/Feeds/ContentItemsSource.cs             |   21 +-
 .../ByTask/Feeds/DemoHTMLParser.cs                 |    4 +-
 .../ByTask/Feeds/DirContentSource.cs               |   27 +-
 src/Lucene.Net.Benchmark/ByTask/Feeds/DocData.cs   |    4 +-
 src/Lucene.Net.Benchmark/ByTask/Feeds/DocMaker.cs  |   27 +-
 .../ByTask/Feeds/EnwikiContentSource.cs            |  127 +-
 .../ByTask/Feeds/EnwikiQueryMaker.cs               |    9 +-
 .../ByTask/Feeds/FileBasedQueryMaker.cs            |    6 +-
 .../ByTask/Feeds/LineDocSource.cs                  |   36 +-
 .../ByTask/Feeds/LongToEnglishContentSource.cs     |   17 +-
 .../ByTask/Feeds/LongToEnglishQueryMaker.cs        |   17 +-
 .../ByTask/Feeds/RandomFacetSource.cs              |    4 +-
 .../ByTask/Feeds/ReutersContentSource.cs           |   22 +-
 .../ByTask/Feeds/ReutersQueryMaker.cs              |    7 +-
 .../ByTask/Feeds/SimpleQueryMaker.cs               |    4 +-
 .../ByTask/Feeds/SimpleSloppyPhraseQueryMaker.cs   |    6 +-
 .../ByTask/Feeds/SingleDocSource.cs                |   18 +-
 .../ByTask/Feeds/SortableSingleDocSource.cs        |    2 +-
 .../ByTask/Feeds/SpatialDocMaker.cs                |   57 +-
 .../ByTask/Feeds/SpatialFileQueryMaker.cs          |    7 +-
 .../ByTask/Feeds/TrecContentSource.cs              |   76 +-
 .../ByTask/Feeds/TrecLATimesParser.cs              |    2 +-
 src/Lucene.Net.Benchmark/ByTask/PerfRunData.cs     |   68 +-
 src/Lucene.Net.Benchmark/ByTask/Stats/Points.cs    |   25 +-
 src/Lucene.Net.Benchmark/ByTask/Stats/TaskStats.cs |   16 +-
 .../ByTask/Tasks/AddFacetedDocTask.cs              |    7 +-
 .../ByTask/Tasks/AddIndexesTask.cs                 |    2 +-
 .../ByTask/Tasks/AnalyzerFactoryTask.cs            |   86 +-
 .../ByTask/Tasks/CommitTaxonomyIndexTask.cs        |    2 +-
 .../ByTask/Tasks/CreateIndexTask.cs                |   28 +-
 .../ByTask/Tasks/ForceMergeTask.cs                 |    2 +-
 .../ByTask/Tasks/NearRealtimeReaderTask.cs         |   16 +-
 .../ByTask/Tasks/NewAnalyzerTask.cs                |   22 +-
 .../ByTask/Tasks/NewCollationAnalyzerTask.cs       |   10 +-
 .../ByTask/Tasks/NewLocaleTask.cs                  |    4 +-
 src/Lucene.Net.Benchmark/ByTask/Tasks/PerfTask.cs  |    6 +-
 .../ByTask/Tasks/PrintReaderTask.cs                |    2 +-
 src/Lucene.Net.Benchmark/ByTask/Tasks/ReadTask.cs  |    4 +-
 .../ByTask/Tasks/ReadTokensTask.cs                 |    5 +-
 .../ByTask/Tasks/RepSumByNameRoundTask.cs          |    2 +-
 .../ByTask/Tasks/RepSumByNameTask.cs               |    2 +-
 .../ByTask/Tasks/RepSumByPrefRoundTask.cs          |    2 +-
 .../ByTask/Tasks/RepSumByPrefTask.cs               |    2 +-
 .../ByTask/Tasks/SearchTravRetHighlightTask.cs     |   15 +-
 .../Tasks/SearchTravRetLoadFieldSelectorTask.cs    |    2 +-
 .../Tasks/SearchTravRetVectorHighlightTask.cs      |   11 +-
 .../ByTask/Tasks/SearchWithSortTask.cs             |    6 +-
 .../ByTask/Tasks/SetPropTask.cs                    |    2 +-
 .../ByTask/Tasks/TaskSequence.cs                   |   46 +-
 .../ByTask/Tasks/UpdateDocTask.cs                  |    4 +-
 src/Lucene.Net.Benchmark/ByTask/Tasks/WaitTask.cs  |    3 +-
 .../ByTask/Tasks/WriteEnwikiLineDocTask.cs         |    2 +-
 .../ByTask/Tasks/WriteLineDocTask.cs               |   27 +-
 src/Lucene.Net.Benchmark/ByTask/Utils/Algorithm.cs |   20 +-
 src/Lucene.Net.Benchmark/ByTask/Utils/Config.cs    |   37 +-
 .../Lucene.Net.Benchmark.csproj                    |   24 +-
 .../Quality/QualityBenchmark.cs                    |   11 +-
 src/Lucene.Net.Benchmark/Quality/QualityQuery.cs   |    2 +-
 src/Lucene.Net.Benchmark/Quality/QualityStats.cs   |   10 +-
 .../Quality/Trec/Trec1MQReader.cs                  |    3 +-
 src/Lucene.Net.Benchmark/Quality/Trec/TrecJudge.cs |    6 +-
 .../Quality/Trec/TrecTopicsReader.cs               |    7 +-
 .../Quality/Utils/DocNameExtractor.cs              |    5 +-
 .../Quality/Utils/SimpleQQParser.cs                |    2 +-
 .../Quality/Utils/SubmissionReport.cs              |    4 +-
 .../Support/Sax/Helpers/AttributesImpl.cs          |    4 +-
 .../Support/Sax/Helpers/NamespaceSupport.cs        |   21 +-
 .../Support/Sax/Helpers/XMLFilterImpl.cs           |    2 +-
 .../Support/Sax/SAXException.cs                    |    6 +-
 .../Support/Sax/SAXParseException.cs               |   10 +-
 .../Support/TagSoup/Element.cs                     |    2 +-
 .../Support/TagSoup/ElementType.cs                 |    6 +-
 src/Lucene.Net.Benchmark/Support/TagSoup/Guard.cs  |   39 +
 .../Support/TagSoup/HTMLScanner.cs                 |   51 +-
 .../Support/TagSoup/PYXScanner.cs                  |   51 +-
 .../Support/TagSoup/PYXWriter.cs                   |  155 +-
 src/Lucene.Net.Benchmark/Support/TagSoup/Parser.cs |  323 +-
 .../Support/TagSoup/ScanHandler.cs                 |   30 +-
 .../Support/TagSoup/Scanner.cs                     |   10 +-
 src/Lucene.Net.Benchmark/Support/TagSoup/Schema.cs |   35 +-
 .../Support/TagSoup/XMLWriter.cs                   |   93 +-
 .../Support/Util/EnglishNumberFormatExtensions.cs  |   28 +-
 src/Lucene.Net.Benchmark/Utils/ExtractReuters.cs   |    4 +-
 src/Lucene.Net.Benchmark/Utils/ExtractWikipedia.cs |   12 +-
 src/Lucene.Net.Classification/IClassifier.cs       |    7 +-
 .../KNearestNeighborClassifier.cs                  |    7 +-
 .../Lucene.Net.Classification.csproj               |   14 +-
 .../SimpleNaiveBayesClassifier.cs                  |    7 +-
 .../Utils/DatasetSplitter.cs                       |   32 +-
 .../Appending/AppendingPostingsFormat.cs           |    2 +-
 .../BlockTerms/BlockTermsReader.cs                 |   26 +-
 .../BlockTerms/BlockTermsWriter.cs                 |   25 +-
 .../BlockTerms/FixedGapTermsIndexReader.cs         |    4 +-
 .../BlockTerms/FixedGapTermsIndexWriter.cs         |   16 +-
 .../BlockTerms/VariableGapTermsIndexReader.cs      |   51 +-
 .../BlockTerms/VariableGapTermsIndexWriter.cs      |   18 +-
 .../Bloom/BloomFilteringPostingsFormat.cs          |   36 +-
 src/Lucene.Net.Codecs/Bloom/FuzzySet.cs            |   20 +-
 .../DiskDV/DiskDocValuesFormat.cs                  |    2 +-
 .../DiskDV/DiskDocValuesProducer.cs                |    5 +-
 .../IntBlock/FixedIntBlockIndexInput.cs            |    2 +-
 .../IntBlock/FixedIntBlockIndexOutput.cs           |    2 +-
 .../IntBlock/VariableIntBlockIndexInput.cs         |    6 +-
 .../IntBlock/VariableIntBlockIndexOutput.cs        |    2 +-
 src/Lucene.Net.Codecs/Lucene.Net.Codecs.csproj     |   14 +-
 .../Memory/DirectDocValuesConsumer.cs              |   18 +-
 .../Memory/DirectDocValuesProducer.cs              |   85 +-
 .../Memory/DirectPostingsFormat.cs                 |   61 +-
 src/Lucene.Net.Codecs/Memory/FSTOrdTermsReader.cs  |   69 +-
 src/Lucene.Net.Codecs/Memory/FSTOrdTermsWriter.cs  |   46 +-
 src/Lucene.Net.Codecs/Memory/FSTTermOutputs.cs     |    6 +-
 src/Lucene.Net.Codecs/Memory/FSTTermsReader.cs     |   40 +-
 src/Lucene.Net.Codecs/Memory/FSTTermsWriter.cs     |   20 +-
 .../Memory/MemoryDocValuesConsumer.cs              |   68 +-
 .../Memory/MemoryDocValuesProducer.cs              |  173 +-
 .../Memory/MemoryPostingsFormat.cs                 |   30 +-
 .../Pulsing/PulsingPostingsReader.cs               |   24 +-
 .../Pulsing/PulsingPostingsWriter.cs               |   18 +-
 src/Lucene.Net.Codecs/Sep/SepPostingsReader.cs     |   18 +-
 src/Lucene.Net.Codecs/Sep/SepPostingsWriter.cs     |    8 +-
 src/Lucene.Net.Codecs/Sep/SepSkipListWriter.cs     |    4 +-
 .../SimpleText/SimpleTextDocValuesReader.cs        |   79 +-
 .../SimpleText/SimpleTextDocValuesWriter.cs        |   14 +-
 .../SimpleText/SimpleTextFieldInfosReader.cs       |    2 +-
 .../SimpleText/SimpleTextFieldInfosWriter.cs       |    4 +-
 .../SimpleText/SimpleTextFieldsReader.cs           |  632 +--
 .../SimpleText/SimpleTextFieldsWriter.cs           |  116 +-
 .../SimpleText/SimpleTextLiveDocsFormat.cs         |    2 +-
 .../SimpleText/SimpleTextSegmentInfoReader.cs      |    2 +-
 .../SimpleText/SimpleTextSegmentInfoWriter.cs      |    6 +-
 .../SimpleText/SimpleTextStoredFieldsReader.cs     |   25 +-
 .../SimpleText/SimpleTextStoredFieldsWriter.cs     |   12 +-
 .../SimpleText/SimpleTextTermVectorsReader.cs      |   24 +-
 .../SimpleText/SimpleTextTermVectorsWriter.cs      |    4 +-
 src/Lucene.Net.Codecs/SimpleText/SimpleTextUtil.cs |    4 +-
 src/Lucene.Net.Demo/Facet/DistanceFacetsExample.cs |    8 +-
 .../Facet/ExpressionAggregationFacetsExample.cs    |    8 +-
 src/Lucene.Net.Demo/Facet/RangeFacetsExample.cs    |    2 +-
 src/Lucene.Net.Demo/IndexFiles.cs                  |    2 +-
 src/Lucene.Net.Demo/Lucene.Net.Demo.csproj         |    5 +-
 src/Lucene.Net.Demo/SearchFiles.cs                 |    6 +-
 src/Lucene.Net.Expressions/Bindings.cs             |    5 +-
 src/Lucene.Net.Expressions/Expression.cs           |    4 +-
 src/Lucene.Net.Expressions/ExpressionComparator.cs |   26 +-
 .../ExpressionFunctionValues.cs                    |    6 +-
 src/Lucene.Net.Expressions/ExpressionRescorer.cs   |    8 +-
 src/Lucene.Net.Expressions/ExpressionSortField.cs  |    4 +-
 .../ExpressionValueSource.cs                       |   26 +-
 .../JS/JavascriptCompiler.cs                       |   42 +-
 src/Lucene.Net.Expressions/JS/JavascriptLexer.cs   |   78 +-
 src/Lucene.Net.Expressions/JS/JavascriptParser.cs  |   73 +-
 .../Lucene.Net.Expressions.csproj                  |   14 +-
 src/Lucene.Net.Expressions/ScoreFunctionValues.cs  |   10 +-
 src/Lucene.Net.Expressions/ScoreValueSource.cs     |    4 +-
 src/Lucene.Net.Expressions/SimpleBindings.cs       |   40 +-
 src/Lucene.Net.Facet/DrillDownQuery.cs             |   60 +-
 src/Lucene.Net.Facet/DrillSideways.cs              |    2 +-
 src/Lucene.Net.Facet/DrillSidewaysQuery.cs         |   20 +-
 src/Lucene.Net.Facet/DrillSidewaysScorer.cs        |   36 +-
 src/Lucene.Net.Facet/FacetField.cs                 |   13 +-
 src/Lucene.Net.Facet/FacetResult.cs                |   45 +-
 src/Lucene.Net.Facet/FacetsCollector.cs            |   21 +-
 src/Lucene.Net.Facet/FacetsConfig.cs               |   50 +-
 src/Lucene.Net.Facet/LabelAndValue.cs              |   27 +-
 src/Lucene.Net.Facet/Lucene.Net.Facet.csproj       |   14 +-
 src/Lucene.Net.Facet/MultiFacets.cs                |    7 +-
 .../RandomSamplingFacetsCollector.cs               |   12 +-
 src/Lucene.Net.Facet/Range/DoubleRange.cs          |   22 +-
 .../Range/DoubleRangeFacetCounts.cs                |    6 +-
 src/Lucene.Net.Facet/Range/LongRange.cs            |   18 +-
 src/Lucene.Net.Facet/Range/LongRangeCounter.cs     |   29 +-
 src/Lucene.Net.Facet/Range/LongRangeFacetCounts.cs |    6 +-
 src/Lucene.Net.Facet/Range/Range.cs                |    2 +-
 src/Lucene.Net.Facet/Range/RangeFacetCounts.cs     |    7 +-
 .../DefaultSortedSetDocValuesReaderState.cs        |    2 +-
 .../SortedSet/SortedSetDocValuesFacetCounts.cs     |   19 +-
 .../SortedSet/SortedSetDocValuesFacetField.cs      |   13 +-
 .../Taxonomy/AssociationFacetField.cs              |   13 +-
 .../Taxonomy/CachedOrdinalsReader.cs               |   68 +-
 src/Lucene.Net.Facet/Taxonomy/CategoryPath.cs      |    2 +-
 .../Taxonomy/Directory/DirectoryTaxonomyReader.cs  |   10 +-
 .../Taxonomy/Directory/DirectoryTaxonomyWriter.cs  |  115 +-
 .../Taxonomy/Directory/TaxonomyIndexArrays.cs      |    2 +-
 .../Taxonomy/DocValuesOrdinalsReader.cs            |    4 +-
 .../Taxonomy/FastTaxonomyFacetCounts.cs            |    2 +-
 .../Taxonomy/FloatTaxonomyFacets.cs                |    2 +-
 src/Lucene.Net.Facet/Taxonomy/IntTaxonomyFacets.cs |    2 +-
 src/Lucene.Net.Facet/Taxonomy/LRUHashMap.cs        |    2 +-
 .../Taxonomy/SearcherTaxonomyManager.cs            |   10 +-
 .../Taxonomy/TaxonomyFacetSumFloatAssociations.cs  |    2 +-
 .../Taxonomy/TaxonomyFacetSumIntAssociations.cs    |    2 +-
 .../Taxonomy/TaxonomyFacetSumValueSource.cs        |   20 +-
 src/Lucene.Net.Facet/Taxonomy/TaxonomyFacets.cs    |    5 +-
 src/Lucene.Net.Facet/Taxonomy/TaxonomyReader.cs    |   12 +-
 src/Lucene.Net.Facet/Taxonomy/TaxonomyWriter.cs    |    2 +-
 .../Taxonomy/WriterCache/CharBlockArray.cs         |    5 +-
 .../WriterCache/Cl2oTaxonomyWriterCache.cs         |   10 +-
 .../Taxonomy/WriterCache/CollisionMap.cs           |   15 +-
 .../Taxonomy/WriterCache/LruTaxonomyWriterCache.cs |   36 +-
 .../Taxonomy/WriterCache/NameIntCacheLRU.cs        |   12 +-
 .../AbstractFirstPassGroupingCollector.cs          |   27 +-
 .../AbstractGroupFacetCollector.cs                 |    8 +-
 .../AbstractSecondPassGroupingCollector.cs         |   10 +-
 src/Lucene.Net.Grouping/BlockGroupingCollector.cs  |   20 +-
 .../Function/FunctionAllGroupsCollector.cs         |    9 +-
 .../Function/FunctionDistinctValuesCollector.cs    |    2 +-
 .../Function/FunctionFirstPassGroupingCollector.cs |   13 +-
 .../FunctionSecondPassGroupingCollector.cs         |   15 +-
 src/Lucene.Net.Grouping/GroupingSearch.cs          |  328 +-
 src/Lucene.Net.Grouping/Lucene.Net.Grouping.csproj |   14 +-
 src/Lucene.Net.Grouping/SearchGroup.cs             |   26 +-
 .../Term/TermAllGroupHeadsCollector.cs             |   34 +-
 .../Term/TermAllGroupsCollector.cs                 |    5 +-
 .../Term/TermDistinctValuesCollector.cs            |   13 +-
 .../Term/TermFirstPassGroupingCollector.cs         |    2 +-
 .../Term/TermGroupFacetCollector.cs                |   16 +-
 .../Term/TermSecondPassGroupingCollector.cs        |    6 +-
 src/Lucene.Net.Grouping/TopGroups.cs               |    8 +-
 .../Highlight/GradientFormatter.cs                 |   78 +-
 .../Highlight/Highlighter.cs                       |   15 +-
 .../Highlight/QueryScorer.cs                       |    8 +-
 .../Highlight/QueryTermExtractor.cs                |    8 +-
 .../Highlight/QueryTermScorer.cs                   |    4 +-
 .../Highlight/SimpleHTMLEncoder.cs                 |    2 +-
 .../Highlight/TokenSources.cs                      |   25 +-
 .../Highlight/TokenStreamFromTermPositionVector.cs |    3 +-
 .../Highlight/WeightedSpanTerm.cs                  |    3 +-
 .../Highlight/WeightedSpanTermExtractor.cs         |   32 +-
 .../Lucene.Net.Highlighter.csproj                  |   14 +-
 .../PostingsHighlight/DefaultPassageFormatter.cs   |   13 +-
 .../PostingsHighlight/MultiTermHighlighting.cs     |   21 +-
 .../PostingsHighlight/Passage.cs                   |    2 +-
 .../PostingsHighlight/PostingsHighlighter.cs       |   52 +-
 .../PostingsHighlight/WholeBreakIterator.cs        |   32 +-
 .../VectorHighlight/BaseFragListBuilder.cs         |   25 +-
 .../VectorHighlight/BaseFragmentsBuilder.cs        |   98 +-
 .../VectorHighlight/FastVectorHighlighter.cs       |    4 +-
 .../VectorHighlight/FieldFragList.cs               |   20 +-
 .../VectorHighlight/FieldPhraseList.cs             |   47 +-
 .../VectorHighlight/FieldQuery.cs                  |   32 +-
 .../VectorHighlight/FieldTermStack.cs              |   16 +-
 .../VectorHighlight/ScoreOrderFragmentsBuilder.cs  |   15 +-
 .../VectorHighlight/SimpleFieldFragList.cs         |    3 +-
 .../VectorHighlight/SingleFragListBuilder.cs       |    5 +-
 .../VectorHighlight/WeightedFieldFragList.cs       |    4 +-
 src/Lucene.Net.Join/FakeScorer.cs                  |   14 +-
 .../FixedBitSetCachingWrapperFilter.cs             |    7 +-
 src/Lucene.Net.Join/JoinUtil.cs                    |    3 +-
 src/Lucene.Net.Join/Lucene.Net.Join.csproj         |   16 +-
 src/Lucene.Net.Join/ScoreMode.cs                   |    2 +-
 .../Support/FixedBitSetCachingWrapperFilter.cs     |   66 +
 src/Lucene.Net.Join/Support/JoinUtil.cs            |   82 +
 src/Lucene.Net.Join/Support/ScoreMode.cs           |   50 +
 .../Support/ToChildBlockJoinQuery.cs               |  391 ++
 .../Support/ToParentBlockJoinCollector.cs          |  555 +++
 .../Support/ToParentBlockJoinFieldComparator.cs    |  387 ++
 .../Support/ToParentBlockJoinQuery.cs              |  502 +++
 .../Support/ToParentBlockJoinSortField.cs          |   81 +
 src/Lucene.Net.Join/TermsCollector.cs              |    5 +-
 src/Lucene.Net.Join/TermsIncludingScoreQuery.cs    |   11 +-
 src/Lucene.Net.Join/TermsQuery.cs                  |    5 +-
 src/Lucene.Net.Join/TermsWithScoreCollector.cs     |    5 +-
 src/Lucene.Net.Join/ToChildBlockJoinQuery.cs       |   42 +-
 src/Lucene.Net.Join/ToParentBlockJoinCollector.cs  |   25 +-
 .../ToParentBlockJoinFieldComparator.cs            |   19 +-
 src/Lucene.Net.Join/ToParentBlockJoinQuery.cs      |   26 +-
 src/Lucene.Net.Join/ToParentBlockJoinSortField.cs  |    3 +-
 src/Lucene.Net.Join/overview.md                    |    2 +-
 src/Lucene.Net.Join/package.md                     |   13 +-
 src/Lucene.Net.Memory/Lucene.Net.Memory.csproj     |   14 +-
 src/Lucene.Net.Memory/MemoryIndex.Info.cs          |    7 +-
 .../MemoryIndex.MemoryIndexReader.cs               |   18 +-
 src/Lucene.Net.Memory/MemoryIndex.cs               |   78 +-
 src/Lucene.Net.Misc/Document/LazyDocument.cs       |   25 +-
 src/Lucene.Net.Misc/Index/CompoundFileExtractor.cs |   14 +-
 src/Lucene.Net.Misc/Index/IndexSplitter.cs         |   13 +-
 .../Index/MultiPassIndexSplitter.cs                |   14 +-
 src/Lucene.Net.Misc/Index/PKIndexSplitter.cs       |    4 +-
 .../Index/Sorter/BlockJoinComparatorSource.cs      |   28 +-
 .../Sorter/EarlyTerminatingSortingCollector.cs     |    2 +-
 src/Lucene.Net.Misc/Index/Sorter/Sorter.cs         |   22 +-
 .../Index/Sorter/SortingAtomicReader.cs            |   38 +-
 .../Index/Sorter/SortingMergePolicy.cs             |   17 +-
 src/Lucene.Net.Misc/Lucene.Net.Misc.csproj         |   14 +-
 src/Lucene.Net.Misc/Misc/GetTermInfo.cs            |    2 +-
 src/Lucene.Net.Misc/Misc/HighFreqTerms.cs          |   19 +-
 src/Lucene.Net.Misc/Util/Fst/ListOfOutputs.cs      |   12 +-
 .../Util/Fst/UpToTwoPositiveIntOutputs.cs          |   45 +-
 src/Lucene.Net.Queries/BooleanFilter.cs            |   14 +-
 src/Lucene.Net.Queries/BoostingQuery.cs            |   14 +-
 src/Lucene.Net.Queries/ChainedFilter.cs            |    6 +-
 src/Lucene.Net.Queries/CommonTermsQuery.cs         |   34 +-
 src/Lucene.Net.Queries/CustomScoreQuery.cs         |   15 +-
 src/Lucene.Net.Queries/Function/BoostedQuery.cs    |    5 +-
 .../Function/DocValues/BoolDocValues.cs            |    2 +-
 .../Function/DocValues/DocTermsIndexDocValues.cs   |   18 +-
 .../Function/DocValues/DoubleDocValues.cs          |   13 +-
 .../Function/DocValues/FloatDocValues.cs           |    4 +-
 .../Function/DocValues/IntDocValues.cs             |    8 +-
 .../Function/DocValues/LongDocValues.cs            |    6 +-
 src/Lucene.Net.Queries/Function/FunctionQuery.cs   |    1 +
 src/Lucene.Net.Queries/Function/FunctionValues.cs  |   45 +-
 src/Lucene.Net.Queries/Function/ValueSource.cs     |   18 +-
 .../Function/ValueSourceScorer.cs                  |    2 +-
 .../Function/ValueSources/ByteFieldSource.cs       |   11 +-
 .../Function/ValueSources/BytesRefFieldSource.cs   |    4 +-
 .../Function/ValueSources/ConstValueSource.cs      |    4 +-
 .../Function/ValueSources/DefFunction.cs           |    2 +-
 .../Function/ValueSources/DocFreqValueSource.cs    |    4 +-
 .../ValueSources/DoubleConstValueSource.cs         |    6 +-
 .../Function/ValueSources/DoubleFieldSource.cs     |    6 +-
 .../Function/ValueSources/DualFloatFunction.cs     |    2 +-
 .../Function/ValueSources/EnumFieldSource.cs       |   46 +-
 .../Function/ValueSources/FloatFieldSource.cs      |    8 +-
 .../Function/ValueSources/IDFValueSource.cs        |    4 +-
 .../Function/ValueSources/IfFunction.cs            |    2 +-
 .../Function/ValueSources/IntFieldSource.cs        |    8 +-
 .../ValueSources/JoinDocFreqValueSource.cs         |    8 +-
 .../Function/ValueSources/LinearFloatFunction.cs   |    2 +-
 .../Function/ValueSources/LiteralValueSource.cs    |    2 +-
 .../Function/ValueSources/LongFieldSource.cs       |   16 +-
 .../Function/ValueSources/MultiBoolFunction.cs     |    2 +-
 .../Function/ValueSources/MultiFloatFunction.cs    |    2 +-
 .../Function/ValueSources/NormValueSource.cs       |    8 +-
 .../Function/ValueSources/QueryValueSource.cs      |   32 +-
 .../Function/ValueSources/RangeMapFloatFunction.cs |   19 +-
 .../ValueSources/ReciprocalFloatFunction.cs        |   15 +-
 .../Function/ValueSources/ReverseOrdFieldSource.cs |    2 +-
 .../Function/ValueSources/ScaleFloatFunction.cs    |    8 +-
 .../Function/ValueSources/ShortFieldSource.cs      |    6 +-
 .../Function/ValueSources/SimpleBoolFunction.cs    |    2 +-
 .../Function/ValueSources/SimpleFloatFunction.cs   |    2 +-
 .../ValueSources/SumTotalTermFreqValueSource.cs    |    6 +-
 .../Function/ValueSources/TFValueSource.cs         |   16 +-
 .../Function/ValueSources/TermFreqValueSource.cs   |   12 +-
 .../ValueSources/TotalTermFreqValueSource.cs       |    2 +-
 .../Function/ValueSources/VectorValueSource.cs     |    6 +-
 src/Lucene.Net.Queries/Lucene.Net.Queries.csproj   |   14 +-
 src/Lucene.Net.Queries/Mlt/MoreLikeThis.cs         |   30 +-
 src/Lucene.Net.Queries/Mlt/MoreLikeThisQuery.cs    |   16 +-
 src/Lucene.Net.Queries/TermFilter.cs               |   16 +-
 src/Lucene.Net.Queries/TermsFilter.cs              |   37 +-
 .../Analyzing/AnalyzingQueryParser.cs              |   10 +-
 .../Classic/FastCharStream.cs                      |    6 +-
 .../Classic/MultiFieldQueryParser.cs               |   59 +-
 .../Classic/ParseException.cs                      |    6 +-
 src/Lucene.Net.QueryParser/Classic/QueryParser.cs  |   70 +-
 .../Classic/QueryParserBase.cs                     |  125 +-
 .../Classic/QueryParserTokenManager.cs             |  474 +--
 src/Lucene.Net.QueryParser/Classic/Token.cs        |    6 +-
 .../Classic/TokenMgrError.cs                       |    8 +-
 .../ComplexPhrase/ComplexPhraseQueryParser.cs      |   33 +-
 src/Lucene.Net.QueryParser/Ext/Extensions.cs       |    2 +-
 .../Flexible/Core/Builders/QueryTreeBuilder.cs     |   17 +-
 .../Flexible/Core/Config/AbstractQueryConfig.cs    |   55 +-
 .../Flexible/Core/Config/FieldConfig.cs            |    2 +-
 .../Flexible/Core/Messages/QueryParserMessages.cs  |  196 +-
 .../Core/Messages/QueryParserMessages.resx         |  205 +
 .../Messages/QueryParserMessagesBundle.Designer.cs |  247 --
 .../Core/Messages/QueryParserMessagesBundle.resx   |  198 -
 .../Core/Messages/QueryParserResourceProvider.cs   |  191 +
 .../Flexible/Core/Messages/package.md              |    2 +-
 .../Flexible/Core/Nodes/AndQueryNode.cs            |    6 +-
 .../Flexible/Core/Nodes/AnyQueryNode.cs            |    6 +-
 .../Flexible/Core/Nodes/BooleanQueryNode.cs        |    4 +-
 .../Flexible/Core/Nodes/BoostQueryNode.cs          |   15 +-
 .../Flexible/Core/Nodes/FieldQueryNode.cs          |    4 +-
 .../Flexible/Core/Nodes/GroupQueryNode.cs          |   16 +-
 .../Flexible/Core/Nodes/ModifierQueryNode.cs       |   17 +-
 .../Flexible/Core/Nodes/OrQueryNode.cs             |    6 +-
 .../Flexible/Core/Nodes/PathQueryNode.cs           |   11 +-
 .../Flexible/Core/Nodes/PhraseSlopQueryNode.cs     |   13 +-
 .../Flexible/Core/Nodes/ProximityQueryNode.cs      |   16 +-
 .../Flexible/Core/Nodes/QueryNode.cs               |   12 +
 .../Flexible/Core/Nodes/QueryNodeImpl.cs           |   81 +-
 .../Flexible/Core/Nodes/SlopQueryNode.cs           |   13 +-
 .../Core/Nodes/TokenizedPhraseQueryNode.cs         |    6 +-
 .../Core/Processors/QueryNodeProcessorImpl.cs      |   13 +-
 .../Core/Processors/QueryNodeProcessorPipeline.cs  |   11 +-
 .../Processors/RemoveDeletedQueryNodesProcessor.cs |    2 +-
 .../Flexible/Core/QueryNodeError.cs                |   92 +-
 .../Flexible/Core/QueryNodeException.cs            |   83 +-
 .../Flexible/Core/QueryNodeParseException.cs       |   57 +-
 .../Flexible/Core/QueryParserHelper.cs             |    4 +-
 .../Flexible/Core/Util/QueryNodeOperation.cs       |    8 +-
 .../Flexible/Messages/Message.cs                   |   65 +-
 .../Flexible/Messages/MessageImpl.cs               |  143 +-
 .../Flexible/Messages/NLS.cs                       |  451 ++-
 .../Flexible/Messages/NLSException.cs              |   71 +-
 .../BooleanModifiersQueryNodeProcessor.cs          |    7 +-
 .../Standard/Builders/AnyQueryNodeBuilder.cs       |    7 +-
 .../Standard/Builders/BooleanQueryNodeBuilder.cs   |    4 +-
 .../Standard/Builders/BoostQueryNodeBuilder.cs     |    2 +-
 .../Builders/MatchAllDocsQueryNodeBuilder.cs       |    4 +-
 .../Builders/MatchNoDocsQueryNodeBuilder.cs        |    4 +-
 .../Builders/MultiPhraseQueryNodeBuilder.cs        |    8 +-
 .../Builders/NumericRangeQueryNodeBuilder.cs       |   18 +-
 .../Builders/StandardBooleanQueryNodeBuilder.cs    |    4 +-
 .../Standard/CommonQueryParserConfiguration.cs     |    6 +-
 .../Standard/Config/FieldBoostMapFCListener.cs     |   10 +-
 .../Config/FieldDateResolutionFCListener.cs        |   22 +-
 .../Flexible/Standard/Config/NumberDateFormat.cs   |  196 +-
 .../Flexible/Standard/Config/NumericConfig.cs      |    2 +-
 .../Standard/Config/NumericFieldConfigListener.cs  |    2 +-
 .../Standard/Config/StandardQueryConfigHandler.cs  |   26 +-
 .../Standard/Nodes/AbstractRangeQueryNode.cs       |    3 +-
 .../Standard/Nodes/MultiPhraseQueryNode.cs         |    6 +-
 .../Flexible/Standard/Nodes/NumericQueryNode.cs    |   10 +-
 .../Standard/Nodes/NumericRangeQueryNode.cs        |   19 +-
 .../Standard/Parser/EscapeQuerySyntaxImpl.cs       |   51 +-
 .../Flexible/Standard/Parser/FastCharStream.cs     |    7 +-
 .../Flexible/Standard/Parser/ParseException.cs     |   64 +-
 .../Standard/Parser/StandardSyntaxParser.cs        |  151 +-
 .../Parser/StandardSyntaxParserTokenManager.cs     |   33 +-
 .../Flexible/Standard/Parser/Token.cs              |    2 +
 .../Flexible/Standard/Parser/TokenMgrError.cs      |    6 +-
 .../Processors/AllowLeadingWildcardProcessor.cs    |    4 +-
 .../Processors/AnalyzerQueryNodeProcessor.cs       |   36 +-
 .../BooleanQuery2ModifierNodeProcessor.cs          |    7 +-
 .../Standard/Processors/BoostQueryNodeProcessor.cs |    8 +-
 .../DefaultPhraseSlopQueryNodeProcessor.cs         |    6 +-
 .../Standard/Processors/GroupQueryNodeProcessor.cs |    9 +-
 .../LowercaseExpandedTermsQueryNodeProcessor.cs    |    7 +-
 .../Processors/MultiFieldQueryNodeProcessor.cs     |    7 +-
 .../Processors/MultiTermRewriteMethodProcessor.cs  |    2 +-
 .../Processors/NumericQueryNodeProcessor.cs        |   23 +-
 .../Processors/NumericRangeQueryNodeProcessor.cs   |   30 +-
 .../RemoveEmptyNonLeafQueryNodeProcessor.cs        |    5 +-
 .../Processors/TermRangeQueryNodeProcessor.cs      |   14 +-
 .../Processors/WildcardQueryNodeProcessor.cs       |    6 +-
 .../Flexible/Standard/QueryParserUtil.cs           |   42 +-
 .../Flexible/Standard/StandardQueryParser.cs       |   53 +-
 .../Lucene.Net.QueryParser.csproj                  |   24 +-
 .../Simple/SimpleQueryParser.cs                    |    2 +-
 .../Surround/Parser/FastCharStream.cs              |    4 +-
 .../Surround/Parser/ParseException.cs              |    4 +
 .../Surround/Parser/QueryParser.cs                 |   84 +-
 .../Surround/Parser/QueryParserTokenManager.cs     |   31 +-
 .../Surround/Parser/Token.cs                       |    5 +-
 .../Surround/Parser/TokenMgrError.cs               |    6 +-
 .../Surround/Query/BasicQueryFactory.cs            |    8 +-
 .../Surround/Query/ComposedQuery.cs                |   14 +-
 .../Surround/Query/FieldsQuery.cs                  |    9 +-
 .../Surround/Query/NotQuery.cs                     |   12 +-
 .../Surround/Query/RewriteQuery.cs                 |   10 +-
 .../Surround/Query/SimpleTermRewriteQuery.cs       |    3 +-
 .../Surround/Query/SpanNearClauseFactory.cs        |    7 +-
 .../Surround/Query/SrndBooleanQuery.cs             |    8 +-
 .../Surround/Query/SrndQuery.cs                    |   12 +-
 .../Surround/Query/SrndTruncQuery.cs               |    2 +-
 .../Surround/Query/TooManyBasicQueries.cs          |    9 +-
 .../Xml/Builders/CachedFilterBuilder.cs            |   10 +-
 .../Xml/Builders/LikeThisQueryBuilder.cs           |    4 +-
 .../Xml/Builders/NumericRangeFilterBuilder.cs      |   26 +-
 .../Xml/Builders/NumericRangeQueryBuilder.cs       |   26 +-
 .../Xml/Builders/SpanNearBuilder.cs                |    3 +-
 .../Xml/Builders/SpanOrBuilder.cs                  |    4 +-
 .../Xml/Builders/SpanOrTermsBuilder.cs             |    8 +-
 .../Xml/Builders/SpanQueryBuilderFactory.cs        |    2 +-
 .../Xml/Builders/TermsFilterBuilder.cs             |    8 +-
 .../Xml/Builders/TermsQueryBuilder.cs              |    4 +-
 .../Xml/Builders/UserInputQueryBuilder.cs          |   10 +-
 src/Lucene.Net.QueryParser/Xml/CoreParser.cs       |    6 +-
 src/Lucene.Net.QueryParser/Xml/DOMUtils.cs         |   24 +-
 .../Xml/FilterBuilderFactory.cs                    |    2 +-
 src/Lucene.Net.QueryParser/Xml/ParserException.cs  |    4 +-
 .../Xml/QueryBuilderFactory.cs                     |    2 +-
 .../Xml/QueryTemplateManager.cs                    |    4 +-
 src/Lucene.Net.Replicator/Http/HttpClientBase.cs   |  259 +-
 src/Lucene.Net.Replicator/Http/HttpReplicator.cs   |    8 +-
 .../Http/ReplicationService.cs                     |   25 +-
 .../IndexAndTaxonomyReplicationHandler.cs          |   26 +-
 .../IndexAndTaxonomyRevision.cs                    |   22 +-
 src/Lucene.Net.Replicator/IndexInputInputStream.cs |   10 +-
 .../IndexReplicationHandler.cs                     |   24 +-
 src/Lucene.Net.Replicator/IndexRevision.cs         |    8 +-
 src/Lucene.Net.Replicator/LocalReplicator.cs       |   70 +-
 .../Lucene.Net.Replicator.csproj                   |   16 +-
 .../PerSessionDirectoryFactory.cs                  |    4 +-
 src/Lucene.Net.Replicator/ReplicationClient.cs     |  299 +-
 src/Lucene.Net.Replicator/SessionToken.cs          |    5 +-
 src/Lucene.Net.Sandbox/Lucene.Net.Sandbox.csproj   |   14 +-
 src/Lucene.Net.Sandbox/Queries/DuplicateFilter.cs  |    6 +-
 .../Queries/FuzzyLikeThisQuery.cs                  |   43 +-
 src/Lucene.Net.Sandbox/Queries/SlowFuzzyQuery.cs   |   21 +-
 .../Queries/SlowFuzzyTermsEnum.cs                  |    6 +-
 .../Queries/SortedSetSortField.cs                  |   31 +-
 src/Lucene.Net.Spatial/DisjointSpatialFilter.cs    |   36 +-
 src/Lucene.Net.Spatial/Lucene.Net.Spatial.csproj   |   17 +-
 src/Lucene.Net.Spatial/Overview.html               |   41 -
 .../Prefix/AbstractPrefixTreeFilter.cs             |  108 +-
 .../Prefix/AbstractVisitingPrefixTreeFilter.cs     |  704 ++--
 .../Prefix/ContainsPrefixTreeFilter.cs             |   66 +-
 .../Prefix/IntersectsPrefixTreeFilter.cs           |   45 +-
 .../Prefix/PointPrefixTreeFieldCacheProvider.cs    |   18 +-
 .../Prefix/PrefixTreeStrategy.cs                   |   57 +-
 .../Prefix/RecursivePrefixTreeStrategy.cs          |   13 +-
 .../Prefix/TermQueryPrefixTreeStrategy.cs          |   17 +-
 src/Lucene.Net.Spatial/Prefix/Tree/Cell.cs         |  107 +-
 .../Prefix/Tree/GeohashPrefixTree.cs               |   81 +-
 .../Prefix/Tree/QuadPrefixTree.cs                  |  121 +-
 .../Prefix/Tree/SpatialPrefixTree.cs               |   67 +-
 .../Prefix/Tree/SpatialPrefixTreeFactory.cs        |   65 +-
 .../Prefix/WithinPrefixTreeFilter.cs               |  105 +-
 src/Lucene.Net.Spatial/Query/SpatialArgs.cs        |   28 +-
 src/Lucene.Net.Spatial/Query/SpatialArgsParser.cs  |   58 +-
 src/Lucene.Net.Spatial/Query/SpatialOperation.cs   |   67 +-
 .../Query/UnsupportedSpatialOperation.cs           |   14 +-
 .../Serialized/SerializedDVStrategy.cs             |   93 +-
 src/Lucene.Net.Spatial/SpatialStrategy.cs          |   21 +-
 .../Util/CachingDoubleValueSource.cs               |   22 +-
 .../Util/DistanceToShapeValueSource.cs             |   34 +-
 src/Lucene.Net.Spatial/Util/ShapeFieldCache.cs     |   22 +-
 .../Util/ShapeFieldCacheDistanceValueSource.cs     |   44 +-
 .../Util/ShapeFieldCacheProvider.cs                |   35 +-
 .../Util/ShapePredicateValueSource.cs              |   45 +-
 src/Lucene.Net.Spatial/Util/ValueSourceFilter.cs   |   15 +-
 .../Vector/DistanceValueSource.cs                  |   27 +-
 .../Vector/PointVectorStrategy.cs                  |   58 +-
 src/Lucene.Net.Suggest/Lucene.Net.Suggest.csproj   |   14 +-
 src/Lucene.Net.Suggest/Spell/DirectSpellChecker.cs |   18 +-
 .../Spell/HighFrequencyDictionary.cs               |    2 +-
 .../Spell/JaroWinklerDistance.cs                   |    2 +-
 src/Lucene.Net.Suggest/Spell/SpellChecker.cs       |   73 +-
 .../Spell/SuggestWordScoreComparator.cs            |    6 +
 .../Spell/WordBreakSpellChecker.cs                 |   36 +-
 .../Suggest/Analyzing/AnalyzingInfixSuggester.cs   |   51 +-
 .../Suggest/Analyzing/AnalyzingSuggester.cs        |   73 +-
 .../Suggest/Analyzing/BlendedInfixSuggester.cs     |   10 +-
 .../Suggest/Analyzing/FSTUtil.cs                   |   12 +-
 .../Suggest/Analyzing/FreeTextSuggester.cs         |  175 +-
 .../Suggest/Analyzing/FuzzySuggester.cs            |   13 +-
 .../Suggest/Analyzing/SuggestStopFilter.cs         |    2 +-
 .../Suggest/BufferedInputIterator.cs               |    3 +-
 .../Suggest/DocumentDictionary.cs                  |    8 +-
 .../Suggest/DocumentValueSourceDictionary.cs       |    6 +-
 src/Lucene.Net.Suggest/Suggest/FileDictionary.cs   |   22 +-
 .../Suggest/Fst/ExternalRefSorter.cs               |   13 +-
 .../Suggest/Fst/FSTCompletion.cs                   |   35 +-
 .../Suggest/Fst/FSTCompletionBuilder.cs            |   10 +-
 .../Suggest/Fst/FSTCompletionLookup.cs             |   42 +-
 .../Suggest/Fst/WFSTCompletionLookup.cs            |   73 +-
 src/Lucene.Net.Suggest/Suggest/InMemorySorter.cs   |    2 +-
 .../Suggest/Jaspell/JaspellLookup.cs               |   20 +-
 .../Suggest/Jaspell/JaspellTernarySearchTrie.cs    |   80 +-
 src/Lucene.Net.Suggest/Suggest/Lookup.cs           |    5 +
 .../Suggest/SortedInputIterator.cs                 |    2 +-
 .../Suggest/SortedTermFreqIteratorWrapper.cs       |    2 +-
 .../Suggest/Tst/TSTAutocomplete.cs                 |   13 +-
 src/Lucene.Net.Suggest/Suggest/Tst/TSTLookup.cs    |   30 +-
 .../Suggest/UnsortedInputIterator.cs               |    2 +-
 ...ucene.Net.TestFramework.MSTest.csproj.nosupport |   95 -
 .../Properties/AssemblyInfo.cs                     |   50 -
 .../Support/TestFramework/Assert.cs                |  669 ---
 ...Lucene.Net.TestFramework.NUnit.csproj.nosupport |   92 -
 .../Properties/AssemblyInfo.cs                     |   82 -
 .../Support/TestFramework/Assert.cs                | 1126 ------
 ...Lucene.Net.TestFramework.xUnit.csproj.nosupport |   92 -
 .../Properties/AssemblyInfo.cs                     |   50 -
 .../Support/TestFramework/Assert.cs                |  664 ---
 .../Support/TestFramework/BeforeAfterClass.cs      |   67 -
 .../Support/TestFramework/SkipTestException.cs     |   60 -
 .../TestFramework/SkippableFactAttribute.cs        |   31 -
 .../XunitExtensions/SkippableFactDiscoverer.cs     |   39 -
 .../XunitExtensions/SkippableFactMessageBus.cs     |   55 -
 .../XunitExtensions/SkippableFactTestCase.cs       |   52 -
 .../Analysis/BaseTokenStreamTestCase.cs            |  190 +-
 .../Analysis/CannedBinaryTokenStream.cs            |   14 +-
 .../Analysis/CollationTestBase.cs                  |   33 +-
 .../Analysis/CrankyTokenFilter.cs                  |    2 +-
 .../Analysis/LookaheadTokenFilter.cs               |    7 +-
 .../Analysis/MockAnalyzer.cs                       |   20 +-
 .../Analysis/MockCharFilter.cs                     |    4 +-
 .../Analysis/MockFixedLengthPayloadFilter.cs       |    4 +-
 .../Analysis/MockGraphTokenFilter.cs               |   14 +-
 .../Analysis/MockHoleInjectingTokenFilter.cs       |    9 +-
 .../Analysis/MockRandomLookaheadTokenFilter.cs     |   13 +-
 .../Analysis/MockReaderWrapper.cs                  |    4 +-
 .../Analysis/MockTokenizer.cs                      |    5 +-
 .../Analysis/ValidatingTokenFilter.cs              |   30 +-
 .../Codecs/Asserting/AssertingDocValuesFormat.cs   |   24 +-
 .../Codecs/Asserting/AssertingPostingsFormat.cs    |    8 +-
 .../Codecs/Asserting/AssertingTermVectorsFormat.cs |    2 +-
 .../Codecs/Compressing/CompressingCodec.cs         |    7 +-
 .../Compressing/Dummy/DummyCompressingCodec.cs     |    6 +-
 .../Codecs/Lucene3x/PreFlexRWFieldInfosReader.cs   |    6 +-
 .../Codecs/Lucene3x/PreFlexRWFieldInfosWriter.cs   |    2 +-
 .../Codecs/Lucene3x/PreFlexRWFieldsWriter.cs       |   10 +-
 .../Codecs/Lucene3x/PreFlexRWNormsConsumer.cs      |    9 +-
 .../Codecs/Lucene3x/PreFlexRWPostingsFormat.cs     |    2 +-
 .../Codecs/Lucene3x/PreFlexRWSkipListWriter.cs     |   10 +-
 .../Codecs/Lucene3x/PreFlexRWStoredFieldsWriter.cs |   11 +-
 .../Codecs/Lucene3x/PreFlexRWTermVectorsFormat.cs  |    2 +-
 .../Codecs/Lucene3x/PreFlexRWTermVectorsWriter.cs  |   26 +-
 .../Codecs/Lucene3x/TermInfosWriter.cs             |   14 +-
 .../Codecs/Lucene40/Lucene40DocValuesWriter.cs     |   24 +-
 .../Codecs/Lucene40/Lucene40FieldInfosWriter.cs    |    2 +-
 .../Codecs/Lucene40/Lucene40PostingsWriter.cs      |   10 +-
 .../Codecs/Lucene40/Lucene40RWCodec.cs             |    2 +-
 .../Codecs/Lucene40/Lucene40SkipListWriter.cs      |   10 +-
 .../Codecs/Lucene41/Lucene41RWCodec.cs             |    2 +-
 .../Codecs/Lucene42/Lucene42DocValuesConsumer.cs   |   36 +-
 .../Codecs/Lucene42/Lucene42FieldInfosWriter.cs    |    4 +-
 .../Codecs/Lucene42/Lucene42RWCodec.cs             |    2 +-
 .../Codecs/Lucene45/Lucene45RWCodec.cs             |    2 +-
 .../Codecs/MissingOrdRemapper.cs                   |   44 +-
 .../MockFixedIntBlockPostingsFormat.cs             |    6 +-
 .../MockVariableIntBlockPostingsFormat.cs          |   10 +-
 .../Codecs/MockRandom/MockRandomPostingsFormat.cs  |   52 +-
 .../Codecs/MockSep/MockSingleIntIndexOutput.cs     |    6 +-
 .../Codecs/RAMOnly/RAMOnlyPostingsFormat.cs        |   43 +-
 .../Index/AssertingAtomicReader.cs                 |   34 +-
 .../BaseCompressingDocValuesFormatTestCase.cs      |   26 +-
 .../Index/BaseDocValuesFormatTestCase.cs           |  151 +-
 .../Index/BaseIndexFileFormatTestCase.cs           |   21 +-
 .../Index/BaseMergePolicyTestCase.cs               |   31 +-
 .../Index/BasePostingsFormatTestCase.cs            |   97 +-
 .../Index/BaseStoredFieldsFormatTestCase.cs        |   81 +-
 .../Index/BaseTermVectorsFormatTestCase.cs         |  156 +-
 src/Lucene.Net.TestFramework/Index/DocHelper.cs    |    2 +-
 .../Index/FieldFilterAtomicReader.cs               |    6 +-
 .../Index/MockRandomMergePolicy.cs                 |   17 +-
 src/Lucene.Net.TestFramework/Index/RandomCodec.cs  |   19 +-
 .../Index/RandomIndexWriter.cs                     |  103 +-
 .../Index/ThreadedIndexingAndSearchingTestCase.cs  |  131 +-
 .../Lucene.Net.TestFramework.csproj                |   48 +-
 .../PortingWork-ReadMe.txt                         |   47 -
 .../Search/AssertingBulkScorer.cs                  |    9 +-
 .../Search/AssertingIndexSearcher.cs               |   19 +-
 .../Search/AssertingQuery.cs                       |   18 +-
 .../Search/AssertingScorer.cs                      |   67 +-
 .../Search/AssertingWeight.cs                      |   11 +-
 src/Lucene.Net.TestFramework/Search/CheckHits.cs   |  102 +-
 src/Lucene.Net.TestFramework/Search/QueryUtils.cs  |  211 +-
 .../Search/RandomOrderCollector.cs                 |    6 +-
 .../Search/RandomSimilarityProvider.cs             |   25 +-
 .../Search/SearchEquivalenceTestBase.cs            |   56 +-
 .../Search/ShardSearchingTestBase.cs               |   41 +-
 .../Store/BaseDirectoryTestCase.cs                 |  119 +-
 .../Store/MockDirectoryWrapper.cs                  |  269 +-
 .../Store/MockIndexInputWrapper.cs                 |   15 +-
 .../Store/MockIndexOutputWrapper.cs                |   17 +-
 .../Store/SlowClosingMockIndexInputWrapper.cs      |    9 +-
 .../Store/SlowOpeningMockIndexInputWrapper.cs      |   10 +-
 .../Support/ApiScanTestBase.cs                     |   17 +-
 .../Support/Attributes/DeadlockAttribute.cs        |    6 +-
 .../Attributes/LuceneNetSpecificAttribute.cs       |    6 +-
 .../ConfigurationBuilderExtensions.cs              |    6 +-
 .../Configuration/TestConfigurationFactory.cs      |    7 +-
 .../Support/CultureInfoSupport.cs                  |  643 ---
 .../ExceptionHandling/ExceptionExtensions.cs       |   64 +
 .../Support/ExceptionSerializationTestBase.cs      |   84 -
 .../Support/JavaCompatibility/LuceneTestCase.cs    |   59 +-
 .../Support/JavaCompatibility/RandomHelpers.cs     |    3 +-
 .../JavaCompatibility/SystemTypesHelpers.cs        |   12 +-
 .../Support/RandomExtensions.cs                    |  228 +-
 .../Attributes/SeedDecoratorAttribute.cs           |   45 -
 .../Support/Randomized/Generators/RandomBytes.cs   |   55 -
 .../Support/Randomized/Generators/RandomInts.cs    |   49 -
 .../Support/Randomized/Generators/RandomPicks.cs   |   41 -
 .../Support/Randomized/ISeedDecorator.cs           |   30 -
 .../Support/Randomized/MurmurHash3.cs              |   41 -
 .../Support/Randomized/RandomizedContext.cs        |  185 -
 .../Support/Randomized/RandomizedRunner.cs         |   66 -
 .../Support/Randomized/RandomizedTest.cs           |   93 -
 .../Support/Randomized/Randomness.cs               |  107 -
 .../Support/Randomized/SeedUtils.cs                |   99 -
 .../Support/Randomized/SingleThreadedRandom.cs     |  132 -
 .../Support/Randomized/ThreadGroup.cs              |  144 -
 .../Support/StackTraceHelper.cs                    |   46 +-
 .../Support/SynchronizedList.cs                    |    5 +-
 .../Support/TestFramework/Assert.cs                | 1220 ++++++
 .../Support/Util/DefaultNamespaceTypeWrapper.cs    |  294 ++
 .../Support/Util/LuceneRandomSeedInitializer.cs    |  184 +
 .../Support/Util/LuceneSetUpFixtureBuilder.cs      |   89 +
 .../Support/Util/LuceneTestCase.Serialization.cs   |  101 +
 .../Support/Util/LuceneTestCase.SetUpFixture.cs    |  198 +
 .../Util/LuceneTestCase.TestFixtureAttribute.cs    |  265 ++
 .../Support/Util/LuceneTestFrameworkInitializer.cs |  331 +-
 .../Support/Util/NUnitTestFixtureBuilder.cs        |  474 +++
 .../Support/Util/RandomSeedAttribute.cs            |   45 +
 .../Support/Util/RandomizedContext.cs              |  119 +
 .../Support/Util/UseTempLineDocsFileAttribute.cs   |   30 +
 .../Support/Util/UseTempLineDocsFileRule.cs        |   84 +
 .../Util/AbstractBeforeAfterRule.cs                |    6 +-
 .../Util/Automaton/AutomatonTestUtil.cs            |   23 +-
 .../Util/BaseDocIdSetTestCase.cs                   |   30 +-
 src/Lucene.Net.TestFramework/Util/English.cs       |    4 +-
 src/Lucene.Net.TestFramework/Util/Fst/FSTTester.cs |   70 +-
 src/Lucene.Net.TestFramework/Util/LineFileDocs.cs  |   53 +-
 .../Util/LuceneTestCase.cs                         |  923 +----
 .../Util/RemoveUponClose.cs                        |    4 +-
 .../Util/RunListenerPrintReproduceInfo.cs          |   10 +-
 .../Util/TestRuleAssertionsRequired.cs             |    2 +-
 .../Util/TestRuleFieldCacheSanity.cs               |    2 +-
 .../Util/TestRuleIgnoreAfterMaxFailures.cs         |    2 +-
 .../Util/TestRuleIgnoreTestSuites.cs               |    2 +-
 .../Util/TestRuleMarkFailure.cs                    |    6 +-
 .../Util/TestRuleSetupAndRestoreClassEnv.cs        |   52 +-
 .../Util/TestRuleSetupTeardownChained.cs           |    2 +-
 .../Util/TestRuleStoreClassName.cs                 |    8 +-
 .../Util/TestRuleThreadAndTestName.cs              |    2 +-
 .../Util/TestSecurityManager.cs                    |    4 +-
 src/Lucene.Net.TestFramework/Util/TestUtil.cs      |  759 +---
 .../Util/ThrottledIndexOutput.cs                   |   25 +-
 .../Lucene.Net.Tests.AllProjects.csproj            |  135 +
 .../Support/AssemblyScanningTestCase.cs            |   91 +
 .../ExceptionHandling/ExceptionScanningTestCase.cs |  606 +++
 .../ExceptionHandling/TestExceptionExtensions.cs   |  428 ++
 .../TestExceptionSerialization.cs                  |   37 +
 .../Analysis/Ar/TestArabicAnalyzer.cs              |    4 +-
 .../Analysis/Ar/TestArabicFilters.cs               |   10 +-
 .../Analysis/Bg/TestBulgarianAnalyzer.cs           |    4 +-
 .../Analysis/Bg/TestBulgarianStemFilterFactory.cs  |    4 +-
 .../Analysis/Br/TestBrazilianStemFilterFactory.cs  |    4 +-
 .../Analysis/Br/TestBrazilianStemmer.cs            |    2 +-
 .../CharFilters/HTMLStripCharFilterTest.cs         |    5 +-
 .../CharFilters/TestHTMLStripCharFilterFactory.cs  |    4 +-
 .../Analysis/CharFilters/TestMappingCharFilter.cs  |    6 +-
 .../CharFilters/TestMappingCharFilterFactory.cs    |    8 +-
 .../Analysis/Cjk/TestCJKAnalyzer.cs                |    2 +-
 .../Analysis/Cjk/TestCJKBigramFilterFactory.cs     |    4 +-
 .../Analysis/Cjk/TestCJKTokenizerFactory.cs        |    4 +-
 .../Analysis/Cjk/TestCJKWidthFilterFactory.cs      |    4 +-
 .../Analysis/Ckb/TestSoraniAnalyzer.cs             |    6 +-
 .../Ckb/TestSoraniNormalizationFilterFactory.cs    |    4 +-
 .../Analysis/Ckb/TestSoraniStemFilterFactory.cs    |    4 +-
 .../Analysis/Cn/TestChineseFilterFactory.cs        |    4 +-
 .../Analysis/Cn/TestChineseTokenizerFactory.cs     |    4 +-
 .../Commongrams/TestCommonGramsFilterFactory.cs    |    4 +-
 .../TestCommonGramsQueryFilterFactory.cs           |    4 +-
 ...TestDictionaryCompoundWordTokenFilterFactory.cs |    4 +-
 ...estHyphenationCompoundWordTokenFilterFactory.cs |    4 +-
 .../Analysis/Core/TestAllAnalyzersHaveFactories.cs |   16 +-
 .../Analysis/Core/TestBugInSomething.cs            |   42 +-
 .../Analysis/Core/TestDuelingAnalyzers.cs          |    3 +-
 .../Analysis/Core/TestFactories.cs                 |   22 +-
 .../Analysis/Core/TestRandomChains.cs              |  165 +-
 .../Analysis/Core/TestStopFilter.cs                |   12 +-
 .../Analysis/Core/TestStopFilterFactory.cs         |    8 +-
 .../Analysis/Core/TestTypeTokenFilter.cs           |    4 +-
 .../Analysis/Core/TestTypeTokenFilterFactory.cs    |    6 +-
 .../Analysis/Core/TestUAX29URLEmailTokenizer.cs    |    9 +-
 .../Analysis/Cz/TestCzechAnalyzer.cs               |    2 +-
 .../Analysis/Cz/TestCzechStemFilterFactory.cs      |    4 +-
 .../Analysis/De/TestGermanAnalyzer.cs              |    2 +-
 .../De/TestGermanLightStemFilterFactory.cs         |    4 +-
 .../De/TestGermanMinimalStemFilterFactory.cs       |    4 +-
 .../De/TestGermanNormalizationFilterFactory.cs     |    4 +-
 .../Analysis/De/TestGermanStemFilterFactory.cs     |    4 +-
 .../Analysis/El/TestGreekLowerCaseFilterFactory.cs |    4 +-
 .../Analysis/El/TestGreekStemFilterFactory.cs      |    4 +-
 .../En/TestEnglishMinimalStemFilterFactory.cs      |    4 +-
 .../Analysis/En/TestKStemFilterFactory.cs          |    4 +-
 .../Analysis/En/TestPorterStemFilterFactory.cs     |    4 +-
 .../Es/TestSpanishLightStemFilterFactory.cs        |    4 +-
 .../Fa/TestPersianNormalizationFilterFactory.cs    |    4 +-
 .../Analysis/Fa/TestPersianStemFilter.cs           |  121 +
 .../Fi/TestFinnishLightStemFilterFactory.cs        |    4 +-
 .../Analysis/Fr/TestFrenchAnalyzer.cs              |    6 +-
 .../Fr/TestFrenchLightStemFilterFactory.cs         |    4 +-
 .../Fr/TestFrenchMinimalStemFilterFactory.cs       |    4 +-
 .../Analysis/Ga/TestIrishLowerCaseFilterFactory.cs |    4 +-
 .../Gl/TestGalicianMinimalStemFilterFactory.cs     |    4 +-
 .../Analysis/Gl/TestGalicianStemFilterFactory.cs   |    4 +-
 .../Analysis/Hi/TestHindiFilters.cs                |    8 +-
 .../Hu/TestHungarianLightStemFilterFactory.cs      |    4 +-
 .../Analysis/Hunspell/StemmerTestBase.cs           |    4 +-
 .../Analysis/Hunspell/TestDictionary.cs            |    4 +-
 .../Hunspell/TestHunspellStemFilterFactory.cs      |    2 +-
 .../Analysis/Id/TestIndonesianStemFilterFactory.cs |    4 +-
 .../Analysis/In/TestIndicNormalizer.cs             |   10 +-
 .../It/TestItalianLightStemFilterFactory.cs        |    4 +-
 .../Analysis/Lv/TestLatvianStemFilterFactory.cs    |    4 +-
 .../Analysis/Miscellaneous/PatternAnalyzerTest.cs  |    4 +-
 .../Miscellaneous/TestASCIIFoldingFilter.cs        |    8 +-
 .../Miscellaneous/TestCapitalizationFilter.cs      |    5 +-
 .../TestCapitalizationFilterFactory.cs             |    6 +-
 .../TestCodepointCountFilterFactory.cs             |    4 +-
 .../Miscellaneous/TestKeepFilterFactory.cs         |    4 +-
 .../TestKeywordMarkerFilterFactory.cs              |    4 +-
 .../Miscellaneous/TestLengthFilterFactory.cs       |    6 +-
 .../TestLimitTokenCountFilterFactory.cs            |    6 +-
 .../Miscellaneous/TestLimitTokenPositionFilter.cs  |    5 +-
 .../TestLimitTokenPositionFilterFactory.cs         |    6 +-
 .../TestLucene47WordDelimiterFilter.cs             |    6 +-
 .../TestRemoveDuplicatesTokenFilterFactory.cs      |    4 +-
 .../TestScandinavianFoldingFilterFactory.cs        |    4 +-
 .../TestScandinavianNormalizationFilterFactory.cs  |    4 +-
 .../Miscellaneous/TestStemmerOverrideFilter.cs     |   34 +-
 .../TestStemmerOverrideFilterFactory.cs            |    4 +-
 .../Miscellaneous/TestTrimFilterFactory.cs         |    4 +-
 .../TestTruncateTokenFilterFactory.cs              |    6 +-
 .../Miscellaneous/TestWordDelimiterFilter.cs       |    6 +-
 .../Analysis/NGram/EdgeNGramTokenFilterTest.cs     |    8 +-
 .../Analysis/NGram/EdgeNGramTokenizerTest.cs       |    8 +-
 .../Analysis/NGram/NGramTokenFilterTest.cs         |    6 +-
 .../Analysis/NGram/NGramTokenizerTest.cs           |    6 +-
 .../Analysis/NGram/TestNGramFilters.cs             |   10 +-
 .../Analysis/Nl/TestDutchStemmer.cs                |   14 +-
 .../No/TestNorwegianLightStemFilterFactory.cs      |    4 +-
 .../No/TestNorwegianMinimalStemFilterFactory.cs    |    4 +-
 .../Pattern/TestPatternReplaceCharFilter.cs        |   55 +-
 .../Pattern/TestPatternReplaceCharFilterFactory.cs |    4 +-
 .../Pattern/TestPatternReplaceFilterFactory.cs     |    4 +-
 .../Analysis/Pattern/TestPatternTokenizer.cs       |    5 +-
 .../Pattern/TestPatternTokenizerFactory.cs         |    4 +-
 .../Payloads/DelimitedPayloadTokenFilterTest.cs    |    4 +-
 .../TestDelimitedPayloadTokenFilterFactory.cs      |    4 +-
 .../Pt/TestPortugueseLightStemFilterFactory.cs     |    4 +-
 .../Pt/TestPortugueseMinimalStemFilterFactory.cs   |    4 +-
 .../Analysis/Pt/TestPortugueseStemFilterFactory.cs |    4 +-
 .../Reverse/TestReverseStringFilterFactory.cs      |    4 +-
 .../Analysis/Ru/TestRussianFilters.cs              |    4 +-
 .../Ru/TestRussianLightStemFilterFactory.cs        |    4 +-
 .../Analysis/Shingle/TestShingleFilterFactory.cs   |    4 +-
 .../Analysis/Sinks/TestTeeSinkTokenFilter.cs       |   15 +-
 .../Analysis/Sinks/TokenRangeSinkTokenizerTest.cs  |    4 +-
 .../Snowball/TestSnowballPorterFilterFactory.cs    |    4 +-
 .../Analysis/Standard/TestStandardFactories.cs     |   18 +-
 .../Standard/TestUAX29URLEmailTokenizerFactory.cs  |    6 +-
 .../Sv/TestSwedishLightStemFilterFactory.cs        |    4 +-
 .../Analysis/Synonym/TestMultiWordSynonyms.cs      |    5 +-
 .../Analysis/Synonym/TestSlowSynonymFilter.cs      |    5 +-
 .../Analysis/Synonym/TestSolrSynonymParser.cs      |   52 +-
 .../Analysis/Synonym/TestSynonymFilterFactory.cs   |    8 +-
 .../Analysis/Synonym/TestSynonymMap.cs             |   25 +-
 .../Analysis/Synonym/TestSynonymMapFilter.cs       |   23 +-
 .../Analysis/Th/TestThaiAnalyzer.cs                |   24 +-
 .../Analysis/Th/TestThaiTokenizerFactory.cs        |    4 +-
 .../Analysis/Th/TestThaiWordFilterFactory.cs       |    4 +-
 .../Analysis/Tr/TestApostropheFilterFactory.cs     |    4 +-
 .../Tr/TestTurkishLowerCaseFilterFactory.cs        |    4 +-
 .../Util/BaseTokenStreamFactoryTestCase.cs         |    7 +-
 .../Analysis/Util/StringMockResourceLoader.cs      |   10 +-
 .../Analysis/Util/TestAnalysisSPILoader.cs         |   26 +-
 .../Analysis/Util/TestBufferedCharFilter.cs        |   91 +-
 .../Analysis/Util/TestCharArrayIterator.cs         |    4 +-
 .../Analysis/Util/TestCharArrayMap.cs              |  469 ++-
 .../Analysis/Util/TestCharArraySet.cs              |  994 ++++-
 .../Analysis/Util/TestCharTokenizers.cs            |    8 +-
 .../Analysis/Util/TestCharacterUtils.cs            |   14 +-
 .../Analysis/Util/TestElision.cs                   |    5 +-
 .../Analysis/Util/TestElisionFilterFactory.cs      |    4 +-
 .../Analysis/Util/TestFilesystemResourceLoader.cs  |    8 +-
 .../Analysis/Util/TestRollingCharBuffer.cs         |    3 +-
 .../Wikipedia/TestWikipediaTokenizerFactory.cs     |    4 +-
 .../Lucene.Net.Tests.Analysis.Common.csproj        |   22 +-
 src/Lucene.Net.Tests.Analysis.Common/Startup.cs    |    3 -
 .../Support/TestApiConsistency.cs                  |    8 +-
 .../Support/TestExceptionSerialization.cs          |   56 -
 .../Icu/Segmentation/TestCharArrayIterator.cs      |    2 +-
 .../Analysis/Icu/Segmentation/TestICUTokenizer.cs  |    7 +-
 .../Icu/Segmentation/TestICUTokenizerFactory.cs    |    8 +-
 .../Icu/Segmentation/TestWithCJKBigramFilter.cs    |    4 +-
 .../Analysis/Icu/TestICUFoldingFilterFactory.cs    |    4 +-
 .../Icu/TestICUNormalizer2CharFilterFactory.cs     |    2 +-
 .../Icu/TestICUNormalizer2FilterFactory.cs         |    2 +-
 .../Analysis/Icu/TestICUTransformFilter.cs         |    4 +-
 .../Analysis/Icu/TestICUTransformFilterFactory.cs  |    2 +-
 .../Collation/TestICUCollationDocValuesField.cs    |   12 +-
 .../Collation/TestICUCollationKeyFilterFactory.cs  |   13 +-
 .../Dict/TestTokenInfoDictionary.cs                |   16 +-
 .../Lucene.Net.Tests.Analysis.Kuromoji.csproj      |   27 +-
 src/Lucene.Net.Tests.Analysis.Kuromoji/Startup.cs  |   25 -
 .../StringMockResourceLoader.cs                    |    6 +-
 .../Support/TestApiConsistency.cs                  |    4 +-
 .../Support/TestExceptionSerialization.cs          |   55 -
 .../TestJapaneseAnalyzer.cs                        |   36 +-
 .../TestJapaneseBaseFormFilterFactory.cs           |    2 +-
 .../TestJapaneseIterationMarkCharFilterFactory.cs  |   10 +-
 .../TestJapaneseKatakanaStemFilterFactory.cs       |    2 +-
 .../TestJapanesePartOfSpeechStopFilterFactory.cs   |    6 +-
 .../TestJapaneseReadingFormFilterFactory.cs        |    2 +-
 .../TestJapaneseTokenizer.cs                       |   23 +-
 .../TestJapaneseTokenizerFactory.cs                |    8 +-
 .../TestSearchMode.cs                              |    2 +-
 .../Tools/TestBuildDictionary.cs                   |    4 +-
 .../Util/TestCSVUtil.cs                            |   60 +
 .../Lucene.Net.Tests.Analysis.Morfologik.csproj    |   35 +-
 .../Morfologik/TestMorfologikFilterFactory.cs      |    6 +-
 .../Startup.cs                                     |   25 -
 .../Lucene.Net.Tests.Analysis.OpenNLP.csproj       |   28 +-
 src/Lucene.Net.Tests.Analysis.OpenNLP/Startup.cs   |   25 -
 .../TestOpenNLPChunkerFilterFactory.cs             |    2 +-
 .../TestOpenNLPPOSFilterFactory.cs                 |    4 +-
 .../Language/Bm/CacheSubSequencePerformanceTest.cs |    2 +-
 .../Language/Bm/PhoneticEngineRegressionTest.cs    |   76 +-
 .../Language/Bm/PhoneticEngineTest.cs              |    4 +-
 .../Language/SoundexTest.cs                        |    8 +-
 .../Lucene.Net.Tests.Analysis.Phonetic.csproj      |   23 +-
 src/Lucene.Net.Tests.Analysis.Phonetic/Startup.cs  |   25 -
 .../Support/TestApiConsistency.cs                  |    4 +-
 .../Support/TestExceptionSerialization.cs          |   55 -
 .../TestBeiderMorseFilterFactory.cs                |    8 +-
 .../TestDoubleMetaphoneFilterFactory.cs            |    2 +-
 .../TestPhoneticFilterFactory.cs                   |   32 +-
 .../Lucene.Net.Tests.Analysis.SmartCn.csproj       |   41 +-
 src/Lucene.Net.Tests.Analysis.SmartCn/Startup.cs   |   25 -
 .../Support/TestApiConsistency.cs                  |    4 +-
 .../Support/TestExceptionSerialization.cs          |   55 -
 .../TestHMMChineseTokenizerFactory.cs              |    8 +-
 .../TestSmartChineseAnalyzer.cs                    |    2 +-
 .../TestSmartChineseFactories.cs                   |    4 +-
 .../Egothor.Stemmer/TestCompile.cs                 |   11 +-
 .../Lucene.Net.Tests.Analysis.Stempel.csproj       |   23 +-
 src/Lucene.Net.Tests.Analysis.Stempel/Startup.cs   |   25 -
 .../Stempel/TestStempelPolishStemFilterFactory.cs  |    2 +-
 .../Support/TestApiConsistency.cs                  |    6 +-
 .../Support/TestExceptionSerialization.cs          |   55 -
 .../ByTask/Feeds/DocMakerTest.cs                   |    2 +-
 .../ByTask/Feeds/LineDocSourceTest.cs              |    6 +-
 .../ByTask/Tasks/CountingHighlighterTestTask.cs    |    2 +-
 .../ByTask/Tasks/CountingSearchTestTask.cs         |   10 +-
 .../ByTask/Tasks/WriteEnwikiLineDocTaskTest.cs     |    2 +-
 .../ByTask/Tasks/WriteLineDocTaskTest.cs           |    9 +-
 .../ByTask/TestPerfTasksLogic.cs                   |    6 +-
 .../ByTask/TestPerfTasksParse.cs                   |   18 +-
 .../Lucene.Net.Tests.Benchmark.csproj              |   65 +-
 .../Support/TestApiConsistency.cs                  |    4 +-
 .../Support/TestExceptionSerialization.cs          |   55 -
 .../BuildConfigurations.cs                         |   10 +-
 .../Lucene.Net.Tests.BenchmarkDotNet.csproj        |    4 +-
 .../ClassificationTestBase.cs                      |   25 +-
 .../KNearestNeighborClassifierTest.cs              |    3 +-
 .../Lucene.Net.Tests.Classification.csproj         |   27 +-
 .../SimpleNaiveBayesClassifierTest.cs              |    4 +-
 .../Support/TestApiConsistency.cs                  |    4 +-
 .../Support/TestExceptionSerialization.cs          |   55 -
 .../Utils/DataSplitterTest.cs                      |   11 +-
 .../Lucene.Net.Tests.Codecs.csproj                 |   21 +-
 .../Pulsing/TestPulsingReuse.cs                    |    4 +-
 .../SimpleText/TestSimpleTextStoredFieldsFormat.cs |    1 -
 .../Support/TestApiConsistency.cs                  |    6 +-
 .../Support/TestExceptionSerialization.cs          |   55 -
 .../Facet/TestAssociationsFacetsExample.cs         |    9 +-
 .../TestExpressionAggregationFacetsExample.cs      |    5 +-
 .../Lucene.Net.Tests.Demo.csproj                   |   44 +-
 .../JS/TestCustomFunctions.cs                      |   14 +-
 .../JS/TestJavascriptCompiler.cs                   |   30 +-
 .../Lucene.Net.Tests.Expressions.csproj            |   27 +-
 .../Support/TestApiConsistency.cs                  |    2 -
 .../Support/TestExceptionSerialization.cs          |   55 -
 .../TestDemoExpressions.cs                         |   38 +-
 .../TestExpressionRescorer.cs                      |    6 +-
 .../TestExpressionSorts.cs                         |   12 +-
 .../TestExpressionValidation.cs                    |   16 +-
 .../TestExpressionValueSource.cs                   |   14 +-
 .../AssertingSubDocsAtOnceCollector.cs             |    5 +-
 src/Lucene.Net.Tests.Facet/FacetTestCase.cs        |    8 +-
 .../Lucene.Net.Tests.Facet.csproj                  |   33 +-
 .../Range/TestRangeFacetCounts.cs                  |   93 +-
 src/Lucene.Net.Tests.Facet/SlowRAMDirectory.cs     |   44 +-
 .../SortedSet/TestSortedSetDocValuesFacets.cs      |   56 +-
 .../Support/TestApiConsistency.cs                  |    6 +-
 .../Support/TestExceptionSerialization.cs          |   55 -
 .../Taxonomy/Directory/TestAddTaxonomy.cs          |   13 +-
 .../Directory/TestConcurrentFacetedIndexing.cs     |   18 +-
 .../Directory/TestDirectoryTaxonomyReader.cs       |    9 +-
 .../Directory/TestDirectoryTaxonomyWriter.cs       |   25 +-
 .../Taxonomy/TestCachedOrdinalsReader.cs           |    6 +-
 .../Taxonomy/TestFacetLabel.cs                     |   36 +-
 .../Taxonomy/TestSearcherTaxonomyManager.cs        |   17 +-
 .../Taxonomy/TestTaxonomyCombined.cs               |   27 +-
 .../Taxonomy/TestTaxonomyFacetAssociations.cs      |   51 +-
 .../Taxonomy/TestTaxonomyFacetCounts.cs            |   87 +-
 .../Taxonomy/TestTaxonomyFacetCounts2.cs           |   53 +-
 .../Taxonomy/TestTaxonomyFacetSumValueSource.cs    |   68 +-
 src/Lucene.Net.Tests.Facet/TestDrillDownQuery.cs   |    1 +
 src/Lucene.Net.Tests.Facet/TestDrillSideways.cs    |   65 +-
 src/Lucene.Net.Tests.Facet/TestFacetsConfig.cs     |    2 +-
 .../TestRandomSamplingFacetsCollector.cs           |    7 +-
 .../AllGroupHeadsCollectorTest.cs                  |   28 +-
 .../AllGroupsCollectorTest.cs                      |    3 +-
 .../DistinctValuesCollectorTest.cs                 |   66 +-
 .../GroupFacetCollectorTest.cs                     |   28 +-
 .../GroupingSearchTest.cs                          |    9 +-
 .../Lucene.Net.Tests.Grouping.csproj               |   27 +-
 .../Support/TestApiConsistency.cs                  |    6 +-
 .../Support/TestExceptionSerialization.cs          |   55 -
 src/Lucene.Net.Tests.Grouping/TestGrouping.cs      |  128 +-
 src/Lucene.Net.Tests.Grouping/TestGroupingExtra.cs |  926 ++++-
 .../Highlight/Custom/HighlightCustomQueryTest.cs   |    6 +-
 .../Highlight/HighlighterPhraseTest.cs             |   12 +-
 .../Highlight/HighlighterTest.cs                   |   28 +-
 .../Highlight/OffsetLimitTokenFilterTest.cs        |    2 +-
 .../Highlight/TokenSourcesTest.cs                  |   10 +-
 .../Lucene.Net.Tests.Highlighter.csproj            |   30 +-
 .../PostingsHighlight/TestPostingsHighlighter.cs   |   32 +-
 .../TestPostingsHighlighterRanking.cs              |    8 +-
 .../Support/TestApiConsistency.cs                  |    6 +-
 .../Support/TestExceptionSerialization.cs          |   55 -
 .../VectorHighlight/AbstractTestCase.cs            |    7 +-
 .../VectorHighlight/FastVectorHighlighterTest.cs   |   16 +-
 .../VectorHighlight/FieldPhraseListTest.cs         |   44 +-
 .../VectorHighlight/FieldQueryTest.cs              |   10 +-
 .../VectorHighlight/IndexTimeSynonymTest.cs        |   15 +-
 .../VectorHighlight/SimpleFragListBuilderTest.cs   |   45 +-
 .../VectorHighlight/SimpleFragmentsBuilderTest.cs  |    6 +-
 .../VectorHighlight/SingleFragListBuilderTest.cs   |    5 +-
 .../VectorHighlight/WeightedFragListBuilderTest.cs |    3 +-
 .../Lucene.Net.Tests.Join.csproj                   |   30 +-
 .../Support/TestApiConsistency.cs                  |   40 +-
 src/Lucene.Net.Tests.Join/Support/TestBlockJoin.cs | 1611 ++++++++
 .../Support/TestBlockJoinSorting.cs                |  285 ++
 .../Support/TestBlockJoinValidation.cs             |  251 ++
 .../Support/TestExceptionSerialization.cs          |   55 -
 src/Lucene.Net.Tests.Join/Support/TestJoinUtil.cs  | 1085 +++++
 src/Lucene.Net.Tests.Join/TestBlockJoin.cs         |  132 +-
 src/Lucene.Net.Tests.Join/TestBlockJoinSorting.cs  |    8 +-
 .../TestBlockJoinValidation.cs                     |   63 +-
 src/Lucene.Net.Tests.Join/TestJoinUtil.cs          |   93 +-
 .../Index/Memory/MemoryIndexTest.cs                |    2 +-
 .../Lucene.Net.Tests.Memory.csproj                 |   35 +-
 .../Support/TestApiConsistency.cs                  |    6 +-
 .../Support/TestExceptionSerialization.cs          |   55 -
 .../Document/TestLazyDocument.cs                   |    8 +-
 .../Index/Sorter/IndexSortingTest.cs               |    5 +-
 .../Index/Sorter/SorterTestBase.cs                 |   29 +-
 .../Index/Sorter/SortingAtomicReaderTest.cs        |    2 +-
 .../Index/Sorter/TestBlockJoinSorter.cs            |    5 +-
 .../Index/Sorter/TestEarlyTermination.cs           |   12 +-
 .../Index/Sorter/TestSortingMergePolicy.cs         |   16 +-
 .../Index/TestIndexSplitter.cs                     |    4 +-
 .../Index/TestMultiPassIndexSplitter.cs            |    4 +-
 .../Index/TestPKIndexSplitter.cs                   |    2 +-
 .../Lucene.Net.Tests.Misc.csproj                   |   23 +-
 .../Misc/TestHighFreqTerms.cs                      |   20 +-
 .../Support/TestApiConsistency.cs                  |    6 +-
 .../Support/TestExceptionSerialization.cs          |   55 -
 src/Lucene.Net.Tests.Misc/Util/Fst/TestFSTsMisc.cs |   58 +-
 src/Lucene.Net.Tests.Queries/BooleanFilterTest.cs  |    6 +-
 src/Lucene.Net.Tests.Queries/ChainedFilterTest.cs  |   14 +-
 .../CommonTermsQueryTest.cs                        |   59 +-
 .../Function/TestBoostedQuery.cs                   |    6 +-
 .../Function/TestDocValuesFieldSources.cs          |   11 +-
 .../Function/TestFieldScoreQuery.cs                |    6 +-
 .../Function/TestFunctionQuerySort.cs              |    2 +-
 .../Function/TestLongNormValueSource.cs            |    6 +-
 .../Function/TestOrdValues.cs                      |    6 +-
 .../Function/TestValueSources.cs                   |    6 +-
 .../Lucene.Net.Tests.Queries.csproj                |   23 +-
 .../Mlt/TestMoreLikeThis.cs                        |   55 +-
 .../Support/TestApiConsistency.cs                  |    6 +-
 .../Support/TestExceptionSerialization.cs          |   55 -
 src/Lucene.Net.Tests.Queries/TermFilterTest.cs     |   22 +-
 src/Lucene.Net.Tests.Queries/TermsFilterTest.cs    |   63 +-
 .../TestCustomScoreQuery.cs                        |   40 +-
 .../Analyzing/TestAnalyzingQueryParser.cs          |   26 +-
 .../Classic/TestMultiFieldQueryParser.cs           |   10 +-
 .../Classic/TestQueryParser.cs                     |   26 +-
 .../ComplexPhrase/TestComplexPhraseQuery.cs        |    2 +-
 .../Ext/TestExtendableQueryParser.cs               |   14 +-
 .../Ext/TestExtensions.cs                          |    2 +-
 .../Flexible/Core/Nodes/TestQueryNode.cs           |   17 +
 .../Flexible/Messages/MessagesTestBundle.cs        |   81 +-
 .../Flexible/Messages/TestNLS.cs                   |  237 +-
 .../Precedence/TestPrecedenceQueryParser.cs        |   30 +-
 .../Spans/SpansValidatorQueryNodeProcessor.cs      |    5 +-
 .../Spans/UniqueFieldQueryNodeProcessor.cs         |    2 +-
 .../Flexible/Standard/TestMultiFieldQPHelper.cs    |   26 +-
 .../Flexible/Standard/TestNumericQueryParser.cs    |  209 +-
 .../Flexible/Standard/TestQPHelper.cs              |   40 +-
 .../Flexible/Standard/TestStandardQP.cs            |   18 +-
 .../Lucene.Net.Tests.QueryParser.csproj            |   61 +-
 .../Resources/LUCENE_NET_ICON_32x32.png            |  Bin 0 -> 233 bytes
 .../Core/Messages/MessagesTest.Designer.cs         |  100 +
 .../Flexible/Core/Messages/MessagesTest.ja.resx    |  144 +
 .../Flexible/Core/Messages/MessagesTest.resx       |  151 +
 .../Messages/TestQueryParserMessagesDefault.cs     |  105 +
 .../Messages/TestQueryParserMessagesOverridden.cs  |  123 +
 .../Messages/TestQueryParserResourceProvider.cs    |  113 +
 .../Core/Messages}/lucene-net-icon-32x32.png       |  Bin
 .../Standard/Config/TestNumberDateFormat.cs        |  143 +
 .../Support/TestApiConsistency.cs                  |    8 +-
 .../Support/TestExceptionSerialization.cs          |   55 -
 .../Surround/Query/ExceptionQueryTst.cs            |    2 +-
 .../Util/QueryParserTestBase.cs                    |   28 +-
 .../Xml/TestQueryTemplateManager.cs                |    6 +-
 .../Http/HttpReplicatorTest.cs                     |   50 +-
 .../Http/ReplicationServlet.cs                     |   85 +-
 .../IndexAndTaxonomyReplicationClientTest.cs       |   34 +-
 .../IndexAndTaxonomyRevisionTest.cs                |    4 +-
 .../IndexInputStreamTest.cs                        |   16 +-
 .../IndexReplicationClientTest.cs                  |   39 +-
 .../IndexRevisionTest.cs                           |    6 +-
 .../LocalReplicatorTest.cs                         |   21 +-
 .../Lucene.Net.Tests.Replicator.csproj             |   37 +-
 .../Properties/AssemblyInfo.cs                     |    7 +-
 .../ReplicatorTestCase.cs                          |  110 +-
 .../Support/TestApiConsistency.cs                  |    4 +-
 .../Support/TestExceptionSerialization.cs          |   55 -
 .../Lucene.Net.Tests.Sandbox.csproj                |   24 +-
 .../Queries/TestSlowFuzzyQuery.cs                  |   67 +-
 .../Queries/TestSortedSetSortField.cs              |   34 +-
 .../Queries/TestSortedSetSortFieldDocValues.cs     |   34 +-
 .../Queries/TestSortedSetSortFieldSelectors.cs     |  102 +-
 .../Support/TestApiConsistency.cs                  |    6 +-
 .../Support/TestExceptionSerialization.cs          |   55 -
 .../DistanceStrategyTest.cs                        |   15 +-
 .../Lucene.Net.Tests.Spatial.csproj                |   31 +-
 src/Lucene.Net.Tests.Spatial/PortedSolr3Test.cs    |   22 +-
 .../Prefix/NtsPolygonTest.cs                       |   18 +-
 .../Prefix/SpatialOpRecursivePrefixTreeTest.cs     |  159 +-
 .../Prefix/TestRecursivePrefixTreeStrategy.cs      |   26 +-
 .../Prefix/TestTermQueryPrefixGridStrategy.cs      |   11 +-
 .../Prefix/Tree/SpatialPrefixTreeTest.cs           |    6 +-
 .../Query/SpatialArgsParserTest.cs                 |   20 +-
 .../QueryEqualsHashCodeTest.cs                     |   21 +-
 .../Serialized/SerializedStrategyTest.cs           |    4 +-
 src/Lucene.Net.Tests.Spatial/SpatialArgsTest.cs    |    6 +-
 src/Lucene.Net.Tests.Spatial/SpatialExample.cs     |   18 +-
 src/Lucene.Net.Tests.Spatial/SpatialTestCase.cs    |   18 +-
 src/Lucene.Net.Tests.Spatial/SpatialTestData.cs    |   14 +-
 src/Lucene.Net.Tests.Spatial/SpatialTestQuery.cs   |    9 +-
 src/Lucene.Net.Tests.Spatial/StrategyTestCase.cs   |   22 +-
 .../Support/TestApiConsistency.cs                  |    6 +-
 .../Support/TestExceptionSerialization.cs          |   55 -
 src/Lucene.Net.Tests.Spatial/TestTestFramework.cs  |   10 +-
 .../Vector/TestPointVectorStrategy.cs              |    6 +-
 .../Lucene.Net.Tests.Suggest.csproj                |   31 +-
 .../Spell/TestDirectSpellChecker.cs                |   36 +-
 .../Spell/TestSpellChecker.cs                      |   93 +-
 .../Spell/TestWordBreakSpellChecker.cs             |   25 +-
 .../Analyzing/AnalyzingInfixSuggesterTest.cs       |   68 +-
 .../Suggest/Analyzing/AnalyzingSuggesterTest.cs    |   39 +-
 .../Suggest/Analyzing/BlendedInfixSuggesterTest.cs |   37 +-
 .../Suggest/Analyzing/FuzzySuggesterTest.cs        |   24 +-
 .../Suggest/Analyzing/TestFreeTextSuggester.cs     |   42 +-
 .../Suggest/DocumentDictionaryTest.cs              |   26 +-
 .../Suggest/DocumentValueSourceDictionaryTest.cs   |    4 +-
 .../Suggest/FileDictionaryTest.cs                  |   48 +-
 .../Suggest/Fst/BytesRefSortersTest.cs             |    2 +-
 .../Suggest/Fst/FSTCompletionTest.cs               |    7 +-
 .../Suggest/Fst/WFSTCompletionTest.cs              |   11 +-
 .../Suggest/LookupBenchmarkTest.cs                 |   32 +-
 .../Suggest/TestInputIterator.cs                   |   12 +-
 .../Support/TestApiConsistency.cs                  |    6 +-
 .../Support/TestExceptionSerialization.cs          |   55 -
 .../Codecs/TestCodecServices.cs                    |    4 +
 .../Configuration/TestConfigurationService.cs      |   12 +
 ....Tests.TestFramework.DependencyInjection.csproj |   21 +-
 .../Startup.cs                                     |    5 +-
 .../Analysis/TestLookaheadTokenFilter.cs           |   24 +-
 .../Analysis/TestMockAnalyzer.cs                   |   28 +-
 .../Analysis/TestMockCharFilter.cs                 |   24 -
 .../Analysis/TrivialLookaheadFilter.cs             |  112 +-
 .../Asserting/TestAssertingDocValuesFormat.cs      |   29 -
 .../Codecs/Asserting/TestAssertingNormsFormat.cs   |   27 -
 .../Asserting/TestAssertingPostingsFormat.cs       |   29 -
 .../Asserting/TestAssertingStoredFieldsFormat.cs   |   26 -
 .../Asserting/TestAssertingTermVectorsFormat.cs    |   26 -
 .../TestCompressingStoredFieldsFormat.cs           |   15 +-
 .../Configuration/TestSystemProperties.cs          |    4 +-
 .../Lucene.Net.Tests.TestFramework.csproj          |   26 +-
 src/Lucene.Net.Tests.TestFramework/Startup.cs      |    2 +-
 .../Store/TestMockDirectoryWrapper.cs              |   56 +-
 .../Support/TestApiConsistency.cs                  |   12 +-
 .../Support/TestExceptionSerialization.cs          |   58 -
 .../Lucene.Net.Tests._A-D.csproj                   |   41 +-
 src/Lucene.Net.Tests._A-D/Startup.cs               |   25 -
 .../Lucene.Net.Tests._E-I.csproj                   |   47 +-
 .../Lucene.Net.Tests._I-J.csproj                   |   45 +-
 src/Lucene.Net.Tests._I-J/Startup.cs               |   25 -
 .../Lucene.Net.Tests._J-S.csproj                   |   49 +-
 src/Lucene.Net.Tests._J-S/Startup.cs               |   25 -
 .../Lucene.Net.Tests._T-Z.csproj                   |   47 +-
 .../Analysis/TestCachingTokenFilter.cs             |   10 +-
 .../Analysis/TestGraphTokenizers.cs                |    9 +-
 .../Analysis/TestLookaheadTokenFilter.cs           |    3 +-
 src/Lucene.Net.Tests/Analysis/TestMockAnalyzer.cs  |   13 +-
 .../Analysis/TestNumericTokenStream.cs             |   10 +-
 src/Lucene.Net.Tests/Analysis/TestToken.cs         |    8 +-
 .../TokenAttributes/TestCharTermAttributeImpl.cs   |    8 +-
 .../Analysis/TrivialLookaheadFilter.cs             |    5 +-
 .../Compressing/AbstractTestCompressionMode.cs     |    5 +-
 .../Compressing/AbstractTestLZ4CompressionMode.cs  |    2 +-
 .../TestCompressingStoredFieldsFormat.cs           |    6 +-
 .../TestCompressingTermVectorsFormat.cs            |   16 +-
 .../Codecs/Lucene3x/TestSurrogates.cs              |   24 +-
 .../Codecs/Lucene3x/TestTermInfosReaderIndex.cs    |    9 +-
 .../Codecs/Lucene40/TestLucene40PostingsReader.cs  |    6 +-
 .../Codecs/Lucene40/TestReuseDocsEnum.cs           |   16 +-
 .../Codecs/Lucene41/TestBlockPostingsFormat2.cs    |    2 +-
 .../Codecs/Lucene41/TestBlockPostingsFormat3.cs    |   23 +-
 .../Codecs/Lucene41/TestForUtil.cs                 |    9 +-
 .../Codecs/PerField/TestPerFieldDocValuesFormat.cs |    7 +-
 .../Codecs/PerField/TestPerFieldPostingsFormat.cs  |    5 +-
 .../Codecs/PerField/TestPerFieldPostingsFormat2.cs |    7 +-
 .../Document/TestBinaryDocument.cs                 |   14 +-
 src/Lucene.Net.Tests/Document/TestDateTools.cs     |  453 ++-
 src/Lucene.Net.Tests/Document/TestDocument.cs      |   50 +-
 src/Lucene.Net.Tests/Document/TestField.cs         |   50 +-
 src/Lucene.Net.Tests/Index/Test2BDocs.cs           |    6 +-
 src/Lucene.Net.Tests/Index/Test2BPostingsBytes.cs  |    2 +-
 src/Lucene.Net.Tests/Index/Test2BTerms.cs          |   23 +-
 src/Lucene.Net.Tests/Index/Test4GBStoredFields.cs  |    4 +-
 src/Lucene.Net.Tests/Index/TestAddIndexes.cs       |  108 +-
 src/Lucene.Net.Tests/Index/TestAtomicUpdate.cs     |    8 +-
 .../Index/TestBackwardsCompatibility.cs            |   20 +-
 .../Index/TestBackwardsCompatibility3x.cs          |   16 +-
 src/Lucene.Net.Tests/Index/TestBagOfPositions.cs   |   15 +-
 src/Lucene.Net.Tests/Index/TestBagOfPostings.cs    |   11 +-
 .../Index/TestBinaryDocValuesUpdates.cs            |   36 +-
 src/Lucene.Net.Tests/Index/TestBinaryTerms.cs      |    8 +-
 src/Lucene.Net.Tests/Index/TestByteSlices.cs       |    3 +-
 src/Lucene.Net.Tests/Index/TestCheckIndex.cs       |    5 +-
 .../Index/TestCodecHoldsOpenFiles.cs               |   23 +-
 src/Lucene.Net.Tests/Index/TestCodecs.cs           |   23 +-
 src/Lucene.Net.Tests/Index/TestCompoundFile.cs     |  105 +-
 .../Index/TestConcurrentMergeScheduler.cs          |   10 +-
 .../Index/TestConsistentFieldNumbers.cs            |   73 +-
 src/Lucene.Net.Tests/Index/TestCrash.cs            |   24 +-
 .../Index/TestCrashCausesCorruptIndex.cs           |    4 +-
 src/Lucene.Net.Tests/Index/TestCustomNorms.cs      |    4 +-
 src/Lucene.Net.Tests/Index/TestDeletionPolicy.cs   |   21 +-
 src/Lucene.Net.Tests/Index/TestDirectoryReader.cs  |   75 +-
 .../Index/TestDirectoryReaderReopen.cs             |   63 +-
 src/Lucene.Net.Tests/Index/TestDoc.cs              |    8 +-
 src/Lucene.Net.Tests/Index/TestDocCount.cs         |   14 +-
 .../Index/TestDocInverterPerFieldErrorInfo.cs      |    6 +-
 src/Lucene.Net.Tests/Index/TestDocTermOrds.cs      |   14 +-
 .../Index/TestDocValuesIndexing.cs                 |  128 +-
 .../Index/TestDocValuesWithThreads.cs              |   49 +-
 src/Lucene.Net.Tests/Index/TestDocsAndPositions.cs |   27 +-
 src/Lucene.Net.Tests/Index/TestDocumentWriter.cs   |   12 +-
 .../Index/TestDocumentsWriterDeleteQueue.cs        |   27 +-
 .../Index/TestDocumentsWriterStallControl.cs       |   70 +-
 src/Lucene.Net.Tests/Index/TestDuelingCodecs.cs    |  116 +-
 .../Index/TestExceedMaxTermLength.cs               |    8 +-
 src/Lucene.Net.Tests/Index/TestFieldsReader.cs     |   18 +-
 .../Index/TestFilterAtomicReader.cs                |    2 +-
 src/Lucene.Net.Tests/Index/TestFlex.cs             |    6 +-
 .../Index/TestFlushByRamOrCountsPolicy.cs          |   28 +-
 .../Index/TestForceMergeForever.cs                 |    8 +-
 src/Lucene.Net.Tests/Index/TestIndexCommit.cs      |    4 +-
 src/Lucene.Net.Tests/Index/TestIndexFileDeleter.cs |    6 +-
 src/Lucene.Net.Tests/Index/TestIndexInput.cs       |    4 +-
 src/Lucene.Net.Tests/Index/TestIndexReaderClose.cs |   32 +-
 src/Lucene.Net.Tests/Index/TestIndexWriter.cs      |  287 +-
 .../Index/TestIndexWriterCommit.cs                 |   13 +-
 .../Index/TestIndexWriterConfig.cs                 |   52 +-
 .../Index/TestIndexWriterDelete.cs                 |   44 +-
 .../Index/TestIndexWriterExceptions.cs             |  255 +-
 .../Index/TestIndexWriterForceMerge.cs             |    2 +-
 .../Index/TestIndexWriterLockRelease.cs            |   35 +-
 .../Index/TestIndexWriterMergePolicy.cs            |    4 +-
 .../Index/TestIndexWriterMerging.cs                |   34 +-
 .../Index/TestIndexWriterNRTIsCurrent.cs           |   18 +-
 .../Index/TestIndexWriterOnDiskFull.cs             |   24 +-
 .../Index/TestIndexWriterOnJRECrash.cs             |   12 +-
 .../Index/TestIndexWriterOutOfFileDescriptors.cs   |    9 +-
 .../Index/TestIndexWriterReader.cs                 |   85 +-
 .../Index/TestIndexWriterUnicode.cs                |    9 +-
 .../Index/TestIndexWriterWithThreads.cs            |   95 +-
 src/Lucene.Net.Tests/Index/TestIndexableField.cs   |   28 +-
 src/Lucene.Net.Tests/Index/TestIntBlockPool.cs     |    6 +-
 src/Lucene.Net.Tests/Index/TestIsCurrent.cs        |    8 +-
 src/Lucene.Net.Tests/Index/TestLazyProxSkipping.cs |    7 +-
 src/Lucene.Net.Tests/Index/TestLongPostings.cs     |    7 +-
 src/Lucene.Net.Tests/Index/TestMaxTermFrequency.cs |    9 +-
 src/Lucene.Net.Tests/Index/TestMixedCodecs.cs      |    7 +-
 .../Index/TestMixedDocValuesUpdates.cs             |   20 +-
 src/Lucene.Net.Tests/Index/TestMultiDocValues.cs   |   16 +-
 src/Lucene.Net.Tests/Index/TestMultiFields.cs      |   15 +-
 .../Index/TestMultiLevelSkipList.cs                |    9 +-
 .../Index/TestNRTReaderWithThreads.cs              |   13 +-
 src/Lucene.Net.Tests/Index/TestNRTThreads.cs       |    7 +-
 src/Lucene.Net.Tests/Index/TestNeverDelete.cs      |   15 +-
 src/Lucene.Net.Tests/Index/TestNoMergeScheduler.cs |    4 +-
 src/Lucene.Net.Tests/Index/TestNorms.cs            |    4 +-
 .../Index/TestNumericDocValuesUpdates.cs           |   38 +-
 src/Lucene.Net.Tests/Index/TestOmitNorms.cs        |    5 +-
 src/Lucene.Net.Tests/Index/TestOmitPositions.cs    |   15 +-
 src/Lucene.Net.Tests/Index/TestOmitTf.cs           |   20 +-
 .../Index/TestParallelAtomicReader.cs              |   19 +-
 .../Index/TestParallelCompositeReader.cs           |   52 +-
 src/Lucene.Net.Tests/Index/TestPayloads.cs         |   76 +-
 .../Index/TestPayloadsOnVectors.cs                 |   19 +-
 .../Index/TestPerSegmentDeletes.cs                 |   31 +-
 .../Index/TestPersistentSnapshotDeletionPolicy.cs  |    8 +-
 src/Lucene.Net.Tests/Index/TestPostingsOffsets.cs  |   32 +-
 src/Lucene.Net.Tests/Index/TestPrefixCodedTerms.cs |    4 +-
 src/Lucene.Net.Tests/Index/TestReaderClosed.cs     |   10 +-
 src/Lucene.Net.Tests/Index/TestRollback.cs         |    8 +-
 src/Lucene.Net.Tests/Index/TestRollingUpdates.cs   |   11 +-
 .../Index/TestSameTokenSamePosition.cs             |   14 +-
 src/Lucene.Net.Tests/Index/TestSegmentMerger.cs    |    6 +-
 src/Lucene.Net.Tests/Index/TestSegmentReader.cs    |   22 +-
 src/Lucene.Net.Tests/Index/TestSegmentTermDocs.cs  |   14 +-
 src/Lucene.Net.Tests/Index/TestSegmentTermEnum.cs  |    6 +-
 .../Index/TestSizeBoundedForceMerge.cs             |    8 +-
 .../Index/TestSnapshotDeletionPolicy.cs            |   39 +-
 src/Lucene.Net.Tests/Index/TestStressAdvance.cs    |   12 +-
 src/Lucene.Net.Tests/Index/TestStressIndexing.cs   |   14 +-
 src/Lucene.Net.Tests/Index/TestStressIndexing2.cs  |   62 +-
 src/Lucene.Net.Tests/Index/TestStressNRT.cs        |   59 +-
 src/Lucene.Net.Tests/Index/TestSumDocFreq.cs       |    8 +-
 .../Index/TestTermVectorsReader.cs                 |   20 +-
 .../Index/TestTermVectorsWriter.cs                 |    6 +-
 src/Lucene.Net.Tests/Index/TestTermdocPerf.cs      |   13 +-
 src/Lucene.Net.Tests/Index/TestTermsEnum.cs        |   39 +-
 src/Lucene.Net.Tests/Index/TestTermsEnum2.cs       |    7 +-
 .../Index/TestThreadedForceMerge.cs                |    6 +-
 .../Index/TestTieredMergePolicy.cs                 |   14 +-
 .../Index/TestTransactionRollback.cs               |   10 +-
 src/Lucene.Net.Tests/Index/TestTransactions.cs     |   45 +-
 src/Lucene.Net.Tests/Index/TestTryDelete.cs        |    3 +-
 .../Index/TestTwoPhaseCommitTool.cs                |   11 +-
 src/Lucene.Net.Tests/Index/TestUniqueTermCount.cs  |    6 +-
 src/Lucene.Net.Tests/Search/BaseTestRangeFilter.cs |    2 +-
 src/Lucene.Net.Tests/Search/JustCompileSearch.cs   |  100 +-
 src/Lucene.Net.Tests/Search/MultiCollectorTest.cs  |    6 +-
 .../Search/Payloads/PayloadHelper.cs               |    8 +-
 .../Search/Payloads/TestPayloadExplanations.cs     |    2 +-
 .../Search/Payloads/TestPayloadTermQuery.cs        |    8 +-
 .../Search/Similarities/TestSimilarity2.cs         |   47 +-
 .../Search/Similarities/TestSimilarityBase.cs      |   11 +-
 .../Search/Spans/JustCompileSearchSpans.cs         |   40 +-
 .../Search/Spans/MultiSpansWrapper.cs              |   14 +-
 src/Lucene.Net.Tests/Search/Spans/TestBasics.cs    |   17 +-
 .../Search/Spans/TestFieldMaskingSpanQuery.cs      |   10 +-
 .../Search/Spans/TestNearSpansOrdered.cs           |    8 +-
 .../Search/Spans/TestSpanFirstQuery.cs             |    8 +-
 .../Search/Spans/TestSpanMultiTermQueryWrapper.cs  |    8 +-
 src/Lucene.Net.Tests/Search/Spans/TestSpans.cs     |   10 +-
 .../Search/Spans/TestSpansAdvanced.cs              |    8 +-
 src/Lucene.Net.Tests/Search/TestAutomatonQuery.cs  |   12 +-
 .../Search/TestAutomatonQueryUnicode.cs            |    8 +-
 src/Lucene.Net.Tests/Search/TestBoolean2.cs        |   25 +-
 .../Search/TestBooleanMinShouldMatch.cs            |   43 +-
 src/Lucene.Net.Tests/Search/TestBooleanOr.cs       |   26 +-
 src/Lucene.Net.Tests/Search/TestBooleanQuery.cs    |   50 +-
 src/Lucene.Net.Tests/Search/TestBooleanScorer.cs   |   59 +-
 .../Search/TestCachingCollector.cs                 |   20 +-
 .../Search/TestCachingWrapperFilter.cs             |   72 +-
 .../Search/TestComplexExplanations.cs              |    2 +-
 src/Lucene.Net.Tests/Search/TestConjunctions.cs    |    4 +-
 .../Search/TestConstantScoreQuery.cs               |   32 +-
 .../Search/TestControlledRealTimeReopenThread.cs   |  343 +-
 .../Search/TestCustomSearcherSort.cs               |   24 +-
 src/Lucene.Net.Tests/Search/TestDateFilter.cs      |   30 +-
 src/Lucene.Net.Tests/Search/TestDateSort.cs        |   10 +-
 .../Search/TestDisjunctionMaxQuery.cs              |   88 +-
 src/Lucene.Net.Tests/Search/TestDocBoost.cs        |   12 +-
 src/Lucene.Net.Tests/Search/TestDocIdSet.cs        |   35 +-
 .../Search/TestDocTermOrdsRangeFilter.cs           |    8 +-
 .../Search/TestDocTermOrdsRewriteMethod.cs         |    6 +-
 .../Search/TestDocValuesScoring.cs                 |   60 +-
 .../Search/TestEarlyTermination.cs                 |   19 +-
 .../Search/TestElevationComparator.cs              |   27 +-
 src/Lucene.Net.Tests/Search/TestExplanations.cs    |    8 +-
 src/Lucene.Net.Tests/Search/TestFieldCache.cs      |  107 +-
 .../Search/TestFieldCacheRangeFilter.cs            |   28 +-
 .../Search/TestFieldCacheTermsFilter.cs            |   16 +-
 .../Search/TestFieldValueFilter.cs                 |    3 +-
 src/Lucene.Net.Tests/Search/TestFilteredQuery.cs   |  105 +-
 src/Lucene.Net.Tests/Search/TestFilteredSearch.cs  |    4 +-
 src/Lucene.Net.Tests/Search/TestFuzzyQuery.cs      |   56 +-
 src/Lucene.Net.Tests/Search/TestIndexSearcher.cs   |   18 +-
 src/Lucene.Net.Tests/Search/TestLiveFieldValues.cs |   18 +-
 src/Lucene.Net.Tests/Search/TestMinShouldMatch2.cs |   28 +-
 .../Search/TestMultiPhraseQuery.cs                 |   72 +-
 .../Search/TestMultiTermConstantScore.cs           |   12 +-
 .../Search/TestMultiTermQueryRewrites.cs           |   26 +-
 .../Search/TestMultiThreadTermVectors.cs           |   23 +-
 .../Search/TestNGramPhraseQuery.cs                 |    8 +-
 src/Lucene.Net.Tests/Search/TestNot.cs             |    8 +-
 .../Search/TestNumericRangeQuery32.cs              |    2 +-
 .../Search/TestNumericRangeQuery64.cs              |    2 +-
 .../Search/TestPhrasePrefixQuery.cs                |    8 +-
 src/Lucene.Net.Tests/Search/TestPhraseQuery.cs     |  209 +-
 .../Search/TestPositionIncrement.cs                |   18 +-
 .../Search/TestPositiveScoresOnlyCollector.cs      |    8 +-
 src/Lucene.Net.Tests/Search/TestPrefixFilter.cs    |    8 +-
 .../Search/TestPrefixInBooleanQuery.cs             |    8 +-
 src/Lucene.Net.Tests/Search/TestPrefixQuery.cs     |    8 +-
 src/Lucene.Net.Tests/Search/TestQueryRescorer.cs   |   74 +-
 .../Search/TestQueryWrapperFilter.cs               |   20 +-
 src/Lucene.Net.Tests/Search/TestRegexpQuery.cs     |   10 +-
 src/Lucene.Net.Tests/Search/TestRegexpRandom2.cs   |   11 +-
 .../Search/TestSameScoresWithThreads.cs            |   17 +-
 .../Search/TestScoreCachingWrappingScorer.cs       |    8 +-
 src/Lucene.Net.Tests/Search/TestScorerPerf.cs      |   24 +-
 src/Lucene.Net.Tests/Search/TestSearchAfter.cs     |   34 +-
 .../Search/TestSearchWithThreads.cs                |   23 +-
 src/Lucene.Net.Tests/Search/TestSearcherManager.cs |  101 +-
 src/Lucene.Net.Tests/Search/TestShardSearching.cs  |   31 +-
 src/Lucene.Net.Tests/Search/TestSimilarity.cs      |   42 +-
 .../Search/TestSimpleExplanations.cs               |    2 +-
 .../Search/TestSloppyPhraseQuery.cs                |   42 +-
 .../Search/TestSloppyPhraseQuery2.cs               |    9 +-
 src/Lucene.Net.Tests/Search/TestSort.cs            |  356 +-
 src/Lucene.Net.Tests/Search/TestSortDocValues.cs   |  178 +-
 src/Lucene.Net.Tests/Search/TestSortRandom.cs      |   39 +-
 src/Lucene.Net.Tests/Search/TestSortRescorer.cs    |   44 +-
 src/Lucene.Net.Tests/Search/TestSubScorerFreqs.cs  |   38 +-
 src/Lucene.Net.Tests/Search/TestTermRangeQuery.cs  |    4 +-
 src/Lucene.Net.Tests/Search/TestTermScorer.cs      |   15 +-
 .../Search/TestTimeLimitingCollector.cs            |   30 +-
 .../Search/TestTopDocsCollector.cs                 |   10 +-
 src/Lucene.Net.Tests/Search/TestTopDocsMerge.cs    |   22 +-
 .../Search/TestTopFieldCollector.cs                |    8 +-
 .../Search/TestTopScoreDocCollector.cs             |    8 +-
 .../Search/TestTotalHitCountCollector.cs           |    8 +-
 src/Lucene.Net.Tests/Search/TestWildcard.cs        |    8 +-
 .../Store/TestBufferedIndexInput.cs                |   23 +-
 src/Lucene.Net.Tests/Store/TestCopyBytes.cs        |    9 +-
 src/Lucene.Net.Tests/Store/TestDirectory.cs        |   44 +-
 .../Store/TestFileSwitchDirectory.cs               |    4 +-
 src/Lucene.Net.Tests/Store/TestHugeRamFile.cs      |    2 +-
 src/Lucene.Net.Tests/Store/TestLock.cs             |    7 +-
 src/Lucene.Net.Tests/Store/TestLockFactory.cs      |   35 +-
 .../Store/TestMockDirectoryWrapper.cs              |   14 +-
 src/Lucene.Net.Tests/Store/TestMultiMMap.cs        |   38 +-
 .../Store/TestNRTCachingDirectory.cs               |    9 +-
 src/Lucene.Net.Tests/Store/TestRAMDirectory.cs     |   10 +-
 src/Lucene.Net.Tests/Store/TestWindowsMMap.cs      |    2 +-
 .../Support/Diagnostics/TestDebugging.cs           |    4 +-
 .../Document/Extensions/TestDocumentExtensions.cs  |   12 +-
 src/Lucene.Net.Tests/Support/TestApiConsistency.cs |    8 +-
 .../Support/TestExceptionSerialization.cs          |   55 -
 src/Lucene.Net.Tests/Support/TestIDisposable.cs    |    4 +-
 src/Lucene.Net.Tests/Support/TestOldPatches.cs     |  158 +-
 src/Lucene.Net.Tests/Support/TestSerialization.cs  |  223 +-
 src/Lucene.Net.Tests/Support/TestToStringUtils.cs  |    6 +-
 src/Lucene.Net.Tests/Support/TestWeakDictionary.cs |  152 -
 .../Support/TestWeakDictionaryBehavior.cs          |  294 --
 .../Support/TestWeakDictionaryPerformance.cs       |  133 -
 .../Threading/TestUninterruptableMonitor.cs        |  315 ++
 src/Lucene.Net.Tests/Support/Util/TestLongsRef.cs  |   75 +
 src/Lucene.Net.Tests/TestAssertions.cs             |    4 +-
 src/Lucene.Net.Tests/TestSearch.cs                 |    5 +-
 src/Lucene.Net.Tests/TestWorstCaseTestBehavior.cs  |   15 +-
 .../Util/Automaton/TestBasicOperations.cs          |    9 +-
 .../Util/Automaton/TestCompiledAutomaton.cs        |    6 +-
 .../Util/Automaton/TestDeterminizeLexicon.cs       |    7 +-
 .../Util/Automaton/TestLevenshteinAutomata.cs      |   11 +-
 .../Util/Automaton/TestUTF32ToUTF8.cs              |    5 +-
 src/Lucene.Net.Tests/Util/Fst/Test2BFST.cs         |   60 +-
 src/Lucene.Net.Tests/Util/Fst/TestBytesStore.cs    |    3 +-
 src/Lucene.Net.Tests/Util/Fst/TestFSTs.cs          |  270 +-
 .../Util/Packed/TestEliasFanoDocIdSet.cs           |    2 +-
 src/Lucene.Net.Tests/Util/Packed/TestPackedInts.cs |   79 +-
 .../Util/StressRamUsageEstimator.cs                |   10 +-
 src/Lucene.Net.Tests/Util/Test2BPagedBytes.cs      |    9 +-
 src/Lucene.Net.Tests/Util/TestArrayUtil.cs         |   21 +-
 src/Lucene.Net.Tests/Util/TestAttributeSource.cs   |   16 +-
 src/Lucene.Net.Tests/Util/TestByteBlockPool.cs     |    6 +-
 src/Lucene.Net.Tests/Util/TestBytesRef.cs          |   25 +-
 src/Lucene.Net.Tests/Util/TestBytesRefArray.cs     |   10 +-
 src/Lucene.Net.Tests/Util/TestBytesRefHash.cs      |   30 +-
 src/Lucene.Net.Tests/Util/TestCharsRef.cs          |   53 +-
 src/Lucene.Net.Tests/Util/TestCollectionUtil.cs    |    8 +-
 src/Lucene.Net.Tests/Util/TestConstants.cs         |    2 +-
 .../Util/TestDoubleBarrelLRUCache.cs               |   20 +-
 .../Util/TestFieldCacheSanityChecker.cs            |   17 +-
 src/Lucene.Net.Tests/Util/TestFilterIterator.cs    |   18 +-
 src/Lucene.Net.Tests/Util/TestFixedBitSet.cs       |   25 +-
 src/Lucene.Net.Tests/Util/TestIOUtils.cs           |   10 +-
 src/Lucene.Net.Tests/Util/TestIntsRef.cs           |   24 +
 src/Lucene.Net.Tests/Util/TestLongBitSet.cs        |  113 +-
 src/Lucene.Net.Tests/Util/TestMathUtil.cs          |    4 +-
 src/Lucene.Net.Tests/Util/TestMergedIterator.cs    |   28 +-
 src/Lucene.Net.Tests/Util/TestNamedSPILoader.cs    |    6 +-
 src/Lucene.Net.Tests/Util/TestNumericUtils.cs      |   25 +-
 src/Lucene.Net.Tests/Util/TestOfflineSorter.cs     |   18 +-
 src/Lucene.Net.Tests/Util/TestOpenBitSet.cs        |   23 +-
 src/Lucene.Net.Tests/Util/TestPForDeltaDocIdSet.cs |    4 +-
 src/Lucene.Net.Tests/Util/TestPagedBytes.cs        |    5 +-
 src/Lucene.Net.Tests/Util/TestPriorityQueue.cs     |   77 +-
 src/Lucene.Net.Tests/Util/TestQueryBuilder.cs      |    2 +-
 .../Util/TestRamUsageEstimatorOnWildAnimals.cs     |    6 +-
 .../Util/TestRecyclingByteBlockAllocator.cs        |    4 +-
 .../Util/TestRecyclingIntBlockAllocator.cs         |    4 +-
 src/Lucene.Net.Tests/Util/TestRollingBuffer.cs     |    2 +-
 src/Lucene.Net.Tests/Util/TestSentinelIntSet.cs    |    3 +-
 src/Lucene.Net.Tests/Util/TestSetOnce.cs           |   10 +-
 src/Lucene.Net.Tests/Util/TestSloppyMath.cs        |    3 +-
 src/Lucene.Net.Tests/Util/TestUnicodeUtil.cs       |   96 +-
 src/Lucene.Net.Tests/Util/TestVirtualMethod.cs     |   18 +-
 src/Lucene.Net.Tests/Util/TestWAH8DocIdSet.cs      |   24 +-
 src/Lucene.Net.Tests/Util/TestWeakIdentityMap.cs   |   12 +-
 src/Lucene.Net/Analysis/Analyzer.cs                |   16 +-
 src/Lucene.Net/Analysis/AnalyzerWrapper.cs         |    6 +-
 src/Lucene.Net/Analysis/CachingTokenFilter.cs      |    7 +-
 src/Lucene.Net/Analysis/CharFilter.cs              |    4 +-
 src/Lucene.Net/Analysis/NumericTokenStream.cs      |   22 +-
 src/Lucene.Net/Analysis/Token.cs                   |   18 +-
 .../Analysis/TokenAttributes/CharTermAttribute.cs  |  684 ++--
 .../TokenAttributes/CharTermAttributeImpl.cs       |  526 +++
 .../Analysis/TokenAttributes/FlagsAttribute.cs     |   64 +-
 .../Analysis/TokenAttributes/FlagsAttributeImpl.cs |   77 +
 .../Analysis/TokenAttributes/ICharTermAttribute.cs |  288 --
 .../Analysis/TokenAttributes/IFlagsAttribute.cs    |   40 -
 .../Analysis/TokenAttributes/IKeywordAttribute.cs  |   37 -
 .../Analysis/TokenAttributes/IOffsetAttribute.cs   |   57 -
 .../Analysis/TokenAttributes/IPayloadAttribute.cs  |   45 -
 .../TokenAttributes/IPositionIncrementAttribute.cs |   57 -
 .../TokenAttributes/IPositionLengthAttribute.cs    |   46 -
 .../TokenAttributes/ITermToBytesRefAttribute.cs    |   70 -
 .../Analysis/TokenAttributes/ITypeAttribute.cs     |   45 -
 .../Analysis/TokenAttributes/KeywordAttribute.cs   |   60 +-
 .../TokenAttributes/KeywordAttributeImpl.cs        |   76 +
 .../Analysis/TokenAttributes/OffsetAttribute.cs    |   98 +-
 .../TokenAttributes/OffsetAttributeImpl.cs         |   99 +
 .../Analysis/TokenAttributes/PayloadAttribute.cs   |   90 +-
 .../TokenAttributes/PayloadAttributeImpl.cs        |  101 +
 .../TokenAttributes/PositionIncrementAttribute.cs  |   88 +-
 .../PositionIncrementAttributeImpl.cs              |   85 +
 .../TokenAttributes/PositionLengthAttribute.cs     |   77 +-
 .../TokenAttributes/PositionLengthAttributeImpl.cs |   85 +
 .../TokenAttributes/TermToBytesRefAttribute.cs     |   70 +
 .../Analysis/TokenAttributes/TypeAttribute.cs      |   73 +-
 .../Analysis/TokenAttributes/TypeAttributeImpl.cs  |   81 +
 src/Lucene.Net/Analysis/TokenFilter.cs             |    5 +-
 src/Lucene.Net/Analysis/TokenStreamToAutomaton.cs  |   15 +-
 src/Lucene.Net/Analysis/Tokenizer.cs               |   22 +-
 src/Lucene.Net/Codecs/BlockTreeTermsReader.cs      |   72 +-
 src/Lucene.Net/Codecs/BlockTreeTermsWriter.cs      |   54 +-
 src/Lucene.Net/Codecs/Codec.cs                     |    6 +-
 src/Lucene.Net/Codecs/CodecUtil.cs                 |   12 +-
 .../Compressing/CompressingStoredFieldsFormat.cs   |    4 +-
 .../CompressingStoredFieldsIndexReader.cs          |    2 +-
 .../CompressingStoredFieldsIndexWriter.cs          |    2 +-
 .../Compressing/CompressingStoredFieldsReader.cs   |   21 +-
 .../Compressing/CompressingStoredFieldsWriter.cs   |   24 +-
 .../Compressing/CompressingTermVectorsFormat.cs    |    4 +-
 .../Compressing/CompressingTermVectorsReader.cs    |   44 +-
 .../Compressing/CompressingTermVectorsWriter.cs    |   26 +-
 .../Codecs/Compressing/CompressionMode.cs          |   14 +-
 src/Lucene.Net/Codecs/Compressing/Compressor.cs    |    4 +-
 src/Lucene.Net/Codecs/Compressing/Decompressor.cs  |    2 +-
 src/Lucene.Net/Codecs/Compressing/LZ4.cs           |   12 +-
 src/Lucene.Net/Codecs/DocValuesConsumer.cs         |   42 +-
 src/Lucene.Net/Codecs/DocValuesFormat.cs           |    2 +-
 src/Lucene.Net/Codecs/DocValuesProducer.cs         |    4 +-
 src/Lucene.Net/Codecs/FieldInfosFormat.cs          |    4 +-
 src/Lucene.Net/Codecs/FieldInfosReader.cs          |    4 +-
 src/Lucene.Net/Codecs/FieldInfosWriter.cs          |    4 +-
 src/Lucene.Net/Codecs/FieldsConsumer.cs            |    4 +-
 src/Lucene.Net/Codecs/FieldsProducer.cs            |    4 +-
 src/Lucene.Net/Codecs/FilterCodec.cs               |    4 +-
 src/Lucene.Net/Codecs/LiveDocsFormat.cs            |    4 +-
 src/Lucene.Net/Codecs/Lucene3x/Lucene3xCodec.cs    |    4 +-
 .../Codecs/Lucene3x/Lucene3xFieldInfosFormat.cs    |    2 +-
 .../Codecs/Lucene3x/Lucene3xFieldInfosReader.cs    |    6 +-
 src/Lucene.Net/Codecs/Lucene3x/Lucene3xFields.cs   |   50 +-
 .../Codecs/Lucene3x/Lucene3xNormsFormat.cs         |    2 +-
 .../Codecs/Lucene3x/Lucene3xNormsProducer.cs       |   37 +-
 .../Codecs/Lucene3x/Lucene3xPostingsFormat.cs      |    2 +-
 .../Codecs/Lucene3x/Lucene3xSegmentInfoFormat.cs   |    6 +-
 .../Codecs/Lucene3x/Lucene3xSegmentInfoReader.cs   |    2 +-
 .../Codecs/Lucene3x/Lucene3xStoredFieldsFormat.cs  |    2 +-
 .../Codecs/Lucene3x/Lucene3xStoredFieldsReader.cs  |    6 +-
 .../Codecs/Lucene3x/Lucene3xTermVectorsFormat.cs   |    2 +-
 .../Codecs/Lucene3x/Lucene3xTermVectorsReader.cs   |   31 +-
 src/Lucene.Net/Codecs/Lucene3x/SegmentTermDocs.cs  |   10 +-
 .../Codecs/Lucene3x/SegmentTermPositions.cs        |    8 +-
 src/Lucene.Net/Codecs/Lucene3x/TermBuffer.cs       |    4 +-
 src/Lucene.Net/Codecs/Lucene3x/TermInfosReader.cs  |   12 +-
 .../Codecs/Lucene3x/TermInfosReaderIndex.cs        |    7 +-
 src/Lucene.Net/Codecs/Lucene40/Lucene40Codec.cs    |    4 +-
 .../Codecs/Lucene40/Lucene40DocValuesFormat.cs     |    2 +-
 .../Codecs/Lucene40/Lucene40DocValuesReader.cs     |   63 +-
 .../Codecs/Lucene40/Lucene40FieldInfosFormat.cs    |    2 +-
 .../Codecs/Lucene40/Lucene40NormsFormat.cs         |    2 +-
 .../Codecs/Lucene40/Lucene40PostingsBaseFormat.cs  |    2 +-
 .../Codecs/Lucene40/Lucene40PostingsFormat.cs      |    2 +-
 .../Codecs/Lucene40/Lucene40PostingsReader.cs      |   24 +-
 .../Codecs/Lucene40/Lucene40StoredFieldsReader.cs  |   10 +-
 .../Codecs/Lucene40/Lucene40StoredFieldsWriter.cs  |   20 +-
 .../Codecs/Lucene40/Lucene40TermVectorsReader.cs   |   32 +-
 .../Codecs/Lucene40/Lucene40TermVectorsWriter.cs   |   33 +-
 src/Lucene.Net/Codecs/Lucene41/ForUtil.cs          |    2 +-
 src/Lucene.Net/Codecs/Lucene41/Lucene41Codec.cs    |    8 +-
 .../Codecs/Lucene41/Lucene41PostingsReader.cs      |   42 +-
 .../Codecs/Lucene41/Lucene41PostingsWriter.cs      |   18 +-
 .../Codecs/Lucene41/Lucene41SkipWriter.cs          |   10 +-
 src/Lucene.Net/Codecs/Lucene42/Lucene42Codec.cs    |   12 +-
 .../Codecs/Lucene42/Lucene42DocValuesFormat.cs     |    2 +-
 .../Codecs/Lucene42/Lucene42DocValuesProducer.cs   |  173 +-
 .../Codecs/Lucene42/Lucene42FieldInfosFormat.cs    |    2 +-
 .../Codecs/Lucene42/Lucene42NormsConsumer.cs       |   10 +-
 src/Lucene.Net/Codecs/Lucene45/Lucene45Codec.cs    |    8 +-
 .../Codecs/Lucene45/Lucene45DocValuesConsumer.cs   |   28 +-
 .../Codecs/Lucene45/Lucene45DocValuesProducer.cs   |  133 +-
 src/Lucene.Net/Codecs/Lucene46/Lucene46Codec.cs    |    8 +-
 .../Codecs/Lucene46/Lucene46FieldInfosWriter.cs    |    4 +-
 .../Codecs/MappingMultiDocsAndPositionsEnum.cs     |    7 +-
 src/Lucene.Net/Codecs/MappingMultiDocsEnum.cs      |    7 +-
 src/Lucene.Net/Codecs/MultiLevelSkipListReader.cs  |   20 +-
 src/Lucene.Net/Codecs/MultiLevelSkipListWriter.cs  |   12 +-
 src/Lucene.Net/Codecs/NormsFormat.cs               |    4 +-
 .../Codecs/PerField/PerFieldDocValuesFormat.cs     |   29 +-
 .../Codecs/PerField/PerFieldPostingsFormat.cs      |   33 +-
 src/Lucene.Net/Codecs/PostingsBaseFormat.cs        |    4 +-
 src/Lucene.Net/Codecs/PostingsConsumer.cs          |    4 +-
 src/Lucene.Net/Codecs/PostingsFormat.cs            |    8 +-
 src/Lucene.Net/Codecs/PostingsReaderBase.cs        |    4 +-
 src/Lucene.Net/Codecs/PostingsWriterBase.cs        |    4 +-
 src/Lucene.Net/Codecs/SegmentInfoFormat.cs         |    4 +-
 src/Lucene.Net/Codecs/SegmentInfoReader.cs         |    4 +-
 src/Lucene.Net/Codecs/SegmentInfoWriter.cs         |    4 +-
 src/Lucene.Net/Codecs/StoredFieldsFormat.cs        |    4 +-
 src/Lucene.Net/Codecs/StoredFieldsReader.cs        |    2 +-
 src/Lucene.Net/Codecs/StoredFieldsWriter.cs        |    4 +-
 src/Lucene.Net/Codecs/TermVectorsFormat.cs         |    4 +-
 src/Lucene.Net/Codecs/TermVectorsReader.cs         |    6 +-
 src/Lucene.Net/Codecs/TermVectorsWriter.cs         |   14 +-
 src/Lucene.Net/Codecs/TermsConsumer.cs             |   15 +-
 src/Lucene.Net/Document/BinaryDocValuesField.cs    |   14 +-
 src/Lucene.Net/Document/CompressionTools.cs        |    4 +-
 src/Lucene.Net/Document/DateTools.cs               |  463 ++-
 src/Lucene.Net/Document/Document.cs                |   21 +-
 .../Document/DocumentStoredFieldVisitor.cs         |    2 +-
 src/Lucene.Net/Document/DoubleField.cs             |   53 +-
 src/Lucene.Net/Document/Field.cs                   |  153 +-
 src/Lucene.Net/Document/FieldType.cs               |   16 +-
 src/Lucene.Net/Document/FloatField.cs              |   51 +-
 src/Lucene.Net/Document/IntField.cs                |   51 +-
 src/Lucene.Net/Document/LongField.cs               |   51 +-
 src/Lucene.Net/Document/NumericDocValuesField.cs   |   19 +-
 src/Lucene.Net/Document/SortedDocValuesField.cs    |   16 +-
 src/Lucene.Net/Document/SortedSetDocValuesField.cs |   16 +-
 src/Lucene.Net/Document/StoredField.cs             |   28 +-
 src/Lucene.Net/Document/StringField.cs             |   44 +-
 src/Lucene.Net/Document/TextField.cs               |   36 +-
 src/Lucene.Net/Index/AtomicReader.cs               |   16 +-
 src/Lucene.Net/Index/AtomicReaderContext.cs        |    2 +-
 src/Lucene.Net/Index/AutomatonTermsEnum.cs         |    4 +-
 src/Lucene.Net/Index/BaseCompositeReader.cs        |   15 +-
 .../Index/BinaryDocValuesFieldUpdates.cs           |   33 +-
 src/Lucene.Net/Index/BinaryDocValuesWriter.cs      |   16 +-
 src/Lucene.Net/Index/BitsSlice.cs                  |    4 +-
 src/Lucene.Net/Index/BufferedUpdates.cs            |   45 +-
 src/Lucene.Net/Index/BufferedUpdatesStream.cs      |  115 +-
 src/Lucene.Net/Index/CheckIndex.cs                 |  531 ++-
 src/Lucene.Net/Index/CoalescedUpdates.cs           |   50 +-
 src/Lucene.Net/Index/CompositeReader.cs            |    8 +-
 src/Lucene.Net/Index/CompositeReaderContext.cs     |   11 +-
 src/Lucene.Net/Index/ConcurrentMergeScheduler.cs   |  206 +-
 src/Lucene.Net/Index/DirectoryReader.cs            |   27 +-
 src/Lucene.Net/Index/DocFieldProcessor.cs          |   25 +-
 src/Lucene.Net/Index/DocInverterPerField.cs        |    4 +-
 src/Lucene.Net/Index/DocTermOrds.cs                |   52 +-
 src/Lucene.Net/Index/DocValues.cs                  |   27 +-
 src/Lucene.Net/Index/DocValuesFieldUpdates.cs      |  109 +-
 src/Lucene.Net/Index/DocValuesProcessor.cs         |    4 +-
 src/Lucene.Net/Index/DocValuesUpdate.cs            |   83 +-
 src/Lucene.Net/Index/DocsEnum.cs                   |    2 +-
 src/Lucene.Net/Index/DocumentsWriter.cs            |   78 +-
 src/Lucene.Net/Index/DocumentsWriterDeleteQueue.cs |    9 +-
 .../Index/DocumentsWriterFlushControl.cs           |  192 +-
 src/Lucene.Net/Index/DocumentsWriterFlushQueue.cs  |   65 +-
 src/Lucene.Net/Index/DocumentsWriterPerThread.cs   |    8 +-
 .../Index/DocumentsWriterPerThreadPool.cs          |   49 +-
 .../Index/DocumentsWriterStallControl.cs           |   64 +-
 src/Lucene.Net/Index/FieldInfo.cs                  |    4 +-
 src/Lucene.Net/Index/FieldInfos.cs                 |   58 +-
 src/Lucene.Net/Index/Fields.cs                     |    6 +-
 src/Lucene.Net/Index/FilterAtomicReader.cs         |    6 +-
 src/Lucene.Net/Index/FilterDirectoryReader.cs      |    2 +-
 src/Lucene.Net/Index/FilteredTermsEnum.cs          |   18 +-
 src/Lucene.Net/Index/FlushPolicy.cs                |    8 +-
 src/Lucene.Net/Index/FreqProxTermsWriter.cs        |    7 +-
 .../Index/FreqProxTermsWriterPerField.cs           |   21 +-
 src/Lucene.Net/Index/FrozenBufferedUpdates.cs      |   69 +-
 src/Lucene.Net/Index/IndexCommit.cs                |    2 +-
 src/Lucene.Net/Index/IndexFileDeleter.cs           |   79 +-
 src/Lucene.Net/Index/IndexFileNames.cs             |    4 +-
 src/Lucene.Net/Index/IndexFormatTooNewException.cs |    8 +-
 src/Lucene.Net/Index/IndexFormatTooOldException.cs |    8 +-
 src/Lucene.Net/Index/IndexReader.cs                |  220 +-
 src/Lucene.Net/Index/IndexReaderContext.cs         |    8 +-
 src/Lucene.Net/Index/IndexUpgrader.cs              |    6 +-
 src/Lucene.Net/Index/IndexWriter.cs                | 1151 ++++--
 src/Lucene.Net/Index/IndexWriterConfig.cs          |   40 +-
 src/Lucene.Net/Index/LiveIndexWriterConfig.cs      |   33 +-
 src/Lucene.Net/Index/LogMergePolicy.cs             |   63 +-
 src/Lucene.Net/Index/MergePolicy.cs                |   91 +-
 src/Lucene.Net/Index/MergeState.cs                 |    8 +-
 src/Lucene.Net/Index/MultiBits.cs                  |    4 +-
 src/Lucene.Net/Index/MultiDocValues.cs             |   20 +-
 src/Lucene.Net/Index/MultiDocsAndPositionsEnum.cs  |    2 +-
 src/Lucene.Net/Index/MultiDocsEnum.cs              |    2 +-
 src/Lucene.Net/Index/MultiFields.cs                |   12 +-
 src/Lucene.Net/Index/MultiReader.cs                |   18 +-
 src/Lucene.Net/Index/MultiTerms.cs                 |   12 +-
 src/Lucene.Net/Index/MultiTermsEnum.cs             |   13 +-
 src/Lucene.Net/Index/NoMergePolicy.cs              |    6 +-
 src/Lucene.Net/Index/NormsConsumerPerField.cs      |    6 +-
 .../Index/NumericDocValuesFieldUpdates.cs          |   46 +-
 src/Lucene.Net/Index/NumericDocValuesWriter.cs     |    6 +-
 src/Lucene.Net/Index/ParallelAtomicReader.cs       |   21 +-
 src/Lucene.Net/Index/ParallelCompositeReader.cs    |   29 +-
 .../Index/PersistentSnapshotDeletionPolicy.cs      |   81 +-
 src/Lucene.Net/Index/PrefixCodedTerms.cs           |   28 +-
 src/Lucene.Net/Index/RandomAccessOrds.cs           |    8 +-
 src/Lucene.Net/Index/ReaderSlice.cs                |    6 +-
 src/Lucene.Net/Index/ReadersAndUpdates.cs          |  157 +-
 src/Lucene.Net/Index/SegmentCommitInfo.cs          |    4 +-
 src/Lucene.Net/Index/SegmentCoreReaders.cs         |   23 +-
 src/Lucene.Net/Index/SegmentDocValues.cs           |   48 +-
 src/Lucene.Net/Index/SegmentInfo.cs                |   16 +-
 src/Lucene.Net/Index/SegmentInfos.cs               |  227 +-
 src/Lucene.Net/Index/SegmentMerger.cs              |   39 +-
 src/Lucene.Net/Index/SegmentReader.cs              |   40 +-
 src/Lucene.Net/Index/SerialMergeScheduler.cs       |   10 +-
 src/Lucene.Net/Index/SimpleMergedSegmentWarmer.cs  |   11 +-
 src/Lucene.Net/Index/SlowCompositeReaderWrapper.cs |   17 +-
 src/Lucene.Net/Index/SnapshotDeletionPolicy.cs     |  102 +-
 src/Lucene.Net/Index/SortedDocValuesTermsEnum.cs   |   10 +-
 src/Lucene.Net/Index/SortedDocValuesWriter.cs      |    6 +-
 .../Index/SortedSetDocValuesTermsEnum.cs           |   10 +-
 src/Lucene.Net/Index/SortedSetDocValuesWriter.cs   |    6 +-
 src/Lucene.Net/Index/StandardDirectoryReader.cs    |   66 +-
 src/Lucene.Net/Index/StoredFieldsProcessor.cs      |   12 +-
 src/Lucene.Net/Index/Term.cs                       |   16 +-
 src/Lucene.Net/Index/TermContext.cs                |    9 +-
 src/Lucene.Net/Index/TermVectorsConsumer.cs        |    2 +-
 .../Index/TermVectorsConsumerPerField.cs           |    7 +-
 src/Lucene.Net/Index/Terms.cs                      |   14 +-
 src/Lucene.Net/Index/TermsEnum.cs                  |   32 +-
 src/Lucene.Net/Index/TermsHashPerField.cs          |    4 +-
 src/Lucene.Net/Index/TieredMergePolicy.cs          |   54 +-
 src/Lucene.Net/Index/TwoPhaseCommitTool.cs         |   20 +-
 src/Lucene.Net/Index/TwoStoredFieldsConsumers.cs   |    6 +-
 src/Lucene.Net/Index/UpgradeIndexMergePolicy.cs    |   14 +-
 src/Lucene.Net/Lucene.Net.csproj                   |   38 +-
 src/Lucene.Net/Search/AutomatonQuery.cs            |    8 +-
 src/Lucene.Net/Search/BitsFilteredDocIdSet.cs      |    8 +-
 src/Lucene.Net/Search/BooleanClause.cs             |    7 +-
 src/Lucene.Net/Search/BooleanQuery.cs              |   56 +-
 src/Lucene.Net/Search/BooleanScorer.cs             |    4 +-
 src/Lucene.Net/Search/BooleanScorer2.cs            |   15 +-
 src/Lucene.Net/Search/BoostAttributeImpl.cs        |   16 +-
 src/Lucene.Net/Search/CachingCollector.cs          |   39 +-
 src/Lucene.Net/Search/CachingWrapperFilter.cs      |   80 +-
 .../Search/CollectionTerminatedException.cs        |    4 +-
 src/Lucene.Net/Search/Collector.cs                 |    2 +-
 src/Lucene.Net/Search/ConjunctionScorer.cs         |    5 +-
 src/Lucene.Net/Search/ConstantScoreAutoRewrite.cs  |    2 +-
 src/Lucene.Net/Search/ConstantScoreQuery.cs        |   34 +-
 .../Search/ControlledRealTimeReopenThread.cs       |  166 +-
 src/Lucene.Net/Search/DisjunctionMaxQuery.cs       |   25 +-
 src/Lucene.Net/Search/DisjunctionMaxScorer.cs      |    6 +-
 src/Lucene.Net/Search/DisjunctionScorer.cs         |    5 +-
 src/Lucene.Net/Search/DocIdSet.cs                  |    2 +-
 src/Lucene.Net/Search/DocIdSetIterator.cs          |    2 +-
 src/Lucene.Net/Search/DocTermOrdsRangeFilter.cs    |   16 +-
 src/Lucene.Net/Search/DocTermOrdsRewriteMethod.cs  |    6 +-
 src/Lucene.Net/Search/Explanation.cs               |   12 +-
 src/Lucene.Net/Search/FakeScorer.cs                |    8 +-
 src/Lucene.Net/Search/FieldCache.cs                |   67 +-
 src/Lucene.Net/Search/FieldCacheDocIdSet.cs        |   24 +-
 src/Lucene.Net/Search/FieldCacheImpl.cs            |  235 +-
 src/Lucene.Net/Search/FieldCacheRangeFilter.cs     |  205 +-
 src/Lucene.Net/Search/FieldCacheRewriteMethod.cs   |    6 +-
 src/Lucene.Net/Search/FieldComparator.cs           |  312 +-
 src/Lucene.Net/Search/FieldDoc.cs                  |   21 +-
 src/Lucene.Net/Search/FieldValueFilter.cs          |    6 +-
 src/Lucene.Net/Search/FieldValueHitQueue.cs        |    8 +-
 src/Lucene.Net/Search/Filter.cs                    |    2 +-
 src/Lucene.Net/Search/FilteredDocIdSet.cs          |   14 +-
 src/Lucene.Net/Search/FilteredDocIdSetIterator.cs  |    4 +-
 src/Lucene.Net/Search/FilteredQuery.cs             |   33 +-
 src/Lucene.Net/Search/FuzzyQuery.cs                |   18 +-
 src/Lucene.Net/Search/FuzzyTermsEnum.cs            |   45 +-
 src/Lucene.Net/Search/HitQueue.cs                  |    7 +-
 src/Lucene.Net/Search/IndexSearcher.cs             |   52 +-
 src/Lucene.Net/Search/MatchAllDocsQuery.cs         |    5 +-
 .../Search/MaxNonCompetitiveBoostAttributeImpl.cs  |   13 +-
 src/Lucene.Net/Search/MinShouldMatchSumScorer.cs   |    9 +-
 src/Lucene.Net/Search/MultiPhraseQuery.cs          |   60 +-
 src/Lucene.Net/Search/MultiTermQuery.cs            |   16 +-
 .../Search/MultiTermQueryWrapperFilter.cs          |    6 +-
 src/Lucene.Net/Search/NumericRangeQuery.cs         |   46 +-
 .../Search/Payloads/MaxPayloadFunction.cs          |    2 +-
 .../Search/Payloads/MinPayloadFunction.cs          |    2 +-
 src/Lucene.Net/Search/Payloads/PayloadNearQuery.cs |   10 +-
 src/Lucene.Net/Search/Payloads/PayloadSpanUtil.cs  |   10 +-
 src/Lucene.Net/Search/Payloads/PayloadTermQuery.cs |    4 +-
 src/Lucene.Net/Search/PhraseQuery.cs               |   48 +-
 src/Lucene.Net/Search/PrefixFilter.cs              |    2 +-
 src/Lucene.Net/Search/PrefixQuery.cs               |   10 +-
 src/Lucene.Net/Search/Query.cs                     |    9 +-
 src/Lucene.Net/Search/QueryRescorer.cs             |   20 +-
 src/Lucene.Net/Search/QueryWrapperFilter.cs        |    6 +-
 src/Lucene.Net/Search/ReferenceManager.cs          |   36 +-
 src/Lucene.Net/Search/RegexpQuery.cs               |   10 +-
 src/Lucene.Net/Search/ReqExclScorer.cs             |    8 +-
 src/Lucene.Net/Search/ReqOptSumScorer.cs           |    7 +-
 src/Lucene.Net/Search/ScoringRewrite.cs            |   10 +-
 src/Lucene.Net/Search/SearcherLifetimeManager.cs   |   35 +-
 src/Lucene.Net/Search/SearcherManager.cs           |    8 +-
 .../Search/Similarities/BM25Similarity.cs          |    4 +-
 src/Lucene.Net/Search/Similarities/BasicModelBE.cs |   11 +-
 src/Lucene.Net/Search/Similarities/BasicModelD.cs  |    7 +-
 src/Lucene.Net/Search/Similarities/BasicModelG.cs  |    4 +-
 src/Lucene.Net/Search/Similarities/BasicModelIF.cs |    4 +-
 src/Lucene.Net/Search/Similarities/BasicModelIn.cs |    4 +-
 .../Search/Similarities/BasicModelIne.cs           |    5 +-
 src/Lucene.Net/Search/Similarities/BasicModelP.cs  |    7 +-
 .../Search/Similarities/DFRSimilarity.cs           |   15 +-
 .../Search/Similarities/LMDirichletSimilarity.cs   |    7 +-
 .../Similarities/LMJelinekMercerSimilarity.cs      |    7 +-
 .../Search/Similarities/NormalizationH2.cs         |    4 +-
 .../Search/Similarities/SimilarityBase.cs          |    4 +-
 .../Search/Similarities/TFIDFSimilarity.cs         |    2 +-
 src/Lucene.Net/Search/SloppyPhraseScorer.cs        |   43 +-
 src/Lucene.Net/Search/SortField.cs                 |  123 +-
 .../Search/Spans/FieldMaskingSpanQuery.cs          |    8 +-
 src/Lucene.Net/Search/Spans/NearSpansOrdered.cs    |   16 +-
 src/Lucene.Net/Search/Spans/NearSpansUnordered.cs  |    8 +-
 src/Lucene.Net/Search/Spans/SpanFirstQuery.cs      |    8 +-
 .../Search/Spans/SpanMultiTermQueryWrapper.cs      |   16 +-
 .../Search/Spans/SpanNearPayloadCheckQuery.cs      |   10 +-
 src/Lucene.Net/Search/Spans/SpanNearQuery.cs       |   12 +-
 src/Lucene.Net/Search/Spans/SpanNotQuery.cs        |   11 +-
 src/Lucene.Net/Search/Spans/SpanOrQuery.cs         |   22 +-
 .../Search/Spans/SpanPayloadCheckQuery.cs          |   10 +-
 .../Search/Spans/SpanPositionCheckQuery.cs         |    5 +-
 .../Search/Spans/SpanPositionRangeQuery.cs         |    8 +-
 src/Lucene.Net/Search/Spans/SpanTermQuery.cs       |   14 +-
 src/Lucene.Net/Search/Spans/SpanWeight.cs          |    4 +-
 src/Lucene.Net/Search/Spans/TermSpans.cs           |    2 +-
 src/Lucene.Net/Search/TermCollectingRewrite.cs     |    8 +-
 src/Lucene.Net/Search/TermQuery.cs                 |   20 +-
 src/Lucene.Net/Search/TermRangeFilter.cs           |    4 +-
 src/Lucene.Net/Search/TermRangeQuery.cs            |   16 +-
 src/Lucene.Net/Search/TermRangeTermsEnum.cs        |    4 +-
 src/Lucene.Net/Search/TermScorer.cs                |    6 +-
 src/Lucene.Net/Search/TimeLimitingCollector.cs     |   23 +-
 src/Lucene.Net/Search/TopDocs.cs                   |   16 +-
 src/Lucene.Net/Search/TopDocsCollector.cs          |    2 +-
 src/Lucene.Net/Search/TopFieldCollector.cs         |   31 +-
 src/Lucene.Net/Search/TopScoreDocCollector.cs      |   57 +-
 src/Lucene.Net/Search/TopTermsRewrite.cs           |   25 +-
 src/Lucene.Net/Search/Weight.cs                    |    7 +-
 src/Lucene.Net/Search/WildcardQuery.cs             |   11 +-
 src/Lucene.Net/Search/package.md                   |    2 +-
 src/Lucene.Net/Store/AlreadyClosedException.cs     |   31 +-
 src/Lucene.Net/Store/BaseDirectory.cs              |   11 +-
 src/Lucene.Net/Store/BufferedChecksumIndexInput.cs |   10 +-
 src/Lucene.Net/Store/BufferedIndexInput.cs         |   22 +-
 src/Lucene.Net/Store/BufferedIndexOutput.cs        |   17 +-
 src/Lucene.Net/Store/ByteArrayDataInput.cs         |    4 +-
 src/Lucene.Net/Store/ByteBufferIndexInput.cs       |  106 +-
 src/Lucene.Net/Store/CheckSumIndexInput.cs         |    6 +-
 src/Lucene.Net/Store/CompoundFileDirectory.cs      |   39 +-
 src/Lucene.Net/Store/CompoundFileWriter.cs         |   45 +-
 src/Lucene.Net/Store/DataInput.cs                  |    4 +-
 src/Lucene.Net/Store/DataOutput.cs                 |    6 +-
 src/Lucene.Net/Store/Directory.cs                  |   14 +-
 src/Lucene.Net/Store/FSDirectory.cs                |   80 +-
 src/Lucene.Net/Store/FSLockFactory.cs              |    2 +-
 src/Lucene.Net/Store/FileSwitchDirectory.cs        |   17 +-
 src/Lucene.Net/Store/FlushInfo.cs                  |    2 +-
 src/Lucene.Net/Store/IOContext.cs                  |   12 +-
 src/Lucene.Net/Store/IndexInput.cs                 |   10 +-
 src/Lucene.Net/Store/IndexOutput.cs                |   11 +-
 src/Lucene.Net/Store/InputStreamDataInput.cs       |    4 +-
 src/Lucene.Net/Store/Lock.cs                       |   17 +-
 src/Lucene.Net/Store/LockStressTest.cs             |   15 +-
 src/Lucene.Net/Store/LockVerifyServer.cs           |   28 +-
 src/Lucene.Net/Store/MMapDirectory.cs              |   23 +-
 src/Lucene.Net/Store/MergeInfo.cs                  |    2 +-
 src/Lucene.Net/Store/NIOFSDirectory.cs             |   48 +-
 src/Lucene.Net/Store/NRTCachingDirectory.cs        |   65 +-
 src/Lucene.Net/Store/NativeFSLockFactory.cs        |  145 +-
 src/Lucene.Net/Store/RAMDirectory.cs               |    8 +-
 src/Lucene.Net/Store/RAMFile.cs                    |   51 +-
 src/Lucene.Net/Store/RAMInputStream.cs             |    9 +-
 src/Lucene.Net/Store/RAMOutputStream.cs            |    7 +-
 .../Store/RateLimitedDirectoryWrapper.cs           |    6 +-
 src/Lucene.Net/Store/RateLimiter.cs                |   13 +-
 src/Lucene.Net/Store/SimpleFSDirectory.cs          |   44 +-
 src/Lucene.Net/Store/SingleInstanceLockFactory.cs  |   29 +-
 src/Lucene.Net/Store/VerifyingLockFactory.cs       |   38 +-
 src/Lucene.Net/Support/Arrays.cs                   |   36 +-
 src/Lucene.Net/Support/AssemblyUtils.cs            |   21 +-
 src/Lucene.Net/Support/BitArrayExtensions.cs       |  329 --
 .../Support/Codecs/DefaultCodecFactory.cs          |   34 +-
 .../Codecs/DefaultDocValuesFormatFactory.cs        |   34 +-
 .../Support/Codecs/DefaultPostingsFormatFactory.cs |   34 +-
 src/Lucene.Net/Support/CollectionExtensions.cs     |   86 +-
 src/Lucene.Net/Support/Collections.cs              |   24 +-
 .../Support/Compatibility/NullableAttributes.cs    |    2 +-
 src/Lucene.Net/Support/ConcurrentHashSet.cs        |   31 +-
 src/Lucene.Net/Support/ConcurrentSet.cs            |  199 +-
 .../Configuration/Base/ConfigurationRoot.cs        |    2 +-
 .../Configuration/Base/ConfigurationSection.cs     |    2 +-
 .../EnvironmentVariablesConfigurationProvider.cs   |    2 +-
 src/Lucene.Net/Support/DateTimeOffsetUtil.cs       |   86 +
 .../Support/Diagnostics/AssertionException.cs      |    2 +-
 src/Lucene.Net/Support/Diagnostics/Debugging.cs    |   16 +-
 src/Lucene.Net/Support/DictionaryExtensions.cs     |   65 +-
 src/Lucene.Net/Support/Document/Field.cs           |  363 --
 src/Lucene.Net/Support/EnumerableExtensions.cs     |   10 +-
 .../ExceptionHandling/Errors/AssertionError.cs     |   90 +
 .../Support/ExceptionHandling/Errors/Error.cs      |  100 +
 .../Support/ExceptionHandling/Errors/IError.cs     |   32 +
 .../Errors/NoClassDefFoundError.cs                 |   91 +
 .../ExceptionHandling/Errors/OutOfMemoryError.cs   |   92 +
 .../Errors/ServiceConfigurationError.cs            |  128 +
 .../ExceptionHandling/Errors/StackOverflowError.cs |   88 +
 .../ExceptionHandling/ExceptionExtensions.cs       |  696 ++++
 .../Exceptions/ClassNotFoundException.cs           |  104 +
 .../Exceptions/CloneNotSupportedException.cs       |   26 +
 .../IOExceptions/AlreadyClosedException.cs         |   89 +
 .../Exceptions/IOExceptions/EOFException.cs        |   97 +
 .../Exceptions/NoSuchMethodException.cs            |   91 +
 .../ArrayIndexOutOfBoundsException.cs              |  112 +
 .../RuntimeExceptions/IRuntimeException.cs         |   32 +
 .../RuntimeExceptions/IllegalArgumentException.cs  |  105 +
 .../RuntimeExceptions/IllegalStateException.cs     |   93 +
 .../RuntimeExceptions/IndexOutOfBoundsException.cs |  110 +
 .../RuntimeExceptions/NoSuchElementException.cs    |   26 +
 .../RuntimeExceptions/NullPointerException.cs      |  143 +
 .../RuntimeExceptions/NumberFormatException.cs     |   94 +
 .../RuntimeExceptions/RuntimeException.cs          |   93 +
 .../StringIndexOutOfBoundsException.cs             |  111 +
 .../UnsupportedOperationException.cs               |   93 +
 .../Exceptions/ServletException.cs                 |   90 +
 src/Lucene.Net/Support/ICallable.cs                |   24 -
 src/Lucene.Net/Support/IO/FileSupport.cs           |    5 +-
 src/Lucene.Net/Support/IO/SafeTextWriterWrapper.cs |    3 +
 src/Lucene.Net/Support/IO/StreamExtensions.cs      |   31 +-
 src/Lucene.Net/Support/IdentityWeakReference.cs    |   59 -
 .../Support/Index/IndexOptionsComparer.cs          |    9 +-
 src/Lucene.Net/Support/Index/TaskMergeScheduler.cs |   44 +-
 src/Lucene.Net/Support/ListExtensions.cs           |  174 -
 src/Lucene.Net/Support/Number.cs                   |  115 -
 .../Support/ObsoleteAPI/FixedBitSetExtensions.cs   |   37 +
 .../Support/ObsoleteAPI/IndexInputExtensions.cs    |   34 +
 .../Support/ObsoleteAPI/IndexOutputExtensions.cs   |   34 +
 src/Lucene.Net/Support/ObsoleteAPI/IndexReader.cs  |   79 +
 .../Support/ObsoleteAPI/Int64BitSetExtensions.cs   |   37 +
 .../Support/ObsoleteAPI/OpenBitSetExtensions.cs    |   36 +
 .../ObsoleteAPI/PForDeltaDocIdSetExtensions.cs     |   34 +
 .../ObsoleteAPI/RandomAccessOrdsExtensions.cs      |   34 +
 .../ObsoleteAPI/ReaderWriterLockSlimExtensions.cs  |   83 +
 .../Support/ObsoleteAPI/TermExtensions.cs          |   35 +
 .../Support/ObsoleteAPI/WAH8DocIdSetExtensions.cs  |   34 +
 .../ConditionalWeakTableExtensions.cs              |   53 +
 src/Lucene.Net/Support/Text/CharArrayFormatter.cs  |   42 +
 src/Lucene.Net/Support/Text/StringExtensions.cs    |    4 +-
 .../Support/Threading/ICompletionService.cs        |   32 -
 .../LimitedConcurrencyLevelTaskScheduler.cs        |   42 +-
 .../Threading/ReaderWriterLockSlimExtensions.cs    |   82 -
 src/Lucene.Net/Support/Threading/ReentrantLock.cs  |    8 +-
 .../Threading/TaskSchedulerCompletionService.cs    |    9 +-
 .../Support/Threading/UninterruptableMonitor.cs    |  167 +
 src/Lucene.Net/Support/Time.cs                     |   35 -
 .../Support/Util/BundleResourceManagerFactory.cs   |   87 -
 src/Lucene.Net/Support/Util/CastTo.cs              |   52 +
 src/Lucene.Net/Support/Util/Events.cs              |   62 +
 .../Util/ExcludeFromRamUsageEstimationAttribute.cs |   29 +
 .../Support/Util/IResourceManagerFactory.cs        |   36 -
 src/Lucene.Net/Support/Util/IResourceProvider.cs   |   94 +
 src/Lucene.Net/Support/Util/ListExtensions.cs      |   21 +-
 .../Support/Util/LuceneSystemException.cs          |  100 +
 src/Lucene.Net/Support/Util/NamedServiceFactory.cs |   12 +-
 src/Lucene.Net/Support/Util/NumberFormat.cs        |   39 +-
 src/Lucene.Net/Support/Util/SystemConsole.cs       |   80 +-
 src/Lucene.Net/Support/WeakDictionary.cs           |  296 --
 src/Lucene.Net/Util/ArrayUtil.cs                   |   23 +-
 src/Lucene.Net/Util/Attribute.cs                   |    4 +-
 src/Lucene.Net/Util/AttributeImpl.cs               |   12 +-
 src/Lucene.Net/Util/AttributeReflector.cs          |    7 +-
 src/Lucene.Net/Util/AttributeSource.cs             |   50 +-
 src/Lucene.Net/Util/Automaton/Automaton.cs         |   13 +-
 src/Lucene.Net/Util/Automaton/BasicAutomata.cs     |    7 +-
 src/Lucene.Net/Util/Automaton/BasicOperations.cs   |   21 +-
 src/Lucene.Net/Util/Automaton/CompiledAutomaton.cs |   19 +-
 .../Util/Automaton/DaciukMihovAutomatonBuilder.cs  |    6 +-
 .../Util/Automaton/LevenshteinAutomata.cs          |    4 +-
 .../Util/Automaton/MinimizationOperations.cs       |   21 +-
 src/Lucene.Net/Util/Automaton/RegExp.cs            |  117 +-
 src/Lucene.Net/Util/Automaton/RunAutomaton.cs      |    8 +-
 src/Lucene.Net/Util/Automaton/State.cs             |   12 +-
 src/Lucene.Net/Util/Automaton/Transition.cs        |    6 +-
 src/Lucene.Net/Util/Automaton/UTF32ToUTF8.cs       |    9 +-
 src/Lucene.Net/Util/Bits.cs                        |    6 +-
 src/Lucene.Net/Util/BytesRef.cs                    |   39 +-
 src/Lucene.Net/Util/BytesRefArray.cs               |   18 +-
 src/Lucene.Net/Util/BytesRefHash.cs                |   12 +-
 src/Lucene.Net/Util/CharsRef.cs                    |   38 +-
 src/Lucene.Net/Util/CloseableThreadLocal.cs        |   19 +-
 src/Lucene.Net/Util/CollectionUtil.cs              |    3 +-
 src/Lucene.Net/Util/CommandLineUtil.cs             |   15 +-
 src/Lucene.Net/Util/Constants.cs                   |    7 +-
 src/Lucene.Net/Util/FieldCacheSanityChecker.cs     |   21 +-
 src/Lucene.Net/Util/FixedBitSet.cs                 |   10 +-
 src/Lucene.Net/Util/Fst/Builder.cs                 |   19 +-
 src/Lucene.Net/Util/Fst/BytesRefFSTEnum.cs         |    4 +-
 src/Lucene.Net/Util/Fst/BytesStore.cs              |   16 +-
 src/Lucene.Net/Util/Fst/FST.cs                     |   62 +-
 src/Lucene.Net/Util/Fst/FSTEnum.cs                 |    9 +-
 src/Lucene.Net/Util/Fst/IntsRefFSTEnum.cs          |   25 +-
 src/Lucene.Net/Util/Fst/NoOutputs.cs               |    4 +-
 src/Lucene.Net/Util/Fst/NodeHash.cs                |    3 +-
 src/Lucene.Net/Util/Fst/Outputs.cs                 |    2 +-
 src/Lucene.Net/Util/Fst/PairOutputs.cs             |   29 +-
 src/Lucene.Net/Util/Fst/PositiveIntOutputs.cs      |   32 +-
 src/Lucene.Net/Util/Fst/Util.cs                    |  103 +-
 src/Lucene.Net/Util/IOUtils.cs                     |  136 +-
 src/Lucene.Net/Util/InfoStream.cs                  |   18 +-
 src/Lucene.Net/Util/IntsRef.cs                     |   21 +-
 src/Lucene.Net/Util/LongBitSet.cs                  |   12 +-
 src/Lucene.Net/Util/LongsRef.cs                    |   23 +-
 src/Lucene.Net/Util/MathUtil.cs                    |    2 +-
 src/Lucene.Net/Util/MergedIterator.cs              |   24 +-
 src/Lucene.Net/Util/Mutable/MutableValueDouble.cs  |    4 +-
 src/Lucene.Net/Util/Mutable/MutableValueFloat.cs   |    6 +-
 src/Lucene.Net/Util/NamedSPILoader.cs              |    4 +-
 src/Lucene.Net/Util/NamedThreadFactory.cs          |    2 +-
 src/Lucene.Net/Util/NumericUtils.cs                |   24 +-
 src/Lucene.Net/Util/OfflineSorter.cs               |  215 +-
 src/Lucene.Net/Util/OpenBitSet.cs                  |   25 +-
 src/Lucene.Net/Util/PForDeltaDocIdSet.cs           |   12 +-
 .../Util/Packed/AbstractAppendingLongBuffer.cs     |    8 +-
 .../Util/Packed/AbstractBlockPackedWriter.cs       |    6 +-
 src/Lucene.Net/Util/Packed/AbstractPagedMutable.cs |    2 +-
 .../Util/Packed/AppendingDeltaPackedLongBuffer.cs  |    2 +-
 src/Lucene.Net/Util/Packed/BlockPackedReader.cs    |    9 +-
 .../Util/Packed/BlockPackedReaderIterator.cs       |   12 +-
 src/Lucene.Net/Util/Packed/BulkOperation.cs        |    2 +-
 src/Lucene.Net/Util/Packed/BulkOperationPacked.cs  |    2 +-
 .../Util/Packed/BulkOperationPackedSingleBlock.cs  |    4 +-
 .../Util/Packed/DirectPacked64SingleBlockReader.cs |    6 +-
 src/Lucene.Net/Util/Packed/DirectPackedReader.cs   |    8 +-
 src/Lucene.Net/Util/Packed/EliasFanoDecoder.cs     |    4 +-
 src/Lucene.Net/Util/Packed/EliasFanoDocIdSet.cs    |    4 +-
 src/Lucene.Net/Util/Packed/EliasFanoEncoder.cs     |   14 +-
 .../Util/Packed/MonotonicAppendingLongBuffer.cs    |    4 +-
 .../Util/Packed/MonotonicBlockPackedReader.cs      |    5 +-
 src/Lucene.Net/Util/Packed/Packed64SingleBlock.cs  |    2 +-
 src/Lucene.Net/Util/Packed/PackedInts.cs           |   23 +-
 src/Lucene.Net/Util/Packed/PackedReaderIterator.cs |    2 +-
 src/Lucene.Net/Util/Packed/PackedWriter.cs         |    2 +-
 src/Lucene.Net/Util/PagedBytes.cs                  |   25 +-
 src/Lucene.Net/Util/PrintStreamInfoStream.cs       |    3 +-
 src/Lucene.Net/Util/PriorityQueue.cs               |    6 +-
 src/Lucene.Net/Util/QueryBuilder.cs                |   21 +-
 src/Lucene.Net/Util/RamUsageEstimator.cs           |   41 +-
 src/Lucene.Net/Util/RefCount.cs                    |    2 +-
 src/Lucene.Net/Util/SPIClassIterator.cs            |  144 +-
 src/Lucene.Net/Util/SetOnce.cs                     |    2 +-
 src/Lucene.Net/Util/StringHelper.cs                |   43 +-
 src/Lucene.Net/Util/ThreadInterruptedException.cs  |   64 +
 src/Lucene.Net/Util/ToStringUtils.cs               |    3 +-
 src/Lucene.Net/Util/UnicodeUtil.cs                 |  166 +-
 src/Lucene.Net/Util/VirtualMethod.cs               |   29 +-
 src/Lucene.Net/Util/WAH8DocIdSet.cs                |   26 +-
 src/Lucene.Net/Util/WeakIdentityMap.cs             |   12 +-
 src/Lucene.Net/migration-guide.md                  |    4 +-
 src/Lucene.Net/readme-nuget.md                     |  146 +
 src/{dotnet => docs}/Directory.Build.props         |    0
 src/docs/Directory.Build.targets                   |   23 +
 src/docs/DocumentationTools.sln                    |    4 +-
 .../EnvironmentVariableDfmTextInlineRule.cs        |   49 +
 .../EnvironmentVariableInCodeBlockRule.cs          |   47 +
 .../EnvironmentVariableInLinkInlineRule.cs         |   98 +
 .../EnvironmentVariableInlineRule.cs               |   51 +-
 .../EnvironmentVariableRendererPart.cs             |   73 +-
 .../LuceneDocsPlugins/EnvironmentVariableUtil.cs   |   67 +
 .../LuceneDocsPlugins/LuceneDfmEngineCustomizer.cs |   65 +-
 .../LuceneDocsPlugins/LuceneDocsPlugins.csproj     |   96 +-
 src/docs/LuceneDocsPlugins/LuceneNoteBlockRule.cs  |   37 +-
 src/docs/LuceneDocsPlugins/LuceneNoteBlockToken.cs |   38 +-
 .../LuceneNoteTokenRendererPart.cs                 |   58 +-
 .../LuceneDocsPlugins/Properties/AssemblyInfo.cs   |   25 -
 src/docs/LuceneDocsPlugins/RendererPartProvider.cs |   43 +-
 src/docs/LuceneDocsPlugins/app.config              |    2 +-
 .../Lucene.Net.CodeAnalysis.CSharp.csproj          |    1 +
 .../Lucene.Net.CodeAnalysis.VisualBasic.csproj     |    1 +
 src/dotnet/Lucene.Net.CodeAnalysis/Version.props   |    2 +-
 src/dotnet/Lucene.Net.ICU/Lucene.Net.ICU.csproj    |   15 +-
 .../Lucene.Net.Replicator.AspNetCore.csproj        |    7 +-
 .../Helpers/DiagnosticResult.cs                    |    2 +-
 .../Lucene.Net.Tests.CodeAnalysis.csproj           |   20 +-
 .../Lucene.Net.Tests.ICU.csproj                    |   51 +-
 .../TestICUPostingsHighlighter.cs                  |   32 +-
 .../TestICUPostingsHighlighterRanking.cs           |    8 +-
 .../Support/TestApiConsistency.cs                  |    6 +-
 .../Support/TestExceptionSerialization.cs          |   55 -
 src/dotnet/docs/source-stepping.md                 |   65 +
 .../Lucene.Net.Tests.Cli/EnumerableExtensions.cs   |    2 +-
 .../tools/Lucene.Net.Tests.Cli/InstallationTest.cs |   11 +-
 .../Lucene.Net.Tests.Cli.csproj                    |   29 +-
 .../CommandLine/CommandLineApplication.cs          |   28 +-
 .../tools/lucene-cli/CommandLine/CommandOption.cs  |    2 +-
 .../tools/lucene-cli/SourceCode/ConsolePager.cs    |    6 +-
 .../SourceCode/SourceCodeSectionReader.cs          |    3 +-
 src/dotnet/tools/lucene-cli/commands/ExitCode.cs   |   17 +
 src/dotnet/tools/lucene-cli/docs/index.md          |    8 +-
 src/dotnet/tools/lucene-cli/lucene-cli.csproj      |    9 +-
 .../LuceneTemplate/ManagedReference.extension.js   |    6 +-
 .../apidocs/Templates/LuceneTemplate/common.js     |  245 ++
 websites/apidocs/apiSpec/core/Lucene_Net_Codecs.md |   28 +-
 websites/apidocs/docfx.core.json                   |    8 +-
 websites/apidocs/docfx.global.json                 |    9 +-
 websites/apidocs/docfx.global.subsite.json         |    4 +-
 websites/apidocs/docfx.join.json                   |   12 +-
 websites/apidocs/docs.ps1                          |   66 +-
 websites/apidocs/index.md                          |   11 +-
 websites/apidocs/toc.yml                           |    5 +-
 websites/apidocs/toc/toc.yml                       |    6 +-
 websites/site/contributing/community-links.md      |   11 +-
 .../how-to-setup-java-lucene-debugging.md          |  535 +++
 websites/site/contributing/make-release.md         |  146 +-
 websites/site/contributing/source.md               |   44 +-
 websites/site/contributing/toc.yml                 |    4 +-
 websites/site/docfx.json                           |   19 +-
 websites/site/docs.md                              |   15 +-
 websites/site/download/download.md                 |   12 +
 websites/site/download/toc.yml                     |    4 +
 websites/site/download/version-4.8.0-beta00015.md  |   68 +
 websites/site/download/version-4.8.0-beta00016.md  |   68 +
 websites/site/index.md                             |   10 +-
 websites/site/lucenetemplate/index.html.tmpl       |   10 +-
 websites/site/lucenetemplate/styles/main.css       |   61 +-
 websites/site/lucenetemplate/styles/site.css       |   37 +-
 websites/site/quick-start/index.md                 |   29 +
 websites/site/quick-start/introduction.md          |   80 +
 websites/site/quick-start/learning-resources.md    |   78 +
 websites/site/quick-start/toc.yml                  |    6 +
 websites/site/quick-start/tutorial.md              |  518 +++
 .../site/release-notes/version-4.8.0-beta00015.md  |  129 +
 .../site/release-notes/version-4.8.0-beta00016.md  |  166 +
 websites/site/site.ps1                             |    2 +-
 websites/site/toc.yml                              |    5 +-
 2582 files changed, 66234 insertions(+), 44808 deletions(-)
 create mode 100644 .build/TestReferences.Common.targets
 create mode 100644 .build/azure-templates/install-dotnet-sdk.yml
 rename {build => .build}/azure-templates/publish-nuget-packages.yml (100%)
 rename {build => .build}/azure-templates/publish-test-binaries.yml (100%)
 create mode 100644 .build/azure-templates/publish-test-results-for-test-projects.yml
 create mode 100644 .build/azure-templates/publish-test-results.yml
 create mode 100644 .build/azure-templates/run-tests-on-os.yml
 rename {build => .build}/azure-templates/show-all-environment-variables.yml (100%)
 create mode 100644 .build/azure-templates/show-all-files.yml
 create mode 100644 .build/dependencies.props
 create mode 100644 .build/nuget.props
 create mode 100644 .build/psake/LICENSE
 create mode 100644 .build/psake/en-US/psake.psm1-help.xml.old
 create mode 100644 .build/psake/private/CleanupEnvironment.ps1
 create mode 100644 .build/psake/private/ConfigureBuildEnvironment.ps1
 create mode 100644 .build/psake/private/CreateConfigurationForNewContext.ps1
 create mode 100644 .build/psake/private/ExecuteInBuildFileScope.ps1
 create mode 100644 .build/psake/private/FormatErrorMessage.ps1
 create mode 100644 .build/psake/private/Get-DefaultBuildFile.ps1
 create mode 100644 .build/psake/private/GetCurrentConfigurationOrDefault.ps1
 create mode 100644 .build/psake/private/GetTasksFromContext.ps1
 create mode 100644 .build/psake/private/LoadConfiguration.ps1
 create mode 100644 .build/psake/private/LoadModules.ps1
 create mode 100644 .build/psake/private/ResolveError.ps1
 create mode 100644 .build/psake/private/SelectObjectWithDefault.ps1
 create mode 100644 .build/psake/private/Test-ModuleVersion.ps1
 create mode 100644 .build/psake/private/WriteColoredOutput.ps1
 create mode 100644 .build/psake/private/WriteDocumentation.ps1
 create mode 100644 .build/psake/private/WriteTaskTimeSummary.ps1
 create mode 100644 .build/psake/psake
 create mode 100644 .build/psake/psake-config.ps1
 create mode 100644 .build/psake/psake.cmd
 create mode 100644 .build/psake/psake.ps1
 create mode 100644 .build/psake/psake.psd1
 create mode 100644 .build/psake/psake.psm1
 create mode 100644 .build/psake/public/Assert.ps1
 create mode 100644 .build/psake/public/BuildSetup.ps1
 create mode 100644 .build/psake/public/BuildTearDown.ps1
 create mode 100644 .build/psake/public/Exec.ps1
 create mode 100644 .build/psake/public/FormatTaskName.ps1
 create mode 100644 .build/psake/public/Framework.ps1
 create mode 100644 .build/psake/public/Get-PSakeScriptTasks.ps1
 create mode 100644 .build/psake/public/Include.ps1
 create mode 100644 .build/psake/public/Invoke-Task.ps1
 create mode 100644 .build/psake/public/Invoke-psake.ps1
 create mode 100644 .build/psake/public/Properties.ps1
 create mode 100644 .build/psake/public/Task.ps1
 create mode 100644 .build/psake/public/TaskSetup.ps1
 create mode 100644 .build/psake/public/TaskTearDown.ps1
 create mode 100644 .build/psake/readme.md
 create mode 100644 .build/release.targets
 create mode 100644 .build/runbuild.ps1
 create mode 100644 .github/workflows/Lucene-Net-Dependency-Conflict-Warning.yml
 create mode 100644 .github/workflows/Lucene-Net-Documentation.yml
 create mode 100644 .github/workflows/Lucene-Net-Tests-AllProjects.yml
 create mode 100644 .github/workflows/sonar.yml
 create mode 100644 build
 create mode 100644 build.ps1
 delete mode 100644 build/Dependencies.props
 delete mode 100644 build/NuGet.props
 delete mode 100644 build/Release.targets
 delete mode 100644 build/TestReferences.Common.targets
 delete mode 100644 build/azure-templates/publish-test-results-for-test-projects.yml
 delete mode 100644 build/azure-templates/publish-test-results.yml
 delete mode 100644 build/azure-templates/run-tests-on-os.yml
 delete mode 100644 build/azure-templates/show-all-files.yml
 delete mode 100644 build/build.ps1
 delete mode 100644 build/dotnet-install.ps1
 delete mode 100644 build/psake.cmd
 delete mode 100644 build/psake.ps1
 delete mode 100644 build/psake.psd1
 delete mode 100644 build/psake.psm1
 create mode 100644 src/Directory.Build.targets
 create mode 100644 src/Lucene.Net.Analysis.Common/Analysis/Fa/PersianStemFilter.cs
 create mode 100644 src/Lucene.Net.Analysis.Common/Analysis/Fa/PersianStemFilterFactory.cs
 create mode 100644 src/Lucene.Net.Analysis.Common/Analysis/Fa/PersianStemmer.cs
 delete mode 100644 src/Lucene.Net.Analysis.Morfologik/Morfologik/TokenAttributes/IMorphosyntacticTagsAttribute.cs
 create mode 100644 src/Lucene.Net.Analysis.Morfologik/Morfologik/TokenAttributes/MorphosyntacticTagsAttributeImpl.cs
 create mode 100644 src/Lucene.Net.Benchmark/Support/TagSoup/Guard.cs
 create mode 100644 src/Lucene.Net.Join/Support/FixedBitSetCachingWrapperFilter.cs
 create mode 100644 src/Lucene.Net.Join/Support/JoinUtil.cs
 create mode 100644 src/Lucene.Net.Join/Support/ScoreMode.cs
 create mode 100644 src/Lucene.Net.Join/Support/ToChildBlockJoinQuery.cs
 create mode 100644 src/Lucene.Net.Join/Support/ToParentBlockJoinCollector.cs
 create mode 100644 src/Lucene.Net.Join/Support/ToParentBlockJoinFieldComparator.cs
 create mode 100644 src/Lucene.Net.Join/Support/ToParentBlockJoinQuery.cs
 create mode 100644 src/Lucene.Net.Join/Support/ToParentBlockJoinSortField.cs
 create mode 100644 src/Lucene.Net.QueryParser/Flexible/Core/Messages/QueryParserMessages.resx
 delete mode 100644 src/Lucene.Net.QueryParser/Flexible/Core/Messages/QueryParserMessagesBundle.Designer.cs
 delete mode 100644 src/Lucene.Net.QueryParser/Flexible/Core/Messages/QueryParserMessagesBundle.resx
 create mode 100644 src/Lucene.Net.QueryParser/Flexible/Core/Messages/QueryParserResourceProvider.cs
 delete mode 100644 src/Lucene.Net.Spatial/Overview.html
 delete mode 100644 src/Lucene.Net.TestFramework.MSTest/Lucene.Net.TestFramework.MSTest.csproj.nosupport
 delete mode 100644 src/Lucene.Net.TestFramework.MSTest/Properties/AssemblyInfo.cs
 delete mode 100644 src/Lucene.Net.TestFramework.MSTest/Support/TestFramework/Assert.cs
 delete mode 100644 src/Lucene.Net.TestFramework.NUnit/Lucene.Net.TestFramework.NUnit.csproj.nosupport
 delete mode 100644 src/Lucene.Net.TestFramework.NUnit/Properties/AssemblyInfo.cs
 delete mode 100644 src/Lucene.Net.TestFramework.NUnit/Support/TestFramework/Assert.cs
 delete mode 100644 src/Lucene.Net.TestFramework.xUnit/Lucene.Net.TestFramework.xUnit.csproj.nosupport
 delete mode 100644 src/Lucene.Net.TestFramework.xUnit/Properties/AssemblyInfo.cs
 delete mode 100644 src/Lucene.Net.TestFramework.xUnit/Support/TestFramework/Assert.cs
 delete mode 100644 src/Lucene.Net.TestFramework.xUnit/Support/TestFramework/BeforeAfterClass.cs
 delete mode 100644 src/Lucene.Net.TestFramework.xUnit/Support/TestFramework/SkipTestException.cs
 delete mode 100644 src/Lucene.Net.TestFramework.xUnit/Support/TestFramework/SkippableFactAttribute.cs
 delete mode 100644 src/Lucene.Net.TestFramework.xUnit/Support/TestFramework/XunitExtensions/SkippableFactDiscoverer.cs
 delete mode 100644 src/Lucene.Net.TestFramework.xUnit/Support/TestFramework/XunitExtensions/SkippableFactMessageBus.cs
 delete mode 100644 src/Lucene.Net.TestFramework.xUnit/Support/TestFramework/XunitExtensions/SkippableFactTestCase.cs
 delete mode 100644 src/Lucene.Net.TestFramework/PortingWork-ReadMe.txt
 delete mode 100644 src/Lucene.Net.TestFramework/Support/CultureInfoSupport.cs
 create mode 100644 src/Lucene.Net.TestFramework/Support/ExceptionHandling/ExceptionExtensions.cs
 delete mode 100644 src/Lucene.Net.TestFramework/Support/ExceptionSerializationTestBase.cs
 delete mode 100644 src/Lucene.Net.TestFramework/Support/Randomized/Attributes/SeedDecoratorAttribute.cs
 delete mode 100644 src/Lucene.Net.TestFramework/Support/Randomized/Generators/RandomBytes.cs
 delete mode 100644 src/Lucene.Net.TestFramework/Support/Randomized/Generators/RandomInts.cs
 delete mode 100644 src/Lucene.Net.TestFramework/Support/Randomized/Generators/RandomPicks.cs
 delete mode 100644 src/Lucene.Net.TestFramework/Support/Randomized/ISeedDecorator.cs
 delete mode 100644 src/Lucene.Net.TestFramework/Support/Randomized/MurmurHash3.cs
 delete mode 100644 src/Lucene.Net.TestFramework/Support/Randomized/RandomizedContext.cs
 delete mode 100644 src/Lucene.Net.TestFramework/Support/Randomized/RandomizedRunner.cs
 delete mode 100644 src/Lucene.Net.TestFramework/Support/Randomized/RandomizedTest.cs
 delete mode 100644 src/Lucene.Net.TestFramework/Support/Randomized/Randomness.cs
 delete mode 100644 src/Lucene.Net.TestFramework/Support/Randomized/SeedUtils.cs
 delete mode 100644 src/Lucene.Net.TestFramework/Support/Randomized/SingleThreadedRandom.cs
 delete mode 100644 src/Lucene.Net.TestFramework/Support/Randomized/ThreadGroup.cs
 create mode 100644 src/Lucene.Net.TestFramework/Support/TestFramework/Assert.cs
 create mode 100644 src/Lucene.Net.TestFramework/Support/Util/DefaultNamespaceTypeWrapper.cs
 create mode 100644 src/Lucene.Net.TestFramework/Support/Util/LuceneRandomSeedInitializer.cs
 create mode 100644 src/Lucene.Net.TestFramework/Support/Util/LuceneSetUpFixtureBuilder.cs
 create mode 100644 src/Lucene.Net.TestFramework/Support/Util/LuceneTestCase.Serialization.cs
 create mode 100644 src/Lucene.Net.TestFramework/Support/Util/LuceneTestCase.SetUpFixture.cs
 create mode 100644 src/Lucene.Net.TestFramework/Support/Util/LuceneTestCase.TestFixtureAttribute.cs
 create mode 100644 src/Lucene.Net.TestFramework/Support/Util/NUnitTestFixtureBuilder.cs
 create mode 100644 src/Lucene.Net.TestFramework/Support/Util/RandomSeedAttribute.cs
 create mode 100644 src/Lucene.Net.TestFramework/Support/Util/RandomizedContext.cs
 create mode 100644 src/Lucene.Net.TestFramework/Support/Util/UseTempLineDocsFileAttribute.cs
 create mode 100644 src/Lucene.Net.TestFramework/Support/Util/UseTempLineDocsFileRule.cs
 create mode 100644 src/Lucene.Net.Tests.AllProjects/Lucene.Net.Tests.AllProjects.csproj
 create mode 100644 src/Lucene.Net.Tests.AllProjects/Support/AssemblyScanningTestCase.cs
 create mode 100644 src/Lucene.Net.Tests.AllProjects/Support/ExceptionHandling/ExceptionScanningTestCase.cs
 create mode 100644 src/Lucene.Net.Tests.AllProjects/Support/ExceptionHandling/TestExceptionExtensions.cs
 create mode 100644 src/Lucene.Net.Tests.AllProjects/Support/ExceptionHandling/TestExceptionSerialization.cs
 create mode 100644 src/Lucene.Net.Tests.Analysis.Common/Analysis/Fa/TestPersianStemFilter.cs
 delete mode 100644 src/Lucene.Net.Tests.Analysis.Common/Support/TestExceptionSerialization.cs
 delete mode 100644 src/Lucene.Net.Tests.Analysis.Kuromoji/Startup.cs
 delete mode 100644 src/Lucene.Net.Tests.Analysis.Kuromoji/Support/TestExceptionSerialization.cs
 create mode 100644 src/Lucene.Net.Tests.Analysis.Kuromoji/Util/TestCSVUtil.cs
 delete mode 100644 src/Lucene.Net.Tests.Analysis.Morfologik/Startup.cs
 delete mode 100644 src/Lucene.Net.Tests.Analysis.OpenNLP/Startup.cs
 delete mode 100644 src/Lucene.Net.Tests.Analysis.Phonetic/Startup.cs
 delete mode 100644 src/Lucene.Net.Tests.Analysis.Phonetic/Support/TestExceptionSerialization.cs
 delete mode 100644 src/Lucene.Net.Tests.Analysis.SmartCn/Startup.cs
 delete mode 100644 src/Lucene.Net.Tests.Analysis.SmartCn/Support/TestExceptionSerialization.cs
 delete mode 100644 src/Lucene.Net.Tests.Analysis.Stempel/Startup.cs
 delete mode 100644 src/Lucene.Net.Tests.Analysis.Stempel/Support/TestExceptionSerialization.cs
 delete mode 100644 src/Lucene.Net.Tests.Benchmark/Support/TestExceptionSerialization.cs
 delete mode 100644 src/Lucene.Net.Tests.Classification/Support/TestExceptionSerialization.cs
 delete mode 100644 src/Lucene.Net.Tests.Codecs/Support/TestExceptionSerialization.cs
 delete mode 100644 src/Lucene.Net.Tests.Expressions/Support/TestExceptionSerialization.cs
 delete mode 100644 src/Lucene.Net.Tests.Facet/Support/TestExceptionSerialization.cs
 delete mode 100644 src/Lucene.Net.Tests.Grouping/Support/TestExceptionSerialization.cs
 delete mode 100644 src/Lucene.Net.Tests.Highlighter/Support/TestExceptionSerialization.cs
 create mode 100644 src/Lucene.Net.Tests.Join/Support/TestBlockJoin.cs
 create mode 100644 src/Lucene.Net.Tests.Join/Support/TestBlockJoinSorting.cs
 create mode 100644 src/Lucene.Net.Tests.Join/Support/TestBlockJoinValidation.cs
 delete mode 100644 src/Lucene.Net.Tests.Join/Support/TestExceptionSerialization.cs
 create mode 100644 src/Lucene.Net.Tests.Join/Support/TestJoinUtil.cs
 delete mode 100644 src/Lucene.Net.Tests.Memory/Support/TestExceptionSerialization.cs
 delete mode 100644 src/Lucene.Net.Tests.Misc/Support/TestExceptionSerialization.cs
 delete mode 100644 src/Lucene.Net.Tests.Queries/Support/TestExceptionSerialization.cs
 create mode 100644 src/Lucene.Net.Tests.QueryParser/Resources/LUCENE_NET_ICON_32x32.png
 create mode 100644 src/Lucene.Net.Tests.QueryParser/Support/Flexible/Core/Messages/MessagesTest.Designer.cs
 create mode 100644 src/Lucene.Net.Tests.QueryParser/Support/Flexible/Core/Messages/MessagesTest.ja.resx
 create mode 100644 src/Lucene.Net.Tests.QueryParser/Support/Flexible/Core/Messages/MessagesTest.resx
 create mode 100644 src/Lucene.Net.Tests.QueryParser/Support/Flexible/Core/Messages/TestQueryParserMessagesDefault.cs
 create mode 100644 src/Lucene.Net.Tests.QueryParser/Support/Flexible/Core/Messages/TestQueryParserMessagesOverridden.cs
 create mode 100644 src/Lucene.Net.Tests.QueryParser/Support/Flexible/Core/Messages/TestQueryParserResourceProvider.cs
 copy {branding/logo => src/Lucene.Net.Tests.QueryParser/Support/Flexible/Core/Messages}/lucene-net-icon-32x32.png (100%)
 create mode 100644 src/Lucene.Net.Tests.QueryParser/Support/Flexible/Standard/Config/TestNumberDateFormat.cs
 delete mode 100644 src/Lucene.Net.Tests.QueryParser/Support/TestExceptionSerialization.cs
 delete mode 100644 src/Lucene.Net.Tests.Replicator/Support/TestExceptionSerialization.cs
 delete mode 100644 src/Lucene.Net.Tests.Sandbox/Support/TestExceptionSerialization.cs
 delete mode 100644 src/Lucene.Net.Tests.Spatial/Support/TestExceptionSerialization.cs
 delete mode 100644 src/Lucene.Net.Tests.Suggest/Support/TestExceptionSerialization.cs
 delete mode 100644 src/Lucene.Net.Tests.TestFramework/Support/TestExceptionSerialization.cs
 delete mode 100644 src/Lucene.Net.Tests._A-D/Startup.cs
 delete mode 100644 src/Lucene.Net.Tests._I-J/Startup.cs
 delete mode 100644 src/Lucene.Net.Tests._J-S/Startup.cs
 delete mode 100644 src/Lucene.Net.Tests/Support/TestExceptionSerialization.cs
 delete mode 100644 src/Lucene.Net.Tests/Support/TestWeakDictionary.cs
 delete mode 100644 src/Lucene.Net.Tests/Support/TestWeakDictionaryBehavior.cs
 delete mode 100644 src/Lucene.Net.Tests/Support/TestWeakDictionaryPerformance.cs
 create mode 100644 src/Lucene.Net.Tests/Support/Threading/TestUninterruptableMonitor.cs
 create mode 100644 src/Lucene.Net.Tests/Support/Util/TestLongsRef.cs
 create mode 100644 src/Lucene.Net/Analysis/TokenAttributes/CharTermAttributeImpl.cs
 create mode 100644 src/Lucene.Net/Analysis/TokenAttributes/FlagsAttributeImpl.cs
 delete mode 100644 src/Lucene.Net/Analysis/TokenAttributes/ICharTermAttribute.cs
 delete mode 100644 src/Lucene.Net/Analysis/TokenAttributes/IFlagsAttribute.cs
 delete mode 100644 src/Lucene.Net/Analysis/TokenAttributes/IKeywordAttribute.cs
 delete mode 100644 src/Lucene.Net/Analysis/TokenAttributes/IOffsetAttribute.cs
 delete mode 100644 src/Lucene.Net/Analysis/TokenAttributes/IPayloadAttribute.cs
 delete mode 100644 src/Lucene.Net/Analysis/TokenAttributes/IPositionIncrementAttribute.cs
 delete mode 100644 src/Lucene.Net/Analysis/TokenAttributes/IPositionLengthAttribute.cs
 delete mode 100644 src/Lucene.Net/Analysis/TokenAttributes/ITermToBytesRefAttribute.cs
 delete mode 100644 src/Lucene.Net/Analysis/TokenAttributes/ITypeAttribute.cs
 create mode 100644 src/Lucene.Net/Analysis/TokenAttributes/KeywordAttributeImpl.cs
 create mode 100644 src/Lucene.Net/Analysis/TokenAttributes/OffsetAttributeImpl.cs
 create mode 100644 src/Lucene.Net/Analysis/TokenAttributes/PayloadAttributeImpl.cs
 create mode 100644 src/Lucene.Net/Analysis/TokenAttributes/PositionIncrementAttributeImpl.cs
 create mode 100644 src/Lucene.Net/Analysis/TokenAttributes/PositionLengthAttributeImpl.cs
 create mode 100644 src/Lucene.Net/Analysis/TokenAttributes/TermToBytesRefAttribute.cs
 create mode 100644 src/Lucene.Net/Analysis/TokenAttributes/TypeAttributeImpl.cs
 delete mode 100644 src/Lucene.Net/Support/BitArrayExtensions.cs
 create mode 100644 src/Lucene.Net/Support/DateTimeOffsetUtil.cs
 delete mode 100644 src/Lucene.Net/Support/Document/Field.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Errors/AssertionError.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Errors/Error.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Errors/IError.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Errors/NoClassDefFoundError.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Errors/OutOfMemoryError.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Errors/ServiceConfigurationError.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Errors/StackOverflowError.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/ExceptionExtensions.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Exceptions/ClassNotFoundException.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Exceptions/CloneNotSupportedException.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Exceptions/IOExceptions/AlreadyClosedException.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Exceptions/IOExceptions/EOFException.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Exceptions/NoSuchMethodException.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Exceptions/RuntimeExceptions/ArrayIndexOutOfBoundsException.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Exceptions/RuntimeExceptions/IRuntimeException.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Exceptions/RuntimeExceptions/IllegalArgumentException.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Exceptions/RuntimeExceptions/IllegalStateException.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Exceptions/RuntimeExceptions/IndexOutOfBoundsException.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Exceptions/RuntimeExceptions/NoSuchElementException.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Exceptions/RuntimeExceptions/NullPointerException.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Exceptions/RuntimeExceptions/NumberFormatException.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Exceptions/RuntimeExceptions/RuntimeException.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Exceptions/RuntimeExceptions/StringIndexOutOfBoundsException.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Exceptions/RuntimeExceptions/UnsupportedOperationException.cs
 create mode 100644 src/Lucene.Net/Support/ExceptionHandling/Exceptions/ServletException.cs
 delete mode 100644 src/Lucene.Net/Support/ICallable.cs
 delete mode 100644 src/Lucene.Net/Support/IdentityWeakReference.cs
 delete mode 100644 src/Lucene.Net/Support/ListExtensions.cs
 delete mode 100644 src/Lucene.Net/Support/Number.cs
 create mode 100644 src/Lucene.Net/Support/ObsoleteAPI/FixedBitSetExtensions.cs
 create mode 100644 src/Lucene.Net/Support/ObsoleteAPI/IndexInputExtensions.cs
 create mode 100644 src/Lucene.Net/Support/ObsoleteAPI/IndexOutputExtensions.cs
 create mode 100644 src/Lucene.Net/Support/ObsoleteAPI/IndexReader.cs
 create mode 100644 src/Lucene.Net/Support/ObsoleteAPI/Int64BitSetExtensions.cs
 create mode 100644 src/Lucene.Net/Support/ObsoleteAPI/OpenBitSetExtensions.cs
 create mode 100644 src/Lucene.Net/Support/ObsoleteAPI/PForDeltaDocIdSetExtensions.cs
 create mode 100644 src/Lucene.Net/Support/ObsoleteAPI/RandomAccessOrdsExtensions.cs
 create mode 100644 src/Lucene.Net/Support/ObsoleteAPI/ReaderWriterLockSlimExtensions.cs
 create mode 100644 src/Lucene.Net/Support/ObsoleteAPI/TermExtensions.cs
 create mode 100644 src/Lucene.Net/Support/ObsoleteAPI/WAH8DocIdSetExtensions.cs
 create mode 100644 src/Lucene.Net/Support/Runtime/CompilerServices/ConditionalWeakTableExtensions.cs
 create mode 100644 src/Lucene.Net/Support/Text/CharArrayFormatter.cs
 delete mode 100644 src/Lucene.Net/Support/Threading/ICompletionService.cs
 delete mode 100644 src/Lucene.Net/Support/Threading/ReaderWriterLockSlimExtensions.cs
 create mode 100644 src/Lucene.Net/Support/Threading/UninterruptableMonitor.cs
 delete mode 100644 src/Lucene.Net/Support/Time.cs
 delete mode 100644 src/Lucene.Net/Support/Util/BundleResourceManagerFactory.cs
 create mode 100644 src/Lucene.Net/Support/Util/CastTo.cs
 create mode 100644 src/Lucene.Net/Support/Util/Events.cs
 create mode 100644 src/Lucene.Net/Support/Util/ExcludeFromRamUsageEstimationAttribute.cs
 delete mode 100644 src/Lucene.Net/Support/Util/IResourceManagerFactory.cs
 create mode 100644 src/Lucene.Net/Support/Util/IResourceProvider.cs
 create mode 100644 src/Lucene.Net/Support/Util/LuceneSystemException.cs
 delete mode 100644 src/Lucene.Net/Support/WeakDictionary.cs
 create mode 100644 src/Lucene.Net/Util/ThreadInterruptedException.cs
 create mode 100644 src/Lucene.Net/readme-nuget.md
 copy src/{dotnet => docs}/Directory.Build.props (100%)
 create mode 100644 src/docs/Directory.Build.targets
 create mode 100644 src/docs/LuceneDocsPlugins/EnvironmentVariableDfmTextInlineRule.cs
 create mode 100644 src/docs/LuceneDocsPlugins/EnvironmentVariableInCodeBlockRule.cs
 create mode 100644 src/docs/LuceneDocsPlugins/EnvironmentVariableInLinkInlineRule.cs
 create mode 100644 src/docs/LuceneDocsPlugins/EnvironmentVariableUtil.cs
 delete mode 100644 src/dotnet/Lucene.Net.Tests.ICU/Support/TestExceptionSerialization.cs
 create mode 100644 src/dotnet/docs/source-stepping.md
 create mode 100644 websites/apidocs/Templates/LuceneTemplate/common.js
 create mode 100644 websites/site/contributing/how-to-setup-java-lucene-debugging.md
 create mode 100644 websites/site/download/version-4.8.0-beta00015.md
 create mode 100644 websites/site/download/version-4.8.0-beta00016.md
 create mode 100644 websites/site/quick-start/index.md
 create mode 100644 websites/site/quick-start/introduction.md
 create mode 100644 websites/site/quick-start/learning-resources.md
 create mode 100644 websites/site/quick-start/toc.yml
 create mode 100644 websites/site/quick-start/tutorial.md
 create mode 100644 websites/site/release-notes/version-4.8.0-beta00015.md
 create mode 100644 websites/site/release-notes/version-4.8.0-beta00016.md


[lucenenet] 02/13: Lucene.Net.Tests.BenchmarkDotNet: Updated HomePageScripBenchmarks to include beta 5, beta 6, and beta 10

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch benchmarkdotnet
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit a1090edc2c64565a14152acdcfd0f7aea7c54c48
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Mon Jul 20 17:48:10 2020 +0700

    Lucene.Net.Tests.BenchmarkDotNet: Updated HomePageScripBenchmarks to include beta 5, beta 6, and beta 10
---
 src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs
index 37ac4b209..6abebbd97 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs
@@ -39,9 +39,12 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00007").WithId("4.8.0-beta00007"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00006").WithId("4.8.0-beta00006"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00005").WithId("4.8.0-beta00005"));
             }
         }
 


[lucenenet] 03/13: Lucene.Net.Tests.BenchmarkDotNet: Added benchmarks for IndexFiles and SearchFiles

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch benchmarkdotnet
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit ed2918a11d58bd0708aab87f7c363191d89871de
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Mon Jul 20 17:51:21 2020 +0700

    Lucene.Net.Tests.BenchmarkDotNet: Added benchmarks for IndexFiles and SearchFiles
---
 .../IndexFilesBenchmarks.cs                        | 231 +++++++++++++++++++++
 .../Lucene.Net.Tests.BenchmarkDotNet.csproj        |   7 +
 .../SearchFilesBenchmarks.cs                       | 128 ++++++++++++
 .../Util/ContentGenerator.cs                       | 110 ++++++++++
 .../Util/PathUtil.cs                               |  64 ++++++
 5 files changed, 540 insertions(+)

diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs
new file mode 100644
index 000000000..3a9119e4f
--- /dev/null
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs
@@ -0,0 +1,231 @@
+using BenchmarkDotNet.Attributes;
+using BenchmarkDotNet.Configs;
+using BenchmarkDotNet.Jobs;
+using Lucene.Net.Analysis;
+using Lucene.Net.Analysis.Standard;
+using Lucene.Net.Documents;
+using Lucene.Net.Index;
+using Lucene.Net.Randomized.Generators;
+using Lucene.Net.Store;
+using Lucene.Net.Tests.BenchmarkDotNet.Util;
+using Lucene.Net.Util;
+using System;
+using System.IO;
+using System.Text;
+
+namespace Lucene.Net.Tests.BenchmarkDotNet
+{
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+
+    [MemoryDiagnoser]
+    [Config(typeof(Config))]
+    public class IndexFilesBenchmarks
+    {
+        private class Config : ManualConfig
+        {
+            public Config()
+            {
+                var baseJob = Job.MediumRun;
+
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00007").WithId("4.8.0-beta00007"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00006").WithId("4.8.0-beta00006"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00005").WithId("4.8.0-beta00005"));
+            }
+        }
+
+        private static DirectoryInfo sourceDirectory;
+        private static DirectoryInfo indexDirectory;
+
+        [GlobalSetup]
+        public void GlobalSetUp()
+        {
+            sourceDirectory = PathUtil.CreateTempDir("sourceFiles");
+            int seed = 2342;
+            ContentGenerator.GenerateFiles(new Random(seed), sourceDirectory.FullName, 250);
+        }
+
+        [GlobalCleanup]
+        public void GlobalTearDown()
+        {
+            try
+            {
+                if (System.IO.Directory.Exists(sourceDirectory.FullName))
+                    System.IO.Directory.Delete(sourceDirectory.FullName, recursive: true);
+            }
+            catch { }
+        }
+
+        [IterationSetup]
+        public void IterationSetUp()
+        {
+            indexDirectory = PathUtil.CreateTempDir("indexFiles");
+        }
+
+        [IterationCleanup]
+        public void IterationTearDown()
+        {
+            try
+            {
+                if (System.IO.Directory.Exists(indexDirectory.FullName))
+                    System.IO.Directory.Delete(indexDirectory.FullName, recursive: true);
+            }
+            catch { }
+
+        }
+
+        /// <summary>Index all text files under a directory.</summary>
+        [Benchmark]
+        public void IndexFiles() => IndexFiles(sourceDirectory, indexDirectory);
+
+        /// <summary>Index all text files under a directory.</summary>
+        public static void IndexFiles(DirectoryInfo sourceDirectory, DirectoryInfo indexDirectory)
+        {
+            string indexPath = indexDirectory.FullName;
+            
+            bool create = true;
+
+            Store.Directory dir = FSDirectory.Open(indexPath);
+            // :Post-Release-Update-Version.LUCENE_XY:
+            Analyzer analyzer = new StandardAnalyzer(LuceneVersion.LUCENE_48);
+            IndexWriterConfig iwc = new IndexWriterConfig(LuceneVersion.LUCENE_48, analyzer);
+
+            if (create)
+            {
+                // Create a new index in the directory, removing any
+                // previously indexed documents:
+                iwc.OpenMode = OpenMode.CREATE;
+            }
+            else
+            {
+                // Add new documents to an existing index:
+                iwc.OpenMode = OpenMode.CREATE_OR_APPEND;
+            }
+
+            // Optional: for better indexing performance, if you
+            // are indexing many documents, increase the RAM
+            // buffer.
+            //
+            // iwc.RAMBufferSizeMB = 256.0;
+
+            using (IndexWriter writer = new IndexWriter(dir, iwc))
+            {
+                IndexDocs(writer, sourceDirectory);
+
+                // NOTE: if you want to maximize search performance,
+                // you can optionally call forceMerge here.  This can be
+                // a terribly costly operation, so generally it's only
+                // worth it when your index is relatively static (ie
+                // you're done adding documents to it):
+                //
+                // writer.ForceMerge(1);
+            }
+        }
+
+        /// <summary>
+        /// Recurses over files and directories found under the 
+        /// given directory and indexes each file.<para/>
+        /// 
+        /// NOTE: This method indexes one document per input file. 
+        /// This is slow. For good throughput, put multiple documents 
+        /// into your input file(s).
+        /// </summary>
+        /// <param name="writer">
+        ///     <see cref="IndexWriter"/> to the index where the given 
+        ///     file/dir info will be stored
+        /// </param>
+        /// <param name="directoryInfo">
+        ///     The directory to recurse into to find files to index.
+        /// </param>
+        /// <exception cref="IOException">
+        ///     If there is a low-level I/O error.
+        /// </exception>
+        internal static void IndexDocs(IndexWriter writer, DirectoryInfo directoryInfo)
+        {
+            foreach (var dirInfo in directoryInfo.GetDirectories())
+            {
+                IndexDocs(writer, dirInfo);
+            }
+            foreach (var fileInfo in directoryInfo.GetFiles())
+            {
+                IndexDocs(writer, fileInfo);
+            }
+        }
+
+        /// <summary>
+        /// Indexes the given file using the given writer.<para/>
+        /// </summary>
+        /// <param name="writer">
+        ///     <see cref="IndexWriter"/> to the index where the given 
+        ///     file info will be stored.
+        /// </param>
+        /// <param name="file">
+        ///     The file to index.
+        /// </param>
+        /// <exception cref="IOException">
+        ///     If there is a low-level I/O error.
+        /// </exception>
+        internal static void IndexDocs(IndexWriter writer, FileInfo file)
+        {
+            using (FileStream fs = new FileStream(file.FullName, FileMode.Open, FileAccess.Read))
+            {
+                // make a new, empty document
+                Document doc = new Document();
+
+                // Add the path of the file as a field named "path".  Use a
+                // field that is indexed (i.e. searchable), but don't tokenize 
+                // the field into separate words and don't index term frequency
+                // or positional information:
+                Field pathField = new StringField("path", file.FullName, Field.Store.YES);
+                doc.Add(pathField);
+
+                // Add the last modified date of the file a field named "modified".
+                // Use a LongField that is indexed (i.e. efficiently filterable with
+                // NumericRangeFilter).  This indexes to milli-second resolution, which
+                // is often too fine.  You could instead create a number based on
+                // year/month/day/hour/minutes/seconds, down the resolution you require.
+                // For example the long value 2011021714 would mean
+                // February 17, 2011, 2-3 PM.
+                doc.Add(new Int64Field("modified", file.LastWriteTimeUtc.Ticks, Field.Store.NO));
+
+                // Add the contents of the file to a field named "contents".  Specify a Reader,
+                // so that the text of the file is tokenized and indexed, but not stored.
+                // Note that FileReader expects the file to be in UTF-8 encoding.
+                // If that's not the case searching for special characters will fail.
+                doc.Add(new TextField("contents", new StreamReader(fs, Encoding.UTF8)));
+
+                if (writer.Config.OpenMode == OpenMode.CREATE)
+                {
+                    // New index, so we just add the document (no old document can be there):
+                    //Console.WriteLine("adding " + file);
+                    writer.AddDocument(doc);
+                }
+                else
+                {
+                    // Existing index (an old copy of this document may have been indexed) so 
+                    // we use updateDocument instead to replace the old one matching the exact 
+                    // path, if present:
+                    //Console.WriteLine("updating " + file);
+                    writer.UpdateDocument(new Term("path", file.FullName), doc);
+                }
+            }
+        }
+    }
+}
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/Lucene.Net.Tests.BenchmarkDotNet.csproj b/src/Lucene.Net.Tests.BenchmarkDotNet/Lucene.Net.Tests.BenchmarkDotNet.csproj
index 5d4af5aea..781c6613e 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/Lucene.Net.Tests.BenchmarkDotNet.csproj
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/Lucene.Net.Tests.BenchmarkDotNet.csproj
@@ -12,6 +12,13 @@
 
   <ItemGroup>
     <PackageReference Include="Lucene.Net.Analysis.Common" Version="4.8.0-beta00005" />
+    <PackageReference Include="Lucene.Net.QueryParser" Version="4.8.0-beta00005" />
+  </ItemGroup>
+  
+  <ItemGroup>
+    <Compile Include="..\Lucene.Net.TestFramework\Support\Randomized\Generators\RandomPicks.cs" LinkBase="Util" />
+    <Compile Include="..\Lucene.Net.TestFramework\Support\Randomized\Generators\RandomInts.cs" LinkBase="Util" />
+    <Compile Include="..\Lucene.Net\Support\ExceptionToNetNumericConventionAttribute.cs" LinkBase="Util" />
   </ItemGroup>
 
 </Project>
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs
new file mode 100644
index 000000000..3c2c45a33
--- /dev/null
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs
@@ -0,0 +1,128 @@
+using BenchmarkDotNet.Attributes;
+using BenchmarkDotNet.Configs;
+using BenchmarkDotNet.Jobs;
+using Lucene.Net.Analysis;
+using Lucene.Net.Analysis.Standard;
+using Lucene.Net.Index;
+using Lucene.Net.QueryParsers.Classic;
+using Lucene.Net.Randomized.Generators;
+using Lucene.Net.Search;
+using Lucene.Net.Store;
+using Lucene.Net.Tests.BenchmarkDotNet.Util;
+using Lucene.Net.Util;
+using System;
+using System.IO;
+
+namespace Lucene.Net.Tests.BenchmarkDotNet
+{
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+
+    [MemoryDiagnoser]
+    [Config(typeof(Config))]
+    public class SearchFilesBenchmarks
+    {
+        private class Config : ManualConfig
+        {
+            public Config()
+            {
+                var baseJob = Job.MediumRun;
+
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00007").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00007").WithId("4.8.0-beta00007"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00006").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00006").WithId("4.8.0-beta00006"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00005").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00005").WithId("4.8.0-beta00005"));
+            }
+        }
+
+        private const string QueryString = "settings";
+        private static DirectoryInfo indexDirectory;
+
+        [GlobalSetup]
+        public void GlobalSetUp()
+        {
+            var sourceDirectory = PathUtil.CreateTempDir("sourceFiles");
+
+            // Generate content to index (including our string that we will search for)
+            int seed = 2342;
+            ContentGenerator.GenerateFiles(new Random(seed), sourceDirectory.FullName, 1000, QueryString);
+
+            
+            // Index the content
+            indexDirectory = PathUtil.CreateTempDir("indexFiles");
+            IndexFilesBenchmarks.IndexFiles(sourceDirectory, indexDirectory);
+
+            // Cleanup our source files, they are no longer needed
+            try
+            {
+                if (System.IO.Directory.Exists(sourceDirectory.FullName))
+                    System.IO.Directory.Delete(sourceDirectory.FullName, recursive: true);
+            }
+            catch { }
+        }
+
+        [GlobalCleanup]
+        public void GlobalTearDown()
+        {
+            try
+            {
+                if (System.IO.Directory.Exists(indexDirectory.FullName))
+                    System.IO.Directory.Delete(indexDirectory.FullName, recursive: true);
+            }
+            catch { }
+        }
+
+        [Benchmark]
+        public void SearchFiles()
+        {
+
+            string index = indexDirectory.FullName;
+            string field = "contents";
+            //string queries = null;
+            int repeat = 1000;
+            //bool raw = false;
+            string queryString = QueryString;
+            //int hitsPerPage = 10;
+
+            using (IndexReader reader = DirectoryReader.Open(FSDirectory.Open(index)))
+            {
+                IndexSearcher searcher = new IndexSearcher(reader);
+                // :Post-Release-Update-Version.LUCENE_XY:
+                Analyzer analyzer = new StandardAnalyzer(LuceneVersion.LUCENE_48);
+
+                // :Post-Release-Update-Version.LUCENE_XY:
+                QueryParser parser = new QueryParser(LuceneVersion.LUCENE_48, field, analyzer);
+
+                Query query = parser.Parse(queryString.Trim());
+                //Console.WriteLine("Searching for: " + query.ToString(field));
+
+                // repeat & time as benchmark
+                {
+                    //DateTime start = DateTime.UtcNow;
+                    for (int i = 0; i < repeat; i++)
+                    {
+                        searcher.Search(query, null, 100);
+                    }
+                    //DateTime end = DateTime.UtcNow;
+                    //Console.WriteLine("Time: " + (end - start).TotalMilliseconds + "ms");
+                }
+            } // Disposes reader
+        }
+    }
+}
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/Util/ContentGenerator.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/Util/ContentGenerator.cs
new file mode 100644
index 000000000..15612e922
--- /dev/null
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/Util/ContentGenerator.cs
@@ -0,0 +1,110 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+
+namespace Lucene.Net.Randomized.Generators
+{
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+
+    public static class ContentGenerator
+    {
+        public static void GenerateFiles(Random random, string directory, int numberOfFiles, params string[] stringsToQuery)
+        {
+            var subdirectories = new HashSet<string>();
+            for (int i = 0; i < numberOfFiles; i++)
+            {
+                bool root = random.Next(1, 100) > 50;
+
+                if (root)
+                {
+                    GenerateFile(random, directory, stringsToQuery);
+                }
+                else
+                {
+                    string subdirectory;
+                    if (subdirectories.Count > 0 && random.Next(1, 100) > 30)
+                    {
+                        subdirectory = RandomPicks.RandomFrom(random, subdirectories);
+                    }
+                    else
+                    {
+                        subdirectory = RandomSimpleString(random, 5, 20);
+                        subdirectories.Add(subdirectory);
+                    }
+                    GenerateFile(random, Path.Combine(directory, subdirectory), stringsToQuery);
+                }
+            }
+        }
+
+        private static void GenerateFile(Random random, string directory, ICollection<string> stringsToQuery)
+        {
+            if (!System.IO.Directory.Exists(directory))
+                System.IO.Directory.CreateDirectory(directory);
+
+            string fileName = RandomSimpleString(random, 5, 25) + ".txt";
+            int paragraphs = random.Next(5, 25);
+
+            using (var writer = new StreamWriter(Path.Combine(directory, fileName), append: false, encoding: Encoding.UTF8))
+            {
+                for (int i = 0; i < paragraphs; i++)
+                {
+                    WriteParagraph(random, writer, stringsToQuery);
+                }
+            }
+        }
+
+        private static void WriteParagraph(Random random, TextWriter writer, ICollection<string> stringsToQuery)
+        {
+            int words = random.Next(50, 100);
+            bool addStringsToQuery = stringsToQuery != null && stringsToQuery.Count > 0;
+
+            for (int i = 0; i < words; i++)
+            {
+                if (addStringsToQuery && random.Next(1, 1500) == 668)
+                    writer.Write(RandomPicks.RandomFrom(random, stringsToQuery));
+                else
+                    writer.Write(RandomSimpleString(random, 1, 8));
+
+                if (i + 1 < words)
+                    writer.Write(" ");
+            }
+            writer.WriteLine(".");
+            writer.WriteLine();
+        }
+
+        /// <summary>
+        /// Returns a random string consisting only of lowercase characters 'a' through 'z'.
+        /// </summary>
+        public static string RandomSimpleString(Random r, int minLength, int maxLength)
+        {
+            int end = RandomInts.RandomInt32Between(r, minLength, maxLength);
+            if (end == 0)
+            {
+                // allow 0 length
+                return "";
+            }
+            char[] buffer = new char[end];
+            for (int i = 0; i < end; i++)
+            {
+                buffer[i] = (char)RandomInts.RandomInt32Between(r, 'a', 'z');
+            }
+            return new string(buffer, 0, end);
+        }
+    }
+}
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/Util/PathUtil.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/Util/PathUtil.cs
new file mode 100644
index 000000000..aaf9c8633
--- /dev/null
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/Util/PathUtil.cs
@@ -0,0 +1,64 @@
+using System;
+using System.IO;
+
+namespace Lucene.Net.Tests.BenchmarkDotNet.Util
+{
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+
+    public static class PathUtil
+    {
+        private const int TEMP_NAME_RETRY_THRESHOLD = 9999;
+
+        public static DirectoryInfo CreateTempDir(string prefix)
+        {
+            //DirectoryInfo @base = BaseTempDirForTestClass();
+
+            int attempt = 0;
+            DirectoryInfo f;
+            bool iterate = true;
+            do
+            {
+                if (attempt++ >= TEMP_NAME_RETRY_THRESHOLD)
+                {
+                    throw new Exception("Failed to get a temporary name too many times, check your temp directory and consider manually cleaning it: " + System.IO.Path.GetTempPath());
+                }
+                // LUCENENET specific - need to use a random file name instead of a sequential one or two threads may attempt to do 
+                // two operations on a file at the same time.
+                //f = new DirectoryInfo(Path.Combine(System.IO.Path.GetTempPath(), "LuceneTemp", prefix + "-" + attempt));
+                f = new DirectoryInfo(Path.Combine(System.IO.Path.GetTempPath(), "LuceneTemp", prefix + "-" + Path.GetFileNameWithoutExtension(Path.GetRandomFileName())));
+
+                try
+                {
+                    if (!System.IO.Directory.Exists(f.FullName))
+                    {
+                        f.Create();
+                        iterate = false;
+                    }
+                }
+#pragma warning disable 168
+                catch (IOException exc)
+#pragma warning restore 168
+                {
+                    iterate = true;
+                }
+            } while (iterate);
+
+            return f;
+        }
+    }
+}


[lucenenet] 06/13: Lucene.Net.Tests.BenchmarkDotNet: Added benchmarks for 4.8.0-beta00012

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch benchmarkdotnet
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit f36ec8477d8c48e3198e69d7c69e58e127aa63f0
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Sat Sep 19 13:32:40 2020 +0700

    Lucene.Net.Tests.BenchmarkDotNet: Added benchmarks for 4.8.0-beta00012
---
 src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs     | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs         | 1 +
 .../FacetsExpressionAggregationBenchmarks.cs                             | 1 +
 .../FacetsMultiCategoryListsBenchmarks.cs                                | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs            | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs           | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs  | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs         | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs             | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs            | 1 +
 10 files changed, 10 insertions(+)

diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs
index ddad50abc..ac1ba8163 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs
@@ -32,6 +32,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs
index 7933c0658..cab51738a 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs
@@ -32,6 +32,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00009").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsExpressionAggregationBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsExpressionAggregationBenchmarks.cs
index fc845b8e3..3ba2941de 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsExpressionAggregationBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsExpressionAggregationBenchmarks.cs
@@ -32,6 +32,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00009").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsMultiCategoryListsBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsMultiCategoryListsBenchmarks.cs
index 165ca3c6f..67ee1c5c6 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsMultiCategoryListsBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsMultiCategoryListsBenchmarks.cs
@@ -32,6 +32,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs
index b79d3bd0e..2dd6e0b98 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs
@@ -32,6 +32,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs
index 81c5e1a1a..b9e9489af 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs
@@ -32,6 +32,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs
index fde4e662d..7ee6da8c1 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs
@@ -32,6 +32,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs
index 4fffd66bb..7f4720449 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs
@@ -39,6 +39,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs
index 4473d906d..97e9eb139 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs
@@ -42,6 +42,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs
index d59f374db..d691a16b9 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs
@@ -42,6 +42,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00009").WithId("4.8.0-beta00009"));


[lucenenet] 01/13: Adds simple benchmark between nuget versions

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch benchmarkdotnet
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit c47729795036b2d3054424d4fd730375970c1898
Author: Shannon <sd...@gmail.com>
AuthorDate: Wed Jul 15 14:29:23 2020 +1000

    Adds simple benchmark between nuget versions
---
 Lucene.Net.sln                                     |   5 +
 .../HomePageScriptBenchmarks.cs                    | 112 +++++++++++++++++++++
 .../Lucene.Net.Tests.BenchmarkDotNet.csproj        |  17 ++++
 src/Lucene.Net.Tests.BenchmarkDotNet/Program.cs    |  26 +++++
 4 files changed, 160 insertions(+)

diff --git a/Lucene.Net.sln b/Lucene.Net.sln
index 7f6fa0562..690dcd988 100644
--- a/Lucene.Net.sln
+++ b/Lucene.Net.sln
@@ -258,6 +258,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{4D0ED7D9
 		src\dotnet\Lucene.Net.CodeAnalysis\tools\install.ps1 = src\dotnet\Lucene.Net.CodeAnalysis\tools\install.ps1
 		src\dotnet\Lucene.Net.CodeAnalysis\tools\uninstall.ps1 = src\dotnet\Lucene.Net.CodeAnalysis\tools\uninstall.ps1
 	EndProjectSection
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lucene.Net.Tests.BenchmarkDotNet", "src\Lucene.Net.Tests.BenchmarkDotNet\Lucene.Net.Tests.BenchmarkDotNet.csproj", "{0C476146-411E-4C94-8A59-726A5F982A89}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lucene.Net.Tests.AllProjects", "src\Lucene.Net.Tests.AllProjects\Lucene.Net.Tests.AllProjects.csproj", "{9880B87D-8D14-476B-B093-9C3AA0DA8B24}"
 EndProject
@@ -554,6 +555,10 @@ Global
 		{9880B87D-8D14-476B-B093-9C3AA0DA8B24}.Release|Any CPU.Build.0 = Release|Any CPU
 		{8988CDA4-8420-4BEE-869A-66825055EED2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{8988CDA4-8420-4BEE-869A-66825055EED2}.Release|Any CPU.ActiveCfg = Debug|Any CPU
+		{0C476146-411E-4C94-8A59-726A5F982A89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0C476146-411E-4C94-8A59-726A5F982A89}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{0C476146-411E-4C94-8A59-726A5F982A89}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{0C476146-411E-4C94-8A59-726A5F982A89}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs
new file mode 100644
index 000000000..37ac4b209
--- /dev/null
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs
@@ -0,0 +1,112 @@
+using System;
+using BenchmarkDotNet.Attributes;
+using BenchmarkDotNet.Configs;
+using BenchmarkDotNet.Jobs;
+using Lucene.Net.Util;
+using Lucene.Net.Store;
+using Lucene.Net.Analysis.Standard;
+using Lucene.Net.Index;
+using Lucene.Net.Documents;
+using Lucene.Net.Search;
+using System.Diagnostics;
+
+namespace Lucene.Net.Tests.BenchmarkDotNet
+{
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+
+    [MemoryDiagnoser]
+    [Config(typeof(Config))]
+    public class HomePageScriptBenchmarks
+    {
+        private class Config : ManualConfig
+        {
+            public Config()
+            {
+                var baseJob = Job.MediumRun;
+
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00007").WithId("4.8.0-beta00007"));
+            }
+        }
+
+        private const int _directoryWriterIterations = 10;
+        private const int _indexSearchIterations = 25;
+
+        [Benchmark]
+        public void HomePageScript()
+        {
+            // Ensures index backwards compatibility
+            var AppLuceneVersion = LuceneVersion.LUCENE_48;
+
+            for (int d = 0; d < _directoryWriterIterations; d++)
+            {
+                using var dir = new RAMDirectory();
+
+                //create an analyzer to process the text
+                var analyzer = new StandardAnalyzer(AppLuceneVersion);
+
+                //create an index writer
+                var indexConfig = new IndexWriterConfig(AppLuceneVersion, analyzer);
+                using var writer = new IndexWriter(dir, indexConfig);
+
+                for (int i = 0; i < _indexSearchIterations; i++)
+                {
+                    var source = new
+                    {
+                        Name = $"Kermit{i} the Frog{i}",
+                        FavoritePhrase = $"The quick{i} brown{i} fox{i} jumps{i} over{i} the lazy{i} dog{i} "
+                    };
+                    Document doc = new Document
+                    {
+                        // StringField indexes but doesn't tokenize
+                        new StringField("name", source.Name, Field.Store.YES),
+                        new TextField("favoritePhrase", source.FavoritePhrase, Field.Store.YES)
+                    };
+
+                    writer.AddDocument(doc);
+                    writer.Flush(triggerMerge: false, applyAllDeletes: false);
+                }
+
+                for (int i = 0; i < _indexSearchIterations; i++)
+                {
+                    // search with a phrase
+                    var phrase = new MultiPhraseQuery
+                    {
+                        new Term("favoritePhrase", $"brown{i}"),
+                        new Term("favoritePhrase", $"fox{i}")
+                    };
+
+                    // re-use the writer to get real-time updates
+                    using var reader = writer.GetReader(applyAllDeletes: true);
+                    var searcher = new IndexSearcher(reader);
+                    var hits = searcher.Search(phrase, 20 /* top 20 */).ScoreDocs;
+                    Debug.Assert(hits.Length > 0);
+                    foreach (var hit in hits)
+                    {
+                        var foundDoc = searcher.Doc(hit.Doc);
+                        var score = hit.Score;
+                        var name = foundDoc.Get("name");
+                        var favoritePhrase = foundDoc.Get("favoritePhrase");
+                    }
+                }
+            }
+        }
+
+    }
+}
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/Lucene.Net.Tests.BenchmarkDotNet.csproj b/src/Lucene.Net.Tests.BenchmarkDotNet/Lucene.Net.Tests.BenchmarkDotNet.csproj
new file mode 100644
index 000000000..5d4af5aea
--- /dev/null
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/Lucene.Net.Tests.BenchmarkDotNet.csproj
@@ -0,0 +1,17 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="BenchmarkDotNet" Version="0.12.1" />
+    <PackageReference Include="BenchmarkDotNet.Diagnostics.Windows" Version="0.12.1" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Lucene.Net.Analysis.Common" Version="4.8.0-beta00005" />
+  </ItemGroup>
+
+</Project>
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/Program.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/Program.cs
new file mode 100644
index 000000000..c65ec225c
--- /dev/null
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/Program.cs
@@ -0,0 +1,26 @@
+using BenchmarkDotNet.Running;
+
+namespace Lucene.Net.Tests.BenchmarkDotNet
+{
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+
+    class Program
+    {
+        private static void Main(string[] args) => new BenchmarkSwitcher(typeof(Program).Assembly).Run(args);
+    }
+}


[lucenenet] 12/13: Lucene.Net.Tests.BenchmarkDotNet: Updated to net6.0

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch benchmarkdotnet
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit f4ef5cd1305b51ed83926937e7cd06dfdb10f709
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Mon Nov 21 06:00:37 2022 +0700

    Lucene.Net.Tests.BenchmarkDotNet: Updated to net6.0
---
 .../Lucene.Net.Tests.BenchmarkDotNet.csproj                           | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/Lucene.Net.Tests.BenchmarkDotNet.csproj b/src/Lucene.Net.Tests.BenchmarkDotNet/Lucene.Net.Tests.BenchmarkDotNet.csproj
index 02e675434..6e0f3e2d3 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/Lucene.Net.Tests.BenchmarkDotNet.csproj
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/Lucene.Net.Tests.BenchmarkDotNet.csproj
@@ -1,8 +1,8 @@
-<Project Sdk="Microsoft.NET.Sdk">
+<Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
     <OutputType>Exe</OutputType>
-    <TargetFramework>net5.0</TargetFramework>
+    <TargetFramework>net6.0</TargetFramework>
     <StartupObject>Lucene.Net.Tests.BenchmarkDotNet.Program</StartupObject>
     
     <!-- Don't sign the assembly so we don't get warnings about early versions of Lucene.NET that weren't signed -->


[lucenenet] 04/13: Lucene.Net.Tests.BenchmarkDotNet: Added jobs for 4.8.0-beta00011

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch benchmarkdotnet
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit e4fdbccead536e4160e621ae0dd04c4b2158a357
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Sat Jul 25 10:52:16 2020 +0700

    Lucene.Net.Tests.BenchmarkDotNet: Added jobs for 4.8.0-beta00011
---
 src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs     | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs    | 1 +
 3 files changed, 3 insertions(+)

diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs
index 6abebbd97..4fffd66bb 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs
@@ -39,6 +39,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs
index 3a9119e4f..4473d906d 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs
@@ -42,6 +42,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs
index 3c2c45a33..d59f374db 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs
@@ -42,6 +42,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00008").WithId("4.8.0-beta00008"));


[lucenenet] 07/13: Lucene.Net.Tests.BenchmarkDotNet.SearchFilesBenchmarks: Increased number of iterations from 1000 to 2000 for better accuracy

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch benchmarkdotnet
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit d6900758215c667777d02a2419ecd2f3a6bff976
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Fri Nov 13 13:32:03 2020 +0700

    Lucene.Net.Tests.BenchmarkDotNet.SearchFilesBenchmarks: Increased number of iterations from 1000 to 2000 for better accuracy
---
 src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs
index d691a16b9..f5bd36836 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs
@@ -97,7 +97,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             string index = indexDirectory.FullName;
             string field = "contents";
             //string queries = null;
-            int repeat = 1000;
+            int repeat = 2000;
             //bool raw = false;
             string queryString = QueryString;
             //int hitsPerPage = 10;


[lucenenet] 10/13: BenchmarkDotNet: Centralized build configuration logic so we can add a new version in just one place. Also, include a LocalBuild in the benchmarks so we can compare to the current source code.

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch benchmarkdotnet
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit 1aca8539dd4297f8bb737fbf726492135475d799
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Wed Apr 21 14:53:34 2021 +0700

    BenchmarkDotNet: Centralized build configuration logic so we can add a new version in just one place. Also, include a LocalBuild in the benchmarks so we can compare to the current source code.
---
 .../BuildConfigurations.cs                         |  62 ++++++++
 .../FacetsAssociationsBenchmarks.cs                |  25 ++--
 .../FacetsDistanceBenchmarks.cs                    |  26 ++--
 .../FacetsExpressionAggregationBenchmarks.cs       |  26 ++--
 .../FacetsMultiCategoryListsBenchmarks.cs          |  25 ++--
 .../FacetsRangeBenchmarks.cs                       |  25 ++--
 .../FacetsSimpleBenchmarks.cs                      |  25 ++--
 .../FacetsSimpleSortedSetBenchmarks.cs             |  25 ++--
 .../HomePageScriptBenchmarks.cs                    |  24 +--
 .../IndexFilesBenchmarks.cs                        |  27 ++--
 .../Lucene.Net.Tests.BenchmarkDotNet.csproj        |  25 +++-
 .../SearchFilesBenchmarks.cs                       |  28 ++--
 .../Util/ContentGenerator.cs                       |   6 +-
 .../Util/PathUtil.cs                               |   2 +-
 .../Util/RandomNumbers.cs                          | 161 +++++++++++++++++++++
 .../Util/RandomPicks.cs                            |  67 +++++++++
 16 files changed, 465 insertions(+), 114 deletions(-)

diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/BuildConfigurations.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/BuildConfigurations.cs
new file mode 100644
index 000000000..6d70a2537
--- /dev/null
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/BuildConfigurations.cs
@@ -0,0 +1,62 @@
+using System.Collections.Generic;
+
+namespace Lucene.Net.Tests.BenchmarkDotNet
+{
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+
+    public static class BuildConfigurations
+    {
+        public static IList<BuildConfiguration> Configs = new List<BuildConfiguration>
+        {
+            //new BuildConfiguration { PackageVersion = "4.8.0-beta00005" },
+            //new BuildConfiguration { PackageVersion = "4.8.0-beta00006" },
+            //new BuildConfiguration { PackageVersion = "4.8.0-beta00007" },
+            //new BuildConfiguration { PackageVersion = "4.8.0-beta00008" },
+            //new BuildConfiguration { PackageVersion = "4.8.0-beta00009" },
+            new BuildConfiguration { PackageVersion = "4.8.0-beta00010" },
+            new BuildConfiguration { PackageVersion = "4.8.0-beta00011" },
+            new BuildConfiguration { PackageVersion = "4.8.0-beta00012" },
+            new BuildConfiguration { PackageVersion = "4.8.0-beta00013" },
+            new BuildConfiguration { PackageVersion = "4.8.0-beta00014" },
+            new BuildConfiguration { CustomConfigurationName = "LocalBuild", Id = "LocalBuild" },
+        };
+    }
+
+    public class BuildConfiguration
+    {
+        private string id;
+
+        /// <summary>
+        /// NuGet package version. May be on a NuGet feed or a local directory configured as a feed.
+        /// </summary>
+        public string PackageVersion { get; set; }
+
+        public string CustomConfigurationName { get; set; }
+
+        public string Id
+        {
+            get
+            {
+                if (id is null)
+                    return PackageVersion;
+                return id;
+            }
+            set => id = value;
+        }
+    }
+}
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs
index 973146b38..0de3df198 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs
@@ -32,16 +32,21 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00014").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00014").WithId("4.8.0-beta00014"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00007").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00007").WithId("4.8.0-beta00007"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00006").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00006").WithId("4.8.0-beta00006"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00005").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00005").WithId("4.8.0-beta00005"));
+                for (int i = 0; i < BuildConfigurations.Configs.Count; i++)
+                {
+                    var config = BuildConfigurations.Configs[i];
+                    if (string.IsNullOrEmpty(config.CustomConfigurationName))
+                    {
+                        AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", config.PackageVersion)
+                                      .WithNuGet("Lucene.Net.Facet", config.PackageVersion)
+                                      .WithId($"{i:000}-{config.Id}"));
+                    }
+                    else
+                    {
+                        AddJob(baseJob.WithCustomBuildConfiguration(config.CustomConfigurationName)
+                                      .WithId($"{i:000}-{config.Id}"));
+                    }
+                }
             }
         }
 
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs
index e9cdeb521..6fbf6f069 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs
@@ -32,16 +32,22 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00014").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00014").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00014").WithId("4.8.0-beta00014"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00013").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00009").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00008").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00007").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00007").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00007").WithId("4.8.0-beta00007"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00006").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00006").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00006").WithId("4.8.0-beta00006"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00005").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00005").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00005").WithId("4.8.0-beta00005"));
+                for (int i = 0; i < BuildConfigurations.Configs.Count; i++)
+                {
+                    var config = BuildConfigurations.Configs[i];
+                    if (string.IsNullOrEmpty(config.CustomConfigurationName))
+                    {
+                        AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", config.PackageVersion)
+                                      .WithNuGet("Lucene.Net.Expressions", config.PackageVersion)
+                                      .WithNuGet("Lucene.Net.Facet", config.PackageVersion)
+                                      .WithId($"{i:000}-{config.Id}"));
+                    }
+                    else
+                    {
+                        AddJob(baseJob.WithCustomBuildConfiguration(config.CustomConfigurationName)
+                                      .WithId($"{i:000}-{config.Id}"));
+                    }
+                }
             }
         }
 
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsExpressionAggregationBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsExpressionAggregationBenchmarks.cs
index 63b6c27ba..eaed15772 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsExpressionAggregationBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsExpressionAggregationBenchmarks.cs
@@ -32,16 +32,22 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00014").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00014").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00014").WithId("4.8.0-beta00014"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00013").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00009").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00008").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00007").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00007").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00007").WithId("4.8.0-beta00007"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00006").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00006").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00006").WithId("4.8.0-beta00006"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00005").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00005").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00005").WithId("4.8.0-beta00005"));
+                for (int i = 0; i < BuildConfigurations.Configs.Count; i++)
+                {
+                    var config = BuildConfigurations.Configs[i];
+                    if (string.IsNullOrEmpty(config.CustomConfigurationName))
+                    {
+                        AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", config.PackageVersion)
+                                      .WithNuGet("Lucene.Net.Expressions", config.PackageVersion)
+                                      .WithNuGet("Lucene.Net.Facet", config.PackageVersion)
+                                      .WithId($"{i:000}-{config.Id}"));
+                    }
+                    else
+                    {
+                        AddJob(baseJob.WithCustomBuildConfiguration(config.CustomConfigurationName)
+                                      .WithId($"{i:000}-{config.Id}"));
+                    }
+                }
             }
         }
 
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsMultiCategoryListsBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsMultiCategoryListsBenchmarks.cs
index 5b02e2d81..3f7e8a78d 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsMultiCategoryListsBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsMultiCategoryListsBenchmarks.cs
@@ -32,16 +32,21 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00014").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00014").WithId("4.8.0-beta00014"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00007").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00007").WithId("4.8.0-beta00007"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00006").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00006").WithId("4.8.0-beta00006"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00005").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00005").WithId("4.8.0-beta00005"));
+                for (int i = 0; i < BuildConfigurations.Configs.Count; i++)
+                {
+                    var config = BuildConfigurations.Configs[i];
+                    if (string.IsNullOrEmpty(config.CustomConfigurationName))
+                    {
+                        AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", config.PackageVersion)
+                                      .WithNuGet("Lucene.Net.Facet", config.PackageVersion)
+                                      .WithId($"{i:000}-{config.Id}"));
+                    }
+                    else
+                    {
+                        AddJob(baseJob.WithCustomBuildConfiguration(config.CustomConfigurationName)
+                                      .WithId($"{i:000}-{config.Id}"));
+                    }
+                }
             }
         }
 
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs
index b57077a33..8e5be3a99 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs
@@ -32,16 +32,21 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00014").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00014").WithId("4.8.0-beta00014"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00007").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00007").WithId("4.8.0-beta00007"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00006").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00006").WithId("4.8.0-beta00006"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00005").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00005").WithId("4.8.0-beta00005"));
+                for (int i = 0; i < BuildConfigurations.Configs.Count; i++)
+                {
+                    var config = BuildConfigurations.Configs[i];
+                    if (string.IsNullOrEmpty(config.CustomConfigurationName))
+                    {
+                        AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", config.PackageVersion)
+                                      .WithNuGet("Lucene.Net.Facet", config.PackageVersion)
+                                      .WithId($"{i:000}-{config.Id}"));
+                    }
+                    else
+                    {
+                        AddJob(baseJob.WithCustomBuildConfiguration(config.CustomConfigurationName)
+                                      .WithId($"{i:000}-{config.Id}"));
+                    }
+                }
             }
         }
 
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs
index 4a55f2bd4..981a65a2c 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs
@@ -32,16 +32,21 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00014").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00014").WithId("4.8.0-beta00014"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00007").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00007").WithId("4.8.0-beta00007"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00006").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00006").WithId("4.8.0-beta00006"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00005").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00005").WithId("4.8.0-beta00005"));
+                for (int i = 0; i < BuildConfigurations.Configs.Count; i++)
+                {
+                    var config = BuildConfigurations.Configs[i];
+                    if (string.IsNullOrEmpty(config.CustomConfigurationName))
+                    {
+                        AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", config.PackageVersion)
+                                      .WithNuGet("Lucene.Net.Facet", config.PackageVersion)
+                                      .WithId($"{i:000}-{config.Id}"));
+                    }
+                    else
+                    {
+                        AddJob(baseJob.WithCustomBuildConfiguration(config.CustomConfigurationName)
+                                      .WithId($"{i:000}-{config.Id}"));
+                    }
+                }
             }
         }
 
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs
index a685afaab..591b09131 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs
@@ -32,16 +32,21 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00014").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00014").WithId("4.8.0-beta00014"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00007").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00007").WithId("4.8.0-beta00007"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00006").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00006").WithId("4.8.0-beta00006"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00005").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00005").WithId("4.8.0-beta00005"));
+                for (int i = 0; i < BuildConfigurations.Configs.Count; i++)
+                {
+                    var config = BuildConfigurations.Configs[i];
+                    if (string.IsNullOrEmpty(config.CustomConfigurationName))
+                    {
+                        AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", config.PackageVersion)
+                                      .WithNuGet("Lucene.Net.Facet", config.PackageVersion)
+                                      .WithId($"{i:000}-{config.Id}"));
+                    }
+                    else
+                    {
+                        AddJob(baseJob.WithCustomBuildConfiguration(config.CustomConfigurationName)
+                                      .WithId($"{i:000}-{config.Id}"));
+                    }
+                }
             }
         }
 
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs
index 9581edf65..ba11f56b9 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs
@@ -39,16 +39,20 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00014").WithId("4.8.0-beta00014"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00007").WithId("4.8.0-beta00007"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00006").WithId("4.8.0-beta00006"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00005").WithId("4.8.0-beta00005"));
+                for (int i = 0; i < BuildConfigurations.Configs.Count; i++)
+                {
+                    var config = BuildConfigurations.Configs[i];
+                    if (string.IsNullOrEmpty(config.CustomConfigurationName))
+                    {
+                        AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", config.PackageVersion)
+                                      .WithId($"{i:000}-{config.Id}"));
+                    }
+                    else
+                    {
+                        AddJob(baseJob.WithCustomBuildConfiguration(config.CustomConfigurationName)
+                                      .WithId($"{i:000}-{config.Id}"));
+                    }
+                }
             }
         }
 
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs
index 674f2c938..8656a1b45 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs
@@ -5,9 +5,8 @@ using Lucene.Net.Analysis;
 using Lucene.Net.Analysis.Standard;
 using Lucene.Net.Documents;
 using Lucene.Net.Index;
-using Lucene.Net.Randomized.Generators;
 using Lucene.Net.Store;
-using Lucene.Net.Tests.BenchmarkDotNet.Util;
+using Lucene.Net.BenchmarkDotNet.Util;
 using Lucene.Net.Util;
 using System;
 using System.IO;
@@ -42,16 +41,20 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00014").WithId("4.8.0-beta00014"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00007").WithId("4.8.0-beta00007"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00006").WithId("4.8.0-beta00006"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00005").WithId("4.8.0-beta00005"));
+                for (int i = 0; i < BuildConfigurations.Configs.Count; i++)
+                {
+                    var config = BuildConfigurations.Configs[i];
+                    if (string.IsNullOrEmpty(config.CustomConfigurationName))
+                    {
+                        AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", config.PackageVersion)
+                                      .WithId($"{i:000}-{config.Id}"));
+                    }
+                    else
+                    {
+                        AddJob(baseJob.WithCustomBuildConfiguration(config.CustomConfigurationName)
+                                      .WithId($"{i:000}-{config.Id}"));
+                    }
+                }
             }
         }
 
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/Lucene.Net.Tests.BenchmarkDotNet.csproj b/src/Lucene.Net.Tests.BenchmarkDotNet/Lucene.Net.Tests.BenchmarkDotNet.csproj
index eafd35045..02e675434 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/Lucene.Net.Tests.BenchmarkDotNet.csproj
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/Lucene.Net.Tests.BenchmarkDotNet.csproj
@@ -2,8 +2,11 @@
 
   <PropertyGroup>
     <OutputType>Exe</OutputType>
-    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <TargetFramework>net5.0</TargetFramework>
     <StartupObject>Lucene.Net.Tests.BenchmarkDotNet.Program</StartupObject>
+    
+    <!-- Don't sign the assembly so we don't get warnings about early versions of Lucene.NET that weren't signed -->
+    <SignAssembly>false</SignAssembly>
   </PropertyGroup>
 
   <ItemGroup>
@@ -11,18 +14,28 @@
     <PackageReference Include="BenchmarkDotNet.Diagnostics.Windows" Version="0.12.1" />
   </ItemGroup>
 
-  <ItemGroup>
-    <PackageReference Include="J2N" Version="1.0.0-beta-0001" />
+  <PropertyGroup Condition=" '$(Configuration)' == 'LocalBuild' ">
+    <Optimize>true</Optimize>
+  </PropertyGroup>
+
+  <ItemGroup Condition=" '$(Configuration)' == 'LocalBuild' ">
+    <ProjectReference Include="..\Lucene.Net.Analysis.Common\Lucene.Net.Analysis.Common.csproj" />
+    <ProjectReference Include="..\Lucene.Net.Expressions\Lucene.Net.Expressions.csproj" />
+    <ProjectReference Include="..\Lucene.Net.Facet\Lucene.Net.Facet.csproj" />
+    <ProjectReference Include="..\Lucene.Net.QueryParser\Lucene.Net.QueryParser.csproj" />
+    <PackageReference Include="J2N" Version="$(J2NPackageVersion)" />
+  </ItemGroup>
+
+  <ItemGroup Condition=" '$(Configuration)' != 'LocalBuild' ">
+    <!-- These are minimal versions required to make the project compile - each higher version upgrades these based on NuGet dependencies -->
     <PackageReference Include="Lucene.Net.Analysis.Common" Version="4.8.0-beta00005" />
     <PackageReference Include="Lucene.Net.Expressions" Version="4.8.0-beta00005" />
     <PackageReference Include="Lucene.Net.Facet" Version="4.8.0-beta00005" />
     <PackageReference Include="Lucene.Net.QueryParser" Version="4.8.0-beta00005" />
+    <PackageReference Include="J2N" Version="1.0.0-beta-0001" />
   </ItemGroup>
   
   <ItemGroup>
-    <Compile Include="..\Lucene.Net.TestFramework\Support\Randomized\Generators\RandomPicks.cs" LinkBase="Util" />
-    <Compile Include="..\Lucene.Net.TestFramework\Support\Randomized\Generators\RandomInts.cs" LinkBase="Util" />
-    <Compile Include="..\Lucene.Net\Support\ExceptionToNetNumericConventionAttribute.cs" LinkBase="Util" />
     <Compile Include="..\Lucene.Net.Demo\Facet\AssociationsFacetsExample.cs" LinkBase="Util" />
     <Compile Include="..\Lucene.Net.Demo\Facet\DistanceFacetsExample.cs" LinkBase="Util" />
     <Compile Include="..\Lucene.Net.Demo\Facet\ExpressionAggregationFacetsExample.cs" LinkBase="Util" />
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs
index 669434afd..9e5361e0c 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs
@@ -5,10 +5,9 @@ using Lucene.Net.Analysis;
 using Lucene.Net.Analysis.Standard;
 using Lucene.Net.Index;
 using Lucene.Net.QueryParsers.Classic;
-using Lucene.Net.Randomized.Generators;
 using Lucene.Net.Search;
 using Lucene.Net.Store;
-using Lucene.Net.Tests.BenchmarkDotNet.Util;
+using Lucene.Net.BenchmarkDotNet.Util;
 using Lucene.Net.Util;
 using System;
 using System.IO;
@@ -42,16 +41,21 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00014").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00014").WithId("4.8.0-beta00014"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00007").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00007").WithId("4.8.0-beta00007"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00006").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00006").WithId("4.8.0-beta00006"));
-                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00005").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00005").WithId("4.8.0-beta00005"));
+                for (int i = 0; i < BuildConfigurations.Configs.Count; i++)
+                {
+                    var config = BuildConfigurations.Configs[i];
+                    if (string.IsNullOrEmpty(config.CustomConfigurationName))
+                    {
+                        AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", config.PackageVersion)
+                                      .WithNuGet("Lucene.Net.QueryParser", config.PackageVersion)
+                                      .WithId($"{i:000}-{config.Id}"));
+                    }
+                    else
+                    {
+                        AddJob(baseJob.WithCustomBuildConfiguration(config.CustomConfigurationName)
+                                      .WithId($"{i:000}-{config.Id}"));
+                    }
+                }
             }
         }
 
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/Util/ContentGenerator.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/Util/ContentGenerator.cs
index 15612e922..e81c03cc8 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/Util/ContentGenerator.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/Util/ContentGenerator.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
 using System.IO;
 using System.Text;
 
-namespace Lucene.Net.Randomized.Generators
+namespace Lucene.Net.BenchmarkDotNet.Util
 {
     /*
      * Licensed to the Apache Software Foundation (ASF) under one or more
@@ -93,7 +93,7 @@ namespace Lucene.Net.Randomized.Generators
         /// </summary>
         public static string RandomSimpleString(Random r, int minLength, int maxLength)
         {
-            int end = RandomInts.RandomInt32Between(r, minLength, maxLength);
+            int end = RandomNumbers.RandomInt32Between(r, minLength, maxLength);
             if (end == 0)
             {
                 // allow 0 length
@@ -102,7 +102,7 @@ namespace Lucene.Net.Randomized.Generators
             char[] buffer = new char[end];
             for (int i = 0; i < end; i++)
             {
-                buffer[i] = (char)RandomInts.RandomInt32Between(r, 'a', 'z');
+                buffer[i] = (char)RandomNumbers.RandomInt32Between(r, 'a', 'z');
             }
             return new string(buffer, 0, end);
         }
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/Util/PathUtil.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/Util/PathUtil.cs
index aaf9c8633..014e13c4a 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/Util/PathUtil.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/Util/PathUtil.cs
@@ -1,7 +1,7 @@
 using System;
 using System.IO;
 
-namespace Lucene.Net.Tests.BenchmarkDotNet.Util
+namespace Lucene.Net.BenchmarkDotNet.Util
 {
     /*
      * Licensed to the Apache Software Foundation (ASF) under one or more
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/Util/RandomNumbers.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/Util/RandomNumbers.cs
new file mode 100644
index 000000000..149adbcb9
--- /dev/null
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/Util/RandomNumbers.cs
@@ -0,0 +1,161 @@
+using J2N.Numerics;
+using System;
+using System.Diagnostics;
+using System.Numerics;
+
+namespace Lucene.Net.BenchmarkDotNet.Util
+{
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+
+    /// <summary>
+    /// Utility classes for selecting random numbers from within a range or the 
+    /// numeric domain for a given type.
+    /// </summary>
+    /// <seealso cref="BiasedNumbers"/>
+    public static class RandomNumbers
+    {
+        /// <summary>
+        /// Returns a random <see cref="int"/> from <paramref name="minValue"/> (inclusive) to <paramref name="maxValue"/> (inclusive).
+        /// </summary>
+        /// <param name="random">A <see cref="Random"/> instance.</param>
+        /// <param name="minValue">The inclusive start of the range.</param>
+        /// <param name="maxValue">The inclusive end of the range.</param>
+        /// <returns>A random <see cref="int"/> from <paramref name="minValue"/> (inclusive) to <paramref name="maxValue"/> (inclusive).</returns>
+        /// <exception cref="ArgumentException"><paramref name="minValue"/> is greater than <paramref name="maxValue"/>.</exception>
+        /// <exception cref="ArgumentNullException"><paramref name="random"/> is <c>null</c>.</exception>
+        public static int RandomInt32Between(Random random, int minValue, int maxValue)
+        {
+            if (random is null)
+                throw new ArgumentNullException(nameof(random));
+            if (minValue > maxValue)
+                throw new ArgumentException($"{nameof(minValue)} must be less than or equal to {nameof(maxValue)}. {nameof(minValue)}: {minValue}, {nameof(maxValue)}: {maxValue}");
+            var range = maxValue - minValue;
+            if (range < int.MaxValue)
+                return minValue + random.Next(1 + range);
+
+            return minValue + (int)Math.Round(random.NextDouble() * range);
+        }
+
+        /// <summary>
+        /// Returns a random <see cref="long"/> from <paramref name="minValue"/> to <paramref name="maxValue"/> (inclusive).
+        /// </summary>
+        /// <param name="random">A <see cref="Random"/> instance.</param>
+        /// <param name="minValue">The inclusive start of the range.</param>
+        /// <param name="maxValue">The inclusive end of the range.</param>
+        /// <returns>A random <see cref="long"/> from <paramref name="minValue"/> to <paramref name="maxValue"/> (inclusive).</returns>
+        /// <exception cref="ArgumentException"><paramref name="minValue"/> is greater than <paramref name="maxValue"/>.</exception>
+        /// <exception cref="ArgumentNullException"><paramref name="random"/> is <c>null</c>.</exception>
+        public static long RandomInt64Between(Random random, long minValue, long maxValue)
+        {
+            if (random is null)
+                throw new ArgumentNullException(nameof(random));
+            if (minValue > maxValue)
+                throw new ArgumentException($"{nameof(minValue)} must be less than or equal to {nameof(maxValue)}. {nameof(minValue)}: {minValue}, {nameof(maxValue)}: {maxValue}");
+
+            BigInteger range = (BigInteger)maxValue + (BigInteger)1 - (BigInteger)minValue;
+            if (range.CompareTo((BigInteger)int.MaxValue) <= 0)
+            {
+                return minValue + random.Next((int)range);
+            }
+            else
+            {
+                // probably not evenly distributed when range is large, but OK for tests
+                //BigInteger augend = BigInteger.Multiply(range,  new BigInteger(r.NextDouble()));
+                //long result = start + (long)augend;
+
+                // NOTE: Using BigInteger/Decimal doesn't work because r.NextDouble() is always
+                // rounded down to 0, which makes the result always the same as start. This alternative solution was
+                // snagged from https://stackoverflow.com/a/13095144. All we really care about here is that we get
+                // a pretty good random distribution of values between start and end.
+
+                //Working with ulong so that modulo works correctly with values > long.MaxValue
+                ulong uRange = (ulong)unchecked(maxValue - minValue);
+
+                //Prevent a modolo bias; see https://stackoverflow.com/a/10984975/238419
+                //for more information.
+                //In the worst case, the expected number of calls is 2 (though usually it's
+                //much closer to 1) so this loop doesn't really hurt performance at all.
+                ulong ulongRand;
+                do
+                {
+                    byte[] buf = new byte[8];
+                    random.NextBytes(buf);
+                    ulongRand = (ulong)BitConverter.ToInt64(buf, 0);
+                } while (ulongRand > ulong.MaxValue - ((ulong.MaxValue % uRange) + 1) % uRange);
+
+                long result = (long)(ulongRand % uRange) + minValue + random.Next(0, 1); // Randomly decide whether to increment by 1 to make the second parameter "inclusive"
+
+                Debug.Assert(result >= minValue);
+                Debug.Assert(result <= maxValue);
+                return result;
+            }
+        }
+
+        /// <summary>
+        /// Similar to <see cref="Random.Next(int)"/>, but returns a <see cref="long"/> between
+        /// 0 (inclusive) and <paramref name="maxValue"/> (exclusive).
+        /// </summary>
+        /// <param name="random">A <see cref="Random"/> instance.</param>
+        /// <param name="maxValue">The bound on the random number to be returned. Must be positive.</param>
+        /// <returns>A random <see cref="long"/> between 0 and <paramref name="maxValue"/> - 1.</returns>
+        /// <exception cref="ArgumentOutOfRangeException"><paramref name="maxValue"/> is less than 1.</exception>
+        /// <exception cref="ArgumentNullException"><paramref name="random"/> is <c>null</c>.</exception>
+        public static long NextInt64(Random random, long maxValue)
+        {
+            if (random is null)
+                throw new ArgumentNullException(nameof(random));
+            if (maxValue <= 0)
+                throw new ArgumentOutOfRangeException(nameof(maxValue), maxValue, $"{nameof(maxValue)} must be greater than or equal to 0");
+
+            long value = random.NextInt64();
+            long range = maxValue - 1;
+            if ((maxValue & range) == 0L)
+            {
+                value &= range;
+            }
+            else
+            {
+                for (long u = value.TripleShift(1); u + range - (value = u % maxValue) < 0L;)
+                {
+                    u = random.NextInt64().TripleShift(1);
+                }
+            }
+            return value;
+        }
+    }
+
+    internal static class RandomExtensions
+    {
+        /// <summary>
+        /// Generates a random <see cref="long"/>.
+        /// </summary>
+        /// <param name="random">This <see cref="Random"/>.</param>
+        /// <returns>A random <see cref="long"/>.</returns>
+        /// <exception cref="ArgumentNullException"><paramref name="random"/> is <c>null</c>.</exception>
+        // http://stackoverflow.com/a/6651656
+        public static long NextInt64(this Random random) // .NET specific to cover missing member from Java
+        {
+            if (random is null)
+                throw new ArgumentNullException(nameof(random));
+
+            byte[] buffer = new byte[8];
+            random.NextBytes(buffer);
+            return BitConverter.ToInt64(buffer, 0);
+        }
+    }
+}
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/Util/RandomPicks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/Util/RandomPicks.cs
new file mode 100644
index 000000000..e968f842d
--- /dev/null
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/Util/RandomPicks.cs
@@ -0,0 +1,67 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Lucene.Net.BenchmarkDotNet.Util
+{
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+
+    /// <summary>
+    /// Random selections of objects.
+    /// </summary>
+    public class RandomPicks
+    {
+        /// <summary>
+        /// Pick a random element from the <paramref name="list"/> (which may be an array).
+        /// </summary>
+        /// <exception cref="ArgumentException"><paramref name="list"/> contains no items.</exception>
+        /// <exception cref="ArgumentNullException"><paramref name="random"/> or <paramref name="list"/> is <c>null</c>.</exception>
+        public static T RandomFrom<T>(Random random, IList<T> list)
+        {
+            if (random is null)
+                throw new ArgumentNullException(nameof(random));
+            if (list is null)
+                throw new ArgumentNullException(nameof(list));
+
+            if (list.Count == 0)
+            {
+                throw new ArgumentException("Can't pick a random object from an empty list.");
+            }
+            return list[random.Next(0, list.Count)];
+        }
+
+        /// <summary>
+        /// Pick a random element from the <paramref name="collection"/>.
+        /// </summary>
+        /// <exception cref="ArgumentException"><paramref name="collection"/> contains no items.</exception>
+        /// <exception cref="ArgumentNullException"><paramref name="random"/> or <paramref name="collection"/> is <c>null</c>.</exception>
+        public static T RandomFrom<T>(Random random, ICollection<T> collection)
+        {
+            if (random is null)
+                throw new ArgumentNullException(nameof(random));
+            if (collection is null)
+                throw new ArgumentNullException(nameof(collection));
+
+            if (collection.Count == 0)
+            {
+                throw new ArgumentException("Can't pick a random object from an empty collection.");
+            }
+            return collection.ElementAt(random.Next(0, collection.Count));
+        }
+    }
+}


[lucenenet] 08/13: Added benchmarks for 4.8.0-beta00013

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch benchmarkdotnet
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit babf5d4599dad94ab1699fa2b7b93c6d9df0309f
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Fri Nov 13 13:42:01 2020 +0700

    Added benchmarks for 4.8.0-beta00013
---
 src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs     | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs         | 1 +
 .../FacetsExpressionAggregationBenchmarks.cs                             | 1 +
 .../FacetsMultiCategoryListsBenchmarks.cs                                | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs            | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs           | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs  | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs         | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs             | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs            | 1 +
 10 files changed, 10 insertions(+)

diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs
index ac1ba8163..cfe8ee4e1 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs
@@ -32,6 +32,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs
index cab51738a..e2bd7fed3 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs
@@ -32,6 +32,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00013").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsExpressionAggregationBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsExpressionAggregationBenchmarks.cs
index 3ba2941de..11c6ff434 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsExpressionAggregationBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsExpressionAggregationBenchmarks.cs
@@ -32,6 +32,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00013").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsMultiCategoryListsBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsMultiCategoryListsBenchmarks.cs
index 67ee1c5c6..2498ddea3 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsMultiCategoryListsBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsMultiCategoryListsBenchmarks.cs
@@ -32,6 +32,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs
index 2dd6e0b98..6fd6c8f22 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs
@@ -32,6 +32,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs
index b9e9489af..5dd26bb5c 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs
@@ -32,6 +32,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs
index 7ee6da8c1..96eccc6ab 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs
@@ -32,6 +32,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs
index 7f4720449..c96f37b99 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs
@@ -39,6 +39,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs
index 97e9eb139..d0bd690ad 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs
@@ -42,6 +42,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs
index f5bd36836..662d2129b 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs
@@ -42,6 +42,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00010").WithId("4.8.0-beta00010"));


[lucenenet] 05/13: Added benchmarks for facet operations using Lucene.Net.Demo.Facet classes as a basis

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch benchmarkdotnet
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit 394304b11173d7617362f7095e3ca3ee630f00e5
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Sun Aug 16 07:11:06 2020 +0700

    Added benchmarks for facet operations using Lucene.Net.Demo.Facet classes as a basis
---
 .../FacetsAssociationsBenchmarks.cs                | 53 ++++++++++++++++++
 .../FacetsDistanceBenchmarks.cs                    | 59 ++++++++++++++++++++
 .../FacetsExpressionAggregationBenchmarks.cs       | 50 +++++++++++++++++
 .../FacetsMultiCategoryListsBenchmarks.cs          | 50 +++++++++++++++++
 .../FacetsRangeBenchmarks.cs                       | 64 ++++++++++++++++++++++
 .../FacetsSimpleBenchmarks.cs                      | 59 ++++++++++++++++++++
 .../FacetsSimpleSortedSetBenchmarks.cs             | 53 ++++++++++++++++++
 .../Lucene.Net.Tests.BenchmarkDotNet.csproj        | 11 ++++
 8 files changed, 399 insertions(+)

diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs
new file mode 100644
index 000000000..ddad50abc
--- /dev/null
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs
@@ -0,0 +1,53 @@
+using BenchmarkDotNet.Attributes;
+using BenchmarkDotNet.Configs;
+using BenchmarkDotNet.Jobs;
+using Lucene.Net.Demo.Facet;
+
+namespace Lucene.Net.Tests.BenchmarkDotNet
+{
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+
+    [MemoryDiagnoser]
+    [Config(typeof(Config))]
+    public class FacetsAssociationsBenchmarks
+    {
+        private class Config : ManualConfig
+        {
+            public Config()
+            {
+                var baseJob = Job.MediumRun;
+
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00007").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00007").WithId("4.8.0-beta00007"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00006").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00006").WithId("4.8.0-beta00006"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00005").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00005").WithId("4.8.0-beta00005"));
+            }
+        }
+
+        public static readonly AssociationsFacetsExample example = new AssociationsFacetsExample();
+
+        [Benchmark]
+        public void RunSumAssociations() => example.RunSumAssociations();
+
+        [Benchmark]
+        public void RunDrillDown() => example.RunDrillDown();
+    }
+}
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs
new file mode 100644
index 000000000..7933c0658
--- /dev/null
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs
@@ -0,0 +1,59 @@
+using BenchmarkDotNet.Attributes;
+using BenchmarkDotNet.Configs;
+using BenchmarkDotNet.Jobs;
+using Lucene.Net.Demo.Facet;
+
+namespace Lucene.Net.Tests.BenchmarkDotNet
+{
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+
+    [MemoryDiagnoser]
+    [Config(typeof(Config))]
+    public class FacetsDistanceBenchmarks
+    {
+        private class Config : ManualConfig
+        {
+            public Config()
+            {
+                var baseJob = Job.MediumRun;
+
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00009").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00008").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00007").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00007").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00007").WithId("4.8.0-beta00007"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00006").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00006").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00006").WithId("4.8.0-beta00006"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00005").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00005").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00005").WithId("4.8.0-beta00005"));
+            }
+        }
+
+        public static readonly DistanceFacetsExample example = new DistanceFacetsExample();
+
+        [GlobalSetup]
+        public void GlobalSetup() => example.Index();
+
+        [GlobalCleanup]
+        public void GlobalTearDown() => example.Dispose();
+
+        [Benchmark]
+        public void Search() => example.Search();
+
+        [Benchmark]
+        public void DrillDown() => example.DrillDown(DistanceFacetsExample.TWO_KM);
+    }
+}
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsExpressionAggregationBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsExpressionAggregationBenchmarks.cs
new file mode 100644
index 000000000..fc845b8e3
--- /dev/null
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsExpressionAggregationBenchmarks.cs
@@ -0,0 +1,50 @@
+using BenchmarkDotNet.Attributes;
+using BenchmarkDotNet.Configs;
+using BenchmarkDotNet.Jobs;
+using Lucene.Net.Demo.Facet;
+
+namespace Lucene.Net.Tests.BenchmarkDotNet
+{
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+
+    [MemoryDiagnoser]
+    [Config(typeof(Config))]
+    public class FacetsExpressionAggregationBenchmarks
+    {
+        private class Config : ManualConfig
+        {
+            public Config()
+            {
+                var baseJob = Job.MediumRun;
+
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00009").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00008").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00007").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00007").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00007").WithId("4.8.0-beta00007"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00006").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00006").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00006").WithId("4.8.0-beta00006"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00005").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00005").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00005").WithId("4.8.0-beta00005"));
+            }
+        }
+
+        public static readonly ExpressionAggregationFacetsExample example = new ExpressionAggregationFacetsExample();
+
+        [Benchmark]
+        public void RunSearch() => example.RunSearch();
+    }
+}
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsMultiCategoryListsBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsMultiCategoryListsBenchmarks.cs
new file mode 100644
index 000000000..165ca3c6f
--- /dev/null
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsMultiCategoryListsBenchmarks.cs
@@ -0,0 +1,50 @@
+using BenchmarkDotNet.Attributes;
+using BenchmarkDotNet.Configs;
+using BenchmarkDotNet.Jobs;
+using Lucene.Net.Demo.Facet;
+
+namespace Lucene.Net.Tests.BenchmarkDotNet
+{
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+
+    [MemoryDiagnoser]
+    [Config(typeof(Config))]
+    public class FacetsMultiCategoryListsBenchmarks
+    {
+        private class Config : ManualConfig
+        {
+            public Config()
+            {
+                var baseJob = Job.MediumRun;
+
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00007").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00007").WithId("4.8.0-beta00007"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00006").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00006").WithId("4.8.0-beta00006"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00005").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00005").WithId("4.8.0-beta00005"));
+            }
+        }
+
+        public static readonly MultiCategoryListsFacetsExample example = new MultiCategoryListsFacetsExample();
+
+        [Benchmark]
+        public void RunSearch() => example.RunSearch();
+    }
+}
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs
new file mode 100644
index 000000000..b79d3bd0e
--- /dev/null
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs
@@ -0,0 +1,64 @@
+using BenchmarkDotNet.Attributes;
+using BenchmarkDotNet.Configs;
+using BenchmarkDotNet.Jobs;
+using Lucene.Net.Demo.Facet;
+
+namespace Lucene.Net.Tests.BenchmarkDotNet
+{
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+
+    [MemoryDiagnoser]
+    [Config(typeof(Config))]
+    public class FacetsRangeBenchmarks
+    {
+        private class Config : ManualConfig
+        {
+            public Config()
+            {
+                var baseJob = Job.MediumRun;
+
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00007").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00007").WithId("4.8.0-beta00007"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00006").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00006").WithId("4.8.0-beta00006"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00005").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00005").WithId("4.8.0-beta00005"));
+            }
+        }
+
+        public static readonly RangeFacetsExample example = new RangeFacetsExample();
+
+        [GlobalCleanup]
+        public void GlobalTearDown() => example.Dispose();
+
+        [Benchmark]
+        public void Search()
+        {
+            example.Index();
+            example.Search();
+        }
+
+        [Benchmark]
+        public void DrillDown()
+        {
+            example.Index();
+            example.DrillDown(example.PAST_SIX_HOURS);
+        }
+    }
+}
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs
new file mode 100644
index 000000000..81c5e1a1a
--- /dev/null
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs
@@ -0,0 +1,59 @@
+using BenchmarkDotNet.Attributes;
+using BenchmarkDotNet.Configs;
+using BenchmarkDotNet.Jobs;
+using Lucene.Net.Demo.Facet;
+
+namespace Lucene.Net.Tests.BenchmarkDotNet
+{
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+
+    [MemoryDiagnoser]
+    [Config(typeof(Config))]
+    public class FacetsSimpleBenchmarks
+    {
+        private class Config : ManualConfig
+        {
+            public Config()
+            {
+                var baseJob = Job.MediumRun;
+
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00007").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00007").WithId("4.8.0-beta00007"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00006").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00006").WithId("4.8.0-beta00006"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00005").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00005").WithId("4.8.0-beta00005"));
+            }
+        }
+
+        public static readonly SimpleFacetsExample example = new SimpleFacetsExample();
+
+        [Benchmark]
+        public void RunFacetOnly() => example.RunFacetOnly();
+
+        [Benchmark]
+        public void RunSearch() => example.RunSearch();
+
+        [Benchmark]
+        public void RunDrillDown() => example.RunDrillDown();
+
+        [Benchmark]
+        public void RunDrillSideways() => example.RunDrillSideways();
+    }
+}
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs
new file mode 100644
index 000000000..fde4e662d
--- /dev/null
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs
@@ -0,0 +1,53 @@
+using BenchmarkDotNet.Attributes;
+using BenchmarkDotNet.Configs;
+using BenchmarkDotNet.Jobs;
+using Lucene.Net.Demo.Facet;
+
+namespace Lucene.Net.Tests.BenchmarkDotNet
+{
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+
+    [MemoryDiagnoser]
+    [Config(typeof(Config))]
+    public class FacetsSimpleSortedSetBenchmarks
+    {
+        private class Config : ManualConfig
+        {
+            public Config()
+            {
+                var baseJob = Job.MediumRun;
+
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00010").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00010").WithId("4.8.0-beta00010"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00009").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00009").WithId("4.8.0-beta00009"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00008").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00008").WithId("4.8.0-beta00008"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00007").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00007").WithId("4.8.0-beta00007"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00006").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00006").WithId("4.8.0-beta00006"));
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00005").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00005").WithId("4.8.0-beta00005"));
+            }
+        }
+
+        public static readonly SimpleSortedSetFacetsExample example = new SimpleSortedSetFacetsExample();
+
+        [Benchmark]
+        public void RunSearch() => example.RunSearch();
+
+        [Benchmark]
+        public void RunDrillDown() => example.RunDrillDown();
+    }
+}
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/Lucene.Net.Tests.BenchmarkDotNet.csproj b/src/Lucene.Net.Tests.BenchmarkDotNet/Lucene.Net.Tests.BenchmarkDotNet.csproj
index 781c6613e..eafd35045 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/Lucene.Net.Tests.BenchmarkDotNet.csproj
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/Lucene.Net.Tests.BenchmarkDotNet.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup>
     <OutputType>Exe</OutputType>
     <TargetFramework>netcoreapp3.1</TargetFramework>
+    <StartupObject>Lucene.Net.Tests.BenchmarkDotNet.Program</StartupObject>
   </PropertyGroup>
 
   <ItemGroup>
@@ -11,7 +12,10 @@
   </ItemGroup>
 
   <ItemGroup>
+    <PackageReference Include="J2N" Version="1.0.0-beta-0001" />
     <PackageReference Include="Lucene.Net.Analysis.Common" Version="4.8.0-beta00005" />
+    <PackageReference Include="Lucene.Net.Expressions" Version="4.8.0-beta00005" />
+    <PackageReference Include="Lucene.Net.Facet" Version="4.8.0-beta00005" />
     <PackageReference Include="Lucene.Net.QueryParser" Version="4.8.0-beta00005" />
   </ItemGroup>
   
@@ -19,6 +23,13 @@
     <Compile Include="..\Lucene.Net.TestFramework\Support\Randomized\Generators\RandomPicks.cs" LinkBase="Util" />
     <Compile Include="..\Lucene.Net.TestFramework\Support\Randomized\Generators\RandomInts.cs" LinkBase="Util" />
     <Compile Include="..\Lucene.Net\Support\ExceptionToNetNumericConventionAttribute.cs" LinkBase="Util" />
+    <Compile Include="..\Lucene.Net.Demo\Facet\AssociationsFacetsExample.cs" LinkBase="Util" />
+    <Compile Include="..\Lucene.Net.Demo\Facet\DistanceFacetsExample.cs" LinkBase="Util" />
+    <Compile Include="..\Lucene.Net.Demo\Facet\ExpressionAggregationFacetsExample.cs" LinkBase="Util" />
+    <Compile Include="..\Lucene.Net.Demo\Facet\MultiCategoryListsFacetsExample.cs" LinkBase="Util" />
+    <Compile Include="..\Lucene.Net.Demo\Facet\RangeFacetsExample.cs" LinkBase="Util" />
+    <Compile Include="..\Lucene.Net.Demo\Facet\SimpleFacetsExample.cs" LinkBase="Util" />
+    <Compile Include="..\Lucene.Net.Demo\Facet\SimpleSortedSetFacetsExample.cs" LinkBase="Util" />
   </ItemGroup>
 
 </Project>


[lucenenet] 09/13: Added benchmarks for 4.8.0-beta00014

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch benchmarkdotnet
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit c56de5629a7e401419085bb5908c799a0b21d4ec
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Fri Mar 26 19:29:39 2021 +0700

    Added benchmarks for 4.8.0-beta00014
---
 src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs     | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs         | 1 +
 .../FacetsExpressionAggregationBenchmarks.cs                             | 1 +
 .../FacetsMultiCategoryListsBenchmarks.cs                                | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs            | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs           | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs  | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs         | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs             | 1 +
 src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs            | 1 +
 10 files changed, 10 insertions(+)

diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs
index cfe8ee4e1..973146b38 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsAssociationsBenchmarks.cs
@@ -32,6 +32,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00014").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00014").WithId("4.8.0-beta00014"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs
index e2bd7fed3..e9cdeb521 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsDistanceBenchmarks.cs
@@ -32,6 +32,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00014").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00014").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00014").WithId("4.8.0-beta00014"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00013").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsExpressionAggregationBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsExpressionAggregationBenchmarks.cs
index 11c6ff434..63b6c27ba 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsExpressionAggregationBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsExpressionAggregationBenchmarks.cs
@@ -32,6 +32,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00014").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00014").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00014").WithId("4.8.0-beta00014"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00013").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Expressions", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsMultiCategoryListsBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsMultiCategoryListsBenchmarks.cs
index 2498ddea3..5b02e2d81 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsMultiCategoryListsBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsMultiCategoryListsBenchmarks.cs
@@ -32,6 +32,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00014").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00014").WithId("4.8.0-beta00014"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs
index 6fd6c8f22..b57077a33 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsRangeBenchmarks.cs
@@ -32,6 +32,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00014").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00014").WithId("4.8.0-beta00014"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs
index 5dd26bb5c..4a55f2bd4 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleBenchmarks.cs
@@ -32,6 +32,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00014").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00014").WithId("4.8.0-beta00014"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs
index 96eccc6ab..a685afaab 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/FacetsSimpleSortedSetBenchmarks.cs
@@ -32,6 +32,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00014").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00014").WithId("4.8.0-beta00014"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.Facet", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs
index c96f37b99..9581edf65 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/HomePageScriptBenchmarks.cs
@@ -39,6 +39,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00014").WithId("4.8.0-beta00014"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs
index d0bd690ad..674f2c938 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/IndexFilesBenchmarks.cs
@@ -42,6 +42,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00014").WithId("4.8.0-beta00014"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithId("4.8.0-beta00011"));
diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs
index 662d2129b..669434afd 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/SearchFilesBenchmarks.cs
@@ -42,6 +42,7 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             {
                 var baseJob = Job.MediumRun;
 
+                AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00014").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00014").WithId("4.8.0-beta00014"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00013").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00013").WithId("4.8.0-beta00013"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00012").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00012").WithId("4.8.0-beta00012"));
                 AddJob(baseJob.WithNuGet("Lucene.Net.Analysis.Common", "4.8.0-beta00011").WithNuGet("Lucene.Net.QueryParser", "4.8.0-beta00011").WithId("4.8.0-beta00011"));


[lucenenet] 11/13: BenchmarkDotNet: added NamespacePatch.cs file to define namespaces that didn't exist in old versions of Lucene.NET

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch benchmarkdotnet
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit 88f86334034e21f2d72320c1175eeb24aeb74109
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Wed Apr 21 15:07:35 2021 +0700

    BenchmarkDotNet: added NamespacePatch.cs file to define namespaces that didn't exist in old versions of Lucene.NET
---
 .../Util/NamespacePatch.cs                          | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/Util/NamespacePatch.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/Util/NamespacePatch.cs
new file mode 100644
index 000000000..16b2a07dc
--- /dev/null
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/Util/NamespacePatch.cs
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Didn't exist in early versions of Lucene.NET - this is just to patch those cases so using directives will compile
+namespace Lucene.Net.Documents.Extensions
+{
+}


[lucenenet] 13/13: Lucene.Net.Tests.BenchmarkDotNet.BuildConfigurations: Updated list of active build configurations to include beta00014, beta-00015, and beta00016

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch benchmarkdotnet
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit 549070d7a690cbe2d0de096dc9212c77c0a17b4a
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Mon Nov 21 08:38:04 2022 +0700

    Lucene.Net.Tests.BenchmarkDotNet.BuildConfigurations: Updated list of active build configurations to include beta00014, beta-00015, and beta00016
---
 src/Lucene.Net.Tests.BenchmarkDotNet/BuildConfigurations.cs | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/Lucene.Net.Tests.BenchmarkDotNet/BuildConfigurations.cs b/src/Lucene.Net.Tests.BenchmarkDotNet/BuildConfigurations.cs
index 6d70a2537..e0bc270ae 100644
--- a/src/Lucene.Net.Tests.BenchmarkDotNet/BuildConfigurations.cs
+++ b/src/Lucene.Net.Tests.BenchmarkDotNet/BuildConfigurations.cs
@@ -28,11 +28,13 @@ namespace Lucene.Net.Tests.BenchmarkDotNet
             //new BuildConfiguration { PackageVersion = "4.8.0-beta00007" },
             //new BuildConfiguration { PackageVersion = "4.8.0-beta00008" },
             //new BuildConfiguration { PackageVersion = "4.8.0-beta00009" },
-            new BuildConfiguration { PackageVersion = "4.8.0-beta00010" },
-            new BuildConfiguration { PackageVersion = "4.8.0-beta00011" },
-            new BuildConfiguration { PackageVersion = "4.8.0-beta00012" },
-            new BuildConfiguration { PackageVersion = "4.8.0-beta00013" },
+            //new BuildConfiguration { PackageVersion = "4.8.0-beta00010" },
+            //new BuildConfiguration { PackageVersion = "4.8.0-beta00011" },
+            //new BuildConfiguration { PackageVersion = "4.8.0-beta00012" },
+            //new BuildConfiguration { PackageVersion = "4.8.0-beta00013" },
             new BuildConfiguration { PackageVersion = "4.8.0-beta00014" },
+            new BuildConfiguration { PackageVersion = "4.8.0-beta00015" },
+            new BuildConfiguration { PackageVersion = "4.8.0-beta00016" },
             new BuildConfiguration { CustomConfigurationName = "LocalBuild", Id = "LocalBuild" },
         };
     }